mirror of
https://github.com/recp/cglm.git
synced 2025-10-04 09:08:53 +00:00
tests: add more tests for vec3
This commit is contained in:
@@ -569,3 +569,83 @@ TEST_IMPL(GLM_PREFIX, vec3_negate) {
|
||||
TEST_SUCCESS
|
||||
}
|
||||
|
||||
TEST_IMPL(GLM_PREFIX, vec3_normalize) {
|
||||
vec3 v1 = {2.0f, -3.0f, 4.0f}, v2 = {2.0f, -3.0f, 4.0f};
|
||||
float s = 1.0f;
|
||||
float norm;
|
||||
|
||||
GLM(vec3_normalize)(v2);
|
||||
|
||||
norm = sqrtf(v1[0] * v1[0] + v1[1] * v1[1] + v1[2] * v1[2]);
|
||||
if (norm == 0.0f) {
|
||||
ASSERT(glm_eq(v1[0], 0.0f))
|
||||
ASSERT(glm_eq(v1[1], 0.0f))
|
||||
ASSERT(glm_eq(v1[2], 0.0f))
|
||||
|
||||
TEST_SUCCESS
|
||||
}
|
||||
|
||||
norm = s / norm;
|
||||
|
||||
ASSERT(glm_eq(v1[0] * norm, v2[0]))
|
||||
ASSERT(glm_eq(v1[1] * norm, v2[1]))
|
||||
ASSERT(glm_eq(v1[2] * norm, v2[2]))
|
||||
|
||||
TEST_SUCCESS
|
||||
}
|
||||
|
||||
TEST_IMPL(GLM_PREFIX, vec3_normalize_to) {
|
||||
vec3 v1 = {2.0f, -3.0f, 4.0f}, v2;
|
||||
float s = 1.0f;
|
||||
float norm;
|
||||
|
||||
GLM(vec3_normalize_to)(v1, v2);
|
||||
|
||||
norm = sqrtf(v1[0] * v1[0] + v1[1] * v1[1] + v1[2] * v1[2]);
|
||||
if (norm == 0.0f) {
|
||||
ASSERT(glm_eq(v1[0], 0.0f))
|
||||
ASSERT(glm_eq(v1[1], 0.0f))
|
||||
ASSERT(glm_eq(v1[2], 0.0f))
|
||||
|
||||
TEST_SUCCESS
|
||||
}
|
||||
|
||||
norm = s / norm;
|
||||
|
||||
ASSERT(glm_eq(v1[0] * norm, v2[0]))
|
||||
ASSERT(glm_eq(v1[1] * norm, v2[1]))
|
||||
ASSERT(glm_eq(v1[2] * norm, v2[2]))
|
||||
|
||||
TEST_SUCCESS
|
||||
}
|
||||
|
||||
TEST_IMPL(GLM_PREFIX, vec3_cross) {
|
||||
/* (u2.v3 - u3.v2, u3.v1 - u1.v3, u1.v2 - u2.v1) */
|
||||
vec3 v1 = {2.0f, -3.0f, 4.0f}, v2 = {12.0f, -31.0f, 43.0f}, v3, v4;
|
||||
|
||||
GLM(vec3_cross)(v1, v2, v3);
|
||||
|
||||
v4[0] = v1[1] * v2[2] - v1[2] * v2[1];
|
||||
v4[1] = v1[2] * v2[0] - v1[0] * v2[2];
|
||||
v4[2] = v1[0] * v2[1] - v1[1] * v2[0];
|
||||
|
||||
ASSERTIFY(test_assert_vec3_eq(v3, v4))
|
||||
|
||||
TEST_SUCCESS
|
||||
}
|
||||
|
||||
TEST_IMPL(GLM_PREFIX, vec3_crossn) {
|
||||
/* (u2.v3 - u3.v2, u3.v1 - u1.v3, u1.v2 - u2.v1) */
|
||||
vec3 v1 = {2.0f, -3.0f, 4.0f}, v2 = {12.0f, -31.0f, 43.0f}, v3, v4;
|
||||
|
||||
GLM(vec3_cross)(v1, v2, v3);
|
||||
|
||||
v4[0] = v1[1] * v2[2] - v1[2] * v2[1];
|
||||
v4[1] = v1[2] * v2[0] - v1[0] * v2[2];
|
||||
v4[2] = v1[0] * v2[1] - v1[1] * v2[0];
|
||||
|
||||
ASSERTIFY(test_assert_vec3_eq(v3, v4))
|
||||
|
||||
TEST_SUCCESS
|
||||
}
|
||||
|
||||
|
18
test/tests.h
18
test/tests.h
@@ -173,6 +173,10 @@ TEST_DECLARE(glm_vec3_maxadd)
|
||||
TEST_DECLARE(glm_vec3_minadd)
|
||||
TEST_DECLARE(glm_vec3_negate_to)
|
||||
TEST_DECLARE(glm_vec3_negate)
|
||||
TEST_DECLARE(glm_vec3_normalize)
|
||||
TEST_DECLARE(glm_vec3_normalize_to)
|
||||
TEST_DECLARE(glm_vec3_cross)
|
||||
TEST_DECLARE(glm_vec3_crossn)
|
||||
|
||||
TEST_DECLARE(glmc_vec3)
|
||||
TEST_DECLARE(glmc_vec3_copy)
|
||||
@@ -200,6 +204,10 @@ TEST_DECLARE(glmc_vec3_maxadd)
|
||||
TEST_DECLARE(glmc_vec3_minadd)
|
||||
TEST_DECLARE(glmc_vec3_negate_to)
|
||||
TEST_DECLARE(glmc_vec3_negate)
|
||||
TEST_DECLARE(glmc_vec3_normalize)
|
||||
TEST_DECLARE(glmc_vec3_normalize_to)
|
||||
TEST_DECLARE(glmc_vec3_cross)
|
||||
TEST_DECLARE(glmc_vec3_crossn)
|
||||
|
||||
/* vec4 */
|
||||
TEST_DECLARE(vec4)
|
||||
@@ -367,6 +375,10 @@ TEST_LIST {
|
||||
TEST_ENTRY(glm_vec3_minadd)
|
||||
TEST_ENTRY(glm_vec3_negate_to)
|
||||
TEST_ENTRY(glm_vec3_negate)
|
||||
TEST_ENTRY(glm_vec3_normalize)
|
||||
TEST_ENTRY(glm_vec3_normalize_to)
|
||||
TEST_ENTRY(glm_vec3_cross)
|
||||
TEST_ENTRY(glm_vec3_crossn)
|
||||
|
||||
|
||||
TEST_ENTRY(glmc_vec3)
|
||||
@@ -395,7 +407,11 @@ TEST_LIST {
|
||||
TEST_ENTRY(glmc_vec3_minadd)
|
||||
TEST_ENTRY(glmc_vec3_negate_to)
|
||||
TEST_ENTRY(glmc_vec3_negate)
|
||||
|
||||
TEST_ENTRY(glmc_vec3_normalize)
|
||||
TEST_ENTRY(glmc_vec3_normalize_to)
|
||||
TEST_ENTRY(glmc_vec3_cross)
|
||||
TEST_ENTRY(glmc_vec3_crossn)
|
||||
|
||||
/* vec4 */
|
||||
TEST_ENTRY(vec4)
|
||||
};
|
||||
|
Reference in New Issue
Block a user