import org.junit.Test; import org.junit.Ignore; import java.util.Arrays; import java.util.LinkedList; import java.util.List; import static org.junit.Assert.assertEquals; public class AccumulateTest { @Test public void emptyAccumulateProducesEmptyAccumulation() { List input = new LinkedList<>(); List expectedOutput = new LinkedList<>(); assertEquals(expectedOutput, Accumulate.accumulate(input, x -> x * x)); } @Ignore @Test public void accumulateSquares() { List input = Arrays.asList(1, 2, 3); List expectedOutput = Arrays.asList(1, 4, 9); assertEquals(expectedOutput, Accumulate.accumulate(input, x -> x * x)); } @Ignore @Test public void accumulateUpperCases() { List input = Arrays.asList("hello", "world"); List expectedOutput = Arrays.asList("HELLO", "WORLD"); assertEquals(expectedOutput, Accumulate.accumulate(input, x -> x.toUpperCase())); } @Ignore @Test public void accumulateReversedStrings() { List input = Arrays.asList("the quick brown fox etc".split(" ")); List expectedOutput = Arrays.asList("eht kciuq nworb xof cte".split(" ")); assertEquals(expectedOutput, Accumulate.accumulate(input, this::reverse)); } private String reverse(String input) { return new StringBuilder(input).reverse().toString(); } @Ignore @Test public void accumulateWithinAccumulate() { List input1 = Arrays.asList("a", "b", "c"); List input2 = Arrays.asList("1", "2", "3"); List expectedOutput = Arrays.asList("a1 a2 a3", "b1 b2 b3", "c1 c2 c3"); assertEquals(expectedOutput, Accumulate.accumulate( input1, c -> String.join(" ", Accumulate.accumulate(input2, d -> c + d)) )); } }