Add AZStd::lerp math function, based on C++20 (#3468)
* Add AZStd::lerp math function, based on c++20 Signed-off-by: nemerle <96597+nemerle@users.noreply.github.com> * Add unit test for AZStd::lerp, based on libc++ ones Signed-off-by: nemerle <96597+nemerle@users.noreply.github.com> * written a reduced set of lerp tests, but now the license is correct Signed-off-by: nemerle <96597+nemerle@users.noreply.github.com> * Update Code/Framework/AzCore/AzCore/std/math.h Co-authored-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com> Signed-off-by: nemerle <96597+nemerle@users.noreply.github.com> * Update Code/Framework/AzCore/Tests/AZStd/Math.cpp Co-authored-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com> Signed-off-by: nemerle <96597+nemerle@users.noreply.github.com> * fix the github suggestion merge Signed-off-by: nemerle <96597+nemerle@users.noreply.github.com> * Copy some AZ::Lerp tests to std::lerp test suite + clang-format Signed-off-by: nemerle <96597+nemerle@users.noreply.github.com> * Cleanup lerp test cases Remove comments that suggested very heavy tests that required things like `for every t1..` Signed-off-by: nemerle <96597+nemerle@users.noreply.github.com> * Fix unit test compilation issues Signed-off-by: nemerle <96597+nemerle@users.noreply.github.com> * fix whitespace issue Signed-off-by: nemerle <96597+nemerle@users.noreply.github.com> * Use `TypeParam` in TYPED_TEST Co-authored-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com> Signed-off-by: nemerle <96597+nemerle@users.noreply.github.com> * Remove unneeded new-lines Signed-off-by: nemerle <96597+nemerle@users.noreply.github.com> * remove unused infinity Signed-off-by: nemerle <96597+nemerle@users.noreply.github.com> Co-authored-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com>
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
/*
|
||||
* Copyright (c) Contributors to the Open 3D Engine Project.
|
||||
* For complete copyright and license terms please see the LICENSE at the root of this distribution.
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
*
|
||||
*/
|
||||
|
||||
#include <AzCore/UnitTest/TestTypes.h>
|
||||
#include <AzCore/std/math.h>
|
||||
|
||||
namespace UnitTest
|
||||
{
|
||||
template<typename T>
|
||||
class StdMathTest : public ::testing::Test
|
||||
{
|
||||
};
|
||||
|
||||
using MathTestConfigs = ::testing::Types<float, double, long double>;
|
||||
TYPED_TEST_CASE(StdMathTest, MathTestConfigs);
|
||||
|
||||
TYPED_TEST(StdMathTest, LerpOperations)
|
||||
{
|
||||
using AZStd::lerp;
|
||||
using ::testing::Eq;
|
||||
using T = TypeParam;
|
||||
|
||||
constexpr T maxNumber = AZStd::numeric_limits<T>::max();
|
||||
constexpr T eps = AZStd::numeric_limits<T>::epsilon();
|
||||
constexpr T a{ 42 };
|
||||
|
||||
// exactness: lerp(a,b,0)==a && lerp(a,b,1)==b
|
||||
EXPECT_THAT(lerp(eps, maxNumber, T(0)), Eq(eps));
|
||||
EXPECT_THAT(lerp(eps, maxNumber, T(1)), Eq(maxNumber));
|
||||
|
||||
// consistency: lerp(a,a,t)==a
|
||||
EXPECT_THAT(lerp(a, a, T(0.5)), Eq(a));
|
||||
EXPECT_THAT(lerp(eps, eps, T(0.5)), Eq(eps));
|
||||
|
||||
// a few generic tests taken from MathUtilTests.cpp
|
||||
EXPECT_EQ(T(2.5), lerp(T(2), T(4), T(0.25)));
|
||||
EXPECT_EQ(T(6.0), lerp(T(2), T(4), T(2.0)));
|
||||
EXPECT_EQ(T(3.5), lerp(T(2), T(4), T(0.75)));
|
||||
EXPECT_EQ(T(0.0), lerp(T(2), T(4), T(-1.0)));
|
||||
}
|
||||
} // namespace UnitTest
|
||||
Reference in New Issue
Block a user