class LRUCacheScaleTests(unittest.TestCase): def setUp(self): self.capacity = 5000000 self.__num_over_capacity = 500002 self.lru_cache = LRUCache(self.capacity) for i in xrange(1, self.capacity + self.__num_over_capacity): self.lru_cache.set('user' + str(i), 'user_number_' + str(i)) def tearDown(self): self.lru_cache = None @raises(KeyError) def test_set_and_get(self): """ lru element should be user2 and user1 sould be removed. """ self.assertEqual(self.lru_cache.get_lru_el(), self.lru_cache._cache_dict['user' + str(self.__num_over_capacity)]) self.lru_cache.get('user' + str(self.__num_over_capacity - 1)) def test_update(self): """ test update """ self.lru_cache.set('user' + str(self.__num_over_capacity + self.capacity/2), 'ANON_USER') self.assertTrue(self.lru_cache.get('user' + str(self.__num_over_capacity + self.capacity/2)) == 'ANON_USER') self.lru_cache.set('user' + str(self.__num_over_capacity), 'USER' + str(self.__num_over_capacity)) self.assertEqual(self.lru_cache.get_lru_el(), self.lru_cache._cache_dict['user' + str(self.__num_over_capacity + 1)])
class LRUCacheTests(unittest.TestCase): def setUp(self): self.lru_cache = LRUCache(3) self.lru_cache.set('user1', 'timur') self.lru_cache.set('user2', 'ogden') self.lru_cache.set('user3', 'francis') self.lru_cache.set('user4', 'amra') def tearDown(self): self.lru_cache = None @raises(KeyError) def test_key_error(self): """ First element should be removed from cache """ self.lru_cache.get('user1') def test_get(self): """ Checks to see if 3 most recent elements are in the cache """ self.assertTrue(self.lru_cache.get('user2') == 'ogden') self.assertTrue(self.lru_cache.get('user3') == 'francis') self.assertTrue(self.lru_cache.get('user4') == 'amra') @raises(KeyError) def test_lru_get_and_set(self): """ Performs a few get and set operations: user3 should be the least recently used element and should raise a key error. user2, user 4 and user5 should still be in the cache """ self.lru_cache.get('user2') self.lru_cache.set('user5', 'tom') self.assertTrue(self.lru_cache.get('user2') == 'ogden') self.assertTrue(self.lru_cache.get('user4') == 'amra') self.assertTrue(self.lru_cache.get('user5') == 'tom') self.lru_cache.get('user3') @raises(KeyError) def test_update(self): """ Updates user2 before adding new element. user4 should be the lru element and user3 should be removed from cache. """ self.lru_cache.set('user2', 'Ogden') self.lru_cache.set('user5', 'tom') self.assertTrue(self.lru_cache.get('user2') == 'Ogden') self.assertFalse(self.lru_cache.get('user2') == 'ogden') self.assertTrue(self.lru_cache.get_lru_el() == self.lru_cache._cache_dict['user4']) self.lru_cache.get('user3')