From: Fred Drake Date: Wed, 13 Mar 2002 05:49:06 +0000 (+0000) Subject: Add a test that was added in Python 2.2: test Weak*Dictionary.setdefault(). X-Git-Tag: v2.1.3~35 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=585a30c5294754555ec678f55ae7df6ff4da7930;p=thirdparty%2FPython%2Fcpython.git 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. --- 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)