def test_same_key(self): d = Container(5) for i in xrange(10): d['foo'] = i self.assertEqual(list(d.keys()), ['foo']) self.assertEqual(len(d), 1)
def test_same_key(self) -> None: d: Container[str, int] = Container(5) for i in range(10): d["foo"] = i assert list(d._container.keys()) == ["foo"] assert len(d) == 1
def test_same_key(self): d = Container(5) for i in range(10): d["foo"] = i assert list(d._container.keys()) == ["foo"] assert len(d) == 1
def test_same_key(self): d = Container(5) for i in xrange(10): d['foo'] = i assert list(d.keys()) == ['foo'] assert len(d) == 1
def test_same_key(self): d = Container(5) for i in xrange(10): d['foo'] = i self.assertEqual(d.keys(), ['foo']) d._prune_invalidated_entries() self.assertEqual(len(d.access_log), 1)
def test_pruning(self): d = Container(5) for i in xrange(5): d[i] = str(i) # Contend 2 entries for the most-used slot to balloon the heap for i in xrange(100): d.get(i % 2) self.assertTrue(len(d.access_log) <= d.CLEANUP_FACTOR * d._maxsize)
def test_delete(self): d = Container(5) for i in xrange(5): d[i] = True del d[0] self.assertFalse(0 in d) d.pop(1) self.assertFalse(1 in d) d.pop(1, None)
def test_delete(self) -> None: d: Container[int, bool] = Container(5) for i in range(5): d[i] = True del d[0] assert 0 not in d d.pop(1) assert 1 not in d d.pop(1, None)
def test_delete(self): d = Container(5) for i in xrange(5): d[i] = True del d[0] assert 0 not in d d.pop(1) assert 1 not in d d.pop(1, None)
def test_access_ordering(self): d = Container(5) for i in xrange(10): d[i] = True self.assertEqual(d._get_ordered_access_keys(), [9,8,7,6,5]) new_order = [7,8,6,9,5] for k in reversed(new_order): d[k] self.assertEqual(d._get_ordered_access_keys(), new_order)
def test_access_ordering(self) -> None: d: Container[int, bool] = Container(5) for i in range(10): d[i] = True # Keys should be ordered by access time assert list(d._container.keys()) == [5, 6, 7, 8, 9] new_order = [7, 8, 6, 9, 5] for k in new_order: d[k] assert list(d._container.keys()) == new_order
def test_expire(self): d = Container(5) for i in range(5): d[i] = str(i) for i in range(5): d.get(0) # Add one more entry d[5] = "5" # Check state assert list(d._container.keys()) == [2, 3, 4, 0, 5]
def test_expire(self): d = Container(5) for i in xrange(5): d[i] = str(i) for i in xrange(5): d.get(0) # Add one more entry d[5] = '5' # Check state self.assertEqual(list(d.keys()), [2, 3, 4, 0, 5])
def test_access_ordering(self): d = Container(5) for i in xrange(10): d[i] = True # Keys should be ordered by access time assert list(d.keys()) == [5, 6, 7, 8, 9] new_order = [7, 8, 6, 9, 5] for k in new_order: d[k] assert list(d.keys()) == new_order
def test_access_ordering(self): d = Container(5) for i in xrange(10): d[i] = True # Keys should be ordered by access time self.assertEqual(list(d.keys()), [5, 6, 7, 8, 9]) new_order = [7, 8, 6, 9, 5] for k in new_order: d[k] self.assertEqual(list(d.keys()), new_order)
def test_maxsize(self): d = Container(5) for i in xrange(5): d[i] = str(i) assert len(d) == 5 for i in xrange(5): assert d[i] == str(i) d[i + 1] = str(i + 1) assert len(d) == 5 assert 0 not in d assert (i + 1) in d
def test_maxsize(self): d = Container(5) for i in xrange(5): d[i] = str(i) self.assertEqual(len(d), 5) for i in xrange(5): self.assertEqual(d[i], str(i)) d[i + 1] = str(i + 1) self.assertEqual(len(d), 5) self.assertFalse(0 in d) self.assertTrue(i + 1 in d)
def test_maxsize(self) -> None: d: Container[int, str] = Container(5) for i in range(5): d[i] = str(i) assert len(d) == 5 for i in range(5): assert d[i] == str(i) d[i + 1] = str(i + 1) assert len(d) == 5 assert 0 not in d assert (i + 1) in d
def test_get(self): d = Container(5) for i in xrange(5): d[i] = True r = d.get(4) self.assertEqual(r, True) r = d.get(5) self.assertEqual(r, None) r = d.get(5, 42) self.assertEqual(r, 42) self.assertRaises(KeyError, lambda: d[5])
def test_get(self): d = Container(5) for i in xrange(5): d[i] = True r = d.get(4) assert r is True r = d.get(5) assert r is None r = d.get(5, 42) assert r == 42 with pytest.raises(KeyError): d[5]
def test_get(self) -> None: d: Container[int, Union[bool, int]] = Container(5) for i in range(5): d[i] = True r = d.get(4) assert r is True r = d.get(5) assert r is None r = d.get(5, 42) assert r == 42 with pytest.raises(KeyError): d[5]
def test_disposal(self): evicted_items = [] def dispose_func(arg): # Save the evicted datum for inspection evicted_items.append(arg) d = Container(5, dispose_func=dispose_func) for i in xrange(5): d[i] = i self.assertEqual(list(d.keys()), list(xrange(5))) self.assertEqual(evicted_items, []) # Nothing disposed d[5] = 5 self.assertEqual(list(d.keys()), list(xrange(1, 6))) self.assertEqual(evicted_items, [0]) del d[1] self.assertEqual(evicted_items, [0, 1]) d.clear() self.assertEqual(evicted_items, [0, 1, 2, 3, 4, 5])
def test_disposal(self): evicted_items = [] def dispose_func(arg): # Save the evicted datum for inspection evicted_items.append(arg) d = Container(5, dispose_func=dispose_func) for i in xrange(5): d[i] = i assert list(d.keys()) == list(xrange(5)) assert evicted_items == [] # Nothing disposed d[5] = 5 assert list(d.keys()) == list(xrange(1, 6)) assert evicted_items == [0] del d[1] assert evicted_items == [0, 1] d.clear() assert evicted_items == [0, 1, 2, 3, 4, 5]
def test_disposal(self) -> None: evicted_items: List[int] = [] def dispose_func(arg: int) -> None: # Save the evicted datum for inspection evicted_items.append(arg) d: Container[int, int] = Container(5, dispose_func=dispose_func) for i in range(5): d[i] = i assert list(d._container.keys()) == list(range(5)) assert evicted_items == [] # Nothing disposed d[5] = 5 assert list(d._container.keys()) == list(range(1, 6)) assert evicted_items == [0] del d[1] assert evicted_items == [0, 1] d.clear() assert evicted_items == [0, 1, 2, 3, 4, 5]
def test_iter(self): d = Container() with pytest.raises(NotImplementedError): d.__iter__()
def test_maxsize_0(self) -> None: d: Container[int, int] = Container(0) d[1] = 1 assert len(d) == 0
def test_iter(self) -> None: d: Container[str, str] = Container() with pytest.raises(NotImplementedError): d.__iter__()
def test_iter(self): d = Container() with self.assertRaises(NotImplementedError): for i in d: self.fail("Iteration shouldn't be implemented.")
def test_iter(self): d = Container() self.assertRaises(NotImplementedError, d.__iter__)