Download python/tests/tstxpath.py from AryaWu/libxml: direct link, hf CLI and curl.
- Browser
- Download file 1.46 kB
-
https://huggingface.co/AryaWu/libxml/resolve/main/python/tests/tstxpath.py
- Command line
-
hf download hf://AryaWu/libxml/python/tests/tstxpath.py
-
curl -L -o tstxpath.py https://huggingface.co/AryaWu/libxml/resolve/main/python/tests/tstxpath.py
1.46 kB
| #!/usr/bin/env python3 | |
| import sys | |
| import setup_test | |
| import libxml2 | |
| #memory debug specific | |
| libxml2.debugMemory(1) | |
| called = "" | |
| def foo(ctx, x): | |
| global called | |
| # | |
| # test that access to the XPath evaluation contexts | |
| # | |
| pctxt = libxml2.xpathParserContext(_obj=ctx) | |
| ctxt = pctxt.context() | |
| called = ctxt.function() | |
| return x + 1 | |
| def bar(ctxt, x): | |
| return "%d" % (x + 2) | |
| doc = libxml2.parseFile("tst.xml") | |
| ctxt = doc.xpathNewContext() | |
| res = ctxt.xpathEval("//*") | |
| if len(res) != 2: | |
| print("xpath query: wrong node set size") | |
| sys.exit(1) | |
| if res[0].name != "doc" or res[1].name != "foo": | |
| print("xpath query: wrong node set value") | |
| sys.exit(1) | |
| libxml2.registerXPathFunction(ctxt._o, "foo", None, foo) | |
| libxml2.registerXPathFunction(ctxt._o, "bar", None, bar) | |
| i = 10000 | |
| while i > 0: | |
| res = ctxt.xpathEval("foo(1)") | |
| if res != 2: | |
| print("xpath extension failure") | |
| sys.exit(1) | |
| i = i - 1 | |
| i = 10000 | |
| while i > 0: | |
| res = ctxt.xpathEval("bar(1)") | |
| if res != "3": | |
| print("xpath extension failure got %s expecting '3'") | |
| sys.exit(1) | |
| i = i - 1 | |
| doc.freeDoc() | |
| ctxt.xpathFreeContext() | |
| if called != "foo": | |
| print("xpath function: failed to access the context") | |
| print("xpath function: %s" % (called)) | |
| sys.exit(1) | |
| #memory debug specific | |
| libxml2.cleanupParser() | |
| if libxml2.debugMemory(1) == 0: | |
| print("OK") | |
| else: | |
| print("Memory leak %d bytes" % (libxml2.debugMemory(1))) | |