Added insert_after() and some tests for xmltools.
[0publish-gui.git] / tests / testxml.py
blobc437b42f768602c89dc01e98facaf989363b8c5f
1 #!/usr/bin/env python2.4
2 import sys
3 from os.path import dirname, abspath
4 import unittest
5 from xml.dom.minidom import parseString
7 sys.path.insert(0, '..')
9 import xmltools
11 doc_a = """<?xml version="1.0" ?>
12 <root>
13 <first/>
14 <second/>
15 </root>"""
17 doc_b = """<?xml version="1.0" ?>
18 <root>
19 <first/>
20 <new/>
21 <second/>
22 </root>"""
24 doc_c = """<?xml version="1.0" ?>
25 <root>
26 <first/>
27 <second/>
28 <new/>
29 </root>"""
31 doc_d = """<?xml version="1.0" ?>
32 <root>
33 <new/>
34 <first/>
35 <second/>
36 </root>"""
38 class TestXML(unittest.TestCase):
39 def setUp(self):
40 self.doc = parseString(doc_a)
41 self.new = self.doc.createElement('new')
43 def testBefore(self):
44 first = self.doc.getElementsByTagName('first')[0]
45 xmltools.insert_before(self.new, first)
46 self.assertXML(doc_d)
48 xmltools.remove_element(self.new)
49 self.assertXML(doc_a)
51 second = self.doc.getElementsByTagName('second')[0]
52 xmltools.insert_before(self.new, second)
53 self.assertXML(doc_b)
55 xmltools.remove_element(self.new)
56 self.assertXML(doc_a)
58 def testAfter(self):
59 first = self.doc.getElementsByTagName('first')[0]
60 xmltools.insert_after(self.new, first)
61 self.assertXML(doc_b)
63 xmltools.remove_element(self.new)
64 self.assertXML(doc_a)
66 second = self.doc.getElementsByTagName('second')[0]
67 xmltools.insert_after(self.new, second)
68 self.assertXML(doc_c)
70 xmltools.remove_element(self.new)
71 self.assertXML(doc_a)
73 def assertXML(self, expected_xml):
74 actual_xml = self.doc.toxml()
75 if expected_xml != actual_xml:
76 raise AssertionError("Expected:\n%s\nGot:\n%s\n" % (expected_xml, actual_xml))
78 if __name__ == '__main__':
79 sys.argv.append('-v')
80 unittest.main()