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<Integer> input = new LinkedList<>();
List<Integer> expectedOutput = new LinkedList<>();
assertEquals(expectedOutput, Accumulate.accumulate(input, x -> x * x));
}
@Ignore("Remove to run test")
@Test
public void accumulateSquares() {
List<Integer> input = Arrays.asList(1, 2, 3);
List<Integer> expectedOutput = Arrays.asList(1, 4, 9);
assertEquals(expectedOutput, Accumulate.accumulate(input, x -> x * x));
}
@Ignore("Remove to run test")
@Test
public void accumulateUpperCases() {
List<String> input = Arrays.asList("hello", "world");
List<String> expectedOutput = Arrays.asList("HELLO", "WORLD");
assertEquals(expectedOutput, Accumulate.accumulate(input, x -> x.toUpperCase()));
}
@Ignore("Remove to run test")
@Test
public void accumulateReversedStrings() {
List<String> input = Arrays.asList("the quick brown fox etc".split(" "));
List<String> 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("Remove to run test")
@Test
public void accumulateWithinAccumulate() {
List<String> input1 = Arrays.asList("a", "b", "c");
List<String> input2 = Arrays.asList("1", "2", "3");
List<String> 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))
));
}
}