import org.junit.Assert;
import org.junit.Rule;
import org.junit.Test;
import org.junit.contrib.java.lang.system.SystemOutRule;
public class ArrayListTest {
@Rule
public final SystemOutRule log = new SystemOutRule().enableLog();
@Test
public void testAddWithIndex() {
log.clearLog();
ArrayList list = initListWithSize(10);
list.add(3, 10);
System.out.print(list.toString());
Assert.assertEquals("List: [ 0 1 2 10 3 4 5 6 7 8 9 ]", log.getLog());
System.out.println();
log.clearLog();
list.add(list.size(), 11);
System.out.print(list.toString());
Assert.assertEquals("List: [ 0 1 2 10 3 4 5 6 7 8 9 11 ]", log.getLog());
System.out.println();
}
@Test
public void testAdd() {
log.clearLog();
ArrayList list = new ArrayList();
list.add(10);
System.out.print(list.toString());
Assert.assertEquals("List: [ 10 ]", log.getLog());
System.out.println();
}
@Test(expected = IndexOutOfBoundsException.class)
public void testAddWithIndexOutOfBoundsException() {
ArrayList list = initListWithSize(ArrayList.MAX_LIST_SIZE);
Assert.assertEquals(48, list.size());
list.add(1);
}
@Test
public void testRemove() {
ArrayList list = initListWithSize(10);
log.clearLog();
Object removed = list.remove(0);
System.out.print(list);
Assert.assertEquals(0, removed);
Assert.assertEquals(9, list.size());
Assert.assertEquals("List: [ 1 2 3 4 5 6 7 8 9 ]", log.getLog());
System.out.println();
log.clearLog();
removed = list.remove(list.size()-1);
System.out.print(list);
Assert.assertEquals(9, removed);
Assert.assertEquals(8, list.size());
Assert.assertEquals("List: [ 1 2 3 4 5 6 7 8 ]", log.getLog());
System.out.println();
}
@Test(expected = IllegalArgumentException.class)
public void testGetWithIllegalArgumentException() {
ArrayList list = new ArrayList();
list.add(1);
Assert.assertEquals(1, list.size());
list.get(list.size());
}
@Test
public void testSize() {
ArrayList list = new ArrayList();
list.add(10);
list.add(20);
list.add(30);
Assert.assertEquals(3, list.size());
}
@Test
public void testIterator() {
log.clearLog();
ArrayList list = new ArrayList();
for (int i = 0; i < 10; ++i) {
list.add(i);
}
Iterator iter = list.iterator();
while (iter.hasNext()) {
System.out.print(iter.next());
}
Assert.assertEquals("0123456789", log.getLog());
System.out.println();
}
private ArrayList initListWithSize(int size) {
ArrayList list = new ArrayList();
for (int i = 0; i < size; ++i) {
list.add(i);
}
return list;
}
}