Mercurial > genshi > genshi-test
annotate genshi/template/tests/interpolation.py @ 902:09cc3627654c experimental-inline
Sync `experimental/inline` branch with [source:trunk@1126].
author | cmlenz |
---|---|
date | Fri, 23 Apr 2010 21:08:26 +0000 |
parents | 1837f39efd6f |
children |
rev | line source |
---|---|
500 | 1 # -*- coding: utf-8 -*- |
2 # | |
820
1837f39efd6f
Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
500
diff
changeset
|
3 # Copyright (C) 2007-2008 Edgewall Software |
500 | 4 # All rights reserved. |
5 # | |
6 # This software is licensed as described in the file COPYING, which | |
7 # you should have received as part of this distribution. The terms | |
8 # are also available at http://genshi.edgewall.org/wiki/License. | |
9 # | |
10 # This software consists of voluntary contributions made by many | |
11 # individuals. For the exact contribution history, see the revision | |
12 # history and logs, available at http://genshi.edgewall.org/log/. | |
13 | |
14 import doctest | |
15 import sys | |
16 import unittest | |
17 | |
18 from genshi.core import TEXT | |
19 from genshi.template.base import TemplateSyntaxError, EXPR | |
20 from genshi.template.interpolation import interpolate | |
21 | |
22 | |
23 class InterpolateTestCase(unittest.TestCase): | |
24 | |
25 def test_interpolate_string(self): | |
26 parts = list(interpolate('bla')) | |
27 self.assertEqual(1, len(parts)) | |
28 self.assertEqual(TEXT, parts[0][0]) | |
29 self.assertEqual('bla', parts[0][1]) | |
30 | |
31 def test_interpolate_simple(self): | |
32 parts = list(interpolate('${bla}')) | |
33 self.assertEqual(1, len(parts)) | |
34 self.assertEqual(EXPR, parts[0][0]) | |
35 self.assertEqual('bla', parts[0][1].source) | |
36 | |
37 def test_interpolate_escaped(self): | |
38 parts = list(interpolate('$${bla}')) | |
39 self.assertEqual(1, len(parts)) | |
40 self.assertEqual(TEXT, parts[0][0]) | |
41 self.assertEqual('${bla}', parts[0][1]) | |
42 | |
43 def test_interpolate_dobuleescaped(self): | |
44 parts = list(interpolate('$$${bla}')) | |
45 self.assertEqual(2, len(parts)) | |
46 self.assertEqual(TEXT, parts[0][0]) | |
47 self.assertEqual('$', parts[0][1]) | |
48 self.assertEqual(EXPR, parts[1][0]) | |
49 self.assertEqual('bla', parts[1][1].source) | |
50 | |
51 def test_interpolate_short(self): | |
52 parts = list(interpolate('$bla')) | |
53 self.assertEqual(1, len(parts)) | |
54 self.assertEqual(EXPR, parts[0][0]) | |
55 self.assertEqual('bla', parts[0][1].source) | |
56 | |
57 def test_interpolate_short_escaped(self): | |
58 parts = list(interpolate('$$bla')) | |
59 self.assertEqual(1, len(parts)) | |
60 self.assertEqual(TEXT, parts[0][0]) | |
61 self.assertEqual('$bla', parts[0][1]) | |
62 | |
820
1837f39efd6f
Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
500
diff
changeset
|
63 def test_interpolate_short_escaped_2(self): |
1837f39efd6f
Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
500
diff
changeset
|
64 parts = list(interpolate('my $$bla = 2')) |
1837f39efd6f
Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
500
diff
changeset
|
65 self.assertEqual(1, len(parts)) |
1837f39efd6f
Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
500
diff
changeset
|
66 self.assertEqual(TEXT, parts[0][0]) |
1837f39efd6f
Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
500
diff
changeset
|
67 self.assertEqual('my $bla = 2', parts[0][1]) |
1837f39efd6f
Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
500
diff
changeset
|
68 |
500 | 69 def test_interpolate_short_doubleescaped(self): |
70 parts = list(interpolate('$$$bla')) | |
71 self.assertEqual(2, len(parts)) | |
72 self.assertEqual(TEXT, parts[0][0]) | |
73 self.assertEqual('$', parts[0][1]) | |
74 self.assertEqual(EXPR, parts[1][0]) | |
75 self.assertEqual('bla', parts[1][1].source) | |
76 | |
77 def test_interpolate_short_starting_with_underscore(self): | |
78 parts = list(interpolate('$_bla')) | |
79 self.assertEqual(1, len(parts)) | |
80 self.assertEqual(EXPR, parts[0][0]) | |
81 self.assertEqual('_bla', parts[0][1].source) | |
82 | |
83 def test_interpolate_short_containing_underscore(self): | |
84 parts = list(interpolate('$foo_bar')) | |
85 self.assertEqual(1, len(parts)) | |
86 self.assertEqual(EXPR, parts[0][0]) | |
87 self.assertEqual('foo_bar', parts[0][1].source) | |
88 | |
89 def test_interpolate_short_starting_with_dot(self): | |
90 parts = list(interpolate('$.bla')) | |
91 self.assertEqual(1, len(parts)) | |
92 self.assertEqual(TEXT, parts[0][0]) | |
93 self.assertEqual('$.bla', parts[0][1]) | |
94 | |
95 def test_interpolate_short_containing_dot(self): | |
96 parts = list(interpolate('$foo.bar')) | |
97 self.assertEqual(1, len(parts)) | |
98 self.assertEqual(EXPR, parts[0][0]) | |
99 self.assertEqual('foo.bar', parts[0][1].source) | |
100 | |
101 def test_interpolate_short_starting_with_digit(self): | |
102 parts = list(interpolate('$0bla')) | |
103 self.assertEqual(1, len(parts)) | |
104 self.assertEqual(TEXT, parts[0][0]) | |
105 self.assertEqual('$0bla', parts[0][1]) | |
106 | |
107 def test_interpolate_short_containing_digit(self): | |
108 parts = list(interpolate('$foo0')) | |
109 self.assertEqual(1, len(parts)) | |
110 self.assertEqual(EXPR, parts[0][0]) | |
111 self.assertEqual('foo0', parts[0][1].source) | |
112 | |
113 def test_interpolate_short_starting_with_digit(self): | |
114 parts = list(interpolate('$0bla')) | |
115 self.assertEqual(1, len(parts)) | |
116 self.assertEqual(TEXT, parts[0][0]) | |
117 self.assertEqual('$0bla', parts[0][1]) | |
118 | |
119 def test_interpolate_short_containing_digit(self): | |
120 parts = list(interpolate('$foo0')) | |
121 self.assertEqual(1, len(parts)) | |
122 self.assertEqual(EXPR, parts[0][0]) | |
123 self.assertEqual('foo0', parts[0][1].source) | |
124 | |
125 def test_interpolate_full_nested_brackets(self): | |
126 parts = list(interpolate('${{1:2}}')) | |
127 self.assertEqual(1, len(parts)) | |
128 self.assertEqual(EXPR, parts[0][0]) | |
129 self.assertEqual('{1:2}', parts[0][1].source) | |
130 | |
131 def test_interpolate_full_mismatched_brackets(self): | |
132 try: | |
133 list(interpolate('${{1:2}')) | |
134 except TemplateSyntaxError, e: | |
135 pass | |
136 else: | |
137 self.fail('Expected TemplateSyntaxError') | |
138 | |
139 def test_interpolate_quoted_brackets_1(self): | |
140 parts = list(interpolate('${"}"}')) | |
141 self.assertEqual(1, len(parts)) | |
142 self.assertEqual(EXPR, parts[0][0]) | |
143 self.assertEqual('"}"', parts[0][1].source) | |
144 | |
145 def test_interpolate_quoted_brackets_2(self): | |
146 parts = list(interpolate("${'}'}")) | |
147 self.assertEqual(1, len(parts)) | |
148 self.assertEqual(EXPR, parts[0][0]) | |
149 self.assertEqual("'}'", parts[0][1].source) | |
150 | |
151 def test_interpolate_quoted_brackets_3(self): | |
152 parts = list(interpolate("${'''}'''}")) | |
153 self.assertEqual(1, len(parts)) | |
154 self.assertEqual(EXPR, parts[0][0]) | |
155 self.assertEqual("'''}'''", parts[0][1].source) | |
156 | |
157 def test_interpolate_quoted_brackets_4(self): | |
158 parts = list(interpolate("${'''}\"\"\"'''}")) | |
159 self.assertEqual(1, len(parts)) | |
160 self.assertEqual(EXPR, parts[0][0]) | |
161 self.assertEqual("'''}\"\"\"'''", parts[0][1].source) | |
162 | |
163 def test_interpolate_quoted_brackets_5(self): | |
164 parts = list(interpolate(r"${'\'}'}")) | |
165 self.assertEqual(1, len(parts)) | |
166 self.assertEqual(EXPR, parts[0][0]) | |
167 self.assertEqual(r"'\'}'", parts[0][1].source) | |
168 | |
169 def test_interpolate_mixed1(self): | |
170 parts = list(interpolate('$foo bar $baz')) | |
171 self.assertEqual(3, len(parts)) | |
172 self.assertEqual(EXPR, parts[0][0]) | |
173 self.assertEqual('foo', parts[0][1].source) | |
174 self.assertEqual(TEXT, parts[1][0]) | |
175 self.assertEqual(' bar ', parts[1][1]) | |
176 self.assertEqual(EXPR, parts[2][0]) | |
177 self.assertEqual('baz', parts[2][1].source) | |
178 | |
179 def test_interpolate_mixed2(self): | |
180 parts = list(interpolate('foo $bar baz')) | |
181 self.assertEqual(3, len(parts)) | |
182 self.assertEqual(TEXT, parts[0][0]) | |
183 self.assertEqual('foo ', parts[0][1]) | |
184 self.assertEqual(EXPR, parts[1][0]) | |
185 self.assertEqual('bar', parts[1][1].source) | |
186 self.assertEqual(TEXT, parts[2][0]) | |
187 self.assertEqual(' baz', parts[2][1]) | |
188 | |
820
1837f39efd6f
Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
500
diff
changeset
|
189 def test_interpolate_triplequoted(self): |
1837f39efd6f
Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
500
diff
changeset
|
190 parts = list(interpolate('${"""foo\nbar"""}')) |
1837f39efd6f
Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
500
diff
changeset
|
191 self.assertEqual(1, len(parts)) |
1837f39efd6f
Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
500
diff
changeset
|
192 self.assertEqual('"""foo\nbar"""', parts[0][1].source) |
1837f39efd6f
Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
500
diff
changeset
|
193 |
500 | 194 |
195 def suite(): | |
196 suite = unittest.TestSuite() | |
197 suite.addTest(doctest.DocTestSuite(interpolate.__module__)) | |
198 suite.addTest(unittest.makeSuite(InterpolateTestCase, 'test')) | |
199 return suite | |
200 | |
201 if __name__ == '__main__': | |
202 unittest.main(defaultTest='suite') |