From: Fred Drake Date: Mon, 16 Apr 2001 17:37:27 +0000 (+0000) Subject: Add a test case for Weak*Dictionary.update() that would have caught a X-Git-Tag: v2.1~7 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a0a4ab177297a5d554e9312e6a154103817e8e63;p=python Add a test case for Weak*Dictionary.update() that would have caught a recently reported bug; also exposed some other bugs in the implementation. --- 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)