package cucumber.runtime.java.guice.collection;
import org.junit.Before;
import org.junit.Test;
import java.util.ArrayList;
import java.util.List;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.junit.Assert.assertThat;
public class CollectionUtilTest {
private List<String> list;
@Before
public void setUp() {
list = new ArrayList<String>();
}
@Test(expected = NullPointerException.class)
public void testNullPointerExceptionIsThrownWhenListIsNull() {
CollectionUtil.removeAllExceptFirstElement(null);
}
@Test(expected = IllegalArgumentException.class)
public void testIllegalArgumentExceptionIsThrownWhenListIsEmpty() {
CollectionUtil.removeAllExceptFirstElement(list);
}
@Test
public void testListIsNotModifiedWhenItContainsOneItem() {
list.add("foo");
CollectionUtil.removeAllExceptFirstElement(list);
assertThatListContainsOneElement("foo");
}
@Test
public void testSecondItemIsRemovedWhenListContainsTwoItems() {
list.add("foo");
list.add("bar");
CollectionUtil.removeAllExceptFirstElement(list);
assertThatListContainsOneElement("foo");
}
@Test
public void testSecondAndThirdItemsAreRemovedWhenListContainsThreeItems() {
list.add("foo");
list.add("bar");
list.add("baz");
CollectionUtil.removeAllExceptFirstElement(list);
assertThatListContainsOneElement("foo");
}
private void assertThatListContainsOneElement(String element) {
assertThat(list.size(), equalTo(1));
assertThat(list.get(0), equalTo(element));
}
}