Blame python/tests/walker.py

Packit 423ecb
#!/usr/bin/python -u
Packit 423ecb
#
Packit 423ecb
# this tests the entities substitutions with the XmlTextReader interface
Packit 423ecb
#
Packit 423ecb
import sys
Packit 423ecb
import libxml2
Packit 423ecb
Packit 423ecb
# Memory debug specific
Packit 423ecb
libxml2.debugMemory(1)
Packit 423ecb
Packit 423ecb
result = ""
Packit 423ecb
def processNode(reader):
Packit 423ecb
    global result
Packit 423ecb
Packit 423ecb
    result = result + "%d %d %s %d\n" % (reader.Depth(), reader.NodeType(),
Packit 423ecb
			   reader.Name(), reader.IsEmptyElement())
Packit 423ecb
Packit 423ecb
#
Packit 423ecb
# Parse a document testing the readerForxxx API
Packit 423ecb
#
Packit 423ecb
docstr="""<foo>
Packit 423ecb
<label>some text</label>
Packit 423ecb
<item>100</item>
Packit 423ecb
</foo>"""
Packit 423ecb
expect="""0 1 foo 0
Packit 423ecb
1 14 #text 0
Packit 423ecb
1 1 label 0
Packit 423ecb
2 3 #text 0
Packit 423ecb
1 15 label 0
Packit 423ecb
1 14 #text 0
Packit 423ecb
1 1 item 0
Packit 423ecb
2 3 #text 0
Packit 423ecb
1 15 item 0
Packit 423ecb
1 14 #text 0
Packit 423ecb
0 15 foo 0
Packit 423ecb
"""
Packit 423ecb
result = ""
Packit 423ecb
Packit 423ecb
doc = libxml2.parseDoc(docstr)
Packit 423ecb
reader = doc.readerWalker();
Packit 423ecb
ret = reader.Read()
Packit 423ecb
while ret == 1:
Packit 423ecb
    processNode(reader)
Packit 423ecb
    ret = reader.Read()
Packit 423ecb
Packit 423ecb
if ret != 0:
Packit 423ecb
    print("Error parsing the document test1")
Packit 423ecb
    sys.exit(1)
Packit 423ecb
Packit 423ecb
if result != expect:
Packit 423ecb
    print("Unexpected result for test1")
Packit 423ecb
    print(result)
Packit 423ecb
    sys.exit(1)
Packit 423ecb
Packit 423ecb
doc.freeDoc()
Packit 423ecb
Packit 423ecb
#
Packit 423ecb
# Reuse the reader for another document testing the ReaderNewWalker API
Packit 423ecb
#
Packit 423ecb
docstr="""<foo>
Packit 423ecb
<label>some text</label>
Packit 423ecb
<item>1000</item>
Packit 423ecb
</foo>"""
Packit 423ecb
expect="""0 1 foo 0
Packit 423ecb
1 14 #text 0
Packit 423ecb
1 1 label 0
Packit 423ecb
2 3 #text 0
Packit 423ecb
1 15 label 0
Packit 423ecb
1 14 #text 0
Packit 423ecb
1 1 item 0
Packit 423ecb
2 3 #text 0
Packit 423ecb
1 15 item 0
Packit 423ecb
1 14 #text 0
Packit 423ecb
0 15 foo 0
Packit 423ecb
"""
Packit 423ecb
result = ""
Packit 423ecb
Packit 423ecb
doc = libxml2.parseDoc(docstr)
Packit 423ecb
reader.NewWalker(doc)
Packit 423ecb
Packit 423ecb
ret = reader.Read()
Packit 423ecb
while ret == 1:
Packit 423ecb
    processNode(reader)
Packit 423ecb
    ret = reader.Read()
Packit 423ecb
Packit 423ecb
if ret != 0:
Packit 423ecb
    print("Error parsing the document test2")
Packit 423ecb
    sys.exit(1)
Packit 423ecb
Packit 423ecb
if result != expect:
Packit 423ecb
    print("Unexpected result for test2")
Packit 423ecb
    print(result)
Packit 423ecb
    sys.exit(1)
Packit 423ecb
Packit 423ecb
doc.freeDoc()
Packit 423ecb
Packit 423ecb
#
Packit 423ecb
# Reuse the reader for another document testing the ReaderNewxxx API
Packit 423ecb
#
Packit 423ecb
docstr="""<foo>
Packit 423ecb
<label>some text</label>
Packit 423ecb
<item>1000</item>
Packit 423ecb
</foo>"""
Packit 423ecb
expect="""0 1 foo 0
Packit 423ecb
1 14 #text 0
Packit 423ecb
1 1 label 0
Packit 423ecb
2 3 #text 0
Packit 423ecb
1 15 label 0
Packit 423ecb
1 14 #text 0
Packit 423ecb
1 1 item 0
Packit 423ecb
2 3 #text 0
Packit 423ecb
1 15 item 0
Packit 423ecb
1 14 #text 0
Packit 423ecb
0 15 foo 0
Packit 423ecb
"""
Packit 423ecb
result = ""
Packit 423ecb
Packit 423ecb
reader.NewDoc(docstr, "test3", None, 0)
Packit 423ecb
ret = reader.Read()
Packit 423ecb
while ret == 1:
Packit 423ecb
    processNode(reader)
Packit 423ecb
    ret = reader.Read()
Packit 423ecb
Packit 423ecb
if ret != 0:
Packit 423ecb
    print("Error parsing the document test3")
Packit 423ecb
    sys.exit(1)
Packit 423ecb
Packit 423ecb
if result != expect:
Packit 423ecb
    print("Unexpected result for test3")
Packit 423ecb
    print(result)
Packit 423ecb
    sys.exit(1)
Packit 423ecb
Packit 423ecb
#
Packit 423ecb
# cleanup
Packit 423ecb
#
Packit 423ecb
del reader
Packit 423ecb
Packit 423ecb
# Memory debug specific
Packit 423ecb
libxml2.cleanupParser()
Packit 423ecb
if libxml2.debugMemory(1) == 0:
Packit 423ecb
    print("OK")
Packit 423ecb
else:
Packit 423ecb
    print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
Packit 423ecb
    libxml2.dumpMemory()