#!/usr/bin/python # -*- coding: UTF-8 -*- import unittest import libxml2 from pyxmpp import xmlextra from stream_reader import xml_elements_equal input_xml = """ """ input_doc = libxml2.parseDoc(input_xml) input_root = input_doc.getRootElement() input_xml2 = """ """ input_doc2 = libxml2.parseDoc(input_xml2) input_root2 = input_doc2.getRootElement() output_xml = """ """ output_doc = libxml2.parseDoc(output_xml) output_root = output_doc.getRootElement() class TestReplaceNs(unittest.TestCase): def test_replace_ns(self): doc = libxml2.newDoc("1.0") root = doc.newChild(None, "root", None) common_ns = root.newNs(xmlextra.COMMON_NS, None) root.setNs(common_ns) doc.setRootElement(root) n = input_doc.getRootElement() try: input_ns = n.ns() except libxml2.treeError: input_ns = None n = n.children while n: n1 = n.docCopyNode(doc, 1) root.addChild(n1) if n1.type == 'element': try: n1_ns = n1.ns() except libxml2.treeError: ns1_ns = None if n1_ns.content == input_ns.content: xmlextra.replace_ns(n1, n1_ns, common_ns) n = n.next self.failUnless(xml_elements_equal(root, output_root)) def test_replace_null_ns(self): doc = libxml2.newDoc("1.0") root = doc.newChild(None, "root", None) common_ns = root.newNs(xmlextra.COMMON_NS, None) root.setNs(common_ns) doc.setRootElement(root) n = input_doc2.getRootElement() try: input_ns = n.ns() except libxml2.treeError: input_ns = None n = n.children while n: n1 = n.docCopyNode(doc, 1) root.addChild(n1) if n1.type == 'element': try: n1_ns = n1.ns() except libxml2.treeError: n1_ns = None if n1_ns is None: xmlextra.replace_ns(n1, n1_ns, common_ns) n = n.next self.failUnless(xml_elements_equal(root, output_root)) def test_safe_serialize(self): s1 = """""" doc1 = libxml2.parseDoc(s1) root1 = doc1.getRootElement() el1 = root1.children try: root1_ns = root1.ns() except libxml2.treeError: root1_ns = None el1.setNs(root1_ns) #s = el1.serialize() s = xmlextra.safe_serialize(el1) s2 = '%s' % (s,) doc2 = libxml2.parseDoc(s2) root2 = doc2.getRootElement() self.failUnless(xml_elements_equal(root1, root2)) def suite(): suite = unittest.TestSuite() suite.addTest(unittest.makeSuite(TestReplaceNs)) return suite if __name__ == '__main__': unittest.TextTestRunner(verbosity=2).run(suite()) # vi: sts=4 et sw=4