set eol-style:native
[reactos.git] / reactos / lib / libxml2 / python / tests / serialize.py
1 #!/usr/bin/python -u
2 import sys
3 import libxml2
4
5 # Memory debug specific
6 libxml2.debugMemory(1)
7
8 #
9 # Testing XML document serialization
10 #
11 doc = libxml2.parseDoc("""<root><foo>hello</foo></root>""")
12 str = doc.serialize()
13 if str != """<?xml version="1.0"?>
14 <root><foo>hello</foo></root>
15 """:
16 print "error serializing XML document 1"
17 sys.exit(1)
18 str = doc.serialize("iso-8859-1")
19 if str != """<?xml version="1.0" encoding="iso-8859-1"?>
20 <root><foo>hello</foo></root>
21 """:
22 print "error serializing XML document 2"
23 sys.exit(1)
24 str = doc.serialize(format=1)
25 if str != """<?xml version="1.0"?>
26 <root>
27 <foo>hello</foo>
28 </root>
29 """:
30 print "error serializing XML document 3"
31 sys.exit(1)
32 str = doc.serialize("iso-8859-1", 1)
33 if str != """<?xml version="1.0" encoding="iso-8859-1"?>
34 <root>
35 <foo>hello</foo>
36 </root>
37 """:
38 print "error serializing XML document 4"
39 sys.exit(1)
40
41 #
42 # Test serializing a subnode
43 #
44 root = doc.getRootElement()
45 str = root.serialize()
46 if str != """<root><foo>hello</foo></root>""":
47 print "error serializing XML root 1"
48 sys.exit(1)
49 str = root.serialize("iso-8859-1")
50 if str != """<root><foo>hello</foo></root>""":
51 print "error serializing XML root 2"
52 sys.exit(1)
53 str = root.serialize(format=1)
54 if str != """<root>
55 <foo>hello</foo>
56 </root>""":
57 print "error serializing XML root 3"
58 sys.exit(1)
59 str = root.serialize("iso-8859-1", 1)
60 if str != """<root>
61 <foo>hello</foo>
62 </root>""":
63 print "error serializing XML root 4"
64 sys.exit(1)
65 doc.freeDoc()
66
67 #
68 # Testing HTML document serialization
69 #
70 doc = libxml2.htmlParseDoc("""<html><head><title>Hello</title><body><p>hello</body></html>""", None)
71 str = doc.serialize()
72 if str != """<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
73 <html><head><title>Hello</title></head><body><p>hello</p></body></html>
74 """:
75 print "error serializing HTML document 1"
76 sys.exit(1)
77 str = doc.serialize("ISO-8859-1")
78 if str != """<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
79 <html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Hello</title></head><body><p>hello</p></body></html>
80 """:
81 print "error serializing HTML document 2"
82 sys.exit(1)
83 str = doc.serialize(format=1)
84 if str != """<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
85 <html>
86 <head>
87 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
88 <title>Hello</title>
89 </head>
90 <body><p>hello</p></body>
91 </html>
92 """:
93 print "error serializing HTML document 3"
94 sys.exit(1)
95 str = doc.serialize("iso-8859-1", 1)
96 if str != """<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
97 <html>
98 <head>
99 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
100 <title>Hello</title>
101 </head>
102 <body><p>hello</p></body>
103 </html>
104 """:
105 print "error serializing HTML document 4"
106 sys.exit(1)
107
108 #
109 # Test serializing a subnode
110 #
111 doc.htmlSetMetaEncoding(None)
112 root = doc.getRootElement()
113 str = root.serialize()
114 if str != """<html><head><title>Hello</title></head><body><p>hello</p></body></html>""":
115 print "error serializing HTML root 1"
116 sys.exit(1)
117 str = root.serialize("ISO-8859-1")
118 if str != """<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Hello</title></head><body><p>hello</p></body></html>""":
119 print "error serializing HTML root 2"
120 sys.exit(1)
121 str = root.serialize(format=1)
122 if str != """<html>
123 <head>
124 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
125 <title>Hello</title>
126 </head>
127 <body><p>hello</p></body>
128 </html>""":
129 print "error serializing HTML root 3"
130 sys.exit(1)
131 str = root.serialize("iso-8859-1", 1)
132 if str != """<html>
133 <head>
134 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
135 <title>Hello</title>
136 </head>
137 <body><p>hello</p></body>
138 </html>""":
139 print "error serializing HTML root 4"
140 sys.exit(1)
141
142 doc.freeDoc()
143
144 # Memory debug specific
145 libxml2.cleanupParser()
146 if libxml2.debugMemory(1) == 0:
147 print "OK"
148 else:
149 print "Memory leak %d bytes" % (libxml2.debugMemory(1))
150 libxml2.dumpMemory()