def test_put_get(self): c = cache.SegmentedLruCache(9, 3) self.assertEqual(c.maxlen, 9) c.put(1) self.assertEqual(c.dump(serialized=False), [[], [], [1]]) c.put(2) self.assertEqual(c.dump(serialized=False), [[], [], [2, 1]]) c.put(3) self.assertEqual(len(c), 3) self.assertEqual(c.dump(serialized=False), [[], [], [3, 2, 1]]) c.get(2) self.assertEqual(len(c), 3) self.assertEqual(c.dump(serialized=False), [[], [2], [3, 1]]) c.get(2) self.assertEqual(len(c), 3) self.assertEqual(c.dump(serialized=False), [[2], [], [3, 1]]) c.put(4) self.assertEqual(len(c), 4) self.assertEqual(c.dump(serialized=False), [[2], [], [4, 3, 1]]) evicted = c.put(5) self.assertEqual(evicted, 1) self.assertEqual(len(c), 4) self.assertEqual(c.dump(serialized=False), [[2], [], [5, 4, 3]]) c.get(5) self.assertEqual(len(c), 4) self.assertEqual(c.dump(serialized=False), [[2], [5], [4, 3]]) c.put(6) self.assertEqual(len(c), 5) self.assertEqual(c.dump(serialized=False), [[2], [5], [6, 4, 3]]) c.get(6) self.assertEqual(len(c), 5) self.assertEqual(c.dump(serialized=False), [[2], [6, 5], [4, 3]]) c.get(3) self.assertEqual(len(c), 5) self.assertEqual(c.dump(serialized=False), [[2], [3, 6, 5], [4]]) c.get(4) self.assertEqual(len(c), 5) self.assertEqual(c.dump(serialized=False), [[2], [4, 3, 6], [5]]) c.get(4) self.assertEqual(len(c), 5) self.assertEqual(c.dump(serialized=False), [[4, 2], [3, 6], [5]]) c.get(2) self.assertEqual(len(c), 5) self.assertEqual(c.dump(serialized=False), [[2, 4], [3, 6], [5]]) c.get(3) self.assertEqual(len(c), 5) self.assertEqual(c.dump(serialized=False), [[3, 2, 4], [6], [5]]) c.get(3) self.assertEqual(len(c), 5) self.assertEqual(c.dump(serialized=False), [[3, 2, 4], [6], [5]]) c.get(2) self.assertEqual(len(c), 5) self.assertEqual(c.dump(serialized=False), [[2, 3, 4], [6], [5]]) c.get(6) self.assertEqual(len(c), 5) self.assertEqual(c.dump(serialized=False), [[6, 2, 3], [4], [5]])
def test_put_get(self): c = cache.SegmentedLruCache(9, 3) assert c.maxlen == 9 c.put(1) assert c.dump(serialized=False) == [[], [], [1]] c.put(2) assert c.dump(serialized=False) == [[], [], [2, 1]] c.put(3) assert len(c) == 3 assert c.dump(serialized=False) == [[], [], [3, 2, 1]] c.get(2) assert len(c) == 3 assert c.dump(serialized=False) == [[], [2], [3, 1]] c.get(2) assert len(c) == 3 assert c.dump(serialized=False) == [[2], [], [3, 1]] c.put(4) assert len(c) == 4 assert c.dump(serialized=False) == [[2], [], [4, 3, 1]] evicted = c.put(5) assert evicted == 1 assert len(c) == 4 assert c.dump(serialized=False) == [[2], [], [5, 4, 3]] c.get(5) assert len(c) == 4 assert c.dump(serialized=False) == [[2], [5], [4, 3]] c.put(6) assert len(c) == 5 assert c.dump(serialized=False) == [[2], [5], [6, 4, 3]] c.get(6) assert len(c) == 5 assert c.dump(serialized=False) == [[2], [6, 5], [4, 3]] c.get(3) assert len(c) == 5 assert c.dump(serialized=False) == [[2], [3, 6, 5], [4]] c.get(4) assert len(c) == 5 assert c.dump(serialized=False) == [[2], [4, 3, 6], [5]] c.get(4) assert len(c) == 5 assert c.dump(serialized=False) == [[4, 2], [3, 6], [5]] c.get(2) assert len(c) == 5 assert c.dump(serialized=False) == [[2, 4], [3, 6], [5]] c.get(3) assert len(c) == 5 assert c.dump(serialized=False) == [[3, 2, 4], [6], [5]] c.get(3) assert len(c) == 5 assert c.dump(serialized=False) == [[3, 2, 4], [6], [5]] c.get(2) assert len(c) == 5 assert c.dump(serialized=False) == [[2, 3, 4], [6], [5]] c.get(6) assert len(c) == 5 assert c.dump(serialized=False) == [[6, 2, 3], [4], [5]]
def test_dump(self): c = cache.SegmentedLruCache(4, 2) c.put(2) c.put(2) c.put(1) c.put(1) c.put(4) c.put(3) self.assertEqual(c.dump(serialized=False), [[1, 2], [3, 4]]) self.assertEqual(c.dump(serialized=True), [1, 2, 3, 4]) self.assertEqual(c.dump(), [1, 2, 3, 4])
def test_dump(self): c = cache.SegmentedLruCache(4, 2) c.put(2) c.put(2) c.put(1) c.put(1) c.put(4) c.put(3) assert c.dump(serialized=False) == [[1, 2], [3, 4]] assert c.dump(serialized=True) == [1, 2, 3, 4] assert c.dump() == [1, 2, 3, 4]
def test_position(self): c = cache.SegmentedLruCache(4, 2) c.put(2) c.put(2) c.put(1) c.put(1) c.put(4) c.put(3) self.assertEqual(c.dump(serialized=False), [[1, 2], [3, 4]]) self.assertEqual(c.position(1), 0) self.assertEqual(c.position(2), 1) self.assertEqual(c.position(3), 2) self.assertEqual(c.position(4), 3)
def test_position(self): c = cache.SegmentedLruCache(4, 2) c.put(2) c.put(2) c.put(1) c.put(1) c.put(4) c.put(3) assert c.dump(serialized=False) == [[1, 2], [3, 4]] assert c.position(1) == 0 assert c.position(2) == 1 assert c.position(3) == 2 assert c.position(4) == 3
def test_has(self): c = cache.SegmentedLruCache(4, 2) c.put(2) c.put(2) c.put(1) c.put(1) c.put(4) c.put(3) self.assertEqual(c.dump(serialized=False), [[1, 2], [3, 4]]) self.assertTrue(c.has(1)) self.assertTrue(c.has(2)) self.assertTrue(c.has(3)) self.assertTrue(c.has(4)) self.assertFalse(c.has(5))
def test_has(self): c = cache.SegmentedLruCache(4, 2) c.put(2) c.put(2) c.put(1) c.put(1) c.put(4) c.put(3) assert c.dump(serialized=False) == [[1, 2], [3, 4]] assert c.has(1) assert c.has(2) assert c.has(3) assert c.has(4) assert not c.has(5)
def test_remove(self): c = cache.SegmentedLruCache(4, 2) c.put(2) c.put(2) c.put(1) c.put(1) c.put(4) c.put(3) self.assertEqual(c.dump(serialized=False), [[1, 2], [3, 4]]) c.remove(2) self.assertEqual(len(c), 3) self.assertEqual(c.dump(serialized=False), [[1], [3, 4]]) c.remove(1) self.assertEqual(len(c), 2) self.assertEqual(c.dump(serialized=False), [[], [3, 4]]) c.remove(4) self.assertEqual(len(c), 1) self.assertEqual(c.dump(serialized=False), [[], [3]]) c.remove(3) self.assertEqual(len(c), 0) self.assertEqual(c.dump(serialized=False), [[], []])
def test_remove(self): c = cache.SegmentedLruCache(4, 2) c.put(2) c.put(2) c.put(1) c.put(1) c.put(4) c.put(3) assert c.dump(serialized=False) == [[1, 2], [3, 4]] c.remove(2) assert len(c) == 3 assert c.dump(serialized=False) == [[1], [3, 4]] c.remove(1) assert len(c) == 2 assert c.dump(serialized=False) == [[], [3, 4]] c.remove(4) assert len(c) == 1 assert c.dump(serialized=False) == [[], [3]] c.remove(3) assert len(c) == 0 assert c.dump(serialized=False) == [[], []]
def test_alloc_rounding(self): c = cache.SegmentedLruCache(100, 3, [0.402, 0.201, 0.397]) self.assertEqual(list(c._segment_maxlen), [40, 20, 40]) self.assertEqual(sum(c._segment_maxlen), c.maxlen)
def test_alloc(self): c = cache.SegmentedLruCache(100, 3, [0.4, 0.21, 0.39]) self.assertEqual(list(c._segment_maxlen), [40, 21, 39]) self.assertEqual(sum(c._segment_maxlen), c.maxlen)
def test_alloc_rounding(self): c = cache.SegmentedLruCache(100, 3, [0.402, 0.201, 0.397]) assert list(c._segment_maxlen) == [40, 20, 40] assert sum(c._segment_maxlen) == c.maxlen
def test_alloc(self): c = cache.SegmentedLruCache(100, 3, [0.4, 0.21, 0.39]) assert list(c._segment_maxlen) == [40, 21, 39] assert sum(c._segment_maxlen) == c.maxlen