2022-12-07 00:40:01 +03:00
#!/usr/bin/env python3
2003-10-20 21:07:41 +04:00
#
# this tests the entities substitutions with the XmlTextReader interface
#
import sys
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 = " "
reader = libxml2 . readerForDoc ( docstr , " test1 " , None , 0 )
ret = reader . Read ( )
while ret == 1 :
processNode ( reader )
ret = reader . Read ( )
if ret != 0 :
2013-03-30 17:38:20 +04:00
print ( " Error parsing the document test1 " )
2003-10-20 21:07:41 +04:00
sys . exit ( 1 )
if result != expect :
2013-03-30 17:38:20 +04:00
print ( " Unexpected result for test1 " )
print ( result )
2003-10-20 21:07:41 +04:00
sys . exit ( 1 )
#
# 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 , " test2 " , None , 0 )
ret = reader . Read ( )
while ret == 1 :
processNode ( reader )
ret = reader . Read ( )
if ret != 0 :
2013-03-30 17:38:20 +04:00
print ( " Error parsing the document test2 " )
2003-10-20 21:07:41 +04:00
sys . exit ( 1 )
if result != expect :
2013-03-30 17:38:20 +04:00
print ( " Unexpected result for test2 " )
print ( result )
2003-10-20 21:07:41 +04:00
sys . exit ( 1 )
#
# cleanup
#
del reader
# Memory debug specific
libxml2 . cleanupParser ( )
if libxml2 . debugMemory ( 1 ) == 0 :
2013-03-30 17:38:20 +04:00
print ( " OK " )
2003-10-20 21:07:41 +04:00
else :
2013-03-30 17:38:20 +04:00
print ( " Memory leak %d bytes " % ( libxml2 . debugMemory ( 1 ) ) )