Return to validDTD.py CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / libxml2 / python / tests |
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: ! 18: # Memory debug specific ! 19: libxml2.debugMemory(1) ! 20: ! 21: dtd="""<!ELEMENT foo EMPTY>""" ! 22: valid="""<?xml version="1.0"?> ! 23: <foo></foo>""" ! 24: ! 25: invalid="""<?xml version="1.0"?> ! 26: <foo><bar/></foo>""" ! 27: ! 28: dtd = libxml2.parseDTD(None, 'test.dtd') ! 29: ctxt = libxml2.newValidCtxt() ! 30: e = ErrorHandler() ! 31: ctxt.setValidityErrorHandler(e.handler, e.handler, ARG) ! 32: ! 33: # Test valid document ! 34: doc = libxml2.parseDoc(valid) ! 35: ret = doc.validateDtd(ctxt, dtd) ! 36: if ret != 1 or e.errors: ! 37: print "error doing DTD validation" ! 38: sys.exit(1) ! 39: doc.freeDoc() ! 40: ! 41: # Test invalid document ! 42: doc = libxml2.parseDoc(invalid) ! 43: ret = doc.validateDtd(ctxt, dtd) ! 44: if ret != 0 or not e.errors: ! 45: print "Error: document supposed to be invalid" ! 46: doc.freeDoc() ! 47: ! 48: dtd.freeDtd() ! 49: del dtd ! 50: del ctxt ! 51: ! 52: # Memory debug specific ! 53: libxml2.cleanupParser() ! 54: if libxml2.debugMemory(1) == 0: ! 55: print "OK" ! 56: else: ! 57: print "Memory leak %d bytes" % (libxml2.debugMemory(1)) ! 58: libxml2.dumpMemory() ! 59: