summaryrefslogtreecommitdiff
path: root/Lib/test/test_weakref.py
diff options
context:
space:
mode:
authorFred Drake <fdrake@acm.org>2001-04-16 17:37:27 +0000
committerFred Drake <fdrake@acm.org>2001-04-16 17:37:27 +0000
commitd2ce601f2434b4d93646902245c0b2739cf06e34 (patch)
tree0824bfdc4daa4a8d1119710a5c1921301070af05 /Lib/test/test_weakref.py
parent90fef06c8b744a08ff2d32ec140b8845ec892523 (diff)
downloadcpython-d2ce601f2434b4d93646902245c0b2739cf06e34.tar.gz
Add a test case for Weak*Dictionary.update() that would have caught a
recently reported bug; also exposed some other bugs in the implementation.
Diffstat (limited to 'Lib/test/test_weakref.py')
-rw-r--r--Lib/test/test_weakref.py25
1 files changed, 25 insertions, 0 deletions
diff --git a/Lib/test/test_weakref.py b/Lib/test/test_weakref.py
index 3fa240099c..470c5cac38 100644
--- a/Lib/test/test_weakref.py
+++ b/Lib/test/test_weakref.py
@@ -280,6 +280,31 @@ class MappingTestCase(TestBase):
self.assert_(len(dict) == 0,
"deleting the keys did not clear the dictionary")
+ def check_update(self, klass, dict):
+ weakdict = klass()
+ weakdict.update(dict)
+ self.assert_(len(weakdict) == len(dict))
+ for k in weakdict.keys():
+ self.assert_(dict.has_key(k),
+ "mysterious new key appeared in weak dict")
+ v = dict.get(k)
+ self.assert_(v is weakdict[k])
+ self.assert_(v is weakdict.get(k))
+ for k in dict.keys():
+ self.assert_(weakdict.has_key(k),
+ "original key disappeared in weak dict")
+ v = dict[k]
+ self.assert_(v is weakdict[k])
+ self.assert_(v is weakdict.get(k))
+
+ def test_weak_valued_dict_update(self):
+ self.check_update(weakref.WeakValueDictionary,
+ {1: C(), 'a': C(), C(): C()})
+
+ def test_weak_keyed_dict_update(self):
+ self.check_update(weakref.WeakKeyDictionary,
+ {C(): 1, C(): 2, C(): 3})
+
run_unittest(ReferencesTestCase)
run_unittest(MappingTestCase)