// // matrix_helper_test.cpp // matrix // // Created by Sam Jaffe on 6/3/18. // #include #include "matrix_helpers.hpp" template using vec = math::vector::vector; TEST(MatrixHelper, IdentityFunctionProducesOnes) { auto iden = math::matrix::identity(); VECTOR_FOR_EACH_RANGE(i, 4) { EXPECT_THAT(iden.at(i, i), 1.0); } MATRIX_FOR_EACH_RANGE(i, 4, j, 4) { EXPECT_TRUE(i == j || iden.at(i, j) == 0); } } TEST(MatrixHelper, DiagonalWillFillWithAllZeros) { vec<4> const vector({1.5, 0.5, -1.0, 2.2}); auto diag = math::matrix::diagonal(vector); VECTOR_FOR_EACH_RANGE(i, 4) { EXPECT_THAT(diag.at(i, i), vector.at(i)); } MATRIX_FOR_EACH_RANGE(i, 4, j, 4) { EXPECT_TRUE(i == j || diag.at(i, j) == 0); } } TEST(MatrixHelper, ScalarMatrixPiecewiseStretchesVector) { vec<3> const vector({1.5, 0.5, -1.0}); vec<3> const x({2.0, 3.8, 11.0}); auto const A = math::matrix::scalar(vector); EXPECT_THAT(A*x, vec<3>({3.0, 1.9, -11.0})); }