def test_lazy_setdefault(self): d = LazyDict() self.assertIs(d.setdefault("key0"), None) d.set_stub("key0", lambda x: "value0") self.assertIs(d.setdefault("key0"), "value0") d.set_stub("key0", lambda x: "value0") self.assertEqual(d.setdefault("key1", "value1"), "value1") self.assertEqual(d["key1"], "value1") self.assertEqual(d.setdefault("key0", "value2"), "value0")
def test_lazy_setdefault(self): d = LazyDict() self.assertIs(d.setdefault('key0'), None) d.set_stub('key0', lambda x:'value0') self.assertIs(d.setdefault('key0'), 'value0') d.set_stub('key0', lambda x:'value0') self.assertEqual(d.setdefault('key1', 'value1'), 'value1') self.assertEqual(d['key1'], 'value1') self.assertEqual(d.setdefault('key0', 'value2'), 'value0')
def test_lazy_setdefault(self): d = LazyDict() self.assertIs(d.setdefault('key0'), None) d.set_stub('key0', lambda x: 'value0') self.assertIs(d.setdefault('key0'), 'value0') d.set_stub('key0', lambda x: 'value0') self.assertEqual(d.setdefault('key1', 'value1'), 'value1') self.assertEqual(d['key1'], 'value1') self.assertEqual(d.setdefault('key0', 'value2'), 'value0')
def test_setdefault(self): # dict.setdefault() d = LazyDict() self.assertIs(d.setdefault("key0"), None) d.setdefault("key0", []) self.assertIs(d.setdefault("key0"), None) d.setdefault("key", []).append(3) self.assertEqual(d["key"][0], 3) d.setdefault("key", []).append(4) self.assertEqual(len(d["key"]), 2) self.assertRaises(TypeError, d.setdefault) class Exc(Exception): pass class BadHash: fail = False def __hash__(self): if self.fail: raise Exc() else: return 42 x = BadHash() d[x] = 42 x.fail = True self.assertRaises(Exc, d.setdefault, x, [])
def test_setdefault(self): # dict.setdefault() d = LazyDict() self.assertIs(d.setdefault('key0'), None) d.setdefault('key0', []) self.assertIs(d.setdefault('key0'), None) d.setdefault('key', []).append(3) self.assertEqual(d['key'][0], 3) d.setdefault('key', []).append(4) self.assertEqual(len(d['key']), 2) self.assertRaises(TypeError, d.setdefault) class Exc(Exception): pass class BadHash(object): fail = False def __hash__(self): if self.fail: raise Exc() else: return 42 x = BadHash() d[x] = 42 x.fail = True self.assertRaises(Exc, d.setdefault, x, [])