aboutsummaryrefslogtreecommitdiff
path: root/rust/etl/tests
diff options
context:
space:
mode:
Diffstat (limited to 'rust/etl/tests')
-rw-r--r--rust/etl/tests/etl.rs80
1 files changed, 80 insertions, 0 deletions
diff --git a/rust/etl/tests/etl.rs b/rust/etl/tests/etl.rs
new file mode 100644
index 0000000..e8e1e01
--- /dev/null
+++ b/rust/etl/tests/etl.rs
@@ -0,0 +1,80 @@
1use std::collections::BTreeMap;
2
3#[test]
4fn test_transform_one_value() {
5 let input = input_from(&[(1, vec!['A'])]);
6
7 let expected = expected_from(&[('a', 1)]);
8
9 assert_eq!(expected, etl::transform(&input));
10}
11
12#[test]
13fn test_transform_more_values() {
14 let input = input_from(&[(1, vec!['A', 'E', 'I', 'O', 'U'])]);
15
16 let expected = expected_from(&[('a', 1), ('e', 1), ('i', 1), ('o', 1), ('u', 1)]);
17
18 assert_eq!(expected, etl::transform(&input));
19}
20
21#[test]
22fn test_more_keys() {
23 let input = input_from(&[(1, vec!['A', 'E']), (2, vec!['D', 'G'])]);
24
25 let expected = expected_from(&[('a', 1), ('e', 1), ('d', 2), ('g', 2)]);
26
27 assert_eq!(expected, etl::transform(&input));
28}
29
30#[test]
31fn test_full_dataset() {
32 let input = input_from(&[
33 (1, vec!['A', 'E', 'I', 'O', 'U', 'L', 'N', 'R', 'S', 'T']),
34 (2, vec!['D', 'G']),
35 (3, vec!['B', 'C', 'M', 'P']),
36 (4, vec!['F', 'H', 'V', 'W', 'Y']),
37 (5, vec!['K']),
38 (8, vec!['J', 'X']),
39 (10, vec!['Q', 'Z']),
40 ]);
41
42 let expected = expected_from(&[
43 ('a', 1),
44 ('b', 3),
45 ('c', 3),
46 ('d', 2),
47 ('e', 1),
48 ('f', 4),
49 ('g', 2),
50 ('h', 4),
51 ('i', 1),
52 ('j', 8),
53 ('k', 5),
54 ('l', 1),
55 ('m', 3),
56 ('n', 1),
57 ('o', 1),
58 ('p', 3),
59 ('q', 10),
60 ('r', 1),
61 ('s', 1),
62 ('t', 1),
63 ('u', 1),
64 ('v', 4),
65 ('w', 4),
66 ('x', 8),
67 ('y', 4),
68 ('z', 10),
69 ]);
70
71 assert_eq!(expected, etl::transform(&input));
72}
73
74fn input_from(v: &[(i32, Vec<char>)]) -> BTreeMap<i32, Vec<char>> {
75 v.iter().cloned().collect()
76}
77
78fn expected_from(v: &[(char, i32)]) -> BTreeMap<char, i32> {
79 v.iter().cloned().collect()
80}