MCPcopy Index your code
hub / github.com/python/cpython / test_setdefault

Method test_setdefault

Lib/test/test_dict.py:474–499  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

472 self.assertRaises(TypeError, d.get, None, None, None)
473
474 def test_setdefault(self):
475 # dict.setdefault()
476 d = {}
477 self.assertIs(d.setdefault('key0'), None)
478 d.setdefault('key0', [])
479 self.assertIs(d.setdefault('key0'), None)
480 d.setdefault('key', []).append(3)
481 self.assertEqual(d['key'][0], 3)
482 d.setdefault('key', []).append(4)
483 self.assertEqual(len(d['key']), 2)
484 self.assertRaises(TypeError, d.setdefault)
485
486 class Exc(Exception): pass
487
488 class BadHash(object):
489 fail = False
490 def __hash__(self):
491 if self.fail:
492 raise Exc()
493 else:
494 return 42
495
496 x = BadHash()
497 d[x] = 42
498 x.fail = True
499 self.assertRaises(Exc, d.setdefault, x, [])
500
501 def test_setdefault_atomic(self):
502 # Issue #13521: setdefault() calls __hash__ and __eq__ only once.

Callers

nothing calls this directly

Calls 6

BadHashClass · 0.70
assertIsMethod · 0.45
setdefaultMethod · 0.45
appendMethod · 0.45
assertEqualMethod · 0.45
assertRaisesMethod · 0.45

Tested by

no test coverage detected