diff options
Diffstat (limited to 'Lib/test/test_xml_dom_minicompat.py')
-rw-r--r-- | Lib/test/test_xml_dom_minicompat.py | 101 |
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() |