diff --git a/CMakeLists.txt b/CMakeLists.txt index 4be6a1e..b038d98 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,14 +3,18 @@ project(t3dsr C) set(CMAKE_C_STANDARD 17) -# if microsoft compilation -if (MSVC) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /W4") -else() - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -pedantic") -endif() - file(GLOB_RECURSE SOURCES CONFIGURE_DEPENDS src/*.c) file(GLOB_RECURSE HEADERS CONFIGURE_DEPENDS src/*.h) -add_executable(main ${SOURCES} ${HEADERS}) \ No newline at end of file +add_executable(main ${SOURCES} ${HEADERS}) + +# ==== tests ==== +enable_testing() + +file(GLOB_RECURSE TEST_SOURCES CONFIGURE_DEPENDS tests/*.c) +list(FILTER SOURCES EXCLUDE REGEX ".*src/main\\.c$") + +if(TEST_SOURCES) + add_executable(tests ${TEST_SOURCES} ${SOURCES}) + add_test(NAME tests COMMAND tests) +endif() diff --git a/tests/test_vec4f.c b/tests/test_vec4f.c new file mode 100644 index 0000000..f8cc217 --- /dev/null +++ b/tests/test_vec4f.c @@ -0,0 +1,62 @@ +// +// test_vec3f.c +// tests +// +// Created by Loïc GUEZO on 21/06/2025. +// + +#include +#include +#include "../src/math/vec4.h" + +#define EPSILON 1e-6f + +void test_vec4f_creation() { + Vec4f_t v = vec4f(1.f, 2.f, 3.f, 4.f); + assert(fabsf(v.x - 1.f) < EPSILON); + assert(fabsf(v.y - 2.f) < EPSILON); + assert(fabsf(v.z - 3.f) < EPSILON); + assert(fabsf(v.w - 4.f) < EPSILON); +} + +void test_vec4f_add() { + Vec4f_t a = vec4f(1.f, 2.f, 3.f, 4.f); + Vec4f_t b = vec4f(5.f, 6.f, 7.f, 8.f); + Vec4f_t r = vec4f_add(a, b); + assert(fabsf(r.x - 6.f) < EPSILON); + assert(fabsf(r.y - 8.f) < EPSILON); + assert(fabsf(r.z - 10.f) < EPSILON); + assert(fabsf(r.w - 12.f) < EPSILON); +} + +void test_vec4f_sub() { + Vec4f_t a = vec4f(5.f, 6.f, 7.f, 8.f); + Vec4f_t b = vec4f(1.f, 2.f, 3.f, 4.f); + Vec4f_t r = vec4f_sub(a, b); + + assert(fabsf(r.x - 4.f) < EPSILON); + assert(fabsf(r.y - 4.f) < EPSILON); + assert(fabsf(r.z - 4.f) < EPSILON); + assert(fabsf(r.w - 4.f) < EPSILON); +} + +void test_vec4f_scale() { + Vec4f_t a = vec4f(1.f, 2.f, 3.f, 4.f); + Vec4f_t r = vec4f_scale(a, 2.f); + assert(fabsf(r.x - 2.f) < EPSILON); + assert(fabsf(r.y - 4.f) < EPSILON); + assert(fabsf(r.z - 6.f) < EPSILON); + assert(fabsf(r.w - 8.f) < EPSILON); +} + +void run_all_tests() { + test_vec4f_creation(); + test_vec4f_add(); + test_vec4f_sub(); + test_vec4f_scale(); +} + +int main(void) { + run_all_tests(); + return 0; // success +}