package ch.deif.meander.util; import static org.junit.Assert.assertEquals; import org.codemap.util.RunLengthEncodedList; import org.junit.Test; public class RunLengthEncodedListTest { private static final String A = "A"; private static final String B = "B"; private static final String C = "C"; @Test public void testAAABB() { RunLengthEncodedList<String> rle = new RunLengthEncodedList<String>(A, A, A, B, B); assertEquals(5, rle.size()); assertEquals(A, rle.get(0)); assertEquals(A, rle.get(1)); assertEquals(A, rle.get(2)); assertEquals(B, rle.get(3)); assertEquals(B, rle.get(4)); } @Test public void testEmpty() { RunLengthEncodedList<String> rle = new RunLengthEncodedList<String>(); assertEquals(0, rle.size()); } @Test public void testA() { RunLengthEncodedList<String> rle = new RunLengthEncodedList<String>(A); assertEquals(1, rle.size()); assertEquals(A, rle.get(0)); } @Test public void testNullAAANullNull() { RunLengthEncodedList<String> rle = new RunLengthEncodedList<String>(null, A, A, null, null, B); assertEquals(6, rle.size()); assertEquals(null, rle.get(0)); assertEquals(A, rle.get(1)); assertEquals(A, rle.get(2)); assertEquals(null, rle.get(3)); assertEquals(null, rle.get(4)); assertEquals(B, rle.get(5)); } @Test public void testABC() { RunLengthEncodedList<String> rle = new RunLengthEncodedList<String>(A, B, C); assertEquals(3, rle.size()); assertEquals(A, rle.get(0)); assertEquals(B, rle.get(1)); assertEquals(C, rle.get(2)); } @Test public void testAAABBBCCC() { RunLengthEncodedList<String> rle = new RunLengthEncodedList<String>(A, A, A, B, B, B, C, C, C); assertEquals(9, rle.size()); assertEquals(A, rle.get(0)); assertEquals(A, rle.get(1)); assertEquals(A, rle.get(2)); assertEquals(B, rle.get(3)); assertEquals(B, rle.get(4)); assertEquals(B, rle.get(5)); assertEquals(C, rle.get(6)); assertEquals(C, rle.get(7)); assertEquals(C, rle.get(8)); } @Test(expected=IndexOutOfBoundsException.class) public void testIndexBelowBounds() { RunLengthEncodedList<String> rle = new RunLengthEncodedList<String>(A, A, A, B, B); assertEquals(5, rle.size()); rle.get(-1); } @Test(expected=IndexOutOfBoundsException.class) public void testIndexAboveBounds() { RunLengthEncodedList<String> rle = new RunLengthEncodedList<String>(A, A, A, B, B); assertEquals(5, rle.size()); rle.get(5); } }