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 &lt; 2) { alert("Doh"); }</script>' 397 text = '<script>if (1 &lt; 2) { alert("Doh"); }</script>'
351 output = XML(text).render(HTMLSerializer) 398 output = XML(text).render(HTMLSerializer)
Copyright (C) 2012-2017 Edgewall Software