aboutsummaryrefslogtreecommitdiff
path: root/rust/sublist/tests
diff options
context:
space:
mode:
authorFederico Igne <git@federicoigne.com>2022-07-13 11:31:40 +0100
committerFederico Igne <git@federicoigne.com>2022-07-13 11:31:40 +0100
commit17bf45b273913a24a72caa964ee16a4fe84c6ec6 (patch)
tree32346bc91982a1f14eaee0f5ff80bd6043d9dcee /rust/sublist/tests
parent438d66b1783918c18d1df76c419e31cc98f5fb85 (diff)
downloadexercism-17bf45b273913a24a72caa964ee16a4fe84c6ec6.tar.gz
exercism-17bf45b273913a24a72caa964ee16a4fe84c6ec6.zip
[rust] Sublist
Diffstat (limited to 'rust/sublist/tests')
-rw-r--r--rust/sublist/tests/sublist.rs110
1 files changed, 110 insertions, 0 deletions
diff --git a/rust/sublist/tests/sublist.rs b/rust/sublist/tests/sublist.rs
new file mode 100644
index 0000000..38c8a4b
--- /dev/null
+++ b/rust/sublist/tests/sublist.rs
@@ -0,0 +1,110 @@
1use sublist::{sublist, Comparison};
2
3#[test]
4fn empty_equals_empty() {
5 let v: &[u32] = &[];
6
7 assert_eq!(Comparison::Equal, sublist(v, v));
8}
9
10#[test]
11fn test_empty_is_a_sublist_of_anything() {
12 assert_eq!(Comparison::Sublist, sublist(&[], &['a', 's', 'd', 'f']));
13}
14
15#[test]
16fn test_anything_is_a_superlist_of_empty() {
17 assert_eq!(Comparison::Superlist, sublist(&['a', 's', 'd', 'f'], &[]));
18}
19
20#[test]
21fn test_1_is_not_2() {
22 assert_eq!(Comparison::Unequal, sublist(&[1], &[2]));
23}
24
25#[test]
26fn test_compare_larger_equal_lists() {
27 use std::iter::repeat;
28
29 let v: Vec<char> = repeat('x').take(1000).collect();
30
31 assert_eq!(Comparison::Equal, sublist(&v, &v));
32}
33
34#[test]
35fn test_sublist_at_start() {
36 assert_eq!(Comparison::Sublist, sublist(&[1, 2, 3], &[1, 2, 3, 4, 5]));
37}
38
39#[test]
40fn sublist_in_middle() {
41 assert_eq!(Comparison::Sublist, sublist(&[4, 3, 2], &[5, 4, 3, 2, 1]));
42}
43
44#[test]
45fn sublist_at_end() {
46 assert_eq!(Comparison::Sublist, sublist(&[3, 4, 5], &[1, 2, 3, 4, 5]));
47}
48
49#[test]
50fn partially_matching_sublist_at_start() {
51 assert_eq!(Comparison::Sublist, sublist(&[1, 1, 2], &[1, 1, 1, 2]));
52}
53
54#[test]
55fn sublist_early_in_huge_list() {
56 let huge: Vec<u32> = (1..1_000_000).collect();
57
58 assert_eq!(Comparison::Sublist, sublist(&[3, 4, 5], &huge));
59}
60
61#[test]
62fn huge_sublist_not_in_huge_list() {
63 let v1: Vec<u64> = (10..1_000_001).collect();
64 let v2: Vec<u64> = (1..1_000_000).collect();
65
66 assert_eq!(Comparison::Unequal, sublist(&v1, &v2));
67}
68
69#[test]
70fn superlist_at_start() {
71 assert_eq!(Comparison::Superlist, sublist(&[1, 2, 3, 4, 5], &[1, 2, 3]));
72}
73
74#[test]
75fn superlist_in_middle() {
76 assert_eq!(Comparison::Superlist, sublist(&[5, 4, 3, 2, 1], &[4, 3, 2]));
77}
78
79#[test]
80fn superlist_at_end() {
81 assert_eq!(Comparison::Superlist, sublist(&[1, 2, 3, 4, 5], &[3, 4, 5]));
82}
83
84#[test]
85fn second_list_missing_element_from_first_list() {
86 assert_eq!(Comparison::Unequal, sublist(&[1, 2, 3], &[1, 3]));
87}
88
89#[test]
90fn superlist_early_in_huge_list() {
91 let huge: Vec<u32> = (1..1_000_000).collect();
92
93 assert_eq!(Comparison::Superlist, sublist(&huge, &[3, 4, 5]));
94}
95
96#[test]
97fn recurring_values_sublist() {
98 assert_eq!(
99 Comparison::Sublist,
100 sublist(&[1, 2, 1, 2, 3], &[1, 2, 3, 1, 2, 1, 2, 3, 2, 1])
101 );
102}
103
104#[test]
105fn recurring_values_unequal() {
106 assert_eq!(
107 Comparison::Unequal,
108 sublist(&[1, 2, 1, 2, 3], &[1, 2, 3, 1, 2, 3, 2, 3, 2, 1])
109 );
110}