[Python-checkins] cpython (3.3): #12820: add tests for the xml.dom.minicompat module. Patch by John Chandler

ezio.melotti python-checkins at python.org
Wed Apr 10 18:35:44 CEST 2013


http://hg.python.org/cpython/rev/172f825d7fc9
changeset:   83235:172f825d7fc9
branch:      3.3
parent:      83232:5d39d459b90d
user:        Ezio Melotti <ezio.melotti at gmail.com>
date:        Wed Apr 10 19:30:11 2013 +0300
summary:
  #12820: add tests for the xml.dom.minicompat module.  Patch by John Chandler and Phil Connell.

files:
  Lib/test/test_xml_dom_minicompat.py |  101 ++++++++++++++++
  Lib/test/xmltests.py                |    1 +
  Misc/ACKS                           |    1 +
  Misc/NEWS                           |    6 +
  4 files changed, 109 insertions(+), 0 deletions(-)


diff --git a/Lib/test/test_xml_dom_minicompat.py b/Lib/test/test_xml_dom_minicompat.py
new file mode 100644
--- /dev/null
+++ b/Lib/test/test_xml_dom_minicompat.py
@@ -0,0 +1,101 @@
+# Tests for xml.dom.minicompat
+
+import pickle
+import unittest
+
+import xml.dom
+from xml.dom.minicompat import *
+
+
+class EmptyNodeListTestCase(unittest.TestCase):
+    """Tests for the EmptyNodeList class."""
+
+    def test_emptynodelist_item(self):
+        # Test item access on an EmptyNodeList.
+        node_list = EmptyNodeList()
+
+        self.assertIsNone(node_list.item(0))
+        self.assertIsNone(node_list.item(-1)) # invalid item
+
+        with self.assertRaises(IndexError):
+            node_list[0]
+        with self.assertRaises(IndexError):
+            node_list[-1]
+
+    def test_emptynodelist_length(self):
+        node_list = EmptyNodeList()
+        # Reading
+        self.assertEqual(node_list.length, 0)
+        # Writing
+        with self.assertRaises(xml.dom.NoModificationAllowedErr):
+            node_list.length = 111
+
+    def test_emptynodelist___add__(self):
+        node_list = EmptyNodeList() + NodeList()
+        self.assertEqual(node_list, NodeList())
+
+    def test_emptynodelist___radd__(self):
+        node_list = [1,2] + EmptyNodeList()
+        self.assertEqual(node_list, [1,2])
+
+
+class NodeListTestCase(unittest.TestCase):
+    """Tests for the NodeList class."""
+
+    def test_nodelist_item(self):
+        # Test items access on a NodeList.
+        # First, use an empty NodeList.
+        node_list = NodeList()
+
+        self.assertIsNone(node_list.item(0))
+        self.assertIsNone(node_list.item(-1))
+
+        with self.assertRaises(IndexError):
+            node_list[0]
+        with self.assertRaises(IndexError):
+            node_list[-1]
+
+        # Now, use a NodeList with items.
+        node_list.append(111)
+        node_list.append(999)
+
+        self.assertEqual(node_list.item(0), 111)
+        self.assertIsNone(node_list.item(-1)) # invalid item
+
+        self.assertEqual(node_list[0], 111)
+        self.assertEqual(node_list[-1], 999)
+
+    def test_nodelist_length(self):
+        node_list = NodeList([1, 2])
+        # Reading
+        self.assertEqual(node_list.length, 2)
+        # Writing
+        with self.assertRaises(xml.dom.NoModificationAllowedErr):
+            node_list.length = 111
+
+    def test_nodelist___add__(self):
+        node_list = NodeList([3, 4]) + [1, 2]
+        self.assertEqual(node_list, NodeList([3, 4, 1, 2]))
+
+    def test_nodelist___radd__(self):
+        node_list = [1, 2] + NodeList([3, 4])
+        self.assertEqual(node_list, NodeList([1, 2, 3, 4]))
+
+    def test_nodelist_pickle_roundtrip(self):
+        # Test pickling and unpickling of a NodeList.
+
+        # Empty NodeList.
+        node_list = NodeList()
+        pickled = pickle.dumps(node_list)
+        unpickled = pickle.loads(pickled)
+        self.assertEqual(unpickled, node_list)
+
+        # Non-empty NodeList.
+        node_list.append(1)
+        node_list.append(2)
+        pickled = pickle.dumps(node_list)
+        unpickled = pickle.loads(pickled)
+        self.assertEqual(unpickled, node_list)
+
+if __name__ == '__main__':
+    unittest.main()
diff --git a/Lib/test/xmltests.py b/Lib/test/xmltests.py
--- a/Lib/test/xmltests.py
+++ b/Lib/test/xmltests.py
@@ -15,6 +15,7 @@
 runtest("test.test_minidom")
 runtest("test.test_pyexpat")
 runtest("test.test_sax")
+runtest("test.test_xml_dom_minicompat")
 runtest("test.test_xml_etree")
 runtest("test.test_xml_etree_c")
 runtest("test.test_xmlrpc")
diff --git a/Misc/ACKS b/Misc/ACKS
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -236,6 +236,7 @@
 Christophe Combelles
 Geremy Condra
 Denver Coneybeare
+Phil Connell
 Juan José Conti
 Matt Conway
 David M. Cooke
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -63,6 +63,12 @@
 
 - Issue #6649: Fixed missing exit status in IDLE. Patch by Guilherme Polo.
 
+Tests
+-----
+
+- Issue #12820: add tests for the xml.dom.minicompat module.
+  Patch by John Chandler and Phil Connell.
+
 Documentation
 -------------
 

-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list