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>