| import unittest |
| |
| from cachetools import LRUCache |
| |
| from . import CacheTestMixin |
| |
| |
| class LRUCacheTest(unittest.TestCase, CacheTestMixin): |
| |
| Cache = LRUCache |
| |
| def test_lru(self): |
| cache = LRUCache(maxsize=2) |
| |
| cache[1] = 1 |
| cache[2] = 2 |
| cache[3] = 3 |
| |
| self.assertEqual(len(cache), 2) |
| self.assertEqual(cache[2], 2) |
| self.assertEqual(cache[3], 3) |
| self.assertNotIn(1, cache) |
| |
| cache[2] |
| cache[4] = 4 |
| self.assertEqual(len(cache), 2) |
| self.assertEqual(cache[2], 2) |
| self.assertEqual(cache[4], 4) |
| self.assertNotIn(3, cache) |
| |
| cache[5] = 5 |
| self.assertEqual(len(cache), 2) |
| self.assertEqual(cache[4], 4) |
| self.assertEqual(cache[5], 5) |
| self.assertNotIn(2, cache) |
| |
| def test_lru_getsizeof(self): |
| cache = LRUCache(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) |