1#!/usr/bin/python -u
2#
3# this tests the basic APIs of the XmlTextReader interface
4#
5import libxml2
6import StringIO
7import sys
8
9# Memory debug specific
10libxml2.debugMemory(1)
11
12def tst_reader(s):
13    f = StringIO.StringIO(s)
14    input = libxml2.inputBuffer(f)
15    reader = input.newTextReader("tst")
16    res = ""
17    while reader.Read():
18        res=res + "%s (%s) [%s] %d\n" % (reader.NodeType(),reader.Name(),
19				      reader.Value(), reader.IsEmptyElement())
20        if reader.NodeType() == 1: # Element
21            while reader.MoveToNextAttribute():
22                res = res + "-- %s (%s) [%s]\n" % (reader.NodeType(),
23						   reader.Name(),reader.Value())
24    return res
25
26expect="""1 (test) [None] 0
271 (b) [None] 1
281 (c) [None] 1
2915 (test) [None] 0
30"""
31
32res = tst_reader("""<test><b/><c/></test>""")
33
34if res != expect:
35    print "Did not get the expected error message:"
36    print res
37    sys.exit(1)
38
39# Memory debug specific
40libxml2.cleanupParser()
41if libxml2.debugMemory(1) == 0:
42    print "OK"
43else:
44    print "Memory leak %d bytes" % (libxml2.debugMemory(1))
45    libxml2.dumpMemory()
46