From b376e3018abd60e9eafaea0a865a44fb01b5c9d2 Mon Sep 17 00:00:00 2001 From: laentropia Date: Wed, 29 Apr 2026 15:38:47 -0600 Subject: [PATCH] test: test for new --- src/lib.rs | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/src/lib.rs b/src/lib.rs index 3bc13eb..d3f9743 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -537,4 +537,62 @@ impl Display for Matrix { #[cfg(test)] mod tests { use super::*; + + #[test] + fn test_new_valid_matrix() { + let m = Matrix::new(2, 3, Fraction::from(1i64)).unwrap(); + + assert_eq!(m.rows, 2); + assert_eq!(m.columns, 3); + assert_eq!(m.data.len(), 6); + + for val in m.data { + assert_eq!(val, Fraction::from(1i64)); + } + } + + #[test] + fn test_new_single_element() { + let m = Matrix::new(1, 1, Fraction::from(5i64)).unwrap(); + + assert_eq!(m.rows, 1); + assert_eq!(m.columns, 1); + assert_eq!(m.data.len(), 1); + assert_eq!(m.data[0], Fraction::from(5i64)); + } + + #[test] + fn test_new_zero_rows() { + let result = Matrix::new(0, 3, Fraction::from(0i64)); + + assert!(result.is_err()); + assert_eq!(result.unwrap_err(), MatrixError::ZeroSize); + } + + #[test] + fn test_new_zero_columns() { + let result = Matrix::new(3, 0, Fraction::from(0i64)); + + assert!(result.is_err()); + assert_eq!(result.unwrap_err(), MatrixError::ZeroSize); + } + + #[test] + fn test_new_large_matrix() { + let m = Matrix::new(100, 100, Fraction::from(2i64)).unwrap(); + + assert_eq!(m.data.len(), 10000); + assert!(m.data.iter().all(|x| *x == Fraction::from(2i64))); + } + + #[test] + fn test_new_independent_data() { + let m1 = Matrix::new(2, 2, Fraction::from(1i64)).unwrap(); + let mut m2 = Matrix::new(2, 2, Fraction::from(1i64)).unwrap(); + + // modificar uno no debe afectar al otro + m2.data[0] = Fraction::from(99i64); + + assert_ne!(m1.data[0], m2.data[0]); + } }