Home | History | Annotate | Download | only in tests
      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:
     47     print("Error parsing the document test1")
     48     sys.exit(1)
     49 
     50 if result != expect:
     51     print("Unexpected result for test1")
     52     print(result)
     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:
     87     print("Error parsing the document test2")
     88     sys.exit(1)
     89 
     90 if result != expect:
     91     print("Unexpected result for test2")
     92     print(result)
     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:
    125     print("Error parsing the document test3")
    126     sys.exit(1)
    127 
    128 if result != expect:
    129     print("Unexpected result for test3")
    130     print(result)
    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:
    141     print("OK")
    142 else:
    143     print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
    144     libxml2.dumpMemory()
    145