2022-12-07 00:40:01 +03:00
#!/usr/bin/env python3
2004-07-05 20:46:09 +04:00
import sys
import libxml2
# Memory debug specific
libxml2 . debugMemory ( 1 )
log = " "
class callback :
def startDocument ( self ) :
global log
log = log + " startDocument: "
def endDocument ( self ) :
global log
log = log + " endDocument: "
def startElement ( self , tag , attrs ) :
global log
log = log + " startElement %s %s : " % ( tag , attrs )
def endElement ( self , tag ) :
global log
log = log + " endElement %s : " % ( tag )
def characters ( self , data ) :
global log
log = log + " characters: %s : " % ( data )
def warning ( self , msg ) :
global log
log = log + " warning: %s : " % ( msg )
def error ( self , msg ) :
global log
log = log + " error: %s : " % ( msg )
def fatalError ( self , msg ) :
global log
log = log + " fatalError: %s : " % ( msg )
handler = callback ( )
log = " "
chunk = """ <foo><bar2/> """
ctxt = libxml2 . createPushParser ( handler , None , 0 , " test.xml " )
ctxt . parseChunk ( chunk , len ( chunk ) , 0 )
ctxt = None
reference = " startDocument:startElement foo None:startElement bar2 None:endElement bar2: "
if log != reference :
2013-03-30 17:38:20 +04:00
print ( " Error got: %s " % log )
2014-10-06 14:26:27 +04:00
print ( " Expected: %s " % reference )
2004-07-05 20:46:09 +04:00
sys . exit ( 1 )
log = " "
chunk = """ <foo><bar2></bar2> """
ctxt = libxml2 . createPushParser ( handler , None , 0 , " test.xml " )
ctxt . parseChunk ( chunk , len ( chunk ) , 0 )
ctxt = None
reference = " startDocument:startElement foo None:startElement bar2 None:endElement bar2: "
if log != reference :
2013-03-30 17:38:20 +04:00
print ( " Error got: %s " % log )
2014-10-06 14:26:27 +04:00
print ( " Expected: %s " % reference )
2004-07-05 20:46:09 +04:00
sys . exit ( 1 )
log = " "
chunk = """ <foo><bar2> """
ctxt = libxml2 . createPushParser ( handler , None , 0 , " test.xml " )
ctxt . parseChunk ( chunk , len ( chunk ) , 0 )
ctxt = None
reference = " startDocument:startElement foo None:startElement bar2 None: "
if log != reference :
2013-03-30 17:38:20 +04:00
print ( " Error got: %s " % log )
2014-10-06 14:26:27 +04:00
print ( " Expected: %s " % reference )
2004-07-05 20:46:09 +04:00
sys . exit ( 1 )
log = " "
chunk = """ <foo><bar2 a= " 1 " b= ' 2 ' /> """
ctxt = libxml2 . createPushParser ( handler , None , 0 , " test.xml " )
ctxt . parseChunk ( chunk , len ( chunk ) , 0 )
ctxt = None
2014-10-06 14:26:27 +04:00
reference1 = " startDocument:startElement foo None:startElement bar2 { ' a ' : ' 1 ' , ' b ' : ' 2 ' }:endElement bar2: "
reference2 = " startDocument:startElement foo None:startElement bar2 { ' b ' : ' 2 ' , ' a ' : ' 1 ' }:endElement bar2: "
if log not in ( reference1 , reference2 ) :
2013-03-30 17:38:20 +04:00
print ( " Error got: %s " % log )
2014-10-06 14:26:27 +04:00
print ( " Expected: %s " % reference )
2004-07-05 20:46:09 +04:00
sys . exit ( 1 )
log = " "
chunk = """ <foo><bar2 a= " 1 " b= ' 2 ' > """
ctxt = libxml2 . createPushParser ( handler , None , 0 , " test.xml " )
ctxt . parseChunk ( chunk , len ( chunk ) , 0 )
ctxt = None
2014-10-06 14:26:27 +04:00
reference1 = " startDocument:startElement foo None:startElement bar2 { ' a ' : ' 1 ' , ' b ' : ' 2 ' }: "
reference2 = " startDocument:startElement foo None:startElement bar2 { ' b ' : ' 2 ' , ' a ' : ' 1 ' }: "
if log not in ( reference1 , reference2 ) :
2013-03-30 17:38:20 +04:00
print ( " Error got: %s " % log )
2014-10-06 14:26:27 +04:00
print ( " Expected: %s " % reference )
2004-07-05 20:46:09 +04:00
sys . exit ( 1 )
log = " "
chunk = """ <foo><bar2 a= " 1 " b= ' 2 ' ></bar2> """
ctxt = libxml2 . createPushParser ( handler , None , 0 , " test.xml " )
ctxt . parseChunk ( chunk , len ( chunk ) , 0 )
ctxt = None
2014-10-06 14:26:27 +04:00
reference1 = " startDocument:startElement foo None:startElement bar2 { ' a ' : ' 1 ' , ' b ' : ' 2 ' }:endElement bar2: "
reference2 = " startDocument:startElement foo None:startElement bar2 { ' b ' : ' 2 ' , ' a ' : ' 1 ' }:endElement bar2: "
if log not in ( reference1 , reference2 ) :
2013-03-30 17:38:20 +04:00
print ( " Error got: %s " % log )
2014-10-06 14:26:27 +04:00
print ( " Expected: %s " % reference )
2004-07-05 20:46:09 +04:00
sys . exit ( 1 )
log = " "
chunk = """ <foo><bar2 a= " b= ' 1 ' /> """
ctxt = libxml2 . createPushParser ( handler , None , 0 , " test.xml " )
ctxt . parseChunk ( chunk , len ( chunk ) , 0 )
ctxt = None
reference = " startDocument:startElement foo None: "
if log != reference :
2013-03-30 17:38:20 +04:00
print ( " Error got: %s " % log )
2014-10-06 14:26:27 +04:00
print ( " Expected: %s " % reference )
2004-07-05 20:46:09 +04:00
sys . exit ( 1 )
# Memory debug specific
libxml2 . cleanupParser ( )
if libxml2 . debugMemory ( 1 ) == 0 :
2013-03-30 17:38:20 +04:00
print ( " OK " )
2004-07-05 20:46:09 +04:00
else :
2013-03-30 17:38:20 +04:00
print ( " Memory leak %d bytes " % ( libxml2 . debugMemory ( 1 ) ) )