changeset 314:06a25d0962af trunk

Improved the unit tests for nested namespaces in serialization.
author cmlenz
date Tue, 24 Oct 2006 14:27:51 +0000
parents d72d842e1083
children a946edefac40
files genshi/tests/output.py
diffstat 1 files changed, 93 insertions(+), 29 deletions(-) [+]
line wrap: on
line diff
--- a/genshi/tests/output.py
+++ b/genshi/tests/output.py
@@ -15,7 +15,7 @@
 import unittest
 import sys
 
-from genshi.core import Stream
+from genshi.core import Attrs, Stream, QName
 from genshi.input import HTML, XML
 from genshi.output import DocType, XMLSerializer, XHTMLSerializer, \
                           HTMLSerializer, EmptyTagFilter
@@ -24,7 +24,7 @@
 class XMLSerializerTestCase(unittest.TestCase):
 
     def test_doctype_in_stream(self):
-        stream = Stream([(Stream.DOCTYPE, DocType.HTML_STRICT, ('?', -1, -1))])
+        stream = Stream([(Stream.DOCTYPE, DocType.HTML_STRICT, (None, -1, -1))])
         output = stream.render(XMLSerializer)
         self.assertEqual('<!DOCTYPE html PUBLIC '
                          '"-//W3C//DTD HTML 4.01//EN" '
@@ -34,15 +34,17 @@
     def test_doctype_in_stream_no_sysid(self):
         stream = Stream([(Stream.DOCTYPE,
                          ('html', '-//W3C//DTD HTML 4.01//EN', None),
-                         ('?', -1, -1))])
+                         (None, -1, -1))])
         output = stream.render(XMLSerializer)
         self.assertEqual('<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">\n',
                          output)
 
     def test_doctype_in_stream_no_pubid(self):
-        stream = Stream([(Stream.DOCTYPE,
-                         ('html', None, 'http://www.w3.org/TR/html4/strict.dtd'),
-                         ('?', -1, -1))])
+        stream = Stream([
+            (Stream.DOCTYPE,
+             ('html', None, 'http://www.w3.org/TR/html4/strict.dtd'),
+             (None, -1, -1))
+        ])
         output = stream.render(XMLSerializer)
         self.assertEqual('<!DOCTYPE html SYSTEM '
                          '"http://www.w3.org/TR/html4/strict.dtd">\n',
@@ -50,7 +52,7 @@
 
     def test_doctype_in_stream_no_pubid_or_sysid(self):
         stream = Stream([(Stream.DOCTYPE, ('html', None, None),
-                         ('?', -1, -1))])
+                         (None, -1, -1))])
         output = stream.render(XMLSerializer)
         self.assertEqual('<!DOCTYPE html>\n', output)
 
@@ -63,7 +65,9 @@
                          output)
 
     def test_doctype_one_and_only(self):
-        stream = Stream([(Stream.DOCTYPE, ('html', None, None), ('?', -1, -1))])
+        stream = Stream([
+            (Stream.DOCTYPE, ('html', None, None), (None, -1, -1))
+        ])
         output = stream.render(XMLSerializer, doctype=DocType.HTML_STRICT)
         self.assertEqual('<!DOCTYPE html PUBLIC '
                          '"-//W3C//DTD HTML 4.01//EN" '
@@ -71,31 +75,61 @@
                          output)
 
     def test_comment(self):
-        stream = Stream([(Stream.COMMENT, 'foo bar', ('?', -1, -1))])
+        stream = Stream([(Stream.COMMENT, 'foo bar', (None, -1, -1))])
         output = stream.render(XMLSerializer)
         self.assertEqual('<!--foo bar-->', output)
 
     def test_processing_instruction(self):
-        stream = Stream([(Stream.PI, ('python', 'x = 2'), ('?', -1, -1))])
+        stream = Stream([(Stream.PI, ('python', 'x = 2'), (None, -1, -1))])
         output = stream.render(XMLSerializer)
         self.assertEqual('<?python x = 2?>', output)
 
     def test_nested_default_namespaces(self):
-        xml = XML("""<div xmlns="http://www.w3.org/1999/xhtml">
-          <p xmlns="http://www.w3.org/1999/xhtml" />
-        </div>""")
-        output = xml.render(XMLSerializer)
-        self.assertEqual("""<div xmlns="http://www.w3.org/1999/xhtml">
+        stream = Stream([
+            (Stream.START_NS, ('', 'http://example.org/'), (None, -1, -1)),
+            (Stream.START, (QName('div'), Attrs()), (None, -1, -1)),
+            (Stream.TEXT, '\n          ', (None, -1, -1)),
+            (Stream.START_NS, ('', 'http://example.org/'), (None, -1, -1)),
+            (Stream.START, (QName('p'), Attrs()), (None, -1, -1)),
+            (Stream.END, QName('p'), (None, -1, -1)),
+            (Stream.END_NS, '', (None, -1, -1)),
+            (Stream.TEXT, '\n          ', (None, -1, -1)),
+            (Stream.START_NS, ('', 'http://example.org/'), (None, -1, -1)),
+            (Stream.START, (QName('p'), Attrs()), (None, -1, -1)),
+            (Stream.END, QName('p'), (None, -1, -1)),
+            (Stream.END_NS, '', (None, -1, -1)),
+            (Stream.TEXT, '\n        ', (None, -1, -1)),
+            (Stream.END, QName('div'), (None, -1, -1)),
+            (Stream.END_NS, '', (None, -1, -1))
+        ])
+        output = stream.render(XMLSerializer)
+        self.assertEqual("""<div xmlns="http://example.org/">
+          <p/>
           <p/>
         </div>""", output)
 
     def test_nested_bound_namespaces(self):
-        xml = XML("""<div xmlns:x="http://example.org/">
-          <p xmlns:x="http://example.org/" />
-        </div>""")
-        output = xml.render(XMLSerializer)
+        stream = Stream([
+            (Stream.START_NS, ('x', 'http://example.org/'), (None, -1, -1)),
+            (Stream.START, (QName('div'), Attrs()), (None, -1, -1)),
+            (Stream.TEXT, '\n          ', (None, -1, -1)),
+            (Stream.START_NS, ('x', 'http://example.org/'), (None, -1, -1)),
+            (Stream.START, (QName('p'), Attrs()), (None, -1, -1)),
+            (Stream.END, QName('p'), (None, -1, -1)),
+            (Stream.END_NS, 'x', (None, -1, -1)),
+            (Stream.TEXT, '\n          ', (None, -1, -1)),
+            (Stream.START_NS, ('x', 'http://example.org/'), (None, -1, -1)),
+            (Stream.START, (QName('p'), Attrs()), (None, -1, -1)),
+            (Stream.END, QName('p'), (None, -1, -1)),
+            (Stream.END_NS, 'x', (None, -1, -1)),
+            (Stream.TEXT, '\n        ', (None, -1, -1)),
+            (Stream.END, QName('div'), (None, -1, -1)),
+            (Stream.END_NS, 'x', (None, -1, -1))
+        ])
+        output = stream.render(XMLSerializer)
         self.assertEqual("""<div xmlns:x="http://example.org/">
           <p/>
+          <p/>
         </div>""", output)
 
 
@@ -170,21 +204,51 @@
         self.assertEqual(text, output)
 
     def test_nested_default_namespaces(self):
-        xml = XML("""<div xmlns="http://www.w3.org/1999/xhtml">
-          <p xmlns="http://www.w3.org/1999/xhtml" />
-        </div>""")
-        output = xml.render(XHTMLSerializer)
-        self.assertEqual("""<div xmlns="http://www.w3.org/1999/xhtml">
+        stream = Stream([
+            (Stream.START_NS, ('', 'http://example.org/'), (None, -1, -1)),
+            (Stream.START, (QName('div'), Attrs()), (None, -1, -1)),
+            (Stream.TEXT, '\n          ', (None, -1, -1)),
+            (Stream.START_NS, ('', 'http://example.org/'), (None, -1, -1)),
+            (Stream.START, (QName('p'), Attrs()), (None, -1, -1)),
+            (Stream.END, QName('p'), (None, -1, -1)),
+            (Stream.END_NS, '', (None, -1, -1)),
+            (Stream.TEXT, '\n          ', (None, -1, -1)),
+            (Stream.START_NS, ('', 'http://example.org/'), (None, -1, -1)),
+            (Stream.START, (QName('p'), Attrs()), (None, -1, -1)),
+            (Stream.END, QName('p'), (None, -1, -1)),
+            (Stream.END_NS, '', (None, -1, -1)),
+            (Stream.TEXT, '\n        ', (None, -1, -1)),
+            (Stream.END, QName('div'), (None, -1, -1)),
+            (Stream.END_NS, '', (None, -1, -1))
+        ])
+        output = stream.render(XHTMLSerializer)
+        self.assertEqual("""<div xmlns="http://example.org/">
+          <p></p>
           <p></p>
         </div>""", output)
 
     def test_nested_bound_namespaces(self):
-        xml = XML("""<div xmlns:x="http://example.org/">
-          <x:p xmlns:x="http://example.org/" />
-        </div>""")
-        output = xml.render(XHTMLSerializer)
+        stream = Stream([
+            (Stream.START_NS, ('x', 'http://example.org/'), (None, -1, -1)),
+            (Stream.START, (QName('div'), Attrs()), (None, -1, -1)),
+            (Stream.TEXT, '\n          ', (None, -1, -1)),
+            (Stream.START_NS, ('x', 'http://example.org/'), (None, -1, -1)),
+            (Stream.START, (QName('p'), Attrs()), (None, -1, -1)),
+            (Stream.END, QName('p'), (None, -1, -1)),
+            (Stream.END_NS, 'x', (None, -1, -1)),
+            (Stream.TEXT, '\n          ', (None, -1, -1)),
+            (Stream.START_NS, ('x', 'http://example.org/'), (None, -1, -1)),
+            (Stream.START, (QName('p'), Attrs()), (None, -1, -1)),
+            (Stream.END, QName('p'), (None, -1, -1)),
+            (Stream.END_NS, 'x', (None, -1, -1)),
+            (Stream.TEXT, '\n        ', (None, -1, -1)),
+            (Stream.END, QName('div'), (None, -1, -1)),
+            (Stream.END_NS, 'x', (None, -1, -1))
+        ])
+        output = stream.render(XHTMLSerializer)
         self.assertEqual("""<div xmlns:x="http://example.org/">
-          <x:p />
+          <p></p>
+          <p></p>
         </div>""", output)
 
 
Copyright (C) 2012-2017 Edgewall Software