From 2ef0e479ef081402dca12f0b6bafe649ba383ac8 Mon Sep 17 00:00:00 2001 From: laentropia Date: Wed, 29 Apr 2026 15:50:22 -0600 Subject: [PATCH] test: tests for get_row --- src/lib.rs | 97 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) diff --git a/src/lib.rs b/src/lib.rs index 86a166b..9d6b791 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -696,4 +696,101 @@ mod tests { } } } + + #[test] + fn test_get_row_valid() { + let m = Matrix { + rows: 3, + columns: 3, + data: vec![ + Fraction::from(1), + Fraction::from(2), + Fraction::from(3), + Fraction::from(4), + Fraction::from(5), + Fraction::from(6), + Fraction::from(7), + Fraction::from(8), + Fraction::from(9), + ], + }; + + let row: Vec = m.get_row(1).unwrap().cloned().collect(); + + assert_eq!( + row, + vec![Fraction::from(4), Fraction::from(5), Fraction::from(6)] + ); + } + + #[test] + fn test_get_first_row() { + let m = Matrix::new(2, 3, Fraction::from(10)).unwrap(); + + let row: Vec = m.get_row(0).unwrap().cloned().collect(); + + assert_eq!(row, vec![Fraction::from(10); 3]); + } + + #[test] + fn test_get_last_row() { + let m = Matrix { + rows: 2, + columns: 2, + data: vec![ + Fraction::from(1), + Fraction::from(2), + Fraction::from(3), + Fraction::from(4), + ], + }; + + let row: Vec = m.get_row(1).unwrap().cloned().collect(); + + assert_eq!(row, vec![Fraction::from(3), Fraction::from(4)]); + } + + #[test] + fn test_get_row_out_of_bounds() { + let m = Matrix::new(2, 2, Fraction::from(0)).unwrap(); + + let result = m.get_row(2); + + assert!(result.is_err()); + assert!(matches!(result, Err(MatrixError::RowOutOfRange))); + } + + #[test] + fn test_get_row_length() { + let m = Matrix::new(4, 5, Fraction::from(1)).unwrap(); + + let row: Vec = m.get_row(3).unwrap().cloned().collect(); + + assert_eq!(row.len(), 5); + } + + #[test] + fn test_get_row_iterator_multiple_times() { + let m = Matrix::new(2, 3, Fraction::from(7)).unwrap(); + + let iter1: Vec = m.get_row(0).unwrap().cloned().collect(); + let iter2: Vec = m.get_row(0).unwrap().cloned().collect(); + + assert_eq!(iter1, iter2); + } + + #[test] + fn test_get_row_matches_get() { + let m = Matrix { + rows: 3, + columns: 3, + data: (0..9).map(|x| Fraction::from(x)).collect(), + }; + + let row = m.get_row(2).unwrap(); + + for (col, val) in row.enumerate() { + assert_eq!(*val, *m.get(2, col).unwrap()); + } + } }