Return to xpathext.py CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / libxml2 / python / tests |
1.1 ! misho 1: #!/usr/bin/python -u ! 2: import sys ! 3: import libxml2 ! 4: ! 5: # Memory debug specific ! 6: libxml2.debugMemory(1) ! 7: ! 8: def foo(ctx, x): ! 9: return x + 1 ! 10: ! 11: def bar(ctx, x): ! 12: return "%d" % (x + 2) ! 13: ! 14: doc = libxml2.parseFile("tst.xml") ! 15: ctxt = doc.xpathNewContext() ! 16: res = ctxt.xpathEval("//*") ! 17: if len(res) != 2: ! 18: print "xpath query: wrong node set size" ! 19: sys.exit(1) ! 20: if res[0].name != "doc" or res[1].name != "foo": ! 21: print "xpath query: wrong node set value" ! 22: sys.exit(1) ! 23: ! 24: libxml2.registerXPathFunction(ctxt._o, "foo", None, foo) ! 25: libxml2.registerXPathFunction(ctxt._o, "bar", None, bar) ! 26: i = 10000 ! 27: while i > 0: ! 28: res = ctxt.xpathEval("foo(1)") ! 29: if res != 2: ! 30: print "xpath extension failure" ! 31: sys.exit(1) ! 32: i = i - 1 ! 33: i = 10000 ! 34: while i > 0: ! 35: res = ctxt.xpathEval("bar(1)") ! 36: if res != "3": ! 37: print "xpath extension failure got %s expecting '3'" ! 38: sys.exit(1) ! 39: i = i - 1 ! 40: doc.freeDoc() ! 41: ctxt.xpathFreeContext() ! 42: ! 43: # Memory debug specific ! 44: libxml2.cleanupParser() ! 45: if libxml2.debugMemory(1) == 0: ! 46: print "OK" ! 47: else: ! 48: print "Memory leak %d bytes" % (libxml2.debugMemory(1)) ! 49: libxml2.dumpMemory()