File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / libxml2 / python / tests / outbuf.py
Revision 1.1.1.2 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Sun Jun 15 19:53:34 2014 UTC (10 years, 3 months ago) by misho
Branches: libxml2, MAIN
CVS tags: v2_9_1p0, v2_9_1, HEAD
libxml2 2.9.1

    1: #!/usr/bin/python -u
    2: import sys
    3: import libxml2
    4: try:
    5:     import StringIO
    6:     str_io = StringIO.StringIO
    7: except:
    8:     import io
    9:     str_io = io.StringIO
   10: 
   11: def testSimpleBufferWrites():
   12:     f = str_io()
   13:     buf = libxml2.createOutputBuffer(f, "ISO-8859-1")
   14:     buf.write(3, "foo")
   15:     buf.writeString("bar")
   16:     buf.close()
   17: 
   18:     if f.getvalue() != "foobar":
   19:         print("Failed to save to StringIO")
   20:         sys.exit(1)
   21: 
   22: def testSaveDocToBuffer():
   23:     """
   24:     Regression test for bug #154294.
   25:     """
   26:     input = '<foo>Hello</foo>'
   27:     expected = '''\
   28: <?xml version="1.0" encoding="UTF-8"?>
   29: <foo>Hello</foo>
   30: '''
   31:     f = str_io()
   32:     buf = libxml2.createOutputBuffer(f, 'UTF-8')
   33:     doc = libxml2.parseDoc(input)
   34:     doc.saveFileTo(buf, 'UTF-8')
   35:     doc.freeDoc()
   36:     if f.getvalue() != expected:
   37:         print('xmlDoc.saveFileTo() call failed.')
   38:         print('     got: %s' % repr(f.getvalue()))
   39:         print('expected: %s' % repr(expected))
   40:         sys.exit(1)
   41: 
   42: def testSaveFormattedDocToBuffer():
   43:     input = '<outer><inner>Some text</inner><inner/></outer>'
   44:     # The formatted and non-formatted versions of the output.
   45:     expected = ('''\
   46: <?xml version="1.0" encoding="UTF-8"?>
   47: <outer><inner>Some text</inner><inner/></outer>
   48: ''', '''\
   49: <?xml version="1.0" encoding="UTF-8"?>
   50: <outer>
   51:   <inner>Some text</inner>
   52:   <inner/>
   53: </outer>
   54: ''')
   55:     doc = libxml2.parseDoc(input)
   56:     for i in (0, 1):
   57:         f = str_io()
   58:         buf = libxml2.createOutputBuffer(f, 'UTF-8')
   59:         doc.saveFormatFileTo(buf, 'UTF-8', i)
   60:         if f.getvalue() != expected[i]:
   61:             print('xmlDoc.saveFormatFileTo() call failed.')
   62:             print('     got: %s' % repr(f.getvalue()))
   63:             print('expected: %s' % repr(expected[i]))
   64:             sys.exit(1)
   65:     doc.freeDoc()
   66: 
   67: def testSaveIntoOutputBuffer():
   68:     """
   69:     Similar to the previous two tests, except this time we invoke the save
   70:     methods on the output buffer object and pass in an XML node object.
   71:     """
   72:     input = '<foo>Hello</foo>'
   73:     expected = '''\
   74: <?xml version="1.0" encoding="UTF-8"?>
   75: <foo>Hello</foo>
   76: '''
   77:     f = str_io()
   78:     doc = libxml2.parseDoc(input)
   79:     buf = libxml2.createOutputBuffer(f, 'UTF-8')
   80:     buf.saveFileTo(doc, 'UTF-8')
   81:     if f.getvalue() != expected:
   82:         print('outputBuffer.saveFileTo() call failed.')
   83:         print('     got: %s' % repr(f.getvalue()))
   84:         print('expected: %s' % repr(expected))
   85:         sys.exit(1)
   86:     f = str_io()
   87:     buf = libxml2.createOutputBuffer(f, 'UTF-8')
   88:     buf.saveFormatFileTo(doc, 'UTF-8', 1)
   89:     if f.getvalue() != expected:
   90:         print('outputBuffer.saveFormatFileTo() call failed.')
   91:         print('     got: %s' % repr(f.getvalue()))
   92:         print('expected: %s' % repr(expected))
   93:         sys.exit(1)
   94:     doc.freeDoc()
   95: 
   96: if __name__ == '__main__':
   97:     # Memory debug specific
   98:     libxml2.debugMemory(1)
   99: 
  100:     testSimpleBufferWrites()
  101:     testSaveDocToBuffer()
  102:     testSaveFormattedDocToBuffer()
  103:     testSaveIntoOutputBuffer()
  104: 
  105:     libxml2.cleanupParser()
  106:     if libxml2.debugMemory(1) == 0:
  107:         print("OK")
  108:     else:
  109:         print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
  110:         libxml2.dumpMemory()

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>