annotate genshi/template/tests/optimization.py @ 781:93e0f2c89576 experimental-soc2008

Optimization work first commit (many changes)
author mkurczych
date Fri, 11 Jul 2008 21:10:46 +0000
parents
children
rev   line source
781
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
1 # -*- coding: utf-8 -*-
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
2 #
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
3 # Copyright (C) 2006-2008 Edgewall Software
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
4 # All rights reserved.
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
5 #
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
6 # This software is licensed as described in the file COPYING, which
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
7 # you should have received as part of this distribution. The terms
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
8 # are also available at http://genshi.edgewall.org/wiki/License.
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
9 #
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
10 # This software consists of voluntary contributions made by many
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
11 # individuals. For the exact contribution history, see the revision
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
12 # history and logs, available at http://genshi.edgewall.org/log/.
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
13
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
14 import doctest
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
15 import unittest
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
16 import sys
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
17
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
18 from genshi.core import Attrs, Stream, QName
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
19 from genshi.input import HTML, XML
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
20 from genshi.output import DocType, XMLSerializer, XHTMLSerializer, \
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
21 HTMLSerializer, EmptyTagFilter
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
22 from genshi.optimization import Optimizer, OptimizedFragment, OPTIMIZED_FRAGMENT
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
23
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
24 from genshi.template.base import BadDirectiveError, TemplateSyntaxError
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
25 from genshi.template.markup import MarkupTemplate
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
26
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
27
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
28 def _unopt(code):
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
29 return code.replace(' py:optimize=""', '')
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
30
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
31 class OptimizedTemplatesTestCase(unittest.TestCase):
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
32
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
33 def _test_doc(self, doc, serializer='xml'):
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
34 unopt = MarkupTemplate(XML(_unopt(doc)), serializer=serializer)
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
35 optimizer = Optimizer(10)
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
36 opt = MarkupTemplate(XML(doc), serializer=serializer,
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
37 optimizer=optimizer)
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
38 result = unopt.generate().render()
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
39 #non-cached one
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
40 self.assertEqual(opt.generate().render(), result)
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
41 #cached one
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
42 self.assertEqual(opt.generate().render(), result)
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
43 def test_double_match(self):
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
44 code = """\
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
45 <root xmlns:py="http://genshi.edgewall.org/">
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
46 <py:match path="tag/test">
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
47 <other>
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
48 ${select('.')}
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
49 </other>
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
50 <foo py:optimize="">
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
51 Some text that could <b>be</b> optimized.
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
52 </foo>
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
53 </py:match>
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
54 <py:match path="tag/other/test">
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
55 <other>
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
56 ${select('.')}
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
57 </other>
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
58 </py:match>
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
59 <tag>
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
60 <test py:optimize="">
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
61 Foo bar <i>bar</i>
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
62 </test>
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
63 </tag>
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
64 </root>
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
65 """
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
66 self._test_doc(code)
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
67
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
68
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
69
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
70 def suite():
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
71 suite = unittest.TestSuite()
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
72 suite.addTest(unittest.makeSuite(OptimizedTemplatesTestCase, 'test'))
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
73 return suite
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
74
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
75 if __name__ == '__main__':
93e0f2c89576 Optimization work first commit (many changes)
mkurczych
parents:
diff changeset
76 unittest.main(defaultTest='suite')
Copyright (C) 2012-2017 Edgewall Software