diff options
Diffstat (limited to 'python/tests/outbuf.py')
-rwxr-xr-x | python/tests/outbuf.py | 116 |
1 files changed, 94 insertions, 22 deletions
diff --git a/python/tests/outbuf.py b/python/tests/outbuf.py index 4213159f..09cd9b5e 100755 --- a/python/tests/outbuf.py +++ b/python/tests/outbuf.py @@ -3,31 +3,103 @@ import sys import libxml2 import StringIO -#print "Skipped" -#sys.exit(1) +def testSimpleBufferWrites(): + f = StringIO.StringIO() + 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) -# Memory debug specific -libxml2.debugMemory(1) +def testSaveDocToBuffer(): + """ + Regression test for bug #154294. + """ + input = '<foo>Hello</foo>' + expected = '''\ +<?xml version="1.0" encoding="UTF-8"?> +<foo>Hello</foo> +''' + f = StringIO.StringIO() + 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) -#f = open('res', 'w') -f = StringIO.StringIO() -buf = libxml2.createOutputBuffer(f, "ISO-8859-1") -buf.write(3, "foo") -buf.writeString("bar") -buf.close() +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 = StringIO.StringIO() + 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() -if f.getvalue() != "foobar": - print "Failed to save to StringIO" - sys.exit(1) +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 = StringIO.StringIO() + 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 = StringIO.StringIO() + 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() -del buf -del f +if __name__ == '__main__': + # Memory debug specific + libxml2.debugMemory(1) -# Memory debug specific -libxml2.cleanupParser() -if libxml2.debugMemory(1) == 0: - print "OK" -else: - print "Memory leak %d bytes" % (libxml2.debugMemory(1)) - libxml2.dumpMemory() + testSimpleBufferWrites() + testSaveDocToBuffer() + testSaveFormattedDocToBuffer() + testSaveIntoOutputBuffer() + libxml2.cleanupParser() + if libxml2.debugMemory(1) == 0: + print "OK" + else: + print "Memory leak %d bytes" % (libxml2.debugMemory(1)) + libxml2.dumpMemory() |