xref: /aosp_15_r20/external/libxml2/python/tests/schema.py (revision 7c5688314b92172186c154356a6374bf7684c3ca)
1*7c568831SAndroid Build Coastguard Worker#!/usr/bin/env python3
2*7c568831SAndroid Build Coastguard Workerimport setup_test
3*7c568831SAndroid Build Coastguard Workerimport libxml2
4*7c568831SAndroid Build Coastguard Workerimport sys
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 Workerschema="""<?xml version="1.0" encoding="iso-8859-1"?>
10*7c568831SAndroid Build Coastguard Worker<schema xmlns = "http://www.w3.org/2001/XMLSchema">
11*7c568831SAndroid Build Coastguard Worker	<element name = "Customer">
12*7c568831SAndroid Build Coastguard Worker		<complexType>
13*7c568831SAndroid Build Coastguard Worker			<sequence>
14*7c568831SAndroid Build Coastguard Worker				<element name = "FirstName" type = "string" />
15*7c568831SAndroid Build Coastguard Worker				<element name = "MiddleInitial" type = "string" />
16*7c568831SAndroid Build Coastguard Worker				<element name = "LastName" type = "string" />
17*7c568831SAndroid Build Coastguard Worker			</sequence>
18*7c568831SAndroid Build Coastguard Worker			<attribute name = "customerID" type = "integer" />
19*7c568831SAndroid Build Coastguard Worker		</complexType>
20*7c568831SAndroid Build Coastguard Worker	</element>
21*7c568831SAndroid Build Coastguard Worker</schema>"""
22*7c568831SAndroid Build Coastguard Worker
23*7c568831SAndroid Build Coastguard Workerinstance="""<?xml version="1.0" encoding="iso-8859-1"?>
24*7c568831SAndroid Build Coastguard Worker<Customer customerID = "24332">
25*7c568831SAndroid Build Coastguard Worker	<FirstName>Raymond</FirstName>
26*7c568831SAndroid Build Coastguard Worker	<MiddleInitial>G</MiddleInitial>
27*7c568831SAndroid Build Coastguard Worker	<LastName>Bayliss</LastName>
28*7c568831SAndroid Build Coastguard Worker</Customer>
29*7c568831SAndroid Build Coastguard Worker"""
30*7c568831SAndroid Build Coastguard Worker
31*7c568831SAndroid Build Coastguard Workerctxt_parser = libxml2.schemaNewMemParserCtxt(schema, len(schema))
32*7c568831SAndroid Build Coastguard Workerctxt_schema = ctxt_parser.schemaParse()
33*7c568831SAndroid Build Coastguard Workerctxt_valid  = ctxt_schema.schemaNewValidCtxt()
34*7c568831SAndroid Build Coastguard Workerdoc = libxml2.parseDoc(instance)
35*7c568831SAndroid Build Coastguard Workerret = doc.schemaValidateDoc(ctxt_valid)
36*7c568831SAndroid Build Coastguard Workerif ret != 0:
37*7c568831SAndroid Build Coastguard Worker    print("error doing schema validation")
38*7c568831SAndroid Build Coastguard Worker    sys.exit(1)
39*7c568831SAndroid Build Coastguard Worker
40*7c568831SAndroid Build Coastguard Workerdoc.freeDoc()
41*7c568831SAndroid Build Coastguard Workerdel ctxt_parser
42*7c568831SAndroid Build Coastguard Workerdel ctxt_schema
43*7c568831SAndroid Build Coastguard Workerdel ctxt_valid
44*7c568831SAndroid Build Coastguard Workerlibxml2.schemaCleanupTypes()
45*7c568831SAndroid Build Coastguard Worker
46*7c568831SAndroid Build Coastguard Worker# Memory debug specific
47*7c568831SAndroid Build Coastguard Workerlibxml2.cleanupParser()
48*7c568831SAndroid Build Coastguard Workerif libxml2.debugMemory(1) == 0:
49*7c568831SAndroid Build Coastguard Worker    print("OK")
50*7c568831SAndroid Build Coastguard Workerelse:
51*7c568831SAndroid Build Coastguard Worker    print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
52*7c568831SAndroid Build Coastguard Worker
53