class LRUTestCase(unittest.TestCase): def setUp(self): """Call before every test case.""" # self.file = open( "blah", "r" ) def tearDown(self): """Call after every test case.""" # self.file.close() def testA(self): """Test case A. note that all test method names must begin with 'test.'""" self.cache = LRUCache(capacity=2) self.cache.put(key=2, value=2) self.cache.put(key=3, value=3) self.cache.put(key=4, value=3) self.assertEqual(len(self.cache), 2, "cache size not correct") # assert self.cache.size() == 2, "exepected value is 2" def testB(self): """test case B""" self.cache = LRUCache(capacity=2) self.cache.put(key=2, value=2) self.cache.put(key=3, value=3) self.cache.put(key=4, value=3) self.assertEqual(self.cache.get(key=2), -1) def testC(self): """test case C"""
def test_set_item_expired(self): for storage_name, storage in self._build_storages(): cache = LRUCache(storage=storage) with self.subTest(scenario=storage_name): cache.put(key='abc', data={'my_data': 'a'}, expires_in=timedelta(seconds=1)) # Make sure not expired yet self.assertEqual(cache['abc'], {'my_data': 'a'}) # Check expires sleep(1.1) with self.assertRaises(ItemExpired): cache['abc'] self.assertEqual(cache.total_size_stored, 0)
def test_clean_expired(self): for storage_name, storage in self._build_storages(): cache = LRUCache(storage=storage, sizeof=lambda i: 1) with self.subTest(scenario=storage_name): cache.put(key='abc', data={'my_data': 'a'}, expires_in=timedelta(seconds=1)) cache.put(key='def', data={'my_data': 'a'}, expires_in=timedelta(seconds=1)) cache.put(key='ghi', data={'my_data': 'a'}, expires_in=timedelta(days=1)) cache.put(key='jkl', data={'my_data': 'a'}) self.assertEqual(cache.total_size_stored, 4) sleep(1.1) cache.clean_expired() self.assertEqual(cache.total_size_stored, 2)
def timer(queue_type): cache = LRUCache(SIZE, queue_constructor=queue_type) simple_initial_time = time.time() for i in range(SIZE * 10): cache.put(i, 'value {}'.format(i)) return time.time() - simple_initial_time