def test_lazy_len(self):
     d = LazyDict({'1':1})
     self.assertEqual(len(d), 1)
     d['2'] = 2
     self.assertEqual(len(d), 2)
     d.set_stub('3', lambda x: x)
     self.assertEqual(len(d), 3)
    def test_lazy_items(self):
        d = LazyDict()
        d.set_stub(1, lambda x:x)
        self.assertEqual(set(d.items()), {(1, 1)})

        d = LazyDict({1:2})
        d.set_stub(2, lambda x:x)
        self.assertEqual(set(d.items()), {(1, 2), (2, 2)})
 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_clear(self):
        d = LazyDict({1:1, 2:2, 3:3})
        d.set_stub(4, lambda x:x)
        d.clear()
        self.assertEqual(d, {})
        self.assertEqual(set(d.keys()), set())
        self.assertEqual(set(d.values()), set())

        self.assertRaises(TypeError, d.clear, None)
 def test_lazy_popitem(self):
     d = LazyDict({1: 1})
     d.set_stub(2, lambda x:x)
     k, v = d.popitem()
     self.assertEqual(k, v)
     k, v = d.popitem()
     self.assertEqual(k, v)
     self.assertEqual(k, 2)
     self.assertEqual(len(d._stubs), 0)
     self.assertRaises(KeyError, d.popitem)
 def test_lazy_get(self):
     d = LazyDict({'a': 1, 'b': 2})
     d.set_stub('d', lambda x:x)        
     self.assertIs(d.get('c'), None)
     self.assertEqual(d.get('c', 3), 3)
     self.assertEqual(d.get('a'), 1)
     self.assertEqual(d.get('a', 3), 1)
     self.assertEqual(d.get('d'), 'd')
     self.assertEqual(d.get('d', 3), 'd')
     self.assertRaises(TypeError, d.get)
     self.assertRaises(TypeError, d.get, None, None, None)
    def test_lazy_values(self):
        def resolver(id):
            p = {'c': 3}
            return p[id]
        d = LazyDict()
        self.assertEqual(set(d.values()), set())
        d = LazyDict({1:2})
        d.set_stub('c', resolver)
        v = d.values()
        self.assertEqual(set(v), {2,3})

        self.assertRaises(TypeError, d.values, None)
 def test_lazy_keys(self):
     def resolver(id):
         p = {'b': 2, 'c': 3}
         return p[id]
     d = LazyDict({'a': 1})
     d.set_stub('b', resolver)
     d.set_stub('c', resolver)
     d['d'] = 4
     k = d.keys()
     self.assertTrue('a' in d)
     self.assertTrue('b' in d)
     self.assertTrue('c' in d)
     self.assertTrue('d' in d)
     self.assertEqual(set(k), {'a','b','c','d'})
    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)
Example #10
0
 def test_lazy_delitem(self):
     d = LazyDict()
     d['1'] = 1
     d['2'] = 2
     del d['1']
     self.assertEqual(len(d), 1)
     self.assertRaises(KeyError, d.__getitem__, '1')
     d.set_stub('1', lambda x:x)
     self.assertEqual(len(d), 2)
     del d['1']
     self.assertEqual(len(d), 1)
     self.assertRaises(KeyError, d.__getitem__, '1')
     d.set_stub('1', lambda x:x)
     self.assertEqual(d['1'], '1')
     del d['1']
     self.assertEqual(len(d), 1)
     self.assertRaises(KeyError, d.__getitem__, '1')
Example #11
0
 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)
Example #12
0
    def test_lazy_update(self):
        d = LazyDict()
        d.set_stub(4, lambda x:x)
        d.update(LazyDict({1:100}))
        d.update(LazyDict({2:20}))
        d.update({4:5})
        d.update(LazyDict({1:1, 2:2, 3:3}))
        self.assertEqual(d, {1:1, 2:2, 3:3, 4:5})

        d.update()
        self.assertEqual(d, {1:1, 2:2, 3:3, 4:5})

        self.assertRaises((TypeError, AttributeError), d.update, None)

        class SimpleUserDict:
            def __init__(self):
                self.d = {1:1, 2:2, 3:3}
            def keys(self):
                return self.d.keys()
            def __getitem__(self, i):
                return self.d[i]
        d.clear()
        d.update(SimpleUserDict())
        self.assertEqual(d, {1:1, 2:2, 3:3})