Daniel Veillard | 7697a19 | 2005-03-10 14:03:08 +0000 | [diff] [blame] | 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() |