Mercurial > genshi > genshi-test
diff genshi/tests/core.py @ 279:4b5b4653d41e
Some adjustments to make core data structures picklable (requires protocol 2).
author | cmlenz |
---|---|
date | Mon, 02 Oct 2006 19:08:36 +0000 |
parents | 24757b771651 |
children | 08ada6b4b767 |
line wrap: on
line diff
--- a/genshi/tests/core.py +++ b/genshi/tests/core.py @@ -12,9 +12,12 @@ # history and logs, available at http://genshi.edgewall.org/log/. import doctest +import pickle +from StringIO import StringIO import unittest -from genshi.core import * +from genshi import core +from genshi.core import Markup, Namespace, QName, escape, unescape from genshi.input import XML, ParseError @@ -32,6 +35,14 @@ xml = XML('<li>Über uns</li>') self.assertEqual('<li>Über uns</li>', xml.render(encoding='ascii')) + def test_pickle(self): + xml = XML('<li>Foo</li>') + buf = StringIO() + pickle.dump(xml, buf, 2) + buf.seek(0) + xml = pickle.load(buf) + self.assertEquals('<li>Foo</li>', xml.render()) + class MarkupTestCase(unittest.TestCase): @@ -115,12 +126,48 @@ assert type(markup) is Markup self.assertEquals('foo', markup) + def test_pickle(self): + markup = Markup('foo') + buf = StringIO() + pickle.dump(markup, buf, 2) + buf.seek(0) + self.assertEquals('<Markup "foo">', repr(pickle.load(buf))) + + +class NamespaceTestCase(unittest.TestCase): + + def test_pickle(self): + ns = Namespace('http://www.example.org/namespace') + buf = StringIO() + pickle.dump(ns, buf, 2) + buf.seek(0) + unpickled = pickle.load(buf) + self.assertEquals('<Namespace "http://www.example.org/namespace">', + repr(unpickled)) + self.assertEquals('http://www.example.org/namespace', unpickled.uri) + + +class QNameTestCase(unittest.TestCase): + + def test_pickle(self): + qname = QName('http://www.example.org/namespace}elem') + buf = StringIO() + pickle.dump(qname, buf, 2) + buf.seek(0) + unpickled = pickle.load(buf) + self.assertEquals('{http://www.example.org/namespace}elem', unpickled) + self.assertEquals('http://www.example.org/namespace', + unpickled.namespace) + self.assertEquals('elem', unpickled.localname) + def suite(): suite = unittest.TestSuite() suite.addTest(unittest.makeSuite(StreamTestCase, 'test')) suite.addTest(unittest.makeSuite(MarkupTestCase, 'test')) - suite.addTest(doctest.DocTestSuite(Markup.__module__)) + suite.addTest(unittest.makeSuite(NamespaceTestCase, 'test')) + suite.addTest(unittest.makeSuite(QNameTestCase, 'test')) + suite.addTest(doctest.DocTestSuite(core)) return suite if __name__ == '__main__':