Return to tstxpath.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: called = "" ! 9: ! 10: def foo(ctx, x): ! 11: global called ! 12: ! 13: # ! 14: # test that access to the XPath evaluation contexts ! 15: # ! 16: pctxt = libxml2.xpathParserContext(_obj=ctx) ! 17: ctxt = pctxt.context() ! 18: called = ctxt.function() ! 19: return x + 1 ! 20: ! 21: def bar(ctxt, x): ! 22: return "%d" % (x + 2) ! 23: ! 24: doc = libxml2.parseFile("tst.xml") ! 25: ctxt = doc.xpathNewContext() ! 26: res = ctxt.xpathEval("//*") ! 27: if len(res) != 2: ! 28: print "xpath query: wrong node set size" ! 29: sys.exit(1) ! 30: if res[0].name != "doc" or res[1].name != "foo": ! 31: print "xpath query: wrong node set value" ! 32: sys.exit(1) ! 33: libxml2.registerXPathFunction(ctxt._o, "foo", None, foo) ! 34: libxml2.registerXPathFunction(ctxt._o, "bar", None, bar) ! 35: i = 10000 ! 36: while i > 0: ! 37: res = ctxt.xpathEval("foo(1)") ! 38: if res != 2: ! 39: print "xpath extension failure" ! 40: sys.exit(1) ! 41: i = i - 1 ! 42: i = 10000 ! 43: while i > 0: ! 44: res = ctxt.xpathEval("bar(1)") ! 45: if res != "3": ! 46: print "xpath extension failure got %s expecting '3'" ! 47: sys.exit(1) ! 48: i = i - 1 ! 49: doc.freeDoc() ! 50: ctxt.xpathFreeContext() ! 51: ! 52: if called != "foo": ! 53: print "xpath function: failed to access the context" ! 54: print "xpath function: %s" % (called) ! 55: sys.exit(1) ! 56: ! 57: #memory debug specific ! 58: libxml2.cleanupParser() ! 59: if libxml2.debugMemory(1) == 0: ! 60: print "OK" ! 61: else: ! 62: print "Memory leak %d bytes" % (libxml2.debugMemory(1)) ! 63: libxml2.dumpMemory()