Blame python/tests/outbuf.py

Packit 423ecb
#!/usr/bin/python -u
Packit 423ecb
import sys
Packit 423ecb
import libxml2
Packit 423ecb
try:
Packit 423ecb
    import StringIO
Packit 423ecb
    str_io = StringIO.StringIO
Packit 423ecb
except:
Packit 423ecb
    import io
Packit 423ecb
    str_io = io.StringIO
Packit 423ecb
Packit 423ecb
def testSimpleBufferWrites():
Packit 423ecb
    f = str_io()
Packit 423ecb
    buf = libxml2.createOutputBuffer(f, "ISO-8859-1")
Packit 423ecb
    buf.write(3, "foo")
Packit 423ecb
    buf.writeString("bar")
Packit 423ecb
    buf.close()
Packit 423ecb
Packit 423ecb
    if f.getvalue() != "foobar":
Packit 423ecb
        print("Failed to save to StringIO")
Packit 423ecb
        sys.exit(1)
Packit 423ecb
Packit 423ecb
def testSaveDocToBuffer():
Packit 423ecb
    """
Packit 423ecb
    Regression test for bug #154294.
Packit 423ecb
    """
Packit 423ecb
    input = '<foo>Hello</foo>'
Packit 423ecb
    expected = '''\
Packit 423ecb
Packit 423ecb
<foo>Hello</foo>
Packit 423ecb
'''
Packit 423ecb
    f = str_io()
Packit 423ecb
    buf = libxml2.createOutputBuffer(f, 'UTF-8')
Packit 423ecb
    doc = libxml2.parseDoc(input)
Packit 423ecb
    doc.saveFileTo(buf, 'UTF-8')
Packit 423ecb
    doc.freeDoc()
Packit 423ecb
    if f.getvalue() != expected:
Packit 423ecb
        print('xmlDoc.saveFileTo() call failed.')
Packit 423ecb
        print('     got: %s' % repr(f.getvalue()))
Packit 423ecb
        print('expected: %s' % repr(expected))
Packit 423ecb
        sys.exit(1)
Packit 423ecb
Packit 423ecb
def testSaveFormattedDocToBuffer():
Packit 423ecb
    input = '<outer><inner>Some text</inner><inner/></outer>'
Packit 423ecb
    # The formatted and non-formatted versions of the output.
Packit 423ecb
    expected = ('''\
Packit 423ecb
Packit 423ecb
<outer><inner>Some text</inner><inner/></outer>
Packit 423ecb
''', '''\
Packit 423ecb
Packit 423ecb
<outer>
Packit 423ecb
  <inner>Some text</inner>
Packit 423ecb
  <inner/>
Packit 423ecb
</outer>
Packit 423ecb
''')
Packit 423ecb
    doc = libxml2.parseDoc(input)
Packit 423ecb
    for i in (0, 1):
Packit 423ecb
        f = str_io()
Packit 423ecb
        buf = libxml2.createOutputBuffer(f, 'UTF-8')
Packit 423ecb
        doc.saveFormatFileTo(buf, 'UTF-8', i)
Packit 423ecb
        if f.getvalue() != expected[i]:
Packit 423ecb
            print('xmlDoc.saveFormatFileTo() call failed.')
Packit 423ecb
            print('     got: %s' % repr(f.getvalue()))
Packit 423ecb
            print('expected: %s' % repr(expected[i]))
Packit 423ecb
            sys.exit(1)
Packit 423ecb
    doc.freeDoc()
Packit 423ecb
Packit 423ecb
def testSaveIntoOutputBuffer():
Packit 423ecb
    """
Packit 423ecb
    Similar to the previous two tests, except this time we invoke the save
Packit 423ecb
    methods on the output buffer object and pass in an XML node object.
Packit 423ecb
    """
Packit 423ecb
    input = '<foo>Hello</foo>'
Packit 423ecb
    expected = '''\
Packit 423ecb
Packit 423ecb
<foo>Hello</foo>
Packit 423ecb
'''
Packit 423ecb
    f = str_io()
Packit 423ecb
    doc = libxml2.parseDoc(input)
Packit 423ecb
    buf = libxml2.createOutputBuffer(f, 'UTF-8')
Packit 423ecb
    buf.saveFileTo(doc, 'UTF-8')
Packit 423ecb
    if f.getvalue() != expected:
Packit 423ecb
        print('outputBuffer.saveFileTo() call failed.')
Packit 423ecb
        print('     got: %s' % repr(f.getvalue()))
Packit 423ecb
        print('expected: %s' % repr(expected))
Packit 423ecb
        sys.exit(1)
Packit 423ecb
    f = str_io()
Packit 423ecb
    buf = libxml2.createOutputBuffer(f, 'UTF-8')
Packit 423ecb
    buf.saveFormatFileTo(doc, 'UTF-8', 1)
Packit 423ecb
    if f.getvalue() != expected:
Packit 423ecb
        print('outputBuffer.saveFormatFileTo() call failed.')
Packit 423ecb
        print('     got: %s' % repr(f.getvalue()))
Packit 423ecb
        print('expected: %s' % repr(expected))
Packit 423ecb
        sys.exit(1)
Packit 423ecb
    doc.freeDoc()
Packit 423ecb
Packit 423ecb
if __name__ == '__main__':
Packit 423ecb
    # Memory debug specific
Packit 423ecb
    libxml2.debugMemory(1)
Packit 423ecb
Packit 423ecb
    testSimpleBufferWrites()
Packit 423ecb
    testSaveDocToBuffer()
Packit 423ecb
    testSaveFormattedDocToBuffer()
Packit 423ecb
    testSaveIntoOutputBuffer()
Packit 423ecb
Packit 423ecb
    libxml2.cleanupParser()
Packit 423ecb
    if libxml2.debugMemory(1) == 0:
Packit 423ecb
        print("OK")
Packit 423ecb
    else:
Packit 423ecb
        print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
Packit 423ecb
        libxml2.dumpMemory()