home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / share / doc / python-libxml2 / examples / xpath.py < prev    next >
Encoding:
Python Source  |  2002-03-05  |  1.2 KB  |  52 lines

  1. #!/usr/bin/python -u
  2. #
  3. # this test exercise the XPath basic engine, parser, etc, and
  4. # allows to detect memory leaks
  5. #
  6. import sys
  7. import libxml2
  8.  
  9. # Memory debug specific
  10. libxml2.debugMemory(1)
  11.  
  12. doc = libxml2.parseFile("tst.xml")
  13. if doc.name != "tst.xml":
  14.     print "doc.name error"
  15.     sys.exit(1);
  16.  
  17. ctxt = doc.xpathNewContext()
  18. res = ctxt.xpathEval("//*")
  19. if len(res) != 2:
  20.     print "xpath query: wrong node set size"
  21.     sys.exit(1)
  22. if res[0].name != "doc" or res[1].name != "foo":
  23.     print "xpath query: wrong node set value"
  24.     sys.exit(1)
  25. ctxt.setContextNode(res[0])
  26. res = ctxt.xpathEval("foo")
  27. if len(res) != 1:
  28.     print "xpath query: wrong node set size"
  29.     sys.exit(1)
  30. if res[0].name != "foo":
  31.     print "xpath query: wrong node set value"
  32.     sys.exit(1)
  33. doc.freeDoc()
  34. ctxt.xpathFreeContext()
  35. i = 1000
  36. while i > 0:
  37.     doc = libxml2.parseFile("tst.xml")
  38.     ctxt = doc.xpathNewContext()
  39.     res = ctxt.xpathEval("//*")
  40.     doc.freeDoc()
  41.     ctxt.xpathFreeContext()
  42.     i = i -1
  43. del ctxt
  44.  
  45. # Memory debug specific
  46. libxml2.cleanupParser()
  47. if libxml2.debugMemory(1) == 0:
  48.     print "OK"
  49. else:
  50.     print "Memory leak %d bytes" % (libxml2.debugMemory(1))
  51.     libxml2.dumpMemory()
  52.