class TestCache: def __init__(self): self.cache = Cache(SIZE) def test_read_write(self): # basic write and read self.cache.write("test_key", "test_value") assert "test_value" == self.cache.beginRead("test_key") # beginRead: read key not present try: self.cache.beginRead("key_not_present") assert False except: assert True # endRead: read key not present try: self.cache.endRead("key_not_present") assert False except: assert True def test_eviction(self): """ To check an entry is never evicted once beginRead is called """ self.cache.write("test_key", "test_value") value = self.cache.beginRead("test_key") for i in range(TEST_SIZE): self.cache.write(i, i) try: # if evicted, endRead should throw and exception self.cache.endRead("test_key") assert True except: assert False def test_size(self): """ size of hash_db should never exceed specified size of cache """ # size for i in range(TEST_SIZE): self.cache.write(i, i) assert len(self.cache.hash_db) <= SIZE