Pārlūkot izejas kodu

java: etl tests and example implementation

Use Guava in the tests to make it easier to build up
maps needed for testing the API.
Emil Sit 12 gadus atpakaļ
vecāks
revīzija
e53508827a

+ 2
- 0
assignments/java/etl/build.gradle Parādīt failu

@@ -8,4 +8,6 @@ repositories {
8 8
 
9 9
 dependencies {
10 10
   testCompile "junit:junit:4.10"
11
+  testCompile "org.easytesting:fest-assert-core:2.0M10"
12
+  testCompile "com.google.guava:guava:16+"
11 13
 }

+ 15
- 0
assignments/java/etl/example.java Parādīt failu

@@ -0,0 +1,15 @@
1
+import java.util.HashMap;
2
+import java.util.List;
3
+import java.util.Map;
4
+
5
+public class Etl {
6
+    public Map<String, Integer> transform(Map<Integer, List<String>> old) {
7
+        final Map<String, Integer> result = new HashMap<String, Integer>();
8
+        for (Map.Entry<Integer, List<String>> e : old.entrySet()) {
9
+            for (String s : e.getValue()) {
10
+                result.put(s.toLowerCase(), e.getKey());
11
+            }
12
+        }
13
+        return result;
14
+    }
15
+}

+ 74
- 0
assignments/java/etl/src/test/java/EtlTest.java Parādīt failu

@@ -0,0 +1,74 @@
1
+import com.google.common.collect.ImmutableMap;
2
+import org.junit.Test;
3
+
4
+import java.util.Arrays;
5
+import java.util.List;
6
+import java.util.Map;
7
+
8
+import static org.fest.assertions.api.Assertions.assertThat;
9
+
10
+public class EtlTest {
11
+    private final Etl etl = new Etl();
12
+
13
+    @Test
14
+    public void testTransformOneValue() {
15
+        Map<Integer, List<String>> old = ImmutableMap.of(1, Arrays.asList("A"));
16
+        Map<String, Integer> expected = ImmutableMap.of("a", 1);
17
+
18
+        assertThat(etl.transform(old)).isEqualTo(expected);
19
+    }
20
+
21
+    @Test
22
+    public void testTransformMoreValues() {
23
+        Map<Integer, List<String>> old = ImmutableMap.of(
24
+                1, Arrays.asList("A", "E", "I", "O", "U")
25
+        );
26
+        Map<String, Integer> expected = ImmutableMap.of(
27
+                "a", 1,
28
+                "e", 1,
29
+                "i", 1,
30
+                "o", 1,
31
+                "u", 1
32
+        );
33
+
34
+        assertThat(etl.transform(old)).isEqualTo(expected);
35
+    }
36
+
37
+    @Test
38
+    public void testMoreKeys() {
39
+        Map<Integer, List<String>> old = ImmutableMap.of(
40
+                1, Arrays.asList("A", "E"),
41
+                2, Arrays.asList("D", "G")
42
+        );
43
+        Map<String, Integer> expected = ImmutableMap.of(
44
+                "a", 1,
45
+                "e", 1,
46
+                "d", 2,
47
+                "g", 2
48
+        );
49
+
50
+        assertThat(etl.transform(old)).isEqualTo(expected);
51
+    }
52
+
53
+    @Test
54
+    public void testFullDataset() {
55
+        Map<Integer, List<String>> old = ImmutableMap.<Integer, List<String>>builder().
56
+                put(1, Arrays.asList("A", "E", "I", "O", "U", "L", "N", "R", "S", "T")).
57
+                put(2, Arrays.asList("D", "G")).
58
+                put(3, Arrays.asList("B", "C", "M", "P")).
59
+                put(4, Arrays.asList("F", "H", "V", "W", "Y")).
60
+                put(5, Arrays.asList("K")).
61
+                put(8, Arrays.asList("J", "X")).
62
+                put(10, Arrays.asList("Q", "Z")).
63
+                build();
64
+        Map<String, Integer> expected = ImmutableMap.<String, Integer>builder().
65
+                put("a", 1).put("b", 3).put("c", 3).put("d", 2).put("e", 1).
66
+                put("f", 4).put("g", 2).put("h", 4).put("i", 1).put("j", 8).
67
+                put("k", 5).put("l", 1).put("m", 3).put("n", 1).put("o", 1).
68
+                put("p", 3).put("q", 10).put("r", 1).put("s", 1).put("t", 1).
69
+                put("u", 1).put("v", 4).put("w", 4).put("x", 8).put("y", 4).
70
+                put("z", 10).build();
71
+
72
+        assertThat(etl.transform(old)).isEqualTo(expected);
73
+    }
74
+}