~ubuntu-branches/ubuntu/wily/opencollada/wily-proposed

« back to all changes in this revision

Viewing changes to Externals/LibXML/python/tests/validSchemas.py

  • Committer: Package Import Robot
  • Author(s): Matteo F. Vescovi
  • Date: 2015-05-14 17:23:27 UTC
  • Revision ID: package-import@ubuntu.com-20150514172327-f862u8envms01fra
Tags: upstream-0.1.0~20140703.ddf8f47+dfsg1
ImportĀ upstreamĀ versionĀ 0.1.0~20140703.ddf8f47+dfsg1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/usr/bin/python -u
 
2
import libxml2
 
3
import sys
 
4
 
 
5
ARG = 'test string'
 
6
 
 
7
class ErrorHandler:
 
8
 
 
9
    def __init__(self):
 
10
        self.errors = []
 
11
 
 
12
    def handler(self, msg, data):
 
13
        if data != ARG:
 
14
            raise Exception, "Error handler did not receive correct argument"
 
15
        self.errors.append(msg)
 
16
 
 
17
# Memory debug specific
 
18
libxml2.debugMemory(1)
 
19
 
 
20
schema="""<?xml version="1.0" encoding="iso-8859-1"?>
 
21
<schema xmlns = "http://www.w3.org/2001/XMLSchema">
 
22
        <element name = "Customer">
 
23
                <complexType>
 
24
                        <sequence>
 
25
                                <element name = "FirstName" type = "string" />
 
26
                                <element name = "MiddleInitial" type = "string" />
 
27
                                <element name = "LastName" type = "string" />
 
28
                        </sequence>
 
29
                        <attribute name = "customerID" type = "integer" />
 
30
                </complexType>
 
31
        </element>
 
32
</schema>"""
 
33
 
 
34
valid="""<?xml version="1.0" encoding="iso-8859-1"?>
 
35
<Customer customerID = "24332">
 
36
        <FirstName>Raymond</FirstName>
 
37
        <MiddleInitial>G</MiddleInitial>
 
38
        <LastName>Bayliss</LastName>
 
39
</Customer>     
 
40
"""
 
41
 
 
42
invalid="""<?xml version="1.0" encoding="iso-8859-1"?>
 
43
<Customer customerID = "24332">
 
44
        <MiddleInitial>G</MiddleInitial>
 
45
        <LastName>Bayliss</LastName>
 
46
</Customer>     
 
47
"""
 
48
 
 
49
e = ErrorHandler()
 
50
ctxt_parser = libxml2.schemaNewMemParserCtxt(schema, len(schema))
 
51
ctxt_schema = ctxt_parser.schemaParse()
 
52
ctxt_valid  = ctxt_schema.schemaNewValidCtxt()
 
53
ctxt_valid.setValidityErrorHandler(e.handler, e.handler, ARG)
 
54
 
 
55
# Test valid document
 
56
doc = libxml2.parseDoc(valid)
 
57
ret = doc.schemaValidateDoc(ctxt_valid)
 
58
if ret != 0 or e.errors:
 
59
    print "error doing schema validation"
 
60
    sys.exit(1)
 
61
doc.freeDoc()
 
62
 
 
63
# Test invalid document
 
64
doc = libxml2.parseDoc(invalid)
 
65
ret = doc.schemaValidateDoc(ctxt_valid)
 
66
if ret == 0 or not e.errors:
 
67
    print "Error: document supposer to be schema invalid"
 
68
    sys.exit(1)
 
69
doc.freeDoc()
 
70
 
 
71
del ctxt_parser
 
72
del ctxt_schema
 
73
del ctxt_valid
 
74
libxml2.schemaCleanupTypes()
 
75
 
 
76
# Memory debug specific
 
77
libxml2.cleanupParser()
 
78
if libxml2.debugMemory(1) == 0:
 
79
    print "OK"
 
80
else:
 
81
    print "Memory leak %d bytes" % (libxml2.debugMemory(1))
 
82
    libxml2.dumpMemory()
 
83