Blame python/tests/indexes.py

Packit 423ecb
#!/usr/bin/python -u
Packit 423ecb
# -*- coding: ISO-8859-1 -*-
Packit 423ecb
import sys
Packit 423ecb
import libxml2
Packit 423ecb
Packit 423ecb
# Memory debug specific
Packit 423ecb
libxml2.debugMemory(1)
Packit 423ecb
Packit 423ecb
ctxt = None
Packit 423ecb
Packit 423ecb
class callback:
Packit 423ecb
    def __init__(self, startd, starte, ende, delta, endd):
Packit 423ecb
        self.startd = startd
Packit 423ecb
        self.starte = starte
Packit 423ecb
        self.ende = ende
Packit 423ecb
        self.endd = endd
Packit 423ecb
        self.delta = delta
Packit 423ecb
        self.count = 0
Packit 423ecb
Packit 423ecb
    def startDocument(self):
Packit 423ecb
        global ctxt
Packit 423ecb
        if ctxt.byteConsumed() != self.startd:
Packit 423ecb
            print("document start at wrong index: %d expecting %d\n" % (
Packit 423ecb
                  ctxt.byteConsumed(), self.startd))
Packit 423ecb
            sys.exit(1)
Packit 423ecb
Packit 423ecb
    def endDocument(self):
Packit 423ecb
        global ctxt
Packit 423ecb
        expect = self.ende + self.delta * (self.count - 1) + self.endd
Packit 423ecb
        if ctxt.byteConsumed() != expect:
Packit 423ecb
            print("document end at wrong index: %d expecting %d\n" % (
Packit 423ecb
                  ctxt.byteConsumed(), expect))
Packit 423ecb
            sys.exit(1)
Packit 423ecb
Packit 423ecb
    def startElement(self, tag, attrs):
Packit 423ecb
        global ctxt
Packit 423ecb
        if tag == "bar1":
Packit 423ecb
            expect = self.starte + self.delta * self.count
Packit 423ecb
            if ctxt.byteConsumed() != expect:
Packit 423ecb
                print("element start at wrong index: %d expecting %d\n" % (
Packit 423ecb
                   ctxt.byteConsumed(), expect))
Packit 423ecb
                sys.exit(1)
Packit 423ecb
            
Packit 423ecb
Packit 423ecb
    def endElement(self, tag):
Packit 423ecb
        global ctxt
Packit 423ecb
        if tag == "bar1":
Packit 423ecb
            expect = self.ende + self.delta * self.count
Packit 423ecb
            if ctxt.byteConsumed() != expect:
Packit 423ecb
                print("element end at wrong index: %d expecting %d\n" % (
Packit 423ecb
                      ctxt.byteConsumed(), expect))
Packit 423ecb
                sys.exit(1)
Packit 423ecb
            self.count = self.count + 1
Packit 423ecb
Packit 423ecb
    def characters(self, data):
Packit 423ecb
        pass
Packit 423ecb
Packit 423ecb
#
Packit 423ecb
# First run a pure UTF-8 test
Packit 423ecb
#
Packit 423ecb
handler = callback(0, 13, 27, 198, 183)
Packit 423ecb
ctxt = libxml2.createPushParser(handler, "<foo>\n", 6, "test.xml")
Packit 423ecb
chunk = """  <bar1>chars1</bar1>
Packit 423ecb
  <bar2>chars2</bar2>
Packit 423ecb
  <bar3>chars3</bar3>
Packit 423ecb
  <bar4>chars4</bar4>
Packit 423ecb
  <bar5>chars5</bar5>
Packit 423ecb
  <bar6><s6</bar6>
Packit 423ecb
  <bar7>chars7</bar7>
Packit 423ecb
  <bar8>&8</bar8>
Packit 423ecb
  <bar9>chars9</bar9>
Packit 423ecb
"""
Packit 423ecb
i = 0
Packit 423ecb
while i < 10000:
Packit 423ecb
    ctxt.parseChunk(chunk, len(chunk), 0)
Packit 423ecb
    i = i + 1
Packit 423ecb
chunk = "</foo>"
Packit 423ecb
ctxt.parseChunk(chunk, len(chunk), 1)
Packit 423ecb
ctxt=None
Packit 423ecb
Packit 423ecb
#
Packit 423ecb
# Then run a test relying on ISO-Latin-1
Packit 423ecb
#
Packit 423ecb
handler = callback(43, 57, 71, 198, 183)
Packit 423ecb
chunk="""
Packit 423ecb
<foo>
Packit 423ecb
"""
Packit 423ecb
ctxt = libxml2.createPushParser(handler, chunk, len(chunk), "test.xml")
Packit 423ecb
chunk = """  <bar1>chars1</bar1>
Packit 423ecb
  <bar2>chars2</bar2>
Packit 423ecb
  <bar3>chars3</bar3>
Packit 423ecb
  <bar4>chàrs4</bar4>
Packit 423ecb
  <bar5>chars5</bar5>
Packit 423ecb
  <bar6><s6</bar6>
Packit 423ecb
  <bar7>chars7</bar7>
Packit 423ecb
  <bar8>&8</bar8>
Packit 423ecb
  <bar9>très 9</bar9>
Packit 423ecb
"""
Packit 423ecb
i = 0
Packit 423ecb
while i < 10000:
Packit 423ecb
    ctxt.parseChunk(chunk, len(chunk), 0)
Packit 423ecb
    i = i + 1
Packit 423ecb
chunk = "</foo>"
Packit 423ecb
ctxt.parseChunk(chunk, len(chunk), 1)
Packit 423ecb
ctxt=None
Packit 423ecb
Packit 423ecb
# Memory debug specific
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()