summaryrefslogtreecommitdiff
path: root/src/tests
diff options
context:
space:
mode:
Diffstat (limited to 'src/tests')
-rw-r--r--src/tests/matrix_test_ops.rs56
-rw-r--r--src/tests/matrix_test_parse.rs2
2 files changed, 51 insertions, 7 deletions
diff --git a/src/tests/matrix_test_ops.rs b/src/tests/matrix_test_ops.rs
index e207c3e..2737ac4 100644
--- a/src/tests/matrix_test_ops.rs
+++ b/src/tests/matrix_test_ops.rs
@@ -2,23 +2,67 @@ use std::str::FromStr;
use crate::{error::ParseMatrixError, matrix::Matrix, MatrixMath};
+enum TestCaseType {
+ Add,
+ Mul,
+ Inv,
+ CmpErr,
+}
+
+struct TestCase {
+ test_type: TestCaseType,
+ test_data: Vec<Matrix>,
+}
+fn build_add_test_cases() -> Vec<TestCase> {
+ let mut v = vec![];
+ let from_strs = vec![
+ "1,2,3\n4,5,6\n7,8,9",
+ "1,1,1\n1,1,1\n1,1,1",
+ "2,3,4\n5,6,7\n8,9,10",
+
+
+ "1,1,1\n1,1,1\n1,1,1",
+ "0,0,0\n0,0,0\n0,0,0",
+ "1,1,1\n1,1,1\n1,1,1",
+ ];
+ let mut i = 0;
+ while i < from_strs.len() {
+ let m1 = Matrix::from_str(from_strs[i]).unwrap();
+ let m2 = Matrix::from_str(from_strs[i+1]).unwrap();
+ let mr = Matrix::from_str(from_strs[i+2]).unwrap();
+ v.push(TestCase {
+ test_type: TestCaseType::Add,
+ test_data: vec![m1, m2, mr],
+ });
+ i += 3;
+ }
+ v
+}
#[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);
+ let cases = build_add_test_cases();
+ for case in cases {
+ assert_eq!(&case.test_data[0] + &case.test_data[1], case.test_data[2]);
+ }
Ok(())
}
#[test]
pub fn test_matrix_determinate() -> Result<(), ParseMatrixError> {
let m = Matrix::from_str("3,4\n5,6")?;
- let det = 3 * 6 - 4 * 5;
+ let det = 3.0 * 6.0 - 4.0 * 5.0;
assert_eq!(m.determinant(), det);
Ok(())
}
#[test]
-pub fn test_matrix_transposition() -> Result<(), ParseMatrixError> {
+pub fn test_matrix_inverse_on_singular() -> Result<(), ()> {
+ let m = Matrix::new(vec![vec![1.0,2.0,3.0], vec![4.0,5.0,6.0], vec![7.0,8.0,9.0]]);
+ match m.inverse() {
+ Some(_inverse) => Err(()),
+ None => Ok(()),
+ }
+}
+#[test]
+pub fn test_matrix_transpose() -> 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);
diff --git a/src/tests/matrix_test_parse.rs b/src/tests/matrix_test_parse.rs
index a31851a..771eea7 100644
--- a/src/tests/matrix_test_parse.rs
+++ b/src/tests/matrix_test_parse.rs
@@ -4,7 +4,7 @@ use crate::{matrix::Matrix, error::ParseMatrixError};
#[test]
pub fn test_matrix_init_from_string() -> Result<(), ParseMatrixError> {
- let data_target = vec![vec![1, 2, 3], vec![4, 5, 6], vec![7, 8, 9]];
+ let data_target = vec![vec![1.0, 2.0, 3.0], vec![4.0, 5.0, 6.0], vec![7.0, 8.0, 9.0]];
let target = Matrix::new(data_target);
let test = Matrix::from_str("1,2,3\n4,5,6\n7,8,9")?;
assert_eq!(target, test);