summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_xml_dom_minicompat.py
diff options
context:
space:
mode:
authorEzio Melotti <ezio.melotti@gmail.com>2013-04-10 16:30:11 (GMT)
committerEzio Melotti <ezio.melotti@gmail.com>2013-04-10 16:30:11 (GMT)
commitcd514cf175ef820fe62f7e201f596f930d4b1d02 (patch)
treeffc80f4b081de75675bf75adbfbe4fde256ee563 /Lib/test/test_xml_dom_minicompat.py
parentc09959ae0f76ee758980c999ff777ae72375b1b2 (diff)
downloadcpython-cd514cf175ef820fe62f7e201f596f930d4b1d02.zip
cpython-cd514cf175ef820fe62f7e201f596f930d4b1d02.tar.gz
cpython-cd514cf175ef820fe62f7e201f596f930d4b1d02.tar.bz2
#12820: add tests for the xml.dom.minicompat module. Patch by John Chandler and Phil Connell.
Diffstat (limited to 'Lib/test/test_xml_dom_minicompat.py')
-rw-r--r--Lib/test/test_xml_dom_minicompat.py101
1 files changed, 101 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
index 0000000..085e52a
--- /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()