2002-02-02 09:17:16 +00:00
#!/usr/bin/python -u
#
# this test exercise the XPath basic engine, parser, etc, and
# allows to detect memory leaks
#
2002-02-02 21:49:17 +00:00
import sys
2002-02-02 09:17:16 +00:00
import libxml2
2002-02-03 20:13:06 +00:00
# Memory debug specific
libxml2 . debugMemory ( 1 )
2002-02-02 09:17:16 +00:00
doc = libxml2 . parseFile ( " tst.xml " )
2002-02-02 21:49:17 +00:00
if doc . name != " tst.xml " :
2013-03-30 21:38:20 +08:00
print ( " doc.name error " )
2002-02-02 21:49:17 +00:00
sys . exit ( 1 ) ;
ctxt = doc . xpathNewContext ( )
res = ctxt . xpathEval ( " //* " )
if len ( res ) != 2 :
2013-03-30 21:38:20 +08:00
print ( " xpath query: wrong node set size " )
2002-02-02 21:49:17 +00:00
sys . exit ( 1 )
if res [ 0 ] . name != " doc " or res [ 1 ] . name != " foo " :
2013-03-30 21:38:20 +08:00
print ( " xpath query: wrong node set value " )
2002-02-02 21:49:17 +00:00
sys . exit ( 1 )
2002-03-05 15:41:29 +00:00
ctxt . setContextNode ( res [ 0 ] )
res = ctxt . xpathEval ( " foo " )
if len ( res ) != 1 :
2013-03-30 21:38:20 +08:00
print ( " xpath query: wrong node set size " )
2002-03-05 15:41:29 +00:00
sys . exit ( 1 )
if res [ 0 ] . name != " foo " :
2013-03-30 21:38:20 +08:00
print ( " xpath query: wrong node set value " )
2002-03-05 15:41:29 +00:00
sys . exit ( 1 )
2002-02-02 21:49:17 +00:00
doc . freeDoc ( )
2002-02-08 13:28:40 +00:00
ctxt . xpathFreeContext ( )
2002-02-02 09:17:16 +00:00
i = 1000
while i > 0 :
doc = libxml2 . parseFile ( " tst.xml " )
ctxt = doc . xpathNewContext ( )
res = ctxt . xpathEval ( " //* " )
doc . freeDoc ( )
2002-02-08 13:28:40 +00:00
ctxt . xpathFreeContext ( )
2002-02-02 09:17:16 +00:00
i = i - 1
2002-02-03 20:13:06 +00:00
del ctxt
# Memory debug specific
libxml2 . cleanupParser ( )
if libxml2 . debugMemory ( 1 ) == 0 :
2013-03-30 21:38:20 +08:00
print ( " OK " )
2002-02-03 20:13:06 +00:00
else :
2013-03-30 21:38:20 +08:00
print ( " Memory leak %d bytes " % ( libxml2 . debugMemory ( 1 ) ) )
2002-02-03 20:13:06 +00:00
libxml2 . dumpMemory ( )