1 #!/usr/bin/python -u 2 import sys 3 import libxml2 4 5 # Memory debug specific 6 libxml2.debugMemory(1) 7 8 # 9 # Testing XML Node comparison and Node hash-value 10 # 11 doc = libxml2.parseDoc("""<root><foo/></root>""") 12 root = doc.getRootElement() 13 14 # Create two different objects which point to foo 15 foonode1 = root.children 16 foonode2 = root.children 17 18 # Now check that [in]equality tests work ok 19 if not ( foonode1 == foonode2 ): 20 print("Error comparing nodes with ==, nodes should be equal but are unequal") 21 sys.exit(1) 22 if not ( foonode1 != root ): 23 print("Error comparing nodes with ==, nodes should not be equal but are equal") 24 sys.exit(1) 25 if not ( foonode1 != root ): 26 print("Error comparing nodes with !=, nodes should not be equal but are equal") 27 if ( foonode1 != foonode2 ): 28 print("Error comparing nodes with !=, nodes should be equal but are unequal") 29 30 # Next check that the hash function for the objects also works ok 31 if not (hash(foonode1) == hash(foonode2)): 32 print("Error hash values for two equal nodes are different") 33 sys.exit(1) 34 if not (hash(foonode1) != hash(root)): 35 print("Error hash values for two unequal nodes are not different") 36 sys.exit(1) 37 if hash(foonode1) == hash(root): 38 print("Error hash values for two unequal nodes are equal") 39 sys.exit(1) 40 41 # Basic tests successful 42 doc.freeDoc() 43 44 # Memory debug specific 45 libxml2.cleanupParser() 46 if libxml2.debugMemory(1) == 0: 47 print("OK") 48 else: 49 print("Memory leak %d bytes" % (libxml2.debugMemory(1))) 50 libxml2.dumpMemory() 51