Imported Upstream version 2.8.0
[platform/upstream/libxml2.git] / python / tests / reader4.py
1 #!/usr/bin/python -u
2 #
3 # this tests the basic APIs of the XmlTextReader interface
4 #
5 import libxml2
6 import StringIO
7 import sys
8
9 # Memory debug specific
10 libxml2.debugMemory(1)
11
12 def 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     
26 expect="""1 (test) [None] 0
27 1 (b) [None] 1
28 1 (c) [None] 1
29 15 (test) [None] 0
30 """
31
32 res = tst_reader("""<test><b/><c/></test>""")
33
34 if res != expect:
35     print "Did not get the expected error message:"
36     print res
37     sys.exit(1)
38
39 # Memory debug specific
40 libxml2.cleanupParser()
41 if libxml2.debugMemory(1) == 0:
42     print "OK"
43 else:
44     print "Memory leak %d bytes" % (libxml2.debugMemory(1))
45     libxml2.dumpMemory()