mirror of
https://github.com/HandmadeMath/HandmadeMath.git
synced 2025-09-05 17:58:14 +00:00

Remove V2I, V3I, V4I (and style changes) Totally useless. Add update tool, update docs Tweak docs Create ci.yml Big style pass Maybe fix CI on Windows Report coverage errors Fix a missing coverage case Try setting up MSVC another way Update readmes Fix remaining use of the name UpdateTool
54 lines
1.8 KiB
C
54 lines
1.8 KiB
C
#include "../HandmadeTest.h"
|
|
|
|
TEST(ScalarMath, Trigonometry)
|
|
{
|
|
// We have to be a little looser with our equality constraint
|
|
// because of floating-point precision issues.
|
|
const float trigAbsError = 0.0001f;
|
|
|
|
EXPECT_NEAR(HMM_SinF(0.0f), 0.0f, trigAbsError);
|
|
EXPECT_NEAR(HMM_SinF(HMM_PI32 / 2), 1.0f, trigAbsError);
|
|
EXPECT_NEAR(HMM_SinF(HMM_PI32), 0.0f, trigAbsError);
|
|
EXPECT_NEAR(HMM_SinF(3 * HMM_PI32 / 2), -1.0f, trigAbsError);
|
|
EXPECT_NEAR(HMM_SinF(-HMM_PI32 / 2), -1.0f, trigAbsError);
|
|
|
|
EXPECT_NEAR(HMM_CosF(0.0f), 1.0f, trigAbsError);
|
|
EXPECT_NEAR(HMM_CosF(HMM_PI32 / 2), 0.0f, trigAbsError);
|
|
EXPECT_NEAR(HMM_CosF(HMM_PI32), -1.0f, trigAbsError);
|
|
EXPECT_NEAR(HMM_CosF(3 * HMM_PI32 / 2), 0.0f, trigAbsError);
|
|
EXPECT_NEAR(HMM_CosF(-HMM_PI32), -1.0f, trigAbsError);
|
|
|
|
EXPECT_NEAR(HMM_TanF(0.0f), 0.0f, trigAbsError);
|
|
EXPECT_NEAR(HMM_TanF(HMM_PI32 / 4), 1.0f, trigAbsError);
|
|
EXPECT_NEAR(HMM_TanF(3 * HMM_PI32 / 4), -1.0f, trigAbsError);
|
|
EXPECT_NEAR(HMM_TanF(HMM_PI32), 0.0f, trigAbsError);
|
|
EXPECT_NEAR(HMM_TanF(-HMM_PI32 / 4), -1.0f, trigAbsError);
|
|
|
|
// This isn't the most rigorous because we're really just sanity-
|
|
// checking that things work by default.
|
|
}
|
|
|
|
TEST(ScalarMath, SquareRoot)
|
|
{
|
|
EXPECT_FLOAT_EQ(HMM_SqrtF(16.0f), 4.0f);
|
|
}
|
|
|
|
TEST(ScalarMath, RSquareRootF)
|
|
{
|
|
EXPECT_NEAR(HMM_InvSqrtF(10.0f), 0.31616211f, 0.0001f);
|
|
}
|
|
|
|
TEST(ScalarMath, Lerp)
|
|
{
|
|
EXPECT_FLOAT_EQ(HMM_Lerp(-2.0f, 0.0f, 2.0f), -2.0f);
|
|
EXPECT_FLOAT_EQ(HMM_Lerp(-2.0f, 0.5f, 2.0f), 0.0f);
|
|
EXPECT_FLOAT_EQ(HMM_Lerp(-2.0f, 1.0f, 2.0f), 2.0f);
|
|
}
|
|
|
|
TEST(ScalarMath, Clamp)
|
|
{
|
|
EXPECT_FLOAT_EQ(HMM_Clamp(-2.0f, 0.0f, 2.0f), 0.0f);
|
|
EXPECT_FLOAT_EQ(HMM_Clamp(-2.0f, -3.0f, 2.0f), -2.0f);
|
|
EXPECT_FLOAT_EQ(HMM_Clamp(-2.0f, 3.0f, 2.0f), 2.0f);
|
|
}
|