package org.mafagafogigante.dungeon.util;
import org.junit.Assert;
import org.junit.Test;
public class CircularListTest {
private static final int CIRCULAR_LIST_CAPACITY = 16;
@Test
public void testAdd() throws Exception {
CircularList<Integer> circularList = new CircularList<>(2);
circularList.add(1);
Assert.assertTrue(circularList.get(0).equals(1));
circularList.add(2);
Assert.assertTrue(circularList.get(0).equals(1));
Assert.assertTrue(circularList.get(1).equals(2));
circularList.add(3);
Assert.assertTrue(circularList.get(0).equals(2));
Assert.assertTrue(circularList.get(1).equals(3));
circularList.add(4);
Assert.assertTrue(circularList.get(0).equals(3));
Assert.assertTrue(circularList.get(1).equals(4));
}
@Test
public void testSize() throws Exception {
CircularList<Integer> circularList = new CircularList<>(CIRCULAR_LIST_CAPACITY);
Assert.assertEquals(0, circularList.size());
for (int i = 0; i <= 2 * CIRCULAR_LIST_CAPACITY; i++) { // i is how many elements we have already added.
Assert.assertEquals(Math.min(i, CIRCULAR_LIST_CAPACITY), circularList.size());
circularList.add(i);
}
}
@Test
public void testIsFull() throws Exception {
CircularList<Integer> circularList = new CircularList<>(2);
Assert.assertFalse(circularList.isFull());
circularList.add(1);
Assert.assertFalse(circularList.isFull());
circularList.add(2);
Assert.assertTrue(circularList.isFull());
circularList.add(3);
Assert.assertTrue(circularList.isFull());
}
@Test
public void testIsEmpty() throws Exception {
CircularList<Integer> circularList = new CircularList<>(1);
Assert.assertTrue(circularList.isEmpty());
circularList.add(1);
Assert.assertFalse(circularList.isEmpty());
}
@Test
public void testGet() throws Exception {
CircularList<Integer> circularList = new CircularList<>(CIRCULAR_LIST_CAPACITY);
for (int i = 0; i <= 2 * CIRCULAR_LIST_CAPACITY; i++) {
circularList.add(i);
Assert.assertTrue(circularList.get(Math.min(i, CIRCULAR_LIST_CAPACITY - 1)).equals(i));
}
}
}