| import unittest |
| |
| from cachetools import LFUCache |
| |
| from . import CacheTestMixin |
| |
| |
| class LFUCacheTest(unittest.TestCase, CacheTestMixin): |
| |
| Cache = LFUCache |
| |
| def test_lfu(self): |
| cache = LFUCache(maxsize=2) |
| |
| cache[1] = 1 |
| cache[1] |
| cache[2] = 2 |
| cache[3] = 3 |
| |
| self.assertEqual(len(cache), 2) |
| self.assertEqual(cache[1], 1) |
| self.assertTrue(2 in cache or 3 in cache) |
| self.assertTrue(2 not in cache or 3 not in cache) |
| |
| cache[4] = 4 |
| self.assertEqual(len(cache), 2) |
| self.assertEqual(cache[4], 4) |
| self.assertEqual(cache[1], 1) |
| |
| def test_lfu_getsizeof(self): |
| cache = LFUCache(maxsize=3, getsizeof=lambda x: x) |
| |
| cache[1] = 1 |
| cache[2] = 2 |
| |
| self.assertEqual(len(cache), 2) |
| self.assertEqual(cache[1], 1) |
| self.assertEqual(cache[2], 2) |
| |
| cache[3] = 3 |
| |
| self.assertEqual(len(cache), 1) |
| self.assertEqual(cache[3], 3) |
| self.assertNotIn(1, cache) |
| self.assertNotIn(2, cache) |
| |
| with self.assertRaises(ValueError): |
| cache[4] = 4 |
| self.assertEqual(len(cache), 1) |
| self.assertEqual(cache[3], 3) |