package org.jtwig.util.builder; import com.google.common.base.Predicate; import org.junit.Test; import java.util.Collections; import java.util.List; import static java.util.Arrays.asList; import static org.hamcrest.Matchers.is; import static org.junit.Assert.assertSame; import static org.junit.Assert.assertThat; public class ListBuilderTest { @Test public void setOverrides() throws Exception { List<String> strings = Collections.singletonList("preAdded"); ListBuilder<Object, String> underTest = new ListBuilder<>(new Object(), strings); List<String> result = underTest.set(Collections.<String>emptyList()).build(); assertThat(result.size(), is(0)); } @Test public void addAppends() throws Exception { String preAdded = "preAdded"; List<String> strings = Collections.singletonList(preAdded); ListBuilder<Object, String> underTest = new ListBuilder<>(new Object(), strings); String item = "item"; List<String> result = underTest.add(item).build(); assertThat(result.size(), is(2)); assertThat(result.contains(preAdded), is(true)); assertThat(result.contains(item), is(true)); } @Test public void addListAppends() throws Exception { String preAdded = "preAdded"; List<String> strings = Collections.singletonList(preAdded); ListBuilder<Object, String> underTest = new ListBuilder<>(new Object(), strings); String item1 = "item1"; String item2 = "item2"; List<String> result = underTest.add(asList(item1, item2)).build(); assertThat(result.size(), is(3)); assertThat(result.contains(preAdded), is(true)); assertThat(result.contains(item1), is(true)); assertThat(result.contains(item2), is(true)); } @Test public void filter() throws Exception { String preAdded1 = "preAdded1"; final String preAdded2 = "preAdded2"; List<String> strings = asList(preAdded1, preAdded2); ListBuilder<Object, String> underTest = new ListBuilder<>(new Object(), strings); String item1 = "item1"; String item2 = "item2"; List<String> result = underTest.filter(new Predicate<String>() { @Override public boolean apply(String input) { return input.equals(preAdded2); } }).build(); assertThat(result.size(), is(1)); assertThat(result.contains(preAdded1), is(false)); assertThat(result.contains(preAdded2), is(true)); } @Test public void andReturnsArgument() throws Exception { Object parent = new Object(); ListBuilder<Object, String> underTest = new ListBuilder<>(parent); assertSame(underTest.and(), parent); } }