diff options
author | Ezio Melotti <ezio.melotti@gmail.com> | 2013-04-10 16:34:05 (GMT) |
---|---|---|
committer | Ezio Melotti <ezio.melotti@gmail.com> | 2013-04-10 16:34:05 (GMT) |
commit | 161194a5d0b0785cefe9dde017707409a31ef712 (patch) | |
tree | 3b1ab3d8831e6e7b78b9e6e7781a0436dd370f23 | |
parent | 3f5ffbee2323770399c9e80cf9c807dc21b3e009 (diff) | |
parent | cd514cf175ef820fe62f7e201f596f930d4b1d02 (diff) | |
download | cpython-161194a5d0b0785cefe9dde017707409a31ef712.zip cpython-161194a5d0b0785cefe9dde017707409a31ef712.tar.gz cpython-161194a5d0b0785cefe9dde017707409a31ef712.tar.bz2 |
#12820: merge with 3.3.
-rw-r--r-- | Lib/test/test_xml_dom_minicompat.py | 101 | ||||
-rw-r--r-- | Lib/test/xmltests.py | 1 | ||||
-rw-r--r-- | Misc/ACKS | 1 | ||||
-rw-r--r-- | 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 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() diff --git a/Lib/test/xmltests.py b/Lib/test/xmltests.py index 0bfcba1..bf685a4 100644 --- a/Lib/test/xmltests.py +++ b/Lib/test/xmltests.py @@ -15,6 +15,7 @@ def runtest(name): 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") @@ -240,6 +240,7 @@ Paul Colomiets Christophe Combelles Geremy Condra Denver Coneybeare +Phil Connell Juan José Conti Matt Conway David M. Cooke @@ -67,6 +67,12 @@ Library - Issue #17032: The "global" in the "NameError: global name 'x' is not defined" error message has been removed. Patch by Ram Rachum. +Tests +----- + +- Issue #12820: add tests for the xml.dom.minicompat module. + Patch by John Chandler and Phil Connell. + What's New in Python 3.3.1 release candidate 1? =============================================== |