Annotation of embedaddon/libxml2/python/tests/validRNG.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"?>
        !            21: <element name="foo"
        !            22:          xmlns="http://relaxng.org/ns/structure/1.0"
        !            23:          xmlns:a="http://relaxng.org/ns/annotation/1.0"
        !            24:          xmlns:ex1="http://www.example.com/n1"
        !            25:          xmlns:ex2="http://www.example.com/n2">
        !            26:   <a:documentation>A foo element.</a:documentation>
        !            27:   <element name="ex1:bar1">
        !            28:     <empty/>
        !            29:   </element>
        !            30:   <element name="ex2:bar2">
        !            31:     <empty/>
        !            32:   </element>
        !            33: </element>
        !            34: """
        !            35: 
        !            36: valid="""<?xml version="1.0"?>
        !            37: <foo><pre1:bar1 xmlns:pre1="http://www.example.com/n1"/><pre2:bar2 xmlns:pre2="http://www.example.com/n2"/></foo>"""
        !            38: 
        !            39: invalid="""<?xml version="1.0"?>
        !            40: <foo><pre1:bar1 xmlns:pre1="http://www.example.com/n1">bad</pre1:bar1><pre2:bar2 xmlns:pre2="http://www.example.com/n2"/></foo>"""
        !            41: 
        !            42: rngp = libxml2.relaxNGNewMemParserCtxt(schema, len(schema))
        !            43: rngs = rngp.relaxNGParse()
        !            44: ctxt = rngs.relaxNGNewValidCtxt()
        !            45: e = ErrorHandler()
        !            46: ctxt.setValidityErrorHandler(e.handler, e.handler, ARG)
        !            47: 
        !            48: # Test valid document
        !            49: doc = libxml2.parseDoc(valid)
        !            50: ret = doc.relaxNGValidateDoc(ctxt)
        !            51: if ret != 0 or e.errors:
        !            52:     print "error doing RelaxNG validation"
        !            53:     sys.exit(1)
        !            54: doc.freeDoc()
        !            55: 
        !            56: # Test invalid document
        !            57: doc = libxml2.parseDoc(invalid)
        !            58: ret = doc.relaxNGValidateDoc(ctxt)
        !            59: if ret == 0 or not e.errors:
        !            60:     print "Error: document supposed to be RelaxNG invalid"
        !            61:     sys.exit(1)
        !            62: doc.freeDoc()
        !            63: 
        !            64: del rngp
        !            65: del rngs
        !            66: del ctxt
        !            67: libxml2.relaxNGCleanupTypes()
        !            68: 
        !            69: # Memory debug specific
        !            70: libxml2.cleanupParser()
        !            71: if libxml2.debugMemory(1) == 0:
        !            72:     print "OK"
        !            73: else:
        !            74:     print "Memory leak %d bytes" % (libxml2.debugMemory(1))
        !            75:     libxml2.dumpMemory()
        !            76: 

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