|
|
@@ -7,19 +7,17 @@
|
|
|
|
|
|
#include <gmock/gmock.h>
|
|
|
|
|
|
-#include "matrix.hpp"
|
|
|
+#include "math/matrix/matrix.hpp"
|
|
|
|
|
|
using matr2i = math::matrix::matrix<int, 2, 2>;
|
|
|
using matr2 = math::matrix::matrix<double, 2, 2>;
|
|
|
|
|
|
-matr2i identity2i() { return matr2i({{{1,0},{0,1}}}); }
|
|
|
-matr2 identity2() { return matr2({{{1,0},{0,1}}}); }
|
|
|
+matr2i identity2i() { return matr2i({{{1, 0}, {0, 1}}}); }
|
|
|
+matr2 identity2() { return matr2({{{1, 0}, {0, 1}}}); }
|
|
|
|
|
|
TEST(Matrix, Equality) {
|
|
|
- EXPECT_THAT(identity2i(),
|
|
|
- matr2i({{{1,0},{0,1}}}));
|
|
|
- EXPECT_THAT(identity2i(),
|
|
|
- ::testing::Not(matr2i({{{0,1},{0,1}}})));
|
|
|
+ EXPECT_THAT(identity2i(), matr2i({{{1, 0}, {0, 1}}}));
|
|
|
+ EXPECT_THAT(identity2i(), ::testing::Not(matr2i({{{0, 1}, {0, 1}}})));
|
|
|
}
|
|
|
|
|
|
TEST(Matrix, AtRowBeyondBoundaryThrowsException) {
|
|
|
@@ -56,52 +54,50 @@ TEST(Matrix, ConstAtColumnBeyondBoundaryThrowsException) {
|
|
|
|
|
|
TEST(Matrix, TransposeOfSquareMatrixRotatesAroundDiagonal) {
|
|
|
matr2i mat({{{1, 1}, {2, 2}}});
|
|
|
- EXPECT_THAT(mat.transpose(),
|
|
|
- matr2i({{{1, 2}, {1, 2}}}));
|
|
|
+ EXPECT_THAT(mat.transpose(), matr2i({{{1, 2}, {1, 2}}}));
|
|
|
}
|
|
|
|
|
|
TEST(Matrix, TransposeOfMatrixFlipsDimension) {
|
|
|
using matr3x2i = math::matrix::matrix<int, 3, 2>;
|
|
|
using matr2x3i = math::matrix::matrix<int, 2, 3>;
|
|
|
matr3x2i mat({{{1, 1}, {2, 2}, {3, 3}}});
|
|
|
- EXPECT_THAT(mat.transpose(),
|
|
|
- matr2x3i({{{1, 2, 3}, {1, 2, 3}}}));
|
|
|
+ EXPECT_THAT(mat.transpose(), matr2x3i({{{1, 2, 3}, {1, 2, 3}}}));
|
|
|
}
|
|
|
|
|
|
TEST(Matrix, AdditionSumsAllElements) {
|
|
|
auto iden = identity2i();
|
|
|
- auto result = matr2i({{{2,0},{0,2}}});
|
|
|
+ auto result = matr2i({{{2, 0}, {0, 2}}});
|
|
|
EXPECT_THAT(iden + iden, result);
|
|
|
}
|
|
|
|
|
|
TEST(Matrix, DefaultConstructorIsZeros) {
|
|
|
- auto zero = matr2i({{{0,0},{0,0}}});
|
|
|
+ auto zero = matr2i({{{0, 0}, {0, 0}}});
|
|
|
EXPECT_THAT(matr2i{}, zero);
|
|
|
}
|
|
|
|
|
|
TEST(Matrix, SubtractionDiffsAllElements) {
|
|
|
auto iden = identity2i();
|
|
|
- EXPECT_THAT(iden-iden, matr2i());
|
|
|
+ EXPECT_THAT(iden - iden, matr2i());
|
|
|
}
|
|
|
|
|
|
TEST(Matrix, NegationAltersAllElements) {
|
|
|
- EXPECT_THAT(-identity2i(), matr2i({{{-1,0},{0,-1}}}));
|
|
|
+ EXPECT_THAT(-identity2i(), matr2i({{{-1, 0}, {0, -1}}}));
|
|
|
}
|
|
|
|
|
|
TEST(Matrix, MultiplicationAltersAllElements) {
|
|
|
- EXPECT_THAT(2*identity2(), matr2({{{2.0,0.0},{0.0,2.0}}}));
|
|
|
- EXPECT_THAT(identity2()*2, matr2({{{2.0,0.0},{0.0,2.0}}}));
|
|
|
+ EXPECT_THAT(2 * identity2(), matr2({{{2.0, 0.0}, {0.0, 2.0}}}));
|
|
|
+ EXPECT_THAT(identity2() * 2, matr2({{{2.0, 0.0}, {0.0, 2.0}}}));
|
|
|
}
|
|
|
|
|
|
TEST(Matrix, DivisionAltersAllElements) {
|
|
|
- EXPECT_THAT(identity2()/2.0, matr2({{{0.5,0.0},{0.0,0.5}}}));
|
|
|
+ EXPECT_THAT(identity2() / 2.0, matr2({{{0.5, 0.0}, {0.0, 0.5}}}));
|
|
|
}
|
|
|
|
|
|
TEST(Matrix, MultiplyingSameSizeMatricesProducesSameSize) {
|
|
|
- auto A = matr2i({{{1,2},{2,3}}});
|
|
|
- auto B = matr2i({{{1,0},{1,1}}});
|
|
|
- EXPECT_THAT(A*B, matr2i({{{3,2},{5,3}}}));
|
|
|
- EXPECT_THAT(B*A, matr2i({{{1,2},{3,5}}}));
|
|
|
+ auto A = matr2i({{{1, 2}, {2, 3}}});
|
|
|
+ auto B = matr2i({{{1, 0}, {1, 1}}});
|
|
|
+ EXPECT_THAT(A * B, matr2i({{{3, 2}, {5, 3}}}));
|
|
|
+ EXPECT_THAT(B * A, matr2i({{{1, 2}, {3, 5}}}));
|
|
|
}
|
|
|
|
|
|
TEST(Matrix, MultiplyingDifferentSizeMatricesChangesSize) {
|
|
|
@@ -109,20 +105,20 @@ TEST(Matrix, MultiplyingDifferentSizeMatricesChangesSize) {
|
|
|
using matr2x3i = math::matrix::matrix<int, 2, 3>;
|
|
|
using matr3x2i = math::matrix::matrix<int, 3, 2>;
|
|
|
using matr3x3i = math::matrix::matrix<int, 3, 3>;
|
|
|
- auto A = matr3x2i({{{1,0},{0,1},{1,1}}});
|
|
|
- auto B = matr2x3i({{{0,1,0},{1,0,1}}});
|
|
|
- EXPECT_THAT(A*B, matr3x3i({{{0,1,0},{1,0,1},{1,1,1}}}));
|
|
|
- EXPECT_THAT(B*A, matr2x2i({{{0,1},{2,1}}}));
|
|
|
+ auto A = matr3x2i({{{1, 0}, {0, 1}, {1, 1}}});
|
|
|
+ auto B = matr2x3i({{{0, 1, 0}, {1, 0, 1}}});
|
|
|
+ EXPECT_THAT(A * B, matr3x3i({{{0, 1, 0}, {1, 0, 1}, {1, 1, 1}}}));
|
|
|
+ EXPECT_THAT(B * A, matr2x2i({{{0, 1}, {2, 1}}}));
|
|
|
}
|
|
|
|
|
|
TEST(Matrix, VectorMultiplicationProducesVector) {
|
|
|
using vec2i = math::vector::vector<int, 2>;
|
|
|
- auto A = matr2i({{{1,0},{1,2}}});
|
|
|
- auto x = vec2i({1,2});
|
|
|
- EXPECT_THAT(A*x, vec2i({1,5}));
|
|
|
+ auto A = matr2i({{{1, 0}, {1, 2}}});
|
|
|
+ auto x = vec2i({1, 2});
|
|
|
+ EXPECT_THAT(A * x, vec2i({1, 5}));
|
|
|
}
|
|
|
|
|
|
-//TEST(Matrix, Composition) {
|
|
|
+// TEST(Matrix, Composition) {
|
|
|
// using namespace math::matrix;
|
|
|
// using vec4 = math::vector::vector<double, 4>;
|
|
|
// using vec3 = math::vector::vector<double, 3>;
|
|
|
@@ -137,16 +133,16 @@ TEST(Matrix, VectorMultiplicationProducesVector) {
|
|
|
|
|
|
TEST(Matrix, MatrixConstructableFromVector) {
|
|
|
using vec3 = math::vector::vector<double, 3>;
|
|
|
- vec3 v = vec3({1,2,3});
|
|
|
+ vec3 v = vec3({1, 2, 3});
|
|
|
math::matrix::matrix<double, 3, 1> m{v};
|
|
|
- EXPECT_THAT(m(0,0), v[0]);
|
|
|
- EXPECT_THAT(m(1,0), v[1]);
|
|
|
- EXPECT_THAT(m(2,0), v[2]);
|
|
|
+ EXPECT_THAT(m(0, 0), v[0]);
|
|
|
+ EXPECT_THAT(m(1, 0), v[1]);
|
|
|
+ EXPECT_THAT(m(2, 0), v[2]);
|
|
|
}
|
|
|
|
|
|
TEST(Matrix, CanAlterEntireRowInOneExpression) {
|
|
|
matr2i A = identity2i();
|
|
|
matr2i const B = 2 * A;
|
|
|
A[0] = B[0];
|
|
|
- EXPECT_THAT(A, matr2i({{{2,0},{0,1}}}));
|
|
|
+ EXPECT_THAT(A, matr2i({{{2, 0}, {0, 1}}}));
|
|
|
}
|