summaryrefslogtreecommitdiff
path: root/Lib/test/test_xml_dom_minicompat.py
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2015-11-26 23:49:42 +0200
committerSerhiy Storchaka <storchaka@gmail.com>2015-11-26 23:49:42 +0200
commitc472246d81f2e9e7842c0d6e663ea01429e2efa9 (patch)
treed3443179fa9db07cfff1c5de997e450493e008cd /Lib/test/test_xml_dom_minicompat.py
parent747d48cf27e1843f7d1046b4e8127833a40cf9b3 (diff)
downloadcpython-git-c472246d81f2e9e7842c0d6e663ea01429e2efa9.tar.gz
Issue #10131: Fixed deep copying of minidom documents. Based on patch
by Marian Ganisin.
Diffstat (limited to 'Lib/test/test_xml_dom_minicompat.py')
-rw-r--r--Lib/test/test_xml_dom_minicompat.py36
1 files changed, 36 insertions, 0 deletions
diff --git a/Lib/test/test_xml_dom_minicompat.py b/Lib/test/test_xml_dom_minicompat.py
index 47c4de62e0..3b03dfc539 100644
--- a/Lib/test/test_xml_dom_minicompat.py
+++ b/Lib/test/test_xml_dom_minicompat.py
@@ -1,5 +1,6 @@
# Tests for xml.dom.minicompat
+import copy
import pickle
import unittest
@@ -89,6 +90,7 @@ class NodeListTestCase(unittest.TestCase):
node_list = NodeList()
pickled = pickle.dumps(node_list, proto)
unpickled = pickle.loads(pickled)
+ self.assertIsNot(unpickled, node_list)
self.assertEqual(unpickled, node_list)
# Non-empty NodeList.
@@ -96,7 +98,41 @@ class NodeListTestCase(unittest.TestCase):
node_list.append(2)
pickled = pickle.dumps(node_list, proto)
unpickled = pickle.loads(pickled)
+ self.assertIsNot(unpickled, node_list)
self.assertEqual(unpickled, node_list)
+ def test_nodelist_copy(self):
+ # Empty NodeList.
+ node_list = NodeList()
+ copied = copy.copy(node_list)
+ self.assertIsNot(copied, node_list)
+ self.assertEqual(copied, node_list)
+
+ # Non-empty NodeList.
+ node_list.append([1])
+ node_list.append([2])
+ copied = copy.copy(node_list)
+ self.assertIsNot(copied, node_list)
+ self.assertEqual(copied, node_list)
+ for x, y in zip(copied, node_list):
+ self.assertIs(x, y)
+
+ def test_nodelist_deepcopy(self):
+ # Empty NodeList.
+ node_list = NodeList()
+ copied = copy.deepcopy(node_list)
+ self.assertIsNot(copied, node_list)
+ self.assertEqual(copied, node_list)
+
+ # Non-empty NodeList.
+ node_list.append([1])
+ node_list.append([2])
+ copied = copy.deepcopy(node_list)
+ self.assertIsNot(copied, node_list)
+ self.assertEqual(copied, node_list)
+ for x, y in zip(copied, node_list):
+ self.assertIsNot(x, y)
+ self.assertEqual(x, y)
+
if __name__ == '__main__':
unittest.main()