1import unittest 2 3from cachetools import LFUCache 4 5from . import CacheTestMixin 6 7 8class LFUCacheTest(unittest.TestCase, CacheTestMixin): 9 10 Cache = LFUCache 11 12 def test_lfu(self): 13 cache = LFUCache(maxsize=2) 14 15 cache[1] = 1 16 cache[1] 17 cache[2] = 2 18 cache[3] = 3 19 20 self.assertEqual(len(cache), 2) 21 self.assertEqual(cache[1], 1) 22 self.assertTrue(2 in cache or 3 in cache) 23 self.assertTrue(2 not in cache or 3 not in cache) 24 25 cache[4] = 4 26 self.assertEqual(len(cache), 2) 27 self.assertEqual(cache[4], 4) 28 self.assertEqual(cache[1], 1) 29 30 def test_lfu_getsizeof(self): 31 cache = LFUCache(maxsize=3, getsizeof=lambda x: x) 32 33 cache[1] = 1 34 cache[2] = 2 35 36 self.assertEqual(len(cache), 2) 37 self.assertEqual(cache[1], 1) 38 self.assertEqual(cache[2], 2) 39 40 cache[3] = 3 41 42 self.assertEqual(len(cache), 1) 43 self.assertEqual(cache[3], 3) 44 self.assertNotIn(1, cache) 45 self.assertNotIn(2, cache) 46 47 with self.assertRaises(ValueError): 48 cache[4] = 4 49 self.assertEqual(len(cache), 1) 50 self.assertEqual(cache[3], 3) 51