Annotation of embedaddon/libxml2/python/tests/indexes.py, revision 1.1.1.1
1.1 misho 1: #!/usr/bin/python -u
2: # -*- coding: ISO-8859-1 -*-
3: import sys
4: import libxml2
5:
6: # Memory debug specific
7: libxml2.debugMemory(1)
8:
9: ctxt = None
10:
11: class callback:
12: def __init__(self, startd, starte, ende, delta, endd):
13: self.startd = startd
14: self.starte = starte
15: self.ende = ende
16: self.endd = endd
17: self.delta = delta
18: self.count = 0
19:
20: def startDocument(self):
21: global ctxt
22: if ctxt.byteConsumed() != self.startd:
23: print "document start at wrong index: %d expecting %d\n" % (
24: ctxt.byteConsumed(), self.startd)
25: sys.exit(1)
26:
27: def endDocument(self):
28: global ctxt
29: expect = self.ende + self.delta * (self.count - 1) + self.endd
30: if ctxt.byteConsumed() != expect:
31: print "document end at wrong index: %d expecting %d\n" % (
32: ctxt.byteConsumed(), expect)
33: sys.exit(1)
34:
35: def startElement(self, tag, attrs):
36: global ctxt
37: if tag == "bar1":
38: expect = self.starte + self.delta * self.count
39: if ctxt.byteConsumed() != expect:
40: print "element start at wrong index: %d expecting %d\n" % (
41: ctxt.byteConsumed(), expect)
42: sys.exit(1)
43:
44:
45: def endElement(self, tag):
46: global ctxt
47: if tag == "bar1":
48: expect = self.ende + self.delta * self.count
49: if ctxt.byteConsumed() != expect:
50: print "element end at wrong index: %d expecting %d\n" % (
51: ctxt.byteConsumed(), expect)
52: sys.exit(1)
53: self.count = self.count + 1
54:
55: def characters(self, data):
56: pass
57:
58: #
59: # First run a pure UTF-8 test
60: #
61: handler = callback(0, 13, 27, 198, 183)
62: ctxt = libxml2.createPushParser(handler, "<foo>\n", 6, "test.xml")
63: chunk = """ <bar1>chars1</bar1>
64: <bar2>chars2</bar2>
65: <bar3>chars3</bar3>
66: <bar4>chars4</bar4>
67: <bar5>chars5</bar5>
68: <bar6><s6</bar6>
69: <bar7>chars7</bar7>
70: <bar8>&8</bar8>
71: <bar9>chars9</bar9>
72: """
73: i = 0
74: while i < 10000:
75: ctxt.parseChunk(chunk, len(chunk), 0)
76: i = i + 1
77: chunk = "</foo>"
78: ctxt.parseChunk(chunk, len(chunk), 1)
79: ctxt=None
80:
81: #
82: # Then run a test relying on ISO-Latin-1
83: #
84: handler = callback(43, 57, 71, 198, 183)
85: chunk="""<?xml version="1.0" encoding="ISO-8859-1"?>
86: <foo>
87: """
88: ctxt = libxml2.createPushParser(handler, chunk, len(chunk), "test.xml")
89: chunk = """ <bar1>chars1</bar1>
90: <bar2>chars2</bar2>
91: <bar3>chars3</bar3>
92: <bar4>chàrs4</bar4>
93: <bar5>chars5</bar5>
94: <bar6><s6</bar6>
95: <bar7>chars7</bar7>
96: <bar8>&8</bar8>
97: <bar9>très 9</bar9>
98: """
99: i = 0
100: while i < 10000:
101: ctxt.parseChunk(chunk, len(chunk), 0)
102: i = i + 1
103: chunk = "</foo>"
104: ctxt.parseChunk(chunk, len(chunk), 1)
105: ctxt=None
106:
107: # Memory debug specific
108: libxml2.cleanupParser()
109: if libxml2.debugMemory(1) == 0:
110: print "OK"
111: else:
112: print "Memory leak %d bytes" % (libxml2.debugMemory(1))
113: libxml2.dumpMemory()
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>