From 8ac767fd2cea6b5a058625987469f3b581cc0994 Mon Sep 17 00:00:00 2001 From: Recep Aslantas Date: Thu, 19 Sep 2019 00:27:26 +0300 Subject: [PATCH] tests: fix mat3, mat4 tests --- test/src/test_mat3.h | 26 +++++++++++++----------- test/src/test_mat4.h | 37 ++++++++++++++++++++++++++-------- test/src/tests-test_mat4.gcno | Bin 0 -> 83560 bytes 3 files changed, 43 insertions(+), 20 deletions(-) create mode 100644 test/src/tests-test_mat4.gcno diff --git a/test/src/test_mat3.h b/test/src/test_mat3.h index d45c3d6..0659a2e 100644 --- a/test/src/test_mat3.h +++ b/test/src/test_mat3.h @@ -120,7 +120,7 @@ TEST_IMPL(GLM_PREFIX, mat3_trace) { mat3 mat = A_MATRIX; float trace; - trace = glm_mat3_trace(mat); + trace = GLM(mat3_trace)(mat); ASSERT(glm_eq(trace, mat[0][0] + mat[1][1] + mat[2][2])) @@ -146,7 +146,7 @@ TEST_IMPL(GLM_PREFIX, mat3_quat) { GLM(vec3_normalize)(axis1); GLM(vec3_normalize)(axis2); - glm_mat4_pick3(m2, m3); + GLM(mat4_pick3)(m2, m3); ASSERT(glm_eq(glm_quat_angle(q3), GLM_PI_4)) ASSERTIFY(test_assert_vec3_eq(axis1, axis2)) @@ -201,18 +201,20 @@ TEST_IMPL(GLM_PREFIX, mat3_scale) { TEST_IMPL(GLM_PREFIX, mat3_det) { mat3 mat; - - float a = mat[0][0], b = mat[0][1], c = mat[0][2], - d = mat[1][0], e = mat[1][1], f = mat[1][2], - g = mat[2][0], h = mat[2][1], i = mat[2][2]; - + float a, b, c, + d, e, f, + g, h, i; float det1, det2; - det1 = a * (e * i - h * f) - d * (b * i - c * h) + g * (b * f - c * e); - det2 = glm_mat3_det(mat); - test_rand_mat3(mat); + a = mat[0][0]; b = mat[0][1]; c = mat[0][2]; + d = mat[1][0]; e = mat[1][1]; f = mat[1][2]; + g = mat[2][0]; h = mat[2][1]; i = mat[2][2]; + + det1 = a * (e * i - h * f) - d * (b * i - c * h) + g * (b * f - c * e); + det2 = GLM(mat3_det)(mat); + ASSERT(glm_eq(det1, det2)) TEST_SUCCESS @@ -229,8 +231,8 @@ TEST_IMPL(GLM_PREFIX, mat3_inv) { test_rand_mat3(m2); /* test inverse precise */ - glmc_mat3_inv(m1, m2); - glmc_mat3_inv(m2, m3); + GLM(mat3_inv)(m1, m2); + GLM(mat3_inv)(m2, m3); ASSERTIFY(test_assert_mat3_eq(m1, m3)) } diff --git a/test/src/test_mat4.h b/test/src/test_mat4.h index 316e12a..e6aceff 100644 --- a/test/src/test_mat4.h +++ b/test/src/test_mat4.h @@ -220,7 +220,7 @@ TEST_IMPL(GLM_PREFIX, mat4_trace) { mat4 mat = A_MATRIX; float trace; - trace = glm_mat4_trace(mat); + trace = GLM(mat4_trace)(mat); ASSERT(glm_eq(trace, mat[0][0] + mat[1][1] + mat[2][2] + mat[3][3])) @@ -327,15 +327,36 @@ TEST_IMPL(GLM_PREFIX, mat4_scale) { } TEST_IMPL(GLM_PREFIX, mat4_det) { - mat4 m1 = GLM_MAT4_IDENTITY_INIT; + mat4 mat = GLM_MAT4_IDENTITY_INIT; + float t[6]; + float a, b, c, d, + e, f, g, h, + i, j, k, l, + m, n, o, p; + float det1, det2; - test_rand_mat4(m1); + test_rand_mat4(mat); - /* test determinant */ - ASSERT(glm_mat4_det(m1) == glmc_mat4_det(m1)) -#if defined( __SSE2__ ) - ASSERT(glmc_mat4_det(m1) == glm_mat4_det_sse2(m1)) -#endif + a = mat[0][0]; b = mat[0][1]; c = mat[0][2]; d = mat[0][3]; + e = mat[1][0]; f = mat[1][1]; g = mat[1][2]; h = mat[1][3]; + i = mat[2][0]; j = mat[2][1]; k = mat[2][2]; l = mat[2][3]; + m = mat[3][0]; n = mat[3][1]; o = mat[3][2]; p = mat[3][3]; + + t[0] = k * p - o * l; + t[1] = j * p - n * l; + t[2] = j * o - n * k; + t[3] = i * p - m * l; + t[4] = i * o - m * k; + t[5] = i * n - m * j; + + det1 = a * (f * t[0] - g * t[1] + h * t[2]) + - b * (e * t[0] - g * t[3] + h * t[4]) + + c * (e * t[1] - f * t[3] + h * t[5]) + - d * (e * t[2] - f * t[4] + g * t[5]); + + det2 = GLM(mat4_det(mat)); + + ASSERT(glm_eq(det1, det2)) TEST_SUCCESS } diff --git a/test/src/tests-test_mat4.gcno b/test/src/tests-test_mat4.gcno new file mode 100644 index 0000000000000000000000000000000000000000..d58d103ca57c26e8a784b0d9657f55792bd47ed0 GIT binary patch literal 83560 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 literal 0 HcmV?d00001