From 378e26140e5c9761fe20214bbf9bcd2f19d6017f Mon Sep 17 00:00:00 2001 From: Recep Aslantas Date: Sun, 22 Sep 2019 23:25:54 +0300 Subject: [PATCH] tests: add more tests for vec3 --- test/src/test_vec3.h | 146 +++++++++++++++++++++++++++++++++++++++++++ test/tests.h | 20 ++++++ 2 files changed, 166 insertions(+) diff --git a/test/src/test_vec3.h b/test/src/test_vec3.h index 40a4978..411c172 100644 --- a/test/src/test_vec3.h +++ b/test/src/test_vec3.h @@ -664,6 +664,30 @@ TEST_IMPL(GLM_PREFIX, vec3_crossn) { TEST_SUCCESS } +TEST_IMPL(GLM_PREFIX, vec3_angle) { + vec3 v1 = {1.0f, 0.0f, 0.0f}, + v2 = {1.0f, 0.0f, 1.0f}, + v3 = {0.0f, 1.0f, 0.0f}; + float a; + + a = GLM(vec3_angle)(v1, v1); + ASSERT(!isinf(a)) + ASSERT(!isnan(a)) + ASSERT(test_eq(a, 0.0f)) + + a = GLM(vec3_angle)(v1, v2); + ASSERT(!isinf(a)) + ASSERT(!isnan(a)) + ASSERT(test_eq(a, GLM_PI_4)) + + a = GLM(vec3_angle)(v1, v3); + ASSERT(!isinf(a)) + ASSERT(!isnan(a)) + ASSERT(test_eq(a, GLM_PI_2)) + + TEST_SUCCESS +} + TEST_IMPL(GLM_PREFIX, vec3_rotate) { vec3 v1 = {1.0f, 0.0f, 0.0f}, v2 = {1.0f, 1.0f, 1.0f}; @@ -866,6 +890,128 @@ TEST_IMPL(GLM_PREFIX, vec3_rotate_m3) { TEST_SUCCESS } +TEST_IMPL(GLM_PREFIX, vec3_proj) { + vec3 v1 = {3.0f, 4.0f, 0.0f}, + v2 = {10.0f, 0.0f, 0.0f}, + v3 = {0.0f, 10.0f, 0.0f}, + v4 = {3.0f, 0.0f, 0.0f}, + v5 = {0.0f, 4.0f, 0.0f}, + v6; + + GLM(vec3_proj)(v1, v2, v6); + ASSERTIFY(test_assert_vec3_eq(v4, v6)) + + GLM(vec3_proj)(v1, v3, v6); + ASSERTIFY(test_assert_vec3_eq(v5, v6)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_center) { + vec3 v1 = {30.0f, 0.0f, 0.0f}, + v2 = {0.0f, 0.0f, 0.0f}, + v3 = {15.0f, 0.0f, 0.0f}, + v4 = {3.0f, 10.0f, 120.0f}, + v5 = {0.46f, 4.0f, 14.0f}, + v6; + + GLM(vec3_center)(v1, v2, v6); + ASSERTIFY(test_assert_vec3_eq(v3, v6)) + + GLM(vec3_center)(v4, v5, v6); + ASSERT(test_eq((v4[0] + v5[0]) * 0.5f, v6[0])) + ASSERT(test_eq((v4[1] + v5[1]) * 0.5f, v6[1])) + ASSERT(test_eq((v4[2] + v5[2]) * 0.5f, v6[2])) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_distance2) { + vec3 v1 = {30.0f, 0.0f, 0.0f}, + v2 = {0.0f, 0.0f, 0.0f}, + v3 = {3.0f, 10.0f, 120.0f}, + v4 = {0.46f, 4.0f, 14.0f}; + float d; + + d = GLM(vec3_distance2)(v1, v2); + ASSERT(test_eq(d, 30.0f)) + + d = GLM(vec3_distance2)(v3, v4); + ASSERT(test_eq(powf(v3[0] - v4[0], 2.0f) + + powf(v3[1] - v4[1], 2.0f) + + powf(v3[2] - v4[2], 2.0f), d)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_distance) { + vec3 v1 = {30.0f, 0.0f, 0.0f}, + v2 = {0.0f, 0.0f, 0.0f}, + v3 = {3.0f, 10.0f, 120.0f}, + v4 = {0.46f, 4.0f, 14.0f}; + float d; + + d = GLM(vec3_distance)(v1, v2); + ASSERT(test_eq(d, 30.0f)) + + d = GLM(vec3_distance)(v3, v4); + ASSERT(test_eq(sqrtf(powf(v3[0] - v4[0], 2.0f) + + powf(v3[1] - v4[1], 2.0f) + + powf(v3[2] - v4[2], 2.0f)), d)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_maxv) { + vec3 v1, v2, v3; + vec3 v5 = {-1.456f, -1.456f, 241.456f}; + vec3 v6 = {11.0f, 11.0f, 11.0f}; + vec3 v7 = {78.0f, -78.0f, 7.0f}; + + GLM(vec3_maxv)(v5, v6, v1); + GLM(vec3_maxv)(v5, v7, v2); + GLM(vec3_maxv)(v6, v7, v3); + + ASSERT(test_eq(v1[0], 11.0f)) + ASSERT(test_eq(v1[1], 11.0f)) + ASSERT(test_eq(v1[2], 241.456f)) + + ASSERT(test_eq(v2[0], 78.0f)) + ASSERT(test_eq(v2[1], -1.456f)) + ASSERT(test_eq(v2[2], 241.456f)) + + ASSERT(test_eq(v3[0], 78.0f)) + ASSERT(test_eq(v3[1], 11.0f)) + ASSERT(test_eq(v3[2], 11.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_minv) { + vec3 v1, v2, v3; + vec3 v5 = {-1.456f, -1.456f, 241.456f}; + vec3 v6 = {11.0f, 11.0f, 11.0f}; + vec3 v7 = {78.0f, -78.0f, 7.0f}; + + GLM(vec3_minv)(v5, v6, v1); + GLM(vec3_minv)(v5, v7, v2); + GLM(vec3_minv)(v6, v7, v3); + + ASSERT(test_eq(v1[0], -1.456f)) + ASSERT(test_eq(v1[1], -1.456f)) + ASSERT(test_eq(v1[2], 11.0f)) + + ASSERT(test_eq(v2[0], -1.456f)) + ASSERT(test_eq(v2[1], -78.0f)) + ASSERT(test_eq(v2[2], 7.0f)) + + ASSERT(test_eq(v3[0], 11.0f)) + ASSERT(test_eq(v3[1], -78.0f)) + ASSERT(test_eq(v3[2], 7.0f)) + + TEST_SUCCESS +} + TEST_IMPL(GLM_PREFIX, vec3_broadcast) { vec3 v1, v2, v3; vec3 v5 = {-1.456f, -1.456f, -1.456f}; diff --git a/test/tests.h b/test/tests.h index b933a5e..2c62f16 100644 --- a/test/tests.h +++ b/test/tests.h @@ -183,9 +183,14 @@ TEST_DECLARE(glm_vec3_normalize) TEST_DECLARE(glm_vec3_normalize_to) TEST_DECLARE(glm_vec3_cross) TEST_DECLARE(glm_vec3_crossn) +TEST_DECLARE(glm_vec3_angle) TEST_DECLARE(glm_vec3_rotate) TEST_DECLARE(glm_vec3_rotate_m4) TEST_DECLARE(glm_vec3_rotate_m3) +TEST_DECLARE(glm_vec3_proj) +TEST_DECLARE(glm_vec3_center) +TEST_DECLARE(glm_vec3_maxv) +TEST_DECLARE(glm_vec3_minv) TEST_DECLARE(glm_vec3_broadcast) TEST_DECLARE(glm_vec3_fill) @@ -235,9 +240,14 @@ TEST_DECLARE(glmc_vec3_normalize) TEST_DECLARE(glmc_vec3_normalize_to) TEST_DECLARE(glmc_vec3_cross) TEST_DECLARE(glmc_vec3_crossn) +TEST_DECLARE(glmc_vec3_angle) TEST_DECLARE(glmc_vec3_rotate) TEST_DECLARE(glmc_vec3_rotate_m4) TEST_DECLARE(glmc_vec3_rotate_m3) +TEST_DECLARE(glmc_vec3_proj) +TEST_DECLARE(glmc_vec3_center) +TEST_DECLARE(glmc_vec3_maxv) +TEST_DECLARE(glmc_vec3_minv) TEST_DECLARE(glmc_vec3_broadcast) TEST_DECLARE(glmc_vec3_fill) @@ -433,9 +443,14 @@ TEST_LIST { TEST_ENTRY(glm_vec3_normalize_to) TEST_ENTRY(glm_vec3_cross) TEST_ENTRY(glm_vec3_crossn) + TEST_ENTRY(glm_vec3_angle) TEST_ENTRY(glm_vec3_rotate) TEST_ENTRY(glm_vec3_rotate_m4) TEST_ENTRY(glm_vec3_rotate_m3) + TEST_ENTRY(glm_vec3_proj) + TEST_ENTRY(glm_vec3_center) + TEST_ENTRY(glm_vec3_maxv) + TEST_ENTRY(glm_vec3_minv) TEST_ENTRY(glm_vec3_broadcast) TEST_ENTRY(glm_vec3_fill) @@ -485,9 +500,14 @@ TEST_LIST { TEST_ENTRY(glmc_vec3_normalize_to) TEST_ENTRY(glmc_vec3_cross) TEST_ENTRY(glmc_vec3_crossn) + TEST_ENTRY(glmc_vec3_angle) TEST_ENTRY(glmc_vec3_rotate) TEST_ENTRY(glmc_vec3_rotate_m4) TEST_ENTRY(glmc_vec3_rotate_m3) + TEST_ENTRY(glmc_vec3_proj) + TEST_ENTRY(glmc_vec3_center) + TEST_ENTRY(glmc_vec3_maxv) + TEST_ENTRY(glmc_vec3_minv) TEST_ENTRY(glmc_vec3_broadcast) TEST_ENTRY(glmc_vec3_fill)