package com.insightfullogic.java8.exercises.chapter3; import static java.util.Arrays.asList; import static org.junit.Assert.assertEquals; import java.util.Collections; import java.util.List; import java.util.function.Predicate; import org.junit.Test; public class FilterUsingReduceTest { @Test public void emptyList() { assertFiltered(x -> false, Collections.<Object>emptyList(), Collections.<Object>emptyList()); } @Test public void trueReturnsEverything() { assertFiltered((Integer x) -> true, asList(1, 2, 3), asList(1, 2, 3)); } @Test public void falseRemovesEverything() { assertFiltered((Integer x) -> false, asList(1, 2, 3), asList()); } @Test public void filterPartOfList() { assertFiltered((Integer x) -> x > 2, asList(1, 2, 3), asList(3)); } private <I> void assertFiltered(Predicate<I> predicate, List<I> input, List<I> expectedOutput) { List<I> output = FilterUsingReduce.filter(input.stream(), predicate); assertEquals(expectedOutput, output); List<I> parallelOutput = FilterUsingReduce.filter(input.parallelStream(), predicate); assertEquals(expectedOutput, parallelOutput); } }