package pl.edu.agh.utils; import static com.google.common.collect.Lists.newArrayList; import static junit.framework.Assert.assertEquals; import java.util.Arrays; import java.util.List; import org.junit.Test; public class RemovingAdjacentDuplicatesTest { @Test public void forListWithLessThanTwoElementsDoesNotModifyIt() { List<Integer> actual = Arrays.asList(1); List<Integer> expected = newArrayList(actual); actual = Collections.removeAdjacentDuplicates(actual); assertEquals(expected, actual); } @Test public void forListWithTheSameElementsReturnsListWithOneElement() { List<Integer> actual = newArrayList(Arrays.asList(1, 1, 1, 1, 1)); List<Integer> expected = Arrays.asList(1); actual = Collections.removeAdjacentDuplicates(actual); assertEquals(expected, actual); } @Test public void forListWithNoAdjacentDuplicatesDoesNotModifyIt() { List<Integer> actual = newArrayList(Arrays.asList(1, 2, 3, 2, 1)); List<Integer> expected = newArrayList(actual); actual = Collections.removeAdjacentDuplicates(actual); assertEquals(expected, actual); } @Test public void forListWithDuplicatesAtBeginningRemovesThem() { List<Integer> actual = newArrayList(Arrays.asList(1, 1, 1, 2)); List<Integer> expected = Arrays.asList(1, 2); actual = Collections.removeAdjacentDuplicates(actual); assertEquals(expected, actual); } @Test public void forListWithDuplicatesAtEndRemovesThem() { List<Integer> actual = newArrayList(Arrays.asList(1, 2, 2, 2)); List<Integer> expected = Arrays.asList(1, 2); actual = Collections.removeAdjacentDuplicates(actual); assertEquals(expected, actual); } @Test public void forListWithDuplicatesInsideRemovesThem() { List<Integer> actual = newArrayList(Arrays.asList(1, 2, 2, 1)); List<Integer> expected = Arrays.asList(1, 2, 1); actual = Collections.removeAdjacentDuplicates(actual); assertEquals(expected, actual); } @Test public void forListWith2DifferentElementsDoesNotModyfyList() { List<Integer> actual = newArrayList(Arrays.asList(1, 2)); List<Integer> expected = Arrays.asList(1, 2); actual = Collections.removeAdjacentDuplicates(actual); assertEquals(expected, actual); } }