xref: /aosp_15_r20/external/libxml2/python/tests/compareNodes.py (revision 7c5688314b92172186c154356a6374bf7684c3ca)
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