From 189653268fb6f5136d4485f443d5f9308be8b654 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20GUEZO?= Date: Sun, 9 Mar 2025 19:55:28 +0100 Subject: [PATCH] feat(test_vec3): added all unit tests for vector operations --- test/test_main.c | 12 +++++ test/test_vec3.c | 112 +++++++++++++++++++++++++++++++++++++++++++++++ test/test_vec3.h | 12 +++++ 3 files changed, 136 insertions(+) create mode 100644 test/test_vec3.c create mode 100644 test/test_vec3.h diff --git a/test/test_main.c b/test/test_main.c index e9cdae1..da0a7b0 100644 --- a/test/test_main.c +++ b/test/test_main.c @@ -1,3 +1,15 @@ +#include "test_vec3.h" + +#include + int main() { + addVector3_test(); + subVector3_test(); + scaleVector3_test(); + dotVector3_test(); + lenVector3_test(); + normVector3_test(); + distVector3_test(); + printf("All Vector4 tests succeeded\n"); return 0; } \ No newline at end of file diff --git a/test/test_vec3.c b/test/test_vec3.c new file mode 100644 index 0000000..1687da8 --- /dev/null +++ b/test/test_vec3.c @@ -0,0 +1,112 @@ +#include +#include +#include + +#include "math/vector3.h" +#include "test_vec3.h" + +void printVector3(const Vec3* v) { + if (!v) { + printf("Vector is NULL\n"); + return; + } + printf("Vector: [%f, %f, %f]\n", v->x, v->y, v->z); +} + +void addVector3_test() { + printf("Test: Add Vector 3D\n"); + + Vec3 a = {1.0f, 2.0f, 3.0f}; + Vec3 b = {4.0f, 5.0f, 6.0f}; + + Vec3* result = vec3Add(&a, &b); + printVector3(result); + + assert(result->x == 5.0f); + assert(result->y == 7.0f); + assert(result->z == 9.0f); + + vec3Free(result); +} + +void subVector3_test() { + printf("Test: Subtract Vector 3D\n"); + + Vec3 a = {5.0f, 6.0f, 7.0f}; + Vec3 b = {1.0f, 2.0f, 3.0f}; + + Vec3* result = vec3Sub(&a, &b); + printVector3(result); + + assert(result->x == 4.0f); + assert(result->y == 4.0f); + assert(result->z == 4.0f); + + vec3Free(result); +} + +void scaleVector3_test() { + printf("Test: Scale Vector 3D\n"); + + Vec3 a = {1.0f, 2.0f, 3.0f}; + float scalar = 2.0f; + + Vec3* result = vec3Scale(&a, scalar); + printVector3(result); + + assert(result->x == 2.0f); + assert(result->y == 4.0f); + assert(result->z == 6.0f); + + vec3Free(result); +} + +void dotVector3_test() { + printf("Test: Dot Product Vector 3D\n"); + + Vec3 a = {1.0f, 2.0f, 3.0f}; + Vec3 b = {4.0f, 5.0f, 6.0f}; + + float result = vec3Dot(&a, &b); + printf("Dot product: %f\n", result); + + assert(result == 32.0f); +} + +void lenVector3_test() { + printf("Test: Length of Vector 3D\n"); + + Vec3 a = {1.0f, 2.0f, 2.0f}; + + float result = vec3Len(&a); + printf("Length: %f\n", result); + + assert(fabs(result - 3.0f) < 0.0001f); +} + +void normVector3_test() { + printf("Test: Normalize Vector 3D\n"); + + Vec3 a = {3.0f, 4.0f, 0.0f}; + + Vec3* result = vec3Norm(&a); + printVector3(result); + + assert(fabs(result->x - 0.6f) < 0.0001f); + assert(fabs(result->y - 0.8f) < 0.0001f); + assert(fabs(result->z - 0.0f) < 0.0001f); + + vec3Free(result); +} + +void distVector3_test() { + printf("Test: Distance between Vector 3D\n"); + + Vec3 a = {1.0f, 2.0f, 3.0f}; + Vec3 b = {4.0f, 5.0f, 6.0f}; + + float result = vec3Dist(&a, &b); + printf("Distance: %f\n", result); + + assert(fabs(result - 5.1962f) < 0.0001f); +} \ No newline at end of file diff --git a/test/test_vec3.h b/test/test_vec3.h new file mode 100644 index 0000000..6adb884 --- /dev/null +++ b/test/test_vec3.h @@ -0,0 +1,12 @@ +#ifndef TEST_V4 +#define TEST_V4 + +void addVector3_test(); +void subVector3_test(); +void scaleVector3_test(); +void dotVector3_test(); +void lenVector3_test(); +void normVector3_test(); +void distVector3_test(); + +#endif // TEST_V4 \ No newline at end of file