From b8897befa6ac65c6a03b0bbbb94fd6297943ef29 Mon Sep 17 00:00:00 2001 From: Recep Aslantas Date: Sat, 18 Nov 2017 11:38:13 +0300 Subject: [PATCH] test: fix mat4 tests --- test/src/test_common.c | 20 +++++++++++++----- test/src/test_common.h | 3 +++ test/src/test_mat4.c | 46 +++++++++++++++++++++++++++--------------- 3 files changed, 48 insertions(+), 21 deletions(-) diff --git a/test/src/test_common.c b/test/src/test_common.c index 6bb1c36..e6f36ab 100644 --- a/test/src/test_common.c +++ b/test/src/test_common.c @@ -6,6 +6,9 @@ #include "test_common.h" #include +#define m 4 +#define n 4 + void test_rand_mat4(mat4 dest) { glm_mat4_copy(GLM_MAT4_IDENTITY, dest); @@ -28,15 +31,22 @@ void test_assert_mat4_eq(mat4 m1, mat4 m2) { int i, j, k; -#define m 4 -#define n 4 for (i = 0; i < m; i++) { for (j = 0; j < n; j++) { for (k = 0; k < m; k++) - assert_true(fabsf(m1[i][j] - m2[i][j]) <= 0.00009); + assert_true(fabsf(m1[i][j] - m2[i][j]) <= 0.0000009); } } -#undef m -#undef n } +void +test_assert_mat4_eq2(mat4 m1, mat4 m2, float eps) { + int i, j, k; + + for (i = 0; i < m; i++) { + for (j = 0; j < n; j++) { + for (k = 0; k < m; k++) + assert_true(fabsf(m1[i][j] - m2[i][j]) <= eps); + } + } +} diff --git a/test/src/test_common.h b/test/src/test_common.h index 88cd335..5fff3d7 100644 --- a/test/src/test_common.h +++ b/test/src/test_common.h @@ -28,4 +28,7 @@ test_rand_mat4(mat4 dest); void test_assert_mat4_eq(mat4 m1, mat4 m2); +void +test_assert_mat4_eq2(mat4 m1, mat4 m2, float eps); + #endif /* test_common_h */ diff --git a/test/src/test_mat4.c b/test/src/test_mat4.c index ff4764e..ac977cd 100644 --- a/test/src/test_mat4.c +++ b/test/src/test_mat4.c @@ -50,23 +50,37 @@ test_mat4(void **state) { glmc_mat4_mul(m1, m2, m3); test_assert_mat4_eq(m3, m4); - /* test inverse precise */ - glm_mat4_inv_precise(m3, m4); - glm_mat4_inv_precise(m4, m5); - test_assert_mat4_eq(m3, m5); + for (i = 0; i < 100000; i++) { + test_rand_mat4(m3); + test_rand_mat4(m4); + + /* test inverse precise */ + glm_mat4_inv_precise(m3, m4); + glm_mat4_inv_precise(m4, m5); + test_assert_mat4_eq(m3, m5); + + test_rand_mat4(m3); + test_rand_mat4(m4); - glmc_mat4_inv_precise(m3, m4); - glmc_mat4_inv_precise(m4, m5); - test_assert_mat4_eq(m3, m5); - - /* test inverse rcp */ - glm_mat4_inv(m3, m4); - glm_mat4_inv(m4, m5); - test_assert_mat4_eq(m3, m5); - - glmc_mat4_inv(m3, m4); - glmc_mat4_inv(m4, m5); - test_assert_mat4_eq(m3, m5); + glmc_mat4_inv_precise(m3, m4); + glmc_mat4_inv_precise(m4, m5); + test_assert_mat4_eq(m3, m5); + + /* test inverse rcp */ + test_rand_mat4(m3); + test_rand_mat4(m4); + + glm_mat4_inv(m3, m4); + glm_mat4_inv(m4, m5); + test_assert_mat4_eq2(m3, m5, 0.0009f); + + test_rand_mat4(m3); + test_rand_mat4(m4); + + glmc_mat4_inv(m3, m4); + glmc_mat4_inv(m4, m5); + test_assert_mat4_eq2(m3, m5, 0.0009f); + } /* print */ glm_mat4_print(m3, stderr);