aboutsummaryrefslogtreecommitdiffstats
path: root/python/tests/outbuf.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/tests/outbuf.py')
-rwxr-xr-xpython/tests/outbuf.py116
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()