mirror of
				https://gitlab.gnome.org/GNOME/libxml2.git
				synced 2025-10-28 23:14:57 +03:00 
			
		
		
		
	* python/tests/*.py: applied patch from Malcolm Tredinnick to avoid tabs in python sources, should fix #135095 Daniel
		
			
				
	
	
		
			114 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			114 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/python -u
 | ||
| # -*- coding: ISO-8859-1 -*-
 | ||
| import sys
 | ||
| import libxml2
 | ||
| 
 | ||
| # Memory debug specific
 | ||
| libxml2.debugMemory(1)
 | ||
| 
 | ||
| ctxt = None
 | ||
| 
 | ||
| class callback:
 | ||
|     def __init__(self, startd, starte, ende, delta, endd):
 | ||
|         self.startd = startd
 | ||
|         self.starte = starte
 | ||
|         self.ende = ende
 | ||
|         self.endd = endd
 | ||
|         self.delta = delta
 | ||
|         self.count = 0
 | ||
| 
 | ||
|     def startDocument(self):
 | ||
|         global ctxt
 | ||
|         if ctxt.byteConsumed() != self.startd:
 | ||
|             print "document start at wrong index: %d expecting %d\n" % (
 | ||
|                   ctxt.byteConsumed(), self.startd)
 | ||
|             sys.exit(1)
 | ||
| 
 | ||
|     def endDocument(self):
 | ||
|         global ctxt
 | ||
|         expect = self.ende + self.delta * (self.count - 1) + self.endd
 | ||
|         if ctxt.byteConsumed() != expect:
 | ||
|             print "document end at wrong index: %d expecting %d\n" % (
 | ||
|                   ctxt.byteConsumed(), expect)
 | ||
|             sys.exit(1)
 | ||
| 
 | ||
|     def startElement(self, tag, attrs):
 | ||
|         global ctxt
 | ||
|         if tag == "bar1":
 | ||
|             expect = self.starte + self.delta * self.count
 | ||
|             if ctxt.byteConsumed() != expect:
 | ||
|                 print "element start at wrong index: %d expecting %d\n" % (
 | ||
|                    ctxt.byteConsumed(), expect)
 | ||
|                 sys.exit(1)
 | ||
|             
 | ||
| 
 | ||
|     def endElement(self, tag):
 | ||
|         global ctxt
 | ||
|         if tag == "bar1":
 | ||
|             expect = self.ende + self.delta * self.count
 | ||
|             if ctxt.byteConsumed() != expect:
 | ||
|                 print "element end at wrong index: %d expecting %d\n" % (
 | ||
|                       ctxt.byteConsumed(), expect)
 | ||
|                 sys.exit(1)
 | ||
|             self.count = self.count + 1
 | ||
| 
 | ||
|     def characters(self, data):
 | ||
|         pass
 | ||
| 
 | ||
| #
 | ||
| # First run a pure UTF-8 test
 | ||
| #
 | ||
| handler = callback(0, 13, 27, 198, 183)
 | ||
| ctxt = libxml2.createPushParser(handler, "<foo>\n", 6, "test.xml")
 | ||
| chunk = """  <bar1>chars1</bar1>
 | ||
|   <bar2>chars2</bar2>
 | ||
|   <bar3>chars3</bar3>
 | ||
|   <bar4>chars4</bar4>
 | ||
|   <bar5>chars5</bar5>
 | ||
|   <bar6><s6</bar6>
 | ||
|   <bar7>chars7</bar7>
 | ||
|   <bar8>&8</bar8>
 | ||
|   <bar9>chars9</bar9>
 | ||
| """
 | ||
| i = 0
 | ||
| while i < 10000:
 | ||
|     ctxt.parseChunk(chunk, len(chunk), 0)
 | ||
|     i = i + 1
 | ||
| chunk = "</foo>"
 | ||
| ctxt.parseChunk(chunk, len(chunk), 1)
 | ||
| ctxt=None
 | ||
| 
 | ||
| #
 | ||
| # Then run a test relying on ISO-Latin-1
 | ||
| #
 | ||
| handler = callback(43, 57, 71, 198, 183)
 | ||
| chunk="""<?xml version="1.0" encoding="ISO-8859-1"?>
 | ||
| <foo>
 | ||
| """
 | ||
| ctxt = libxml2.createPushParser(handler, chunk, len(chunk), "test.xml")
 | ||
| chunk = """  <bar1>chars1</bar1>
 | ||
|   <bar2>chars2</bar2>
 | ||
|   <bar3>chars3</bar3>
 | ||
|   <bar4>ch<63>rs4</bar4>
 | ||
|   <bar5>chars5</bar5>
 | ||
|   <bar6><s6</bar6>
 | ||
|   <bar7>chars7</bar7>
 | ||
|   <bar8>&8</bar8>
 | ||
|   <bar9>tr<74>s 9</bar9>
 | ||
| """
 | ||
| i = 0
 | ||
| while i < 10000:
 | ||
|     ctxt.parseChunk(chunk, len(chunk), 0)
 | ||
|     i = i + 1
 | ||
| chunk = "</foo>"
 | ||
| ctxt.parseChunk(chunk, len(chunk), 1)
 | ||
| ctxt=None
 | ||
| 
 | ||
| # Memory debug specific
 | ||
| libxml2.cleanupParser()
 | ||
| if libxml2.debugMemory(1) == 0:
 | ||
|     print "OK"
 | ||
| else:
 | ||
|     print "Memory leak %d bytes" % (libxml2.debugMemory(1))
 | ||
|     libxml2.dumpMemory()
 |