annotate emeraldtree/tests/test_tree.py @ 54:6d2aaba7ac4d

Tree - Move serialization code into classes
author Bastian Blank <bblank@thinkmo.de>
date Mon, 20 Jul 2009 12:00:06 +0200
parents d071598a93ef
children 125ce968352d
rev   line source
15
60f59340b897 Remove argument ordering weirdness of QName.
Bastian Blank <bblank@thinkmo.de>
parents: 10
diff changeset
1 import py.test
53
d071598a93ef Tree support - Change module name
Bastian Blank <bblank@thinkmo.de>
parents: 49
diff changeset
2 from emeraldtree.tree import *
3
40db0b033d47 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents:
diff changeset
3
54
6d2aaba7ac4d Tree - Move serialization code into classes
Bastian Blank <bblank@thinkmo.de>
parents: 53
diff changeset
4 def serialize(elem, namespaces={}):
6d2aaba7ac4d Tree - Move serialization code into classes
Bastian Blank <bblank@thinkmo.de>
parents: 53
diff changeset
5 from StringIO import StringIO
3
40db0b033d47 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents:
diff changeset
6 file = StringIO()
54
6d2aaba7ac4d Tree - Move serialization code into classes
Bastian Blank <bblank@thinkmo.de>
parents: 53
diff changeset
7 XMLWriter(namespaces=namespaces).write(file.write, elem)
3
40db0b033d47 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents:
diff changeset
8 return file.getvalue()
40db0b033d47 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents:
diff changeset
9
15
60f59340b897 Remove argument ordering weirdness of QName.
Bastian Blank <bblank@thinkmo.de>
parents: 10
diff changeset
10 def test_Element():
3
40db0b033d47 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents:
diff changeset
11 elem = Element('a')
24
2015d11467bc Add testcase.
Bastian Blank <bblank@thinkmo.de>
parents: 23
diff changeset
12
4
705fc192cd9d Add new Node class and make it a base of Element.
Bastian Blank <bblank@thinkmo.de>
parents: 3
diff changeset
13 assert isinstance(elem, Node)
18
42e1c75e8bcb Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 16
diff changeset
14 assert elem.tag == 'a'
42e1c75e8bcb Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 16
diff changeset
15
42e1c75e8bcb Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 16
diff changeset
16 def test_Element__len__():
49
78ef2b77ca4a Tests for ElementTree - Fix tests for default namespace, fix types
Bastian Blank <bblank@thinkmo.de>
parents: 40
diff changeset
17 elem = Element('a', children=['1', '2', '3', '4', '5'])
18
42e1c75e8bcb Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 16
diff changeset
18
49
78ef2b77ca4a Tests for ElementTree - Fix tests for default namespace, fix types
Bastian Blank <bblank@thinkmo.de>
parents: 40
diff changeset
19 assert len(elem) == 5
18
42e1c75e8bcb Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 16
diff changeset
20
24
2015d11467bc Add testcase.
Bastian Blank <bblank@thinkmo.de>
parents: 23
diff changeset
21 def test_Element__nonzero__():
2015d11467bc Add testcase.
Bastian Blank <bblank@thinkmo.de>
parents: 23
diff changeset
22 elem = Element('a')
2015d11467bc Add testcase.
Bastian Blank <bblank@thinkmo.de>
parents: 23
diff changeset
23
2015d11467bc Add testcase.
Bastian Blank <bblank@thinkmo.de>
parents: 23
diff changeset
24 assert elem
2015d11467bc Add testcase.
Bastian Blank <bblank@thinkmo.de>
parents: 23
diff changeset
25 assert len(elem) == 0
2015d11467bc Add testcase.
Bastian Blank <bblank@thinkmo.de>
parents: 23
diff changeset
26
18
42e1c75e8bcb Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 16
diff changeset
27 def test_Element___getitem__():
23
4c1912ff58a3 Support initialization with children.
Bastian Blank <bblank@thinkmo.de>
parents: 18
diff changeset
28 elem = Element('a', children = [Element('b'), Element('c')])
18
42e1c75e8bcb Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 16
diff changeset
29
42e1c75e8bcb Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 16
diff changeset
30 assert elem[0].tag == 'b'
42e1c75e8bcb Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 16
diff changeset
31 assert elem[1].tag == 'c'
42e1c75e8bcb Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 16
diff changeset
32 assert len(elem[:1]) == 1
42e1c75e8bcb Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 16
diff changeset
33 assert len(elem[:2]) == 2
42e1c75e8bcb Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 16
diff changeset
34 assert len(elem[:3]) == 2
42e1c75e8bcb Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 16
diff changeset
35 assert len(elem[1:3]) == 1
42e1c75e8bcb Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 16
diff changeset
36 assert len(elem[2:3]) == 0
42e1c75e8bcb Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 16
diff changeset
37 assert elem[:2][0].tag == 'b'
42e1c75e8bcb Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 16
diff changeset
38 assert elem[:2][1].tag == 'c'
42e1c75e8bcb Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 16
diff changeset
39
42e1c75e8bcb Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 16
diff changeset
40 def test_Element___setitem__():
23
4c1912ff58a3 Support initialization with children.
Bastian Blank <bblank@thinkmo.de>
parents: 18
diff changeset
41 elem = Element('a', children = [Element('b1'), Element('b2')])
18
42e1c75e8bcb Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 16
diff changeset
42
42e1c75e8bcb Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 16
diff changeset
43 elem[0] = Element('c')
42e1c75e8bcb Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 16
diff changeset
44 assert elem[0].tag == 'c'
42e1c75e8bcb Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 16
diff changeset
45 assert elem[1].tag == 'b2'
42e1c75e8bcb Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 16
diff changeset
46
42e1c75e8bcb Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 16
diff changeset
47 elem[1] = Element('d')
42e1c75e8bcb Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 16
diff changeset
48 assert elem[0].tag == 'c'
42e1c75e8bcb Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 16
diff changeset
49 assert elem[1].tag == 'd'
42e1c75e8bcb Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 16
diff changeset
50
42e1c75e8bcb Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 16
diff changeset
51 elem[0:0] = [Element('e')]
42e1c75e8bcb Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 16
diff changeset
52 assert elem[0].tag == 'e'
42e1c75e8bcb Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 16
diff changeset
53 assert elem[1].tag == 'c'
42e1c75e8bcb Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 16
diff changeset
54 assert elem[2].tag == 'd'
42e1c75e8bcb Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 16
diff changeset
55
42e1c75e8bcb Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 16
diff changeset
56 def test_Element___delitem__():
23
4c1912ff58a3 Support initialization with children.
Bastian Blank <bblank@thinkmo.de>
parents: 18
diff changeset
57 elem = Element('a', children = [Element('b1'), Element('b2')])
18
42e1c75e8bcb Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 16
diff changeset
58
42e1c75e8bcb Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 16
diff changeset
59 del elem[0]
42e1c75e8bcb Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 16
diff changeset
60 assert len(elem) == 1
42e1c75e8bcb Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 16
diff changeset
61 assert elem[0].tag == 'b2'
3
40db0b033d47 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents:
diff changeset
62
40db0b033d47 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents:
diff changeset
63 def test_Element_append():
40db0b033d47 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents:
diff changeset
64 elem = Element('a')
24
2015d11467bc Add testcase.
Bastian Blank <bblank@thinkmo.de>
parents: 23
diff changeset
65
3
40db0b033d47 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents:
diff changeset
66 elem.append(Element('b'))
18
42e1c75e8bcb Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 16
diff changeset
67 assert len(elem) == 1
42e1c75e8bcb Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 16
diff changeset
68 assert elem[0].tag == 'b'
8
e1d0cd336bf3 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 6
diff changeset
69
3
40db0b033d47 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents:
diff changeset
70 elem.append(Element('c'))
18
42e1c75e8bcb Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 16
diff changeset
71 assert len(elem) == 2
42e1c75e8bcb Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 16
diff changeset
72 assert elem[1].tag == 'c'
8
e1d0cd336bf3 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 6
diff changeset
73
5
9b72cb3ef3c9 Support strings a children.
Bastian Blank <bblank@thinkmo.de>
parents: 4
diff changeset
74 elem.append('d')
18
42e1c75e8bcb Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 16
diff changeset
75 assert len(elem) == 3
42e1c75e8bcb Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 16
diff changeset
76 assert elem[2] == 'd'
6
ced434b6bf72 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 5
diff changeset
77
30
96e02876b1a2 Testcases for ElementTree - Add testcases
Bastian Blank <bblank@thinkmo.de>
parents: 27
diff changeset
78 def test_Element_extend():
96e02876b1a2 Testcases for ElementTree - Add testcases
Bastian Blank <bblank@thinkmo.de>
parents: 27
diff changeset
79 pass
96e02876b1a2 Testcases for ElementTree - Add testcases
Bastian Blank <bblank@thinkmo.de>
parents: 27
diff changeset
80
96e02876b1a2 Testcases for ElementTree - Add testcases
Bastian Blank <bblank@thinkmo.de>
parents: 27
diff changeset
81 def test_Element_insert():
96e02876b1a2 Testcases for ElementTree - Add testcases
Bastian Blank <bblank@thinkmo.de>
parents: 27
diff changeset
82 pass
96e02876b1a2 Testcases for ElementTree - Add testcases
Bastian Blank <bblank@thinkmo.de>
parents: 27
diff changeset
83
96e02876b1a2 Testcases for ElementTree - Add testcases
Bastian Blank <bblank@thinkmo.de>
parents: 27
diff changeset
84 def test_Element_remove():
96e02876b1a2 Testcases for ElementTree - Add testcases
Bastian Blank <bblank@thinkmo.de>
parents: 27
diff changeset
85 pass
96e02876b1a2 Testcases for ElementTree - Add testcases
Bastian Blank <bblank@thinkmo.de>
parents: 27
diff changeset
86
96e02876b1a2 Testcases for ElementTree - Add testcases
Bastian Blank <bblank@thinkmo.de>
parents: 27
diff changeset
87 def test_Element_find():
32
7b5ed8600569 Testcases for ElementTree - Add testcases for find and findall
Bastian Blank <bblank@thinkmo.de>
parents: 30
diff changeset
88 child_1 = Element('b1')
7b5ed8600569 Testcases for ElementTree - Add testcases for find and findall
Bastian Blank <bblank@thinkmo.de>
parents: 30
diff changeset
89 child_2 = Element('b2')
7b5ed8600569 Testcases for ElementTree - Add testcases for find and findall
Bastian Blank <bblank@thinkmo.de>
parents: 30
diff changeset
90 elem = Element('a', children=[child_1, child_2])
30
96e02876b1a2 Testcases for ElementTree - Add testcases
Bastian Blank <bblank@thinkmo.de>
parents: 27
diff changeset
91
96e02876b1a2 Testcases for ElementTree - Add testcases
Bastian Blank <bblank@thinkmo.de>
parents: 27
diff changeset
92 result = elem.find('b1')
32
7b5ed8600569 Testcases for ElementTree - Add testcases for find and findall
Bastian Blank <bblank@thinkmo.de>
parents: 30
diff changeset
93 assert result is child_1
30
96e02876b1a2 Testcases for ElementTree - Add testcases
Bastian Blank <bblank@thinkmo.de>
parents: 27
diff changeset
94
96e02876b1a2 Testcases for ElementTree - Add testcases
Bastian Blank <bblank@thinkmo.de>
parents: 27
diff changeset
95 result = elem.find('b2')
32
7b5ed8600569 Testcases for ElementTree - Add testcases for find and findall
Bastian Blank <bblank@thinkmo.de>
parents: 30
diff changeset
96 assert result is child_2
7b5ed8600569 Testcases for ElementTree - Add testcases for find and findall
Bastian Blank <bblank@thinkmo.de>
parents: 30
diff changeset
97
7b5ed8600569 Testcases for ElementTree - Add testcases for find and findall
Bastian Blank <bblank@thinkmo.de>
parents: 30
diff changeset
98 child_1 = Element(QName('b1', 'url1'))
7b5ed8600569 Testcases for ElementTree - Add testcases for find and findall
Bastian Blank <bblank@thinkmo.de>
parents: 30
diff changeset
99 child_2 = Element(QName('{url2}b2'))
7b5ed8600569 Testcases for ElementTree - Add testcases for find and findall
Bastian Blank <bblank@thinkmo.de>
parents: 30
diff changeset
100 elem = Element('a', children=[child_1, child_2])
7b5ed8600569 Testcases for ElementTree - Add testcases for find and findall
Bastian Blank <bblank@thinkmo.de>
parents: 30
diff changeset
101
7b5ed8600569 Testcases for ElementTree - Add testcases for find and findall
Bastian Blank <bblank@thinkmo.de>
parents: 30
diff changeset
102 result = elem.find('{url1}b1')
7b5ed8600569 Testcases for ElementTree - Add testcases for find and findall
Bastian Blank <bblank@thinkmo.de>
parents: 30
diff changeset
103 assert result is child_1
30
96e02876b1a2 Testcases for ElementTree - Add testcases
Bastian Blank <bblank@thinkmo.de>
parents: 27
diff changeset
104
96e02876b1a2 Testcases for ElementTree - Add testcases
Bastian Blank <bblank@thinkmo.de>
parents: 27
diff changeset
105 def test_Element_findtext():
96e02876b1a2 Testcases for ElementTree - Add testcases
Bastian Blank <bblank@thinkmo.de>
parents: 27
diff changeset
106 pass
96e02876b1a2 Testcases for ElementTree - Add testcases
Bastian Blank <bblank@thinkmo.de>
parents: 27
diff changeset
107
96e02876b1a2 Testcases for ElementTree - Add testcases
Bastian Blank <bblank@thinkmo.de>
parents: 27
diff changeset
108 def test_Element_findall():
32
7b5ed8600569 Testcases for ElementTree - Add testcases for find and findall
Bastian Blank <bblank@thinkmo.de>
parents: 30
diff changeset
109 child_1 = Element('b1')
7b5ed8600569 Testcases for ElementTree - Add testcases for find and findall
Bastian Blank <bblank@thinkmo.de>
parents: 30
diff changeset
110 child_2 = Element('b2')
49
78ef2b77ca4a Tests for ElementTree - Fix tests for default namespace, fix types
Bastian Blank <bblank@thinkmo.de>
parents: 40
diff changeset
111 child_3 = u"text"
32
7b5ed8600569 Testcases for ElementTree - Add testcases for find and findall
Bastian Blank <bblank@thinkmo.de>
parents: 30
diff changeset
112 elem = Element('a', children=[child_1, child_2, child_3])
7b5ed8600569 Testcases for ElementTree - Add testcases for find and findall
Bastian Blank <bblank@thinkmo.de>
parents: 30
diff changeset
113
7b5ed8600569 Testcases for ElementTree - Add testcases for find and findall
Bastian Blank <bblank@thinkmo.de>
parents: 30
diff changeset
114 result = list(elem.findall('b1'))
7b5ed8600569 Testcases for ElementTree - Add testcases for find and findall
Bastian Blank <bblank@thinkmo.de>
parents: 30
diff changeset
115 assert len(result) == 1
7b5ed8600569 Testcases for ElementTree - Add testcases for find and findall
Bastian Blank <bblank@thinkmo.de>
parents: 30
diff changeset
116 assert result[0] is child_1
7b5ed8600569 Testcases for ElementTree - Add testcases for find and findall
Bastian Blank <bblank@thinkmo.de>
parents: 30
diff changeset
117
7b5ed8600569 Testcases for ElementTree - Add testcases for find and findall
Bastian Blank <bblank@thinkmo.de>
parents: 30
diff changeset
118 result = list(elem.findall('b2'))
7b5ed8600569 Testcases for ElementTree - Add testcases for find and findall
Bastian Blank <bblank@thinkmo.de>
parents: 30
diff changeset
119 assert len(result) == 1
7b5ed8600569 Testcases for ElementTree - Add testcases for find and findall
Bastian Blank <bblank@thinkmo.de>
parents: 30
diff changeset
120 assert result[0] is child_2
7b5ed8600569 Testcases for ElementTree - Add testcases for find and findall
Bastian Blank <bblank@thinkmo.de>
parents: 30
diff changeset
121
7b5ed8600569 Testcases for ElementTree - Add testcases for find and findall
Bastian Blank <bblank@thinkmo.de>
parents: 30
diff changeset
122 result = list(elem.findall('*'))
7b5ed8600569 Testcases for ElementTree - Add testcases for find and findall
Bastian Blank <bblank@thinkmo.de>
parents: 30
diff changeset
123 assert len(result) == 3
7b5ed8600569 Testcases for ElementTree - Add testcases for find and findall
Bastian Blank <bblank@thinkmo.de>
parents: 30
diff changeset
124 assert result[0] is child_1
7b5ed8600569 Testcases for ElementTree - Add testcases for find and findall
Bastian Blank <bblank@thinkmo.de>
parents: 30
diff changeset
125 assert result[1] is child_2
7b5ed8600569 Testcases for ElementTree - Add testcases for find and findall
Bastian Blank <bblank@thinkmo.de>
parents: 30
diff changeset
126 assert result[2] is child_3
7b5ed8600569 Testcases for ElementTree - Add testcases for find and findall
Bastian Blank <bblank@thinkmo.de>
parents: 30
diff changeset
127
7b5ed8600569 Testcases for ElementTree - Add testcases for find and findall
Bastian Blank <bblank@thinkmo.de>
parents: 30
diff changeset
128 child_1 = Element(QName('b1', 'url1'))
7b5ed8600569 Testcases for ElementTree - Add testcases for find and findall
Bastian Blank <bblank@thinkmo.de>
parents: 30
diff changeset
129 child_2 = Element(QName('{url2}b2'))
7b5ed8600569 Testcases for ElementTree - Add testcases for find and findall
Bastian Blank <bblank@thinkmo.de>
parents: 30
diff changeset
130 elem = Element('a', children=[child_1, child_2])
7b5ed8600569 Testcases for ElementTree - Add testcases for find and findall
Bastian Blank <bblank@thinkmo.de>
parents: 30
diff changeset
131
7b5ed8600569 Testcases for ElementTree - Add testcases for find and findall
Bastian Blank <bblank@thinkmo.de>
parents: 30
diff changeset
132 result = list(elem.findall('{url1}b1'))
7b5ed8600569 Testcases for ElementTree - Add testcases for find and findall
Bastian Blank <bblank@thinkmo.de>
parents: 30
diff changeset
133 assert len(result) == 1
7b5ed8600569 Testcases for ElementTree - Add testcases for find and findall
Bastian Blank <bblank@thinkmo.de>
parents: 30
diff changeset
134 assert result[0] is child_1
30
96e02876b1a2 Testcases for ElementTree - Add testcases
Bastian Blank <bblank@thinkmo.de>
parents: 27
diff changeset
135
96e02876b1a2 Testcases for ElementTree - Add testcases
Bastian Blank <bblank@thinkmo.de>
parents: 27
diff changeset
136 def test_Element_clear():
96e02876b1a2 Testcases for ElementTree - Add testcases
Bastian Blank <bblank@thinkmo.de>
parents: 27
diff changeset
137 pass
96e02876b1a2 Testcases for ElementTree - Add testcases
Bastian Blank <bblank@thinkmo.de>
parents: 27
diff changeset
138
96e02876b1a2 Testcases for ElementTree - Add testcases
Bastian Blank <bblank@thinkmo.de>
parents: 27
diff changeset
139 def test_Element_get():
96e02876b1a2 Testcases for ElementTree - Add testcases
Bastian Blank <bblank@thinkmo.de>
parents: 27
diff changeset
140 pass
96e02876b1a2 Testcases for ElementTree - Add testcases
Bastian Blank <bblank@thinkmo.de>
parents: 27
diff changeset
141
96e02876b1a2 Testcases for ElementTree - Add testcases
Bastian Blank <bblank@thinkmo.de>
parents: 27
diff changeset
142 def test_Element_set():
96e02876b1a2 Testcases for ElementTree - Add testcases
Bastian Blank <bblank@thinkmo.de>
parents: 27
diff changeset
143 pass
96e02876b1a2 Testcases for ElementTree - Add testcases
Bastian Blank <bblank@thinkmo.de>
parents: 27
diff changeset
144
96e02876b1a2 Testcases for ElementTree - Add testcases
Bastian Blank <bblank@thinkmo.de>
parents: 27
diff changeset
145 def test_Element_keys():
96e02876b1a2 Testcases for ElementTree - Add testcases
Bastian Blank <bblank@thinkmo.de>
parents: 27
diff changeset
146 pass
96e02876b1a2 Testcases for ElementTree - Add testcases
Bastian Blank <bblank@thinkmo.de>
parents: 27
diff changeset
147
96e02876b1a2 Testcases for ElementTree - Add testcases
Bastian Blank <bblank@thinkmo.de>
parents: 27
diff changeset
148 def test_Element_items():
96e02876b1a2 Testcases for ElementTree - Add testcases
Bastian Blank <bblank@thinkmo.de>
parents: 27
diff changeset
149 pass
96e02876b1a2 Testcases for ElementTree - Add testcases
Bastian Blank <bblank@thinkmo.de>
parents: 27
diff changeset
150
8
e1d0cd336bf3 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 6
diff changeset
151 def test_Element_iter():
e1d0cd336bf3 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 6
diff changeset
152 elem = Element('a')
e1d0cd336bf3 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 6
diff changeset
153 l = list(elem.iter())
e1d0cd336bf3 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 6
diff changeset
154 assert len(l) == 1
e1d0cd336bf3 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 6
diff changeset
155
e1d0cd336bf3 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 6
diff changeset
156 elem.append('b')
e1d0cd336bf3 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 6
diff changeset
157 l = list(elem.iter())
38
6e38bcef6030 ElementTree - Make iterators return all childs
Bastian Blank <bblank@thinkmo.de>
parents: 32
diff changeset
158 assert len(l) == 2
8
e1d0cd336bf3 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 6
diff changeset
159
e1d0cd336bf3 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 6
diff changeset
160 elem.append(Element('c'))
e1d0cd336bf3 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 6
diff changeset
161 l = list(elem.iter())
38
6e38bcef6030 ElementTree - Make iterators return all childs
Bastian Blank <bblank@thinkmo.de>
parents: 32
diff changeset
162 assert len(l) == 3
8
e1d0cd336bf3 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 6
diff changeset
163
e1d0cd336bf3 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 6
diff changeset
164 elem.append('d')
e1d0cd336bf3 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 6
diff changeset
165 l = list(elem.iter())
38
6e38bcef6030 ElementTree - Make iterators return all childs
Bastian Blank <bblank@thinkmo.de>
parents: 32
diff changeset
166 assert len(l) == 4
8
e1d0cd336bf3 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 6
diff changeset
167
e1d0cd336bf3 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 6
diff changeset
168 def test_Element_itertext():
e1d0cd336bf3 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 6
diff changeset
169 elem = Element('a')
e1d0cd336bf3 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 6
diff changeset
170 l = list(elem.itertext())
e1d0cd336bf3 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 6
diff changeset
171 assert len(l) == 0
e1d0cd336bf3 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 6
diff changeset
172
e1d0cd336bf3 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 6
diff changeset
173 elem.append('b')
e1d0cd336bf3 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 6
diff changeset
174 l = list(elem.itertext())
e1d0cd336bf3 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 6
diff changeset
175 assert len(l) == 1
e1d0cd336bf3 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 6
diff changeset
176
10
fc4b72233da0 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 8
diff changeset
177 def test_Comment():
fc4b72233da0 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 8
diff changeset
178 elem = Comment('a')
fc4b72233da0 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 8
diff changeset
179 assert serialize(elem) == '<!--a-->'
fc4b72233da0 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 8
diff changeset
180 assert isinstance(elem, Node)
fc4b72233da0 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 8
diff changeset
181
fc4b72233da0 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 8
diff changeset
182 def test_ProcessingInstruction():
fc4b72233da0 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 8
diff changeset
183 elem = ProcessingInstruction('a')
fc4b72233da0 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 8
diff changeset
184 assert serialize(elem) == '<?a?>'
fc4b72233da0 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 8
diff changeset
185 assert isinstance(elem, ProcessingInstruction)
fc4b72233da0 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 8
diff changeset
186
fc4b72233da0 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 8
diff changeset
187 elem = ProcessingInstruction('a', 'b')
fc4b72233da0 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 8
diff changeset
188 assert serialize(elem) == '<?a b?>'
fc4b72233da0 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 8
diff changeset
189
27
4dc29d2eac0e Force QName to be unicode.
Bastian Blank <bblank@thinkmo.de>
parents: 26
diff changeset
190 def test_QName___init__():
15
60f59340b897 Remove argument ordering weirdness of QName.
Bastian Blank <bblank@thinkmo.de>
parents: 10
diff changeset
191 qname = QName('a')
60f59340b897 Remove argument ordering weirdness of QName.
Bastian Blank <bblank@thinkmo.de>
parents: 10
diff changeset
192 assert qname.uri is None
60f59340b897 Remove argument ordering weirdness of QName.
Bastian Blank <bblank@thinkmo.de>
parents: 10
diff changeset
193 assert qname.name == 'a'
27
4dc29d2eac0e Force QName to be unicode.
Bastian Blank <bblank@thinkmo.de>
parents: 26
diff changeset
194 assert isinstance(qname.name, unicode)
15
60f59340b897 Remove argument ordering weirdness of QName.
Bastian Blank <bblank@thinkmo.de>
parents: 10
diff changeset
195 assert str(qname) == 'a'
60f59340b897 Remove argument ordering weirdness of QName.
Bastian Blank <bblank@thinkmo.de>
parents: 10
diff changeset
196 assert qname.text == 'a'
60f59340b897 Remove argument ordering weirdness of QName.
Bastian Blank <bblank@thinkmo.de>
parents: 10
diff changeset
197
60f59340b897 Remove argument ordering weirdness of QName.
Bastian Blank <bblank@thinkmo.de>
parents: 10
diff changeset
198 qname = QName('{b}a')
60f59340b897 Remove argument ordering weirdness of QName.
Bastian Blank <bblank@thinkmo.de>
parents: 10
diff changeset
199 assert qname.uri == 'b'
27
4dc29d2eac0e Force QName to be unicode.
Bastian Blank <bblank@thinkmo.de>
parents: 26
diff changeset
200 assert isinstance(qname.uri, unicode)
15
60f59340b897 Remove argument ordering weirdness of QName.
Bastian Blank <bblank@thinkmo.de>
parents: 10
diff changeset
201 assert qname.name == 'a'
60f59340b897 Remove argument ordering weirdness of QName.
Bastian Blank <bblank@thinkmo.de>
parents: 10
diff changeset
202 assert str(qname) == '{b}a'
60f59340b897 Remove argument ordering weirdness of QName.
Bastian Blank <bblank@thinkmo.de>
parents: 10
diff changeset
203 assert qname.text == '{b}a'
60f59340b897 Remove argument ordering weirdness of QName.
Bastian Blank <bblank@thinkmo.de>
parents: 10
diff changeset
204
60f59340b897 Remove argument ordering weirdness of QName.
Bastian Blank <bblank@thinkmo.de>
parents: 10
diff changeset
205 qname = QName('a', 'b')
60f59340b897 Remove argument ordering weirdness of QName.
Bastian Blank <bblank@thinkmo.de>
parents: 10
diff changeset
206 assert qname.uri == 'b'
60f59340b897 Remove argument ordering weirdness of QName.
Bastian Blank <bblank@thinkmo.de>
parents: 10
diff changeset
207 assert qname.name == 'a'
60f59340b897 Remove argument ordering weirdness of QName.
Bastian Blank <bblank@thinkmo.de>
parents: 10
diff changeset
208 assert str(qname) == '{b}a'
60f59340b897 Remove argument ordering weirdness of QName.
Bastian Blank <bblank@thinkmo.de>
parents: 10
diff changeset
209 assert qname.text == '{b}a'
60f59340b897 Remove argument ordering weirdness of QName.
Bastian Blank <bblank@thinkmo.de>
parents: 10
diff changeset
210
60f59340b897 Remove argument ordering weirdness of QName.
Bastian Blank <bblank@thinkmo.de>
parents: 10
diff changeset
211 py.test.raises(ValueError, QName, '{ba')
60f59340b897 Remove argument ordering weirdness of QName.
Bastian Blank <bblank@thinkmo.de>
parents: 10
diff changeset
212 py.test.raises(ValueError, QName, '{b}a', 'c')
60f59340b897 Remove argument ordering weirdness of QName.
Bastian Blank <bblank@thinkmo.de>
parents: 10
diff changeset
213
27
4dc29d2eac0e Force QName to be unicode.
Bastian Blank <bblank@thinkmo.de>
parents: 26
diff changeset
214 def test_QName___cmp__():
4dc29d2eac0e Force QName to be unicode.
Bastian Blank <bblank@thinkmo.de>
parents: 26
diff changeset
215 qname1 = QName('a')
4dc29d2eac0e Force QName to be unicode.
Bastian Blank <bblank@thinkmo.de>
parents: 26
diff changeset
216 qname2 = QName('a')
4dc29d2eac0e Force QName to be unicode.
Bastian Blank <bblank@thinkmo.de>
parents: 26
diff changeset
217
32
7b5ed8600569 Testcases for ElementTree - Add testcases for find and findall
Bastian Blank <bblank@thinkmo.de>
parents: 30
diff changeset
218 assert qname1 == qname2
7b5ed8600569 Testcases for ElementTree - Add testcases for find and findall
Bastian Blank <bblank@thinkmo.de>
parents: 30
diff changeset
219 assert qname1 == 'a'
7b5ed8600569 Testcases for ElementTree - Add testcases for find and findall
Bastian Blank <bblank@thinkmo.de>
parents: 30
diff changeset
220 assert 'a' == qname1
7b5ed8600569 Testcases for ElementTree - Add testcases for find and findall
Bastian Blank <bblank@thinkmo.de>
parents: 30
diff changeset
221
7b5ed8600569 Testcases for ElementTree - Add testcases for find and findall
Bastian Blank <bblank@thinkmo.de>
parents: 30
diff changeset
222 qname1 = QName('a', 'b')
7b5ed8600569 Testcases for ElementTree - Add testcases for find and findall
Bastian Blank <bblank@thinkmo.de>
parents: 30
diff changeset
223 qname2 = QName('{b}a')
7b5ed8600569 Testcases for ElementTree - Add testcases for find and findall
Bastian Blank <bblank@thinkmo.de>
parents: 30
diff changeset
224
7b5ed8600569 Testcases for ElementTree - Add testcases for find and findall
Bastian Blank <bblank@thinkmo.de>
parents: 30
diff changeset
225 assert qname1 == qname2
7b5ed8600569 Testcases for ElementTree - Add testcases for find and findall
Bastian Blank <bblank@thinkmo.de>
parents: 30
diff changeset
226 assert qname1 == '{b}a'
7b5ed8600569 Testcases for ElementTree - Add testcases for find and findall
Bastian Blank <bblank@thinkmo.de>
parents: 30
diff changeset
227 assert '{b}a' == qname1
27
4dc29d2eac0e Force QName to be unicode.
Bastian Blank <bblank@thinkmo.de>
parents: 26
diff changeset
228
6
ced434b6bf72 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 5
diff changeset
229 def test_XMLParser_simple1():
ced434b6bf72 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 5
diff changeset
230 elem = XML('<a />')
ced434b6bf72 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 5
diff changeset
231 assert elem.tag == 'a'
ced434b6bf72 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 5
diff changeset
232 assert len(elem) == 0
ced434b6bf72 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 5
diff changeset
233
ced434b6bf72 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 5
diff changeset
234 def test_XMLParser_simple2():
ced434b6bf72 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 5
diff changeset
235 elem = XML('<a><b /></a>')
ced434b6bf72 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 5
diff changeset
236 assert elem.tag == 'a'
ced434b6bf72 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 5
diff changeset
237 assert len(elem) == 1
ced434b6bf72 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 5
diff changeset
238 assert elem[0].tag == 'b'
ced434b6bf72 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 5
diff changeset
239 assert len(elem[0]) == 0
ced434b6bf72 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 5
diff changeset
240
ced434b6bf72 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 5
diff changeset
241 def test_XMLParser_text1():
ced434b6bf72 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 5
diff changeset
242 elem = XML('<a>b</a>')
ced434b6bf72 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 5
diff changeset
243 assert elem.tag == 'a'
23
4c1912ff58a3 Support initialization with children.
Bastian Blank <bblank@thinkmo.de>
parents: 18
diff changeset
244 assert isinstance(elem, Element)
6
ced434b6bf72 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 5
diff changeset
245 assert len(elem) == 1
23
4c1912ff58a3 Support initialization with children.
Bastian Blank <bblank@thinkmo.de>
parents: 18
diff changeset
246 assert elem[0] == 'b'
4c1912ff58a3 Support initialization with children.
Bastian Blank <bblank@thinkmo.de>
parents: 18
diff changeset
247 assert isinstance(elem[0], unicode)
6
ced434b6bf72 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 5
diff changeset
248
ced434b6bf72 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 5
diff changeset
249 def test_XMLParser_text2():
ced434b6bf72 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 5
diff changeset
250 elem = XML('<a>b<c>d</c>d</a>')
ced434b6bf72 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 5
diff changeset
251 assert elem.tag == 'a'
ced434b6bf72 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 5
diff changeset
252 assert len(elem) == 3
ced434b6bf72 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 5
diff changeset
253 assert elem[0] == 'b'
ced434b6bf72 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 5
diff changeset
254 assert elem[1].tag == 'c'
ced434b6bf72 Add testcases.
Bastian Blank <bblank@thinkmo.de>
parents: 5
diff changeset
255 assert elem[2] == 'd'
16
533331338691 Use parsed values of QName in namespace lookup.
Bastian Blank <bblank@thinkmo.de>
parents: 15
diff changeset
256
54
6d2aaba7ac4d Tree - Move serialization code into classes
Bastian Blank <bblank@thinkmo.de>
parents: 53
diff changeset
257 def test_XMLParser_namespace_1():
40
a8382b8cded5 Testcases for ElementTree - Check all variants of namespace attributes
Bastian Blank <bblank@thinkmo.de>
parents: 38
diff changeset
258 elem = XML('<b xmlns="c" d="e"/>')
25
47ae505e63ea Parse tags and attribute names always in QName.
Bastian Blank <bblank@thinkmo.de>
parents: 24
diff changeset
259 assert isinstance(elem.tag, QName)
26
eeb0eb69c1da Fix namespace uri in XML parser.
Bastian Blank <bblank@thinkmo.de>
parents: 25
diff changeset
260 assert elem.tag == QName('b', 'c')
40
a8382b8cded5 Testcases for ElementTree - Check all variants of namespace attributes
Bastian Blank <bblank@thinkmo.de>
parents: 38
diff changeset
261 assert elem.attrib == {QName('d', None): 'e'}
26
eeb0eb69c1da Fix namespace uri in XML parser.
Bastian Blank <bblank@thinkmo.de>
parents: 25
diff changeset
262 assert serialize(elem) == '<ns0:b d="e" xmlns:ns0="c" />'
54
6d2aaba7ac4d Tree - Move serialization code into classes
Bastian Blank <bblank@thinkmo.de>
parents: 53
diff changeset
263 assert serialize(elem, namespaces={'c': ''}) == '<b d="e" xmlns="c" />'
16
533331338691 Use parsed values of QName in namespace lookup.
Bastian Blank <bblank@thinkmo.de>
parents: 15
diff changeset
264
54
6d2aaba7ac4d Tree - Move serialization code into classes
Bastian Blank <bblank@thinkmo.de>
parents: 53
diff changeset
265 def test_XMLParser_namespace_2():
40
a8382b8cded5 Testcases for ElementTree - Check all variants of namespace attributes
Bastian Blank <bblank@thinkmo.de>
parents: 38
diff changeset
266 elem = XML('<a:b xmlns:a="c" d="e" a:f="g"/>')
a8382b8cded5 Testcases for ElementTree - Check all variants of namespace attributes
Bastian Blank <bblank@thinkmo.de>
parents: 38
diff changeset
267 assert isinstance(elem.tag, QName)
26
eeb0eb69c1da Fix namespace uri in XML parser.
Bastian Blank <bblank@thinkmo.de>
parents: 25
diff changeset
268 assert elem.tag == QName('b', 'c')
40
a8382b8cded5 Testcases for ElementTree - Check all variants of namespace attributes
Bastian Blank <bblank@thinkmo.de>
parents: 38
diff changeset
269 assert elem.attrib == {'d': 'e', QName('f', 'c'): 'g'}
a8382b8cded5 Testcases for ElementTree - Check all variants of namespace attributes
Bastian Blank <bblank@thinkmo.de>
parents: 38
diff changeset
270 assert serialize(elem) == '<ns0:b d="e" ns0:f="g" xmlns:ns0="c" />'
54
6d2aaba7ac4d Tree - Move serialization code into classes
Bastian Blank <bblank@thinkmo.de>
parents: 53
diff changeset
271 assert serialize(elem, namespaces={'c': ''}) == '<b d="e" f="g" xmlns="c" />'
16
533331338691 Use parsed values of QName in namespace lookup.
Bastian Blank <bblank@thinkmo.de>
parents: 15
diff changeset
272
40
a8382b8cded5 Testcases for ElementTree - Check all variants of namespace attributes
Bastian Blank <bblank@thinkmo.de>
parents: 38
diff changeset
273