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