Esempio n. 1
0
    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)
Esempio n. 2
0
    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)
Esempio n. 3
0
    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)
Esempio n. 4
0
    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)
Esempio n. 5
0
    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)