Annotation of embedaddon/libxml2/python/tests/validSchemas.py, revision 1.1

1.1     ! misho       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: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>