From 1b6a04ca5504955c571d1c97504fb45ea0befee4 Mon Sep 17 00:00:00 2001
From: Valentin Popov <valentin@popov.link>
Date: Mon, 8 Jan 2024 01:21:28 +0400
Subject: Initial vendor packages

Signed-off-by: Valentin Popov <valentin@popov.link>
---
 vendor/smawk/tests/monge.rs | 83 +++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 83 insertions(+)
 create mode 100644 vendor/smawk/tests/monge.rs

(limited to 'vendor/smawk/tests/monge.rs')

diff --git a/vendor/smawk/tests/monge.rs b/vendor/smawk/tests/monge.rs
new file mode 100644
index 0000000..67058a7
--- /dev/null
+++ b/vendor/smawk/tests/monge.rs
@@ -0,0 +1,83 @@
+#![cfg(feature = "ndarray")]
+
+use ndarray::{arr2, Array, Array2};
+use rand::SeedableRng;
+use rand_chacha::ChaCha20Rng;
+use smawk::monge::is_monge;
+
+mod random_monge;
+use random_monge::{random_monge_matrix, MongePrim};
+
+#[test]
+fn random_monge() {
+    let mut rng = ChaCha20Rng::seed_from_u64(0);
+    let matrix: Array2<u8> = random_monge_matrix(5, 5, &mut rng);
+
+    assert!(is_monge(&matrix));
+    assert_eq!(
+        matrix,
+        arr2(&[
+            [2, 3, 4, 4, 5],
+            [5, 5, 6, 6, 7],
+            [3, 3, 4, 4, 5],
+            [5, 2, 3, 3, 4],
+            [5, 2, 3, 3, 4]
+        ])
+    );
+}
+
+#[test]
+fn monge_constant_rows() {
+    let mut rng = ChaCha20Rng::seed_from_u64(0);
+    let matrix: Array2<u8> = MongePrim::ConstantRows.to_matrix(5, 4, &mut rng);
+    assert!(is_monge(&matrix));
+    for row in matrix.rows() {
+        let elem = row[0];
+        assert_eq!(row, Array::from_elem(matrix.ncols(), elem));
+    }
+}
+
+#[test]
+fn monge_constant_cols() {
+    let mut rng = ChaCha20Rng::seed_from_u64(0);
+    let matrix: Array2<u8> = MongePrim::ConstantCols.to_matrix(5, 4, &mut rng);
+    assert!(is_monge(&matrix));
+    for column in matrix.columns() {
+        let elem = column[0];
+        assert_eq!(column, Array::from_elem(matrix.nrows(), elem));
+    }
+}
+
+#[test]
+fn monge_upper_right_ones() {
+    let mut rng = ChaCha20Rng::seed_from_u64(1);
+    let matrix: Array2<u8> = MongePrim::UpperRightOnes.to_matrix(5, 4, &mut rng);
+    assert!(is_monge(&matrix));
+    assert_eq!(
+        matrix,
+        arr2(&[
+            [0, 0, 1, 1],
+            [0, 0, 1, 1],
+            [0, 0, 1, 1],
+            [0, 0, 0, 0],
+            [0, 0, 0, 0]
+        ])
+    );
+}
+
+#[test]
+fn monge_lower_left_ones() {
+    let mut rng = ChaCha20Rng::seed_from_u64(1);
+    let matrix: Array2<u8> = MongePrim::LowerLeftOnes.to_matrix(5, 4, &mut rng);
+    assert!(is_monge(&matrix));
+    assert_eq!(
+        matrix,
+        arr2(&[
+            [0, 0, 0, 0],
+            [0, 0, 0, 0],
+            [1, 1, 0, 0],
+            [1, 1, 0, 0],
+            [1, 1, 0, 0]
+        ])
+    );
+}
-- 
cgit v1.2.3