aboutsummaryrefslogtreecommitdiff
path: root/libxml2-2.9.10/python/tests/validDTD.py
diff options
context:
space:
mode:
Diffstat (limited to 'libxml2-2.9.10/python/tests/validDTD.py')
-rwxr-xr-xlibxml2-2.9.10/python/tests/validDTD.py59
1 files changed, 59 insertions, 0 deletions
diff --git a/libxml2-2.9.10/python/tests/validDTD.py b/libxml2-2.9.10/python/tests/validDTD.py
new file mode 100755
index 0000000..4b03b8e
--- /dev/null
+++ b/libxml2-2.9.10/python/tests/validDTD.py
@@ -0,0 +1,59 @@
+#!/usr/bin/python -u
+import libxml2
+import sys
+
+ARG = 'test string'
+
+class ErrorHandler:
+
+ def __init__(self):
+ self.errors = []
+
+ def handler(self, msg, data):
+ if data != ARG:
+ raise Exception("Error handler did not receive correct argument")
+ self.errors.append(msg)
+
+
+# Memory debug specific
+libxml2.debugMemory(1)
+
+dtd="""<!ELEMENT foo EMPTY>"""
+valid="""<?xml version="1.0"?>
+<foo></foo>"""
+
+invalid="""<?xml version="1.0"?>
+<foo><bar/></foo>"""
+
+dtd = libxml2.parseDTD(None, 'test.dtd')
+ctxt = libxml2.newValidCtxt()
+e = ErrorHandler()
+ctxt.setValidityErrorHandler(e.handler, e.handler, ARG)
+
+# Test valid document
+doc = libxml2.parseDoc(valid)
+ret = doc.validateDtd(ctxt, dtd)
+if ret != 1 or e.errors:
+ print("error doing DTD validation")
+ sys.exit(1)
+doc.freeDoc()
+
+# Test invalid document
+doc = libxml2.parseDoc(invalid)
+ret = doc.validateDtd(ctxt, dtd)
+if ret != 0 or not e.errors:
+ print("Error: document supposed to be invalid")
+doc.freeDoc()
+
+dtd.freeDtd()
+del dtd
+del ctxt
+
+# Memory debug specific
+libxml2.cleanupParser()
+if libxml2.debugMemory(1) == 0:
+ print("OK")
+else:
+ print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
+ libxml2.dumpMemory()
+