~ubuntu-branches/ubuntu/wily/opencollada/wily-proposed

« back to all changes in this revision

Viewing changes to Externals/LibXML/python/tests/tstxpath.py

  • Committer: Package Import Robot
  • Author(s): Matteo F. Vescovi
  • Date: 2015-05-14 17:23:27 UTC
  • Revision ID: package-import@ubuntu.com-20150514172327-f862u8envms01fra
Tags: upstream-0.1.0~20140703.ddf8f47+dfsg1
ImportĀ upstreamĀ versionĀ 0.1.0~20140703.ddf8f47+dfsg1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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()