1*7c568831SAndroid Build Coastguard Worker#!/usr/bin/env python3 2*7c568831SAndroid Build Coastguard Workerimport setup_test 3*7c568831SAndroid Build Coastguard Workerimport libxml2 4*7c568831SAndroid Build Coastguard Workerimport sys 5*7c568831SAndroid Build Coastguard Worker 6*7c568831SAndroid Build Coastguard Worker# Memory debug specific 7*7c568831SAndroid Build Coastguard Workerlibxml2.debugMemory(1) 8*7c568831SAndroid Build Coastguard Worker 9*7c568831SAndroid Build Coastguard Workerdoc = libxml2.newDoc("1.0") 10*7c568831SAndroid Build Coastguard Workercomment = doc.newDocComment("This is a generated document") 11*7c568831SAndroid Build Coastguard Workerdoc.addChild(comment) 12*7c568831SAndroid Build Coastguard Workerpi = libxml2.newPI("test", "PI content") 13*7c568831SAndroid Build Coastguard Workerdoc.addChild(pi) 14*7c568831SAndroid Build Coastguard Workerroot = doc.newChild(None, "doc", None) 15*7c568831SAndroid Build Coastguard Workerns = root.newNs("http://example.com/doc", "my") 16*7c568831SAndroid Build Coastguard Workerroot.setNs(ns) 17*7c568831SAndroid Build Coastguard Workerelem = root.newChild(None, "foo", "bar") 18*7c568831SAndroid Build Coastguard Workerelem.setBase("http://example.com/imgs") 19*7c568831SAndroid Build Coastguard Workerelem.setProp("img", "image.gif") 20*7c568831SAndroid Build Coastguard Workerdoc.saveFile("tmp.xml") 21*7c568831SAndroid Build Coastguard Workerdoc.freeDoc() 22*7c568831SAndroid Build Coastguard Worker 23*7c568831SAndroid Build Coastguard Workerdoc = libxml2.parseFile("tmp.xml") 24*7c568831SAndroid Build Coastguard Workercomment = doc.children 25*7c568831SAndroid Build Coastguard Workerif comment.type != "comment" or \ 26*7c568831SAndroid Build Coastguard Worker comment.content != "This is a generated document": 27*7c568831SAndroid Build Coastguard Worker print("error rereading comment") 28*7c568831SAndroid Build Coastguard Worker sys.exit(1) 29*7c568831SAndroid Build Coastguard Workerpi = comment.next 30*7c568831SAndroid Build Coastguard Workerif pi.type != "pi" or pi.name != "test" or pi.content != "PI content": 31*7c568831SAndroid Build Coastguard Worker print("error rereading PI") 32*7c568831SAndroid Build Coastguard Worker sys.exit(1) 33*7c568831SAndroid Build Coastguard Workerroot = pi.next 34*7c568831SAndroid Build Coastguard Workerif root.name != "doc": 35*7c568831SAndroid Build Coastguard Worker print("error rereading root") 36*7c568831SAndroid Build Coastguard Worker sys.exit(1) 37*7c568831SAndroid Build Coastguard Workerns = root.ns() 38*7c568831SAndroid Build Coastguard Workerif ns.name != "my" or ns.content != "http://example.com/doc": 39*7c568831SAndroid Build Coastguard Worker print("error rereading namespace") 40*7c568831SAndroid Build Coastguard Worker sys.exit(1) 41*7c568831SAndroid Build Coastguard Workerelem = root.children 42*7c568831SAndroid Build Coastguard Workerif elem.name != "foo": 43*7c568831SAndroid Build Coastguard Worker print("error rereading elem") 44*7c568831SAndroid Build Coastguard Worker sys.exit(1) 45*7c568831SAndroid Build Coastguard Workerif elem.getBase(None) != "http://example.com/imgs": 46*7c568831SAndroid Build Coastguard Worker print("error rereading base") 47*7c568831SAndroid Build Coastguard Worker sys.exit(1) 48*7c568831SAndroid Build Coastguard Workerif elem.prop("img") != "image.gif": 49*7c568831SAndroid Build Coastguard Worker print("error rereading property") 50*7c568831SAndroid Build Coastguard Worker sys.exit(1) 51*7c568831SAndroid Build Coastguard Worker 52*7c568831SAndroid Build Coastguard Workerdoc.freeDoc() 53*7c568831SAndroid Build Coastguard Worker 54*7c568831SAndroid Build Coastguard Worker# Memory debug specific 55*7c568831SAndroid Build Coastguard Workerlibxml2.cleanupParser() 56*7c568831SAndroid Build Coastguard Workerif libxml2.debugMemory(1) == 0: 57*7c568831SAndroid Build Coastguard Worker print("OK") 58*7c568831SAndroid Build Coastguard Workerelse: 59*7c568831SAndroid Build Coastguard Worker print("Memory leak %d bytes" % (libxml2.debugMemory(1))) 60