Add assert_xb, assert_xbl test utility functions
authorReto Buerki <reet@codelabs.ch>
Thu, 21 Jan 2016 03:25:38 +0000 (04:25 +0100)
committerReto Buerki <reet@codelabs.ch>
Wed, 27 Jan 2016 16:11:20 +0000 (17:11 +0100)
These convenience functions can be used to assert that two pyxb elements
or two lists of pyxb elements are equal on XML level.

test/test_creator.py
test/testutil.py [new file with mode: 0644]

index 3c3c01d..a5c5bb9 100644 (file)
@@ -33,6 +33,8 @@ from src.schemadata import Element
 from src import parseutil
 from src import customExceptions
 
+from testutil import assert_xb, assert_xbl
+
 
 class TestCreator:
 
@@ -593,15 +595,9 @@ class TestPciDevicesCreator:
             dev_emptyresource)
 
         assert not dev0_irqs
-        for c, irq in enumerate(dev1_irqs):
-            assert irq.toxml("utf-8", element_name="irq") == dev1_testirqs[
-                c].toxml("utf-8", element_name="irq")
-        for c, irq in enumerate(dev2_irqs):
-            assert irq.toxml("utf-8", element_name="irq") == dev2_testirqs[
-                c].toxml("utf-8", element_name="irq")
-        for c, irq in enumerate(dev3_irqs):
-            assert irq.toxml("utf-8", element_name="irq") == dev3_testirqs[
-                c].toxml("utf-8", element_name="irq")
+        assert_xbl(dev1_irqs, dev1_testirqs, "irq")
+        assert_xbl(dev2_irqs, dev2_testirqs, "irq")
+        assert_xbl(dev3_irqs, dev3_testirqs, "irq")
         assert not dev_emptyresource_irqs
 
     def test_create_reserved_mem_ref(self):
@@ -658,8 +654,7 @@ class TestPciDevicesCreator:
         device.append(ioport.compileToPyxb())
         device.append(rmrr.compileToPyxb())
 
-        assert resultdev.toxml("utf-8", element_name="device") == device.toxml(
-            "utf-8", element_name="device")
+        assert_xb(resultdev, device, "device")
 
 
 class TestSerialDevicesCreator:
diff --git a/test/testutil.py b/test/testutil.py
new file mode 100644 (file)
index 0000000..691e48d
--- /dev/null
@@ -0,0 +1,31 @@
+#   Copyright (C) 2015 Chen Chin Jieh <chinjieh@gmail.com>
+#   Copyright (C) 2015 Reto Buerki <reet@codelabs.ch>
+#   Copyright (C) 2015 Adrian-Ken Rueegsegger <ken@codelabs.ch>
+#
+#   This file is part of mugenplcfg.
+#
+#   mugenplcfg is free software: you can redistribute it and/or modify
+#   it under the terms of the GNU General Public License as published by
+#   the Free Software Foundation, either version 3 of the License, or
+#   (at your option) any later version.
+#
+#   mugenplcfg is distributed in the hope that it will be useful,
+#   but WITHOUT ANY WARRANTY; without even the implied warranty of
+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#   GNU General Public License for more details.
+#
+#   You should have received a copy of the GNU General Public License
+#   along with mugenplcfg.  If not, see <http://www.gnu.org/licenses/>.
+
+
+def assert_xb(a, b, name):
+    "Compare two pyxb elements with given name"
+    assert a.toxml("utf-8", element_name=name) == b.toxml(
+        "utf-8", element_name=name)
+
+
+def assert_xbl(a, b, name):
+    "Compare two lists of pyxb elements with given name"
+    assert len(a) == len(b)
+    for c, e in enumerate(a):
+        assert_xb(e, b[c], name)