1 #![cfg(feature = "ndarray")]
3 use ndarray::{arr2, Array, Array2};
5 use rand_chacha::ChaCha20Rng;
6 use smawk::monge::is_monge;
9 use random_monge::{random_monge_matrix, MongePrim};
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));
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() {
36 assert_eq!(row, Array::from_elem(matrix.ncols(), elem));
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() {
47 assert_eq!(column, Array::from_elem(matrix.nrows(), elem));
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));
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));