Beispiel #1
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})
Beispiel #2
0
 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)
Beispiel #3
0
 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)
Beispiel #4
0
 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)
Beispiel #5
0
    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)})
Beispiel #6
0
    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)})
Beispiel #7
0
 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")
Beispiel #8
0
 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')
Beispiel #9
0
 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')
Beispiel #10
0
    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)
Beispiel #11
0
    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)
Beispiel #12
0
 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)
Beispiel #13
0
 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)
Beispiel #14
0
 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)
Beispiel #15
0
 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)
Beispiel #16
0
 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)
Beispiel #17
0
    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)
Beispiel #18
0
    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)
Beispiel #19
0
 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'})
Beispiel #20
0
    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"})
Beispiel #21
0
    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'})
Beispiel #22
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)
Beispiel #23
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)
Beispiel #24
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)
Beispiel #25
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")
Beispiel #26
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')
Beispiel #27
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')
Beispiel #28
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)
Beispiel #29
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)
Beispiel #30
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)
Beispiel #31
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})