From 11fd2671d7021f0672a89f9ea20ec42643e693bf Mon Sep 17 00:00:00 2001 From: Federico Igne Date: Mon, 28 Dec 2020 09:42:59 +0000 Subject: [rust] ETL --- rust/etl/tests/etl.rs | 80 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 rust/etl/tests/etl.rs (limited to 'rust/etl/tests') 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 @@ +use std::collections::BTreeMap; + +#[test] +fn test_transform_one_value() { + let input = input_from(&[(1, vec!['A'])]); + + let expected = expected_from(&[('a', 1)]); + + assert_eq!(expected, etl::transform(&input)); +} + +#[test] +fn test_transform_more_values() { + let input = input_from(&[(1, vec!['A', 'E', 'I', 'O', 'U'])]); + + let expected = expected_from(&[('a', 1), ('e', 1), ('i', 1), ('o', 1), ('u', 1)]); + + assert_eq!(expected, etl::transform(&input)); +} + +#[test] +fn test_more_keys() { + let input = input_from(&[(1, vec!['A', 'E']), (2, vec!['D', 'G'])]); + + let expected = expected_from(&[('a', 1), ('e', 1), ('d', 2), ('g', 2)]); + + assert_eq!(expected, etl::transform(&input)); +} + +#[test] +fn test_full_dataset() { + let input = input_from(&[ + (1, vec!['A', 'E', 'I', 'O', 'U', 'L', 'N', 'R', 'S', 'T']), + (2, vec!['D', 'G']), + (3, vec!['B', 'C', 'M', 'P']), + (4, vec!['F', 'H', 'V', 'W', 'Y']), + (5, vec!['K']), + (8, vec!['J', 'X']), + (10, vec!['Q', 'Z']), + ]); + + let expected = expected_from(&[ + ('a', 1), + ('b', 3), + ('c', 3), + ('d', 2), + ('e', 1), + ('f', 4), + ('g', 2), + ('h', 4), + ('i', 1), + ('j', 8), + ('k', 5), + ('l', 1), + ('m', 3), + ('n', 1), + ('o', 1), + ('p', 3), + ('q', 10), + ('r', 1), + ('s', 1), + ('t', 1), + ('u', 1), + ('v', 4), + ('w', 4), + ('x', 8), + ('y', 4), + ('z', 10), + ]); + + assert_eq!(expected, etl::transform(&input)); +} + +fn input_from(v: &[(i32, Vec)]) -> BTreeMap> { + v.iter().cloned().collect() +} + +fn expected_from(v: &[(char, i32)]) -> BTreeMap { + v.iter().cloned().collect() +} -- cgit v1.2.3