package net.sourceforge.mayfly.util;
import junit.framework.TestCase;
import java.util.Arrays;
import java.util.List;
public class ImmutableListTest extends TestCase {
public void testUnmodifiable() throws Exception {
List list = new ImmutableList(Arrays.asList(new String[] { "a", "b", "c" }));
try {
list.add("d");
fail();
} catch (UnsupportedOperationException expected) {
}
}
public void testReadAccess() throws Exception {
List list = new ImmutableList(Arrays.asList(new String[] { "a", "b", "c" }));
assertEquals(3, list.size());
assertEquals("b", list.get(1));
}
public void testConstructorCopies() throws Exception {
String[] backingArray = new String[] { "a", "b", "c" };
List list = new ImmutableList(Arrays.asList(backingArray));
backingArray[1] = "BOO!";
assertEquals("b", list.get(1));
}
public void testWith() throws Exception {
ImmutableList list = new ImmutableList();
ImmutableList oneElement = list.with("a");
assertEquals(0, list.size());
assertEquals(1, oneElement.size());
assertEquals("a", oneElement.get(0));
List addToNonEmpty = oneElement.with("b");
assertEquals(2, addToNonEmpty.size());
assertEquals("a", addToNonEmpty.get(0));
assertEquals("b", addToNonEmpty.get(1));
}
public void testWithAll() throws Exception {
ImmutableList list = new ImmutableList().with("a");
ImmutableList actual = list.withAll(new L().append("b").append("c"));
L expected = new L().append("a").append("b").append("c");
assertEquals(expected, actual);
}
public void testWithout() throws Exception {
ImmutableList list = new ImmutableList().with("a").with("b").with("c");
ImmutableList result = list.without(1);
assertEquals(2, result.size());
assertEquals("a", result.get(0));
assertEquals("c", result.get(1));
}
public void testWithAtIndex() throws Exception {
ImmutableList list = new ImmutableList().with("a").with("c");
ImmutableList result = list.with(1, "b");
assertEquals(3, result.size());
assertEquals("a", result.get(0));
assertEquals("b", result.get(1));
assertEquals("c", result.get(2));
}
public void testLastConvenienceMethods() throws Exception {
ImmutableList list = new ImmutableList().with("a").with("b").with("c");
assertEquals("c", list.last());
ImmutableList result = list.allButLast();
assertEquals(2, result.size());
assertEquals("a", result.get(0));
assertEquals("b", result.get(1));
}
}