public void testSize() throws Exception {
   assertEquals(0, cache.size());
   cache.put(1, "apple");
   assertEquals(1, cache.size());
   Clock.setTime(3000);
   assertEquals(0, cache.size());
 }
 public void testExpiry() throws Exception {
   cache.put(1, "apple");
   assertEquals("apple", cache.get(1));
   assertFalse(cache.isEmpty());
   Clock.setTime(3000);
   assertNull(cache.get(1));
   assertTrue(cache.isEmpty());
 }
  @Override
  public void setUp() throws Exception {
    Clock.setTime(1000);

    // TODO instantiate cache object
    cache = new CacheMapImpl<Integer, String>();
    cache.setTimeToLive(TIME_TO_LIVE);
  }
  public void testPartialExpiry() throws Exception {
    // Add an apple, it will expire at 2000
    cache.put(1, "apple");
    Clock.setTime(1500);
    // Add an orange, it will expire at 2500
    cache.put(2, "orange");

    assertEquals("apple", cache.get(1));
    assertEquals("orange", cache.get(2));
    assertEquals(2, cache.size());

    // Set time to 2300 and check that only the apple has disappeared
    Clock.setTime(2300);

    assertNull(cache.get(1));
    assertEquals("orange", cache.get(2));
    assertEquals(1, cache.size());
  }
  public void testContainsKeyAndContainsValue() {
    assertFalse(cache.containsKey(1));
    assertFalse(cache.containsValue("apple"));
    assertFalse(cache.containsKey(2));
    assertFalse(cache.containsValue("orange"));

    cache.put(1, "apple");
    assertTrue(cache.containsKey(1));
    assertTrue(cache.containsValue("apple"));
    assertFalse(cache.containsKey(2));
    assertFalse(cache.containsValue("orange"));

    Clock.setTime(3000);
    assertFalse(cache.containsKey(1));
    assertFalse(cache.containsValue("apple"));
    assertFalse(cache.containsKey(2));
    assertFalse(cache.containsValue("orange"));
  }
 public void testPutReturnValue() {
   cache.put(1, "apple");
   assertNotNull(cache.put(1, "banana"));
   Clock.setTime(3000);
   assertNull(cache.put(1, "mango"));
 }