Imported Upstream version 2.8.0
[platform/upstream/libxml2.git] / python / tests / readernext.py
1 #!/usr/bin/python -u
2 # -*- coding: ISO-8859-1 -*-
3 #
4 # this tests the next API of the XmlTextReader interface
5 #
6 import libxml2
7 import StringIO
8 import sys
9
10 # Memory debug specific
11 libxml2.debugMemory(1)
12
13 f = StringIO.StringIO("""<a><b><c /></b><d>content of d</d></a>""")
14 input = libxml2.inputBuffer(f)
15 reader = input.newTextReader("test_next")
16 ret = reader.Read()
17 if ret != 1:
18     print "test_next: Error reading to first element"
19     sys.exit(1)
20 if reader.Name() != "a" or reader.IsEmptyElement() != 0 or \
21    reader.NodeType() != 1 or reader.HasAttributes() != 0:
22     print "test_next: Error reading the first element"
23     sys.exit(1)
24 ret = reader.Read()
25 if ret != 1:
26     print "test_next: Error reading to second element"
27     sys.exit(1)
28 if reader.Name() != "b" or reader.IsEmptyElement() != 0 or \
29    reader.NodeType() != 1 or reader.HasAttributes() != 0:
30     print "test_next: Error reading the second element"
31     sys.exit(1)
32 ret = reader.Read()
33 if ret != 1:
34     print "test_next: Error reading to third element"
35     sys.exit(1)
36 if reader.Name() != "c" or reader.NodeType() != 1 or \
37    reader.HasAttributes() != 0:
38     print "test_next: Error reading the third element"
39     sys.exit(1)
40 ret = reader.Read()
41 if ret != 1:
42     print "test_next: Error reading to end of third element"
43     sys.exit(1)
44 if reader.Name() != "b" or reader.NodeType() != 15:
45     print "test_next: Error reading to end of second element"
46     sys.exit(1)
47 ret = reader.Next()
48 if ret != 1:
49     print "test_next: Error moving to third element"
50     sys.exit(1)
51 if reader.Name() != "d" or reader.IsEmptyElement() != 0 or \
52    reader.NodeType() != 1 or reader.HasAttributes() != 0:
53     print "test_next: Error reading third element"
54     sys.exit(1)
55 ret = reader.Next()
56 if ret != 1:
57     print "test_next: Error reading to end of first element"
58     sys.exit(1)
59 if reader.Name() != "a" or reader.IsEmptyElement() != 0 or \
60    reader.NodeType() != 15 or reader.HasAttributes() != 0:
61     print "test_next: Error reading the end of first element"
62     sys.exit(1)
63 ret = reader.Read()
64 if ret != 0:
65     print "test_next: Error reading to end of document"
66     sys.exit(1)
67
68 #
69 # cleanup for memory allocation counting
70 #
71 del f
72 del input
73 del reader
74
75 # Memory debug specific
76 libxml2.cleanupParser()
77 if libxml2.debugMemory(1) == 0:
78     print "OK"
79 else:
80     print "Memory leak %d bytes" % (libxml2.debugMemory(1))
81     libxml2.dumpMemory()