Mercurial > genshi > genshi-test
diff genshi/tests/core.py @ 820:1837f39efd6f experimental-inline
Sync (old) experimental inline branch with trunk@1027.
author | cmlenz |
---|---|
date | Wed, 11 Mar 2009 17:51:06 +0000 |
parents | 55cf81951686 |
children | 09cc3627654c |
line wrap: on
line diff
--- a/genshi/tests/core.py +++ b/genshi/tests/core.py @@ -14,10 +14,14 @@ import doctest import pickle from StringIO import StringIO +try: + from cStringIO import StringIO as cStringIO +except ImportError: + cStringIO = StringIO import unittest from genshi import core -from genshi.core import Markup, Namespace, QName, escape, unescape +from genshi.core import Markup, Attrs, Namespace, QName, escape, unescape from genshi.input import XML, ParseError @@ -35,6 +39,18 @@ xml = XML('<li>Über uns</li>') self.assertEqual('<li>Über uns</li>', xml.render(encoding='ascii')) + def test_render_output_stream_utf8(self): + xml = XML('<li>Über uns</li>') + strio = cStringIO() + self.assertEqual(None, xml.render(out=strio)) + self.assertEqual('<li>Über uns</li>', strio.getvalue()) + + def test_render_output_stream_unicode(self): + xml = XML('<li>Über uns</li>') + strio = StringIO() + self.assertEqual(None, xml.render(encoding=None, out=strio)) + self.assertEqual(u'<li>Über uns</li>', strio.getvalue()) + def test_pickle(self): xml = XML('<li>Foo</li>') buf = StringIO() @@ -46,6 +62,10 @@ class MarkupTestCase(unittest.TestCase): + def test_new_with_encoding(self): + markup = Markup('Döner', encoding='utf-8') + self.assertEquals("<Markup u'D\\xf6ner'>", repr(markup)) + def test_repr(self): markup = Markup('foo') self.assertEquals("<Markup u'foo'>", repr(markup)) @@ -91,6 +111,16 @@ assert type(markup) is Markup self.assertEquals('<b>&</b> boo', markup) + def test_mod_mapping(self): + markup = Markup('<b>%(foo)s</b>') % {'foo': '&'} + assert type(markup) is Markup + self.assertEquals('<b>&</b>', markup) + + def test_mod_noescape(self): + markup = Markup('<b>%(amp)s</b>') % {'amp': Markup('&')} + assert type(markup) is Markup + self.assertEquals('<b>&</b>', markup) + def test_mul(self): markup = Markup('<b>foo</b>') * 2 assert type(markup) is Markup @@ -134,6 +164,18 @@ self.assertEquals("<Markup u'foo'>", repr(pickle.load(buf))) +class AttrsTestCase(unittest.TestCase): + + def test_pickle(self): + attrs = Attrs([("attr1", "foo"), ("attr2", "bar")]) + buf = StringIO() + pickle.dump(attrs, buf, 2) + buf.seek(0) + unpickled = pickle.load(buf) + self.assertEquals("Attrs([('attr1', 'foo'), ('attr2', 'bar')])", + repr(unpickled)) + + class NamespaceTestCase(unittest.TestCase): def test_pickle(self): @@ -165,12 +207,18 @@ self.assertEqual("QName(u'http://www.example.org/namespace}elem')", repr(QName('http://www.example.org/namespace}elem'))) + def test_leading_curly_brace(self): + qname = QName('{http://www.example.org/namespace}elem') + self.assertEquals('http://www.example.org/namespace', qname.namespace) + self.assertEquals('elem', qname.localname) + def suite(): suite = unittest.TestSuite() suite.addTest(unittest.makeSuite(StreamTestCase, 'test')) suite.addTest(unittest.makeSuite(MarkupTestCase, 'test')) suite.addTest(unittest.makeSuite(NamespaceTestCase, 'test')) + suite.addTest(unittest.makeSuite(AttrsTestCase, 'test')) suite.addTest(unittest.makeSuite(QNameTestCase, 'test')) suite.addTest(doctest.DocTestSuite(core)) return suite