def test_lazy_pop(self): d = LazyDict() k, v = ("abc", "def") d.set_stub(k, lambda x: "def") self.assertRaises(KeyError, d.pop, "ghi") self.assertEqual(d.pop(k), v) self.assertEqual(len(d), 0) self.assertRaises(KeyError, d.pop, k) self.assertEqual(d.pop(k, v), v) d.set_stub(k, lambda x: v) self.assertEqual(d.pop(k, 1), v) self.assertRaises(TypeError, d.pop)
def test_lazy_pop(self): d = LazyDict() k, v = ('abc', 'def') d.set_stub(k, lambda x:'def') self.assertRaises(KeyError, d.pop, 'ghi') self.assertEqual(d.pop(k), v) self.assertEqual(len(d), 0) self.assertRaises(KeyError, d.pop, k) self.assertEqual(d.pop(k, v), v) d.set_stub(k, lambda x:v) self.assertEqual(d.pop(k, 1), v) self.assertRaises(TypeError, d.pop)
def test_lazy_pop(self): d = LazyDict() k, v = ('abc', 'def') d.set_stub(k, lambda x: 'def') self.assertRaises(KeyError, d.pop, 'ghi') self.assertEqual(d.pop(k), v) self.assertEqual(len(d), 0) self.assertRaises(KeyError, d.pop, k) self.assertEqual(d.pop(k, v), v) d.set_stub(k, lambda x: v) self.assertEqual(d.pop(k, 1), v) self.assertRaises(TypeError, d.pop)
def test_pop(self): # Tests for pop with specified key d = LazyDict() k, v = "abc", "def" d[k] = v self.assertRaises(KeyError, d.pop, "ghi") self.assertEqual(d.pop(k), v) self.assertEqual(len(d), 0) self.assertRaises(KeyError, d.pop, k) # verify longs/ints get same value when key > 32 bits # (for 64-bit archs). See SF bug #689659. x = 4503599627370496 y = 4503599627370496 h = LazyDict({x: "anything", y: "something else"}) self.assertEqual(h[x], h[y]) self.assertEqual(d.pop(k, v), v) d[k] = v self.assertEqual(d.pop(k, 1), v) self.assertRaises(TypeError, d.pop) 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.pop, x)
def test_pop(self): # Tests for pop with specified key d = LazyDict() k, v = 'abc', 'def' d[k] = v self.assertRaises(KeyError, d.pop, 'ghi') self.assertEqual(d.pop(k), v) self.assertEqual(len(d), 0) self.assertRaises(KeyError, d.pop, k) # verify longs/ints get same value when key > 32 bits # (for 64-bit archs). See SF bug #689659. x = 4503599627370496 y = 4503599627370496 h = LazyDict({x: 'anything', y: 'something else'}) self.assertEqual(h[x], h[y]) self.assertEqual(d.pop(k, v), v) d[k] = v self.assertEqual(d.pop(k, 1), v) self.assertRaises(TypeError, d.pop) 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.pop, x)