mirror of
				https://gitlab.gnome.org/GNOME/libxml2.git
				synced 2025-10-30 10:45:36 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			111 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			111 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/python -u
 | |
| import sys
 | |
| import libxml2
 | |
| try:
 | |
|     import StringIO
 | |
|     str_io = StringIO.StringIO
 | |
| except:
 | |
|     import io
 | |
|     str_io = io.StringIO
 | |
| 
 | |
| def testSimpleBufferWrites():
 | |
|     f = str_io()
 | |
|     buf = libxml2.createOutputBuffer(f, "ISO-8859-1")
 | |
|     buf.write(3, "foo")
 | |
|     buf.writeString("bar")
 | |
|     buf.close()
 | |
| 
 | |
|     if f.getvalue() != "foobar":
 | |
|         print("Failed to save to StringIO")
 | |
|         sys.exit(1)
 | |
| 
 | |
| def testSaveDocToBuffer():
 | |
|     """
 | |
|     Regression test for bug #154294.
 | |
|     """
 | |
|     input = '<foo>Hello</foo>'
 | |
|     expected = '''\
 | |
| <?xml version="1.0" encoding="UTF-8"?>
 | |
| <foo>Hello</foo>
 | |
| '''
 | |
|     f = str_io()
 | |
|     buf = libxml2.createOutputBuffer(f, 'UTF-8')
 | |
|     doc = libxml2.parseDoc(input)
 | |
|     doc.saveFileTo(buf, 'UTF-8')
 | |
|     doc.freeDoc()
 | |
|     if f.getvalue() != expected:
 | |
|         print('xmlDoc.saveFileTo() call failed.')
 | |
|         print('     got: %s' % repr(f.getvalue()))
 | |
|         print('expected: %s' % repr(expected))
 | |
|         sys.exit(1)
 | |
| 
 | |
| def testSaveFormattedDocToBuffer():
 | |
|     input = '<outer><inner>Some text</inner><inner/></outer>'
 | |
|     # The formatted and non-formatted versions of the output.
 | |
|     expected = ('''\
 | |
| <?xml version="1.0" encoding="UTF-8"?>
 | |
| <outer><inner>Some text</inner><inner/></outer>
 | |
| ''', '''\
 | |
| <?xml version="1.0" encoding="UTF-8"?>
 | |
| <outer>
 | |
|   <inner>Some text</inner>
 | |
|   <inner/>
 | |
| </outer>
 | |
| ''')
 | |
|     doc = libxml2.parseDoc(input)
 | |
|     for i in (0, 1):
 | |
|         f = str_io()
 | |
|         buf = libxml2.createOutputBuffer(f, 'UTF-8')
 | |
|         doc.saveFormatFileTo(buf, 'UTF-8', i)
 | |
|         if f.getvalue() != expected[i]:
 | |
|             print('xmlDoc.saveFormatFileTo() call failed.')
 | |
|             print('     got: %s' % repr(f.getvalue()))
 | |
|             print('expected: %s' % repr(expected[i]))
 | |
|             sys.exit(1)
 | |
|     doc.freeDoc()
 | |
| 
 | |
| def testSaveIntoOutputBuffer():
 | |
|     """
 | |
|     Similar to the previous two tests, except this time we invoke the save
 | |
|     methods on the output buffer object and pass in an XML node object.
 | |
|     """
 | |
|     input = '<foo>Hello</foo>'
 | |
|     expected = '''\
 | |
| <?xml version="1.0" encoding="UTF-8"?>
 | |
| <foo>Hello</foo>
 | |
| '''
 | |
|     f = str_io()
 | |
|     doc = libxml2.parseDoc(input)
 | |
|     buf = libxml2.createOutputBuffer(f, 'UTF-8')
 | |
|     buf.saveFileTo(doc, 'UTF-8')
 | |
|     if f.getvalue() != expected:
 | |
|         print('outputBuffer.saveFileTo() call failed.')
 | |
|         print('     got: %s' % repr(f.getvalue()))
 | |
|         print('expected: %s' % repr(expected))
 | |
|         sys.exit(1)
 | |
|     f = str_io()
 | |
|     buf = libxml2.createOutputBuffer(f, 'UTF-8')
 | |
|     buf.saveFormatFileTo(doc, 'UTF-8', 1)
 | |
|     if f.getvalue() != expected:
 | |
|         print('outputBuffer.saveFormatFileTo() call failed.')
 | |
|         print('     got: %s' % repr(f.getvalue()))
 | |
|         print('expected: %s' % repr(expected))
 | |
|         sys.exit(1)
 | |
|     doc.freeDoc()
 | |
| 
 | |
| if __name__ == '__main__':
 | |
|     # Memory debug specific
 | |
|     libxml2.debugMemory(1)
 | |
| 
 | |
|     testSimpleBufferWrites()
 | |
|     testSaveDocToBuffer()
 | |
|     testSaveFormattedDocToBuffer()
 | |
|     testSaveIntoOutputBuffer()
 | |
| 
 | |
|     libxml2.cleanupParser()
 | |
|     if libxml2.debugMemory(1) == 0:
 | |
|         print("OK")
 | |
|     else:
 | |
|         print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
 | |
|         libxml2.dumpMemory()
 |