cmlenz@1: # -*- coding: utf-8 -*-
cmlenz@1: #
cmlenz@66: # Copyright (C) 2006 Edgewall Software
cmlenz@1: # All rights reserved.
cmlenz@1: #
cmlenz@1: # This software is licensed as described in the file COPYING, which
cmlenz@1: # you should have received as part of this distribution. The terms
cmlenz@66: # are also available at http://markup.edgewall.org/wiki/License.
cmlenz@1: #
cmlenz@1: # This software consists of voluntary contributions made by many
cmlenz@1: # individuals. For the exact contribution history, see the revision
cmlenz@66: # history and logs, available at http://markup.edgewall.org/log/.
cmlenz@1:
cmlenz@1: import doctest
cmlenz@1: import unittest
cmlenz@1:
cmlenz@18: from markup.core import *
cmlenz@147: from markup.input import XML, ParseError
cmlenz@147:
cmlenz@147:
cmlenz@147: class StreamTestCase(unittest.TestCase):
cmlenz@147:
cmlenz@147: def test_render_utf8(self):
cmlenz@147: xml = XML('
Über uns')
cmlenz@147: self.assertEqual('Über uns', xml.render())
cmlenz@147:
cmlenz@147: def test_render_unicode(self):
cmlenz@147: xml = XML('Über uns')
cmlenz@147: self.assertEqual(u'Über uns', xml.render(encoding=None))
cmlenz@147:
cmlenz@147: def test_render_ascii(self):
cmlenz@147: xml = XML('Über uns')
cmlenz@147: self.assertEqual('Über uns', xml.render(encoding='ascii'))
cmlenz@1:
cmlenz@1:
cmlenz@1: class MarkupTestCase(unittest.TestCase):
cmlenz@1:
cmlenz@116: def test_repr(self):
cmlenz@116: markup = Markup('foo')
cmlenz@116: self.assertEquals('', repr(markup))
cmlenz@116:
cmlenz@1: def test_escape(self):
cmlenz@1: markup = escape('"&"')
cmlenz@212: assert type(markup) is Markup
cmlenz@1: self.assertEquals('<b>"&"</b>', markup)
cmlenz@1:
cmlenz@1: def test_escape_noquotes(self):
cmlenz@1: markup = escape('"&"', quotes=False)
cmlenz@212: assert type(markup) is Markup
cmlenz@1: self.assertEquals('<b>"&"</b>', markup)
cmlenz@1:
cmlenz@1: def test_unescape_markup(self):
cmlenz@1: string = '"&"'
cmlenz@1: markup = Markup.escape(string)
cmlenz@212: assert type(markup) is Markup
cmlenz@1: self.assertEquals(string, unescape(markup))
cmlenz@1:
cmlenz@1: def test_add_str(self):
cmlenz@1: markup = Markup('foo') + '
'
cmlenz@212: assert type(markup) is Markup
cmlenz@1: self.assertEquals('foo<br/>', markup)
cmlenz@1:
cmlenz@1: def test_add_markup(self):
cmlenz@1: markup = Markup('foo') + Markup('
')
cmlenz@212: assert type(markup) is Markup
cmlenz@1: self.assertEquals('foo
', markup)
cmlenz@1:
cmlenz@1: def test_add_reverse(self):
cmlenz@204: markup = '
' + Markup('bar')
cmlenz@212: assert type(markup) is Markup
cmlenz@204: self.assertEquals('<br/>bar', markup)
cmlenz@1:
cmlenz@1: def test_mod(self):
cmlenz@1: markup = Markup('%s') % '&'
cmlenz@212: assert type(markup) is Markup
cmlenz@1: self.assertEquals('&', markup)
cmlenz@1:
cmlenz@1: def test_mod_multi(self):
cmlenz@1: markup = Markup('%s %s') % ('&', 'boo')
cmlenz@212: assert type(markup) is Markup
cmlenz@1: self.assertEquals('& boo', markup)
cmlenz@1:
cmlenz@1: def test_mul(self):
cmlenz@1: markup = Markup('foo') * 2
cmlenz@212: assert type(markup) is Markup
cmlenz@1: self.assertEquals('foofoo', markup)
cmlenz@1:
cmlenz@204: def test_mul_reverse(self):
cmlenz@204: markup = 2 * Markup('foo')
cmlenz@212: assert type(markup) is Markup
cmlenz@204: self.assertEquals('foofoo', markup)
cmlenz@204:
cmlenz@1: def test_join(self):
cmlenz@1: markup = Markup('
').join(['foo', '', Markup('')])
cmlenz@212: assert type(markup) is Markup
cmlenz@1: self.assertEquals('foo
<bar />
', markup)
cmlenz@1:
cmlenz@1: def test_stripentities_all(self):
cmlenz@1: markup = Markup('& j').stripentities()
cmlenz@212: assert type(markup) is Markup
cmlenz@1: self.assertEquals('& j', markup)
cmlenz@1:
cmlenz@1: def test_stripentities_keepxml(self):
cmlenz@116: markup = Markup('& j').stripentities(keepxmlentities=True)
cmlenz@212: assert type(markup) is Markup
cmlenz@116: self.assertEquals('& j', markup)
cmlenz@1:
cmlenz@1: def test_striptags_empty(self):
cmlenz@1: markup = Markup('
').striptags()
cmlenz@212: assert type(markup) is Markup
cmlenz@1: self.assertEquals('', markup)
cmlenz@1:
cmlenz@1: def test_striptags_mid(self):
cmlenz@1: markup = Markup('fo
o').striptags()
cmlenz@212: assert type(markup) is Markup
cmlenz@1: self.assertEquals('foo', markup)
cmlenz@1:
cmlenz@1:
cmlenz@1: def suite():
cmlenz@1: suite = unittest.TestSuite()
cmlenz@147: suite.addTest(unittest.makeSuite(StreamTestCase, 'test'))
cmlenz@1: suite.addTest(unittest.makeSuite(MarkupTestCase, 'test'))
cmlenz@18: suite.addTest(doctest.DocTestSuite(Markup.__module__))
cmlenz@1: return suite
cmlenz@1:
cmlenz@1: if __name__ == '__main__':
cmlenz@1: unittest.main(defaultTest='suite')