adding xmlbuilder
[sfa.git] / xmlbuilder-0.9 / xmlbuilder / tests / __init__.py
diff --git a/xmlbuilder-0.9/xmlbuilder/tests/__init__.py b/xmlbuilder-0.9/xmlbuilder/tests/__init__.py
new file mode 100644 (file)
index 0000000..67eaa67
--- /dev/null
@@ -0,0 +1,99 @@
+#!/usr/bin/env python\r
+from __future__ import with_statement\r
+#-------------------------------------------------------------------------------\r
+import unittest\r
+from xml.etree.ElementTree import fromstring\r
+#-------------------------------------------------------------------------------\r
+from xmlbuilder import XMLBuilder\r
+#-------------------------------------------------------------------------------\r
+def xmlStructureEqual(xml1,xml2):\r
+    tree1 = fromstring(xml1)\r
+    tree2 = fromstring(xml2)\r
+    return _xmlStructureEqual(tree1,tree2)\r
+#-------------------------------------------------------------------------------\r
+def _xmlStructureEqual(tree1,tree2):\r
+    if tree1.tag != tree2.tag:\r
+        return False\r
+    attr1 = list(tree1.attrib.items())\r
+    attr1.sort()\r
+    attr2 = list(tree2.attrib.items())\r
+    attr2.sort()\r
+    if attr1 != attr2:\r
+        return False\r
+    return tree1.getchildren() == tree2.getchildren()\r
+#-------------------------------------------------------------------------------\r
+result1 = \\r
+"""\r
+<root>\r
+    <array />\r
+    <array len="10">\r
+        <el val="0" />\r
+        <el val="1">xyz</el>\r
+        <el val="2">abc</el>\r
+        <el val="3" />\r
+        <el val="4" />\r
+        <el val="5" />\r
+        <sup-el val="23">test  </sup-el>\r
+    </array>\r
+</root>\r
+""".strip()\r
+#-------------------------------------------------------------------------------\r
+class TestXMLBuilder(unittest.TestCase):\r
+    def testShift(self):\r
+        xml = (XMLBuilder() << ('root',))\r
+        self.assertEqual(str(xml),"<root />")\r
+        \r
+        xml = XMLBuilder()\r
+        xml << ('root',"some text")\r
+        self.assertEqual(str(xml),"<root>some text</root>")\r
+        \r
+        xml = XMLBuilder()\r
+        xml << ('root',{'x':1,'y':'2'})\r
+        self.assert_(xmlStructureEqual(str(xml),"<root x='1' y='2'>some text</root>"))\r
+        \r
+        xml = XMLBuilder()\r
+        xml << ('root',{'x':1,'y':'2'})\r
+        self.assert_(xmlStructureEqual(str(xml),"<root x='1' y='2'></root>"))\r
+\r
+        xml = XMLBuilder()\r
+        xml << ('root',{'x':1,'y':'2'})\r
+        self.assert_(not xmlStructureEqual(str(xml),"<root x='2' y='2'></root>"))\r
+\r
+        \r
+        xml = XMLBuilder()\r
+        xml << ('root',"gonduras.ua",{'x':1,'y':'2'})\r
+        self.assert_(xmlStructureEqual(str(xml),"<root x='1' y='2'>gonduras.ua</root>"))\r
+        \r
+        xml = XMLBuilder()\r
+        xml << ('root',"gonduras.ua",{'x':1,'y':'2'})\r
+        self.assert_(xmlStructureEqual(str(xml),"<root x='1' y='2'>gonduras.com</root>"))\r
+    #---------------------------------------------------------------------------\r
+    def testWith(self):\r
+        xml = XMLBuilder()\r
+        with xml.root(lenght = 12):\r
+            pass\r
+        self.assertEqual(str(xml),'<root lenght="12" />')\r
+        \r
+        xml = XMLBuilder()\r
+        with xml.root():\r
+            xml << "text1" << "text2" << ('some_node',)\r
+        self.assertEqual(str(xml),"<root>text1text2<some_node /></root>")\r
+    #---------------------------------------------------------------------------\r
+    def testFormat(self):\r
+        x = XMLBuilder('utf-8',format = True)\r
+        with x.root():\r
+            x << ('array',)\r
+            with x.array(len = 10):\r
+                with x.el(val = 0):\r
+                    pass\r
+                with x.el('xyz',val = 1):\r
+                    pass\r
+                x << ("el","abc",{'val':2}) << ('el',dict(val=3))\r
+                x << ('el',dict(val=4)) << ('el',dict(val='5'))\r
+                with x('sup-el',val = 23):\r
+                    x << "test  "\r
+        self.assertEqual(str(x),result1)\r
+#-------------------------------------------------------------------------------\r
+if __name__ == '__main__':\r
+    unittest.main()\r
+#-------------------------------------------------------------------------------\r