From 1fdd459733002bcdb52eb9f2c01e3b0f84e0d059 Mon Sep 17 00:00:00 2001 From: Recep Aslantas Date: Thu, 6 Jun 2019 13:12:17 +0300 Subject: [PATCH] add tests for vector swizzling, rename vec to vec3 --- include/cglm/vec3.h | 6 +++--- test/src/test_vec3.c | 26 ++++++++++++++++++++++++++ test/src/test_vec4.c | 38 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 67 insertions(+), 3 deletions(-) diff --git a/include/cglm/vec3.h b/include/cglm/vec3.h index ea8d9a1..323618a 100644 --- a/include/cglm/vec3.h +++ b/include/cglm/vec3.h @@ -61,7 +61,7 @@ CGLM_INLINE void glm_vec3_ortho(vec3 v, vec3 dest); CGLM_INLINE void glm_vec3_clamp(vec3 v, float minVal, float maxVal); CGLM_INLINE void glm_vec3_lerp(vec3 from, vec3 to, float t, vec3 dest); - CGLM_INLINE void glm_vec_swizzle(vec3 v, int mask, vec3 dest); + CGLM_INLINE void glm_vec3_swizzle(vec3 v, int mask, vec3 dest); Convenient: CGLM_INLINE void glm_cross(vec3 a, vec3 b, vec3 d); @@ -862,14 +862,14 @@ glm_normalize_to(vec3 v, vec3 dest) { */ CGLM_INLINE void -glm_vec_swizzle(vec3 v, int mask, vec3 dest) { +glm_vec3_swizzle(vec3 v, int mask, vec3 dest) { vec3 t; t[0] = v[(mask & (3 << 0))]; t[1] = v[(mask & (3 << 2)) >> 2]; t[2] = v[(mask & (3 << 4)) >> 4]; - glm_vec_copy(t, dest); + glm_vec3_copy(t, dest); } #endif /* cglm_vec3_h */ diff --git a/test/src/test_vec3.c b/test/src/test_vec3.c index 4f1f2d1..19af4aa 100644 --- a/test/src/test_vec3.c +++ b/test/src/test_vec3.c @@ -84,4 +84,30 @@ test_vec3(void **state) { vs3 = glms_vec3_add(vs1, vs2); vs4 = glms_vec3_maxv(vs1, vs3); test_assert_vec3s_eq(vs3, vs4); + + /* swizzle */ + + /* ZYX */ + v1[0] = 1; + v1[1] = 2; + v1[2] = 3; + glm_vec3_swizzle(v1, GLM_ZYX, v1); + test_assert_vec3_eq(v1, (vec3){3, 2, 1}); + + glm_vec3_swizzle(v1, GLM_XXX, v1); + test_assert_vec3_eq(v1, (vec3){3, 3, 3}); + + v1[0] = 1; + v1[1] = 2; + v1[2] = 3; + + glm_vec3_swizzle(v1, GLM_YYY, v1); + test_assert_vec3_eq(v1, (vec3){2, 2, 2}); + + v1[0] = 1; + v1[1] = 2; + v1[2] = 3; + + glm_vec3_swizzle(v1, GLM_ZZZ, v1); + test_assert_vec3_eq(v1, (vec3){3, 3, 3}); } diff --git a/test/src/test_vec4.c b/test/src/test_vec4.c index 02137b0..2e9d12e 100644 --- a/test/src/test_vec4.c +++ b/test/src/test_vec4.c @@ -183,6 +183,44 @@ test_vec4(void **state) { assert_true(v3[2] >= 0.0999 && v3[2] <= 0.80001); assert_true(v3[3] >= 0.0999 && v3[3] <= 0.80001); + /* swizzle */ + + /* ZYX */ + v1[0] = 1; + v1[1] = 2; + v1[2] = 3; + v1[3] = 4; + + glm_vec4_swizzle(v1, GLM_WZYX, v1); + test_assert_vec4_eq(v1, (vec4){4, 3, 2, 1}); + + glm_vec4_swizzle(v1, GLM_XXXX, v1); + test_assert_vec4_eq(v1, (vec4){4, 4, 4, 4}); + + v1[0] = 1; + v1[1] = 2; + v1[2] = 3; + v1[3] = 4; + + glm_vec4_swizzle(v1, GLM_YYYY, v1); + test_assert_vec4_eq(v1, (vec4){2, 2, 2, 2}); + + v1[0] = 1; + v1[1] = 2; + v1[2] = 3; + v1[3] = 4; + + glm_vec4_swizzle(v1, GLM_ZZZZ, v1); + test_assert_vec4_eq(v1, (vec4){3, 3, 3, 3}); + + v1[0] = 1; + v1[1] = 2; + v1[2] = 3; + v1[3] = 4; + + glm_vec4_swizzle(v1, GLM_WWWW, v1); + test_assert_vec4_eq(v1, (vec4){4, 4, 4, 4}); + /* structs */ vs1 = test_rand_vec4s(); vs2 = test_rand_vec4s();