cmlenz@336: # -*- coding: utf-8 -*- cmlenz@336: # cmlenz@336: # Copyright (C) 2006 Edgewall Software cmlenz@336: # All rights reserved. cmlenz@336: # cmlenz@336: # This software is licensed as described in the file COPYING, which cmlenz@336: # you should have received as part of this distribution. The terms cmlenz@336: # are also available at http://genshi.edgewall.org/wiki/License. cmlenz@336: # cmlenz@336: # This software consists of voluntary contributions made by many cmlenz@336: # individuals. For the exact contribution history, see the revision cmlenz@336: # history and logs, available at http://genshi.edgewall.org/log/. cmlenz@336: cmlenz@336: import doctest cmlenz@336: import unittest cmlenz@336: cmlenz@336: from genshi.template.text import TextTemplate cmlenz@336: cmlenz@336: cmlenz@336: class TextTemplateTestCase(unittest.TestCase): cmlenz@336: """Tests for text template processing.""" cmlenz@336: cmlenz@336: def test_escaping(self): cmlenz@336: tmpl = TextTemplate('\\#escaped') cmlenz@336: self.assertEqual('#escaped', str(tmpl.generate())) cmlenz@336: cmlenz@336: def test_comment(self): cmlenz@336: tmpl = TextTemplate('## a comment') cmlenz@336: self.assertEqual('', str(tmpl.generate())) cmlenz@336: cmlenz@336: def test_comment_escaping(self): cmlenz@336: tmpl = TextTemplate('\\## escaped comment') cmlenz@336: self.assertEqual('## escaped comment', str(tmpl.generate())) cmlenz@336: cmlenz@336: def test_end_with_args(self): cmlenz@336: tmpl = TextTemplate(""" cmlenz@336: #if foo cmlenz@336: bar cmlenz@336: #end 'if foo'""") cmlenz@336: self.assertEqual('', str(tmpl.generate())) cmlenz@336: cmlenz@336: def test_latin1_encoded(self): cmlenz@336: text = u'$foo\xf6$bar'.encode('iso-8859-1') cmlenz@336: tmpl = TextTemplate(text, encoding='iso-8859-1') cmlenz@336: self.assertEqual(u'x\xf6y', unicode(tmpl.generate(foo='x', bar='y'))) cmlenz@336: cmlenz@336: # FIXME cmlenz@336: #def test_empty_lines(self): cmlenz@336: # tmpl = TextTemplate("""Your items: cmlenz@336: # cmlenz@336: # #for item in items cmlenz@336: # * ${item} cmlenz@336: # cmlenz@336: # #end""") cmlenz@336: # self.assertEqual("""Your items: cmlenz@336: # * 0 cmlenz@336: # * 1 cmlenz@336: # * 2 cmlenz@336: # """, tmpl.generate(items=range(3)).render('text')) cmlenz@336: cmlenz@336: cmlenz@336: def suite(): cmlenz@336: suite = unittest.TestSuite() cmlenz@336: suite.addTest(doctest.DocTestSuite(TextTemplate.__module__)) cmlenz@336: suite.addTest(unittest.makeSuite(TextTemplateTestCase, 'test')) cmlenz@336: return suite cmlenz@336: cmlenz@336: if __name__ == '__main__': cmlenz@336: unittest.main(defaultTest='suite')