123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- #!/usr/bin/python -u
- import sys
- import libxml2
- import StringIO
- 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)
- 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)
- 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()
- 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()
- 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()
|