Mercurial > genshi > mirror
comparison markup/tests/path.py @ 138:8ad716b4180d trunk
Add some more assertions to the XPath tests.
author | cmlenz |
---|---|
date | Wed, 09 Aug 2006 12:07:26 +0000 |
parents | ac0bc4a6aeba |
children | 47bbd9d2a5af |
comparison
equal
deleted
inserted
replaced
137:ac0bc4a6aeba | 138:8ad716b4180d |
---|---|
77 self.assertEqual('<Path "descendant-or-self::node()/child::*">', | 77 self.assertEqual('<Path "descendant-or-self::node()/child::*">', |
78 repr(path)) | 78 repr(path)) |
79 self.assertEqual('<elem/>', path.select(xml).render()) | 79 self.assertEqual('<elem/>', path.select(xml).render()) |
80 | 80 |
81 def test_1step_attribute(self): | 81 def test_1step_attribute(self): |
82 self.assertEqual('', Path('@foo').select(XML('<root/>')).render()) | 82 path = Path('@foo') |
83 self.assertEqual('<Path "attribute::foo">', repr(path)) | |
84 self.assertEqual('', path.select(XML('<root/>')).render()) | |
85 | |
83 xml = XML('<root foo="bar"/>') | 86 xml = XML('<root foo="bar"/>') |
84 self.assertEqual('bar', Path('@foo').select(xml).render()) | 87 self.assertEqual('bar', path.select(xml).render()) |
88 | |
89 path = Path('./@foo') | |
90 self.assertEqual('<Path "self::node()/attribute::foo">', repr(path)) | |
85 self.assertEqual('bar', Path('./@foo').select(xml).render()) | 91 self.assertEqual('bar', Path('./@foo').select(xml).render()) |
86 | 92 |
87 def test_1step_text(self): | 93 def test_1step_text(self): |
88 xml = XML('<root>Hey</root>') | 94 xml = XML('<root>Hey</root>') |
89 self.assertEqual('Hey', Path('text()').select(xml).render()) | 95 |
90 self.assertEqual('Hey', Path('./text()').select(xml).render()) | 96 path = Path('text()') |
91 self.assertEqual('Hey', Path('//text()').select(xml).render()) | 97 self.assertEqual('<Path "descendant::text()">', repr(path)) |
92 self.assertEqual('Hey', Path('.//text()').select(xml).render()) | 98 self.assertEqual('Hey', path.select(xml).render()) |
99 | |
100 path = Path('./text()') | |
101 self.assertEqual('<Path "self::node()/child::text()">', repr(path)) | |
102 self.assertEqual('Hey', path.select(xml).render()) | |
103 | |
104 path = Path('//text()') | |
105 self.assertEqual('<Path "descendant-or-self::node()/child::text()">', | |
106 repr(path)) | |
107 self.assertEqual('Hey', path.select(xml).render()) | |
108 | |
109 path = Path('.//text()') | |
110 self.assertEqual('<Path "self::node()/child::text()">', repr(path)) | |
111 self.assertEqual('Hey', path.select(xml).render()) | |
93 | 112 |
94 def test_2step(self): | 113 def test_2step(self): |
95 xml = XML('<root><foo/><bar/></root>') | 114 xml = XML('<root><foo/><bar/></root>') |
96 self.assertEqual('<foo/><bar/>', Path('*').select(xml).render()) | 115 self.assertEqual('<foo/><bar/>', Path('*').select(xml).render()) |
97 self.assertEqual('<bar/>', Path('bar').select(xml).render()) | 116 self.assertEqual('<bar/>', Path('bar').select(xml).render()) |
98 self.assertEqual('', Path('baz').select(xml).render()) | 117 self.assertEqual('', Path('baz').select(xml).render()) |
99 | 118 |
100 def test_2step_complex(self): | 119 def test_2step_complex(self): |
101 xml = XML('<root><foo><bar/></foo></root>') | 120 xml = XML('<root><foo><bar/></foo></root>') |
102 self.assertEqual('<bar/>', Path('foo/bar').select(xml).render()) | 121 |
103 self.assertEqual('<bar/>', Path('foo/*').select(xml).render()) | 122 path = Path('foo/bar') |
123 self.assertEqual('<Path "descendant::foo/child::bar">', repr(path)) | |
124 self.assertEqual('<bar/>', path.select(xml).render()) | |
125 | |
126 path = Path('foo/*') | |
127 self.assertEqual('<Path "descendant::foo/child::*">', repr(path)) | |
128 self.assertEqual('<bar/>', path.select(xml).render()) | |
104 | 129 |
105 xml = XML('<root><foo><bar id="1"/></foo><bar id="2"/></root>') | 130 xml = XML('<root><foo><bar id="1"/></foo><bar id="2"/></root>') |
106 self.assertEqual('<bar id="1"/><bar id="2"/>', | 131 self.assertEqual('<bar id="1"/><bar id="2"/>', |
107 Path('bar').select(xml).render()) | 132 Path('bar').select(xml).render()) |
108 | 133 |
109 def test_2step_text(self): | 134 def test_2step_text(self): |
110 xml = XML('<root><item>Foo</item></root>') | 135 xml = XML('<root><item>Foo</item></root>') |
111 self.assertEqual('Foo', Path('item/text()').select(xml).render()) | 136 |
112 self.assertEqual('Foo', Path('*/text()').select(xml).render()) | 137 path = Path('item/text()') |
113 self.assertEqual('Foo', Path('//text()').select(xml).render()) | 138 self.assertEqual('<Path "descendant::item/child::text()">', repr(path)) |
139 self.assertEqual('Foo', path.select(xml).render()) | |
140 | |
141 path = Path('*/text()') | |
142 self.assertEqual('<Path "descendant::*/child::text()">', repr(path)) | |
143 self.assertEqual('Foo', path.select(xml).render()) | |
144 | |
145 path = Path('//text()') | |
146 self.assertEqual('<Path "descendant-or-self::node()/child::text()">', | |
147 repr(path)) | |
148 self.assertEqual('Foo', path.select(xml).render()) | |
149 | |
114 xml = XML('<root><item>Foo</item><item>Bar</item></root>') | 150 xml = XML('<root><item>Foo</item><item>Bar</item></root>') |
115 self.assertEqual('FooBar', Path('item/text()').select(xml).render()) | 151 self.assertEqual('FooBar', Path('item/text()').select(xml).render()) |
116 | 152 |
117 def test_3step(self): | 153 def test_3step(self): |
118 xml = XML('<root><foo><bar/></foo></root>') | 154 xml = XML('<root><foo><bar/></foo></root>') |
119 self.assertEqual('<bar/>', Path('root/foo/*').select(xml).render()) | 155 path = Path('root/foo/*') |
156 self.assertEqual('<Path "descendant::root/child::foo/child::*">', | |
157 repr(path)) | |
158 self.assertEqual('<bar/>', path.select(xml).render()) | |
120 | 159 |
121 def test_3step_complex(self): | 160 def test_3step_complex(self): |
122 xml = XML('<root><foo><bar/></foo></root>') | 161 xml = XML('<root><foo><bar/></foo></root>') |
123 self.assertEqual('<bar/>', Path('*/bar').select(xml).render()) | 162 path = Path('*/bar') |
163 self.assertEqual('<Path "descendant::*/child::bar">', repr(path)) | |
164 self.assertEqual('<bar/>', path.select(xml).render()) | |
165 | |
124 xml = XML('<root><foo><bar id="1"/></foo><bar id="2"/></root>') | 166 xml = XML('<root><foo><bar id="1"/></foo><bar id="2"/></root>') |
167 path = Path('//bar') | |
168 self.assertEqual('<Path "descendant-or-self::node()/child::bar">', | |
169 repr(path)) | |
125 self.assertEqual('<bar id="1"/><bar id="2"/>', | 170 self.assertEqual('<bar id="1"/><bar id="2"/>', |
126 Path('//bar').select(xml).render()) | 171 path.select(xml).render()) |
127 | 172 |
128 def test_node_type_comment(self): | 173 def test_node_type_comment(self): |
129 xml = XML('<root><!-- commented --></root>') | 174 xml = XML('<root><!-- commented --></root>') |
130 self.assertEqual('<!-- commented -->', | 175 path = Path('comment()') |
131 Path('comment()').select(xml).render()) | 176 self.assertEqual('<Path "descendant::comment()">', repr(path)) |
177 self.assertEqual('<!-- commented -->', path.select(xml).render()) | |
132 | 178 |
133 def test_node_type_text(self): | 179 def test_node_type_text(self): |
134 xml = XML('<root>Some text <br/>in here.</root>') | 180 xml = XML('<root>Some text <br/>in here.</root>') |
135 self.assertEqual('Some text in here.', | 181 path = Path('text()') |
136 Path('text()').select(xml).render()) | 182 self.assertEqual('<Path "descendant::text()">', repr(path)) |
183 self.assertEqual('Some text in here.', path.select(xml).render()) | |
137 | 184 |
138 def test_node_type_node(self): | 185 def test_node_type_node(self): |
139 xml = XML('<root>Some text <br/>in here.</root>') | 186 xml = XML('<root>Some text <br/>in here.</root>') |
140 self.assertEqual('Some text <br/>in here.', | 187 path = Path('node()') |
141 Path('node()').select(xml).render()) | 188 self.assertEqual('<Path "descendant::node()">', repr(path)) |
189 self.assertEqual('Some text <br/>in here.', path.select(xml).render()) | |
142 | 190 |
143 def test_node_type_processing_instruction(self): | 191 def test_node_type_processing_instruction(self): |
144 xml = XML('<?python x = 2 * 3 ?><root><?php echo("x") ?></root>') | 192 xml = XML('<?python x = 2 * 3 ?><root><?php echo("x") ?></root>') |
193 | |
194 path = Path('processing-instruction()') | |
195 self.assertEqual('<Path "descendant::processing-instruction()">', | |
196 repr(path)) | |
145 self.assertEqual('<?python x = 2 * 3 ?><?php echo("x") ?>', | 197 self.assertEqual('<?python x = 2 * 3 ?><?php echo("x") ?>', |
146 Path('processing-instruction()').select(xml).render()) | 198 path.select(xml).render()) |
147 self.assertEqual('<?php echo("x") ?>', | 199 |
148 Path('processing-instruction("php")').select(xml).render()) | 200 path = Path('processing-instruction("php")') |
201 self.assertEqual('<Path "descendant::processing-instruction(\"php\")">', | |
202 repr(path)) | |
203 self.assertEqual('<?php echo("x") ?>', path.select(xml).render()) | |
149 | 204 |
150 def test_simple_union(self): | 205 def test_simple_union(self): |
151 xml = XML('<root>Oh <foo>my</foo></root>') | 206 xml = XML('<root>Oh <foo>my</foo></root>') |
152 self.assertEqual('Oh <foo>my</foo>', | 207 path = Path('*|text()') |
153 Path('*|text()').select(xml).render()) | 208 self.assertEqual('<Path "descendant::*|descendant::text()">', |
209 repr(path)) | |
210 self.assertEqual('Oh <foo>my</foo>', path.select(xml).render()) | |
154 | 211 |
155 def test_predicate_name(self): | 212 def test_predicate_name(self): |
156 xml = XML('<root><foo/><bar/></root>') | 213 xml = XML('<root><foo/><bar/></root>') |
157 self.assertEqual('<foo/>', | 214 self.assertEqual('<foo/>', |
158 Path('*[name()="foo"]').select(xml).render()) | 215 Path('*[name()="foo"]').select(xml).render()) |