@Test
public void testCacheData() {

  // Standard caching behavior
  AbstractCacheWrapper uut = new AbstractCacheWrapper(entries, storageAll, 6500,
      predicate -> predicate != null);
  uut.cacheData(c0);
  assertTrue(uut.dataIsInCache(c0.getId()));
  uut.cacheData(c1);
  assertTrue(uut.dataIsInCache(c1.getId()));
  uut.cacheData(null);
  uut.cacheData(c3);
  assertFalse(uut.dataIsInCache(c0.getId()));
  assertTrue(uut.dataIsInCache(c1.getId()));
  assertTrue(uut.dataIsInCache(c3.getId()));
  // Caching duplicate
  uut.cacheData(c3);
  assertTrue(uut.dataIsInCache(c1.getId()));
  assertTrue(uut.dataIsInCache(c3.getId()));
  // Test cache that denies all entries
  entries.clear();
  uut = new AbstractCacheWrapper(entries, storageAll, 6500, predicate -> false);
  uut.cacheData(c0);
  assertFalse(uut.dataIsInCache(c0.getId()));
  uut.cacheData(c1);
  assertFalse(uut.dataIsInCache(c1.getId()));
  // Test not caching items larger than the max cache size (should not modify
  // already cached data)
  entries.clear();
  uut = new AbstractCacheWrapper(entries, storageAll, 1000, predicate -> true);
  uut.cacheData(c3);
  assertFalse(uut.dataIsInCache(c3.getId()));
}