def test_popitem(self): # dict.popitem() for copymode in -1, +1: # -1: b has same structure as a # +1: b is a.copy() for log2size in range(12): size = 2**log2size a = LazyDict() b = LazyDict() for i in range(size): a[repr(i)] = i if copymode < 0: b[repr(i)] = i if copymode > 0: b = a.copy() for i in range(size): ka, va = ta = a.popitem() self.assertEqual(va, int(ka)) kb, vb = tb = b.popitem() self.assertEqual(vb, int(kb)) self.assertFalse(copymode < 0 and ta != tb) self.assertFalse(a) self.assertFalse(b) d = LazyDict() self.assertRaises(KeyError, d.popitem)
def test_lazy_copy(self): d = LazyDict({'1':1}) d['2'] = 2 x = d.copy() self.assertEqual(len(x), 2) i = {'num': 0} def r(key, i): i['num'] += 1 return i['num'] d.set_stub('3', r, i) x = d.copy() self.assertEqual(d['3'], 1) self.assertEqual(len(d._stubs), 0) self.assertEqual(len(x._stubs), 1) self.assertEqual(x['3'], 2) self.assertEqual(len(x._stubs), 0) x = d.copy() self.assertEqual(d['3'], 1) self.assertEqual(x['3'], 1)
def test_copy(self): d = LazyDict({1:1, 2:2, 3:3}) self.assertEqual(d.copy(), LazyDict({1:1, 2:2, 3:3})) self.assertEqual(LazyDict().copy(), LazyDict()) self.assertRaises(TypeError, d.copy, None)