1: #!/usr/bin/python -u
2: #
3: # this tests the entities substitutions with the XmlTextReader interface
4: #
5: import sys
6: import libxml2
7:
8: # Memory debug specific
9: libxml2.debugMemory(1)
10:
11: result = ""
12: def processNode(reader):
13: global result
14:
15: result = result + "%d %d %s %d\n" % (reader.Depth(), reader.NodeType(),
16: reader.Name(), reader.IsEmptyElement())
17:
18: #
19: # Parse a document testing the readerForxxx API
20: #
21: docstr="""<foo>
22: <label>some text</label>
23: <item>100</item>
24: </foo>"""
25: expect="""0 1 foo 0
26: 1 14 #text 0
27: 1 1 label 0
28: 2 3 #text 0
29: 1 15 label 0
30: 1 14 #text 0
31: 1 1 item 0
32: 2 3 #text 0
33: 1 15 item 0
34: 1 14 #text 0
35: 0 15 foo 0
36: """
37: result = ""
38:
39: doc = libxml2.parseDoc(docstr)
40: reader = doc.readerWalker();
41: ret = reader.Read()
42: while ret == 1:
43: processNode(reader)
44: ret = reader.Read()
45:
46: if ret != 0:
47: print("Error parsing the document test1")
48: sys.exit(1)
49:
50: if result != expect:
51: print("Unexpected result for test1")
52: print(result)
53: sys.exit(1)
54:
55: doc.freeDoc()
56:
57: #
58: # Reuse the reader for another document testing the ReaderNewWalker API
59: #
60: docstr="""<foo>
61: <label>some text</label>
62: <item>1000</item>
63: </foo>"""
64: expect="""0 1 foo 0
65: 1 14 #text 0
66: 1 1 label 0
67: 2 3 #text 0
68: 1 15 label 0
69: 1 14 #text 0
70: 1 1 item 0
71: 2 3 #text 0
72: 1 15 item 0
73: 1 14 #text 0
74: 0 15 foo 0
75: """
76: result = ""
77:
78: doc = libxml2.parseDoc(docstr)
79: reader.NewWalker(doc)
80:
81: ret = reader.Read()
82: while ret == 1:
83: processNode(reader)
84: ret = reader.Read()
85:
86: if ret != 0:
87: print("Error parsing the document test2")
88: sys.exit(1)
89:
90: if result != expect:
91: print("Unexpected result for test2")
92: print(result)
93: sys.exit(1)
94:
95: doc.freeDoc()
96:
97: #
98: # Reuse the reader for another document testing the ReaderNewxxx API
99: #
100: docstr="""<foo>
101: <label>some text</label>
102: <item>1000</item>
103: </foo>"""
104: expect="""0 1 foo 0
105: 1 14 #text 0
106: 1 1 label 0
107: 2 3 #text 0
108: 1 15 label 0
109: 1 14 #text 0
110: 1 1 item 0
111: 2 3 #text 0
112: 1 15 item 0
113: 1 14 #text 0
114: 0 15 foo 0
115: """
116: result = ""
117:
118: reader.NewDoc(docstr, "test3", None, 0)
119: ret = reader.Read()
120: while ret == 1:
121: processNode(reader)
122: ret = reader.Read()
123:
124: if ret != 0:
125: print("Error parsing the document test3")
126: sys.exit(1)
127:
128: if result != expect:
129: print("Unexpected result for test3")
130: print(result)
131: sys.exit(1)
132:
133: #
134: # cleanup
135: #
136: del reader
137:
138: # Memory debug specific
139: libxml2.cleanupParser()
140: if libxml2.debugMemory(1) == 0:
141: print("OK")
142: else:
143: print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
144: libxml2.dumpMemory()
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>