package com.box.sdk;
import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertThat;
import org.junit.Test;
import org.junit.experimental.categories.Category;
public class LRUCacheTest {
@Test
@Category(UnitTest.class)
public void addReturnsTrueForNewItem() {
LRUCache<Integer> lru = new LRUCache<Integer>();
boolean added = lru.add(1);
assertThat(added, is(true));
}
@Test
@Category(UnitTest.class)
public void addReturnsFalseForExistingItem() {
LRUCache<Integer> lru = new LRUCache<Integer>();
lru.add(1);
boolean added = lru.add(1);
assertThat(added, is(false));
}
@Category(UnitTest.class)
public void addReturnsFalseForExistingItemMultipleTimes() {
LRUCache<Integer> lru = new LRUCache<Integer>();
lru.add(1);
lru.add(1);
boolean added = lru.add(1);
assertThat(added, is(false));
}
@Test
@Category(UnitTest.class)
public void addRemovesOldestItemWhenMaxSizeIsReached() {
LRUCache<Integer> lru = new LRUCache<Integer>();
for (int i = 0; i < LRUCache.MAX_SIZE + 1; i++) {
lru.add(i);
}
boolean added = lru.add(0);
assertThat(added, is(true));
}
@Test
@Category(UnitTest.class)
public void addMakesExistingItemNewer() {
LRUCache<Integer> lru = new LRUCache<Integer>();
for (int i = 0; i < LRUCache.MAX_SIZE; i++) {
lru.add(i);
}
lru.add(0);
lru.add(LRUCache.MAX_SIZE + 1);
boolean added = lru.add(1);
assertThat(added, is(true));
}
}