aboutsummaryrefslogtreecommitdiff
path: root/rust/saddle-points/tests
diff options
context:
space:
mode:
Diffstat (limited to 'rust/saddle-points/tests')
-rw-r--r--rust/saddle-points/tests/saddle-points.rs98
1 files changed, 98 insertions, 0 deletions
diff --git a/rust/saddle-points/tests/saddle-points.rs b/rust/saddle-points/tests/saddle-points.rs
new file mode 100644
index 0000000..1fbc2de
--- /dev/null
+++ b/rust/saddle-points/tests/saddle-points.rs
@@ -0,0 +1,98 @@
1use saddle_points;
2
3use saddle_points::find_saddle_points;
4
5// We don't care about order
6fn find_sorted_saddle_points(input: &[Vec<u64>]) -> Vec<(usize, usize)> {
7 let mut result = saddle_points::find_saddle_points(input);
8 result.sort();
9 result
10}
11
12#[test]
13fn identify_single_saddle_point() {
14 let input = vec![vec![9, 8, 7], vec![5, 3, 2], vec![6, 6, 7]];
15 assert_eq!(vec![(1, 0)], find_saddle_points(&input));
16}
17
18#[test]
19fn identify_empty_matrix() {
20 let input = vec![vec![], vec![], vec![]];
21 let expected: Vec<(usize, usize)> = Vec::new();
22 assert_eq!(expected, find_saddle_points(&input));
23}
24
25#[test]
26fn identify_lack_of_saddle_point() {
27 let input = vec![vec![1, 2, 3], vec![3, 1, 2], vec![2, 3, 1]];
28 let expected: Vec<(usize, usize)> = Vec::new();
29 assert_eq!(expected, find_saddle_points(&input));
30}
31
32#[test]
33fn multiple_saddle_points_in_col() {
34 let input = vec![vec![4, 5, 4], vec![3, 5, 5], vec![1, 5, 4]];
35 assert_eq!(
36 vec![(0, 1), (1, 1), (2, 1)],
37 find_sorted_saddle_points(&input)
38 );
39}
40
41#[test]
42fn multiple_saddle_points_in_row() {
43 let input = vec![vec![6, 7, 8], vec![5, 5, 5], vec![7, 5, 6]];
44 assert_eq!(
45 vec![(1, 0), (1, 1), (1, 2)],
46 find_sorted_saddle_points(&input)
47 );
48}
49
50#[test]
51fn identify_bottom_right_saddle_point() {
52 let input = vec![vec![8, 7, 9], vec![6, 7, 6], vec![3, 2, 5]];
53 assert_eq!(vec![(2, 2)], find_saddle_points(&input));
54}
55
56// track specific as of v1.3
57#[test]
58fn non_square_matrix_high() {
59 let input = vec![vec![1, 5], vec![3, 6], vec![2, 7], vec![3, 8]];
60 assert_eq!(vec![(0, 1)], find_saddle_points(&input));
61}
62
63#[test]
64fn non_square_matrix_wide() {
65 let input = vec![vec![3, 1, 3], vec![3, 2, 4]];
66 assert_eq!(vec![(0, 0), (0, 2)], find_sorted_saddle_points(&input));
67}
68
69#[test]
70fn single_column_matrix() {
71 let input = vec![vec![2], vec![1], vec![4], vec![1]];
72 assert_eq!(vec![(1, 0), (3, 0)], find_sorted_saddle_points(&input));
73}
74
75#[test]
76fn single_row_matrix() {
77 let input = vec![vec![2, 5, 3, 5]];
78 assert_eq!(vec![(0, 1), (0, 3)], find_sorted_saddle_points(&input));
79}
80
81#[test]
82fn identify_all_saddle_points() {
83 let input = vec![vec![5, 5, 5], vec![5, 5, 5], vec![5, 5, 5]];
84 assert_eq!(
85 vec![
86 (0, 0),
87 (0, 1),
88 (0, 2),
89 (1, 0),
90 (1, 1),
91 (1, 2),
92 (2, 0),
93 (2, 1),
94 (2, 2)
95 ],
96 find_sorted_saddle_points(&input)
97 );
98}