Add Vector4 to tests.

This commit is contained in:
THoehne 2024-07-24 23:01:18 +02:00
parent d47b4076a9
commit 6f3fd9053d

@ -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));
}
}