blob: b6efa489f31e40491e81dd799330a7b23240fb16 [file] [log] [blame]
Daniel Veillard0eb38c72002-12-14 23:00:35 +00001#!/usr/bin/python -u
2import libxml2
3import StringIO
4import sys
5
6# Memory debug specific
7libxml2.debugMemory(1)
8
9f = StringIO.StringIO("""<a><b b1="b1"/><c>content of c</c></a>""")
10input = libxml2.inputBuffer(f)
11reader = input.newTextReader()
12ret = reader.read()
13if ret != 1:
14 print "Error reading to first element"
15 sys.exit(1)
16if reader.name() != "a" or reader.isEmptyElement() != 0 or \
17 reader.nodeType() != 1 or reader.hasAttributes() != 0:
18 print "Error reading the first element"
19 sys.exit(1)
20ret = reader.read()
21if ret != 1:
22 print "Error reading to second element"
23 sys.exit(1)
24if reader.name() != "b" or reader.isEmptyElement() != 1 or \
25 reader.nodeType() != 1 or reader.hasAttributes() != 1:
26 print "Error reading the second element"
27 sys.exit(1)
28ret = reader.read()
29if ret != 1:
30 print "Error reading to third element"
31 sys.exit(1)
32if reader.name() != "c" or reader.isEmptyElement() != 0 or \
33 reader.nodeType() != 1 or reader.hasAttributes() != 0:
34 print "Error reading the third element"
35 sys.exit(1)
36ret = reader.read()
37if ret != 1:
38 print "Error reading to text node"
39 sys.exit(1)
40if reader.name() != "#text" or reader.isEmptyElement() != 0 or \
41 reader.nodeType() != 3 or reader.hasAttributes() != 0 or \
42 reader.value() != "content of c":
43 print "Error reading the text node"
44 sys.exit(1)
45ret = reader.read()
46if ret != 1:
47 print "Error reading to end of third element"
48 sys.exit(1)
49if reader.name() != "c" or reader.isEmptyElement() != 0 or \
50 reader.nodeType() != 15 or reader.hasAttributes() != 0:
51 print "Error reading the end of third element"
52 sys.exit(1)
53ret = reader.read()
54if ret != 1:
55 print "Error reading to end of first element"
56 sys.exit(1)
57if reader.name() != "a" or reader.isEmptyElement() != 0 or \
58 reader.nodeType() != 15 or reader.hasAttributes() != 0:
59 print "Error reading the end of first element"
60 sys.exit(1)
61ret = reader.read()
62if ret != 0:
63 print "Error reading to end of document"
64 sys.exit(1)
65
66#
67# example from the XmlTextReader docs
68#
69f = StringIO.StringIO("""<test xmlns:dt="urn:datatypes" dt:type="int"/>""")
70input = libxml2.inputBuffer(f)
71reader = input.newTextReader()
72
73ret = reader.read()
74if ret != 1:
75 print "Error reading test element"
76 sys.exit(1)
77if reader.getAttributeNo(0) != "urn:datatypes" or \
78 reader.getAttributeNo(1) != "int" or \
79 reader.getAttributeNs("type", "urn:datatypes") != "int" or \
80 reader.getAttribute("dt:type") != "int":
81 print "error reading test attributes"
82 sys.exit(1)
83
Daniel Veillardda46d2d2002-12-15 23:36:49 +000084#
85# example from the XmlTextReader docs
86#
87f = StringIO.StringIO("""<root xmlns:a="urn:456">
88<item>
89<ref href="a:b"/>
90</item>
91</root>""")
92input = libxml2.inputBuffer(f)
93reader = input.newTextReader()
94
95ret = reader.read()
96while ret == 1:
97 if reader.name() == "ref":
98 if reader.lookupNamespace("a") != "urn:456":
99 print "error resolving namespace prefix"
100 sys.exit(1)
101 break
102 ret = reader.read()
103if ret != 1:
104 print "Error finding the ref element"
105 sys.exit(1)
106
107#
108# Home made example for the various attribute access functions
109#
110f = StringIO.StringIO("""<testattr xmlns="urn:1" xmlns:a="urn:2" b="b" a:b="a:b"/>""")
111input = libxml2.inputBuffer(f)
112reader = input.newTextReader()
113ret = reader.read()
114if ret != 1:
115 print "Error reading the testattr element"
116 sys.exit(1)
117#
118# Attribute exploration by index
119#
120if reader.moveToAttributeNo(0) != 1:
121 print "Failed moveToAttribute(0)"
122 sys.exit(1)
123if reader.value() != "urn:1":
124 print "Failed to read attribute(0)"
125 sys.exit(1)
126if reader.name() != "xmlns":
127 print "Failed to read attribute(0) name"
128 sys.exit(1)
129if reader.moveToAttributeNo(1) != 1:
130 print "Failed moveToAttribute(1)"
131 sys.exit(1)
132if reader.value() != "urn:2":
133 print "Failed to read attribute(1)"
134 sys.exit(1)
135if reader.name() != "xmlns:a":
136 print "Failed to read attribute(1) name"
137 sys.exit(1)
138if reader.moveToAttributeNo(2) != 1:
139 print "Failed moveToAttribute(2)"
140 sys.exit(1)
141if reader.value() != "b":
142 print "Failed to read attribute(2)"
143 sys.exit(1)
144if reader.name() != "b":
145 print "Failed to read attribute(2) name"
146 sys.exit(1)
147if reader.moveToAttributeNo(3) != 1:
148 print "Failed moveToAttribute(3)"
149 sys.exit(1)
150if reader.value() != "a:b":
151 print "Failed to read attribute(3)"
152 sys.exit(1)
153if reader.name() != "a:b":
154 print "Failed to read attribute(3) name"
155 sys.exit(1)
156#
157# Attribute exploration by name
158#
159if reader.moveToAttribute("xmlns") != 1:
160 print "Failed moveToAttribute('xmlns')"
161 sys.exit(1)
162if reader.value() != "urn:1":
163 print "Failed to read attribute('xmlns')"
164 sys.exit(1)
165if reader.moveToAttribute("xmlns:a") != 1:
166 print "Failed moveToAttribute('xmlns')"
167 sys.exit(1)
168if reader.value() != "urn:2":
169 print "Failed to read attribute('xmlns:a')"
170 sys.exit(1)
171if reader.moveToAttribute("b") != 1:
172 print "Failed moveToAttribute('b')"
173 sys.exit(1)
174if reader.value() != "b":
175 print "Failed to read attribute('b')"
176 sys.exit(1)
177if reader.moveToAttribute("a:b") != 1:
178 print "Failed moveToAttribute('a:b')"
179 sys.exit(1)
180if reader.value() != "a:b":
181 print "Failed to read attribute('a:b')"
182 sys.exit(1)
183if reader.moveToAttributeNs("b", "urn:2") != 1:
184 print "Failed moveToAttribute('b', 'urn:2')"
185 sys.exit(1)
186if reader.value() != "a:b":
187 print "Failed to read attribute('b', 'urn:2')"
188 sys.exit(1)
189#
190# Go back and read in sequence
191#
192if reader.moveToElement() != 1:
193 print "Failed to move back to element"
194 sys.exit(1)
195if reader.moveToFirstAttribute() != 1:
196 print "Failed to move to first attribute"
197 sys.exit(1)
198if reader.value() != "urn:1":
199 print "Failed to read attribute(0)"
200 sys.exit(1)
201if reader.name() != "xmlns":
202 print "Failed to read attribute(0) name"
203 sys.exit(1)
204if reader.moveToNextAttribute() != 1:
205 print "Failed to move to next attribute"
206 sys.exit(1)
207if reader.value() != "urn:2":
208 print "Failed to read attribute(1)"
209 sys.exit(1)
210if reader.name() != "xmlns:a":
211 print "Failed to read attribute(1) name"
212 sys.exit(1)
213if reader.moveToNextAttribute() != 1:
214 print "Failed to move to next attribute"
215 sys.exit(1)
216if reader.value() != "b":
217 print "Failed to read attribute(2)"
218 sys.exit(1)
219if reader.name() != "b":
220 print "Failed to read attribute(2) name"
221 sys.exit(1)
222if reader.moveToNextAttribute() != 1:
223 print "Failed to move to next attribute"
224 sys.exit(1)
225if reader.value() != "a:b":
226 print "Failed to read attribute(3)"
227 sys.exit(1)
228if reader.name() != "a:b":
229 print "Failed to read attribute(3) name"
230 sys.exit(1)
231if reader.moveToNextAttribute() != 0:
232 print "Failed to detect last attribute"
233 sys.exit(1)
234
Daniel Veillard0eb38c72002-12-14 23:00:35 +0000235del f
236del input
237del reader
238
239# Memory debug specific
240libxml2.cleanupParser()
241if libxml2.debugMemory(1) == 0:
242 print "OK"
243else:
244 print "Memory leak %d bytes" % (libxml2.debugMemory(1))
245 libxml2.dumpMemory()