diff --git a/src/t/math/matrix.cpp b/src/t/math/matrix.cpp index 63463c0b..506bf921 100644 --- a/src/t/math/matrix.cpp +++ b/src/t/math/matrix.cpp @@ -19,13 +19,11 @@ lolunit_declare_fixture(MatrixTest) { void SetUp() { - id2 = mat2(1.0f); tri2 = mat2(vec2(1.0f, 0.0f), vec2(7.0f, 2.0f)); inv2 = mat2(vec2(4.0f, 3.0f), vec2(3.0f, 2.0f)); - id3 = mat3(1.0f); tri3 = mat3(vec3(1.0f, 0.0f, 0.0f), vec3(7.0f, 2.0f, 0.0f), vec3(1.0f, 5.0f, 3.0f)); @@ -33,7 +31,6 @@ lolunit_declare_fixture(MatrixTest) vec3(3.0f, 2.0f, 3.0f), vec3(9.0f, 5.0f, 7.0f)); - id4 = mat4(1.0f); tri4 = mat4(vec4(1.0f, 0.0f, 0.0f, 0.0f), vec4(7.0f, 2.0f, 0.0f, 0.0f), vec4(1.0f, 5.0f, 3.0f, 0.0f), @@ -68,8 +65,8 @@ lolunit_declare_fixture(MatrixTest) lolunit_declare_test(Multiplication) { - mat4 m0 = id4; - mat4 m1 = id4; + mat4 m0(1.f); + mat4 m1(1.f); mat4 m2 = m0 * m1; lolunit_assert_equal(m2[0][0], 1.0f); @@ -235,32 +232,27 @@ lolunit_declare_fixture(MatrixTest) lolunit_assert_doubles_equal(m2[2][2], 1.0f, 1e-4); } - lolunit_declare_test(Inverse4x4) + lolunit_declare_test(inverse_4x4_1) { - mat4 m0 = inv4; - mat4 m1 = inverse(m0); - - mat4 m2 = m0 * m1; - - lolunit_assert_equal(m2[0][0], 1.0f); - lolunit_assert_equal(m2[1][0], 0.0f); - lolunit_assert_equal(m2[2][0], 0.0f); - lolunit_assert_equal(m2[3][0], 0.0f); + mat4 m = inv4; + mat4 m2 = inverse(m) * m; - lolunit_assert_equal(m2[0][1], 0.0f); - lolunit_assert_equal(m2[1][1], 1.0f); - lolunit_assert_equal(m2[2][1], 0.0f); - lolunit_assert_equal(m2[3][1], 0.0f); + for (int j = 0; j < 4; ++j) + for (int i = 0; i < 4; ++i) + lolunit_assert_equal(m2[i][j], mat4(1.f)[i][j]); + } - lolunit_assert_equal(m2[0][2], 0.0f); - lolunit_assert_equal(m2[1][2], 0.0f); - lolunit_assert_equal(m2[2][2], 1.0f); - lolunit_assert_equal(m2[3][2], 0.0f); + lolunit_declare_test(inverse_4x4_2) + { + mat4 m(vec4(1.f, 0.f, 0.f, 0.f), + vec4(0.f, 0.f, 1.f, 0.f), + vec4(0.f, -1.f, 0.f, 0.f), + vec4(0.f, 0.f, -1.f, 1.f)); + mat4 m2 = inverse(m) * m; - lolunit_assert_equal(m2[0][3], 0.0f); - lolunit_assert_equal(m2[1][3], 0.0f); - lolunit_assert_equal(m2[2][3], 0.0f); - lolunit_assert_equal(m2[3][3], 1.0f); + for (int j = 0; j < 4; ++j) + for (int i = 0; i < 4; ++i) + lolunit_assert_equal(m2[i][j], mat4(1.f)[i][j]); } lolunit_declare_test(Kronecker) @@ -293,9 +285,9 @@ lolunit_declare_fixture(MatrixTest) } } - mat2 tri2, id2, inv2; - mat3 tri3, id3, inv3; - mat4 tri4, id4, inv4; + mat2 tri2, inv2; + mat3 tri3, inv3; + mat4 tri4, inv4; }; } /* namespace lol */