diff options
Diffstat (limited to 'src/tests/matrix_test_ops.rs')
-rw-r--r-- | src/tests/matrix_test_ops.rs | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/src/tests/matrix_test_ops.rs b/src/tests/matrix_test_ops.rs new file mode 100644 index 0000000..fe8c40d --- /dev/null +++ b/src/tests/matrix_test_ops.rs @@ -0,0 +1,45 @@ +use std::str::FromStr; + +use crate::{matrix::Matrix, error::ParseMatrixError}; + +#[test] +pub fn test_matrix_add() -> Result<(), ParseMatrixError> { + let m1 = Matrix::from_str("1,2,3\n4,5,6\n7,8,9")?; + let m2 = Matrix::from_str("1,1,1\n1,1,1\n1,1,1")?; + let t = Matrix::from_str("2,3,4\n5,6,7\n8,9,10")?; + assert_eq!(&m1 + &m2, t); + Ok(()) +} +#[test] +pub fn test_matrix_determinate() -> Result<(), ParseMatrixError> { + let m = Matrix::from_str("3,4\n5,6")?; + let det = 3 * 6 - 4 * 5; + assert_eq!(m.determinant(), det); + Ok(()) +} +#[test] +pub fn test_matrix_transposition() -> Result<(), ParseMatrixError> { + let m = Matrix::from_str("1,2,3\n4,5,6\n7,8,9")?; + let t = Matrix::from_str("1,4,7\n2,5,8\n3,6,9")?; + assert_eq!(m.transpose(), t); + Ok(()) +} +#[test] +pub fn test_matrix_mul() -> Result<(), ParseMatrixError> { + let m1 = Matrix::from_str("1,2\n1,2")?; + let m2 = Matrix::from_str("1,3\n2,4")?; + let m3 = Matrix::from_str("1,2\n3,4")?; + let m4 = Matrix::from_str("1\n2")?; + let t1 = Matrix::from_str("5,11\n5,11")?; + let t2 = Matrix::from_str("5\n11")?; + assert_eq!(&m1 * &m2, t1); + assert_eq!(&m3 * &m4, t2); + Ok(()) +} +#[test] +#[should_panic] +pub fn test_matrix_add_bad_dimensions() -> () { + let bad = Matrix::from_str("1,1,1\n1,1,1").unwrap(); + let add = Matrix::from_str("1,1\n1,1").unwrap(); + let _ = &bad + &add; +} |