From d8c6064695526b2cb7b1e789f554fa6a44e19670 Mon Sep 17 00:00:00 2001 From: Artem Zyktin Date: Wed, 3 Jun 2026 17:47:22 +0800 Subject: [PATCH] Add tests --- src/tests/naive_tests.cpp | 36 +++++++++++++++++++++ src/tests/vec4_tests.cpp | 67 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 103 insertions(+) diff --git a/src/tests/naive_tests.cpp b/src/tests/naive_tests.cpp index e78260e..8378006 100644 --- a/src/tests/naive_tests.cpp +++ b/src/tests/naive_tests.cpp @@ -283,4 +283,40 @@ TEST(naive_vec4, neg_compound) EXPECT_TRUE(approx_eq(a + (-b), a - b)); } +TEST(naive_vec4, dot4_basic) +{ + vec4 a = { 1.0f, 2.0f, 3.0f, 4.0f }; + vec4 b = { 1.0f, 2.0f, 3.0f, 4.0f }; + EXPECT_FLOAT_EQ(dot4(a, b), 30.0f); +} + +TEST(naive_vec4, dot4_w_matters) +{ + vec4 a = { 1.0f, 2.0f, 3.0f, 4.0f }; + vec4 b = { 1.0f, 2.0f, 3.0f, 4.0f }; + EXPECT_FLOAT_EQ(dot3(a, b), 14.0f); + EXPECT_FLOAT_EQ(dot4(a, b), 30.0f); +} + +TEST(naive_vec4, dot4_w_only) +{ + vec4 a = { 0.0f, 0.0f, 0.0f, 5.0f }; + vec4 b = { 0.0f, 0.0f, 0.0f, 3.0f }; + EXPECT_FLOAT_EQ(dot4(a, b), 15.0f); +} + +TEST(naive_vec4, dot4_commutative) +{ + vec4 a = { 1.0f, 2.0f, 3.0f, 4.0f }; + vec4 b = { 4.0f, 3.0f, 2.0f, 1.0f }; + EXPECT_FLOAT_EQ(dot4(a, b), dot4(b, a)); +} + +TEST(naive_vec4, dot4_w_zero_matches_dot3) +{ + vec4 a = { 1.0f, 2.0f, 3.0f, 0.0f }; + vec4 b = { 4.0f, 5.0f, 6.0f, 0.0f }; + EXPECT_FLOAT_EQ(dot4(a, b), dot3(a, b)); +} + } \ No newline at end of file diff --git a/src/tests/vec4_tests.cpp b/src/tests/vec4_tests.cpp index 10c1a13..98f83a8 100644 --- a/src/tests/vec4_tests.cpp +++ b/src/tests/vec4_tests.cpp @@ -337,4 +337,71 @@ TEST(vec4, neg_scalar_in_expression) EXPECT_TRUE(approx_eq(check, result)); } +TEST(vec4, dot4_basic) +{ + vec4 a = { 1.0f, 2.0f, 3.0f, 4.0f }; + vec4 b = { 1.0f, 2.0f, 3.0f, 4.0f }; + float check = 30.0f; + float result = dot4(a, b); + + EXPECT_FLOAT_EQ(check, result); +} + +TEST(vec4, dot4_w_zero_matches_dot3) +{ + vec4 a = { 1.0f, 2.0f, 3.0f, 0.0f }; + vec4 b = { 4.0f, 5.0f, 6.0f, 0.0f }; + + EXPECT_FLOAT_EQ(float(dot4(a, b)), float(dot3(a, b))); +} + +TEST(vec4, dot4_w_matters) +{ + vec4 a = { 1.0f, 2.0f, 3.0f, 4.0f }; + vec4 b = { 1.0f, 2.0f, 3.0f, 4.0f }; + float check1 = 14.0f; + float result1 = dot3(a, b); + float check2 = 30.0f; + float result2 = dot4(a, b); + + EXPECT_FLOAT_EQ(check1, result1); + EXPECT_FLOAT_EQ(check2, result2); +} + +TEST(vec4, dot4_w_only) +{ + vec4 a = { 0.0f, 0.0f, 0.0f, 5.0f }; + vec4 b = { 0.0f, 0.0f, 0.0f, 3.0f }; + float check = 15.0f; + float result = dot4(a, b); + + EXPECT_FLOAT_EQ(check, result); +} + +TEST(vec4, dot4_perpendicular) +{ + vec4 a = { 1.0f, 0.0f, 0.0f, 0.0f }; + vec4 b = { 0.0f, 1.0f, 0.0f, 0.0f }; + float check = 0.0f; + float result = dot4(a, b); + + EXPECT_FLOAT_EQ(check, result); +} + +TEST(vec4, dot4_commutative) +{ + vec4 a = { 1.0f, 2.0f, 3.0f, 4.0f }; + vec4 b = { 4.0f, 3.0f, 2.0f, 1.0f }; + + EXPECT_FLOAT_EQ(float(dot4(a, b)), float(dot4(b, a))); +} + +TEST(vec4, dot4_collapses) +{ + vec4 a = { 1.0f, 0.0f, 0.0f, 0.0f }; + vec4 b = { 0.0f, 1.0f, 0.0f, 0.0f }; + + EXPECT_TRUE((scalar_expr)); +} + }