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)
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))