annotate genshi/filters/tests/transform.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
820
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1 # -*- coding: utf-8 -*-
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
2 #
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
3 # Copyright (C) 2007 Edgewall Software
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
4 # All rights reserved.
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
5 #
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
6 # This software is licensed as described in the file COPYING, which
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
7 # you should have received as part of this distribution. The terms
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
8 # are also available at http://genshi.edgewall.org/wiki/License.
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
9 #
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
10 # This software consists of voluntary contributions made by many
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
11 # individuals. For the exact contribution history, see the revision
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
12 # history and logs, available at http://genshi.edgewall.org/log/.
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
13
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
14 import doctest
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
15 from pprint import pprint
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
16 import unittest
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
17
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
18 from genshi import HTML
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
19 from genshi.builder import Element
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
20 from genshi.core import START, END, TEXT, QName, Attrs
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
21 from genshi.filters.transform import Transformer, StreamBuffer, ENTER, EXIT, \
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
22 OUTSIDE, INSIDE, ATTR, BREAK
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
23 import genshi.filters.transform
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
24
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
25
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
26 FOO = '<root>ROOT<foo name="foo">FOO</foo></root>'
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
27 FOOBAR = '<root>ROOT<foo name="foo" size="100">FOO</foo><bar name="bar">BAR</bar></root>'
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
28
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
29
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
30 def _simplify(stream, with_attrs=False):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
31 """Simplify a marked stream."""
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
32 def _generate():
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
33 for mark, (kind, data, pos) in stream:
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
34 if kind is START:
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
35 if with_attrs:
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
36 data = (unicode(data[0]), dict((unicode(k), v)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
37 for k, v in data[1]))
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
38 else:
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
39 data = unicode(data[0])
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
40 elif kind is END:
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
41 data = unicode(data)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
42 elif kind is ATTR:
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
43 kind = ATTR
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
44 data = dict((unicode(k), v) for k, v in data[1])
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
45 yield mark, kind, data
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
46 return list(_generate())
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
47
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
48
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
49 def _transform(html, transformer, with_attrs=False):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
50 """Apply transformation returning simplified marked stream."""
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
51 if isinstance(html, basestring):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
52 html = HTML(html)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
53 stream = transformer(html, keep_marks=True)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
54 return _simplify(stream, with_attrs)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
55
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
56
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
57 class SelectTest(unittest.TestCase):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
58 """Test .select()"""
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
59 def _select(self, select):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
60 html = HTML(FOOBAR)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
61 if isinstance(select, basestring):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
62 select = [select]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
63 transformer = Transformer(select[0])
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
64 for sel in select[1:]:
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
65 transformer = transformer.select(sel)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
66 return _transform(html, transformer)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
67
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
68 def test_select_single_element(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
69 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
70 self._select('foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
71 [(None, START, u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
72 (None, TEXT, u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
73 (ENTER, START, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
74 (INSIDE, TEXT, u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
75 (EXIT, END, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
76 (None, START, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
77 (None, TEXT, u'BAR'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
78 (None, END, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
79 (None, END, u'root')],
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
80 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
81
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
82 def test_select_context(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
83 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
84 self._select('.'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
85 [(ENTER, START, u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
86 (INSIDE, TEXT, u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
87 (INSIDE, START, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
88 (INSIDE, TEXT, u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
89 (INSIDE, END, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
90 (INSIDE, START, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
91 (INSIDE, TEXT, u'BAR'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
92 (INSIDE, END, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
93 (EXIT, END, u'root')]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
94 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
95
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
96 def test_select_inside_select(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
97 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
98 self._select(['.', 'foo']),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
99 [(None, START, u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
100 (None, TEXT, u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
101 (ENTER, START, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
102 (INSIDE, TEXT, u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
103 (EXIT, END, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
104 (None, START, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
105 (None, TEXT, u'BAR'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
106 (None, END, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
107 (None, END, u'root')],
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
108 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
109
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
110 def test_select_text(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
111 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
112 self._select('*/text()'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
113 [(None, START, u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
114 (None, TEXT, u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
115 (None, START, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
116 (OUTSIDE, TEXT, u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
117 (None, END, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
118 (None, START, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
119 (OUTSIDE, TEXT, u'BAR'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
120 (None, END, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
121 (None, END, u'root')],
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
122 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
123
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
124 def test_select_attr(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
125 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
126 self._select('foo/@name'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
127 [(None, START, u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
128 (None, TEXT, u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
129 (ATTR, ATTR, {'name': u'foo'}),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
130 (None, START, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
131 (None, TEXT, u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
132 (None, END, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
133 (None, START, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
134 (None, TEXT, u'BAR'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
135 (None, END, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
136 (None, END, u'root')]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
137 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
138
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
139 def test_select_text_context(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
140 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
141 list(Transformer('.')(HTML('foo'), keep_marks=True)),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
142 [('OUTSIDE', ('TEXT', u'foo', (None, 1, 0)))],
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
143 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
144
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
145
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
146 class InvertTest(unittest.TestCase):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
147 def _invert(self, select):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
148 return _transform(FOO, Transformer(select).invert())
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
149
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
150 def test_invert_element(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
151 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
152 self._invert('foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
153 [(OUTSIDE, START, u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
154 (OUTSIDE, TEXT, u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
155 (None, START, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
156 (None, TEXT, u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
157 (None, END, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
158 (OUTSIDE, END, u'root')]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
159 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
160
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
161 def test_invert_inverted_element(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
162 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
163 _transform(FOO, Transformer('foo').invert().invert()),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
164 [(None, START, u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
165 (None, TEXT, u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
166 (OUTSIDE, START, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
167 (OUTSIDE, TEXT, u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
168 (OUTSIDE, END, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
169 (None, END, u'root')]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
170 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
171
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
172 def test_invert_text(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
173 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
174 self._invert('foo/text()'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
175 [(OUTSIDE, START, u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
176 (OUTSIDE, TEXT, u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
177 (OUTSIDE, START, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
178 (None, TEXT, u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
179 (OUTSIDE, END, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
180 (OUTSIDE, END, u'root')]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
181 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
182
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
183 def test_invert_attribute(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
184 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
185 self._invert('foo/@name'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
186 [(OUTSIDE, START, u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
187 (OUTSIDE, TEXT, u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
188 (None, ATTR, {'name': u'foo'}),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
189 (OUTSIDE, START, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
190 (OUTSIDE, TEXT, u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
191 (OUTSIDE, END, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
192 (OUTSIDE, END, u'root')]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
193 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
194
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
195 def test_invert_context(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
196 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
197 self._invert('.'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
198 [(None, START, u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
199 (None, TEXT, u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
200 (None, START, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
201 (None, TEXT, u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
202 (None, END, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
203 (None, END, u'root')]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
204 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
205
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
206 def test_invert_text_context(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
207 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
208 _simplify(Transformer('.').invert()(HTML('foo'), keep_marks=True)),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
209 [(None, 'TEXT', u'foo')],
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
210 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
211
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
212
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
213
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
214 class EndTest(unittest.TestCase):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
215 def test_end(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
216 stream = _transform(FOO, Transformer('foo').end())
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
217 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
218 stream,
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
219 [(OUTSIDE, START, u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
220 (OUTSIDE, TEXT, u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
221 (OUTSIDE, START, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
222 (OUTSIDE, TEXT, u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
223 (OUTSIDE, END, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
224 (OUTSIDE, END, u'root')]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
225 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
226
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
227
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
228 class EmptyTest(unittest.TestCase):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
229 def _empty(self, select):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
230 return _transform(FOO, Transformer(select).empty())
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
231
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
232 def test_empty_element(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
233 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
234 self._empty('foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
235 [(None, START, u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
236 (None, TEXT, u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
237 (ENTER, START, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
238 (EXIT, END, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
239 (None, END, u'root')],
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
240 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
241
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
242 def test_empty_text(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
243 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
244 self._empty('foo/text()'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
245 [(None, START, u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
246 (None, TEXT, u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
247 (None, START, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
248 (OUTSIDE, TEXT, u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
249 (None, END, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
250 (None, END, u'root')]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
251 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
252
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
253 def test_empty_attr(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
254 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
255 self._empty('foo/@name'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
256 [(None, START, u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
257 (None, TEXT, u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
258 (ATTR, ATTR, {'name': u'foo'}),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
259 (None, START, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
260 (None, TEXT, u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
261 (None, END, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
262 (None, END, u'root')]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
263 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
264
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
265 def test_empty_context(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
266 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
267 self._empty('.'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
268 [(ENTER, START, u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
269 (EXIT, END, u'root')]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
270 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
271
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
272 def test_empty_text_context(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
273 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
274 _simplify(Transformer('.')(HTML('foo'), keep_marks=True)),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
275 [(OUTSIDE, TEXT, u'foo')],
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
276 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
277
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
278
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
279 class RemoveTest(unittest.TestCase):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
280 def _remove(self, select):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
281 return _transform(FOO, Transformer(select).remove())
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
282
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
283 def test_remove_element(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
284 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
285 self._remove('foo|bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
286 [(None, START, u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
287 (None, TEXT, u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
288 (None, END, u'root')]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
289 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
290
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
291 def test_remove_text(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
292 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
293 self._remove('//text()'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
294 [(None, START, u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
295 (None, START, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
296 (None, END, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
297 (None, END, u'root')]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
298 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
299
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
300 def test_remove_attr(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
301 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
302 self._remove('foo/@name'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
303 [(None, START, u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
304 (None, TEXT, u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
305 (None, START, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
306 (None, TEXT, u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
307 (None, END, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
308 (None, END, u'root')]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
309 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
310
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
311 def test_remove_context(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
312 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
313 self._remove('.'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
314 [],
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
315 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
316
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
317 def test_remove_text_context(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
318 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
319 _transform('foo', Transformer('.').remove()),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
320 [],
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
321 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
322
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
323
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
324 class UnwrapText(unittest.TestCase):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
325 def _unwrap(self, select):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
326 return _transform(FOO, Transformer(select).unwrap())
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
327
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
328 def test_unwrap_element(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
329 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
330 self._unwrap('foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
331 [(None, START, u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
332 (None, TEXT, u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
333 (INSIDE, TEXT, u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
334 (None, END, u'root')]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
335 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
336
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
337 def test_unwrap_text(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
338 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
339 self._unwrap('foo/text()'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
340 [(None, START, u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
341 (None, TEXT, u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
342 (None, START, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
343 (OUTSIDE, TEXT, u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
344 (None, END, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
345 (None, END, u'root')]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
346 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
347
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
348 def test_unwrap_attr(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
349 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
350 self._unwrap('foo/@name'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
351 [(None, START, u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
352 (None, TEXT, u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
353 (ATTR, ATTR, {'name': u'foo'}),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
354 (None, START, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
355 (None, TEXT, u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
356 (None, END, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
357 (None, END, u'root')]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
358 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
359
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
360 def test_unwrap_adjacent(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
361 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
362 _transform(FOOBAR, Transformer('foo|bar').unwrap()),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
363 [(None, START, u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
364 (None, TEXT, u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
365 (INSIDE, TEXT, u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
366 (INSIDE, TEXT, u'BAR'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
367 (None, END, u'root')]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
368 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
369
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
370 def test_unwrap_root(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
371 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
372 self._unwrap('.'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
373 [(INSIDE, TEXT, u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
374 (INSIDE, START, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
375 (INSIDE, TEXT, u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
376 (INSIDE, END, u'foo')]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
377 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
378
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
379 def test_unwrap_text_root(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
380 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
381 _transform('foo', Transformer('.').unwrap()),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
382 [(OUTSIDE, TEXT, 'foo')],
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
383 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
384
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
385
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
386 class WrapTest(unittest.TestCase):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
387 def _wrap(self, select, wrap='wrap'):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
388 return _transform(FOO, Transformer(select).wrap(wrap))
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
389
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
390 def test_wrap_element(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
391 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
392 self._wrap('foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
393 [(None, START, u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
394 (None, TEXT, u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
395 (None, START, u'wrap'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
396 (ENTER, START, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
397 (INSIDE, TEXT, u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
398 (EXIT, END, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
399 (None, END, u'wrap'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
400 (None, END, u'root')]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
401 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
402
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
403 def test_wrap_adjacent_elements(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
404 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
405 _transform(FOOBAR, Transformer('foo|bar').wrap('wrap')),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
406 [(None, START, u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
407 (None, TEXT, u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
408 (None, START, u'wrap'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
409 (ENTER, START, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
410 (INSIDE, TEXT, u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
411 (EXIT, END, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
412 (None, END, u'wrap'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
413 (None, START, u'wrap'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
414 (ENTER, START, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
415 (INSIDE, TEXT, u'BAR'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
416 (EXIT, END, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
417 (None, END, u'wrap'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
418 (None, END, u'root')]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
419 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
420
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
421 def test_wrap_text(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
422 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
423 self._wrap('foo/text()'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
424 [(None, START, u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
425 (None, TEXT, u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
426 (None, START, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
427 (None, START, u'wrap'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
428 (OUTSIDE, TEXT, u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
429 (None, END, u'wrap'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
430 (None, END, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
431 (None, END, u'root')]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
432 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
433
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
434 def test_wrap_root(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
435 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
436 self._wrap('.'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
437 [(None, START, u'wrap'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
438 (ENTER, START, u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
439 (INSIDE, TEXT, u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
440 (INSIDE, START, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
441 (INSIDE, TEXT, u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
442 (INSIDE, END, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
443 (EXIT, END, u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
444 (None, END, u'wrap')]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
445 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
446
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
447 def test_wrap_text_root(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
448 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
449 _transform('foo', Transformer('.').wrap('wrap')),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
450 [(None, START, u'wrap'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
451 (OUTSIDE, TEXT, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
452 (None, END, u'wrap')],
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
453 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
454
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
455 def test_wrap_with_element(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
456 element = Element('a', href='http://localhost')
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
457 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
458 _transform('foo', Transformer('.').wrap(element), with_attrs=True),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
459 [(None, START, (u'a', {u'href': u'http://localhost'})),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
460 (OUTSIDE, TEXT, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
461 (None, END, u'a')]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
462 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
463
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
464
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
465 class FilterTest(unittest.TestCase):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
466 def _filter(self, select, html=FOOBAR):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
467 """Returns a list of lists of filtered elements."""
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
468 output = []
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
469 def filtered(stream):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
470 interval = []
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
471 output.append(interval)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
472 for event in stream:
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
473 interval.append(event)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
474 yield event
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
475 _transform(html, Transformer(select).filter(filtered))
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
476 simplified = []
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
477 for sub in output:
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
478 simplified.append(_simplify([(None, event) for event in sub]))
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
479 return simplified
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
480
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
481 def test_filter_element(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
482 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
483 self._filter('foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
484 [[(None, START, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
485 (None, TEXT, u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
486 (None, END, u'foo')]]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
487 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
488
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
489 def test_filter_adjacent_elements(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
490 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
491 self._filter('foo|bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
492 [[(None, START, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
493 (None, TEXT, u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
494 (None, END, u'foo')],
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
495 [(None, START, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
496 (None, TEXT, u'BAR'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
497 (None, END, u'bar')]]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
498 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
499
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
500 def test_filter_text(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
501 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
502 self._filter('*/text()'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
503 [[(None, TEXT, u'FOO')],
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
504 [(None, TEXT, u'BAR')]]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
505 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
506 def test_filter_root(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
507 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
508 self._filter('.'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
509 [[(None, START, u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
510 (None, TEXT, u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
511 (None, START, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
512 (None, TEXT, u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
513 (None, END, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
514 (None, START, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
515 (None, TEXT, u'BAR'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
516 (None, END, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
517 (None, END, u'root')]]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
518 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
519
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
520 def test_filter_text_root(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
521 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
522 self._filter('.', 'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
523 [[(None, TEXT, u'foo')]])
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
524
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
525 def test_filter_after_outside(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
526 stream = _transform(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
527 '<root>x</root>', Transformer('//root/text()').filter(lambda x: x))
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
528 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
529 list(stream),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
530 [(None, START, u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
531 (OUTSIDE, TEXT, u'x'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
532 (None, END, u'root')])
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
533
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
534
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
535 class MapTest(unittest.TestCase):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
536 def _map(self, select, kind=None):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
537 data = []
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
538 def record(d):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
539 data.append(d)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
540 return d
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
541 _transform(FOOBAR, Transformer(select).map(record, kind))
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
542 return data
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
543
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
544 def test_map_element(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
545 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
546 self._map('foo'),
902
09cc3627654c Sync `experimental/inline` branch with [source:trunk@1126].
cmlenz
parents: 820
diff changeset
547 [(QName('foo'), Attrs([(QName('name'), u'foo'),
09cc3627654c Sync `experimental/inline` branch with [source:trunk@1126].
cmlenz
parents: 820
diff changeset
548 (QName('size'), u'100')])),
820
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
549 u'FOO',
902
09cc3627654c Sync `experimental/inline` branch with [source:trunk@1126].
cmlenz
parents: 820
diff changeset
550 QName('foo')]
09cc3627654c Sync `experimental/inline` branch with [source:trunk@1126].
cmlenz
parents: 820
diff changeset
551 )
820
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
552
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
553 def test_map_with_text_kind(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
554 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
555 self._map('.', TEXT),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
556 [u'ROOT', u'FOO', u'BAR']
902
09cc3627654c Sync `experimental/inline` branch with [source:trunk@1126].
cmlenz
parents: 820
diff changeset
557 )
820
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
558
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
559 def test_map_with_root_and_end_kind(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
560 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
561 self._map('.', END),
902
09cc3627654c Sync `experimental/inline` branch with [source:trunk@1126].
cmlenz
parents: 820
diff changeset
562 [QName('foo'), QName('bar'), QName('root')]
09cc3627654c Sync `experimental/inline` branch with [source:trunk@1126].
cmlenz
parents: 820
diff changeset
563 )
820
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
564
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
565 def test_map_with_attribute(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
566 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
567 self._map('foo/@name'),
902
09cc3627654c Sync `experimental/inline` branch with [source:trunk@1126].
cmlenz
parents: 820
diff changeset
568 [(QName('foo@*'), Attrs([('name', u'foo')]))]
09cc3627654c Sync `experimental/inline` branch with [source:trunk@1126].
cmlenz
parents: 820
diff changeset
569 )
820
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
570
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
571
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
572 class SubstituteTest(unittest.TestCase):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
573 def _substitute(self, select, pattern, replace):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
574 return _transform(FOOBAR, Transformer(select).substitute(pattern, replace))
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
575
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
576 def test_substitute_foo(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
577 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
578 self._substitute('foo', 'FOO|BAR', 'FOOOOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
579 [(None, START, u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
580 (None, TEXT, u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
581 (ENTER, START, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
582 (INSIDE, TEXT, u'FOOOOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
583 (EXIT, END, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
584 (None, START, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
585 (None, TEXT, u'BAR'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
586 (None, END, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
587 (None, END, u'root')]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
588 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
589
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
590 def test_substitute_foobar_with_group(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
591 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
592 self._substitute('foo|bar', '(FOO|BAR)', r'(\1)'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
593 [(None, START, u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
594 (None, TEXT, u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
595 (ENTER, START, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
596 (INSIDE, TEXT, u'(FOO)'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
597 (EXIT, END, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
598 (ENTER, START, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
599 (INSIDE, TEXT, u'(BAR)'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
600 (EXIT, END, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
601 (None, END, u'root')]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
602 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
603
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
604
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
605 class RenameTest(unittest.TestCase):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
606 def _rename(self, select):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
607 return _transform(FOOBAR, Transformer(select).rename('foobar'))
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
608
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
609 def test_rename_root(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
610 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
611 self._rename('.'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
612 [(ENTER, START, u'foobar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
613 (INSIDE, TEXT, u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
614 (INSIDE, START, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
615 (INSIDE, TEXT, u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
616 (INSIDE, END, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
617 (INSIDE, START, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
618 (INSIDE, TEXT, u'BAR'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
619 (INSIDE, END, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
620 (EXIT, END, u'foobar')]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
621 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
622
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
623 def test_rename_element(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
624 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
625 self._rename('foo|bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
626 [(None, START, u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
627 (None, TEXT, u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
628 (ENTER, START, u'foobar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
629 (INSIDE, TEXT, u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
630 (EXIT, END, u'foobar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
631 (ENTER, START, u'foobar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
632 (INSIDE, TEXT, u'BAR'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
633 (EXIT, END, u'foobar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
634 (None, END, u'root')]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
635 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
636
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
637 def test_rename_text(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
638 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
639 self._rename('foo/text()'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
640 [(None, START, u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
641 (None, TEXT, u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
642 (None, START, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
643 (OUTSIDE, TEXT, u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
644 (None, END, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
645 (None, START, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
646 (None, TEXT, u'BAR'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
647 (None, END, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
648 (None, END, u'root')]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
649 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
650
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
651
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
652 class ContentTestMixin(object):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
653 def _apply(self, select, content=None, html=FOOBAR):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
654 class Injector(object):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
655 count = 0
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
656
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
657 def __iter__(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
658 self.count += 1
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
659 return iter(HTML('CONTENT %i' % self.count))
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
660
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
661 if isinstance(html, basestring):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
662 html = HTML(html)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
663 if content is None:
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
664 content = Injector()
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
665 elif isinstance(content, basestring):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
666 content = HTML(content)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
667 return _transform(html, getattr(Transformer(select), self.operation)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
668 (content))
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
669
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
670
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
671 class ReplaceTest(unittest.TestCase, ContentTestMixin):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
672 operation = 'replace'
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
673
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
674 def test_replace_element(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
675 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
676 self._apply('foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
677 [(None, START, u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
678 (None, TEXT, u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
679 (None, TEXT, u'CONTENT 1'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
680 (None, START, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
681 (None, TEXT, u'BAR'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
682 (None, END, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
683 (None, END, u'root')]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
684 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
685
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
686 def test_replace_text(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
687 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
688 self._apply('text()'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
689 [(None, START, u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
690 (None, TEXT, u'CONTENT 1'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
691 (None, START, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
692 (None, TEXT, u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
693 (None, END, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
694 (None, START, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
695 (None, TEXT, u'BAR'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
696 (None, END, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
697 (None, END, u'root')]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
698 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
699
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
700 def test_replace_context(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
701 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
702 self._apply('.'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
703 [(None, TEXT, u'CONTENT 1')],
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
704 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
705
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
706 def test_replace_text_context(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
707 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
708 self._apply('.', html='foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
709 [(None, TEXT, u'CONTENT 1')],
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
710 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
711
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
712 def test_replace_adjacent_elements(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
713 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
714 self._apply('*'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
715 [(None, START, u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
716 (None, TEXT, u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
717 (None, TEXT, u'CONTENT 1'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
718 (None, TEXT, u'CONTENT 2'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
719 (None, END, u'root')],
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
720 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
721
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
722 def test_replace_all(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
723 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
724 self._apply('*|text()'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
725 [(None, START, u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
726 (None, TEXT, u'CONTENT 1'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
727 (None, TEXT, u'CONTENT 2'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
728 (None, TEXT, u'CONTENT 3'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
729 (None, END, u'root')],
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
730 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
731
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
732 def test_replace_with_callback(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
733 count = [0]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
734 def content():
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
735 count[0] += 1
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
736 yield '%2i.' % count[0]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
737 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
738 self._apply('*', content),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
739 [(None, START, u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
740 (None, TEXT, u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
741 (None, TEXT, u' 1.'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
742 (None, TEXT, u' 2.'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
743 (None, END, u'root')]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
744 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
745
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
746
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
747 class BeforeTest(unittest.TestCase, ContentTestMixin):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
748 operation = 'before'
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
749
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
750 def test_before_element(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
751 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
752 self._apply('foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
753 [(None, START, u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
754 (None, TEXT, u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
755 (None, TEXT, u'CONTENT 1'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
756 (ENTER, START, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
757 (INSIDE, TEXT, u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
758 (EXIT, END, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
759 (None, START, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
760 (None, TEXT, u'BAR'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
761 (None, END, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
762 (None, END, u'root')]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
763 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
764
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
765 def test_before_text(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
766 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
767 self._apply('text()'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
768 [(None, START, u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
769 (None, TEXT, u'CONTENT 1'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
770 (OUTSIDE, TEXT, u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
771 (None, START, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
772 (None, TEXT, u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
773 (None, END, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
774 (None, START, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
775 (None, TEXT, u'BAR'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
776 (None, END, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
777 (None, END, u'root')]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
778 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
779
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
780 def test_before_context(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
781 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
782 self._apply('.'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
783 [(None, TEXT, u'CONTENT 1'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
784 (ENTER, START, u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
785 (INSIDE, TEXT, u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
786 (INSIDE, START, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
787 (INSIDE, TEXT, u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
788 (INSIDE, END, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
789 (INSIDE, START, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
790 (INSIDE, TEXT, u'BAR'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
791 (INSIDE, END, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
792 (EXIT, END, u'root')]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
793 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
794
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
795 def test_before_text_context(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
796 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
797 self._apply('.', html='foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
798 [(None, TEXT, u'CONTENT 1'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
799 (OUTSIDE, TEXT, u'foo')]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
800 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
801
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
802 def test_before_adjacent_elements(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
803 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
804 self._apply('*'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
805 [(None, START, u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
806 (None, TEXT, u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
807 (None, TEXT, u'CONTENT 1'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
808 (ENTER, START, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
809 (INSIDE, TEXT, u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
810 (EXIT, END, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
811 (None, TEXT, u'CONTENT 2'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
812 (ENTER, START, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
813 (INSIDE, TEXT, u'BAR'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
814 (EXIT, END, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
815 (None, END, u'root')]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
816
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
817 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
818
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
819 def test_before_all(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
820 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
821 self._apply('*|text()'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
822 [(None, START, u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
823 (None, TEXT, u'CONTENT 1'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
824 (OUTSIDE, TEXT, u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
825 (None, TEXT, u'CONTENT 2'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
826 (ENTER, START, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
827 (INSIDE, TEXT, u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
828 (EXIT, END, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
829 (None, TEXT, u'CONTENT 3'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
830 (ENTER, START, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
831 (INSIDE, TEXT, u'BAR'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
832 (EXIT, END, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
833 (None, END, u'root')]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
834 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
835
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
836 def test_before_with_callback(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
837 count = [0]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
838 def content():
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
839 count[0] += 1
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
840 yield '%2i.' % count[0]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
841 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
842 self._apply('foo/text()', content),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
843 [(None, 'START', u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
844 (None, 'TEXT', u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
845 (None, 'START', u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
846 (None, 'TEXT', u' 1.'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
847 ('OUTSIDE', 'TEXT', u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
848 (None, 'END', u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
849 (None, 'START', u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
850 (None, 'TEXT', u'BAR'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
851 (None, 'END', u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
852 (None, 'END', u'root')]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
853 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
854
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
855
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
856 class AfterTest(unittest.TestCase, ContentTestMixin):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
857 operation = 'after'
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
858
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
859 def test_after_element(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
860 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
861 self._apply('foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
862 [(None, START, u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
863 (None, TEXT, u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
864 (ENTER, START, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
865 (INSIDE, TEXT, u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
866 (EXIT, END, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
867 (None, TEXT, u'CONTENT 1'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
868 (None, START, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
869 (None, TEXT, u'BAR'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
870 (None, END, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
871 (None, END, u'root')]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
872 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
873
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
874 def test_after_text(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
875 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
876 self._apply('text()'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
877 [(None, START, u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
878 (OUTSIDE, TEXT, u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
879 (None, TEXT, u'CONTENT 1'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
880 (None, START, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
881 (None, TEXT, u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
882 (None, END, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
883 (None, START, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
884 (None, TEXT, u'BAR'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
885 (None, END, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
886 (None, END, u'root')]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
887 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
888
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
889 def test_after_context(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
890 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
891 self._apply('.'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
892 [(ENTER, START, u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
893 (INSIDE, TEXT, u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
894 (INSIDE, START, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
895 (INSIDE, TEXT, u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
896 (INSIDE, END, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
897 (INSIDE, START, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
898 (INSIDE, TEXT, u'BAR'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
899 (INSIDE, END, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
900 (EXIT, END, u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
901 (None, TEXT, u'CONTENT 1')]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
902 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
903
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
904 def test_after_text_context(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
905 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
906 self._apply('.', html='foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
907 [(OUTSIDE, TEXT, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
908 (None, TEXT, u'CONTENT 1')]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
909 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
910
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
911 def test_after_adjacent_elements(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
912 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
913 self._apply('*'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
914 [(None, START, u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
915 (None, TEXT, u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
916 (ENTER, START, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
917 (INSIDE, TEXT, u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
918 (EXIT, END, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
919 (None, TEXT, u'CONTENT 1'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
920 (ENTER, START, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
921 (INSIDE, TEXT, u'BAR'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
922 (EXIT, END, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
923 (None, TEXT, u'CONTENT 2'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
924 (None, END, u'root')]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
925
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
926 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
927
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
928 def test_after_all(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
929 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
930 self._apply('*|text()'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
931 [(None, START, u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
932 (OUTSIDE, TEXT, u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
933 (None, TEXT, u'CONTENT 1'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
934 (ENTER, START, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
935 (INSIDE, TEXT, u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
936 (EXIT, END, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
937 (None, TEXT, u'CONTENT 2'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
938 (ENTER, START, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
939 (INSIDE, TEXT, u'BAR'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
940 (EXIT, END, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
941 (None, TEXT, u'CONTENT 3'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
942 (None, END, u'root')]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
943 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
944
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
945 def test_after_with_callback(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
946 count = [0]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
947 def content():
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
948 count[0] += 1
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
949 yield '%2i.' % count[0]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
950 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
951 self._apply('foo/text()', content),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
952 [(None, 'START', u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
953 (None, 'TEXT', u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
954 (None, 'START', u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
955 ('OUTSIDE', 'TEXT', u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
956 (None, 'TEXT', u' 1.'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
957 (None, 'END', u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
958 (None, 'START', u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
959 (None, 'TEXT', u'BAR'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
960 (None, 'END', u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
961 (None, 'END', u'root')]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
962 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
963
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
964
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
965 class PrependTest(unittest.TestCase, ContentTestMixin):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
966 operation = 'prepend'
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
967
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
968 def test_prepend_element(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
969 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
970 self._apply('foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
971 [(None, START, u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
972 (None, TEXT, u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
973 (ENTER, START, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
974 (None, TEXT, u'CONTENT 1'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
975 (INSIDE, TEXT, u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
976 (EXIT, END, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
977 (None, START, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
978 (None, TEXT, u'BAR'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
979 (None, END, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
980 (None, END, u'root')]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
981 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
982
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
983 def test_prepend_text(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
984 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
985 self._apply('text()'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
986 [(None, START, u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
987 (OUTSIDE, TEXT, u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
988 (None, START, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
989 (None, TEXT, u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
990 (None, END, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
991 (None, START, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
992 (None, TEXT, u'BAR'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
993 (None, END, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
994 (None, END, u'root')]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
995 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
996
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
997 def test_prepend_context(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
998 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
999 self._apply('.'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1000 [(ENTER, START, u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1001 (None, TEXT, u'CONTENT 1'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1002 (INSIDE, TEXT, u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1003 (INSIDE, START, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1004 (INSIDE, TEXT, u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1005 (INSIDE, END, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1006 (INSIDE, START, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1007 (INSIDE, TEXT, u'BAR'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1008 (INSIDE, END, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1009 (EXIT, END, u'root')],
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1010 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1011
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1012 def test_prepend_text_context(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1013 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1014 self._apply('.', html='foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1015 [(OUTSIDE, TEXT, u'foo')]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1016 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1017
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1018 def test_prepend_adjacent_elements(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1019 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1020 self._apply('*'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1021 [(None, START, u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1022 (None, TEXT, u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1023 (ENTER, START, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1024 (None, TEXT, u'CONTENT 1'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1025 (INSIDE, TEXT, u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1026 (EXIT, END, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1027 (ENTER, START, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1028 (None, TEXT, u'CONTENT 2'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1029 (INSIDE, TEXT, u'BAR'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1030 (EXIT, END, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1031 (None, END, u'root')]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1032
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1033 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1034
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1035 def test_prepend_all(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1036 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1037 self._apply('*|text()'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1038 [(None, START, u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1039 (OUTSIDE, TEXT, u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1040 (ENTER, START, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1041 (None, TEXT, u'CONTENT 1'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1042 (INSIDE, TEXT, u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1043 (EXIT, END, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1044 (ENTER, START, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1045 (None, TEXT, u'CONTENT 2'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1046 (INSIDE, TEXT, u'BAR'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1047 (EXIT, END, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1048 (None, END, u'root')]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1049 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1050
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1051 def test_prepend_with_callback(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1052 count = [0]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1053 def content():
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1054 count[0] += 1
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1055 yield '%2i.' % count[0]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1056 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1057 self._apply('foo', content),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1058 [(None, 'START', u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1059 (None, 'TEXT', u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1060 (ENTER, 'START', u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1061 (None, 'TEXT', u' 1.'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1062 (INSIDE, 'TEXT', u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1063 (EXIT, 'END', u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1064 (None, 'START', u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1065 (None, 'TEXT', u'BAR'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1066 (None, 'END', u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1067 (None, 'END', u'root')]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1068 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1069
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1070
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1071 class AppendTest(unittest.TestCase, ContentTestMixin):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1072 operation = 'append'
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1073
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1074 def test_append_element(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1075 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1076 self._apply('foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1077 [(None, START, u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1078 (None, TEXT, u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1079 (ENTER, START, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1080 (INSIDE, TEXT, u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1081 (None, TEXT, u'CONTENT 1'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1082 (EXIT, END, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1083 (None, START, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1084 (None, TEXT, u'BAR'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1085 (None, END, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1086 (None, END, u'root')]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1087 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1088
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1089 def test_append_text(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1090 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1091 self._apply('text()'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1092 [(None, START, u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1093 (OUTSIDE, TEXT, u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1094 (None, START, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1095 (None, TEXT, u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1096 (None, END, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1097 (None, START, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1098 (None, TEXT, u'BAR'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1099 (None, END, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1100 (None, END, u'root')]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1101 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1102
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1103 def test_append_context(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1104 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1105 self._apply('.'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1106 [(ENTER, START, u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1107 (INSIDE, TEXT, u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1108 (INSIDE, START, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1109 (INSIDE, TEXT, u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1110 (INSIDE, END, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1111 (INSIDE, START, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1112 (INSIDE, TEXT, u'BAR'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1113 (INSIDE, END, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1114 (None, TEXT, u'CONTENT 1'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1115 (EXIT, END, u'root')],
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1116 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1117
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1118 def test_append_text_context(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1119 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1120 self._apply('.', html='foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1121 [(OUTSIDE, TEXT, u'foo')]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1122 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1123
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1124 def test_append_adjacent_elements(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1125 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1126 self._apply('*'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1127 [(None, START, u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1128 (None, TEXT, u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1129 (ENTER, START, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1130 (INSIDE, TEXT, u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1131 (None, TEXT, u'CONTENT 1'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1132 (EXIT, END, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1133 (ENTER, START, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1134 (INSIDE, TEXT, u'BAR'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1135 (None, TEXT, u'CONTENT 2'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1136 (EXIT, END, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1137 (None, END, u'root')]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1138
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1139 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1140
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1141 def test_append_all(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1142 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1143 self._apply('*|text()'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1144 [(None, START, u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1145 (OUTSIDE, TEXT, u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1146 (ENTER, START, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1147 (INSIDE, TEXT, u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1148 (None, TEXT, u'CONTENT 1'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1149 (EXIT, END, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1150 (ENTER, START, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1151 (INSIDE, TEXT, u'BAR'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1152 (None, TEXT, u'CONTENT 2'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1153 (EXIT, END, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1154 (None, END, u'root')]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1155 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1156
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1157 def test_append_with_callback(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1158 count = [0]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1159 def content():
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1160 count[0] += 1
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1161 yield '%2i.' % count[0]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1162 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1163 self._apply('foo', content),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1164 [(None, 'START', u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1165 (None, 'TEXT', u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1166 (ENTER, 'START', u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1167 (INSIDE, 'TEXT', u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1168 (None, 'TEXT', u' 1.'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1169 (EXIT, 'END', u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1170 (None, 'START', u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1171 (None, 'TEXT', u'BAR'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1172 (None, 'END', u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1173 (None, 'END', u'root')]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1174 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1175
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1176
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1177
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1178 class AttrTest(unittest.TestCase):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1179 def _attr(self, select, name, value):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1180 return _transform(FOOBAR, Transformer(select).attr(name, value),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1181 with_attrs=True)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1182
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1183 def test_set_existing_attr(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1184 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1185 self._attr('foo', 'name', 'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1186 [(None, START, (u'root', {})),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1187 (None, TEXT, u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1188 (ENTER, START, (u'foo', {u'name': 'FOO', u'size': '100'})),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1189 (INSIDE, TEXT, u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1190 (EXIT, END, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1191 (None, START, (u'bar', {u'name': u'bar'})),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1192 (None, TEXT, u'BAR'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1193 (None, END, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1194 (None, END, u'root')]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1195 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1196
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1197 def test_set_new_attr(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1198 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1199 self._attr('foo', 'title', 'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1200 [(None, START, (u'root', {})),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1201 (None, TEXT, u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1202 (ENTER, START, (u'foo', {u'name': u'foo', u'title': 'FOO', u'size': '100'})),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1203 (INSIDE, TEXT, u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1204 (EXIT, END, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1205 (None, START, (u'bar', {u'name': u'bar'})),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1206 (None, TEXT, u'BAR'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1207 (None, END, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1208 (None, END, u'root')]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1209 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1210
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1211 def test_attr_from_function(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1212 def set(name, event):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1213 self.assertEqual(name, 'name')
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1214 return event[1][1].get('name').upper()
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1215
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1216 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1217 self._attr('foo|bar', 'name', set),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1218 [(None, START, (u'root', {})),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1219 (None, TEXT, u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1220 (ENTER, START, (u'foo', {u'name': 'FOO', u'size': '100'})),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1221 (INSIDE, TEXT, u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1222 (EXIT, END, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1223 (ENTER, START, (u'bar', {u'name': 'BAR'})),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1224 (INSIDE, TEXT, u'BAR'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1225 (EXIT, END, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1226 (None, END, u'root')]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1227 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1228
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1229 def test_remove_attr(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1230 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1231 self._attr('foo', 'name', None),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1232 [(None, START, (u'root', {})),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1233 (None, TEXT, u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1234 (ENTER, START, (u'foo', {u'size': '100'})),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1235 (INSIDE, TEXT, u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1236 (EXIT, END, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1237 (None, START, (u'bar', {u'name': u'bar'})),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1238 (None, TEXT, u'BAR'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1239 (None, END, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1240 (None, END, u'root')]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1241 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1242
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1243 def test_remove_attr_with_function(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1244 def set(name, event):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1245 return None
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1246
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1247 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1248 self._attr('foo', 'name', set),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1249 [(None, START, (u'root', {})),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1250 (None, TEXT, u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1251 (ENTER, START, (u'foo', {u'size': '100'})),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1252 (INSIDE, TEXT, u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1253 (EXIT, END, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1254 (None, START, (u'bar', {u'name': u'bar'})),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1255 (None, TEXT, u'BAR'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1256 (None, END, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1257 (None, END, u'root')]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1258 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1259
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1260
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1261 class BufferTestMixin(object):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1262 def _apply(self, select, with_attrs=False):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1263 buffer = StreamBuffer()
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1264 events = buffer.events
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1265
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1266 class Trace(object):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1267 last = None
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1268 trace = []
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1269
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1270 def __call__(self, stream):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1271 for event in stream:
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1272 if events and hash(tuple(events)) != self.last:
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1273 self.last = hash(tuple(events))
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1274 self.trace.append(list(events))
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1275 yield event
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1276
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1277 trace = Trace()
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1278 output = _transform(FOOBAR, getattr(Transformer(select), self.operation)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1279 (buffer).apply(trace), with_attrs=with_attrs)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1280 simplified = []
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1281 for interval in trace.trace:
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1282 simplified.append(_simplify([(None, e) for e in interval],
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1283 with_attrs=with_attrs))
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1284 return output, simplified
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1285
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1286
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1287 class CopyTest(unittest.TestCase, BufferTestMixin):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1288 operation = 'copy'
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1289
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1290 def test_copy_element(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1291 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1292 self._apply('foo')[1],
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1293 [[(None, START, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1294 (None, TEXT, u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1295 (None, END, u'foo')]]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1296 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1297
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1298 def test_copy_adjacent_elements(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1299 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1300 self._apply('foo|bar')[1],
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1301 [[(None, START, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1302 (None, TEXT, u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1303 (None, END, u'foo')],
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1304 [(None, START, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1305 (None, TEXT, u'BAR'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1306 (None, END, u'bar')]]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1307 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1308
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1309 def test_copy_all(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1310 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1311 self._apply('*|text()')[1],
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1312 [[(None, TEXT, u'ROOT')],
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1313 [(None, START, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1314 (None, TEXT, u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1315 (None, END, u'foo')],
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1316 [(None, START, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1317 (None, TEXT, u'BAR'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1318 (None, END, u'bar')]]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1319 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1320
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1321 def test_copy_text(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1322 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1323 self._apply('*/text()')[1],
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1324 [[(None, TEXT, u'FOO')],
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1325 [(None, TEXT, u'BAR')]]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1326 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1327
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1328 def test_copy_context(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1329 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1330 self._apply('.')[1],
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1331 [[(None, START, u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1332 (None, TEXT, u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1333 (None, START, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1334 (None, TEXT, u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1335 (None, END, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1336 (None, START, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1337 (None, TEXT, u'BAR'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1338 (None, END, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1339 (None, END, u'root')]]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1340 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1341
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1342 def test_copy_attribute(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1343 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1344 self._apply('foo/@name', with_attrs=True)[1],
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1345 [[(None, ATTR, {'name': u'foo'})]]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1346 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1347
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1348 def test_copy_attributes(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1349 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1350 self._apply('foo/@*', with_attrs=True)[1],
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1351 [[(None, ATTR, {u'name': u'foo', u'size': u'100'})]]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1352 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1353
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1354
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1355 class CutTest(unittest.TestCase, BufferTestMixin):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1356 operation = 'cut'
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1357
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1358 def test_cut_element(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1359 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1360 self._apply('foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1361 ([(None, START, u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1362 (None, TEXT, u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1363 (None, START, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1364 (None, TEXT, u'BAR'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1365 (None, END, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1366 (None, END, u'root')],
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1367 [[(None, START, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1368 (None, TEXT, u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1369 (None, END, u'foo')]])
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1370 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1371
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1372 def test_cut_adjacent_elements(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1373 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1374 self._apply('foo|bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1375 ([(None, START, u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1376 (None, TEXT, u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1377 (BREAK, BREAK, None),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1378 (None, END, u'root')],
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1379 [[(None, START, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1380 (None, TEXT, u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1381 (None, END, u'foo')],
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1382 [(None, START, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1383 (None, TEXT, u'BAR'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1384 (None, END, u'bar')]])
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1385 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1386
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1387 def test_cut_all(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1388 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1389 self._apply('*|text()'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1390 ([(None, 'START', u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1391 ('BREAK', 'BREAK', None),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1392 ('BREAK', 'BREAK', None),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1393 (None, 'END', u'root')],
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1394 [[(None, 'TEXT', u'ROOT')],
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1395 [(None, 'START', u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1396 (None, 'TEXT', u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1397 (None, 'END', u'foo')],
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1398 [(None, 'START', u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1399 (None, 'TEXT', u'BAR'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1400 (None, 'END', u'bar')]])
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1401 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1402
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1403 def test_cut_text(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1404 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1405 self._apply('*/text()'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1406 ([(None, 'START', u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1407 (None, 'TEXT', u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1408 (None, 'START', u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1409 (None, 'END', u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1410 (None, 'START', u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1411 (None, 'END', u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1412 (None, 'END', u'root')],
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1413 [[(None, 'TEXT', u'FOO')],
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1414 [(None, 'TEXT', u'BAR')]])
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1415 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1416
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1417 def test_cut_context(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1418 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1419 self._apply('.')[1],
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1420 [[(None, 'START', u'root'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1421 (None, 'TEXT', u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1422 (None, 'START', u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1423 (None, 'TEXT', u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1424 (None, 'END', u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1425 (None, 'START', u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1426 (None, 'TEXT', u'BAR'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1427 (None, 'END', u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1428 (None, 'END', u'root')]]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1429 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1430
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1431 def test_cut_attribute(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1432 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1433 self._apply('foo/@name', with_attrs=True),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1434 ([(None, START, (u'root', {})),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1435 (None, TEXT, u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1436 (None, START, (u'foo', {u'size': u'100'})),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1437 (None, TEXT, u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1438 (None, END, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1439 (None, START, (u'bar', {u'name': u'bar'})),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1440 (None, TEXT, u'BAR'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1441 (None, END, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1442 (None, END, u'root')],
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1443 [[(None, ATTR, {u'name': u'foo'})]])
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1444 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1445
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1446 def test_cut_attributes(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1447 self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1448 self._apply('foo/@*', with_attrs=True),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1449 ([(None, START, (u'root', {})),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1450 (None, TEXT, u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1451 (None, START, (u'foo', {})),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1452 (None, TEXT, u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1453 (None, END, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1454 (None, START, (u'bar', {u'name': u'bar'})),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1455 (None, TEXT, u'BAR'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1456 (None, END, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1457 (None, END, u'root')],
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1458 [[(None, ATTR, {u'name': u'foo', u'size': u'100'})]])
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1459 )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1460
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1461 # XXX Test this when the XPath implementation is fixed (#233).
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1462 # def test_cut_attribute_or_attribute(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1463 # self.assertEqual(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1464 # self._apply('foo/@name | foo/@size', with_attrs=True),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1465 # ([(None, START, (u'root', {})),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1466 # (None, TEXT, u'ROOT'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1467 # (None, START, (u'foo', {})),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1468 # (None, TEXT, u'FOO'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1469 # (None, END, u'foo'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1470 # (None, START, (u'bar', {u'name': u'bar'})),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1471 # (None, TEXT, u'BAR'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1472 # (None, END, u'bar'),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1473 # (None, END, u'root')],
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1474 # [[(None, ATTR, {u'name': u'foo', u'size': u'100'})]])
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1475 # )
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1476
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1477
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1478
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1479
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1480 def suite():
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1481 from genshi.input import HTML
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1482 from genshi.core import Markup
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1483 from genshi.builder import tag
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1484 suite = unittest.TestSuite()
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1485 for test in (SelectTest, InvertTest, EndTest,
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1486 EmptyTest, RemoveTest, UnwrapText, WrapTest, FilterTest,
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1487 MapTest, SubstituteTest, RenameTest, ReplaceTest, BeforeTest,
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1488 AfterTest, PrependTest, AppendTest, AttrTest, CopyTest, CutTest):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1489 suite.addTest(unittest.makeSuite(test, 'test'))
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1490 suite.addTest(doctest.DocTestSuite(
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1491 genshi.filters.transform, optionflags=doctest.NORMALIZE_WHITESPACE,
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1492 extraglobs={'HTML': HTML, 'tag': tag, 'Markup': Markup}))
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1493 return suite
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1494
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1495
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1496 if __name__ == '__main__':
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1497 unittest.main(defaultTest='suite')
Copyright (C) 2012-2017 Edgewall Software