@Test
public void memoryLimitedCacheTest() throws InterruptedException {
MemoryLimitedCache<String, MemoryLimitedCache.SizeProvider> cache = new MemoryLimitedCache<String, MemoryLimitedCache.SizeProvider>(5, 1, new Computable<String, MemoryLimitedCache.SizeProvider>() {
@Override
public MemoryLimitedCache.SizeProvider compute(final String s) {
return new MemoryLimitedCache.SizeProvider() {
@Override
public long size() {
return s.length();
}
};
}
});
Assert.assertEquals(0, cache.size());
cache.get("foo1");
Assert.assertEquals(1, cache.size());
cache.get("foo2");
Assert.assertEquals(1, cache.size());
cache.get("foo3");
Assert.assertEquals(1, cache.size());
cache.get("foo4");
Assert.assertEquals(1, cache.size());
Assert.assertEquals(4, cache.memoryUsed());
Assert.assertEquals(5, cache.limit());
}