Blame python/tests/reader.py

Packit Service a31ea6
#!/usr/bin/python -u
Packit Service a31ea6
# -*- coding: ISO-8859-1 -*-
Packit Service a31ea6
#
Packit Service a31ea6
# this tests the basic APIs of the XmlTextReader interface
Packit Service a31ea6
#
Packit Service a31ea6
import libxml2
Packit Service a31ea6
import sys
Packit Service a31ea6
try:
Packit Service a31ea6
    import StringIO
Packit Service a31ea6
    str_io = StringIO.StringIO
Packit Service a31ea6
except:
Packit Service a31ea6
    import io
Packit Service a31ea6
    str_io = io.StringIO
Packit Service a31ea6
Packit Service a31ea6
# Memory debug specific
Packit Service a31ea6
libxml2.debugMemory(1)
Packit Service a31ea6
Packit Service a31ea6
f = str_io("""<c>content of c</c>""")
Packit Service a31ea6
input = libxml2.inputBuffer(f)
Packit Service a31ea6
reader = input.newTextReader("test1")
Packit Service a31ea6
ret = reader.Read()
Packit Service a31ea6
if ret != 1:
Packit Service a31ea6
    print("test1: Error reading to first element")
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
if reader.Name() != "a" or reader.IsEmptyElement() != 0 or \
Packit Service a31ea6
   reader.NodeType() != 1 or reader.HasAttributes() != 0:
Packit Service a31ea6
    print("test1: Error reading the first element")
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
ret = reader.Read()
Packit Service a31ea6
if ret != 1:
Packit Service a31ea6
    print("test1: Error reading to second element")
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
if reader.Name() != "b" or reader.IsEmptyElement() != 1 or \
Packit Service a31ea6
   reader.NodeType() != 1 or reader.HasAttributes() != 1:
Packit Service a31ea6
    print("test1: Error reading the second element")
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
ret = reader.Read()
Packit Service a31ea6
if ret != 1:
Packit Service a31ea6
    print("test1: Error reading to third element")
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
if reader.Name() != "c" or reader.IsEmptyElement() != 0 or \
Packit Service a31ea6
   reader.NodeType() != 1 or reader.HasAttributes() != 0:
Packit Service a31ea6
    print("test1: Error reading the third element")
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
ret = reader.Read()
Packit Service a31ea6
if ret != 1:
Packit Service a31ea6
    print("test1: Error reading to text node")
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
if reader.Name() != "#text" or reader.IsEmptyElement() != 0 or \
Packit Service a31ea6
   reader.NodeType() != 3 or reader.HasAttributes() != 0 or \
Packit Service a31ea6
   reader.Value() != "content of c":
Packit Service a31ea6
    print("test1: Error reading the text node")
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
ret = reader.Read()
Packit Service a31ea6
if ret != 1:
Packit Service a31ea6
    print("test1: Error reading to end of third element")
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
if reader.Name() != "c" or reader.IsEmptyElement() != 0 or \
Packit Service a31ea6
   reader.NodeType() != 15 or reader.HasAttributes() != 0:
Packit Service a31ea6
    print("test1: Error reading the end of third element")
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
ret = reader.Read()
Packit Service a31ea6
if ret != 1:
Packit Service a31ea6
    print("test1: Error reading to end of first element")
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
if reader.Name() != "a" or reader.IsEmptyElement() != 0 or \
Packit Service a31ea6
   reader.NodeType() != 15 or reader.HasAttributes() != 0:
Packit Service a31ea6
    print("test1: Error reading the end of first element")
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
ret = reader.Read()
Packit Service a31ea6
if ret != 0:
Packit Service a31ea6
    print("test1: Error reading to end of document")
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
Packit Service a31ea6
#
Packit Service a31ea6
# example from the XmlTextReader docs
Packit Service a31ea6
#
Packit Service a31ea6
f = str_io("""<test xmlns:dt="urn:datatypes" dt:type="int"/>""")
Packit Service a31ea6
input = libxml2.inputBuffer(f)
Packit Service a31ea6
reader = input.newTextReader("test2")
Packit Service a31ea6
Packit Service a31ea6
ret = reader.Read()
Packit Service a31ea6
if ret != 1:
Packit Service a31ea6
    print("Error reading test element")
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
if reader.GetAttributeNo(0) != "urn:datatypes" or \
Packit Service a31ea6
   reader.GetAttributeNo(1) != "int" or \
Packit Service a31ea6
   reader.GetAttributeNs("type", "urn:datatypes") != "int" or \
Packit Service a31ea6
   reader.GetAttribute("dt:type") != "int":
Packit Service a31ea6
    print("error reading test attributes")
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
Packit Service a31ea6
#
Packit Service a31ea6
# example from the XmlTextReader docs
Packit Service a31ea6
#
Packit Service a31ea6
f = str_io("""<root xmlns:a="urn:456">
Packit Service a31ea6
<item>
Packit Service a31ea6
<ref href="a:b"/>
Packit Service a31ea6
</item>
Packit Service a31ea6
</root>""")
Packit Service a31ea6
input = libxml2.inputBuffer(f)
Packit Service a31ea6
reader = input.newTextReader("test3")
Packit Service a31ea6
Packit Service a31ea6
ret = reader.Read()
Packit Service a31ea6
while ret == 1:
Packit Service a31ea6
    if reader.Name() == "ref":
Packit Service a31ea6
        if reader.LookupNamespace("a") != "urn:456":
Packit Service a31ea6
            print("error resolving namespace prefix")
Packit Service a31ea6
            sys.exit(1)
Packit Service a31ea6
        break
Packit Service a31ea6
    ret = reader.Read()
Packit Service a31ea6
if ret != 1:
Packit Service a31ea6
    print("Error finding the ref element")
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
Packit Service a31ea6
#
Packit Service a31ea6
# Home made example for the various attribute access functions
Packit Service a31ea6
#
Packit Service a31ea6
f = str_io("""<testattr xmlns="urn:1" xmlns:a="urn:2" b="b" a:b="a:b"/>""")
Packit Service a31ea6
input = libxml2.inputBuffer(f)
Packit Service a31ea6
reader = input.newTextReader("test4")
Packit Service a31ea6
ret = reader.Read()
Packit Service a31ea6
if ret != 1:
Packit Service a31ea6
    print("Error reading the testattr element")
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
#
Packit Service a31ea6
# Attribute exploration by index
Packit Service a31ea6
#
Packit Service a31ea6
if reader.MoveToAttributeNo(0) != 1:
Packit Service a31ea6
    print("Failed moveToAttribute(0)")
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
if reader.Value() != "urn:1":
Packit Service a31ea6
    print("Failed to read attribute(0)")
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
if reader.Name() != "xmlns":
Packit Service a31ea6
    print("Failed to read attribute(0) name")
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
if reader.MoveToAttributeNo(1) != 1:
Packit Service a31ea6
    print("Failed moveToAttribute(1)")
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
if reader.Value() != "urn:2":
Packit Service a31ea6
    print("Failed to read attribute(1)")
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
if reader.Name() != "xmlns:a":
Packit Service a31ea6
    print("Failed to read attribute(1) name")
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
if reader.MoveToAttributeNo(2) != 1:
Packit Service a31ea6
    print("Failed moveToAttribute(2)")
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
if reader.Value() != "b":
Packit Service a31ea6
    print("Failed to read attribute(2)")
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
if reader.Name() != "b":
Packit Service a31ea6
    print("Failed to read attribute(2) name")
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
if reader.MoveToAttributeNo(3) != 1:
Packit Service a31ea6
    print("Failed moveToAttribute(3)")
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
if reader.Value() != "a:b":
Packit Service a31ea6
    print("Failed to read attribute(3)")
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
if reader.Name() != "a:b":
Packit Service a31ea6
    print("Failed to read attribute(3) name")
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
#
Packit Service a31ea6
# Attribute exploration by name
Packit Service a31ea6
#
Packit Service a31ea6
if reader.MoveToAttribute("xmlns") != 1:
Packit Service a31ea6
    print("Failed moveToAttribute('xmlns')")
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
if reader.Value() != "urn:1":
Packit Service a31ea6
    print("Failed to read attribute('xmlns')")
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
if reader.MoveToAttribute("xmlns:a") != 1:
Packit Service a31ea6
    print("Failed moveToAttribute('xmlns')")
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
if reader.Value() != "urn:2":
Packit Service a31ea6
    print("Failed to read attribute('xmlns:a')")
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
if reader.MoveToAttribute("b") != 1:
Packit Service a31ea6
    print("Failed moveToAttribute('b')")
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
if reader.Value() != "b":
Packit Service a31ea6
    print("Failed to read attribute('b')")
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
if reader.MoveToAttribute("a:b") != 1:
Packit Service a31ea6
    print("Failed moveToAttribute('a:b')")
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
if reader.Value() != "a:b":
Packit Service a31ea6
    print("Failed to read attribute('a:b')")
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
if reader.MoveToAttributeNs("b", "urn:2") != 1:
Packit Service a31ea6
    print("Failed moveToAttribute('b', 'urn:2')")
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
if reader.Value() != "a:b":
Packit Service a31ea6
    print("Failed to read attribute('b', 'urn:2')")
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
#
Packit Service a31ea6
# Go back and read in sequence
Packit Service a31ea6
#
Packit Service a31ea6
if reader.MoveToElement() != 1:
Packit Service a31ea6
    print("Failed to move back to element")
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
if reader.MoveToFirstAttribute() != 1:
Packit Service a31ea6
    print("Failed to move to first attribute")
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
if reader.Value() != "urn:1":
Packit Service a31ea6
    print("Failed to read attribute(0)")
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
if reader.Name() != "xmlns":
Packit Service a31ea6
    print("Failed to read attribute(0) name")
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
if reader.MoveToNextAttribute() != 1:
Packit Service a31ea6
    print("Failed to move to next attribute")
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
if reader.Value() != "urn:2":
Packit Service a31ea6
    print("Failed to read attribute(1)")
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
if reader.Name() != "xmlns:a":
Packit Service a31ea6
    print("Failed to read attribute(1) name")
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
if reader.MoveToNextAttribute() != 1:
Packit Service a31ea6
    print("Failed to move to next attribute")
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
if reader.Value() != "b":
Packit Service a31ea6
    print("Failed to read attribute(2)")
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
if reader.Name() != "b":
Packit Service a31ea6
    print("Failed to read attribute(2) name")
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
if reader.MoveToNextAttribute() != 1:
Packit Service a31ea6
    print("Failed to move to next attribute")
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
if reader.Value() != "a:b":
Packit Service a31ea6
    print("Failed to read attribute(3)")
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
if reader.Name() != "a:b":
Packit Service a31ea6
    print("Failed to read attribute(3) name")
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
if reader.MoveToNextAttribute() != 0:
Packit Service a31ea6
    print("Failed to detect last attribute")
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
Packit Service a31ea6
    
Packit Service a31ea6
#
Packit Service a31ea6
# a couple of tests for namespace nodes
Packit Service a31ea6
#
Packit Service a31ea6
f = str_io("""""")
Packit Service a31ea6
input = libxml2.inputBuffer(f)
Packit Service a31ea6
reader = input.newTextReader("test6")
Packit Service a31ea6
ret = reader.Read()
Packit Service a31ea6
if ret != 1:
Packit Service a31ea6
    print("test6: failed to Read()")
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
ret = reader.MoveToFirstAttribute()
Packit Service a31ea6
if ret != 1:
Packit Service a31ea6
    print("test6: failed to MoveToFirstAttribute()")
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
if reader.NamespaceUri() != "http://www.w3.org/2000/xmlns/" or \
Packit Service a31ea6
   reader.LocalName() != "xmlns" or reader.Name() != "xmlns" or \
Packit Service a31ea6
   reader.Value() != "http://example.com/foo" or reader.NodeType() != 2:
Packit Service a31ea6
    print("test6: failed to read the namespace node")
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
Packit Service a31ea6
f = str_io("""""")
Packit Service a31ea6
input = libxml2.inputBuffer(f)
Packit Service a31ea6
reader = input.newTextReader("test7")
Packit Service a31ea6
ret = reader.Read()
Packit Service a31ea6
if ret != 1:
Packit Service a31ea6
    print("test7: failed to Read()")
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
ret = reader.MoveToFirstAttribute()
Packit Service a31ea6
if ret != 1:
Packit Service a31ea6
    print("test7: failed to MoveToFirstAttribute()")
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
if reader.NamespaceUri() != "http://www.w3.org/2000/xmlns/" or \
Packit Service a31ea6
   reader.LocalName() != "prefix" or reader.Name() != "xmlns:prefix" or \
Packit Service a31ea6
   reader.Value() != "http://example.com/foo" or reader.NodeType() != 2:
Packit Service a31ea6
    print("test7: failed to read the namespace node")
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
Packit Service a31ea6
#
Packit Service a31ea6
# Test for a limit case:
Packit Service a31ea6
#
Packit Service a31ea6
f = str_io("""""")
Packit Service a31ea6
input = libxml2.inputBuffer(f)
Packit Service a31ea6
reader = input.newTextReader("test8")
Packit Service a31ea6
ret = reader.Read()
Packit Service a31ea6
if ret != 1:
Packit Service a31ea6
    print("test8: failed to read the node")
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
if reader.Name() != "a" or reader.IsEmptyElement() != 1:
Packit Service a31ea6
    print("test8: failed to analyze the node")
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
ret = reader.Read()
Packit Service a31ea6
if ret != 0:
Packit Service a31ea6
    print("test8: failed to detect the EOF")
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
Packit Service a31ea6
#
Packit Service a31ea6
# Another test provided by Stéphane Bidoul and checked with C#
Packit Service a31ea6
#
Packit Service a31ea6
def tst_reader(s):
Packit Service a31ea6
    f = str_io(s)
Packit Service a31ea6
    input = libxml2.inputBuffer(f)
Packit Service a31ea6
    reader = input.newTextReader("tst")
Packit Service a31ea6
    res = ""
Packit Service a31ea6
    while reader.Read():
Packit Service a31ea6
        res=res + "%s (%s) [%s] %d %d\n" % (reader.NodeType(),reader.Name(),
Packit Service a31ea6
                                      reader.Value(), reader.IsEmptyElement(),
Packit Service a31ea6
                                      reader.Depth())
Packit Service a31ea6
        if reader.NodeType() == 1: # Element
Packit Service a31ea6
            while reader.MoveToNextAttribute():
Packit Service a31ea6
                res = res + "-- %s (%s) [%s] %d %d\n" % (reader.NodeType(),
Packit Service a31ea6
                                       reader.Name(),reader.Value(),
Packit Service a31ea6
                                       reader.IsEmptyElement(), reader.Depth())
Packit Service a31ea6
    return res
Packit Service a31ea6
    
Packit Service a31ea6
doc="""<c>content of c</c>"""
Packit Service a31ea6
expect="""1 (a) [None] 0 0
Packit Service a31ea6
1 (b) [None] 1 1
Packit Service a31ea6
-- 2 (b1) [b1] 0 2
Packit Service a31ea6
1 (c) [None] 0 1
Packit Service a31ea6
3 (#text) [content of c] 0 2
Packit Service a31ea6
15 (c) [None] 0 1
Packit Service a31ea6
15 (a) [None] 0 0
Packit Service a31ea6
"""
Packit Service a31ea6
res = tst_reader(doc)
Packit Service a31ea6
if res != expect:
Packit Service a31ea6
    print("test5 failed")
Packit Service a31ea6
    print(res)
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
Packit Service a31ea6
doc="""<test><c/></test>"""
Packit Service a31ea6
expect="""1 (test) [None] 0 0
Packit Service a31ea6
1 (b) [None] 1 1
Packit Service a31ea6
1 (c) [None] 1 1
Packit Service a31ea6
15 (test) [None] 0 0
Packit Service a31ea6
"""
Packit Service a31ea6
res = tst_reader(doc)
Packit Service a31ea6
if res != expect:
Packit Service a31ea6
    print("test9 failed")
Packit Service a31ea6
    print(res)
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
Packit Service a31ea6
doc="""bbb<c>ccc</c>"""
Packit Service a31ea6
expect="""1 (a) [None] 0 0
Packit Service a31ea6
1 (b) [None] 0 1
Packit Service a31ea6
3 (#text) [bbb] 0 2
Packit Service a31ea6
15 (b) [None] 0 1
Packit Service a31ea6
1 (c) [None] 0 1
Packit Service a31ea6
3 (#text) [ccc] 0 2
Packit Service a31ea6
15 (c) [None] 0 1
Packit Service a31ea6
15 (a) [None] 0 0
Packit Service a31ea6
"""
Packit Service a31ea6
res = tst_reader(doc)
Packit Service a31ea6
if res != expect:
Packit Service a31ea6
    print("test10 failed")
Packit Service a31ea6
    print(res)
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
Packit Service a31ea6
doc="""<test a="a"/>"""
Packit Service a31ea6
expect="""1 (test) [None] 1 0
Packit Service a31ea6
-- 2 (a) [a] 0 1
Packit Service a31ea6
"""
Packit Service a31ea6
res = tst_reader(doc)
Packit Service a31ea6
if res != expect:
Packit Service a31ea6
    print("test11 failed")
Packit Service a31ea6
    print(res)
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
Packit Service a31ea6
doc="""<test>aaa</test>"""
Packit Service a31ea6
expect="""1 (test) [None] 0 0
Packit Service a31ea6
1 (a) [None] 0 1
Packit Service a31ea6
3 (#text) [aaa] 0 2
Packit Service a31ea6
15 (a) [None] 0 1
Packit Service a31ea6
1 (b) [None] 1 1
Packit Service a31ea6
15 (test) [None] 0 0
Packit Service a31ea6
"""
Packit Service a31ea6
res = tst_reader(doc)
Packit Service a31ea6
if res != expect:
Packit Service a31ea6
    print("test12 failed")
Packit Service a31ea6
    print(res)
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
Packit Service a31ea6
doc="""<test>

</test>"""
Packit Service a31ea6
expect="""1 (test) [None] 0 0
Packit Service a31ea6
1 (p) [None] 0 1
Packit Service a31ea6
15 (p) [None] 0 1
Packit Service a31ea6
15 (test) [None] 0 0
Packit Service a31ea6
"""
Packit Service a31ea6
res = tst_reader(doc)
Packit Service a31ea6
if res != expect:
Packit Service a31ea6
    print("test13 failed")
Packit Service a31ea6
    print(res)
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
Packit Service a31ea6
doc="""

"""
Packit Service a31ea6
expect="""1 (p) [None] 0 0
Packit Service a31ea6
15 (p) [None] 0 0
Packit Service a31ea6
"""
Packit Service a31ea6
res = tst_reader(doc)
Packit Service a31ea6
if res != expect:
Packit Service a31ea6
    print("test14 failed")
Packit Service a31ea6
    print(res)
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
Packit Service a31ea6
#
Packit Service a31ea6
# test from bug #108801 
Packit Service a31ea6
#
Packit Service a31ea6
doc="""
Packit Service a31ea6
Packit Service a31ea6
                  "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
Packit Service a31ea6
]>
Packit Service a31ea6
Packit Service a31ea6
<article>
Packit Service a31ea6
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Packit Service a31ea6
</article>
Packit Service a31ea6
"""
Packit Service a31ea6
expect="""10 (article) [None] 0 0
Packit Service a31ea6
1 (article) [None] 0 0
Packit Service a31ea6
3 (#text) [
Packit Service a31ea6
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Packit Service a31ea6
] 0 1
Packit Service a31ea6
15 (article) [None] 0 0
Packit Service a31ea6
"""
Packit Service a31ea6
res = tst_reader(doc)
Packit Service a31ea6
if res != expect:
Packit Service a31ea6
    print("test15 failed")
Packit Service a31ea6
    print(res)
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
Packit Service a31ea6
#
Packit Service a31ea6
# cleanup for memory allocation counting
Packit Service a31ea6
#
Packit Service a31ea6
del f
Packit Service a31ea6
del input
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()