Annotation of embedaddon/libxml2/python/tests/walker.py, revision 1.1.1.1

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()

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>