Exemple #1
0
class TestLRUCache(unittest.TestCase):
    def setUp(self):
        self.test_cache = LRUCache(3)
        self.test_cache.put("1", "one")
        self.test_cache.put("2", "two")
        self.test_cache.put("3", "three")

    def test_cache_capacity_1(self):
        self.test_cache.put("4", "four")
        self.test_cache.put("5", "five")
        self.test_cache.put("6", "six")
        val = self.test_cache.get("4")
        self.assertEqual(val, 'four')

    def test_cache_capacity_2(self):
        self.test_cache.put("4", "four")
        self.test_cache.put("5", "five")
        self.test_cache.put("6", "six")
        val = self.test_cache.get("3")
        self.assertEqual(val, None)

    def test_cache_touch(self):
        val = self.test_cache.get("1")
        self.test_cache.put("4", "four")
        self.test_cache.put("5", "five")
        val = self.test_cache.get("1")
        self.assertEqual(val, "one")

    def test_cache_purge(self):
        self.test_cache.purge("1")
        val = self.test_cache.get("1")
        self.assertEqual(val, None)

    def test_cache_clear(self):
        self.test_cache.clear()
        val = self.test_cache.get("1")
        self.assertEqual(val, None)

    def test_cache_statistics(self):
        self.test_cache.get("1")
        self.test_cache.get("2")
        self.test_cache.get("3")
        self.test_cache.get("4")
        self.test_cache.get("5")
        self.test_cache.get("6")
        res = {"hit": 3, "miss": 3, "percentage": 0.5}
        self.assertEqual(self.test_cache.stats(), res)

    def test_iterable(self):
        all_data = {(x, y) for x, y in self.test_cache}
        actual_data = {("1", "one"), ("2", "two"), ("3", "three")}
        self.assertEqual(all_data, actual_data)

    def test_contains(self):
        self.assertTrue("3" in self.test_cache)

    def test_not_contains(self):
        self.assertFalse("4" in self.test_cache)

    def test_len_n(self):
        self.assertEqual(len(self.test_cache), 3)