paulp před 11 roky
rodič
revize
6d9eb3ff38

+ 2
- 1
config.json Zobrazit soubor

@@ -22,7 +22,8 @@
22 22
     "binary",
23 23
     "prime-factors",
24 24
     "raindrops",
25
-    "allergies"
25
+    "allergies",
26
+    "strain"
26 27
   ],
27 28
   "deprecated": [
28 29
   ],

+ 11
- 0
strain/build.gradle Zobrazit soubor

@@ -0,0 +1,11 @@
1
+apply plugin: "java"
2
+apply plugin: "eclipse"
3
+apply plugin: "idea"
4
+
5
+repositories {
6
+  mavenCentral()
7
+}
8
+
9
+dependencies {
10
+  testCompile "junit:junit:4.10"
11
+}

+ 16
- 0
strain/example.java Zobrazit soubor

@@ -0,0 +1,16 @@
1
+import java.util.Collection;
2
+import java.util.function.Predicate;
3
+import java.util.stream.Collectors;
4
+
5
+public class Strain {
6
+
7
+	public static <T> Collection<T> keep(Collection<T> coll, Predicate<T> func)
8
+	{
9
+		return coll.stream().filter(func).collect(Collectors.toList());
10
+	}
11
+	
12
+	public static <T> Collection<T> discard(Collection<T> coll, Predicate<T> func)
13
+	{
14
+		return coll.stream().filter(func.negate()).collect(Collectors.toList());
15
+	}
16
+}

+ 0
- 0
strain/src/main/java/.keep Zobrazit soubor


+ 2
- 0
strain/src/main/java/example.java Zobrazit soubor

@@ -0,0 +1,2 @@
1
+public class Strain {
2
+}

+ 123
- 0
strain/src/test/java/StrainTest.java Zobrazit soubor

@@ -0,0 +1,123 @@
1
+package strain;
2
+
3
+import java.util.Arrays;
4
+import java.util.LinkedList;
5
+import java.util.List;
6
+
7
+import org.junit.Assert;
8
+import org.junit.Test;
9
+
10
+public class StrainTest {
11
+
12
+	@Test
13
+	public void emptyKeep() {
14
+		List<Integer> expected = new LinkedList<>();
15
+		List<Integer> test = new LinkedList<>();
16
+		Assert.assertEquals(expected, Strain.keep(test, x -> x < 10));
17
+	}
18
+
19
+	@Test
20
+	public void keepEverything() {
21
+		List<Integer> expected = Arrays.asList(1, 2, 3);
22
+		List<Integer> test = Arrays.asList(1, 2, 3);
23
+		Assert.assertEquals(expected, Strain.keep(test, x -> x < 10));
24
+	}
25
+
26
+	@Test
27
+	public void keepFirstAndLast() {
28
+		List<Integer> expected = Arrays.asList(1, 3);
29
+		List<Integer> test = Arrays.asList(1, 2, 3);
30
+		Assert.assertEquals(expected, Strain.keep(test, x -> x % 2 != 0));
31
+	}
32
+
33
+	@Test
34
+	public void keepNeitherFirstNorLast() {
35
+		List<Integer> expected = Arrays.asList(2, 4);
36
+		List<Integer> test = Arrays.asList(1, 2, 3, 4, 5);
37
+		Assert.assertEquals(expected, Strain.keep(test, x -> x % 2 == 0));
38
+	}
39
+
40
+	@Test
41
+	public void KeepStrings() {
42
+		List<String> words = Arrays
43
+				.asList("apple zebra banana zombies cherimoya zelot".split(" "));
44
+		List<String> expected = Arrays.asList("zebra", "zombies", "zelot");
45
+		Assert.assertEquals(expected,
46
+				Strain.keep(words, x -> x.startsWith("z")));
47
+	}
48
+
49
+	@Test
50
+	public void KeepArrays() {
51
+		List<List<Integer>> actual = Arrays.asList(
52
+				Arrays.asList(1, 2, 3),
53
+				Arrays.asList(5, 5, 5), 
54
+				Arrays.asList(5, 1, 2),
55
+				Arrays.asList(2, 1, 2), 
56
+				Arrays.asList(1, 5, 2),
57
+				Arrays.asList(2, 2, 1), 
58
+				Arrays.asList(1, 2, 5));
59
+		List<List<Integer>> expected = Arrays.asList(
60
+				Arrays.asList(5, 5, 5),
61
+				Arrays.asList(5, 1, 2), 
62
+				Arrays.asList(1, 5, 2),
63
+				Arrays.asList(1, 2, 5));
64
+		Assert.assertEquals(expected,
65
+				Strain.keep(actual, col -> col.contains(5)));
66
+	}
67
+
68
+	@Test
69
+	public void emptyDiscard() {
70
+		List<Integer> expected = new LinkedList<>();
71
+		List<Integer> test = new LinkedList<>();
72
+		Assert.assertEquals(expected, Strain.discard(test, x -> x < 10));
73
+	}
74
+
75
+	@Test
76
+	public void discardNothing() {
77
+		List<Integer> expected = Arrays.asList(1, 2, 3);
78
+		List<Integer> test = Arrays.asList(1, 2, 3);
79
+		Assert.assertEquals(expected, Strain.discard(test, x -> x > 10));
80
+	}
81
+
82
+	@Test
83
+	public void discardFirstAndLast() {
84
+		List<Integer> expected = Arrays.asList(2);
85
+		List<Integer> test = Arrays.asList(1, 2, 3);
86
+		Assert.assertEquals(expected, Strain.discard(test, x -> x % 2 != 0));
87
+
88
+	}
89
+
90
+	@Test
91
+	public void discardNeitherFirstNorLast() {
92
+		List<Integer> expected = Arrays.asList(1, 3, 5);
93
+		List<Integer> test = Arrays.asList(1, 2, 3, 4, 5);
94
+		Assert.assertEquals(expected, Strain.discard(test, x -> x % 2 == 0));
95
+	}
96
+
97
+	@Test
98
+	public void discardStrings() {
99
+		List<String> words = Arrays
100
+				.asList("apple zebra banana zombies cherimoya zelot".split(" "));
101
+		List<String> expected = Arrays.asList("apple", "banana", "cherimoya");
102
+		Assert.assertEquals(expected,
103
+				Strain.discard(words, x -> x.startsWith("z")));
104
+	}
105
+
106
+	@Test
107
+	public void discardArrays() {
108
+		List<List<Integer>> actual = Arrays.asList(
109
+				Arrays.asList(1, 2, 3),
110
+				Arrays.asList(5, 5, 5),
111
+				Arrays.asList(5, 1, 2),
112
+				Arrays.asList(2, 1, 2),
113
+				Arrays.asList(1, 5, 2),
114
+				Arrays.asList(2, 2, 1),
115
+				Arrays.asList(1, 2, 5));
116
+		List<List<Integer>> expected = Arrays.asList(
117
+				Arrays.asList(1, 2, 3),
118
+				Arrays.asList(2, 1, 2),
119
+				Arrays.asList(2, 2, 1));
120
+		Assert.assertEquals(expected,
121
+				Strain.discard(actual, col -> col.contains(5)));
122
+	}
123
+}