Diff for /embedaddon/libxml2/python/tests/reader.py between versions 1.1.1.1 and 1.1.1.2

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

Removed from v.1.1.1.1  
changed lines
  Added in v.1.1.1.2


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