summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_xml_dom_minicompat.py
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2015-11-26 21:50:54 (GMT)
committerSerhiy Storchaka <storchaka@gmail.com>2015-11-26 21:50:54 (GMT)
commit15f070f8451db36d56bc3b99f14a6899b73cd305 (patch)
treedad5c3c21c1ec2eefeb49c99dda9774eae126b45 /Lib/test/test_xml_dom_minicompat.py
parent9e87f3d79fbf8d759d1b485296619d4f35cf1701 (diff)
parentc472246d81f2e9e7842c0d6e663ea01429e2efa9 (diff)
downloadcpython-15f070f8451db36d56bc3b99f14a6899b73cd305.zip
cpython-15f070f8451db36d56bc3b99f14a6899b73cd305.tar.gz
cpython-15f070f8451db36d56bc3b99f14a6899b73cd305.tar.bz2
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 47c4de6..3b03dfc 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()