~ubuntu-branches/ubuntu/saucy/lxml/saucy-updates

« back to all changes in this revision

Viewing changes to src/lxml/tests/test_elementtree.py

  • Committer: Package Import Robot
  • Author(s): Matthias Klose
  • Date: 2013-01-27 22:14:53 UTC
  • mto: (2.1.34 experimental) (1.4.1)
  • mto: This revision was merged to the branch mainline in revision 17.
  • Revision ID: package-import@ubuntu.com-20130127221453-2k7oc1crqc28802y
Tags: upstream-3.1~beta1
ImportĀ upstreamĀ versionĀ 3.1~beta1

Show diffs side-by-side

added added

removed removed

Lines of Context:
45
45
    def test_element(self):
46
46
        for i in range(10):
47
47
            e = self.etree.Element('foo')
48
 
            self.assertEquals(e.tag, 'foo')
49
 
            self.assertEquals(e.text, None)
50
 
            self.assertEquals(e.tail, None)
 
48
            self.assertEqual(e.tag, 'foo')
 
49
            self.assertEqual(e.text, None)
 
50
            self.assertEqual(e.tail, None)
51
51
 
52
52
    def test_simple(self):
53
53
        Element = self.etree.Element
56
56
        root.append(Element('one'))
57
57
        root.append(Element('two'))
58
58
        root.append(Element('three'))
59
 
        self.assertEquals(3, len(root))
60
 
        self.assertEquals('one', root[0].tag)
61
 
        self.assertEquals('two', root[1].tag)
62
 
        self.assertEquals('three', root[2].tag)
 
59
        self.assertEqual(3, len(root))
 
60
        self.assertEqual('one', root[0].tag)
 
61
        self.assertEqual('two', root[1].tag)
 
62
        self.assertEqual('three', root[2].tag)
63
63
        self.assertRaises(IndexError, operator.getitem, root, 3)
64
64
 
65
65
    # test weird dictionary interaction leading to segfault previously
66
66
    def test_weird_dict_interaction(self):
67
67
        root = self.etree.Element('root')
68
 
        self.assertEquals(root.tag, "root")
 
68
        self.assertEqual(root.tag, "root")
69
69
        add = self.etree.ElementTree(file=BytesIO('<foo>Foo</foo>'))
70
 
        self.assertEquals(add.getroot().tag, "foo")
71
 
        self.assertEquals(add.getroot().text, "Foo")
 
70
        self.assertEqual(add.getroot().tag, "foo")
 
71
        self.assertEqual(add.getroot().text, "Foo")
72
72
        root.append(self.etree.Element('baz'))
73
 
        self.assertEquals(root.tag, "root")
74
 
        self.assertEquals(root[0].tag, "baz")
 
73
        self.assertEqual(root.tag, "root")
 
74
        self.assertEqual(root[0].tag, "baz")
75
75
 
76
76
    def test_subelement(self):
77
77
        Element = self.etree.Element
81
81
        SubElement(root, 'one')
82
82
        SubElement(root, 'two')
83
83
        SubElement(root, 'three')
84
 
        self.assertEquals(3, len(root))
85
 
        self.assertEquals('one', root[0].tag)
86
 
        self.assertEquals('two', root[1].tag)
87
 
        self.assertEquals('three', root[2].tag)
 
84
        self.assertEqual(3, len(root))
 
85
        self.assertEqual('one', root[0].tag)
 
86
        self.assertEqual('two', root[1].tag)
 
87
        self.assertEqual('three', root[2].tag)
88
88
        
89
89
    def test_element_contains(self):
90
90
        Element = self.etree.Element
92
92
 
93
93
        root1 = Element('root')
94
94
        SubElement(root1, 'one')
95
 
        self.assert_(root1[0] in root1)
 
95
        self.assertTrue(root1[0] in root1)
96
96
 
97
97
        root2 = Element('root')
98
98
        SubElement(root2, 'two')
99
99
        SubElement(root2, 'three')
100
 
        self.assert_(root2[0] in root2)
101
 
        self.assert_(root2[1] in root2)
 
100
        self.assertTrue(root2[0] in root2)
 
101
        self.assertTrue(root2[1] in root2)
102
102
 
103
103
        self.assertFalse(root1[0] in root2)
104
104
        self.assertFalse(root2[0] in root1)
110
110
        f = BytesIO('<doc>Test<one>One</one></doc>')
111
111
        doc = ElementTree(file=f)
112
112
        root = doc.getroot()
113
 
        self.assertEquals(1, len(root))
114
 
        self.assertEquals('one', root[0].tag)
 
113
        self.assertEqual(1, len(root))
 
114
        self.assertEqual('one', root[0].tag)
115
115
        self.assertRaises(IndexError, operator.getitem, root, 1)
116
116
        
117
117
    def test_element_indexing_with_text2(self):
120
120
        f = BytesIO('<doc><one>One</one><two>Two</two>hm<three>Three</three></doc>')
121
121
        doc = ElementTree(file=f)
122
122
        root = doc.getroot()
123
 
        self.assertEquals(3, len(root))
124
 
        self.assertEquals('one', root[0].tag)
125
 
        self.assertEquals('two', root[1].tag)
126
 
        self.assertEquals('three', root[2].tag)
 
123
        self.assertEqual(3, len(root))
 
124
        self.assertEqual('one', root[0].tag)
 
125
        self.assertEqual('two', root[1].tag)
 
126
        self.assertEqual('three', root[2].tag)
127
127
 
128
128
    def test_element_indexing_only_text(self):
129
129
        ElementTree = self.etree.ElementTree
131
131
        f = BytesIO('<doc>Test</doc>')
132
132
        doc = ElementTree(file=f)
133
133
        root = doc.getroot()
134
 
        self.assertEquals(0, len(root))
 
134
        self.assertEqual(0, len(root))
135
135
 
136
136
    def test_element_indexing_negative(self):
137
137
        Element = self.etree.Element
140
140
        b = SubElement(a, 'b')
141
141
        c = SubElement(a, 'c')
142
142
        d = SubElement(a, 'd')
143
 
        self.assertEquals(d, a[-1])
144
 
        self.assertEquals(c, a[-2])
145
 
        self.assertEquals(b, a[-3])
 
143
        self.assertEqual(d, a[-1])
 
144
        self.assertEqual(c, a[-2])
 
145
        self.assertEqual(b, a[-3])
146
146
        self.assertRaises(IndexError, operator.getitem, a, -4)
147
147
        a[-1] = e = Element('e')
148
 
        self.assertEquals(e, a[-1])
 
148
        self.assertEqual(e, a[-1])
149
149
        del a[-1]
150
 
        self.assertEquals(2, len(a))
 
150
        self.assertEqual(2, len(a))
151
151
        
152
152
    def test_elementtree(self):
153
153
        ElementTree = self.etree.ElementTree
155
155
        f = BytesIO('<doc><one>One</one><two>Two</two></doc>')
156
156
        doc = ElementTree(file=f)
157
157
        root = doc.getroot()
158
 
        self.assertEquals(2, len(root))
159
 
        self.assertEquals('one', root[0].tag)
160
 
        self.assertEquals('two', root[1].tag)
 
158
        self.assertEqual(2, len(root))
 
159
        self.assertEqual('one', root[0].tag)
 
160
        self.assertEqual('two', root[1].tag)
161
161
 
162
162
    def test_text(self):
163
163
        ElementTree = self.etree.ElementTree
165
165
        f = BytesIO('<doc>This is a text</doc>')
166
166
        doc = ElementTree(file=f)
167
167
        root = doc.getroot()
168
 
        self.assertEquals('This is a text', root.text)
 
168
        self.assertEqual('This is a text', root.text)
169
169
 
170
170
    def test_text_empty(self):
171
171
        ElementTree = self.etree.ElementTree
173
173
        f = BytesIO('<doc></doc>')
174
174
        doc = ElementTree(file=f)
175
175
        root = doc.getroot()
176
 
        self.assertEquals(None, root.text)
 
176
        self.assertEqual(None, root.text)
177
177
 
178
178
    def test_text_other(self):
179
179
        ElementTree = self.etree.ElementTree
181
181
        f = BytesIO('<doc><one>One</one></doc>')
182
182
        doc = ElementTree(file=f)
183
183
        root = doc.getroot()
184
 
        self.assertEquals(None, root.text)
185
 
        self.assertEquals('One', root[0].text)
 
184
        self.assertEqual(None, root.text)
 
185
        self.assertEqual('One', root[0].text)
186
186
 
187
187
    def test_text_escape_in(self):
188
188
        ElementTree = self.etree.ElementTree
190
190
        f = BytesIO('<doc>This is &gt; than a text</doc>')
191
191
        doc = ElementTree(file=f)
192
192
        root = doc.getroot()
193
 
        self.assertEquals('This is > than a text', root.text)
 
193
        self.assertEqual('This is > than a text', root.text)
194
194
 
195
195
    def test_text_escape_out(self):
196
196
        Element = self.etree.Element
206
206
 
207
207
        a = Element("a")
208
208
        a.text = "<>&"
209
 
        self.assertEquals(_bytes('<a>&lt;&gt;&amp;</a>'),
 
209
        self.assertEqual(_bytes('<a>&lt;&gt;&amp;</a>'),
210
210
                         tostring(a))
211
211
 
212
212
    def test_text_str_subclass(self):
226
226
        f = BytesIO('<doc>This is <i>mixed</i> content.</doc>')
227
227
        doc = ElementTree(file=f)
228
228
        root = doc.getroot()
229
 
        self.assertEquals(1, len(root))
230
 
        self.assertEquals('This is ', root.text)
231
 
        self.assertEquals(None, root.tail)
232
 
        self.assertEquals('mixed', root[0].text)
233
 
        self.assertEquals(' content.', root[0].tail)
 
229
        self.assertEqual(1, len(root))
 
230
        self.assertEqual('This is ', root.text)
 
231
        self.assertEqual(None, root.tail)
 
232
        self.assertEqual('mixed', root[0].text)
 
233
        self.assertEqual(' content.', root[0].tail)
234
234
 
235
235
    def test_tail_str_subclass(self):
236
236
        Element = self.etree.Element
249
249
        XML = self.etree.XML
250
250
        
251
251
        root = XML(_bytes('<doc>This is <i>mixed</i> content.</doc>'))
252
 
        self.assertEquals(1, len(root))
253
 
        self.assertEquals('This is ', root.text)
254
 
        self.assertEquals(None, root.tail)
255
 
        self.assertEquals('mixed', root[0].text)
256
 
        self.assertEquals(' content.', root[0].tail)
 
252
        self.assertEqual(1, len(root))
 
253
        self.assertEqual('This is ', root.text)
 
254
        self.assertEqual(None, root.tail)
 
255
        self.assertEqual('mixed', root[0].text)
 
256
        self.assertEqual(' content.', root[0].tail)
257
257
 
258
258
        del root[0].tail
259
259
 
260
 
        self.assertEquals(1, len(root))
261
 
        self.assertEquals('This is ', root.text)
262
 
        self.assertEquals(None, root.tail)
263
 
        self.assertEquals('mixed', root[0].text)
264
 
        self.assertEquals(None, root[0].tail)
 
260
        self.assertEqual(1, len(root))
 
261
        self.assertEqual('This is ', root.text)
 
262
        self.assertEqual(None, root.tail)
 
263
        self.assertEqual('mixed', root[0].text)
 
264
        self.assertEqual(None, root[0].tail)
265
265
 
266
266
        root[0].tail = "TAIL"
267
267
 
268
 
        self.assertEquals(1, len(root))
269
 
        self.assertEquals('This is ', root.text)
270
 
        self.assertEquals(None, root.tail)
271
 
        self.assertEquals('mixed', root[0].text)
272
 
        self.assertEquals('TAIL', root[0].tail)
 
268
        self.assertEqual(1, len(root))
 
269
        self.assertEqual('This is ', root.text)
 
270
        self.assertEqual(None, root.tail)
 
271
        self.assertEqual('mixed', root[0].text)
 
272
        self.assertEqual('TAIL', root[0].tail)
273
273
 
274
274
    def test_ElementTree(self):
275
275
        Element = self.etree.Element
278
278
        el = Element('hoi')
279
279
        doc = ElementTree(el)
280
280
        root = doc.getroot()
281
 
        self.assertEquals(None, root.text)
282
 
        self.assertEquals('hoi', root.tag)
 
281
        self.assertEqual(None, root.text)
 
282
        self.assertEqual('hoi', root.tag)
283
283
 
284
284
    def test_attributes(self):
285
285
        ElementTree = self.etree.ElementTree
287
287
        f = BytesIO('<doc one="One" two="Two"/>')
288
288
        doc = ElementTree(file=f)
289
289
        root = doc.getroot()
290
 
        self.assertEquals('One', root.attrib['one'])
291
 
        self.assertEquals('Two', root.attrib['two'])
 
290
        self.assertEqual('One', root.attrib['one'])
 
291
        self.assertEqual('Two', root.attrib['two'])
292
292
        self.assertRaises(KeyError, operator.getitem, root.attrib, 'three')
293
293
 
294
294
    def test_attributes2(self):
297
297
        f = BytesIO('<doc one="One" two="Two"/>')
298
298
        doc = ElementTree(file=f)
299
299
        root = doc.getroot()
300
 
        self.assertEquals('One', root.attrib.get('one'))
301
 
        self.assertEquals('Two', root.attrib.get('two'))
302
 
        self.assertEquals(None, root.attrib.get('three'))
303
 
        self.assertEquals('foo', root.attrib.get('three', 'foo'))
 
300
        self.assertEqual('One', root.attrib.get('one'))
 
301
        self.assertEqual('Two', root.attrib.get('two'))
 
302
        self.assertEqual(None, root.attrib.get('three'))
 
303
        self.assertEqual('foo', root.attrib.get('three', 'foo'))
304
304
 
305
305
    def test_attributes3(self):
306
306
        ElementTree = self.etree.ElementTree
308
308
        f = BytesIO('<doc one="One" two="Two"/>')
309
309
        doc = ElementTree(file=f)
310
310
        root = doc.getroot()
311
 
        self.assertEquals('One', root.get('one'))
312
 
        self.assertEquals('Two', root.get('two'))
313
 
        self.assertEquals(None, root.get('three'))
314
 
        self.assertEquals('foo', root.get('three', 'foo'))
 
311
        self.assertEqual('One', root.get('one'))
 
312
        self.assertEqual('Two', root.get('two'))
 
313
        self.assertEqual(None, root.get('three'))
 
314
        self.assertEqual('foo', root.get('three', 'foo'))
315
315
 
316
316
    def test_attrib_clear(self):
317
317
        XML = self.etree.XML
318
318
        
319
319
        root = XML(_bytes('<doc one="One" two="Two"/>'))
320
 
        self.assertEquals('One', root.get('one'))
321
 
        self.assertEquals('Two', root.get('two'))
 
320
        self.assertEqual('One', root.get('one'))
 
321
        self.assertEqual('Two', root.get('two'))
322
322
        root.attrib.clear()
323
 
        self.assertEquals(None, root.get('one'))
324
 
        self.assertEquals(None, root.get('two'))
 
323
        self.assertEqual(None, root.get('one'))
 
324
        self.assertEqual(None, root.get('two'))
325
325
 
326
326
    def test_attrib_set_clear(self):
327
327
        Element = self.etree.Element
328
328
        
329
329
        root = Element("root", one="One")
330
330
        root.set("two", "Two")
331
 
        self.assertEquals('One', root.get('one'))
332
 
        self.assertEquals('Two', root.get('two'))
 
331
        self.assertEqual('One', root.get('one'))
 
332
        self.assertEqual('Two', root.get('two'))
333
333
        root.attrib.clear()
334
 
        self.assertEquals(None, root.get('one'))
335
 
        self.assertEquals(None, root.get('two'))
 
334
        self.assertEqual(None, root.get('one'))
 
335
        self.assertEqual(None, root.get('two'))
336
336
 
337
337
    def test_attrib_ns_clear(self):
338
338
        Element = self.etree.Element
345
345
        child = SubElement(parent, 'child')
346
346
        child.set(attribNS, 'b')
347
347
 
348
 
        self.assertEquals('a', parent.get(attribNS))
349
 
        self.assertEquals('b', child.get(attribNS))
 
348
        self.assertEqual('a', parent.get(attribNS))
 
349
        self.assertEqual('b', child.get(attribNS))
350
350
 
351
351
        parent.clear()
352
 
        self.assertEquals(None, parent.get(attribNS))
353
 
        self.assertEquals('b', child.get(attribNS))
 
352
        self.assertEqual(None, parent.get(attribNS))
 
353
        self.assertEqual('b', child.get(attribNS))
354
354
 
355
355
    def test_attrib_pop(self):
356
356
        ElementTree = self.etree.ElementTree
358
358
        f = BytesIO('<doc one="One" two="Two"/>')
359
359
        doc = ElementTree(file=f)
360
360
        root = doc.getroot()
361
 
        self.assertEquals('One', root.attrib['one'])
362
 
        self.assertEquals('Two', root.attrib['two'])
363
 
 
364
 
        self.assertEquals('One', root.attrib.pop('one'))
365
 
 
366
 
        self.assertEquals(None, root.attrib.get('one'))
367
 
        self.assertEquals('Two', root.attrib['two'])
 
361
        self.assertEqual('One', root.attrib['one'])
 
362
        self.assertEqual('Two', root.attrib['two'])
 
363
 
 
364
        self.assertEqual('One', root.attrib.pop('one'))
 
365
 
 
366
        self.assertEqual(None, root.attrib.get('one'))
 
367
        self.assertEqual('Two', root.attrib['two'])
368
368
 
369
369
    def test_attrib_pop_unknown(self):
370
370
        root = self.etree.XML(_bytes('<doc one="One" two="Two"/>'))
371
371
        self.assertRaises(KeyError, root.attrib.pop, 'NONE')
372
372
 
373
 
        self.assertEquals('One', root.attrib['one'])
374
 
        self.assertEquals('Two', root.attrib['two'])
 
373
        self.assertEqual('One', root.attrib['one'])
 
374
        self.assertEqual('Two', root.attrib['two'])
375
375
 
376
376
    def test_attrib_pop_default(self):
377
377
        root = self.etree.XML(_bytes('<doc one="One" two="Two"/>'))
378
 
        self.assertEquals('Three', root.attrib.pop('three', 'Three'))
 
378
        self.assertEqual('Three', root.attrib.pop('three', 'Three'))
379
379
 
380
380
    def test_attrib_pop_empty_default(self):
381
381
        root = self.etree.XML(_bytes('<doc/>'))
382
 
        self.assertEquals('Three', root.attrib.pop('three', 'Three'))
 
382
        self.assertEqual('Three', root.attrib.pop('three', 'Three'))
383
383
 
384
384
    def test_attrib_pop_invalid_args(self):
385
385
        root = self.etree.XML(_bytes('<doc one="One" two="Two"/>'))
391
391
        root = XML(_bytes('<doc alpha="Alpha" beta="Beta"/>'))
392
392
        items = list(root.attrib.items())
393
393
        items.sort()
394
 
        self.assertEquals(
 
394
        self.assertEqual(
395
395
            [('alpha', 'Alpha'), ('beta', 'Beta')],
396
396
            items)
397
397
 
399
399
 
400
400
        items = list(root.attrib.items())
401
401
        items.sort()
402
 
        self.assertEquals(
 
402
        self.assertEqual(
403
403
            [('alpha', 'test'), ('beta', 'Beta'), ('gamma', 'Gamma')],
404
404
            items)
405
405
 
409
409
        root = XML(_bytes('<doc alpha="Alpha" beta="Beta"/>'))
410
410
        items = list(root.attrib.items())
411
411
        items.sort()
412
 
        self.assertEquals(
 
412
        self.assertEqual(
413
413
            [('alpha', 'Alpha'), ('beta', 'Beta')],
414
414
            items)
415
415
 
417
417
 
418
418
        items = list(root.attrib.items())
419
419
        items.sort()
420
 
        self.assertEquals(
 
420
        self.assertEqual(
421
421
            [('alpha', 'test'), ('beta', 'Beta'), ('gamma', 'Gamma')],
422
422
            items)
423
423
 
427
427
        root = XML(_bytes('<doc alpha="Alpha" beta="Beta"/>'))
428
428
        items = list(root.attrib.items())
429
429
        items.sort()
430
 
        self.assertEquals(
 
430
        self.assertEqual(
431
431
            [('alpha', 'Alpha'), ('beta', 'Beta')],
432
432
            items)
433
433
 
435
435
 
436
436
        items = list(root.attrib.items())
437
437
        items.sort()
438
 
        self.assertEquals(
 
438
        self.assertEqual(
439
439
            [('alpha', 'test'), ('beta', 'Beta'), ('gamma', 'Gamma')],
440
440
            items)
441
441
 
445
445
        root = XML(_bytes('<doc alpha="Alpha" beta="Beta"/>'))
446
446
        items = list(root.attrib.items())
447
447
        items.sort()
448
 
        self.assertEquals(
 
448
        self.assertEqual(
449
449
            [('alpha', 'Alpha'), ('beta', 'Beta')],
450
450
                                                  items)
451
451
 
454
454
 
455
455
        items = list(root.attrib.items())
456
456
        items.sort()
457
 
        self.assertEquals(
 
457
        self.assertEqual(
458
458
            [('alpha', 'test'), ('beta', 'Beta'), ('gamma', 'Gamma')],
459
459
                                                                     items)
460
460
 
464
464
        root = XML(_bytes('<doc alpha="Alpha" beta="Beta" gamma="Gamma"/>'))
465
465
        keys = list(root.attrib.keys())
466
466
        keys.sort()
467
 
        self.assertEquals(['alpha', 'beta', 'gamma'], keys)
 
467
        self.assertEqual(['alpha', 'beta', 'gamma'], keys)
468
468
 
469
469
    def test_attribute_keys2(self):
470
470
        XML = self.etree.XML
472
472
        root = XML(_bytes('<doc alpha="Alpha" beta="Beta" gamma="Gamma"/>'))
473
473
        keys = list(root.keys())
474
474
        keys.sort()
475
 
        self.assertEquals(['alpha', 'beta', 'gamma'], keys)
 
475
        self.assertEqual(['alpha', 'beta', 'gamma'], keys)
476
476
 
477
477
    def test_attribute_items2(self):
478
478
        XML = self.etree.XML
480
480
        root = XML(_bytes('<doc alpha="Alpha" beta="Beta" gamma="Gamma"/>'))
481
481
        items = list(root.items())
482
482
        items.sort()
483
 
        self.assertEquals(
 
483
        self.assertEqual(
484
484
            [('alpha','Alpha'), ('beta','Beta'), ('gamma','Gamma')],
485
485
            items)
486
486
 
490
490
        root = XML(_bytes('<foo bar="Bar" xmlns:ns="http://ns.codespeak.net/test" ns:baz="Baz" />'))
491
491
        keys = list(root.keys())
492
492
        keys.sort()
493
 
        self.assertEquals(['bar', '{http://ns.codespeak.net/test}baz'],
 
493
        self.assertEqual(['bar', '{http://ns.codespeak.net/test}baz'],
494
494
                          keys)
495
495
        
496
496
    def test_attribute_values(self):
499
499
        root = XML(_bytes('<doc alpha="Alpha" beta="Beta" gamma="Gamma"/>'))
500
500
        values = list(root.attrib.values())
501
501
        values.sort()
502
 
        self.assertEquals(['Alpha', 'Beta', 'Gamma'], values)
 
502
        self.assertEqual(['Alpha', 'Beta', 'Gamma'], values)
503
503
 
504
504
    def test_attribute_values_ns(self):
505
505
        XML = self.etree.XML
507
507
        root = XML(_bytes('<foo bar="Bar" xmlns:ns="http://ns.codespeak.net/test" ns:baz="Baz" />'))
508
508
        values = list(root.attrib.values())
509
509
        values.sort()
510
 
        self.assertEquals(
 
510
        self.assertEqual(
511
511
            ['Bar', 'Baz'], values)
512
512
        
513
513
    def test_attribute_items(self):
516
516
        root = XML(_bytes('<doc alpha="Alpha" beta="Beta" gamma="Gamma"/>'))
517
517
        items = list(root.attrib.items())
518
518
        items.sort()
519
 
        self.assertEquals([
 
519
        self.assertEqual([
520
520
            ('alpha', 'Alpha'),
521
521
            ('beta', 'Beta'),
522
522
            ('gamma', 'Gamma'),
529
529
        root = XML(_bytes('<foo bar="Bar" xmlns:ns="http://ns.codespeak.net/test" ns:baz="Baz" />'))
530
530
        items = list(root.attrib.items())
531
531
        items.sort()
532
 
        self.assertEquals(
 
532
        self.assertEqual(
533
533
            [('bar', 'Bar'), ('{http://ns.codespeak.net/test}baz', 'Baz')],
534
534
            items)
535
535
 
541
541
        
542
542
        root = XML(_bytes('<foo bar="Bar" xmlns:ns="http://ns.codespeak.net/test" ns:baz="Baz" />'))
543
543
        try:
544
 
            self.assertEquals(expected, str(root.attrib))
 
544
            self.assertEqual(expected, str(root.attrib))
545
545
        except AssertionError:
546
 
            self.assertEquals(alternative, str(root.attrib))
 
546
            self.assertEqual(alternative, str(root.attrib))
547
547
 
548
548
    def test_attribute_contains(self):
549
549
        XML = self.etree.XML
550
550
 
551
551
        root = XML(_bytes('<foo bar="Bar" xmlns:ns="http://ns.codespeak.net/test" ns:baz="Baz" />'))
552
 
        self.assertEquals(
 
552
        self.assertEqual(
553
553
            True, 'bar' in root.attrib)
554
 
        self.assertEquals(
 
554
        self.assertEqual(
555
555
            False, 'baz' in root.attrib)
556
 
        self.assertEquals(
 
556
        self.assertEqual(
557
557
            False, 'hah' in root.attrib)
558
 
        self.assertEquals(
 
558
        self.assertEqual(
559
559
            True,
560
560
            '{http://ns.codespeak.net/test}baz' in root.attrib)
561
561
 
564
564
 
565
565
        root = Element("root")
566
566
        root.set("attr", "TEST")
567
 
        self.assertEquals("TEST", root.get("attr"))
 
567
        self.assertEqual("TEST", root.get("attr"))
568
568
 
569
569
    def test_attribute_iterator(self):
570
570
        XML = self.etree.XML
574
574
        for key in root.attrib:
575
575
            result.append(key)
576
576
        result.sort()
577
 
        self.assertEquals(['alpha', 'beta', 'gamma'], result)
 
577
        self.assertEqual(['alpha', 'beta', 'gamma'], result)
578
578
 
579
579
    def test_attribute_manipulation(self):
580
580
        Element = self.etree.Element
582
582
        a = Element('a')
583
583
        a.attrib['foo'] = 'Foo'
584
584
        a.attrib['bar'] = 'Bar'
585
 
        self.assertEquals('Foo', a.attrib['foo'])
 
585
        self.assertEqual('Foo', a.attrib['foo'])
586
586
        del a.attrib['foo']
587
587
        self.assertRaises(KeyError, operator.getitem, a.attrib, 'foo')
588
588
 
592
592
        a = Element('a')
593
593
        a.attrib['{http://a/}foo'] = 'Foo'
594
594
        a.attrib['{http://a/}bar'] = 'Bar'
595
 
        self.assertEquals(None, a.get('foo'))
596
 
        self.assertEquals('Foo', a.get('{http://a/}foo'))
597
 
        self.assertEquals('Foo', a.attrib['{http://a/}foo'])
 
595
        self.assertEqual(None, a.get('foo'))
 
596
        self.assertEqual('Foo', a.get('{http://a/}foo'))
 
597
        self.assertEqual('Foo', a.attrib['{http://a/}foo'])
598
598
 
599
599
        self.assertRaises(KeyError, operator.delitem, a.attrib, 'foo')
600
 
        self.assertEquals('Foo', a.attrib['{http://a/}foo'])
 
600
        self.assertEqual('Foo', a.attrib['{http://a/}foo'])
601
601
 
602
602
        del a.attrib['{http://a/}foo']
603
603
        self.assertRaises(KeyError, operator.getitem, a.attrib, 'foo')
607
607
 
608
608
        a = XML(_bytes('<a xmlns:nsa="http://a/" nsa:foo="FooNS" foo="Foo" />'))
609
609
 
610
 
        self.assertEquals('Foo', a.attrib['foo'])
611
 
        self.assertEquals('FooNS', a.attrib['{http://a/}foo'])
 
610
        self.assertEqual('Foo', a.attrib['foo'])
 
611
        self.assertEqual('FooNS', a.attrib['{http://a/}foo'])
612
612
 
613
613
        del a.attrib['foo']
614
 
        self.assertEquals('FooNS', a.attrib['{http://a/}foo'])
 
614
        self.assertEqual('FooNS', a.attrib['{http://a/}foo'])
615
615
        self.assertRaises(KeyError, operator.getitem, a.attrib, 'foo')
616
616
        self.assertRaises(KeyError, operator.delitem, a.attrib, 'foo')
617
617
 
621
621
 
622
622
        a = XML(_bytes('<a xmlns:nsa="http://a/" foo="Foo" nsa:foo="FooNS" />'))
623
623
 
624
 
        self.assertEquals('Foo', a.attrib['foo'])
625
 
        self.assertEquals('FooNS', a.attrib['{http://a/}foo'])
 
624
        self.assertEqual('Foo', a.attrib['foo'])
 
625
        self.assertEqual('FooNS', a.attrib['{http://a/}foo'])
626
626
 
627
627
        del a.attrib['foo']
628
 
        self.assertEquals('FooNS', a.attrib['{http://a/}foo'])
 
628
        self.assertEqual('FooNS', a.attrib['{http://a/}foo'])
629
629
        self.assertRaises(KeyError, operator.getitem, a.attrib, 'foo')
630
630
 
631
631
        del a.attrib['{http://a/}foo']
636
636
        XML = self.etree.XML
637
637
        
638
638
        root = XML(_bytes('<doc>This is a text.</doc>'))
639
 
        self.assertEquals(0, len(root))
640
 
        self.assertEquals('This is a text.', root.text)
 
639
        self.assertEqual(0, len(root))
 
640
        self.assertEqual('This is a text.', root.text)
641
641
 
642
642
    def test_XMLID(self):
643
643
        XMLID = self.etree.XMLID
654
654
 
655
655
        root, dic = XMLID(xml_text)
656
656
        root2 = XML(xml_text)
657
 
        self.assertEquals(self._writeElement(root),
 
657
        self.assertEqual(self._writeElement(root),
658
658
                          self._writeElement(root2))
659
659
        expected = {
660
660
            "chapter1" : root[0],
661
661
            "note1"    : root[1],
662
662
            "warn1"    : root[4]
663
663
            }
664
 
        self.assertEquals(dic, expected)
 
664
        self.assertEqual(dic, expected)
665
665
 
666
666
    def test_fromstring(self):
667
667
        fromstring = self.etree.fromstring
668
668
 
669
669
        root = fromstring('<doc>This is a text.</doc>')
670
 
        self.assertEquals(0, len(root))
671
 
        self.assertEquals('This is a text.', root.text)
 
670
        self.assertEqual(0, len(root))
 
671
        self.assertEqual('This is a text.', root.text)
672
672
 
673
673
    required_versions_ET['test_fromstringlist'] = (1,3)
674
674
    def test_fromstringlist(self):
676
676
 
677
677
        root = fromstringlist(["<do", "c>T", "hi", "s is",
678
678
                               " a text.<", "/doc", ">"])
679
 
        self.assertEquals(0, len(root))
680
 
        self.assertEquals('This is a text.', root.text)
 
679
        self.assertEqual(0, len(root))
 
680
        self.assertEqual('This is a text.', root.text)
681
681
 
682
682
    required_versions_ET['test_fromstringlist_characters'] = (1,3)
683
683
    def test_fromstringlist_characters(self):
684
684
        fromstringlist = self.etree.fromstringlist
685
685
 
686
686
        root = fromstringlist(list('<doc>This is a text.</doc>'))
687
 
        self.assertEquals(0, len(root))
688
 
        self.assertEquals('This is a text.', root.text)
 
687
        self.assertEqual(0, len(root))
 
688
        self.assertEqual('This is a text.', root.text)
689
689
 
690
690
    required_versions_ET['test_fromstringlist_single'] = (1,3)
691
691
    def test_fromstringlist_single(self):
692
692
        fromstringlist = self.etree.fromstringlist
693
693
 
694
694
        root = fromstringlist(['<doc>This is a text.</doc>'])
695
 
        self.assertEquals(0, len(root))
696
 
        self.assertEquals('This is a text.', root.text)
 
695
        self.assertEqual(0, len(root))
 
696
        self.assertEqual('This is a text.', root.text)
697
697
 
698
698
    def test_iselement(self):
699
699
        iselement = self.etree.iselement
704
704
        ProcessingInstruction = self.etree.ProcessingInstruction
705
705
        
706
706
        el = Element('hoi')
707
 
        self.assert_(iselement(el))
 
707
        self.assertTrue(iselement(el))
708
708
 
709
709
        el2 = XML(_bytes('<foo/>'))
710
 
        self.assert_(iselement(el2))
 
710
        self.assertTrue(iselement(el2))
711
711
 
712
712
        tree = ElementTree(element=Element('dag'))
713
 
        self.assert_(not iselement(tree))
714
 
        self.assert_(iselement(tree.getroot()))
 
713
        self.assertTrue(not iselement(tree))
 
714
        self.assertTrue(iselement(tree.getroot()))
715
715
 
716
716
        c = Comment('test')
717
 
        self.assert_(iselement(c))
 
717
        self.assertTrue(iselement(c))
718
718
 
719
719
        p = ProcessingInstruction("test", "some text")
720
 
        self.assert_(iselement(p))
 
720
        self.assertTrue(iselement(p))
721
721
        
722
722
    def test_iteration(self):
723
723
        XML = self.etree.XML
726
726
        result = []
727
727
        for el in root:
728
728
            result.append(el.tag)
729
 
        self.assertEquals(['one', 'two', 'three'], result)
 
729
        self.assertEqual(['one', 'two', 'three'], result)
730
730
 
731
731
    def test_iteration_empty(self):
732
732
        XML = self.etree.XML
735
735
        result = []
736
736
        for el in root:
737
737
            result.append(el.tag)
738
 
        self.assertEquals([], result)
 
738
        self.assertEqual([], result)
739
739
 
740
740
    def test_iteration_text_only(self):
741
741
        XML = self.etree.XML
744
744
        result = []
745
745
        for el in root:
746
746
            result.append(el.tag)
747
 
        self.assertEquals([], result)
 
747
        self.assertEqual([], result)
748
748
 
749
749
    def test_iteration_crash(self):
750
750
        # this would cause a crash in the past
759
759
        result = []
760
760
        for el in reversed(root):
761
761
            result.append(el.tag)
762
 
        self.assertEquals(['three', 'two', 'one'], result)
 
762
        self.assertEqual(['three', 'two', 'one'], result)
763
763
 
764
764
    def test_iteration_subelement(self):
765
765
        XML = self.etree.XML
772
772
            if add:
773
773
                self.etree.SubElement(root, 'four')
774
774
                add = False
775
 
        self.assertEquals(['one', 'two', 'three', 'four'], result)
 
775
        self.assertEqual(['one', 'two', 'three', 'four'], result)
776
776
 
777
777
    def test_iteration_del_child(self):
778
778
        XML = self.etree.XML
782
782
        for el in root:
783
783
            result.append(el.tag)
784
784
            del root[-1]
785
 
        self.assertEquals(['one', 'two'], result)
 
785
        self.assertEqual(['one', 'two'], result)
786
786
 
787
787
    def test_iteration_double(self):
788
788
        XML = self.etree.XML
793
793
            result.append(el0.tag)
794
794
            for el1 in root:
795
795
                result.append(el1.tag)
796
 
        self.assertEquals(['one','one', 'two', 'two', 'one', 'two'], result)
 
796
        self.assertEqual(['one','one', 'two', 'two', 'one', 'two'], result)
797
797
 
798
798
    required_versions_ET['test_itertext'] = (1,3)
799
799
    def test_itertext(self):
802
802
        root = XML(_bytes("<root>RTEXT<a></a>ATAIL<b/><c>CTEXT</c>CTAIL</root>"))
803
803
 
804
804
        text = list(root.itertext())
805
 
        self.assertEquals(["RTEXT", "ATAIL", "CTEXT", "CTAIL"],
 
805
        self.assertEqual(["RTEXT", "ATAIL", "CTEXT", "CTAIL"],
806
806
                          text)
807
807
 
808
808
    required_versions_ET['test_itertext_child'] = (1,3)
812
812
        root = XML(_bytes("<root>RTEXT<a></a>ATAIL<b/><c>CTEXT</c>CTAIL</root>"))
813
813
 
814
814
        text = list(root[2].itertext())
815
 
        self.assertEquals(["CTEXT"],
 
815
        self.assertEqual(["CTEXT"],
816
816
                          text)
817
817
 
818
818
    def test_findall(self):
819
819
        XML = self.etree.XML
820
820
        root = XML(_bytes('<a><b><c/></b><b/><c><b/></c></a>'))
821
 
        self.assertEquals(len(list(root.findall("c"))), 1)
822
 
        self.assertEquals(len(list(root.findall(".//c"))), 2)
823
 
        self.assertEquals(len(list(root.findall(".//b"))), 3)
824
 
        self.assertEquals(len(list(root.findall(".//b"))[0]), 1)
825
 
        self.assertEquals(len(list(root.findall(".//b"))[1]), 0)
826
 
        self.assertEquals(len(list(root.findall(".//b"))[2]), 0)
 
821
        self.assertEqual(len(list(root.findall("c"))), 1)
 
822
        self.assertEqual(len(list(root.findall(".//c"))), 2)
 
823
        self.assertEqual(len(list(root.findall(".//b"))), 3)
 
824
        self.assertEqual(len(list(root.findall(".//b"))[0]), 1)
 
825
        self.assertEqual(len(list(root.findall(".//b"))[1]), 0)
 
826
        self.assertEqual(len(list(root.findall(".//b"))[2]), 0)
827
827
 
828
828
    def test_findall_ns(self):
829
829
        XML = self.etree.XML
830
830
        root = XML(_bytes('<a xmlns:x="X" xmlns:y="Y"><x:b><c/></x:b><b/><c><x:b/><b/></c><b/></a>'))
831
 
        self.assertEquals(len(list(root.findall(".//{X}b"))), 2)
832
 
        self.assertEquals(len(list(root.findall(".//b"))), 3)
833
 
        self.assertEquals(len(list(root.findall("b"))), 2)
 
831
        self.assertEqual(len(list(root.findall(".//{X}b"))), 2)
 
832
        self.assertEqual(len(list(root.findall(".//b"))), 3)
 
833
        self.assertEqual(len(list(root.findall("b"))), 2)
834
834
 
835
835
    def test_element_with_attributes_keywords(self):
836
836
        Element = self.etree.Element
837
837
        
838
838
        el = Element('tag', foo='Foo', bar='Bar')
839
 
        self.assertEquals('Foo', el.attrib['foo'])
840
 
        self.assertEquals('Bar', el.attrib['bar'])
 
839
        self.assertEqual('Foo', el.attrib['foo'])
 
840
        self.assertEqual('Bar', el.attrib['bar'])
841
841
 
842
842
    def test_element_with_attributes(self):
843
843
        Element = self.etree.Element
844
844
        
845
845
        el = Element('tag', {'foo':'Foo', 'bar':'Bar'})
846
 
        self.assertEquals('Foo', el.attrib['foo'])
847
 
        self.assertEquals('Bar', el.attrib['bar'])
 
846
        self.assertEqual('Foo', el.attrib['foo'])
 
847
        self.assertEqual('Bar', el.attrib['bar'])
848
848
 
849
849
    def test_element_with_attributes_ns(self):
850
850
        Element = self.etree.Element
851
851
 
852
852
        el = Element('tag', {'{ns1}foo':'Foo', '{ns2}bar':'Bar'})
853
 
        self.assertEquals('Foo', el.attrib['{ns1}foo'])
854
 
        self.assertEquals('Bar', el.attrib['{ns2}bar'])
 
853
        self.assertEqual('Foo', el.attrib['{ns1}foo'])
 
854
        self.assertEqual('Bar', el.attrib['{ns2}bar'])
855
855
 
856
856
    def test_subelement_with_attributes(self):
857
857
        Element =  self.etree.Element
859
859
        
860
860
        el = Element('tag')
861
861
        SubElement(el, 'foo', {'foo':'Foo'}, baz="Baz")
862
 
        self.assertEquals("Baz", el[0].attrib['baz'])
863
 
        self.assertEquals('Foo', el[0].attrib['foo'])
 
862
        self.assertEqual("Baz", el[0].attrib['baz'])
 
863
        self.assertEqual('Foo', el[0].attrib['foo'])
864
864
 
865
865
    def test_subelement_with_attributes_ns(self):
866
866
        Element = self.etree.Element
868
868
 
869
869
        el = Element('tag')
870
870
        SubElement(el, 'foo', {'{ns1}foo':'Foo', '{ns2}bar':'Bar'})
871
 
        self.assertEquals('Foo', el[0].attrib['{ns1}foo'])
872
 
        self.assertEquals('Bar', el[0].attrib['{ns2}bar'])
 
871
        self.assertEqual('Foo', el[0].attrib['{ns1}foo'])
 
872
        self.assertEqual('Bar', el[0].attrib['{ns2}bar'])
873
873
        
874
874
    def test_write(self):
875
875
        ElementTree = self.etree.ElementTree
881
881
            tree = ElementTree(element=root)
882
882
            tree.write(f)
883
883
            data = f.getvalue()
884
 
            self.assertEquals(
 
884
            self.assertEqual(
885
885
                _bytes('<doc%s>This is a test.</doc%s>' % (i, i)),
886
886
                canonicalize(data))
887
887
 
902
902
        tree.write(f, method="html")
903
903
        data = f.getvalue().replace(_bytes('\n'),_bytes(''))
904
904
 
905
 
        self.assertEquals(_bytes('<html><body><p>html<br>test</p></body></html>'),
 
905
        self.assertEqual(_bytes('<html><body><p>html<br>test</p></body></html>'),
906
906
                          data)
907
907
 
908
908
    required_versions_ET['test_write_method_text'] = (1,3)
925
925
        tree.write(f, method="text")
926
926
        data = f.getvalue()
927
927
 
928
 
        self.assertEquals(_bytes('ABTAILCtail'),
 
928
        self.assertEqual(_bytes('ABTAILCtail'),
929
929
                          data)
930
930
        
931
931
    def test_write_fail(self):
945
945
        for i in range(10):
946
946
            element.attrib['key'] = 'value'
947
947
            value = element.attrib['key']
948
 
            self.assertEquals(value, 'value')
 
948
            self.assertEqual(value, 'value')
949
949
            
950
950
    # from doctest; for some reason this caused crashes too
951
951
    def test_write_ElementTreeDoctest(self):
979
979
        al3.text = 'baz2-modified'
980
980
 
981
981
        # it should have changed through this route too
982
 
        self.assertEquals(
 
982
        self.assertEqual(
983
983
            'baz2-modified',
984
984
            el[1][0].text)
985
985
 
990
990
        a = Element('a')
991
991
        b = SubElement(a, 'b')
992
992
        a.text = 'hoi'
993
 
        self.assertEquals(
 
993
        self.assertEqual(
994
994
            'hoi',
995
995
            a.text)
996
 
        self.assertEquals(
 
996
        self.assertEqual(
997
997
            'b',
998
998
            a[0].tag)
999
999
 
1004
1004
        a = Element('a')
1005
1005
        a.text = 'hoi'
1006
1006
        b = SubElement(a ,'b')
1007
 
        self.assertEquals(
 
1007
        self.assertEqual(
1008
1008
            'hoi',
1009
1009
            a.text)
1010
 
        self.assertEquals(
 
1010
        self.assertEqual(
1011
1011
            'b',
1012
1012
            a[0].tag)
1013
1013
 
1019
1019
        a.text = 'foo'
1020
1020
        a.text = None
1021
1021
 
1022
 
        self.assertEquals(
 
1022
        self.assertEqual(
1023
1023
            None,
1024
1024
            a.text)
1025
1025
        self.assertXML(_bytes('<a></a>'), a)
1028
1028
        Element = self.etree.Element
1029
1029
 
1030
1030
        a = Element('a')
1031
 
        self.assertEquals(None, a.text)
 
1031
        self.assertEqual(None, a.text)
1032
1032
 
1033
1033
        a.text = ''
1034
 
        self.assertEquals('', a.text)
 
1034
        self.assertEqual('', a.text)
1035
1035
        self.assertXML(_bytes('<a></a>'), a)
1036
1036
        
1037
1037
    def test_tail1(self):
1040
1040
        
1041
1041
        a = Element('a')
1042
1042
        a.tail = 'dag'
1043
 
        self.assertEquals('dag',
 
1043
        self.assertEqual('dag',
1044
1044
                          a.tail)
1045
1045
        b = SubElement(a, 'b')
1046
1046
        b.tail = 'hoi'
1047
 
        self.assertEquals('hoi',
 
1047
        self.assertEqual('hoi',
1048
1048
                          b.tail)
1049
 
        self.assertEquals('dag',
 
1049
        self.assertEqual('dag',
1050
1050
                          a.tail)
1051
1051
 
1052
1052
    def test_tail_append(self):
1056
1056
        b = Element('b')
1057
1057
        b.tail = 'b_tail'
1058
1058
        a.append(b)
1059
 
        self.assertEquals('b_tail',
 
1059
        self.assertEqual('b_tail',
1060
1060
                          b.tail)
1061
1061
 
1062
1062
    def test_tail_set_twice(self):
1067
1067
        b = SubElement(a, 'b')
1068
1068
        b.tail = 'foo'
1069
1069
        b.tail = 'bar'
1070
 
        self.assertEquals('bar',
 
1070
        self.assertEqual('bar',
1071
1071
                          b.tail)
1072
1072
        self.assertXML(_bytes('<a><b></b>bar</a>'), a)
1073
1073
        
1076
1076
        a = Element('a')
1077
1077
        a.tail = 'foo'
1078
1078
        a.tail = None
1079
 
        self.assertEquals(
 
1079
        self.assertEqual(
1080
1080
            None,
1081
1081
            a.tail)
1082
1082
        self.assertXML(_bytes('<a></a>'), a)
1098
1098
 
1099
1099
        root.extend(elements)
1100
1100
 
1101
 
        self.assertEquals(
 
1101
        self.assertEqual(
1102
1102
            ["a0", "a1", "a2", "test0", "test1", "test2"],
1103
1103
            [ el.tag for el in root ])
1104
 
        self.assertEquals(
 
1104
        self.assertEqual(
1105
1105
            ["text0", "text1", "text2", "TEXT0", "TEXT1", "TEXT2"],
1106
1106
            [ el.text for el in root ])
1107
 
        self.assertEquals(
 
1107
        self.assertEqual(
1108
1108
            ["tail0", "tail1", "tail2", "TAIL0", "TAIL1", "TAIL2"],
1109
1109
            [ el.tail for el in root ])
1110
1110
 
1115
1115
 
1116
1116
        a = Element('a')
1117
1117
        a.append(Comment('foo'))
1118
 
        self.assertEquals(a[0].tag, Comment)
1119
 
        self.assertEquals(a[0].text, 'foo')
 
1118
        self.assertEqual(a[0].tag, Comment)
 
1119
        self.assertEqual(a[0].text, 'foo')
1120
1120
 
1121
1121
    # ElementTree < 1.3 adds whitespace around comments
1122
1122
    required_versions_ET['test_comment_text'] = (1,3)
1128
1128
 
1129
1129
        a = Element('a')
1130
1130
        a.append(Comment('foo'))
1131
 
        self.assertEquals(a[0].text, 'foo')
 
1131
        self.assertEqual(a[0].text, 'foo')
1132
1132
 
1133
 
        self.assertEquals(
 
1133
        self.assertEqual(
1134
1134
            _bytes('<a><!--foo--></a>'),
1135
1135
            tostring(a))
1136
1136
 
1137
1137
        a[0].text = "TEST"
1138
 
        self.assertEquals(a[0].text, 'TEST')
 
1138
        self.assertEqual(a[0].text, 'TEST')
1139
1139
 
1140
 
        self.assertEquals(
 
1140
        self.assertEqual(
1141
1141
            _bytes('<a><!--TEST--></a>'),
1142
1142
            tostring(a))
1143
1143
 
1151
1151
 
1152
1152
        a = Element('a')
1153
1153
        a.append(Comment(' foo  '))
1154
 
        self.assertEquals(a[0].text, ' foo  ')
1155
 
        self.assertEquals(
 
1154
        self.assertEqual(a[0].text, ' foo  ')
 
1155
        self.assertEqual(
1156
1156
            _bytes('<a><!-- foo  --></a>'),
1157
1157
            tostring(a))
1158
1158
        
1159
1159
    def test_comment_nonsense(self):
1160
1160
        Comment = self.etree.Comment
1161
1161
        c = Comment('foo')
1162
 
        self.assertEquals({}, c.attrib)
1163
 
        self.assertEquals([], list(c.keys()))
1164
 
        self.assertEquals([], list(c.items()))
1165
 
        self.assertEquals(None, c.get('hoi'))
1166
 
        self.assertEquals(0, len(c))
 
1162
        self.assertEqual({}, c.attrib)
 
1163
        self.assertEqual([], list(c.keys()))
 
1164
        self.assertEqual([], list(c.items()))
 
1165
        self.assertEqual(None, c.get('hoi'))
 
1166
        self.assertEqual(0, len(c))
1167
1167
        # should not iterate
1168
1168
        for i in c:
1169
1169
            pass
1176
1176
 
1177
1177
        a = Element('a')
1178
1178
        a.append(ProcessingInstruction('foo', 'some more text'))
1179
 
        self.assertEquals(a[0].tag, ProcessingInstruction)
 
1179
        self.assertEqual(a[0].tag, ProcessingInstruction)
1180
1180
        self.assertXML(_bytes("<a><?foo some more text?></a>"),
1181
1181
                       a)
1182
1182
 
1188
1188
 
1189
1189
        a = Element('a')
1190
1190
        a.append(ProcessingInstruction('foo', 'some more text'))
1191
 
        self.assertEquals(a[0].tag, ProcessingInstruction)
 
1191
        self.assertEqual(a[0].tag, ProcessingInstruction)
1192
1192
        self.assertXML(_bytes("<a><?foo some more text?></a>"),
1193
1193
                       a)
1194
1194
 
1195
1195
    def test_pi_nonsense(self):
1196
1196
        ProcessingInstruction = self.etree.ProcessingInstruction
1197
1197
        pi = ProcessingInstruction('foo')
1198
 
        self.assertEquals({}, pi.attrib)
1199
 
        self.assertEquals([], list(pi.keys()))
1200
 
        self.assertEquals([], list(pi.items()))
1201
 
        self.assertEquals(None, pi.get('hoi'))
1202
 
        self.assertEquals(0, len(pi))
 
1198
        self.assertEqual({}, pi.attrib)
 
1199
        self.assertEqual([], list(pi.keys()))
 
1200
        self.assertEqual([], list(pi.items()))
 
1201
        self.assertEqual(None, pi.get('hoi'))
 
1202
        self.assertEqual(0, len(pi))
1203
1203
        # should not iterate
1204
1204
        for i in pi:
1205
1205
            pass
1212
1212
        b = SubElement(a, 'b')
1213
1213
        c = Element('c')
1214
1214
        a[0] = c
1215
 
        self.assertEquals(
 
1215
        self.assertEqual(
1216
1216
            c,
1217
1217
            a[0])
1218
1218
        self.assertXML(_bytes('<a><c></c></a>'),
1281
1281
 
1282
1282
        a.tag = 'c'
1283
1283
 
1284
 
        self.assertEquals(
 
1284
        self.assertEqual(
1285
1285
            'c',
1286
1286
            a.tag)
1287
1287
 
1298
1298
        b1 = SubElement(a, '{a}b')
1299
1299
        b2 = SubElement(a, '{b}b')
1300
1300
 
1301
 
        self.assertEquals('{a}b',  b1.tag)
 
1301
        self.assertEqual('{a}b',  b1.tag)
1302
1302
 
1303
1303
        b1.tag = 'c'
1304
1304
 
1305
1305
        # can't use C14N here!
1306
 
        self.assertEquals('c', b1.tag)
1307
 
        self.assertEquals(_bytes('<c'), tostring(b1)[:2])
1308
 
        self.assert_(_bytes('<c') in tostring(a))
 
1306
        self.assertEqual('c', b1.tag)
 
1307
        self.assertEqual(_bytes('<c'), tostring(b1)[:2])
 
1308
        self.assertTrue(_bytes('<c') in tostring(a))
1309
1309
 
1310
1310
    def test_tag_reset_root_ns(self):
1311
1311
        Element = self.etree.Element
1318
1318
 
1319
1319
        a.tag = 'c'
1320
1320
 
1321
 
        self.assertEquals(
 
1321
        self.assertEqual(
1322
1322
            'c',
1323
1323
            a.tag)
1324
1324
 
1325
1325
        # can't use C14N here!
1326
 
        self.assertEquals('c',  a.tag)
1327
 
        self.assertEquals(_bytes('<c'), tostring(a)[:2])
 
1326
        self.assertEqual('c',  a.tag)
 
1327
        self.assertEqual(_bytes('<c'), tostring(a)[:2])
1328
1328
 
1329
1329
    def test_tag_str_subclass(self):
1330
1330
        Element = self.etree.Element
1443
1443
 
1444
1444
        a[:] = []
1445
1445
 
1446
 
        self.assertEquals("B2", b.tail)
1447
 
        self.assertEquals("C2", c.tail)
 
1446
        self.assertEqual("B2", b.tail)
 
1447
        self.assertEqual("C2", c.tail)
1448
1448
 
1449
1449
    def test_merge_namespaced_subtree_as_slice(self):
1450
1450
        XML = self.etree.XML
1456
1456
        result = self.etree.tostring(root)
1457
1457
        foo = self.etree.fromstring(result)
1458
1458
 
1459
 
        self.assertEquals('puh', foo[0].tag)
1460
 
        self.assertEquals('{http://huhu}bump1', foo[0][0].tag)
1461
 
        self.assertEquals('{http://huhu}bump2', foo[0][1].tag)
 
1459
        self.assertEqual('puh', foo[0].tag)
 
1460
        self.assertEqual('{http://huhu}bump1', foo[0][0].tag)
 
1461
        self.assertEqual('{http://huhu}bump2', foo[0][1].tag)
1462
1462
 
1463
1463
    def test_delitem_tail(self):
1464
1464
        ElementTree = self.etree.ElementTree
1478
1478
        a.tail = 'bar'
1479
1479
        a.set('hoi', 'dag')
1480
1480
        a.clear()
1481
 
        self.assertEquals(None, a.text)
1482
 
        self.assertEquals(None, a.tail)
1483
 
        self.assertEquals(None, a.get('hoi'))
1484
 
        self.assertEquals('a', a.tag)
 
1481
        self.assertEqual(None, a.text)
 
1482
        self.assertEqual(None, a.tail)
 
1483
        self.assertEqual(None, a.get('hoi'))
 
1484
        self.assertEqual('a', a.tag)
1485
1485
 
1486
1486
    def test_clear_sub(self):
1487
1487
        Element = self.etree.Element
1494
1494
        b = SubElement(a, 'b')
1495
1495
        c = SubElement(b, 'c')
1496
1496
        a.clear()
1497
 
        self.assertEquals(None, a.text)
1498
 
        self.assertEquals(None, a.tail)
1499
 
        self.assertEquals(None, a.get('hoi'))
1500
 
        self.assertEquals('a', a.tag)
1501
 
        self.assertEquals(0, len(a))
 
1497
        self.assertEqual(None, a.text)
 
1498
        self.assertEqual(None, a.tail)
 
1499
        self.assertEqual(None, a.get('hoi'))
 
1500
        self.assertEqual('a', a.tag)
 
1501
        self.assertEqual(0, len(a))
1502
1502
        self.assertXML(_bytes('<a></a>'),
1503
1503
                       a)
1504
1504
        self.assertXML(_bytes('<b><c></c></b>'),
1524
1524
        d = Element('d')
1525
1525
        a.insert(0, d)
1526
1526
 
1527
 
        self.assertEquals(
 
1527
        self.assertEqual(
1528
1528
            d,
1529
1529
            a[0])
1530
1530
 
1534
1534
 
1535
1535
        e = Element('e')
1536
1536
        a.insert(2, e)
1537
 
        self.assertEquals(
 
1537
        self.assertEqual(
1538
1538
            e,
1539
1539
            a[2])
1540
1540
        self.assertXML(
1550
1550
        c = Element('c')
1551
1551
 
1552
1552
        a.insert(2, c)
1553
 
        self.assertEquals(
 
1553
        self.assertEqual(
1554
1554
            c,
1555
1555
            a[1])
1556
1556
        self.assertXML(
1567
1567
 
1568
1568
        d = Element('d')
1569
1569
        a.insert(-1, d)
1570
 
        self.assertEquals(
 
1570
        self.assertEqual(
1571
1571
            d,
1572
1572
            a[-2])
1573
1573
        self.assertXML(
1598
1598
        c = SubElement(a, 'c')
1599
1599
 
1600
1600
        a.remove(b)
1601
 
        self.assertEquals(
 
1601
        self.assertEqual(
1602
1602
            c,
1603
1603
            a[0])
1604
1604
        self.assertXML(
1643
1643
        self.assertXML(
1644
1644
            _bytes('<a></a>'),
1645
1645
            a)
1646
 
        self.assertEquals('b2', b.tail)
 
1646
        self.assertEqual('b2', b.tail)
1647
1647
 
1648
1648
    def _test_getchildren(self):
1649
1649
        Element = self.etree.Element
1657
1657
        self.assertXML(
1658
1658
            _bytes('<a><b><d></d></b><c><e></e></c></a>'),
1659
1659
            a)
1660
 
        self.assertEquals(
 
1660
        self.assertEqual(
1661
1661
            [b, c],
1662
1662
            a.getchildren())
1663
 
        self.assertEquals(
 
1663
        self.assertEqual(
1664
1664
            [d],
1665
1665
            b.getchildren())
1666
 
        self.assertEquals(
 
1666
        self.assertEqual(
1667
1667
            [],
1668
1668
            d.getchildren())
1669
1669
 
1687
1687
        d = SubElement(b, 'd')
1688
1688
        e = SubElement(c, 'e')
1689
1689
 
1690
 
        self.assertEquals(
 
1690
        self.assertEqual(
1691
1691
            [a, b, d, c, e],
1692
1692
            list(a.iter()))
1693
 
        self.assertEquals(
 
1693
        self.assertEqual(
1694
1694
            [d],
1695
1695
            list(d.iter()))
1696
1696
 
1704
1704
        d = SubElement(b, 'd')
1705
1705
        e = SubElement(c, 'e')
1706
1706
 
1707
 
        self.assertEquals(
 
1707
        self.assertEqual(
1708
1708
            [a, b, d, c, e],
1709
1709
            list(a.getiterator()))
1710
 
        self.assertEquals(
 
1710
        self.assertEqual(
1711
1711
            [d],
1712
1712
            list(d.getiterator()))
1713
1713
 
1721
1721
        d = SubElement(b, 'd')
1722
1722
        e = SubElement(c, 'e')
1723
1723
 
1724
 
        self.assertEquals(
 
1724
        self.assertEqual(
1725
1725
            [],
1726
1726
            list(a.getiterator('none')))
1727
 
        self.assertEquals(
 
1727
        self.assertEqual(
1728
1728
            [],
1729
1729
            list(e.getiterator('none')))
1730
 
        self.assertEquals(
 
1730
        self.assertEqual(
1731
1731
            [e],
1732
1732
            list(e.getiterator()))
1733
1733
 
1741
1741
        d = SubElement(b, 'd')
1742
1742
        e = SubElement(c, 'e')
1743
1743
 
1744
 
        self.assertEquals(
 
1744
        self.assertEqual(
1745
1745
            [a],
1746
1746
            list(a.getiterator('a')))
1747
1747
        a2 = SubElement(e, 'a')
1748
 
        self.assertEquals(
 
1748
        self.assertEqual(
1749
1749
            [a, a2],
1750
1750
            list(a.getiterator('a')))
1751
 
        self.assertEquals(
 
1751
        self.assertEqual(
1752
1752
            [a2],
1753
1753
            list(c.getiterator('a')))
1754
1754
 
1762
1762
        d = SubElement(b, 'd')
1763
1763
        e = SubElement(c, 'e')
1764
1764
 
1765
 
        self.assertEquals(
 
1765
        self.assertEqual(
1766
1766
            [a, b, d, c, e],
1767
1767
            list(a.getiterator('*')))
1768
1768
 
1776
1776
        comment_b = Comment("TEST-b")
1777
1777
        b.append(comment_b)
1778
1778
 
1779
 
        self.assertEquals(
 
1779
        self.assertEqual(
1780
1780
            [comment_b],
1781
1781
            list(a.getiterator(Comment)))
1782
1782
 
1783
1783
        comment_a = Comment("TEST-a")
1784
1784
        a.append(comment_a)
1785
1785
 
1786
 
        self.assertEquals(
 
1786
        self.assertEqual(
1787
1787
            [comment_b, comment_a],
1788
1788
            list(a.getiterator(Comment)))
1789
1789
 
1790
 
        self.assertEquals(
 
1790
        self.assertEqual(
1791
1791
            [comment_b],
1792
1792
            list(b.getiterator(Comment)))
1793
1793
 
1801
1801
        pi_b = PI("TEST-b")
1802
1802
        b.append(pi_b)
1803
1803
 
1804
 
        self.assertEquals(
 
1804
        self.assertEqual(
1805
1805
            [pi_b],
1806
1806
            list(a.getiterator(PI)))
1807
1807
 
1808
1808
        pi_a = PI("TEST-a")
1809
1809
        a.append(pi_a)
1810
1810
 
1811
 
        self.assertEquals(
 
1811
        self.assertEqual(
1812
1812
            [pi_b, pi_a],
1813
1813
            list(a.getiterator(PI)))
1814
1814
 
1815
 
        self.assertEquals(
 
1815
        self.assertEqual(
1816
1816
            [pi_b],
1817
1817
            list(b.getiterator(PI)))
1818
1818
 
1835
1835
        e.text = 'e'
1836
1836
        e.tail = 'e1'
1837
1837
 
1838
 
        self.assertEquals(
 
1838
        self.assertEqual(
1839
1839
            [a, b, d, c, e],
1840
1840
            list(a.getiterator()))
1841
 
        #self.assertEquals(
 
1841
        #self.assertEqual(
1842
1842
        #    [d],
1843
1843
        #    list(d.getiterator()))
1844
1844
 
1861
1861
        e.text = 'e'
1862
1862
        e.tail = 'e1'
1863
1863
 
1864
 
        self.assertEquals(
 
1864
        self.assertEqual(
1865
1865
            [a],
1866
1866
            list(a.getiterator('a')))
1867
1867
        a2 = SubElement(e, 'a')
1868
 
        self.assertEquals(
 
1868
        self.assertEqual(
1869
1869
            [a, a2],
1870
1870
            list(a.getiterator('a')))   
1871
 
        self.assertEquals(
 
1871
        self.assertEqual(
1872
1872
            [a2],
1873
1873
            list(e.getiterator('a')))
1874
1874
 
1881
1881
        c = SubElement(a, 'c')
1882
1882
        d = SubElement(a, 'd')
1883
1883
 
1884
 
        self.assertEquals(
 
1884
        self.assertEqual(
1885
1885
            [b, c],
1886
1886
            a[0:2])
1887
 
        self.assertEquals(
 
1887
        self.assertEqual(
1888
1888
            [b, c, d],
1889
1889
            a[:])
1890
 
        self.assertEquals(
 
1890
        self.assertEqual(
1891
1891
            [b, c, d],
1892
1892
            a[:10])
1893
 
        self.assertEquals(
 
1893
        self.assertEqual(
1894
1894
            [b],
1895
1895
            a[0:1])
1896
 
        self.assertEquals(
 
1896
        self.assertEqual(
1897
1897
            [],
1898
1898
            a[10:12])
1899
1899
 
1906
1906
        c = SubElement(a, 'c')
1907
1907
        d = SubElement(a, 'd')
1908
1908
 
1909
 
        self.assertEquals(
 
1909
        self.assertEqual(
1910
1910
            [d],
1911
1911
            a[-1:])
1912
 
        self.assertEquals(
 
1912
        self.assertEqual(
1913
1913
            [c, d],
1914
1914
            a[-2:])
1915
 
        self.assertEquals(
 
1915
        self.assertEqual(
1916
1916
            [c],
1917
1917
            a[-2:-1])
1918
 
        self.assertEquals(
 
1918
        self.assertEqual(
1919
1919
            [b, c],
1920
1920
            a[-3:-1])
1921
 
        self.assertEquals(
 
1921
        self.assertEqual(
1922
1922
            [b, c],
1923
1923
            a[-3:2])
1924
1924
 
1932
1932
        d = SubElement(a, 'd')
1933
1933
        e = SubElement(a, 'e')
1934
1934
 
1935
 
        self.assertEquals(
 
1935
        self.assertEqual(
1936
1936
            [e,d,c,b],
1937
1937
            a[::-1])
1938
 
        self.assertEquals(
 
1938
        self.assertEqual(
1939
1939
            [b,d],
1940
1940
            a[::2])
1941
 
        self.assertEquals(
 
1941
        self.assertEqual(
1942
1942
            [e,c],
1943
1943
            a[::-2])
1944
 
        self.assertEquals(
 
1944
        self.assertEqual(
1945
1945
            [d,c],
1946
1946
            a[-2:0:-1])
1947
 
        self.assertEquals(
 
1947
        self.assertEqual(
1948
1948
            [e],
1949
1949
            a[:1:-2])
1950
1950
 
1956
1956
        a = doc.getroot()
1957
1957
        b = a[0]
1958
1958
        c = a[1]
1959
 
        self.assertEquals(
 
1959
        self.assertEqual(
1960
1960
            [b, c],
1961
1961
            a[:])
1962
 
        self.assertEquals(
 
1962
        self.assertEqual(
1963
1963
            [b],
1964
1964
            a[0:1])
1965
 
        self.assertEquals(
 
1965
        self.assertEqual(
1966
1966
            [c],
1967
1967
            a[1:])
1968
1968
 
1976
1976
        foo = Comment('foo')
1977
1977
        a.append(foo)
1978
1978
        c = SubElement(a, 'c')
1979
 
        self.assertEquals(
 
1979
        self.assertEqual(
1980
1980
            [b, foo, c],
1981
1981
            a[:])
1982
 
        self.assertEquals(
 
1982
        self.assertEqual(
1983
1983
            foo,
1984
1984
            a[1])
1985
1985
        a[1] = new = Element('new')
1986
 
        self.assertEquals(
 
1986
        self.assertEqual(
1987
1987
            new,
1988
1988
            a[1])
1989
1989
        self.assertXML(
2001
2001
        e = SubElement(a, 'e')
2002
2002
 
2003
2003
        del a[1:3]
2004
 
        self.assertEquals(
 
2004
        self.assertEqual(
2005
2005
            [b, e],
2006
2006
            list(a))
2007
2007
 
2016
2016
        e = SubElement(a, 'e')
2017
2017
 
2018
2018
        del a[1:-1]
2019
 
        self.assertEquals(
 
2019
        self.assertEqual(
2020
2020
            [b, e],
2021
2021
            list(a))
2022
2022
 
2031
2031
        e = SubElement(a, 'e')
2032
2032
 
2033
2033
        del a[-3:-1]
2034
 
        self.assertEquals(
 
2034
        self.assertEqual(
2035
2035
            [b, e],
2036
2036
            list(a))
2037
2037
 
2046
2046
        e = SubElement(a, 'e')
2047
2047
 
2048
2048
        del a[1::2]
2049
 
        self.assertEquals(
 
2049
        self.assertEqual(
2050
2050
            [b, d],
2051
2051
            list(a))
2052
2052
 
2061
2061
        e = SubElement(a, 'e')
2062
2062
 
2063
2063
        del a[::-1]
2064
 
        self.assertEquals(
 
2064
        self.assertEqual(
2065
2065
            [],
2066
2066
            list(a))
2067
2067
 
2076
2076
        e = SubElement(a, 'e')
2077
2077
 
2078
2078
        del a[::-2]
2079
 
        self.assertEquals(
 
2079
        self.assertEqual(
2080
2080
            [b, d],
2081
2081
            list(a))
2082
2082
 
2097
2097
 
2098
2098
        del a[:]
2099
2099
 
2100
 
        self.assertEquals("B2", b.tail)
2101
 
        self.assertEquals("C2", c.tail)
 
2100
        self.assertEqual("B2", b.tail)
 
2101
        self.assertEqual("C2", c.tail)
2102
2102
 
2103
2103
    def test_delslice_memory(self):
2104
2104
        # this could trigger a crash
2109
2109
        c = SubElement(b, 'c')
2110
2110
        del b # no more reference to b
2111
2111
        del a[:]
2112
 
        self.assertEquals('c', c.tag)
 
2112
        self.assertEqual('c', c.tag)
2113
2113
        
2114
2114
    def test_setslice(self):
2115
2115
        Element = self.etree.Element
2126
2126
 
2127
2127
        s = [e, f, g]
2128
2128
        a[1:2] = s
2129
 
        self.assertEquals(
 
2129
        self.assertEqual(
2130
2130
            [b, e, f, g, d],
2131
2131
            list(a))
2132
2132
 
2144
2144
 
2145
2145
        s = [e, f, g]
2146
2146
        a[:] = s
2147
 
        self.assertEquals(
 
2147
        self.assertEqual(
2148
2148
            [e, f, g],
2149
2149
            list(a))
2150
2150
 
2160
2160
 
2161
2161
        s = [e, f, g]
2162
2162
        a[:] = s
2163
 
        self.assertEquals(
 
2163
        self.assertEqual(
2164
2164
            [e, f, g],
2165
2165
            list(a))
2166
2166
 
2175
2175
 
2176
2176
        s = [b, c, d]
2177
2177
        a[:] = s
2178
 
        self.assertEquals(
 
2178
        self.assertEqual(
2179
2179
            [b, c, d],
2180
2180
            list(a))
2181
2181
        
2190
2190
 
2191
2191
        s = [d, c, b]
2192
2192
        a[:] = s
2193
 
        self.assertEquals(
 
2193
        self.assertEqual(
2194
2194
            [d, c, b],
2195
2195
            list(a))
2196
2196
 
2205
2205
 
2206
2206
        s = [d, c, b]
2207
2207
        a[:] = s
2208
 
        self.assertEquals(
 
2208
        self.assertEqual(
2209
2209
            [d, c, b],
2210
2210
            list(a))
2211
 
        self.assertEquals(
 
2211
        self.assertEqual(
2212
2212
            ['{ns}d', '{ns}c', '{ns}b'],
2213
2213
            [ child.tag for child in a ])
2214
2214
 
2215
 
        self.assertEquals(
 
2215
        self.assertEqual(
2216
2216
            [['{ns3}a3'], ['{ns2}a2'], ['{ns1}a1']],
2217
2217
            [ list(child.attrib.keys()) for child in a ])
2218
2218
 
2227
2227
 
2228
2228
        s = [d, c, b]
2229
2229
        a[:] = s
2230
 
        self.assertEquals(
 
2230
        self.assertEqual(
2231
2231
            [d, c, b],
2232
2232
            list(a))
2233
 
        self.assertEquals(
 
2233
        self.assertEqual(
2234
2234
            ['{ns3}d', '{ns2}c', '{ns1}b'],
2235
2235
            [ child.tag for child in a ])
2236
2236
 
2237
 
        self.assertEquals(
 
2237
        self.assertEqual(
2238
2238
            [['{ns}a3'], ['{ns}a2'], ['{ns}a1']],
2239
2239
            [ list(child.attrib.keys()) for child in a ])
2240
2240
 
2253
2253
 
2254
2254
        s = [e, f]
2255
2255
        a[99:] = s
2256
 
        self.assertEquals(
 
2256
        self.assertEqual(
2257
2257
            [a, b, e, f],
2258
2258
            list(a))
2259
2259
 
2260
2260
        s = [g, h]
2261
2261
        a[:0] = s
2262
 
        self.assertEquals(
 
2262
        self.assertEqual(
2263
2263
            [g, h, a, b, e, f],
2264
2264
            list(a))
2265
2265
 
2276
2276
 
2277
2277
        s = [e]
2278
2278
        a[0:1] = s
2279
 
        self.assertEquals(
 
2279
        self.assertEqual(
2280
2280
            [e, c],
2281
2281
            list(a))
2282
2282
 
2283
2283
        s = [f]
2284
2284
        a[1:2] = s
2285
 
        self.assertEquals(
 
2285
        self.assertEqual(
2286
2286
            [e, f],
2287
2287
            list(a))
2288
2288
 
2316
2316
        y = Element('y')
2317
2317
 
2318
2318
        a[1:-1] = [x, y]
2319
 
        self.assertEquals(
 
2319
        self.assertEqual(
2320
2320
            [b, x, y, d],
2321
2321
            list(a))
2322
2322
 
2333
2333
        y = Element('y')
2334
2334
 
2335
2335
        a[1:-2] = [x, y]
2336
 
        self.assertEquals(
 
2336
        self.assertEqual(
2337
2337
            [b, x, y, c, d],
2338
2338
            list(a))
2339
2339
 
2352
2352
 
2353
2353
        s = [e, f, g]
2354
2354
        a[3:] = s
2355
 
        self.assertEquals(
 
2355
        self.assertEqual(
2356
2356
            [b, c, d, e, f, g],
2357
2357
            list(a))
2358
2358
        
2365
2365
        c = Element('c')
2366
2366
 
2367
2367
        a[:] = [b, c]
2368
 
        self.assertEquals(
 
2368
        self.assertEqual(
2369
2369
            [b, c],
2370
2370
            list(a))
2371
2371
 
2376
2376
        a = Element('a')
2377
2377
        a.tail = 'A2'
2378
2378
        t = ElementTree(element=a)
2379
 
        self.assertEquals('A2',
 
2379
        self.assertEqual('A2',
2380
2380
                          a.tail)
2381
2381
 
2382
2382
    def test_elementtree_getiterator(self):
2391
2391
        e = SubElement(c, 'e')
2392
2392
        t = ElementTree(element=a)
2393
2393
        
2394
 
        self.assertEquals(
 
2394
        self.assertEqual(
2395
2395
            [a, b, d, c, e],
2396
2396
            list(t.getiterator()))
2397
2397
 
2406
2406
        e = SubElement(c, 'e')
2407
2407
        t = ElementTree(element=a)
2408
2408
        
2409
 
        self.assertEquals(
 
2409
        self.assertEqual(
2410
2410
            [a],
2411
2411
            list(t.getiterator('a')))
2412
2412
        a2 = SubElement(e, 'a')
2413
 
        self.assertEquals(
 
2413
        self.assertEqual(
2414
2414
            [a, a2],
2415
2415
            list(t.getiterator('a')))
2416
2416
 
2420
2420
        f = BytesIO('<x:a xmlns:x="%s"><x:b></x:b></x:a>' % ns)
2421
2421
        t = ElementTree(file=f)
2422
2422
        a = t.getroot()
2423
 
        self.assertEquals('{%s}a' % ns,
 
2423
        self.assertEqual('{%s}a' % ns,
2424
2424
                          a.tag)
2425
 
        self.assertEquals('{%s}b' % ns,
 
2425
        self.assertEqual('{%s}b' % ns,
2426
2426
                          a[0].tag)
2427
2427
 
2428
2428
    def test_ns_access2(self):
2432
2432
        f = BytesIO('<x:a xmlns:x="%s" xmlns:y="%s"><x:b></x:b><y:b></y:b></x:a>' % (ns, ns2))
2433
2433
        t = ElementTree(file=f)
2434
2434
        a = t.getroot()
2435
 
        self.assertEquals('{%s}a' % ns,
 
2435
        self.assertEqual('{%s}a' % ns,
2436
2436
                          a.tag)
2437
 
        self.assertEquals('{%s}b' % ns,
 
2437
        self.assertEqual('{%s}b' % ns,
2438
2438
                          a[0].tag)
2439
 
        self.assertEquals('{%s}b' % ns2,
 
2439
        self.assertEqual('{%s}b' % ns2,
2440
2440
                          a[1].tag)
2441
2441
 
2442
2442
    def test_ns_setting(self):
2447
2447
        a = Element('{%s}a' % ns)
2448
2448
        b = SubElement(a, '{%s}b' % ns2)
2449
2449
        c = SubElement(a, '{%s}c' % ns)
2450
 
        self.assertEquals('{%s}a' % ns,
 
2450
        self.assertEqual('{%s}a' % ns,
2451
2451
                          a.tag)
2452
 
        self.assertEquals('{%s}b' % ns2,
 
2452
        self.assertEqual('{%s}b' % ns2,
2453
2453
                          b.tag)
2454
 
        self.assertEquals('{%s}c' % ns,
 
2454
        self.assertEqual('{%s}c' % ns,
2455
2455
                          c.tag)
2456
 
        self.assertEquals('{%s}a' % ns,
 
2456
        self.assertEqual('{%s}a' % ns,
2457
2457
                          a.tag)
2458
 
        self.assertEquals('{%s}b' % ns2,
 
2458
        self.assertEqual('{%s}b' % ns2,
2459
2459
                          b.tag)
2460
 
        self.assertEquals('{%s}c' % ns,
 
2460
        self.assertEqual('{%s}c' % ns,
2461
2461
                          c.tag)
2462
2462
 
2463
2463
    def test_ns_tag_parse(self):
2471
2471
        t = ElementTree(file=f)
2472
2472
 
2473
2473
        a = t.getroot()
2474
 
        self.assertEquals('{%s}a' % ns,
 
2474
        self.assertEqual('{%s}a' % ns,
2475
2475
                          a.tag)
2476
 
        self.assertEquals('{%s}b' % ns2,
 
2476
        self.assertEqual('{%s}b' % ns2,
2477
2477
                          a[0].tag)
2478
 
        self.assertEquals('{%s}b' % ns,
 
2478
        self.assertEqual('{%s}b' % ns,
2479
2479
                          a[1].tag)
2480
2480
 
2481
2481
    def test_ns_attr(self):
2485
2485
        a = Element('a')
2486
2486
        a.set('{%s}foo' % ns, 'Foo')
2487
2487
        a.set('{%s}bar' % ns2, 'Bar')
2488
 
        self.assertEquals(
 
2488
        self.assertEqual(
2489
2489
            'Foo',
2490
2490
            a.get('{%s}foo' % ns))
2491
 
        self.assertEquals(
 
2491
        self.assertEqual(
2492
2492
            'Bar',
2493
2493
            a.get('{%s}bar' % ns2))
2494
2494
        try:
2511
2511
        # removing the originating document could cause a crash/error before
2512
2512
        # as namespace is not moved along with it
2513
2513
        del one, baz
2514
 
        self.assertEquals('{http://a.b.c}baz', two[0].tag)
 
2514
        self.assertEqual('{http://a.b.c}baz', two[0].tag)
2515
2515
 
2516
2516
    def test_ns_decl_tostring(self):
2517
2517
        tostring = self.etree.tostring
2521
2521
 
2522
2522
        nsdecl = re.findall(_bytes("xmlns(?::[a-z0-9]+)?=[\"']([^\"']+)[\"']"),
2523
2523
                            tostring(baz))
2524
 
        self.assertEquals([_bytes("http://a.b.c")], nsdecl)
 
2524
        self.assertEqual([_bytes("http://a.b.c")], nsdecl)
2525
2525
 
2526
2526
    def test_ns_decl_tostring_default(self):
2527
2527
        tostring = self.etree.tostring
2531
2531
 
2532
2532
        nsdecl = re.findall(_bytes("xmlns(?::[a-z0-9]+)?=[\"']([^\"']+)[\"']"),
2533
2533
                            tostring(baz))
2534
 
        self.assertEquals([_bytes("http://a.b.c")], nsdecl)
 
2534
        self.assertEqual([_bytes("http://a.b.c")], nsdecl)
2535
2535
        
2536
2536
    def test_ns_decl_tostring_root(self):
2537
2537
        tostring = self.etree.tostring
2542
2542
        nsdecl = re.findall(_bytes("xmlns(?::[a-z0-9]+)?=[\"']([^\"']+)[\"']"),
2543
2543
                            tostring(baz))
2544
2544
 
2545
 
        self.assertEquals([_bytes("http://a.b.c")], nsdecl)
 
2545
        self.assertEqual([_bytes("http://a.b.c")], nsdecl)
2546
2546
        
2547
2547
    def test_ns_decl_tostring_element(self):
2548
2548
        Element = self.etree.Element
2555
2555
        nsdecl = re.findall(_bytes("xmlns(?::[a-z0-9]+)?=[\"']([^\"']+)[\"']"),
2556
2556
                            self.etree.tostring(baz))
2557
2557
 
2558
 
        self.assertEquals([_bytes("http://a.b.c")], nsdecl)
 
2558
        self.assertEqual([_bytes("http://a.b.c")], nsdecl)
2559
2559
 
2560
2560
    def test_attribute_xmlns_move(self):
2561
2561
        Element = self.etree.Element
2564
2564
 
2565
2565
        subelement = Element('subelement',
2566
2566
                             {"{http://www.w3.org/XML/1998/namespace}id": "foo"})
2567
 
        self.assertEquals(1, len(subelement.attrib))
2568
 
        self.assertEquals(
 
2567
        self.assertEqual(1, len(subelement.attrib))
 
2568
        self.assertEqual(
2569
2569
            "foo",
2570
2570
            subelement.get("{http://www.w3.org/XML/1998/namespace}id"))
2571
2571
 
2572
2572
        root.append(subelement)
2573
 
        self.assertEquals(1, len(subelement.attrib))
2574
 
        self.assertEquals(
 
2573
        self.assertEqual(1, len(subelement.attrib))
 
2574
        self.assertEqual(
2575
2575
            list({"{http://www.w3.org/XML/1998/namespace}id" : "foo"}.items()),
2576
2576
            list(subelement.attrib.items()))
2577
 
        self.assertEquals(
 
2577
        self.assertEqual(
2578
2578
            "foo",
2579
2579
            subelement.get("{http://www.w3.org/XML/1998/namespace}id"))
2580
2580
 
2588
2588
        baz = one.getroot()[0][0]
2589
2589
 
2590
2590
        parsed = parse(BytesIO( tostring(baz) )).getroot()
2591
 
        self.assertEquals('{%s}baz' % ns_href, parsed.tag)
 
2591
        self.assertEqual('{%s}baz' % ns_href, parsed.tag)
2592
2592
 
2593
2593
    def test_attribute_namespace_roundtrip(self):
2594
2594
        fromstring = self.etree.fromstring
2598
2598
        xml = _bytes('<root xmlns="%s" xmlns:x="%s"><el x:a="test" /></root>' % (
2599
2599
                ns_href,ns_href))
2600
2600
        root = fromstring(xml)
2601
 
        self.assertEquals('test', root[0].get('{%s}a' % ns_href))
 
2601
        self.assertEqual('test', root[0].get('{%s}a' % ns_href))
2602
2602
 
2603
2603
        xml2 = tostring(root)
2604
2604
        self.assertTrue(_bytes(':a=') in xml2, xml2)
2605
2605
 
2606
2606
        root2 = fromstring(xml2)
2607
 
        self.assertEquals('test', root2[0].get('{%s}a' % ns_href))
 
2607
        self.assertEqual('test', root2[0].get('{%s}a' % ns_href))
2608
2608
 
2609
2609
    def test_attribute_namespace_roundtrip_replaced(self):
2610
2610
        fromstring = self.etree.fromstring
2614
2614
        xml = _bytes('<root xmlns="%s" xmlns:x="%s"><el x:a="test" /></root>' % (
2615
2615
                ns_href,ns_href))
2616
2616
        root = fromstring(xml)
2617
 
        self.assertEquals('test', root[0].get('{%s}a' % ns_href))
 
2617
        self.assertEqual('test', root[0].get('{%s}a' % ns_href))
2618
2618
 
2619
2619
        root[0].set('{%s}a' % ns_href, 'TEST')
2620
2620
 
2622
2622
        self.assertTrue(_bytes(':a=') in xml2, xml2)
2623
2623
 
2624
2624
        root2 = fromstring(xml2)
2625
 
        self.assertEquals('TEST', root2[0].get('{%s}a' % ns_href))
 
2625
        self.assertEqual('TEST', root2[0].get('{%s}a' % ns_href))
2626
2626
 
2627
2627
    required_versions_ET['test_register_namespace'] = (1,3)
2628
2628
    def test_register_namespace(self):
2632
2632
        namespace = 'http://seriously.unknown/namespace/URI'
2633
2633
 
2634
2634
        el = Element('{%s}test' % namespace)
2635
 
        self.assertEquals(_bytes('<ns0:test xmlns:ns0="%s"></ns0:test>' % namespace),
 
2635
        self.assertEqual(_bytes('<ns0:test xmlns:ns0="%s"></ns0:test>' % namespace),
2636
2636
            self._writeElement(el))
2637
2637
 
2638
2638
        self.etree.register_namespace(prefix, namespace)
2639
2639
        el = Element('{%s}test' % namespace)
2640
 
        self.assertEquals(_bytes('<%s:test xmlns:%s="%s"></%s:test>' % (
 
2640
        self.assertEqual(_bytes('<%s:test xmlns:%s="%s"></%s:test>' % (
2641
2641
            prefix, prefix, namespace, prefix)),
2642
2642
            self._writeElement(el))
2643
2643
 
2652
2652
        b = SubElement(a, 'b')
2653
2653
        c = SubElement(a, 'c')
2654
2654
        
2655
 
        self.assertEquals(_bytes('<a><b></b><c></c></a>'),
 
2655
        self.assertEqual(_bytes('<a><b></b><c></c></a>'),
2656
2656
                          canonicalize(tostring(a)))
2657
2657
 
2658
2658
    def test_tostring_element(self):
2664
2664
        b = SubElement(a, 'b')
2665
2665
        c = SubElement(a, 'c')
2666
2666
        d = SubElement(c, 'd')
2667
 
        self.assertEquals(_bytes('<b></b>'),
 
2667
        self.assertEqual(_bytes('<b></b>'),
2668
2668
                          canonicalize(tostring(b)))
2669
 
        self.assertEquals(_bytes('<c><d></d></c>'),
 
2669
        self.assertEqual(_bytes('<c><d></d></c>'),
2670
2670
                          canonicalize(tostring(c)))
2671
2671
        
2672
2672
    def test_tostring_element_tail(self):
2680
2680
        d = SubElement(c, 'd')
2681
2681
        b.tail = 'Foo'
2682
2682
 
2683
 
        self.assert_(tostring(b) == _bytes('<b/>Foo') or
 
2683
        self.assertTrue(tostring(b) == _bytes('<b/>Foo') or
2684
2684
                     tostring(b) == _bytes('<b />Foo'))
2685
2685
 
2686
2686
    required_versions_ET['test_tostring_method_html'] = (1,3)
2695
2695
        p.text = "html"
2696
2696
        SubElement(p, 'br').tail = "test"
2697
2697
 
2698
 
        self.assertEquals(_bytes('<html><body><p>html<br>test</p></body></html>'),
 
2698
        self.assertEqual(_bytes('<html><body><p>html<br>test</p></body></html>'),
2699
2699
                          tostring(html, method="html"))
2700
2700
 
2701
2701
    required_versions_ET['test_tostring_method_text'] = (1,3)
2713
2713
        c = SubElement(a, 'c')
2714
2714
        c.text = "C"
2715
2715
        
2716
 
        self.assertEquals(_bytes('ABTAILCtail'),
 
2716
        self.assertEqual(_bytes('ABTAILCtail'),
2717
2717
                          tostring(a, method="text"))
2718
2718
 
2719
2719
    def test_iterparse(self):
2721
2721
        f = BytesIO('<a><b></b><c/></a>')
2722
2722
 
2723
2723
        iterator = iterparse(f)
2724
 
        self.assertEquals(None,
 
2724
        self.assertEqual(None,
2725
2725
                          iterator.root)
2726
2726
        events = list(iterator)
2727
2727
        root = iterator.root
2728
 
        self.assertEquals(
 
2728
        self.assertEqual(
2729
2729
            [('end', root[0]), ('end', root[1]), ('end', root)],
2730
2730
            events)
2731
2731
 
2732
2732
    def test_iterparse_file(self):
2733
2733
        iterparse = self.etree.iterparse
2734
2734
        iterator = iterparse(fileInTestDir("test.xml"))
2735
 
        self.assertEquals(None,
 
2735
        self.assertEqual(None,
2736
2736
                          iterator.root)
2737
2737
        events = list(iterator)
2738
2738
        root = iterator.root
2739
 
        self.assertEquals(
 
2739
        self.assertEqual(
2740
2740
            [('end', root[0]), ('end', root)],
2741
2741
            events)
2742
2742
 
2747
2747
        iterator = iterparse(f, events=('start',))
2748
2748
        events = list(iterator)
2749
2749
        root = iterator.root
2750
 
        self.assertEquals(
 
2750
        self.assertEqual(
2751
2751
            [('start', root), ('start', root[0]), ('start', root[1])],
2752
2752
            events)
2753
2753
 
2758
2758
        iterator = iterparse(f, events=('start','end'))
2759
2759
        events = list(iterator)
2760
2760
        root = iterator.root
2761
 
        self.assertEquals(
 
2761
        self.assertEqual(
2762
2762
            [('start', root), ('start', root[0]), ('end', root[0]),
2763
2763
             ('start', root[1]), ('end', root[1]), ('end', root)],
2764
2764
            events)
2772
2772
            elem.clear()
2773
2773
 
2774
2774
        root = iterator.root
2775
 
        self.assertEquals(0,
 
2775
        self.assertEqual(0,
2776
2776
                          len(root))
2777
2777
 
2778
2778
    def test_iterparse_large(self):
2784
2784
        for key in iterparse(f):
2785
2785
            event, element = key
2786
2786
            i += 1
2787
 
        self.assertEquals(i, CHILD_COUNT + 1)
 
2787
        self.assertEqual(i, CHILD_COUNT + 1)
2788
2788
 
2789
2789
    def test_iterparse_attrib_ns(self):
2790
2790
        iterparse = self.etree.iterparse
2799
2799
                if elem.tag != '{http://ns1/}a':
2800
2800
                    elem.set(attr_name, 'value')
2801
2801
 
2802
 
        self.assertEquals(
 
2802
        self.assertEqual(
2803
2803
            ['start-ns', 'start', 'start', 'start-ns', 'start',
2804
2804
             'end', 'end-ns', 'end', 'end', 'end-ns'],
2805
2805
            events)
2806
2806
 
2807
2807
        root = iterator.root
2808
 
        self.assertEquals(
 
2808
        self.assertEqual(
2809
2809
            None,
2810
2810
            root.get(attr_name))
2811
 
        self.assertEquals(
 
2811
        self.assertEqual(
2812
2812
            'value',
2813
2813
            root[0].get(attr_name))
2814
2814
 
2819
2819
        counts = []
2820
2820
        for event, elem in iterparse(f):
2821
2821
            counts.append(len(list(elem.getiterator())))
2822
 
        self.assertEquals(
 
2822
        self.assertEqual(
2823
2823
            [1,2,1,4],
2824
2824
            counts)
2825
2825
 
2832
2832
        root = etree.Element('new_root', {})
2833
2833
        root[:] = node[:]
2834
2834
 
2835
 
        self.assertEquals(
 
2835
        self.assertEqual(
2836
2836
            ['b', 'c'],
2837
2837
            [ el.tag for el in root ])
2838
2838
 
2842
2842
        context = self.etree.iterparse(f)
2843
2843
        content = [ el.text for event,el in context ]
2844
2844
 
2845
 
        self.assertEquals(['test'], content)
2846
 
        self.assertEquals(_bytes('<root>test</root>'),
 
2845
        self.assertEqual(['test'], content)
 
2846
        self.assertEqual(_bytes('<root>test</root>'),
2847
2847
                          tostring(context.root))
2848
2848
 
2849
2849
    def test_parse_file(self):
2902
2902
        tostring = self.etree.tostring
2903
2903
        root = self.etree.XML(_bytes('<root><![CDATA[test]]></root>'))
2904
2904
 
2905
 
        self.assertEquals('test', root.text)
2906
 
        self.assertEquals(_bytes('<root>test</root>'),
 
2905
        self.assertEqual('test', root.text)
 
2906
        self.assertEqual(_bytes('<root>test</root>'),
2907
2907
                          tostring(root))
2908
2908
 
2909
2909
    def test_parse_with_encoding(self):
2932
2932
        f = BytesIO()
2933
2933
        tree = ElementTree(element=a)
2934
2934
        tree.write(f, encoding='utf-8')
2935
 
        self.assertEquals(_str('<a>SĆøk pĆ„ nettet</a>').encode('UTF-8'),
 
2935
        self.assertEqual(_str('<a>SĆøk pĆ„ nettet</a>').encode('UTF-8'),
2936
2936
                          f.getvalue().replace(_bytes('\n'),_bytes('')))
2937
2937
 
2938
2938
    def test_parse_file_encoding(self):
2967
2967
        declaration = _bytes("<?xml version=\'1.0\' encoding=\'iso-8859-1\'?>")
2968
2968
        self.assertEncodingDeclaration(result, _bytes('iso-8859-1'))
2969
2969
        result = result.split(_bytes('?>'), 1)[-1].replace(_bytes('\n'),_bytes(''))
2970
 
        self.assertEquals(_str('<a>SĆøk pĆ„ nettet</a>').encode('iso-8859-1'),
 
2970
        self.assertEqual(_str('<a>SĆøk pĆ„ nettet</a>').encode('iso-8859-1'),
2971
2971
                          result)
2972
2972
 
2973
2973
    required_versions_ET['test_parse_encoding_8bit_explicit'] = (1,3)
2984
2984
        tree = self.etree.parse(BytesIO(xml_latin1),
2985
2985
                                XMLParser(encoding="iso-8859-1"))
2986
2986
        a = tree.getroot()
2987
 
        self.assertEquals(a.text, text)
 
2987
        self.assertEqual(a.text, text)
2988
2988
 
2989
2989
    required_versions_ET['test_parse_encoding_8bit_override'] = (1,3)
2990
2990
    def test_parse_encoding_8bit_override(self):
3002
3002
        tree = self.etree.parse(BytesIO(xml_latin1),
3003
3003
                                XMLParser(encoding="iso-8859-1"))
3004
3004
        a = tree.getroot()
3005
 
        self.assertEquals(a.text, text)
 
3005
        self.assertEqual(a.text, text)
3006
3006
 
3007
3007
    def _test_wrong_unicode_encoding(self):
3008
3008
        # raise error on wrong encoding declaration in unicode strings
3022
3022
        tree = ElementTree(element=a)
3023
3023
        tree.write(f)
3024
3024
        data = f.getvalue().replace(_bytes('\n'),_bytes(''))
3025
 
        self.assertEquals(
 
3025
        self.assertEqual(
3026
3026
            _str('<a>SĆøk pĆ„ nettet</a>').encode('ASCII', 'xmlcharrefreplace'),
3027
3027
            data)
3028
3028
 
3032
3032
 
3033
3033
        a = Element('a')
3034
3034
        a.text = _str('SĆøk pĆ„ nettet')
3035
 
        self.assertEquals(_str('<a>SĆøk pĆ„ nettet</a>').encode('UTF-8'),
 
3035
        self.assertEqual(_str('<a>SĆøk pĆ„ nettet</a>').encode('UTF-8'),
3036
3036
                         tostring(a, encoding='utf-8'))
3037
3037
 
3038
3038
    def test_encoding_tostring_unknown(self):
3052
3052
        a = Element('a')
3053
3053
        b = SubElement(a, 'b')
3054
3054
        b.text = _str('SĆøk pĆ„ nettet')
3055
 
        self.assertEquals(_str('<b>SĆøk pĆ„ nettet</b>').encode('UTF-8'),
 
3055
        self.assertEqual(_str('<b>SĆøk pĆ„ nettet</b>').encode('UTF-8'),
3056
3056
                         tostring(b, encoding='utf-8'))
3057
3057
 
3058
3058
    def test_encoding_tostring_sub_tail(self):
3064
3064
        b = SubElement(a, 'b')
3065
3065
        b.text = _str('SĆøk pĆ„ nettet')
3066
3066
        b.tail = _str('SĆøk')
3067
 
        self.assertEquals(_str('<b>SĆøk pĆ„ nettet</b>SĆøk').encode('UTF-8'),
 
3067
        self.assertEqual(_str('<b>SĆøk pĆ„ nettet</b>SĆøk').encode('UTF-8'),
3068
3068
                         tostring(b, encoding='utf-8'))
3069
3069
        
3070
3070
    def test_encoding_tostring_default_encoding(self):
3076
3076
        a.text = _str('SĆøk pĆ„ nettet')
3077
3077
 
3078
3078
        expected = _bytes('<a>S&#248;k p&#229; nettet</a>')
3079
 
        self.assertEquals(
 
3079
        self.assertEqual(
3080
3080
            expected,
3081
3081
            tostring(a))
3082
3082
 
3090
3090
        b.text = _str('SĆøk pĆ„ nettet')
3091
3091
 
3092
3092
        expected = _bytes('<b>S&#248;k p&#229; nettet</b>')
3093
 
        self.assertEquals(
 
3093
        self.assertEqual(
3094
3094
            expected,
3095
3095
            tostring(b))
3096
3096
 
3100
3100
        prologue = _bytes('<?xml version="1.0" encoding="iso-8859-1" ?>')
3101
3101
        isoxml = prologue + uxml.encode('iso-8859-1')
3102
3102
        tree = self.etree.XML(isoxml)
3103
 
        self.assertEquals(utext, tree.text)
 
3103
        self.assertEqual(utext, tree.text)
3104
3104
 
3105
3105
    def test_encoding_utf8_bom(self):
3106
3106
        utext = _str('SĆøk pĆ„ nettet')
3109
3109
        bom = _bytes('\\xEF\\xBB\\xBF').decode("unicode_escape").encode("latin1")
3110
3110
        xml = bom + uxml.encode("utf-8")
3111
3111
        tree = etree.XML(xml)
3112
 
        self.assertEquals(utext, tree.text)
 
3112
        self.assertEqual(utext, tree.text)
3113
3113
 
3114
3114
    def test_encoding_8bit_parse_stringio(self):
3115
3115
        utext = _str('SĆøk pĆ„ nettet')
3117
3117
        prologue = _bytes('<?xml version="1.0" encoding="iso-8859-1" ?>')
3118
3118
        isoxml = prologue + uxml.encode('iso-8859-1')
3119
3119
        el = self.etree.parse(BytesIO(isoxml)).getroot()
3120
 
        self.assertEquals(utext, el.text)
 
3120
        self.assertEqual(utext, el.text)
3121
3121
 
3122
3122
    def test_deepcopy_elementtree(self):
3123
3123
        Element = self.etree.Element
3140
3140
        a.text = 'Foo'
3141
3141
 
3142
3142
        b = copy.deepcopy(a)
3143
 
        self.assertEquals('Foo', b.text)
 
3143
        self.assertEqual('Foo', b.text)
3144
3144
        
3145
3145
        b.text = 'Bar'
3146
 
        self.assertEquals('Bar', b.text)
3147
 
        self.assertEquals('Foo', a.text)
 
3146
        self.assertEqual('Bar', b.text)
 
3147
        self.assertEqual('Foo', a.text)
3148
3148
 
3149
3149
        del a
3150
 
        self.assertEquals('Bar', b.text)
 
3150
        self.assertEqual('Bar', b.text)
3151
3151
 
3152
3152
    def test_deepcopy_tail(self):
3153
3153
        Element = self.etree.Element
3156
3156
        a.tail = 'Foo'
3157
3157
 
3158
3158
        b = copy.deepcopy(a)
3159
 
        self.assertEquals('Foo', b.tail)
 
3159
        self.assertEqual('Foo', b.tail)
3160
3160
        
3161
3161
        b.tail = 'Bar'
3162
 
        self.assertEquals('Bar', b.tail)
3163
 
        self.assertEquals('Foo', a.tail)
 
3162
        self.assertEqual('Bar', b.tail)
 
3163
        self.assertEqual('Foo', a.tail)
3164
3164
 
3165
3165
        del a
3166
 
        self.assertEquals('Bar', b.tail)
 
3166
        self.assertEqual('Bar', b.tail)
3167
3167
 
3168
3168
    def test_deepcopy_subelement(self):
3169
3169
        Element = self.etree.Element
3175
3175
        a.tail = 'FooTail'
3176
3176
 
3177
3177
        b = copy.deepcopy(a)
3178
 
        self.assertEquals('FooText', b.text)
3179
 
        self.assertEquals('FooTail', b.tail)
 
3178
        self.assertEqual('FooText', b.text)
 
3179
        self.assertEqual('FooTail', b.tail)
3180
3180
        
3181
3181
        b.text = 'BarText'
3182
3182
        b.tail = 'BarTail'
3183
 
        self.assertEquals('BarTail', b.tail)
3184
 
        self.assertEquals('FooTail', a.tail)
3185
 
        self.assertEquals('BarText', b.text)
3186
 
        self.assertEquals('FooText', a.text)
 
3183
        self.assertEqual('BarTail', b.tail)
 
3184
        self.assertEqual('FooTail', a.tail)
 
3185
        self.assertEqual('BarText', b.text)
 
3186
        self.assertEqual('FooText', a.text)
3187
3187
 
3188
3188
        del a
3189
 
        self.assertEquals('BarTail', b.tail)
3190
 
        self.assertEquals('BarText', b.text)
 
3189
        self.assertEqual('BarTail', b.tail)
 
3190
        self.assertEqual('BarText', b.text)
3191
3191
 
3192
3192
    def test_deepcopy_namespaces(self):
3193
3193
        root = self.etree.XML(_bytes('''<doc xmlns="dns" xmlns:t="tns">
3194
3194
        <parent><node t:foo="bar" /></parent>
3195
3195
        </doc>'''))
3196
 
        self.assertEquals(
 
3196
        self.assertEqual(
3197
3197
            root[0][0].get('{tns}foo'),
3198
3198
            copy.deepcopy(root[0])[0].get('{tns}foo') )
3199
 
        self.assertEquals(
 
3199
        self.assertEqual(
3200
3200
            root[0][0].get('{tns}foo'),
3201
3201
            copy.deepcopy(root[0][0]).get('{tns}foo') )
3202
3202
        
3210
3210
        a.append( Element('C') )
3211
3211
        b.append( Element('X') )
3212
3212
 
3213
 
        self.assertEquals(_bytes('<a><C/></a>'),
 
3213
        self.assertEqual(_bytes('<a><C/></a>'),
3214
3214
                          tostring(a).replace(_bytes(' '), _bytes('')))
3215
 
        self.assertEquals(_bytes('<a><X/></a>'),
 
3215
        self.assertEqual(_bytes('<a><X/></a>'),
3216
3216
                          tostring(b).replace(_bytes(' '), _bytes('')))
3217
3217
 
3218
3218
    def test_deepcopy_comment(self):
3224
3224
        b = copy.deepcopy(a)
3225
3225
        b.text = "ANOTHER"
3226
3226
 
3227
 
        self.assertEquals('ONE',     a.text)
3228
 
        self.assertEquals('ANOTHER', b.text)
 
3227
        self.assertEqual('ONE',     a.text)
 
3228
        self.assertEqual('ANOTHER', b.text)
3229
3229
 
3230
3230
    def test_shallowcopy(self):
3231
3231
        Element = self.etree.Element
3234
3234
        a.text = 'Foo'
3235
3235
 
3236
3236
        b = copy.copy(a)
3237
 
        self.assertEquals('Foo', b.text)
 
3237
        self.assertEqual('Foo', b.text)
3238
3238
        
3239
3239
        b.text = 'Bar'
3240
 
        self.assertEquals('Bar', b.text)
3241
 
        self.assertEquals('Foo', a.text)
 
3240
        self.assertEqual('Bar', b.text)
 
3241
        self.assertEqual('Foo', a.text)
3242
3242
        # XXX ElementTree will share nodes, but lxml.etree won't..
3243
3243
 
3244
3244
    def test_shallowcopy_elementtree(self):
3251
3251
 
3252
3252
        btree = copy.copy(atree)
3253
3253
        self.assertFalse(btree is atree)
3254
 
        self.assert_(btree.getroot() is atree.getroot())
3255
 
        self.assertEquals('Foo', atree.getroot().text)
 
3254
        self.assertTrue(btree.getroot() is atree.getroot())
 
3255
        self.assertEqual('Foo', atree.getroot().text)
3256
3256
 
3257
3257
    def _test_element_boolean(self):
3258
3258
        # deprecated as of ET 1.3/lxml 2.0
3259
3259
        etree = self.etree
3260
3260
        e = etree.Element('foo')
3261
 
        self.assertEquals(False, bool(e))
 
3261
        self.assertEqual(False, bool(e))
3262
3262
        etree.SubElement(e, 'bar')
3263
 
        self.assertEquals(True, bool(e))
 
3263
        self.assertEqual(True, bool(e))
3264
3264
        e = etree.Element('foo')
3265
3265
        e.text = 'hey'
3266
 
        self.assertEquals(False, bool(e))
 
3266
        self.assertEqual(False, bool(e))
3267
3267
        e = etree.Element('foo')
3268
3268
        e.tail = 'bar'
3269
 
        self.assertEquals(False, bool(e))
 
3269
        self.assertEqual(False, bool(e))
3270
3270
        e = etree.Element('foo')
3271
3271
        e.set('bar', 'Bar')
3272
 
        self.assertEquals(False, bool(e))
 
3272
        self.assertEqual(False, bool(e))
3273
3273
 
3274
3274
    def test_multiple_elementrees(self):
3275
3275
        etree = self.etree
3278
3278
        b = etree.SubElement(a, 'b')
3279
3279
 
3280
3280
        t = etree.ElementTree(a)
3281
 
        self.assertEquals(self._rootstring(t), _bytes('<a><b/></a>'))
 
3281
        self.assertEqual(self._rootstring(t), _bytes('<a><b/></a>'))
3282
3282
 
3283
3283
        t1 = etree.ElementTree(a)
3284
 
        self.assertEquals(self._rootstring(t1), _bytes('<a><b/></a>'))
3285
 
        self.assertEquals(self._rootstring(t),  _bytes('<a><b/></a>'))
 
3284
        self.assertEqual(self._rootstring(t1), _bytes('<a><b/></a>'))
 
3285
        self.assertEqual(self._rootstring(t),  _bytes('<a><b/></a>'))
3286
3286
 
3287
3287
        t2 = etree.ElementTree(b)
3288
 
        self.assertEquals(self._rootstring(t2), _bytes('<b/>'))
3289
 
        self.assertEquals(self._rootstring(t1), _bytes('<a><b/></a>'))
3290
 
        self.assertEquals(self._rootstring(t),  _bytes('<a><b/></a>'))
 
3288
        self.assertEqual(self._rootstring(t2), _bytes('<b/>'))
 
3289
        self.assertEqual(self._rootstring(t1), _bytes('<a><b/></a>'))
 
3290
        self.assertEqual(self._rootstring(t),  _bytes('<a><b/></a>'))
3291
3291
 
3292
3292
    def test_qname(self):
3293
3293
        etree = self.etree
3294
3294
        qname = etree.QName('myns', 'a')
3295
3295
        a1 = etree.Element(qname)
3296
3296
        a2 = etree.SubElement(a1, qname)
3297
 
        self.assertEquals(a1.tag, "{myns}a")
3298
 
        self.assertEquals(a2.tag, "{myns}a")
 
3297
        self.assertEqual(a1.tag, "{myns}a")
 
3298
        self.assertEqual(a2.tag, "{myns}a")
3299
3299
 
3300
3300
    def test_qname_cmp(self):
3301
3301
        etree = self.etree
3302
3302
        qname1 = etree.QName('myns', 'a')
3303
3303
        qname2 = etree.QName('myns', 'a')
3304
 
        self.assertEquals(qname1, "{myns}a")
3305
 
        self.assertEquals("{myns}a", qname2)
3306
 
        self.assertEquals(qname1, qname1)
3307
 
        self.assertEquals(qname1, qname2)
 
3304
        self.assertEqual(qname1, "{myns}a")
 
3305
        self.assertEqual("{myns}a", qname2)
 
3306
        self.assertEqual(qname1, qname1)
 
3307
        self.assertEqual(qname1, qname2)
3308
3308
 
3309
3309
    def test_qname_attribute_getset(self):
3310
3310
        etree = self.etree
3313
3313
        a = etree.Element(qname)
3314
3314
        a.set(qname, "value")
3315
3315
 
3316
 
        self.assertEquals(a.get(qname), "value")
3317
 
        self.assertEquals(a.get("{myns}a"), "value")
 
3316
        self.assertEqual(a.get(qname), "value")
 
3317
        self.assertEqual(a.get("{myns}a"), "value")
3318
3318
 
3319
3319
    def test_qname_attrib(self):
3320
3320
        etree = self.etree
3323
3323
        a = etree.Element(qname)
3324
3324
        a.attrib[qname] = "value"
3325
3325
 
3326
 
        self.assertEquals(a.attrib[qname], "value")
3327
 
        self.assertEquals(a.attrib.get(qname), "value")
 
3326
        self.assertEqual(a.attrib[qname], "value")
 
3327
        self.assertEqual(a.attrib.get(qname), "value")
3328
3328
 
3329
 
        self.assertEquals(a.attrib["{myns}a"], "value")
3330
 
        self.assertEquals(a.attrib.get("{myns}a"), "value")
 
3329
        self.assertEqual(a.attrib["{myns}a"], "value")
 
3330
        self.assertEqual(a.attrib.get("{myns}a"), "value")
3331
3331
 
3332
3332
    def test_qname_attribute_resolve(self):
3333
3333
        etree = self.etree
3364
3364
        parser = etree.XMLParser()
3365
3365
        if hasattr(parser, "version"):
3366
3366
            # ElementTree 1.3+, cET
3367
 
            self.assert_(re.match("[^ ]+ [0-9.]+", parser.version))
 
3367
            self.assertTrue(re.match("[^ ]+ [0-9.]+", parser.version))
3368
3368
 
3369
3369
    # feed parser interface
3370
3370
 
3380
3380
 
3381
3381
        root = parser.close()
3382
3382
 
3383
 
        self.assertEquals(root.tag, "root")
3384
 
        self.assertEquals(root[0].tag, "a")
3385
 
        self.assertEquals(root[0].get("test"), "works")
 
3383
        self.assertEqual(root.tag, "root")
 
3384
        self.assertEqual(root[0].tag, "a")
 
3385
        self.assertEqual(root[0].get("test"), "works")
3386
3386
 
3387
3387
    def test_feed_parser_unicode(self):
3388
3388
        parser = self.etree.XMLParser()
3395
3395
 
3396
3396
        root = parser.close()
3397
3397
 
3398
 
        self.assertEquals(root.tag, "root")
3399
 
        self.assertEquals(root[0].tag, "a")
3400
 
        self.assertEquals(root[0].get("test"), "works")
 
3398
        self.assertEqual(root.tag, "root")
 
3399
        self.assertEqual(root[0].tag, "a")
 
3400
        self.assertEqual(root[0].get("test"), "works")
3401
3401
 
3402
3402
    required_versions_ET['test_feed_parser_error_close_empty'] = (1,3)
3403
3403
    def test_feed_parser_error_close_empty(self):
3438
3438
            parser.close()
3439
3439
        except ParseError:
3440
3440
            e = sys.exc_info()[1]
3441
 
            self.assertNotEquals(None, e.code)
3442
 
            self.assertNotEquals(0, e.code)
3443
 
            self.assert_(isinstance(e.position, tuple))
3444
 
            self.assert_(e.position >= (0, 0))
 
3441
            self.assertNotEqual(None, e.code)
 
3442
            self.assertNotEqual(0, e.code)
 
3443
            self.assertTrue(isinstance(e.position, tuple))
 
3444
            self.assertTrue(e.position >= (0, 0))
3445
3445
 
3446
3446
    # parser target interface
3447
3447
 
3453
3453
        target = Target()
3454
3454
        parser = self.etree.XMLParser(target=target)
3455
3455
 
3456
 
        self.assertEquals(target, parser.target)
 
3456
        self.assertEqual(target, parser.target)
3457
3457
 
3458
3458
    def test_parser_target_tag(self):
3459
 
        assertEquals = self.assertEquals
 
3459
        assertEqual = self.assertEqual
3460
3460
        assertFalse  = self.assertFalse
3461
3461
 
3462
3462
        events = []
3464
3464
            def start(self, tag, attrib):
3465
3465
                events.append("start")
3466
3466
                assertFalse(attrib)
3467
 
                assertEquals("TAG", tag)
 
3467
                assertEqual("TAG", tag)
3468
3468
            def end(self, tag):
3469
3469
                events.append("end")
3470
 
                assertEquals("TAG", tag)
 
3470
                assertEqual("TAG", tag)
3471
3471
            def close(self):
3472
3472
                return "DONE"
3473
3473
 
3476
3476
        parser.feed("<TAG/>")
3477
3477
        done = parser.close()
3478
3478
 
3479
 
        self.assertEquals("DONE", done)
3480
 
        self.assertEquals(["start", "end"], events)
 
3479
        self.assertEqual("DONE", done)
 
3480
        self.assertEqual(["start", "end"], events)
3481
3481
 
3482
3482
    def test_elementtree_parser_target(self):
3483
 
        assertEquals = self.assertEquals
 
3483
        assertEqual = self.assertEqual
3484
3484
        assertFalse  = self.assertFalse
3485
3485
        Element = self.etree.Element
3486
3486
 
3489
3489
            def start(self, tag, attrib):
3490
3490
                events.append("start")
3491
3491
                assertFalse(attrib)
3492
 
                assertEquals("TAG", tag)
 
3492
                assertEqual("TAG", tag)
3493
3493
            def end(self, tag):
3494
3494
                events.append("end")
3495
 
                assertEquals("TAG", tag)
 
3495
                assertEqual("TAG", tag)
3496
3496
            def close(self):
3497
3497
                return Element("DONE")
3498
3498
 
3500
3500
        tree = self.etree.ElementTree()
3501
3501
        tree.parse(BytesIO("<TAG/>"), parser=parser)
3502
3502
 
3503
 
        self.assertEquals("DONE", tree.getroot().tag)
3504
 
        self.assertEquals(["start", "end"], events)
 
3503
        self.assertEqual("DONE", tree.getroot().tag)
 
3504
        self.assertEqual(["start", "end"], events)
3505
3505
 
3506
3506
    def test_parser_target_attrib(self):
3507
 
        assertEquals = self.assertEquals
 
3507
        assertEqual = self.assertEqual
3508
3508
 
3509
3509
        events = []
3510
3510
        class Target(object):
3511
3511
            def start(self, tag, attrib):
3512
3512
                events.append("start-" + tag)
3513
3513
                for name, value in attrib.items():
3514
 
                    assertEquals(tag + name, value)
 
3514
                    assertEqual(tag + name, value)
3515
3515
            def end(self, tag):
3516
3516
                events.append("end-" + tag)
3517
3517
            def close(self):
3522
3522
        parser.feed('<root a="roota" b="rootb"><sub c="subc"/></root>')
3523
3523
        done = parser.close()
3524
3524
 
3525
 
        self.assertEquals("DONE", done)
3526
 
        self.assertEquals(["start-root", "start-sub", "end-sub", "end-root"],
 
3525
        self.assertEqual("DONE", done)
 
3526
        self.assertEqual(["start-root", "start-sub", "end-sub", "end-root"],
3527
3527
                          events)
3528
3528
 
3529
3529
    def test_parser_target_data(self):
3543
3543
        parser.feed('<root>A<sub/>B</root>')
3544
3544
        done = parser.close()
3545
3545
 
3546
 
        self.assertEquals("DONE", done)
3547
 
        self.assertEquals(["start-root", "data-A", "start-sub",
 
3546
        self.assertEqual("DONE", done)
 
3547
        self.assertEqual(["start-root", "data-A", "start-sub",
3548
3548
                           "end-sub", "data-B", "end-root"],
3549
3549
                          events)
3550
3550
 
3581
3581
        parser.feed(dtd+'<root><sub/><sub>this is &ent;</sub><sub/></root>')
3582
3582
        done = parser.close()
3583
3583
 
3584
 
        self.assertEquals("DONE", done)
3585
 
        self.assertEquals(["start-root", "start-sub", "end-sub", "start-sub",
 
3584
        self.assertEqual("DONE", done)
 
3585
        self.assertEqual(["start-root", "start-sub", "end-sub", "start-sub",
3586
3586
                           "data-this is an entity",
3587
3587
                           "end-sub", "start-sub", "end-sub", "end-root"],
3588
3588
                          events)
3620
3620
    def test_treebuilder(self):
3621
3621
        builder = self.etree.TreeBuilder()
3622
3622
        el = builder.start("root", {'a':'A', 'b':'B'})
3623
 
        self.assertEquals("root", el.tag)
3624
 
        self.assertEquals({'a':'A', 'b':'B'}, el.attrib)
 
3623
        self.assertEqual("root", el.tag)
 
3624
        self.assertEqual({'a':'A', 'b':'B'}, el.attrib)
3625
3625
        builder.data("ROOTTEXT")
3626
3626
        el = builder.start("child", {'x':'X', 'y':'Y'})
3627
 
        self.assertEquals("child", el.tag)
3628
 
        self.assertEquals({'x':'X', 'y':'Y'}, el.attrib)
 
3627
        self.assertEqual("child", el.tag)
 
3628
        self.assertEqual({'x':'X', 'y':'Y'}, el.attrib)
3629
3629
        builder.data("CHILDTEXT")
3630
3630
        el = builder.end("child")
3631
 
        self.assertEquals("child", el.tag)
3632
 
        self.assertEquals({'x':'X', 'y':'Y'}, el.attrib)
3633
 
        self.assertEquals("CHILDTEXT", el.text)
3634
 
        self.assertEquals(None, el.tail)
 
3631
        self.assertEqual("child", el.tag)
 
3632
        self.assertEqual({'x':'X', 'y':'Y'}, el.attrib)
 
3633
        self.assertEqual("CHILDTEXT", el.text)
 
3634
        self.assertEqual(None, el.tail)
3635
3635
        builder.data("CHILDTAIL")
3636
3636
        root = builder.end("root")
3637
3637
 
3638
 
        self.assertEquals("root", root.tag)
3639
 
        self.assertEquals("ROOTTEXT", root.text)
3640
 
        self.assertEquals("CHILDTEXT", root[0].text)
3641
 
        self.assertEquals("CHILDTAIL", root[0].tail)
 
3638
        self.assertEqual("root", root.tag)
 
3639
        self.assertEqual("ROOTTEXT", root.text)
 
3640
        self.assertEqual("CHILDTEXT", root[0].text)
 
3641
        self.assertEqual("CHILDTAIL", root[0].tail)
3642
3642
 
3643
3643
    def test_treebuilder_target(self):
3644
3644
        parser = self.etree.XMLParser(target=self.etree.TreeBuilder())
3645
3645
        parser.feed('<root>ROOTTEXT<child>CHILDTEXT</child>CHILDTAIL</root>')
3646
3646
        root = parser.close()
3647
3647
 
3648
 
        self.assertEquals("root", root.tag)
3649
 
        self.assertEquals("ROOTTEXT", root.text)
3650
 
        self.assertEquals("CHILDTEXT", root[0].text)
3651
 
        self.assertEquals("CHILDTAIL", root[0].tail)
 
3648
        self.assertEqual("root", root.tag)
 
3649
        self.assertEqual("ROOTTEXT", root.text)
 
3650
        self.assertEqual("CHILDTEXT", root[0].text)
 
3651
        self.assertEqual("CHILDTAIL", root[0].tail)
3652
3652
 
3653
3653
    # helper methods
3654
3654
 
3683
3683
        """
3684
3684
        if isinstance(expected, unicode):
3685
3685
            expected = expected.encode(encoding)
3686
 
        self.assertEquals(expected, self._writeElement(element, encoding))
3687
 
        self.assertEquals(expected, self._writeElementFile(element, encoding))
 
3686
        self.assertEqual(expected, self._writeElement(element, encoding))
 
3687
        self.assertEqual(expected, self._writeElementFile(element, encoding))
3688
3688
 
3689
3689
    def assertEncodingDeclaration(self, result, encoding):
3690
3690
        "Checks if the result XML byte string specifies the encoding."
3693
3693
            has_encoding = re.compile(enc_re).match
3694
3694
        else:
3695
3695
            has_encoding = re.compile(_bytes(enc_re)).match
3696
 
        self.assert_(has_encoding(result))
 
3696
        self.assertTrue(has_encoding(result))
3697
3697
        result_encoding = has_encoding(result).group(1)
3698
 
        self.assertEquals(result_encoding.upper(), encoding.upper())
 
3698
        self.assertEqual(result_encoding.upper(), encoding.upper())
3699
3699
        
3700
3700
    def _rootstring(self, tree):
3701
3701
        return self.etree.tostring(tree.getroot()).replace(
3705
3705
        self._check_element(tree.getroot())
3706
3706
        
3707
3707
    def _check_element(self, element):
3708
 
        self.assert_(hasattr(element, 'tag'))
3709
 
        self.assert_(hasattr(element, 'attrib'))
3710
 
        self.assert_(hasattr(element, 'text'))
3711
 
        self.assert_(hasattr(element, 'tail'))
 
3708
        self.assertTrue(hasattr(element, 'tag'))
 
3709
        self.assertTrue(hasattr(element, 'attrib'))
 
3710
        self.assertTrue(hasattr(element, 'text'))
 
3711
        self.assertTrue(hasattr(element, 'tail'))
3712
3712
        self._check_string(element.tag)
3713
3713
        self._check_mapping(element.attrib)
3714
3714
        if element.text != None:
3719
3719
    def _check_string(self, string):
3720
3720
        len(string)
3721
3721
        for char in string:
3722
 
            self.assertEquals(1, len(char))
 
3722
            self.assertEqual(1, len(char))
3723
3723
        new_string = string + ""
3724
3724
        new_string = string + " "
3725
3725
        string[:0]
3732
3732
        for key in keys:
3733
3733
            item = mapping[key]
3734
3734
        mapping["key"] = "value"
3735
 
        self.assertEquals("value", mapping["key"])
 
3735
        self.assertEqual("value", mapping["key"])
3736
3736
 
3737
3737
 
3738
3738
if etree:
3743
3743
    class ElementTreeTestCase(_ETreeTestCaseBase):
3744
3744
        etree = ElementTree
3745
3745
 
 
3746
        @classmethod
 
3747
        def setUpClass(cls):
 
3748
            import warnings
 
3749
            # ElementTree warns about getiterator() in recent Pythons
 
3750
            warnings.filterwarnings(
 
3751
                'ignore',
 
3752
                'This method will be removed.*\.iter\(\).*instead',
 
3753
                PendingDeprecationWarning)
 
3754
 
3746
3755
    filter_by_version(
3747
3756
        ElementTreeTestCase,
3748
3757
        ElementTreeTestCase.required_versions_ET, ET_VERSION)