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

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

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