@Test
public void testCache() {

  LruCache<String, String> cache = LruCache.create(4);
  cache.put("a", "a1");
  cache.put("b", "b1");
  cache.put("c", "c1");
  cache.put("d", "d1");
  cache.put("e", "e1");
  assertFalse(cache.containsKey("a")); // e evicts a.
  assertEquals("b1", cache.get("b")); // This is still there.
  cache.put("f", "f1");
  assertFalse(cache.containsKey("c")); // f now evicts c, since b was recently used.
  cache.put("g", null);
  assertTrue(cache.containsKey("g"));
  assertNull(cache.get("g"));
  assertFalse(cache.containsKey("d")); // d evicted by g.
  assertNull(cache.get("d")); // But accessing this just returns null, not an error.
}