xref: /aosp_15_r20/external/libxml2/python/tests/sync.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 Workerlog = ""
10*7c568831SAndroid Build Coastguard Worker
11*7c568831SAndroid Build Coastguard Workerclass callback:
12*7c568831SAndroid Build Coastguard Worker    def startDocument(self):
13*7c568831SAndroid Build Coastguard Worker        global log
14*7c568831SAndroid Build Coastguard Worker        log = log + "startDocument:"
15*7c568831SAndroid Build Coastguard Worker
16*7c568831SAndroid Build Coastguard Worker    def endDocument(self):
17*7c568831SAndroid Build Coastguard Worker        global log
18*7c568831SAndroid Build Coastguard Worker        log = log + "endDocument:"
19*7c568831SAndroid Build Coastguard Worker
20*7c568831SAndroid Build Coastguard Worker    def startElement(self, tag, attrs):
21*7c568831SAndroid Build Coastguard Worker        global log
22*7c568831SAndroid Build Coastguard Worker        log = log + "startElement %s %s:" % (tag, attrs)
23*7c568831SAndroid Build Coastguard Worker
24*7c568831SAndroid Build Coastguard Worker    def endElement(self, tag):
25*7c568831SAndroid Build Coastguard Worker        global log
26*7c568831SAndroid Build Coastguard Worker        log = log + "endElement %s:" % (tag)
27*7c568831SAndroid Build Coastguard Worker
28*7c568831SAndroid Build Coastguard Worker    def characters(self, data):
29*7c568831SAndroid Build Coastguard Worker        global log
30*7c568831SAndroid Build Coastguard Worker        log = log + "characters: %s:" % (data)
31*7c568831SAndroid Build Coastguard Worker
32*7c568831SAndroid Build Coastguard Worker    def warning(self, msg):
33*7c568831SAndroid Build Coastguard Worker        global log
34*7c568831SAndroid Build Coastguard Worker        log = log + "warning: %s:" % (msg)
35*7c568831SAndroid Build Coastguard Worker
36*7c568831SAndroid Build Coastguard Worker    def error(self, msg):
37*7c568831SAndroid Build Coastguard Worker        global log
38*7c568831SAndroid Build Coastguard Worker        log = log + "error: %s:" % (msg)
39*7c568831SAndroid Build Coastguard Worker
40*7c568831SAndroid Build Coastguard Worker    def fatalError(self, msg):
41*7c568831SAndroid Build Coastguard Worker        global log
42*7c568831SAndroid Build Coastguard Worker        log = log + "fatalError: %s:" % (msg)
43*7c568831SAndroid Build Coastguard Worker
44*7c568831SAndroid Build Coastguard Workerhandler = callback()
45*7c568831SAndroid Build Coastguard Worker
46*7c568831SAndroid Build Coastguard Workerlog=""
47*7c568831SAndroid Build Coastguard Workerchunk="""<foo><bar2/>"""
48*7c568831SAndroid Build Coastguard Workerctxt = libxml2.createPushParser(handler, None, 0, "test.xml")
49*7c568831SAndroid Build Coastguard Workerctxt.parseChunk(chunk, len(chunk), 0)
50*7c568831SAndroid Build Coastguard Workerctxt=None
51*7c568831SAndroid Build Coastguard Worker
52*7c568831SAndroid Build Coastguard Workerreference = "startDocument:startElement foo None:startElement bar2 None:endElement bar2:"
53*7c568831SAndroid Build Coastguard Workerif log != reference:
54*7c568831SAndroid Build Coastguard Worker    print("Error got: %s" % log)
55*7c568831SAndroid Build Coastguard Worker    print("Expected: %s" % reference)
56*7c568831SAndroid Build Coastguard Worker    sys.exit(1)
57*7c568831SAndroid Build Coastguard Worker
58*7c568831SAndroid Build Coastguard Workerlog=""
59*7c568831SAndroid Build Coastguard Workerchunk="""<foo><bar2></bar2>"""
60*7c568831SAndroid Build Coastguard Workerctxt = libxml2.createPushParser(handler, None, 0, "test.xml")
61*7c568831SAndroid Build Coastguard Workerctxt.parseChunk(chunk, len(chunk), 0)
62*7c568831SAndroid Build Coastguard Workerctxt=None
63*7c568831SAndroid Build Coastguard Worker
64*7c568831SAndroid Build Coastguard Workerreference = "startDocument:startElement foo None:startElement bar2 None:endElement bar2:"
65*7c568831SAndroid Build Coastguard Workerif log != reference:
66*7c568831SAndroid Build Coastguard Worker    print("Error got: %s" % log)
67*7c568831SAndroid Build Coastguard Worker    print("Expected: %s" % reference)
68*7c568831SAndroid Build Coastguard Worker    sys.exit(1)
69*7c568831SAndroid Build Coastguard Worker
70*7c568831SAndroid Build Coastguard Workerlog=""
71*7c568831SAndroid Build Coastguard Workerchunk="""<foo><bar2>"""
72*7c568831SAndroid Build Coastguard Workerctxt = libxml2.createPushParser(handler, None, 0, "test.xml")
73*7c568831SAndroid Build Coastguard Workerctxt.parseChunk(chunk, len(chunk), 0)
74*7c568831SAndroid Build Coastguard Workerctxt=None
75*7c568831SAndroid Build Coastguard Worker
76*7c568831SAndroid Build Coastguard Workerreference = "startDocument:startElement foo None:startElement bar2 None:"
77*7c568831SAndroid Build Coastguard Workerif log != reference:
78*7c568831SAndroid Build Coastguard Worker    print("Error got: %s" % log)
79*7c568831SAndroid Build Coastguard Worker    print("Expected: %s" % reference)
80*7c568831SAndroid Build Coastguard Worker    sys.exit(1)
81*7c568831SAndroid Build Coastguard Worker
82*7c568831SAndroid Build Coastguard Workerlog=""
83*7c568831SAndroid Build Coastguard Workerchunk="""<foo><bar2 a="1" b='2' />"""
84*7c568831SAndroid Build Coastguard Workerctxt = libxml2.createPushParser(handler, None, 0, "test.xml")
85*7c568831SAndroid Build Coastguard Workerctxt.parseChunk(chunk, len(chunk), 0)
86*7c568831SAndroid Build Coastguard Workerctxt=None
87*7c568831SAndroid Build Coastguard Worker
88*7c568831SAndroid Build Coastguard Workerreference1 = "startDocument:startElement foo None:startElement bar2 {'a': '1', 'b': '2'}:endElement bar2:"
89*7c568831SAndroid Build Coastguard Workerreference2 = "startDocument:startElement foo None:startElement bar2 {'b': '2', 'a': '1'}:endElement bar2:"
90*7c568831SAndroid Build Coastguard Workerif log not in (reference1, reference2):
91*7c568831SAndroid Build Coastguard Worker    print("Error got: %s" % log)
92*7c568831SAndroid Build Coastguard Worker    print("Expected: %s" % reference)
93*7c568831SAndroid Build Coastguard Worker    sys.exit(1)
94*7c568831SAndroid Build Coastguard Worker
95*7c568831SAndroid Build Coastguard Workerlog=""
96*7c568831SAndroid Build Coastguard Workerchunk="""<foo><bar2 a="1" b='2' >"""
97*7c568831SAndroid Build Coastguard Workerctxt = libxml2.createPushParser(handler, None, 0, "test.xml")
98*7c568831SAndroid Build Coastguard Workerctxt.parseChunk(chunk, len(chunk), 0)
99*7c568831SAndroid Build Coastguard Workerctxt=None
100*7c568831SAndroid Build Coastguard Worker
101*7c568831SAndroid Build Coastguard Workerreference1 = "startDocument:startElement foo None:startElement bar2 {'a': '1', 'b': '2'}:"
102*7c568831SAndroid Build Coastguard Workerreference2 = "startDocument:startElement foo None:startElement bar2 {'b': '2', 'a': '1'}:"
103*7c568831SAndroid Build Coastguard Workerif log not in (reference1, reference2):
104*7c568831SAndroid Build Coastguard Worker    print("Error got: %s" % log)
105*7c568831SAndroid Build Coastguard Worker    print("Expected: %s" % reference)
106*7c568831SAndroid Build Coastguard Worker    sys.exit(1)
107*7c568831SAndroid Build Coastguard Worker
108*7c568831SAndroid Build Coastguard Workerlog=""
109*7c568831SAndroid Build Coastguard Workerchunk="""<foo><bar2 a="1" b='2' ></bar2>"""
110*7c568831SAndroid Build Coastguard Workerctxt = libxml2.createPushParser(handler, None, 0, "test.xml")
111*7c568831SAndroid Build Coastguard Workerctxt.parseChunk(chunk, len(chunk), 0)
112*7c568831SAndroid Build Coastguard Workerctxt=None
113*7c568831SAndroid Build Coastguard Worker
114*7c568831SAndroid Build Coastguard Workerreference1 = "startDocument:startElement foo None:startElement bar2 {'a': '1', 'b': '2'}:endElement bar2:"
115*7c568831SAndroid Build Coastguard Workerreference2 = "startDocument:startElement foo None:startElement bar2 {'b': '2', 'a': '1'}:endElement bar2:"
116*7c568831SAndroid Build Coastguard Workerif log not in (reference1, reference2):
117*7c568831SAndroid Build Coastguard Worker    print("Error got: %s" % log)
118*7c568831SAndroid Build Coastguard Worker    print("Expected: %s" % reference)
119*7c568831SAndroid Build Coastguard Worker    sys.exit(1)
120*7c568831SAndroid Build Coastguard Worker
121*7c568831SAndroid Build Coastguard Workerlog=""
122*7c568831SAndroid Build Coastguard Workerchunk="""<foo><bar2 a="b='1' />"""
123*7c568831SAndroid Build Coastguard Workerctxt = libxml2.createPushParser(handler, None, 0, "test.xml")
124*7c568831SAndroid Build Coastguard Workerctxt.parseChunk(chunk, len(chunk), 0)
125*7c568831SAndroid Build Coastguard Workerctxt=None
126*7c568831SAndroid Build Coastguard Worker
127*7c568831SAndroid Build Coastguard Workerreference = "startDocument:startElement foo None:"
128*7c568831SAndroid Build Coastguard Workerif log != reference:
129*7c568831SAndroid Build Coastguard Worker    print("Error got: %s" % log)
130*7c568831SAndroid Build Coastguard Worker    print("Expected: %s" % reference)
131*7c568831SAndroid Build Coastguard Worker    sys.exit(1)
132*7c568831SAndroid Build Coastguard Worker
133*7c568831SAndroid Build Coastguard Worker# Memory debug specific
134*7c568831SAndroid Build Coastguard Workerlibxml2.cleanupParser()
135*7c568831SAndroid Build Coastguard Workerif libxml2.debugMemory(1) == 0:
136*7c568831SAndroid Build Coastguard Worker    print("OK")
137*7c568831SAndroid Build Coastguard Workerelse:
138*7c568831SAndroid Build Coastguard Worker    print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
139