Fix OrderedDict.setdefault() to work for subclasses that define __missing__().

This commit is contained in:
Raymond Hettinger 2010-12-31 23:16:17 +00:00
parent ed13853e5d
commit a673b1fd0e
3 changed files with 16 additions and 1 deletions

View file

@ -976,6 +976,12 @@ class TestOrderedDict(unittest.TestCase):
# make sure 'x' is added to the end
self.assertEqual(list(od.items())[-1], ('x', 10))
# make sure setdefault still works when __missing__ is defined
class Missing(OrderedDict):
def __missing__(self, key):
return 0
self.assertEqual(Missing().setdefault(5, 9), 9)
def test_reinsert(self):
# Given insert a, insert b, delete a, re-insert a,
# verify that a is now later than b.