From 40d4f211294298b57867faec827761980d6ab75d Mon Sep 17 00:00:00 2001 From: Daniel Stevens Date: Tue, 4 Mar 2025 21:54:06 -0700 Subject: [PATCH] Add `scaleLinear` unit test with mixed unsigned types The integer promotion rules that apply to this case can trigger overflow issues with the previous `scaleLinear` code, though are correctly handled by the new update. --- test/Math/MathUtils.test.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/test/Math/MathUtils.test.cpp b/test/Math/MathUtils.test.cpp index 960af673..0990f275 100644 --- a/test/Math/MathUtils.test.cpp +++ b/test/Math/MathUtils.test.cpp @@ -124,6 +124,14 @@ TEST(MathUtils, scaleLinearForwardUint32toUint8) { EXPECT_EQ(uint8_t{255}, NAS2D::scaleLinear(uint32_t{10000}, uint32_t{0}, uint32_t{10000}, uint8_t{0}, uint8_t{255})); } +TEST(MathUtils, scaleLinearReverseUint32toUint8) { + EXPECT_EQ(uint8_t{255}, NAS2D::scaleLinear(uint32_t{0}, uint32_t{0}, uint32_t{10000}, uint8_t{255}, uint8_t{0})); + EXPECT_EQ(uint8_t{191}, NAS2D::scaleLinear(uint32_t{2500}, uint32_t{0}, uint32_t{10000}, uint8_t{255}, uint8_t{0})); + EXPECT_EQ(uint8_t{127}, NAS2D::scaleLinear(uint32_t{5000}, uint32_t{0}, uint32_t{10000}, uint8_t{255}, uint8_t{0})); + EXPECT_EQ(uint8_t{63}, NAS2D::scaleLinear(uint32_t{7500}, uint32_t{0}, uint32_t{10000}, uint8_t{255}, uint8_t{0})); + EXPECT_EQ(uint8_t{0}, NAS2D::scaleLinear(uint32_t{10000}, uint32_t{0}, uint32_t{10000}, uint8_t{255}, uint8_t{0})); +} + TEST(MathUtils, scaleLinearFloatFahrenheitToCelsius) { // Fahrenheit to Celsius EXPECT_NEAR(-18.33333f, NAS2D::scaleLinear(-1.0f, 32.0f, 212.0f, 0.0f, 100.0f), 0.0001f);