From 75d360d5c94f70bc93dfd2a52faee374a8e5838b Mon Sep 17 00:00:00 2001 From: steven-na Date: Fri, 31 Jul 2026 20:40:58 -0700 Subject: Vec2d impls --- tests/vec2.c | 130 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 130 insertions(+) create mode 100644 tests/vec2.c (limited to 'tests') diff --git a/tests/vec2.c b/tests/vec2.c new file mode 100644 index 0000000..a446557 --- /dev/null +++ b/tests/vec2.c @@ -0,0 +1,130 @@ +#include "../src/vec2.h" + +#include +#include + +#include +#include +#include + +Test(vec2d, zeroed_vec) { + vec2d_t v = {.x = 0.0, .y = 0.0}; + vec2d_t z = VEC2D_ZERO; + + cr_expect_eq(v.x, z.x); + cr_expect_eq(v.y, z.y); +} + +Test(vec2d, uniform_vec) { + vec2d_t v = {.x = 3.0, .y = 3.0}; + vec2d_t u = VEC2D_UNIF(3.0); + + cr_expect_eq(v.x, u.x); + cr_expect_eq(v.y, u.y); +} + +Test(vec2d, from_literals) { + vec2d_t v = {.x = 3.0, .y = 4.0}; + vec2d_t l = VEC2D_FROM(3.0, 4.0); + + cr_expect_eq(v.x, l.x); + cr_expect_eq(v.y, l.y); +} + +Test(vec2d, zeroed_eps_eq) { + vec2d_t v = {.x = 0.0, .y = 0.0}; + vec2d_t z = VEC2D_ZERO; + + cr_expect(vec2d_epsilon_eq(v, z, 1e-9)); +} + +Test(vec2d, eps_neq) { + vec2d_t v = {.x = 0.0, .y = 0.0}; + vec2d_t n = VEC2D_FROM(3.0, 10.0); + + cr_expect(!vec2d_epsilon_eq(v, n, 1e-9)); +} + +Test(vec2d, vec_add) { + vec2d_t first = VEC2D_FROM(10.0, 20.0); + vec2d_t second = VEC2D_FROM(100.0, 25.0); + + vec2d_t opd = vec2d_add(first, second); + vec2d_t expected = VEC2D_FROM(110.0, 45.0); + + cr_expect(vec2d_epsilon_eq(opd, expected, 1e-9)); +} + +Test(vec2d, vec_sub) { + vec2d_t first = VEC2D_FROM(10.0, 20.0); + vec2d_t second = VEC2D_FROM(100.0, 25.0); + + vec2d_t opd = vec2d_sub(first, second); + vec2d_t expected = VEC2D_FROM(-90.0, -5.0); + + cr_expect(vec2d_epsilon_eq(opd, expected, 1e-9)); +} + +Test(vec2d, vec_scale) { + vec2d_t first = VEC2D_FROM(10.0, 20.0); + + vec2d_t opd = vec2d_scale(first, 10.0); + vec2d_t expected = VEC2D_FROM(100.0, 200.0); + + cr_expect(vec2d_epsilon_eq(opd, expected, 1e-9)); +} + +Test(vec2d, vec_length_squared) { + vec2d_t first = VEC2D_FROM(10.0, 0.0); + + f64 opd = vec2d_length_squared(first); + f64 expected = 100.0; + + cr_expect(F64_EQ(opd, expected, 1e-9)); +} + +Test(vec2d, vec_length) { + vec2d_t first = VEC2D_FROM(0.0, 15.0); + + f64 opd = vec2d_length(first); + f64 expected = 15.0; + + cr_expect(F64_EQ(opd, expected, 1e-9)); +} + +Test(vec2d, vec_norm1) { + vec2d_t first = VEC2D_FROM(10.0, 0.0); + + vec2d_t opd = vec2d_normalize(first); + vec2d_t expected = VEC2D_FROM(1.0, 0); + + cr_expect(vec2d_epsilon_eq(opd, expected, 1e-9)); +} + +Test(vec2d, vec_norm2) { + vec2d_t first = VEC2D_FROM(0.0, 10.0); + + vec2d_t opd = vec2d_normalize(first); + vec2d_t expected = VEC2D_FROM(0.0, 1.0); + + cr_expect(vec2d_epsilon_eq(opd, expected, 1e-9)); +} + +Test(vec2d, vec_norm3) { + vec2d_t first = VEC2D_FROM(1.0, 1.0); + + vec2d_t opd = vec2d_normalize(first); + vec2d_t expected = VEC2D_FROM(1.0 / sqrt(2.0), 1.0 / sqrt(2.0)); + + cr_expect(vec2d_epsilon_eq(opd, expected, 1e-9)); +} + +Test(vec2d, vec_dot) { + vec2d_t first = VEC2D_FROM(1.0, 2.0); + vec2d_t second = VEC2D_FROM(3.0, 4.0); + + f64 opd = vec2d_dot(first, second); + f64 expected = 11.0; + + cr_expect(F64_EQ(opd, expected, 1e-9)); +} -- cgit v1.2.3