2005-03-10 14:03:08 +00:00
#!/usr/bin/python -u
# -*- coding: ISO-8859-1 -*-
#
# this tests the next API of the XmlTextReader interface
#
import libxml2
import sys
2013-03-30 21:38:20 +08:00
try :
import StringIO
str_io = StringIO . StringIO
except :
import io
str_io = io . StringIO
2005-03-10 14:03:08 +00:00
# Memory debug specific
libxml2 . debugMemory ( 1 )
2013-03-30 21:38:20 +08:00
f = str_io ( """ <a><b><c /></b><d>content of d</d></a> """ )
2005-03-10 14:03:08 +00:00
input = libxml2 . inputBuffer ( f )
reader = input . newTextReader ( " test_next " )
ret = reader . Read ( )
if ret != 1 :
2013-03-30 21:38:20 +08:00
print ( " test_next: Error reading to first element " )
2005-03-10 14:03:08 +00:00
sys . exit ( 1 )
if reader . Name ( ) != " a " or reader . IsEmptyElement ( ) != 0 or \
reader . NodeType ( ) != 1 or reader . HasAttributes ( ) != 0 :
2013-03-30 21:38:20 +08:00
print ( " test_next: Error reading the first element " )
2005-03-10 14:03:08 +00:00
sys . exit ( 1 )
ret = reader . Read ( )
if ret != 1 :
2013-03-30 21:38:20 +08:00
print ( " test_next: Error reading to second element " )
2005-03-10 14:03:08 +00:00
sys . exit ( 1 )
if reader . Name ( ) != " b " or reader . IsEmptyElement ( ) != 0 or \
reader . NodeType ( ) != 1 or reader . HasAttributes ( ) != 0 :
2013-03-30 21:38:20 +08:00
print ( " test_next: Error reading the second element " )
2005-03-10 14:03:08 +00:00
sys . exit ( 1 )
ret = reader . Read ( )
if ret != 1 :
2013-03-30 21:38:20 +08:00
print ( " test_next: Error reading to third element " )
2005-03-10 14:03:08 +00:00
sys . exit ( 1 )
if reader . Name ( ) != " c " or reader . NodeType ( ) != 1 or \
reader . HasAttributes ( ) != 0 :
2013-03-30 21:38:20 +08:00
print ( " test_next: Error reading the third element " )
2005-03-10 14:03:08 +00:00
sys . exit ( 1 )
ret = reader . Read ( )
if ret != 1 :
2013-03-30 21:38:20 +08:00
print ( " test_next: Error reading to end of third element " )
2005-03-10 14:03:08 +00:00
sys . exit ( 1 )
if reader . Name ( ) != " b " or reader . NodeType ( ) != 15 :
2013-03-30 21:38:20 +08:00
print ( " test_next: Error reading to end of second element " )
2005-03-10 14:03:08 +00:00
sys . exit ( 1 )
ret = reader . Next ( )
if ret != 1 :
2013-03-30 21:38:20 +08:00
print ( " test_next: Error moving to third element " )
2005-03-10 14:03:08 +00:00
sys . exit ( 1 )
if reader . Name ( ) != " d " or reader . IsEmptyElement ( ) != 0 or \
reader . NodeType ( ) != 1 or reader . HasAttributes ( ) != 0 :
2013-03-30 21:38:20 +08:00
print ( " test_next: Error reading third element " )
2005-03-10 14:03:08 +00:00
sys . exit ( 1 )
ret = reader . Next ( )
if ret != 1 :
2013-03-30 21:38:20 +08:00
print ( " test_next: Error reading to end of first element " )
2005-03-10 14:03:08 +00:00
sys . exit ( 1 )
if reader . Name ( ) != " a " or reader . IsEmptyElement ( ) != 0 or \
reader . NodeType ( ) != 15 or reader . HasAttributes ( ) != 0 :
2013-03-30 21:38:20 +08:00
print ( " test_next: Error reading the end of first element " )
2005-03-10 14:03:08 +00:00
sys . exit ( 1 )
ret = reader . Read ( )
if ret != 0 :
2013-03-30 21:38:20 +08:00
print ( " test_next: Error reading to end of document " )
2005-03-10 14:03:08 +00:00
sys . exit ( 1 )
#
# cleanup for memory allocation counting
#
del f
del input
del reader
# Memory debug specific
libxml2 . cleanupParser ( )
if libxml2 . debugMemory ( 1 ) == 0 :
2013-03-30 21:38:20 +08:00
print ( " OK " )
2005-03-10 14:03:08 +00:00
else :
2013-03-30 21:38:20 +08:00
print ( " Memory leak %d bytes " % ( libxml2 . debugMemory ( 1 ) ) )
2005-03-10 14:03:08 +00:00
libxml2 . dumpMemory ( )