From 585a30c5294754555ec678f55ae7df6ff4da7930 Mon Sep 17 00:00:00 2001 From: Fred Drake Date: Wed, 13 Mar 2002 05:49:06 +0000 Subject: [PATCH] Add a test that was added in Python 2.2: test Weak*Dictionary.setdefault(). The purpose is to avoid regression on SF bug #529273. This test is stronger than the one submitted with the bug report. --- Lib/test/test_weakref.py | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/Lib/test/test_weakref.py b/Lib/test/test_weakref.py index 470c5cac38e6..7b47165c5ace 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_setdefault(self, klass, key, value1, value2): + self.assert_(value1 is not value2, + "invalid test" + " -- value parameters must be distinct objects") + weakdict = klass() + o = weakdict.setdefault(key, value1) + self.assert_(o is value1) + self.assert_(weakdict.has_key(key)) + self.assert_(weakdict.get(key) is value1) + self.assert_(weakdict[key] is value1) + + o = weakdict.setdefault(key, value2) + self.assert_(o is value1) + self.assert_(weakdict.has_key(key)) + self.assert_(weakdict.get(key) is value1) + self.assert_(weakdict[key] is value1) + + def test_weak_valued_dict_setdefault(self): + self.check_setdefault(weakref.WeakValueDictionary, + "key", C(), C()) + + def test_weak_keyed_dict_setdefault(self): + self.check_setdefault(weakref.WeakKeyDictionary, + C(), "value 1", "value 2") + def check_update(self, klass, dict): weakdict = klass() weakdict.update(dict) -- 2.47.3