266 lines
9.3 KiB
C++
266 lines
9.3 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#include "Utils.h"
|
|
#include "Catch2Includes.h"
|
|
|
|
TEST_CASE("AlignDown")
|
|
{
|
|
REQUIRE(AutoRTFM::AlignDown(0, 1) == 0);
|
|
REQUIRE(AutoRTFM::AlignDown(1, 1) == 1);
|
|
REQUIRE(AutoRTFM::AlignDown(2, 1) == 2);
|
|
REQUIRE(AutoRTFM::AlignDown(3, 1) == 3);
|
|
REQUIRE(AutoRTFM::AlignDown(4, 1) == 4);
|
|
REQUIRE(AutoRTFM::AlignDown(5, 1) == 5);
|
|
REQUIRE(AutoRTFM::AlignDown(6, 1) == 6);
|
|
REQUIRE(AutoRTFM::AlignDown(7, 1) == 7);
|
|
REQUIRE(AutoRTFM::AlignDown(8, 1) == 8);
|
|
|
|
REQUIRE(AutoRTFM::AlignDown(0, 2) == 0);
|
|
REQUIRE(AutoRTFM::AlignDown(1, 2) == 0);
|
|
REQUIRE(AutoRTFM::AlignDown(2, 2) == 2);
|
|
REQUIRE(AutoRTFM::AlignDown(3, 2) == 2);
|
|
REQUIRE(AutoRTFM::AlignDown(4, 2) == 4);
|
|
REQUIRE(AutoRTFM::AlignDown(5, 2) == 4);
|
|
REQUIRE(AutoRTFM::AlignDown(6, 2) == 6);
|
|
REQUIRE(AutoRTFM::AlignDown(7, 2) == 6);
|
|
REQUIRE(AutoRTFM::AlignDown(8, 2) == 8);
|
|
|
|
REQUIRE(AutoRTFM::AlignDown(0, 4) == 0);
|
|
REQUIRE(AutoRTFM::AlignDown(1, 4) == 0);
|
|
REQUIRE(AutoRTFM::AlignDown(2, 4) == 0);
|
|
REQUIRE(AutoRTFM::AlignDown(3, 4) == 0);
|
|
REQUIRE(AutoRTFM::AlignDown(4, 4) == 4);
|
|
REQUIRE(AutoRTFM::AlignDown(5, 4) == 4);
|
|
REQUIRE(AutoRTFM::AlignDown(6, 4) == 4);
|
|
REQUIRE(AutoRTFM::AlignDown(7, 4) == 4);
|
|
REQUIRE(AutoRTFM::AlignDown(8, 4) == 8);
|
|
|
|
REQUIRE(AutoRTFM::AlignDown(0, 8) == 0);
|
|
REQUIRE(AutoRTFM::AlignDown(1, 8) == 0);
|
|
REQUIRE(AutoRTFM::AlignDown(2, 8) == 0);
|
|
REQUIRE(AutoRTFM::AlignDown(3, 8) == 0);
|
|
REQUIRE(AutoRTFM::AlignDown(4, 8) == 0);
|
|
REQUIRE(AutoRTFM::AlignDown(5, 8) == 0);
|
|
REQUIRE(AutoRTFM::AlignDown(6, 8) == 0);
|
|
REQUIRE(AutoRTFM::AlignDown(7, 8) == 0);
|
|
REQUIRE(AutoRTFM::AlignDown(8, 8) == 8);
|
|
}
|
|
|
|
TEST_CASE("AlignUp")
|
|
{
|
|
REQUIRE(AutoRTFM::AlignUp(0, 1) == 0);
|
|
REQUIRE(AutoRTFM::AlignUp(1, 1) == 1);
|
|
REQUIRE(AutoRTFM::AlignUp(2, 1) == 2);
|
|
REQUIRE(AutoRTFM::AlignUp(3, 1) == 3);
|
|
REQUIRE(AutoRTFM::AlignUp(4, 1) == 4);
|
|
REQUIRE(AutoRTFM::AlignUp(5, 1) == 5);
|
|
REQUIRE(AutoRTFM::AlignUp(6, 1) == 6);
|
|
REQUIRE(AutoRTFM::AlignUp(7, 1) == 7);
|
|
REQUIRE(AutoRTFM::AlignUp(8, 1) == 8);
|
|
|
|
REQUIRE(AutoRTFM::AlignUp(0, 2) == 0);
|
|
REQUIRE(AutoRTFM::AlignUp(1, 2) == 2);
|
|
REQUIRE(AutoRTFM::AlignUp(2, 2) == 2);
|
|
REQUIRE(AutoRTFM::AlignUp(3, 2) == 4);
|
|
REQUIRE(AutoRTFM::AlignUp(4, 2) == 4);
|
|
REQUIRE(AutoRTFM::AlignUp(5, 2) == 6);
|
|
REQUIRE(AutoRTFM::AlignUp(6, 2) == 6);
|
|
REQUIRE(AutoRTFM::AlignUp(7, 2) == 8);
|
|
REQUIRE(AutoRTFM::AlignUp(8, 2) == 8);
|
|
|
|
REQUIRE(AutoRTFM::AlignUp(0, 4) == 0);
|
|
REQUIRE(AutoRTFM::AlignUp(1, 4) == 4);
|
|
REQUIRE(AutoRTFM::AlignUp(2, 4) == 4);
|
|
REQUIRE(AutoRTFM::AlignUp(3, 4) == 4);
|
|
REQUIRE(AutoRTFM::AlignUp(4, 4) == 4);
|
|
REQUIRE(AutoRTFM::AlignUp(5, 4) == 8);
|
|
REQUIRE(AutoRTFM::AlignUp(6, 4) == 8);
|
|
REQUIRE(AutoRTFM::AlignUp(7, 4) == 8);
|
|
REQUIRE(AutoRTFM::AlignUp(8, 4) == 8);
|
|
|
|
REQUIRE(AutoRTFM::AlignUp(0, 8) == 0);
|
|
REQUIRE(AutoRTFM::AlignUp(1, 8) == 8);
|
|
REQUIRE(AutoRTFM::AlignUp(2, 8) == 8);
|
|
REQUIRE(AutoRTFM::AlignUp(3, 8) == 8);
|
|
REQUIRE(AutoRTFM::AlignUp(4, 8) == 8);
|
|
REQUIRE(AutoRTFM::AlignUp(5, 8) == 8);
|
|
REQUIRE(AutoRTFM::AlignUp(6, 8) == 8);
|
|
REQUIRE(AutoRTFM::AlignUp(7, 8) == 8);
|
|
REQUIRE(AutoRTFM::AlignUp(8, 8) == 8);
|
|
}
|
|
|
|
TEST_CASE("RoundDown")
|
|
{
|
|
REQUIRE(AutoRTFM::RoundDown(0, 1) == 0);
|
|
REQUIRE(AutoRTFM::RoundDown(1, 1) == 1);
|
|
REQUIRE(AutoRTFM::RoundDown(2, 1) == 2);
|
|
REQUIRE(AutoRTFM::RoundDown(3, 1) == 3);
|
|
REQUIRE(AutoRTFM::RoundDown(4, 1) == 4);
|
|
REQUIRE(AutoRTFM::RoundDown(5, 1) == 5);
|
|
REQUIRE(AutoRTFM::RoundDown(6, 1) == 6);
|
|
REQUIRE(AutoRTFM::RoundDown(7, 1) == 7);
|
|
REQUIRE(AutoRTFM::RoundDown(8, 1) == 8);
|
|
|
|
REQUIRE(AutoRTFM::RoundDown(0, 2) == 0);
|
|
REQUIRE(AutoRTFM::RoundDown(1, 2) == 0);
|
|
REQUIRE(AutoRTFM::RoundDown(2, 2) == 2);
|
|
REQUIRE(AutoRTFM::RoundDown(3, 2) == 2);
|
|
REQUIRE(AutoRTFM::RoundDown(4, 2) == 4);
|
|
REQUIRE(AutoRTFM::RoundDown(5, 2) == 4);
|
|
REQUIRE(AutoRTFM::RoundDown(6, 2) == 6);
|
|
REQUIRE(AutoRTFM::RoundDown(7, 2) == 6);
|
|
REQUIRE(AutoRTFM::RoundDown(8, 2) == 8);
|
|
|
|
REQUIRE(AutoRTFM::RoundDown(0, 3) == 0);
|
|
REQUIRE(AutoRTFM::RoundDown(1, 3) == 0);
|
|
REQUIRE(AutoRTFM::RoundDown(2, 3) == 0);
|
|
REQUIRE(AutoRTFM::RoundDown(3, 3) == 3);
|
|
REQUIRE(AutoRTFM::RoundDown(4, 3) == 3);
|
|
REQUIRE(AutoRTFM::RoundDown(5, 3) == 3);
|
|
REQUIRE(AutoRTFM::RoundDown(6, 3) == 6);
|
|
REQUIRE(AutoRTFM::RoundDown(7, 3) == 6);
|
|
REQUIRE(AutoRTFM::RoundDown(8, 3) == 6);
|
|
|
|
REQUIRE(AutoRTFM::RoundDown(0, 4) == 0);
|
|
REQUIRE(AutoRTFM::RoundDown(1, 4) == 0);
|
|
REQUIRE(AutoRTFM::RoundDown(2, 4) == 0);
|
|
REQUIRE(AutoRTFM::RoundDown(3, 4) == 0);
|
|
REQUIRE(AutoRTFM::RoundDown(4, 4) == 4);
|
|
REQUIRE(AutoRTFM::RoundDown(5, 4) == 4);
|
|
REQUIRE(AutoRTFM::RoundDown(6, 4) == 4);
|
|
REQUIRE(AutoRTFM::RoundDown(7, 4) == 4);
|
|
REQUIRE(AutoRTFM::RoundDown(8, 4) == 8);
|
|
|
|
REQUIRE(AutoRTFM::RoundDown(0, 5) == 0);
|
|
REQUIRE(AutoRTFM::RoundDown(1, 5) == 0);
|
|
REQUIRE(AutoRTFM::RoundDown(2, 5) == 0);
|
|
REQUIRE(AutoRTFM::RoundDown(3, 5) == 0);
|
|
REQUIRE(AutoRTFM::RoundDown(4, 5) == 0);
|
|
REQUIRE(AutoRTFM::RoundDown(5, 5) == 5);
|
|
REQUIRE(AutoRTFM::RoundDown(6, 5) == 5);
|
|
REQUIRE(AutoRTFM::RoundDown(7, 5) == 5);
|
|
REQUIRE(AutoRTFM::RoundDown(8, 5) == 5);
|
|
|
|
REQUIRE(AutoRTFM::RoundDown(0, 6) == 0);
|
|
REQUIRE(AutoRTFM::RoundDown(1, 6) == 0);
|
|
REQUIRE(AutoRTFM::RoundDown(2, 6) == 0);
|
|
REQUIRE(AutoRTFM::RoundDown(3, 6) == 0);
|
|
REQUIRE(AutoRTFM::RoundDown(4, 6) == 0);
|
|
REQUIRE(AutoRTFM::RoundDown(5, 6) == 0);
|
|
REQUIRE(AutoRTFM::RoundDown(6, 6) == 6);
|
|
REQUIRE(AutoRTFM::RoundDown(7, 6) == 6);
|
|
REQUIRE(AutoRTFM::RoundDown(8, 6) == 6);
|
|
|
|
REQUIRE(AutoRTFM::RoundDown(0, 7) == 0);
|
|
REQUIRE(AutoRTFM::RoundDown(1, 7) == 0);
|
|
REQUIRE(AutoRTFM::RoundDown(2, 7) == 0);
|
|
REQUIRE(AutoRTFM::RoundDown(3, 7) == 0);
|
|
REQUIRE(AutoRTFM::RoundDown(4, 7) == 0);
|
|
REQUIRE(AutoRTFM::RoundDown(5, 7) == 0);
|
|
REQUIRE(AutoRTFM::RoundDown(6, 7) == 0);
|
|
REQUIRE(AutoRTFM::RoundDown(7, 7) == 7);
|
|
REQUIRE(AutoRTFM::RoundDown(8, 7) == 7);
|
|
|
|
REQUIRE(AutoRTFM::RoundDown(0, 8) == 0);
|
|
REQUIRE(AutoRTFM::RoundDown(1, 8) == 0);
|
|
REQUIRE(AutoRTFM::RoundDown(2, 8) == 0);
|
|
REQUIRE(AutoRTFM::RoundDown(3, 8) == 0);
|
|
REQUIRE(AutoRTFM::RoundDown(4, 8) == 0);
|
|
REQUIRE(AutoRTFM::RoundDown(5, 8) == 0);
|
|
REQUIRE(AutoRTFM::RoundDown(6, 8) == 0);
|
|
REQUIRE(AutoRTFM::RoundDown(7, 8) == 0);
|
|
REQUIRE(AutoRTFM::RoundDown(8, 8) == 8);
|
|
}
|
|
|
|
TEST_CASE("RoundUp")
|
|
{
|
|
REQUIRE(AutoRTFM::RoundUp(0, 1) == 0);
|
|
REQUIRE(AutoRTFM::RoundUp(1, 1) == 1);
|
|
REQUIRE(AutoRTFM::RoundUp(2, 1) == 2);
|
|
REQUIRE(AutoRTFM::RoundUp(3, 1) == 3);
|
|
REQUIRE(AutoRTFM::RoundUp(4, 1) == 4);
|
|
REQUIRE(AutoRTFM::RoundUp(5, 1) == 5);
|
|
REQUIRE(AutoRTFM::RoundUp(6, 1) == 6);
|
|
REQUIRE(AutoRTFM::RoundUp(7, 1) == 7);
|
|
REQUIRE(AutoRTFM::RoundUp(8, 1) == 8);
|
|
|
|
REQUIRE(AutoRTFM::RoundUp(0, 2) == 0);
|
|
REQUIRE(AutoRTFM::RoundUp(1, 2) == 2);
|
|
REQUIRE(AutoRTFM::RoundUp(2, 2) == 2);
|
|
REQUIRE(AutoRTFM::RoundUp(3, 2) == 4);
|
|
REQUIRE(AutoRTFM::RoundUp(4, 2) == 4);
|
|
REQUIRE(AutoRTFM::RoundUp(5, 2) == 6);
|
|
REQUIRE(AutoRTFM::RoundUp(6, 2) == 6);
|
|
REQUIRE(AutoRTFM::RoundUp(7, 2) == 8);
|
|
REQUIRE(AutoRTFM::RoundUp(8, 2) == 8);
|
|
|
|
REQUIRE(AutoRTFM::RoundUp(0, 3) == 0);
|
|
REQUIRE(AutoRTFM::RoundUp(1, 3) == 3);
|
|
REQUIRE(AutoRTFM::RoundUp(2, 3) == 3);
|
|
REQUIRE(AutoRTFM::RoundUp(3, 3) == 3);
|
|
REQUIRE(AutoRTFM::RoundUp(4, 3) == 6);
|
|
REQUIRE(AutoRTFM::RoundUp(5, 3) == 6);
|
|
REQUIRE(AutoRTFM::RoundUp(6, 3) == 6);
|
|
REQUIRE(AutoRTFM::RoundUp(7, 3) == 9);
|
|
REQUIRE(AutoRTFM::RoundUp(8, 3) == 9);
|
|
|
|
REQUIRE(AutoRTFM::RoundUp(0, 4) == 0);
|
|
REQUIRE(AutoRTFM::RoundUp(1, 4) == 4);
|
|
REQUIRE(AutoRTFM::RoundUp(2, 4) == 4);
|
|
REQUIRE(AutoRTFM::RoundUp(3, 4) == 4);
|
|
REQUIRE(AutoRTFM::RoundUp(4, 4) == 4);
|
|
REQUIRE(AutoRTFM::RoundUp(5, 4) == 8);
|
|
REQUIRE(AutoRTFM::RoundUp(6, 4) == 8);
|
|
REQUIRE(AutoRTFM::RoundUp(7, 4) == 8);
|
|
REQUIRE(AutoRTFM::RoundUp(8, 4) == 8);
|
|
|
|
REQUIRE(AutoRTFM::RoundUp(0, 5) == 0);
|
|
REQUIRE(AutoRTFM::RoundUp(1, 5) == 5);
|
|
REQUIRE(AutoRTFM::RoundUp(2, 5) == 5);
|
|
REQUIRE(AutoRTFM::RoundUp(3, 5) == 5);
|
|
REQUIRE(AutoRTFM::RoundUp(4, 5) == 5);
|
|
REQUIRE(AutoRTFM::RoundUp(5, 5) == 5);
|
|
REQUIRE(AutoRTFM::RoundUp(6, 5) == 10);
|
|
REQUIRE(AutoRTFM::RoundUp(7, 5) == 10);
|
|
REQUIRE(AutoRTFM::RoundUp(8, 5) == 10);
|
|
|
|
REQUIRE(AutoRTFM::RoundUp(0, 6) == 0);
|
|
REQUIRE(AutoRTFM::RoundUp(1, 6) == 6);
|
|
REQUIRE(AutoRTFM::RoundUp(2, 6) == 6);
|
|
REQUIRE(AutoRTFM::RoundUp(3, 6) == 6);
|
|
REQUIRE(AutoRTFM::RoundUp(4, 6) == 6);
|
|
REQUIRE(AutoRTFM::RoundUp(5, 6) == 6);
|
|
REQUIRE(AutoRTFM::RoundUp(6, 6) == 6);
|
|
REQUIRE(AutoRTFM::RoundUp(7, 6) == 12);
|
|
REQUIRE(AutoRTFM::RoundUp(8, 6) == 12);
|
|
|
|
REQUIRE(AutoRTFM::RoundUp(0, 7) == 0);
|
|
REQUIRE(AutoRTFM::RoundUp(1, 7) == 7);
|
|
REQUIRE(AutoRTFM::RoundUp(2, 7) == 7);
|
|
REQUIRE(AutoRTFM::RoundUp(3, 7) == 7);
|
|
REQUIRE(AutoRTFM::RoundUp(4, 7) == 7);
|
|
REQUIRE(AutoRTFM::RoundUp(5, 7) == 7);
|
|
REQUIRE(AutoRTFM::RoundUp(6, 7) == 7);
|
|
REQUIRE(AutoRTFM::RoundUp(7, 7) == 7);
|
|
REQUIRE(AutoRTFM::RoundUp(8, 7) == 14);
|
|
|
|
REQUIRE(AutoRTFM::RoundUp(0, 8) == 0);
|
|
REQUIRE(AutoRTFM::RoundUp(1, 8) == 8);
|
|
REQUIRE(AutoRTFM::RoundUp(2, 8) == 8);
|
|
REQUIRE(AutoRTFM::RoundUp(3, 8) == 8);
|
|
REQUIRE(AutoRTFM::RoundUp(4, 8) == 8);
|
|
REQUIRE(AutoRTFM::RoundUp(5, 8) == 8);
|
|
REQUIRE(AutoRTFM::RoundUp(6, 8) == 8);
|
|
REQUIRE(AutoRTFM::RoundUp(7, 8) == 8);
|
|
REQUIRE(AutoRTFM::RoundUp(8, 8) == 8);
|
|
}
|
|
|
|
TEST_CASE("Lerp")
|
|
{
|
|
REQUIRE_THAT(AutoRTFM::Lerp(2.0, 4.0, -0.5), Catch::Matchers::WithinRel(1.0, 1e-5));
|
|
REQUIRE_THAT(AutoRTFM::Lerp(2.0, 4.0, +0.0), Catch::Matchers::WithinRel(2.0, 1e-5));
|
|
REQUIRE_THAT(AutoRTFM::Lerp(2.0, 4.0, +0.5), Catch::Matchers::WithinRel(3.0, 1e-5));
|
|
REQUIRE_THAT(AutoRTFM::Lerp(2.0, 4.0, +1.0), Catch::Matchers::WithinRel(4.0, 1e-5));
|
|
REQUIRE_THAT(AutoRTFM::Lerp(2.0, 4.0, +1.5), Catch::Matchers::WithinRel(5.0, 1e-5));
|
|
}
|