Return to walker.py CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / libxml2 / python / tests |
1.1 ! misho 1: #!/usr/bin/python -u ! 2: # ! 3: # this tests the entities substitutions with the XmlTextReader interface ! 4: # ! 5: import sys ! 6: import StringIO ! 7: import libxml2 ! 8: ! 9: # Memory debug specific ! 10: libxml2.debugMemory(1) ! 11: ! 12: result = "" ! 13: def processNode(reader): ! 14: global result ! 15: ! 16: result = result + "%d %d %s %d\n" % (reader.Depth(), reader.NodeType(), ! 17: reader.Name(), reader.IsEmptyElement()) ! 18: ! 19: # ! 20: # Parse a document testing the readerForxxx API ! 21: # ! 22: docstr="""<foo> ! 23: <label>some text</label> ! 24: <item>100</item> ! 25: </foo>""" ! 26: expect="""0 1 foo 0 ! 27: 1 14 #text 0 ! 28: 1 1 label 0 ! 29: 2 3 #text 0 ! 30: 1 15 label 0 ! 31: 1 14 #text 0 ! 32: 1 1 item 0 ! 33: 2 3 #text 0 ! 34: 1 15 item 0 ! 35: 1 14 #text 0 ! 36: 0 15 foo 0 ! 37: """ ! 38: result = "" ! 39: ! 40: doc = libxml2.parseDoc(docstr) ! 41: reader = doc.readerWalker(); ! 42: ret = reader.Read() ! 43: while ret == 1: ! 44: processNode(reader) ! 45: ret = reader.Read() ! 46: ! 47: if ret != 0: ! 48: print "Error parsing the document test1" ! 49: sys.exit(1) ! 50: ! 51: if result != expect: ! 52: print "Unexpected result for test1" ! 53: print result ! 54: sys.exit(1) ! 55: ! 56: doc.freeDoc() ! 57: ! 58: # ! 59: # Reuse the reader for another document testing the ReaderNewWalker API ! 60: # ! 61: docstr="""<foo> ! 62: <label>some text</label> ! 63: <item>1000</item> ! 64: </foo>""" ! 65: expect="""0 1 foo 0 ! 66: 1 14 #text 0 ! 67: 1 1 label 0 ! 68: 2 3 #text 0 ! 69: 1 15 label 0 ! 70: 1 14 #text 0 ! 71: 1 1 item 0 ! 72: 2 3 #text 0 ! 73: 1 15 item 0 ! 74: 1 14 #text 0 ! 75: 0 15 foo 0 ! 76: """ ! 77: result = "" ! 78: ! 79: doc = libxml2.parseDoc(docstr) ! 80: reader.NewWalker(doc) ! 81: ! 82: ret = reader.Read() ! 83: while ret == 1: ! 84: processNode(reader) ! 85: ret = reader.Read() ! 86: ! 87: if ret != 0: ! 88: print "Error parsing the document test2" ! 89: sys.exit(1) ! 90: ! 91: if result != expect: ! 92: print "Unexpected result for test2" ! 93: print result ! 94: sys.exit(1) ! 95: ! 96: doc.freeDoc() ! 97: ! 98: # ! 99: # Reuse the reader for another document testing the ReaderNewxxx API ! 100: # ! 101: docstr="""<foo> ! 102: <label>some text</label> ! 103: <item>1000</item> ! 104: </foo>""" ! 105: expect="""0 1 foo 0 ! 106: 1 14 #text 0 ! 107: 1 1 label 0 ! 108: 2 3 #text 0 ! 109: 1 15 label 0 ! 110: 1 14 #text 0 ! 111: 1 1 item 0 ! 112: 2 3 #text 0 ! 113: 1 15 item 0 ! 114: 1 14 #text 0 ! 115: 0 15 foo 0 ! 116: """ ! 117: result = "" ! 118: ! 119: reader.NewDoc(docstr, "test3", None, 0) ! 120: ret = reader.Read() ! 121: while ret == 1: ! 122: processNode(reader) ! 123: ret = reader.Read() ! 124: ! 125: if ret != 0: ! 126: print "Error parsing the document test3" ! 127: sys.exit(1) ! 128: ! 129: if result != expect: ! 130: print "Unexpected result for test3" ! 131: print result ! 132: sys.exit(1) ! 133: ! 134: # ! 135: # cleanup ! 136: # ! 137: del reader ! 138: ! 139: # Memory debug specific ! 140: libxml2.cleanupParser() ! 141: if libxml2.debugMemory(1) == 0: ! 142: print "OK" ! 143: else: ! 144: print "Memory leak %d bytes" % (libxml2.debugMemory(1)) ! 145: libxml2.dumpMemory()