import org.junit.Assert; import org.junit.Test; import org.junit.Ignore; import java.util.Arrays; import java.util.LinkedList; import java.util.List; public class StrainTest { @Test public void emptyKeep() { List<Integer> input = new LinkedList<>(); List<Integer> expectedOutput = new LinkedList<>(); Assert.assertEquals(expectedOutput, Strain.keep(input, x -> x < 10)); } @Ignore("Remove to run test") @Test public void keepEverything() { List<Integer> input = Arrays.asList(1, 2, 3); List<Integer> expectedOutput = Arrays.asList(1, 2, 3); Assert.assertEquals(expectedOutput, Strain.keep(input, x -> x < 10)); } @Ignore("Remove to run test") @Test public void keepFirstAndLast() { List<Integer> input = Arrays.asList(1, 2, 3); List<Integer> expectedOutput = Arrays.asList(1, 3); Assert.assertEquals(expectedOutput, Strain.keep(input, x -> x % 2 != 0)); } @Ignore("Remove to run test") @Test public void keepNeitherFirstNorLast() { List<Integer> input = Arrays.asList(1, 2, 3, 4, 5); List<Integer> expectedOutput = Arrays.asList(2, 4); Assert.assertEquals(expectedOutput, Strain.keep(input, x -> x % 2 == 0)); } @Ignore("Remove to run test") @Test public void KeepStrings() { List<String> words = Arrays .asList("apple zebra banana zombies cherimoya zelot".split(" ")); List<String> expectedOutput = Arrays.asList("zebra", "zombies", "zelot"); Assert.assertEquals(expectedOutput, Strain.keep(words, x -> x.startsWith("z"))); } @Ignore("Remove to run test") @Test public void KeepArrays() { List<List<Integer>> actual = Arrays.asList( Arrays.asList(1, 2, 3), Arrays.asList(5, 5, 5), Arrays.asList(5, 1, 2), Arrays.asList(2, 1, 2), Arrays.asList(1, 5, 2), Arrays.asList(2, 2, 1), Arrays.asList(1, 2, 5)); List<List<Integer>> expectedOutput = Arrays.asList( Arrays.asList(5, 5, 5), Arrays.asList(5, 1, 2), Arrays.asList(1, 5, 2), Arrays.asList(1, 2, 5)); Assert.assertEquals(expectedOutput, Strain.keep(actual, col -> col.contains(5))); } @Ignore("Remove to run test") @Test public void emptyDiscard() { List<Integer> input = new LinkedList<>(); List<Integer> expectedOutput = new LinkedList<>(); Assert.assertEquals(expectedOutput, Strain.discard(input, x -> x < 10)); } @Ignore("Remove to run test") @Test public void discardNothing() { List<Integer> input = Arrays.asList(1, 2, 3); List<Integer> expectedOutput = Arrays.asList(1, 2, 3); Assert.assertEquals(expectedOutput, Strain.discard(input, x -> x > 10)); } @Ignore("Remove to run test") @Test public void discardFirstAndLast() { List<Integer> input = Arrays.asList(1, 2, 3); List<Integer> expectedOutput = Arrays.asList(2); Assert.assertEquals(expectedOutput, Strain.discard(input, x -> x % 2 != 0)); } @Ignore("Remove to run test") @Test public void discardNeitherFirstNorLast() { List<Integer> input = Arrays.asList(1, 2, 3, 4, 5); List<Integer> expectedOutput = Arrays.asList(1, 3, 5); Assert.assertEquals(expectedOutput, Strain.discard(input, x -> x % 2 == 0)); } @Ignore("Remove to run test") @Test public void discardStrings() { List<String> words = Arrays .asList("apple zebra banana zombies cherimoya zelot".split(" ")); List<String> expectedOutput = Arrays.asList("apple", "banana", "cherimoya"); Assert.assertEquals(expectedOutput, Strain.discard(words, x -> x.startsWith("z"))); } @Ignore("Remove to run test") @Test public void discardArrays() { List<List<Integer>> actual = Arrays.asList( Arrays.asList(1, 2, 3), Arrays.asList(5, 5, 5), Arrays.asList(5, 1, 2), Arrays.asList(2, 1, 2), Arrays.asList(1, 5, 2), Arrays.asList(2, 2, 1), Arrays.asList(1, 2, 5)); List<List<Integer>> expectedOutput = Arrays.asList( Arrays.asList(1, 2, 3), Arrays.asList(2, 1, 2), Arrays.asList(2, 2, 1)); Assert.assertEquals(expectedOutput, Strain.discard(actual, col -> col.contains(5))); } }