Example #1
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)
Example #2
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)
Example #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)
Example #4
0
 def test_4(self):
     dict = DescDict({
         self.key1: 1,
         self.key2: 2,
         self.key3: 3,
         self.key4: 4
     })
     self.assertEqual(len(dict), 4)
Example #5
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()
Example #6
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)
Example #7
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)
Example #8
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)
Example #9
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
     })
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__
Example #11
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})"
        )
Example #12
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, ...}")
Example #13
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}")
Example #14
0
 def __init__(self, deleg_prop_creator):
     self._deleg_prop_creator = deleg_prop_creator
     self._prop_storage = DescDict()
     self._names = {}
 def __init__(self):
     self.storage = DescDict()
Example #16
0
 def __init__(self, *args, **kwargs):
     super().__init__(*args, **kwargs)
     self.storage = DescDict()
Example #17
0
    def test_new_dict_is_empty(self):
        dict = DescDict()

        self.assertTrue(len(dict) == 0)
Example #18
0
 def setUp(self):
     self.key = Unhashable()
     self.value = 1
     self.dict = DescDict()
Example #19
0
    def test_2(self):
        dict = DescDict({self.key1: 1, self.key2: 2})

        self.assertEqual(len(dict), 2)
Example #20
0
    def test_empty_str(self):
        dict = DescDict()

        self.assertEqual(str(dict), "DescDict{}")
Example #21
0
    def test_empty_repr(self):
        dict = DescDict()

        self.assertEqual(repr(dict), "DescDict()")
Example #22
0
    def test_single_str(self):
        dict = DescDict({self.key1: 1})

        self.assertEqual(str(dict), "DescDict{KEY: 1}")
Example #23
0
    def test_single_repr(self):
        dict = DescDict({self.key1: 1})

        self.assertEqual(repr(dict), "DescDict({StrMock(): 1})")
 def __init__(self, desc):
     super().__init__(desc)
     self.set_instances = DescDict()