123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- #!/usr/bin/python -u
- #
- # this tests the entities substitutions with the XmlTextReader interface
- #
- import sys
- import StringIO
- import libxml2
- # Memory debug specific
- libxml2.debugMemory(1)
- result = ""
- def processNode(reader):
- global result
- result = result + "%d %d %s %d\n" % (reader.Depth(), reader.NodeType(),
- reader.Name(), reader.IsEmptyElement())
- #
- # Parse a document testing the readerForxxx API
- #
- docstr="""<foo>
- <label>some text</label>
- <item>100</item>
- </foo>"""
- expect="""0 1 foo 0
- 1 14 #text 0
- 1 1 label 0
- 2 3 #text 0
- 1 15 label 0
- 1 14 #text 0
- 1 1 item 0
- 2 3 #text 0
- 1 15 item 0
- 1 14 #text 0
- 0 15 foo 0
- """
- result = ""
- doc = libxml2.parseDoc(docstr)
- reader = doc.readerWalker();
- ret = reader.Read()
- while ret == 1:
- processNode(reader)
- ret = reader.Read()
- if ret != 0:
- print "Error parsing the document test1"
- sys.exit(1)
- if result != expect:
- print "Unexpected result for test1"
- print result
- sys.exit(1)
- doc.freeDoc()
- #
- # Reuse the reader for another document testing the ReaderNewWalker API
- #
- docstr="""<foo>
- <label>some text</label>
- <item>1000</item>
- </foo>"""
- expect="""0 1 foo 0
- 1 14 #text 0
- 1 1 label 0
- 2 3 #text 0
- 1 15 label 0
- 1 14 #text 0
- 1 1 item 0
- 2 3 #text 0
- 1 15 item 0
- 1 14 #text 0
- 0 15 foo 0
- """
- result = ""
- doc = libxml2.parseDoc(docstr)
- reader.NewWalker(doc)
- ret = reader.Read()
- while ret == 1:
- processNode(reader)
- ret = reader.Read()
- if ret != 0:
- print "Error parsing the document test2"
- sys.exit(1)
- if result != expect:
- print "Unexpected result for test2"
- print result
- sys.exit(1)
- doc.freeDoc()
- #
- # Reuse the reader for another document testing the ReaderNewxxx API
- #
- docstr="""<foo>
- <label>some text</label>
- <item>1000</item>
- </foo>"""
- expect="""0 1 foo 0
- 1 14 #text 0
- 1 1 label 0
- 2 3 #text 0
- 1 15 label 0
- 1 14 #text 0
- 1 1 item 0
- 2 3 #text 0
- 1 15 item 0
- 1 14 #text 0
- 0 15 foo 0
- """
- result = ""
- reader.NewDoc(docstr, "test3", None, 0)
- ret = reader.Read()
- while ret == 1:
- processNode(reader)
- ret = reader.Read()
- if ret != 0:
- print "Error parsing the document test3"
- sys.exit(1)
- if result != expect:
- print "Unexpected result for test3"
- print result
- sys.exit(1)
- #
- # cleanup
- #
- del reader
- # Memory debug specific
- libxml2.cleanupParser()
- if libxml2.debugMemory(1) == 0:
- print "OK"
- else:
- print "Memory leak %d bytes" % (libxml2.debugMemory(1))
- libxml2.dumpMemory()
|