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())
Copyright (C) 2012-2017 Edgewall Software