import org.junit.Test; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; import static org.junit.Assert.*; public class LRUCacheTest { @Test public void lruCache() { final int capacity = 8; final Map<Integer, Integer> map = new HashMap<>(); final List<Integer> list = Arrays.asList(1,2,3,4,5,6,7,8,9,10); final LRUCache cache = new LRUCache(capacity); list.forEach(i -> { cache.insert(i, i); }); //FIRST TWO HAVE BEEN REPLACED assertNull(cache.lookup(1)); assertNull(cache.lookup(2)); //LRU IS NOW MOST RECENTLY ACCESSED assertEquals(list.get(3), cache.lookup(3)); //INSERT ONE AND BUMP OFF LAST ENTRY cache.insert(1, 1); //ASSERT PREVIOUSLY LRU IS GONE assertNull(cache.lookup(4)); //ASSERT THAT REMOVING AN ELEMENT WORKS cache.remove(1); assertNull(cache.lookup(1)); } }