(self)
| 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. |
nothing calls this directly
no test coverage detected