Blame python/tests/walker.py

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