コード例 #1
0
    def test_added_descriptor_table_caching(self) -> None:
        cache_elem = DataMemoryElement(readonly=False)
        descrs = [random_descriptor() for _ in range(3)]
        expected_table = dict((r.uuid(), r) for r in descrs)

        i = MemoryDescriptorSet(cache_elem)
        assert i.cache_element is not None
        self.assertTrue(cache_elem.is_empty())

        # Should add descriptors to table, caching to writable element.
        i.add_many_descriptors(descrs)
        self.assertFalse(cache_elem.is_empty())
        self.assertEqual(pickle.loads(i.cache_element.get_bytes()),
                         expected_table)

        # Changing the internal table (remove, add) it should reflect in
        # cache
        new_d = random_descriptor()
        expected_table[new_d.uuid()] = new_d
        i.add_descriptor(new_d)
        self.assertEqual(pickle.loads(i.cache_element.get_bytes()),
                         expected_table)

        rm_d = list(expected_table.values())[0]
        del expected_table[rm_d.uuid()]
        i.remove_descriptor(rm_d.uuid())
        self.assertEqual(pickle.loads(i.cache_element.get_bytes()),
                         expected_table)
コード例 #2
0
    def test_remove(self) -> None:
        i = MemoryDescriptorSet()
        descrs = [random_descriptor() for _ in range(100)]
        i.add_many_descriptors(descrs)
        self.assertEqual(len(i), 100)
        self.assertEqual(list(i.iterdescriptors()), descrs)

        # remove singles
        i.remove_descriptor(descrs[0].uuid())
        self.assertEqual(len(i), 99)
        self.assertEqual(set(i.iterdescriptors()), set(descrs[1:]))

        # remove many
        rm_d = descrs[slice(45, 80, 3)]
        i.remove_many_descriptors((d.uuid() for d in rm_d))
        self.assertEqual(len(i), 99 - len(rm_d))
        self.assertEqual(set(i.iterdescriptors()),
                         set(descrs[1:]).difference(rm_d))