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>&#220;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__':
Copyright (C) 2012-2017 Edgewall Software