diff options
author | Fred Drake <fdrake@acm.org> | 2001-04-16 17:37:27 +0000 |
---|---|---|
committer | Fred Drake <fdrake@acm.org> | 2001-04-16 17:37:27 +0000 |
commit | d2ce601f2434b4d93646902245c0b2739cf06e34 (patch) | |
tree | 0824bfdc4daa4a8d1119710a5c1921301070af05 /Lib/test/test_weakref.py | |
parent | 90fef06c8b744a08ff2d32ec140b8845ec892523 (diff) | |
download | cpython-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.py | 25 |
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) |