VirtualBox

source: vbox/trunk/src/libs/libxml2-2.6.30/python/tests/indexes.py@ 6076

Last change on this file since 6076 was 6076, checked in by vboxsync, 17 years ago

Merged dmik/s2 branch (r25959:26751) to the trunk.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Date Revision Author Id
File size: 2.9 KB
Line 
1#!/usr/bin/python -u
2# -*- coding: ISO-8859-1 -*-
3import sys
4import libxml2
5
6# Memory debug specific
7libxml2.debugMemory(1)
8
9ctxt = None
10
11class 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#
61handler = callback(0, 13, 27, 198, 183)
62ctxt = libxml2.createPushParser(handler, "<foo>\n", 6, "test.xml")
63chunk = """ <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"""
73i = 0
74while i < 10000:
75 ctxt.parseChunk(chunk, len(chunk), 0)
76 i = i + 1
77chunk = "</foo>"
78ctxt.parseChunk(chunk, len(chunk), 1)
79ctxt=None
80
81#
82# Then run a test relying on ISO-Latin-1
83#
84handler = callback(43, 57, 71, 198, 183)
85chunk="""<?xml version="1.0" encoding="ISO-8859-1"?>
86<foo>
87"""
88ctxt = libxml2.createPushParser(handler, chunk, len(chunk), "test.xml")
89chunk = """ <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"""
99i = 0
100while i < 10000:
101 ctxt.parseChunk(chunk, len(chunk), 0)
102 i = i + 1
103chunk = "</foo>"
104ctxt.parseChunk(chunk, len(chunk), 1)
105ctxt=None
106
107# Memory debug specific
108libxml2.cleanupParser()
109if libxml2.debugMemory(1) == 0:
110 print "OK"
111else:
112 print "Memory leak %d bytes" % (libxml2.debugMemory(1))
113 libxml2.dumpMemory()
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette