Ejemplo n.º 1
0
class DescDict_Iteration_and_Clear_Test(TestCase):
    def setUp(self):
        self.key1 = Key(1)
        self.key2 = Key(2)
        self.key3 = Key(3)
        self.value1 = 1
        self.value2 = 2
        self.value3 = 3
        self.dict = DescDict({
            self.key1: self.value1,
            self.key2: self.value2,
            self.key3: self.value3
        })

    def test_iter(self):
        keys = []
        for key in self.dict:
            keys.append(key)

        self.assertTrue(self.key1 in keys)
        self.assertTrue(self.key2 in keys)
        self.assertTrue(self.key3 in keys)
        self.assertEqual(len(self.dict), 3)

    def test_keys(self):
        keys = []
        for key in self.dict.keys():
            keys.append(key)

        self.assertTrue(self.key1 in keys)
        self.assertTrue(self.key2 in keys)
        self.assertTrue(self.key3 in keys)
        self.assertEqual(len(self.dict), 3)

    def test_values(self):
        values = []
        for value in self.dict.values():
            values.append(value)

        self.assertTrue(self.value1 in values)
        self.assertTrue(self.value2 in values)
        self.assertTrue(self.value3 in values)
        self.assertEqual(len(self.dict), 3)

    def test_items(self):
        items = []
        for item in self.dict.items():
            items.append(item)

        self.assertTrue((self.key1, self.value1) in items)
        self.assertTrue((self.key2, self.value2) in items)
        self.assertTrue((self.key3, self.value3) in items)
        self.assertEqual(len(items), 3)

    def test_clear(self):
        self.dict.clear()

        self.assertEqual(len(self.dict), 0)
        for _ in self.dict:
            self.fail()
Ejemplo n.º 2
0
    def test_update_all_new_dict(self):
        dict = DescDict()
        updater = {Key(1): 1, Key(2): 2}

        dict.update(updater)

        self.assertEqual(dict, updater)
Ejemplo n.º 3
0
    def test_update_all_new_dict(self):
        dict = DescDict()
        updater = {Key(1): 1, Key(2): 2}

        dict.update(updater)

        self.assertEqual(dict, updater)
Ejemplo n.º 4
0
class DescDict_Iteration_and_Clear_Test(TestCase):
    def setUp(self):
        self.key1 = Key(1)
        self.key2 = Key(2)
        self.key3 = Key(3)
        self.value1 = 1
        self.value2 = 2
        self.value3 = 3
        self.dict = DescDict({self.key1: self.value1, self.key2: self.value2, self.key3: self.value3})

    def test_iter(self):
        keys = []
        for key in self.dict:
            keys.append(key)

        self.assertTrue(self.key1 in keys)
        self.assertTrue(self.key2 in keys)
        self.assertTrue(self.key3 in keys)
        self.assertEqual(len(self.dict), 3)

    def test_keys(self):
        keys = []
        for key in self.dict.keys():
            keys.append(key)

        self.assertTrue(self.key1 in keys)
        self.assertTrue(self.key2 in keys)
        self.assertTrue(self.key3 in keys)
        self.assertEqual(len(self.dict), 3)

    def test_values(self):
        values = []
        for value in self.dict.values():
            values.append(value)

        self.assertTrue(self.value1 in values)
        self.assertTrue(self.value2 in values)
        self.assertTrue(self.value3 in values)
        self.assertEqual(len(self.dict), 3)

    def test_items(self):
        items = []
        for item in self.dict.items():
            items.append(item)

        self.assertTrue((self.key1, self.value1) in items)
        self.assertTrue((self.key2, self.value2) in items)
        self.assertTrue((self.key3, self.value3) in items)
        self.assertEqual(len(items), 3)

    def test_clear(self):
        self.dict.clear()

        self.assertEqual(len(self.dict), 0)
        for _ in self.dict:
            self.fail()
Ejemplo n.º 5
0
    def test_update_all_new_iterable(self):
        key1 = Key(1)
        key2 = Key(2)
        dict = DescDict()
        updater = ((key1, 1), (key2, 2))

        dict.update(updater)

        final = DescDict({key1: 1, key2: 2})
        self.assertEqual(dict, final)
Ejemplo n.º 6
0
    def test_update_overlap_dict(self):
        key1 = Key(1)
        key3 = Key(3)
        dict = DescDict({key1: 1, key3: 3})
        updater = {key1: 2, Key(2): 2}

        dict.update(updater)

        updater[key3] = 3  # make `updater` match what `dict` should be
        self.assertEqual(dict, updater)
Ejemplo n.º 7
0
    def test_update_all_new_iterable(self):
        key1 = Key(1)
        key2 = Key(2)
        dict = DescDict()
        updater = ((key1, 1), (key2, 2))

        dict.update(updater)

        final = DescDict({key1: 1, key2: 2})
        self.assertEqual(dict, final)
Ejemplo n.º 8
0
    def test_update_overlap_dict(self):
        key1 = Key(1)
        key3 = Key(3)
        dict = DescDict({key1: 1, key3: 3})
        updater = {key1: 2, Key(2): 2}

        dict.update(updater)

        updater[key3] = 3  # make `updater` match what `dict` should be
        self.assertEqual(dict, updater)
Ejemplo n.º 9
0
    def test_update_overlap_iterable(self):
        key1 = Key(1)
        key2 = Key(2)
        key3 = Key(3)
        dict = DescDict({key1: 1, key3: 3})
        updater = ((key1, 2), (key2, 2))

        dict.update(updater)

        final = DescDict({key1: 2, key2: 2, key3: 3})
        self.assertEqual(dict, final)
Ejemplo n.º 10
0
    def test_update_overlap_iterable(self):
        key1 = Key(1)
        key2 = Key(2)
        key3 = Key(3)
        dict = DescDict({key1: 1, key3: 3})
        updater = ((key1, 2), (key2, 2))

        dict.update(updater)

        final = DescDict({key1: 2, key2: 2, key3: 3})
        self.assertEqual(dict, final)
Ejemplo n.º 11
0
 def setUp(self):
     self.key1 = Key(1)
     self.key2 = Key(2)
     self.key3 = Key(3)
     self.value1 = 1
     self.value2 = 2
     self.value3 = 3
     self.dict = DescDict({
         self.key1: self.value1,
         self.key2: self.value2,
         self.key3: self.value3
     })
Ejemplo n.º 12
0
 def test_4(self):
     dict = DescDict({
         self.key1: 1,
         self.key2: 2,
         self.key3: 3,
         self.key4: 4
     })
     self.assertEqual(len(dict), 4)
Ejemplo n.º 13
0
 def __init__(self, *args, **kwargs):
     try:
         super().__init__(*args, **kwargs)
     except TypeError:
         # This is expected when the mixin is not used with multiple
         # inheritance, in which case, we just ignore it.
         pass
     self.storage = DescDict()
Ejemplo n.º 14
0
 def setUp(self):
     self.key1 = Key(1)
     self.key2 = Key(2)
     self.key3 = Key(3)
     self.value1 = 1
     self.value2 = 2
     self.value3 = 3
     self.dict = DescDict({self.key1: self.value1, self.key2: self.value2, self.key3: self.value3})
Ejemplo n.º 15
0
    def test_new_dict_created_from_old_dict(self):
        mc1 = Mock()
        mc2 = Mock()
        dict = DescDict({mc1: 1, mc2: 2})

        self.assertTrue(mc1 in dict)
        self.assertTrue(mc2 in dict)
        self.assertEqual(dict[mc1], 1)
        self.assertEqual(dict[mc2], 2)
Ejemplo n.º 16
0
    def test_finalize(self):
        dict = DescDict()
        key = Key(1)

        dict[key] = 1

        self.assertEqual(len(dict), 1)

        del key

        self.assertEqual(len(dict), 0)
Ejemplo n.º 17
0
def set_once(setter):
    """
    Decorates the `__set__()` method of a descriptor to turn it into a
    set-once descriptor, which only allows the attribute to be set one time.
    """
    set_instances = DescDict()
    @wraps(setter)
    def __set__(desc, instance, value):
        if instance in set_instances:
            raise AttributeError("Cannot set a read-only attribute")
        else:
            set_instances[instance] = True
            setter(desc, instance, value)
    return __set__
Ejemplo n.º 18
0
    def test_six_repr(self):
        dict = DescDict({
            self.key1: 1,
            self.key2: 1,
            self.key3: 1,
            self.key4: 1,
            self.key5: 1,
            self.key6: 1
        })

        self.assertEqual(
            repr(dict),
            "DescDict({StrMock(): 1, StrMock(): 1, StrMock(): 1, StrMock(): 1, StrMock(): 1, StrMock(): 1})"
        )
Ejemplo n.º 19
0
    def test_seven_str(self):
        dict = DescDict({
            self.key1: 1,
            self.key2: 1,
            self.key3: 1,
            self.key4: 1,
            self.key5: 1,
            self.key6: 1,
            self.key7: 1
        })

        self.assertEqual(
            str(dict),
            "DescDict{KEY: 1, KEY: 1, KEY: 1, KEY: 1, KEY: 1, KEY: 1, ...}")
Ejemplo n.º 20
0
    def test_six_str(self):
        dict = DescDict({
            self.key1: 1,
            self.key2: 1,
            self.key3: 1,
            self.key4: 1,
            self.key5: 1,
            self.key6: 1
        })

        # Because the order of the items coming back is unknown, I had to use
        # keys that would look the same for each instance (values too)
        self.assertEqual(
            str(dict),
            "DescDict{KEY: 1, KEY: 1, KEY: 1, KEY: 1, KEY: 1, KEY: 1}")
Ejemplo n.º 21
0
    def test_new_dict_is_empty(self):
        dict = DescDict()

        self.assertTrue(len(dict) == 0)
Ejemplo n.º 22
0
    def test_2(self):
        dict = DescDict({self.key1: 1, self.key2: 2})

        self.assertEqual(len(dict), 2)
Ejemplo n.º 23
0
    def test_empty_str(self):
        dict = DescDict()

        self.assertEqual(str(dict), "DescDict{}")
Ejemplo n.º 24
0
 def __init__(self):
     self.storage = DescDict()
Ejemplo n.º 25
0
    def test_empty_repr(self):
        dict = DescDict()

        self.assertEqual(repr(dict), "DescDict()")
Ejemplo n.º 26
0
    def test_single_str(self):
        dict = DescDict({self.key1: 1})

        self.assertEqual(str(dict), "DescDict{KEY: 1}")
Ejemplo n.º 27
0
 def setUp(self):
     self.key = Unhashable()
     self.value = 1
     self.dict = DescDict()
Ejemplo n.º 28
0
    def test_single_repr(self):
        dict = DescDict({self.key1: 1})

        self.assertEqual(repr(dict), "DescDict({StrMock(): 1})")
Ejemplo n.º 29
0
 def __init__(self, desc):
     super().__init__(desc)
     self.set_instances = DescDict()
Ejemplo n.º 30
0
 def __init__(self, deleg_prop_creator):
     self._deleg_prop_creator = deleg_prop_creator
     self._prop_storage = DescDict()
     self._names = {}
Ejemplo n.º 31
0
 def __init__(self, *args, **kwargs):
     super().__init__(*args, **kwargs)
     self.storage = DescDict()