1#!/usr/bin/python -u 2# 3# this tests the basic APIs of the XmlTextReader interface 4# 5import libxml2 6import sys 7try: 8 import StringIO 9 str_io = StringIO.StringIO 10except: 11 import io 12 str_io = io.StringIO 13 14# Memory debug specific 15libxml2.debugMemory(1) 16 17def tst_reader(s): 18 f = str_io(s) 19 input = libxml2.inputBuffer(f) 20 reader = input.newTextReader("tst") 21 res = "" 22 while reader.Read(): 23 res=res + "%s (%s) [%s] %d\n" % (reader.NodeType(),reader.Name(), 24 reader.Value(), reader.IsEmptyElement()) 25 if reader.NodeType() == 1: # Element 26 while reader.MoveToNextAttribute(): 27 res = res + "-- %s (%s) [%s]\n" % (reader.NodeType(), 28 reader.Name(),reader.Value()) 29 return res 30 31expect="""1 (test) [None] 0 321 (b) [None] 1 331 (c) [None] 1 3415 (test) [None] 0 35""" 36 37res = tst_reader("""<test><b/><c/></test>""") 38 39if res != expect: 40 print("Did not get the expected error message:") 41 print(res) 42 sys.exit(1) 43 44# Memory debug specific 45libxml2.cleanupParser() 46if libxml2.debugMemory(1) == 0: 47 print("OK") 48else: 49 print("Memory leak %d bytes" % (libxml2.debugMemory(1))) 50 libxml2.dumpMemory() 51