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>