Annotation of embedaddon/libxml2/python/tests/tstxpath.py, revision 1.1
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()
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>