Annotation of embedaddon/libxml2/python/tests/indexes.py, revision 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>&lt;s6</bar6>
        !            69:   <bar7>chars7</bar7>
        !            70:   <bar8>&#38;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>&lt;s6</bar6>
        !            95:   <bar7>chars7</bar7>
        !            96:   <bar8>&#38;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>