Mercurial > genshi > genshi-test
comparison genshi/tests/output.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 | 0742f421caba |
children | 09cc3627654c |
comparison
equal
deleted
inserted
replaced
500:0742f421caba | 820:1837f39efd6f |
---|---|
1 # -*- coding: utf-8 -*- | 1 # -*- coding: utf-8 -*- |
2 # | 2 # |
3 # Copyright (C) 2006-2007 Edgewall Software | 3 # Copyright (C) 2006-2008 Edgewall Software |
4 # All rights reserved. | 4 # All rights reserved. |
5 # | 5 # |
6 # This software is licensed as described in the file COPYING, which | 6 # This software is licensed as described in the file COPYING, which |
7 # you should have received as part of this distribution. The terms | 7 # you should have received as part of this distribution. The terms |
8 # are also available at http://genshi.edgewall.org/wiki/License. | 8 # are also available at http://genshi.edgewall.org/wiki/License. |
20 from genshi.output import DocType, XMLSerializer, XHTMLSerializer, \ | 20 from genshi.output import DocType, XMLSerializer, XHTMLSerializer, \ |
21 HTMLSerializer, EmptyTagFilter | 21 HTMLSerializer, EmptyTagFilter |
22 | 22 |
23 | 23 |
24 class XMLSerializerTestCase(unittest.TestCase): | 24 class XMLSerializerTestCase(unittest.TestCase): |
25 | |
26 def test_with_xml_decl(self): | |
27 stream = Stream([(Stream.XML_DECL, ('1.0', None, -1), (None, -1, -1))]) | |
28 output = stream.render(XMLSerializer, doctype='xhtml') | |
29 self.assertEqual('<?xml version="1.0"?>\n' | |
30 '<!DOCTYPE html PUBLIC ' | |
31 '"-//W3C//DTD XHTML 1.0 Strict//EN" ' | |
32 '"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\n', | |
33 output) | |
25 | 34 |
26 def test_doctype_in_stream(self): | 35 def test_doctype_in_stream(self): |
27 stream = Stream([(Stream.DOCTYPE, DocType.HTML_STRICT, (None, -1, -1))]) | 36 stream = Stream([(Stream.DOCTYPE, DocType.HTML_STRICT, (None, -1, -1))]) |
28 output = stream.render(XMLSerializer) | 37 output = stream.render(XMLSerializer) |
29 self.assertEqual('<!DOCTYPE html PUBLIC ' | 38 self.assertEqual('<!DOCTYPE html PUBLIC ' |
192 self.assertEqual(text, output) | 201 self.assertEqual(text, output) |
193 | 202 |
194 | 203 |
195 class XHTMLSerializerTestCase(unittest.TestCase): | 204 class XHTMLSerializerTestCase(unittest.TestCase): |
196 | 205 |
206 def test_xml_decl_dropped(self): | |
207 stream = Stream([(Stream.XML_DECL, ('1.0', None, -1), (None, -1, -1))]) | |
208 output = stream.render(XHTMLSerializer, doctype='xhtml') | |
209 self.assertEqual('<!DOCTYPE html PUBLIC ' | |
210 '"-//W3C//DTD XHTML 1.0 Strict//EN" ' | |
211 '"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\n', | |
212 output) | |
213 | |
214 def test_xml_decl_included(self): | |
215 stream = Stream([(Stream.XML_DECL, ('1.0', None, -1), (None, -1, -1))]) | |
216 output = stream.render(XHTMLSerializer, doctype='xhtml', | |
217 drop_xml_decl=False) | |
218 self.assertEqual('<?xml version="1.0"?>\n' | |
219 '<!DOCTYPE html PUBLIC ' | |
220 '"-//W3C//DTD XHTML 1.0 Strict//EN" ' | |
221 '"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\n', | |
222 output) | |
223 | |
224 def test_xml_lang(self): | |
225 text = '<p xml:lang="en">English text</p>' | |
226 output = XML(text).render(XHTMLSerializer) | |
227 self.assertEqual('<p lang="en" xml:lang="en">English text</p>', output) | |
228 | |
229 def test_xml_lang_nodup(self): | |
230 text = '<p xml:lang="en" lang="en">English text</p>' | |
231 output = XML(text).render(XHTMLSerializer) | |
232 self.assertEqual('<p xml:lang="en" lang="en">English text</p>', output) | |
233 | |
197 def test_textarea_whitespace(self): | 234 def test_textarea_whitespace(self): |
198 content = '\nHey there. \n\n I am indented.\n' | 235 content = '\nHey there. \n\n I am indented.\n' |
199 stream = XML('<textarea name="foo">%s</textarea>' % content) | 236 stream = XML('<textarea name="foo">%s</textarea>' % content) |
200 output = stream.render(XHTMLSerializer) | 237 output = stream.render(XHTMLSerializer) |
201 self.assertEqual('<textarea name="foo">%s</textarea>' % content, output) | 238 self.assertEqual('<textarea name="foo">%s</textarea>' % content, output) |
207 self.assertEqual('<pre>%s</pre>' % content, output) | 244 self.assertEqual('<pre>%s</pre>' % content, output) |
208 | 245 |
209 def test_xml_space(self): | 246 def test_xml_space(self): |
210 text = '<foo xml:space="preserve"> Do not mess \n\n with me </foo>' | 247 text = '<foo xml:space="preserve"> Do not mess \n\n with me </foo>' |
211 output = XML(text).render(XHTMLSerializer) | 248 output = XML(text).render(XHTMLSerializer) |
212 self.assertEqual(text, output) | 249 self.assertEqual('<foo> Do not mess \n\n with me </foo>', output) |
213 | 250 |
214 def test_empty_script(self): | 251 def test_empty_script(self): |
215 text = """<html xmlns="http://www.w3.org/1999/xhtml"> | 252 text = """<html xmlns="http://www.w3.org/1999/xhtml"> |
216 <script src="foo.js" /> | 253 <script src="foo.js" /> |
217 </html>""" | 254 </html>""" |
322 self.assertEqual('<!DOCTYPE html>\n<html></html>', output) | 359 self.assertEqual('<!DOCTYPE html>\n<html></html>', output) |
323 | 360 |
324 | 361 |
325 class HTMLSerializerTestCase(unittest.TestCase): | 362 class HTMLSerializerTestCase(unittest.TestCase): |
326 | 363 |
364 def test_xml_lang(self): | |
365 text = '<p xml:lang="en">English text</p>' | |
366 output = XML(text).render(HTMLSerializer) | |
367 self.assertEqual('<p lang="en">English text</p>', output) | |
368 | |
369 def test_xml_lang_nodup(self): | |
370 text = '<p lang="en" xml:lang="en">English text</p>' | |
371 output = XML(text).render(HTMLSerializer) | |
372 self.assertEqual('<p lang="en">English text</p>', output) | |
373 | |
327 def test_textarea_whitespace(self): | 374 def test_textarea_whitespace(self): |
328 content = '\nHey there. \n\n I am indented.\n' | 375 content = '\nHey there. \n\n I am indented.\n' |
329 stream = XML('<textarea name="foo">%s</textarea>' % content) | 376 stream = XML('<textarea name="foo">%s</textarea>' % content) |
330 output = stream.render(HTMLSerializer) | 377 output = stream.render(HTMLSerializer) |
331 self.assertEqual('<textarea name="foo">%s</textarea>' % content, output) | 378 self.assertEqual('<textarea name="foo">%s</textarea>' % content, output) |
341 output = XML(text).render(HTMLSerializer) | 388 output = XML(text).render(HTMLSerializer) |
342 self.assertEqual('<foo> Do not mess \n\n with me </foo>', output) | 389 self.assertEqual('<foo> Do not mess \n\n with me </foo>', output) |
343 | 390 |
344 def test_empty_script(self): | 391 def test_empty_script(self): |
345 text = '<script src="foo.js" />' | 392 text = '<script src="foo.js" />' |
346 output = XML(text).render(XHTMLSerializer) | 393 output = XML(text).render(HTMLSerializer) |
347 self.assertEqual('<script src="foo.js"></script>', output) | 394 self.assertEqual('<script src="foo.js"></script>', output) |
348 | 395 |
349 def test_script_escaping(self): | 396 def test_script_escaping(self): |
350 text = '<script>if (1 < 2) { alert("Doh"); }</script>' | 397 text = '<script>if (1 < 2) { alert("Doh"); }</script>' |
351 output = XML(text).render(HTMLSerializer) | 398 output = XML(text).render(HTMLSerializer) |