Bug 1870642 - Fix Collection deleted snackbar that overlaps the toolbar r=android...
[gecko.git] / third_party / rust / smawk / tests / monge.rs
blob67058a75a504893e2bf83220d8458a0a8b3bcb5d
1 #![cfg(feature = "ndarray")]
3 use ndarray::{arr2, Array, Array2};
4 use rand::SeedableRng;
5 use rand_chacha::ChaCha20Rng;
6 use smawk::monge::is_monge;
8 mod random_monge;
9 use random_monge::{random_monge_matrix, MongePrim};
11 #[test]
12 fn random_monge() {
13     let mut rng = ChaCha20Rng::seed_from_u64(0);
14     let matrix: Array2<u8> = random_monge_matrix(5, 5, &mut rng);
16     assert!(is_monge(&matrix));
17     assert_eq!(
18         matrix,
19         arr2(&[
20             [2, 3, 4, 4, 5],
21             [5, 5, 6, 6, 7],
22             [3, 3, 4, 4, 5],
23             [5, 2, 3, 3, 4],
24             [5, 2, 3, 3, 4]
25         ])
26     );
29 #[test]
30 fn monge_constant_rows() {
31     let mut rng = ChaCha20Rng::seed_from_u64(0);
32     let matrix: Array2<u8> = MongePrim::ConstantRows.to_matrix(5, 4, &mut rng);
33     assert!(is_monge(&matrix));
34     for row in matrix.rows() {
35         let elem = row[0];
36         assert_eq!(row, Array::from_elem(matrix.ncols(), elem));
37     }
40 #[test]
41 fn monge_constant_cols() {
42     let mut rng = ChaCha20Rng::seed_from_u64(0);
43     let matrix: Array2<u8> = MongePrim::ConstantCols.to_matrix(5, 4, &mut rng);
44     assert!(is_monge(&matrix));
45     for column in matrix.columns() {
46         let elem = column[0];
47         assert_eq!(column, Array::from_elem(matrix.nrows(), elem));
48     }
51 #[test]
52 fn monge_upper_right_ones() {
53     let mut rng = ChaCha20Rng::seed_from_u64(1);
54     let matrix: Array2<u8> = MongePrim::UpperRightOnes.to_matrix(5, 4, &mut rng);
55     assert!(is_monge(&matrix));
56     assert_eq!(
57         matrix,
58         arr2(&[
59             [0, 0, 1, 1],
60             [0, 0, 1, 1],
61             [0, 0, 1, 1],
62             [0, 0, 0, 0],
63             [0, 0, 0, 0]
64         ])
65     );
68 #[test]
69 fn monge_lower_left_ones() {
70     let mut rng = ChaCha20Rng::seed_from_u64(1);
71     let matrix: Array2<u8> = MongePrim::LowerLeftOnes.to_matrix(5, 4, &mut rng);
72     assert!(is_monge(&matrix));
73     assert_eq!(
74         matrix,
75         arr2(&[
76             [0, 0, 0, 0],
77             [0, 0, 0, 0],
78             [1, 1, 0, 0],
79             [1, 1, 0, 0],
80             [1, 1, 0, 0]
81         ])
82     );