--- embedaddon/libxml2/python/tests/reader.py 2012/02/21 23:38:00 1.1.1.1 +++ embedaddon/libxml2/python/tests/reader.py 2014/06/15 19:53:34 1.1.1.2 @@ -4,91 +4,96 @@ # this tests the basic APIs of the XmlTextReader interface # import libxml2 -import StringIO import sys +try: + import StringIO + str_io = StringIO.StringIO +except: + import io + str_io = io.StringIO # Memory debug specific libxml2.debugMemory(1) -f = StringIO.StringIO("""content of c""") +f = str_io("""content of c""") input = libxml2.inputBuffer(f) reader = input.newTextReader("test1") ret = reader.Read() if ret != 1: - print "test1: Error reading to first element" + print("test1: Error reading to first element") sys.exit(1) if reader.Name() != "a" or reader.IsEmptyElement() != 0 or \ reader.NodeType() != 1 or reader.HasAttributes() != 0: - print "test1: Error reading the first element" + print("test1: Error reading the first element") sys.exit(1) ret = reader.Read() if ret != 1: - print "test1: Error reading to second element" + print("test1: Error reading to second element") sys.exit(1) if reader.Name() != "b" or reader.IsEmptyElement() != 1 or \ reader.NodeType() != 1 or reader.HasAttributes() != 1: - print "test1: Error reading the second element" + print("test1: Error reading the second element") sys.exit(1) ret = reader.Read() if ret != 1: - print "test1: Error reading to third element" + print("test1: Error reading to third element") sys.exit(1) if reader.Name() != "c" or reader.IsEmptyElement() != 0 or \ reader.NodeType() != 1 or reader.HasAttributes() != 0: - print "test1: Error reading the third element" + print("test1: Error reading the third element") sys.exit(1) ret = reader.Read() if ret != 1: - print "test1: Error reading to text node" + print("test1: Error reading to text node") sys.exit(1) if reader.Name() != "#text" or reader.IsEmptyElement() != 0 or \ reader.NodeType() != 3 or reader.HasAttributes() != 0 or \ reader.Value() != "content of c": - print "test1: Error reading the text node" + print("test1: Error reading the text node") sys.exit(1) ret = reader.Read() if ret != 1: - print "test1: Error reading to end of third element" + print("test1: Error reading to end of third element") sys.exit(1) if reader.Name() != "c" or reader.IsEmptyElement() != 0 or \ reader.NodeType() != 15 or reader.HasAttributes() != 0: - print "test1: Error reading the end of third element" + print("test1: Error reading the end of third element") sys.exit(1) ret = reader.Read() if ret != 1: - print "test1: Error reading to end of first element" + print("test1: Error reading to end of first element") sys.exit(1) if reader.Name() != "a" or reader.IsEmptyElement() != 0 or \ reader.NodeType() != 15 or reader.HasAttributes() != 0: - print "test1: Error reading the end of first element" + print("test1: Error reading the end of first element") sys.exit(1) ret = reader.Read() if ret != 0: - print "test1: Error reading to end of document" + print("test1: Error reading to end of document") sys.exit(1) # # example from the XmlTextReader docs # -f = StringIO.StringIO("""""") +f = str_io("""""") input = libxml2.inputBuffer(f) reader = input.newTextReader("test2") ret = reader.Read() if ret != 1: - print "Error reading test element" + print("Error reading test element") sys.exit(1) if reader.GetAttributeNo(0) != "urn:datatypes" or \ reader.GetAttributeNo(1) != "int" or \ reader.GetAttributeNs("type", "urn:datatypes") != "int" or \ reader.GetAttribute("dt:type") != "int": - print "error reading test attributes" + print("error reading test attributes") sys.exit(1) # # example from the XmlTextReader docs # -f = StringIO.StringIO(""" +f = str_io(""" @@ -100,203 +105,203 @@ ret = reader.Read() while ret == 1: if reader.Name() == "ref": if reader.LookupNamespace("a") != "urn:456": - print "error resolving namespace prefix" + print("error resolving namespace prefix") sys.exit(1) break ret = reader.Read() if ret != 1: - print "Error finding the ref element" + print("Error finding the ref element") sys.exit(1) # # Home made example for the various attribute access functions # -f = StringIO.StringIO("""""") +f = str_io("""""") input = libxml2.inputBuffer(f) reader = input.newTextReader("test4") ret = reader.Read() if ret != 1: - print "Error reading the testattr element" + print("Error reading the testattr element") sys.exit(1) # # Attribute exploration by index # if reader.MoveToAttributeNo(0) != 1: - print "Failed moveToAttribute(0)" + print("Failed moveToAttribute(0)") sys.exit(1) if reader.Value() != "urn:1": - print "Failed to read attribute(0)" + print("Failed to read attribute(0)") sys.exit(1) if reader.Name() != "xmlns": - print "Failed to read attribute(0) name" + print("Failed to read attribute(0) name") sys.exit(1) if reader.MoveToAttributeNo(1) != 1: - print "Failed moveToAttribute(1)" + print("Failed moveToAttribute(1)") sys.exit(1) if reader.Value() != "urn:2": - print "Failed to read attribute(1)" + print("Failed to read attribute(1)") sys.exit(1) if reader.Name() != "xmlns:a": - print "Failed to read attribute(1) name" + print("Failed to read attribute(1) name") sys.exit(1) if reader.MoveToAttributeNo(2) != 1: - print "Failed moveToAttribute(2)" + print("Failed moveToAttribute(2)") sys.exit(1) if reader.Value() != "b": - print "Failed to read attribute(2)" + print("Failed to read attribute(2)") sys.exit(1) if reader.Name() != "b": - print "Failed to read attribute(2) name" + print("Failed to read attribute(2) name") sys.exit(1) if reader.MoveToAttributeNo(3) != 1: - print "Failed moveToAttribute(3)" + print("Failed moveToAttribute(3)") sys.exit(1) if reader.Value() != "a:b": - print "Failed to read attribute(3)" + print("Failed to read attribute(3)") sys.exit(1) if reader.Name() != "a:b": - print "Failed to read attribute(3) name" + print("Failed to read attribute(3) name") sys.exit(1) # # Attribute exploration by name # if reader.MoveToAttribute("xmlns") != 1: - print "Failed moveToAttribute('xmlns')" + print("Failed moveToAttribute('xmlns')") sys.exit(1) if reader.Value() != "urn:1": - print "Failed to read attribute('xmlns')" + print("Failed to read attribute('xmlns')") sys.exit(1) if reader.MoveToAttribute("xmlns:a") != 1: - print "Failed moveToAttribute('xmlns')" + print("Failed moveToAttribute('xmlns')") sys.exit(1) if reader.Value() != "urn:2": - print "Failed to read attribute('xmlns:a')" + print("Failed to read attribute('xmlns:a')") sys.exit(1) if reader.MoveToAttribute("b") != 1: - print "Failed moveToAttribute('b')" + print("Failed moveToAttribute('b')") sys.exit(1) if reader.Value() != "b": - print "Failed to read attribute('b')" + print("Failed to read attribute('b')") sys.exit(1) if reader.MoveToAttribute("a:b") != 1: - print "Failed moveToAttribute('a:b')" + print("Failed moveToAttribute('a:b')") sys.exit(1) if reader.Value() != "a:b": - print "Failed to read attribute('a:b')" + print("Failed to read attribute('a:b')") sys.exit(1) if reader.MoveToAttributeNs("b", "urn:2") != 1: - print "Failed moveToAttribute('b', 'urn:2')" + print("Failed moveToAttribute('b', 'urn:2')") sys.exit(1) if reader.Value() != "a:b": - print "Failed to read attribute('b', 'urn:2')" + print("Failed to read attribute('b', 'urn:2')") sys.exit(1) # # Go back and read in sequence # if reader.MoveToElement() != 1: - print "Failed to move back to element" + print("Failed to move back to element") sys.exit(1) if reader.MoveToFirstAttribute() != 1: - print "Failed to move to first attribute" + print("Failed to move to first attribute") sys.exit(1) if reader.Value() != "urn:1": - print "Failed to read attribute(0)" + print("Failed to read attribute(0)") sys.exit(1) if reader.Name() != "xmlns": - print "Failed to read attribute(0) name" + print("Failed to read attribute(0) name") sys.exit(1) if reader.MoveToNextAttribute() != 1: - print "Failed to move to next attribute" + print("Failed to move to next attribute") sys.exit(1) if reader.Value() != "urn:2": - print "Failed to read attribute(1)" + print("Failed to read attribute(1)") sys.exit(1) if reader.Name() != "xmlns:a": - print "Failed to read attribute(1) name" + print("Failed to read attribute(1) name") sys.exit(1) if reader.MoveToNextAttribute() != 1: - print "Failed to move to next attribute" + print("Failed to move to next attribute") sys.exit(1) if reader.Value() != "b": - print "Failed to read attribute(2)" + print("Failed to read attribute(2)") sys.exit(1) if reader.Name() != "b": - print "Failed to read attribute(2) name" + print("Failed to read attribute(2) name") sys.exit(1) if reader.MoveToNextAttribute() != 1: - print "Failed to move to next attribute" + print("Failed to move to next attribute") sys.exit(1) if reader.Value() != "a:b": - print "Failed to read attribute(3)" + print("Failed to read attribute(3)") sys.exit(1) if reader.Name() != "a:b": - print "Failed to read attribute(3) name" + print("Failed to read attribute(3) name") sys.exit(1) if reader.MoveToNextAttribute() != 0: - print "Failed to detect last attribute" + print("Failed to detect last attribute") sys.exit(1) # # a couple of tests for namespace nodes # -f = StringIO.StringIO("""""") +f = str_io("""""") input = libxml2.inputBuffer(f) reader = input.newTextReader("test6") ret = reader.Read() if ret != 1: - print "test6: failed to Read()" + print("test6: failed to Read()") sys.exit(1) ret = reader.MoveToFirstAttribute() if ret != 1: - print "test6: failed to MoveToFirstAttribute()" + print("test6: failed to MoveToFirstAttribute()") sys.exit(1) if reader.NamespaceUri() != "http://www.w3.org/2000/xmlns/" or \ reader.LocalName() != "xmlns" or reader.Name() != "xmlns" or \ reader.Value() != "http://example.com/foo" or reader.NodeType() != 2: - print "test6: failed to read the namespace node" + print("test6: failed to read the namespace node") sys.exit(1) -f = StringIO.StringIO("""""") +f = str_io("""""") input = libxml2.inputBuffer(f) reader = input.newTextReader("test7") ret = reader.Read() if ret != 1: - print "test7: failed to Read()" + print("test7: failed to Read()") sys.exit(1) ret = reader.MoveToFirstAttribute() if ret != 1: - print "test7: failed to MoveToFirstAttribute()" + print("test7: failed to MoveToFirstAttribute()") sys.exit(1) if reader.NamespaceUri() != "http://www.w3.org/2000/xmlns/" or \ reader.LocalName() != "prefix" or reader.Name() != "xmlns:prefix" or \ reader.Value() != "http://example.com/foo" or reader.NodeType() != 2: - print "test7: failed to read the namespace node" + print("test7: failed to read the namespace node") sys.exit(1) # # Test for a limit case: # -f = StringIO.StringIO("""""") +f = str_io("""""") input = libxml2.inputBuffer(f) reader = input.newTextReader("test8") ret = reader.Read() if ret != 1: - print "test8: failed to read the node" + print("test8: failed to read the node") sys.exit(1) if reader.Name() != "a" or reader.IsEmptyElement() != 1: - print "test8: failed to analyze the node" + print("test8: failed to analyze the node") sys.exit(1) ret = reader.Read() if ret != 0: - print "test8: failed to detect the EOF" + print("test8: failed to detect the EOF") sys.exit(1) # # Another test provided by Stéphane Bidoul and checked with C# # def tst_reader(s): - f = StringIO.StringIO(s) + f = str_io(s) input = libxml2.inputBuffer(f) reader = input.newTextReader("tst") res = "" @@ -322,8 +327,8 @@ expect="""1 (a) [None] 0 0 """ res = tst_reader(doc) if res != expect: - print "test5 failed" - print res + print("test5 failed") + print(res) sys.exit(1) doc="""""" @@ -334,8 +339,8 @@ expect="""1 (test) [None] 0 0 """ res = tst_reader(doc) if res != expect: - print "test9 failed" - print res + print("test9 failed") + print(res) sys.exit(1) doc="""bbbccc""" @@ -350,8 +355,8 @@ expect="""1 (a) [None] 0 0 """ res = tst_reader(doc) if res != expect: - print "test10 failed" - print res + print("test10 failed") + print(res) sys.exit(1) doc="""""" @@ -360,8 +365,8 @@ expect="""1 (test) [None] 1 0 """ res = tst_reader(doc) if res != expect: - print "test11 failed" - print res + print("test11 failed") + print(res) sys.exit(1) doc="""aaa""" @@ -374,8 +379,8 @@ expect="""1 (test) [None] 0 0 """ res = tst_reader(doc) if res != expect: - print "test12 failed" - print res + print("test12 failed") + print(res) sys.exit(1) doc="""

""" @@ -386,8 +391,8 @@ expect="""1 (test) [None] 0 0 """ res = tst_reader(doc) if res != expect: - print "test13 failed" - print res + print("test13 failed") + print(res) sys.exit(1) doc="""

""" @@ -396,8 +401,8 @@ expect="""1 (p) [None] 0 0 """ res = tst_reader(doc) if res != expect: - print "test14 failed" - print res + print("test14 failed") + print(res) sys.exit(1) # @@ -421,8 +426,8 @@ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx """ res = tst_reader(doc) if res != expect: - print "test15 failed" - print res + print("test15 failed") + print(res) sys.exit(1) # @@ -435,7 +440,7 @@ del reader # Memory debug specific libxml2.cleanupParser() if libxml2.debugMemory(1) == 0: - print "OK" + print("OK") else: - print "Memory leak %d bytes" % (libxml2.debugMemory(1)) + print("Memory leak %d bytes" % (libxml2.debugMemory(1))) libxml2.dumpMemory()