From 6f3fd9053dacdc050e190c82cc117b6db3d59e15 Mon Sep 17 00:00:00 2001 From: THoehne <77296181+THoehne@users.noreply.github.com> Date: Wed, 24 Jul 2024 23:01:18 +0200 Subject: [PATCH] Add Vector4 to tests. --- MathTestFPU/test.cpp | 131 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 131 insertions(+) diff --git a/MathTestFPU/test.cpp b/MathTestFPU/test.cpp index 84adde6..7cb1c53 100644 --- a/MathTestFPU/test.cpp +++ b/MathTestFPU/test.cpp @@ -343,4 +343,135 @@ namespace VectorTests EXPECT_TRUE(PMath::Project(v0, v1) == PMath::Vector3(3.657324613f, 1.792806183f, 5.163281807f)); EXPECT_TRUE(PMath::Reject(v0, v1) == PMath::Vector3(-1.257324613f, 1.307193817f, 0.436718193f)); } + + TEST(Vector4, OperatorTests) + { + PMath::Vector4 v0(2.4f, 3.1f, 5.6f, -3.7f); + PMath::Vector4 v1(5.1f, 2.5f, 7.2f, 2.6f); + + + v0 += v1; + EXPECT_TRUE(v0 == PMath::Vector4(7.5f, 5.6f, 12.8f, -1.1f)); + + v0 -= v1; + EXPECT_TRUE(v0 == PMath::Vector4(2.4f, 3.1f, 5.6f, -3.7f)); + + v0 *= v1; + EXPECT_TRUE(v0 == PMath::Vector4(12.24f, 7.75f, 40.32f, -9.62f)); + + v0 /= v1; + EXPECT_TRUE(v0 == PMath::Vector4(2.4f, 3.1f, 5.6f, -3.7f)); + + + v0 += 4.0f; + EXPECT_TRUE(v0 == PMath::Vector4(6.4f, 7.1f, 9.6f, 0.3f)); + + v0 -= 4.0f; + EXPECT_TRUE(v0 == PMath::Vector4(2.4f, 3.1f, 5.6f, -3.7f)); + + v0 *= 4.0f; + EXPECT_TRUE(v0 == PMath::Vector4(9.6f, 12.4f, 22.4f, -14.8f)); + + v0 /= 4.0f; + EXPECT_TRUE(v0 == PMath::Vector4(2.4f, 3.1f, 5.6f, -3.7f)); + + // ------------------------------------------ + + PMath::Vector4 r; + + r = v0 + v1; + EXPECT_TRUE(r == PMath::Vector4(7.5f, 5.6f, 12.8f, -1.1f)); + + r = v0 - v1; + EXPECT_TRUE(r == PMath::Vector4(-2.7f, 0.6f, -1.6f, -6.3f)); + + r = v0 * v1; + EXPECT_TRUE(r == PMath::Vector4(12.24f, 7.75f, 40.32f, -9.62f)); + + r = v0 / v1; + EXPECT_TRUE(r == PMath::Vector4(0.470588f, 1.24f, 0.777777777777f, -1.423076923076f)); + + + + r = v0 + 4.0f; + EXPECT_TRUE(r == PMath::Vector4(6.4f, 7.1f, 9.6f, 0.3f)); + + r = v0 - 4.0f; + EXPECT_TRUE(r == PMath::Vector4(-1.6f, -0.9f, 1.6f, -7.7f)); + + r = v0 * 4.0f; + EXPECT_TRUE(r == PMath::Vector4(9.6f, 12.4f, 22.4f, -14.8f)); + + r = v0 / 4.0f; + EXPECT_TRUE(r == PMath::Vector4(0.6f, 0.775f, 1.4f, -0.925f)); + + // -------------------------------------------- + + EXPECT_TRUE(r != PMath::Vector4(0.480588f, 3.24f, 34.5f, 73.3f)); + + EXPECT_FALSE(r != PMath::Vector4(0.6f, 0.775f, 1.4f, -0.925f)); + } + + TEST(Vector4, FunctionTest) + { + PMath::Vector4 v0(2.4f, 3.1f, 5.6f, -3.7f); + PMath::Vector4 v1(5.1f, 2.5f, 7.2f, 2.6f); + PMath::Vector4 n(0.535037f, 0.262273f, 0.755346f, 0.272764f); + + + EXPECT_FLOAT_EQ(PMath::Magnitude(v0), 7.773030297f); + + EXPECT_FLOAT_EQ(PMath::SqrMagnitude(v0), 60.42f); + + EXPECT_FLOAT_EQ(PMath::Angle(v0, v1), 46.83191757_deg); + + EXPECT_FLOAT_EQ(PMath::CosineAngle(v0, v1), 0.68414091f); + + EXPECT_FLOAT_EQ(PMath::Magnitude(PMath::NormalizeV(v0)), 1.0f); + + v0 = PMath::Vector4(2.4f, 3.1f, 5.6f, -3.7f); + EXPECT_FLOAT_EQ(PMath::DotP(v0, v1), 50.69f); + + EXPECT_TRUE(PMath::MaxV(v0, v1) == PMath::Vector4(5.1f, 3.1f, 7.2f, 2.6f)) << PMath::ToString(v0); + + v0 = PMath::Vector4(2.4f, 3.1f, 5.6f, -3.7f); + EXPECT_TRUE(PMath::MinV(v0, v1) == PMath::Vector4(2.4f, 2.5f, 5.6f, -3.7f)) << PMath::ToString(v0); + + EXPECT_TRUE(PMath::NegateV(v0) == PMath::Vector4(-2.4f, -2.5f, -5.6f, 3.7f)) << PMath::ToString(v0); + + EXPECT_TRUE(PMath::CompInverseV(v0) == PMath::Vector4(1.0f / -2.4f, 1.0f / -2.5f, 1.0f / -5.6f, 1.0f / 3.7f)) << PMath::ToString(v0); + + v0 = PMath::Vector4(2.4f, 3.1f, 5.6f, -3.7f); + EXPECT_TRUE(PMath::ClampToMagnitudeV(v0, 6.0f, 7.0f) == PMath::Vector4(2.1613193f, 2.791704135f, 5.043078439f, -3.332034f)) << PMath::ToString(v0); + + v0 = PMath::Vector4(2.4f, 3.1f, 5.6f, -3.7f); + EXPECT_TRUE(PMath::ScaleToMagnitudeV(v0, 7.0f) == PMath::Vector4(2.1613193f, 2.791704135f, 5.043078439f, -3.332034f)) << PMath::ToString(v0); + + v0 = PMath::Vector4(2.4f, 3.1f, 5.6f, -3.7f); + EXPECT_TRUE(PMath::ReflectV(v0, n) == PMath::Vector4(3.290488f, -0.310545f, 2.433628f, 6.601034f)); + + v0 = PMath::Vector4(2.4f, 3.1f, 5.6f, -3.7f); + EXPECT_TRUE(PMath::ProjectV(v0, v1) == PMath::Vector4(2.845245432533568f, 1.394728153202729f, 4.016817081223861f, 1.450517279330839f)); + + v0 = PMath::Vector4(2.4f, 3.1f, 5.6f, -3.7f); + EXPECT_TRUE(PMath::RejectV(v0, v1) == PMath::Vector4(-0.445245432533f, 1.705271846797271f, 1.583182918776139f, -5.150517279330839f)); + + v0 = PMath::Vector4(2.4f, 3.1f, 5.6f, -3.7f); + EXPECT_TRUE(PMath::PerspectiveDivideV(v0) == PMath::Vector4(1.0f / 2.4f, 1.0f / 3.1f, 1.0f / 5.6f, 1.0f / -3.7f)); + + + v0 = PMath::Vector4(2.4f, 3.1f, 5.6f, -3.7f); + // EXPECT_FLOAT_EQ(PMath::SqrMagnitude(PMath::Normalize(v0)), 1.0f); + // EXPECT_TRUE(PMath::Max(v0, v1) == PMath::Vector4(5.1f, 3.1f, 7.2f, 2.6f)); + // EXPECT_TRUE(PMath::Min(v0, v1) == PMath::Vector4(2.4f, 2.5f, 5.6f, -3.7f)); + // EXPECT_TRUE(PMath::ClampToMagnitude(v0, 6.0f, 7.0f) == PMath::Vector4(2.1613193f, 2.791704135f, 5.043078439f, -3.332034f)) << PMath::ToString(v0); + // EXPECT_TRUE(PMath::ScaleToMagnitude(v0, 7.0f) == PMath::Vector4(2.1613193f, 2.791704135f, 5.043078439f, -3.332034f)) << PMath::ToString(v0); + // EXPECT_TRUE(PMath::Reflect(v0, n) == PMath::Vector4(3.290488f, -0.310545f, 2.433628f, 6.601034f)); + // EXPECT_TRUE(PMath::Project(v0, v1) == PMath::Vector4(2.845245432533568f, 1.394728153202729f, 4.016817081223861f, 1.450517279330839f)); + // EXPECT_TRUE(PMath::Reject(v0, v1) == PMath::Vector4(2.845245432533568f, 1.394728153202729f, 4.016817081223861f, 1.450517279330839f)); + // EXPECT_TRUE(PMath::PerspectiveDivide(v0) == PMath::Vector4(1.0f / 2.4f, 1.0f / 3.1f, 1.0f / 5.6f, 1.0f / -3.7f)); + + // EXPECT_TRUE(PMath::CompInverseV(v0) == PMath::Vector4(1.0f / -2.4f, 1.0f / -2.5f, 1.0f / -5.6f, 1.0f / 3.7f)); + } + } \ No newline at end of file