diff --git a/Test/CMakeLists.txt b/Test/CMakeLists.txt index b2d6e11..1afd106 100644 --- a/Test/CMakeLists.txt +++ b/Test/CMakeLists.txt @@ -13,6 +13,7 @@ add_executable(Tests Math__Oscillate.cpp Math__Abs.cpp Math__Clamp.cpp + Math__Lerp.cpp ) target_link_libraries(Tests Eule) diff --git a/Test/Math_Clamp.cpp b/Test/Math_Clamp.cpp deleted file mode 100644 index 2fe71c1..0000000 --- a/Test/Math_Clamp.cpp +++ /dev/null @@ -1,87 +0,0 @@ -#include "CppUnitTest.h" -#include "../Eule/Math.h" - -using namespace Microsoft::VisualStudio::CppUnitTestFramework; -using namespace Eule; - -/** Equivalence classes: -* -- min < v < max -> v -* -- v < min < max -> min -* -- min < max < v -> max -* -- v == min < max -> min -* -- min < v == max -> max -* -- v < max == min -> max -* -- max == min < v -> max -* -- min == v == max -> max -* -- max < v < min -> min -*/ - -namespace _Math -{ - TEST_CLASS(_Clamp) - { - public: - // min < v < max -> v - TEST_METHOD(min_lt_v_lt_max) - { - Assert::AreEqual(6.0, Math::Clamp(6.0, 4.0, 9.0)); - return; - } - - // v < min < max -> min - TEST_METHOD(v_lt_min_max) - { - Assert::AreEqual(6.0, Math::Clamp(4.0, 6.0, 9.0)); - return; - } - - // min < max < v -> max - TEST_METHOD(min_lt_max_lt_v) - { - Assert::AreEqual(9.0, Math::Clamp(12.0, 6.0, 9.0)); - return; - } - - // v == min < max -> min - TEST_METHOD(v_eq_min_lt_max) - { - Assert::AreEqual(6.0, Math::Clamp(6.0, 6.0, 9.0)); - return; - } - - // min < v == max -> max - TEST_METHOD(min_lt_v_eq_max) - { - Assert::AreEqual(9.0, Math::Clamp(9.0, 6.0, 9.0)); - return; - } - - // v < max == min -> max - TEST_METHOD(v_lt_max_eq_min) - { - Assert::AreEqual(9.0, Math::Clamp(9.0, 6.0, 9.0)); - return; - } - - // max == min < v -> max - TEST_METHOD(max_eq_min_lt_v) - { - Assert::AreEqual(9.0, Math::Clamp(15.0, 9.0, 9.0)); - return; - } - - // min == v == max -> max - TEST_METHOD(min_eq_v_eq_max) - { - Assert::AreEqual(15.0, Math::Clamp(15.0, 15.0, 15.0)); - return; - } - - // max < v < min -> min - TEST_METHOD(max_lt_v_lt_min) - { - Assert::AreEqual(7.0, Math::Clamp(4.0, 7.0, 3.0)); - return; - } - }; -} diff --git a/Test/Math_Lerp.cpp b/Test/Math_Lerp.cpp deleted file mode 100644 index 5ae0ab3..0000000 --- a/Test/Math_Lerp.cpp +++ /dev/null @@ -1,115 +0,0 @@ -#include "CppUnitTest.h" -#include "../Eule/Math.h" - -using namespace Microsoft::VisualStudio::CppUnitTestFramework; -using namespace Eule; - -/** Equivalence classes: -* -- a < b, 0 < t < 1 -> a < result < b -* -- a > b, 0 < t < 1 -> b < result < a -* -- a == b, 0 < t < 1 -> result == b -* -* -- a < b, t < 0 -> result < a -* -- a > b, t < 0 -> result > a -* -- a == b, t < 0 -> result == b -* -* -- a < b, t > 1 -> result > b -* -- a > b, t > 1 -> result < b -* -- a == b, t > 1 -> result == b -* -* -- a == 0 -* -- b == 0 -* -- a == b == 0 -*/ - -namespace _Math -{ - TEST_CLASS(_Lerp) - { - public: - // -- a < b, 0 < t < 1 -> a < result < b - TEST_METHOD(a_lt_b___0_lt_t_lt_1) - { - Assert::AreEqual(1.75, Math::Lerp(1, 2, 0.75)); - return; - } - - // -- a > b, 0 < t < 1 -> b < result < a - TEST_METHOD(a_gt_b___0_lt_t_lt_1) - { - Assert::AreEqual(1.25, Math::Lerp(2, 1, 0.75)); - return; - } - - // -- a == b, 0 < t < 1 -> result == b - TEST_METHOD(a_eq_b___0_lt_t_lt_1) - { - Assert::AreEqual(2.0, Math::Lerp(2, 2, 0.75)); - return; - } - - // -- a < b, t < 0 -> result < a - TEST_METHOD(a_lt_b___t_lt_0) - { - Assert::AreEqual(0.25, Math::Lerp(1, 2, -0.75)); - return; - } - - // -- a > b, t < 0 -> result > a - TEST_METHOD(a_gt_b___t_lt_0) - { - Assert::AreEqual(2.75, Math::Lerp(2, 1, -0.75)); - return; - } - - // -- a == b, t < 0 -> result == b - TEST_METHOD(a_eq_b___t_lt_0) - { - Assert::AreEqual(2.0, Math::Lerp(2, 2, -0.75)); - return; - } - - // -- a < b, t > 1 -> result > b - TEST_METHOD(a_lt_b___t_gt_1) - { - Assert::AreEqual(2.5, Math::Lerp(1, 2, 1.5)); - return; - } - - // -- a > b, t > 1 -> result < b - TEST_METHOD(a_gt_b___t_gt_1) - { - Assert::AreEqual(0.5, Math::Lerp(2, 1, 1.5)); - return; - } - - // -- a == b, t > 1 -> result == b - TEST_METHOD(a_eq_b___t_gt_1) - { - Assert::AreEqual(1.0, Math::Lerp(1, 1, 1.5)); - return; - } - - // -- a == 0 - TEST_METHOD(a_eq_0) - { - Assert::AreEqual(2.25, Math::Lerp(0, 3, 0.75)); - return; - } - - // -- b == 0 - TEST_METHOD(b_eq_0) - { - Assert::AreEqual(0.75, Math::Lerp(3, 0, 0.75)); - return; - } - - // -- a == b == 0 - TEST_METHOD(a_eq_b_eq_0) - { - Assert::AreEqual(0.0, Math::Lerp(0, 0, 0.75)); - return; - } - - }; -} diff --git a/Test/Math__Clamp.cpp b/Test/Math__Clamp.cpp new file mode 100644 index 0000000..7aaa34c --- /dev/null +++ b/Test/Math__Clamp.cpp @@ -0,0 +1,79 @@ +#include "Catch2.h" +#include + +using namespace Eule; + +/** Equivalence classes: +* -- min < v < max -> v +* -- v < min < max -> min +* -- min < max < v -> max +* -- v == min < max -> min +* -- min < v == max -> max +* -- v < max == min -> max +* -- max == min < v -> max +* -- min == v == max -> max +* -- max < v < min -> min +*/ + +// min < v < max -> v +TEST_CASE(__FILE__"/min_lt_v_lt_max", "[Math][Clamp]") +{ + REQUIRE(Math::Clamp(6.0, 4.0, 9.0) == 6.0); + return; +} + +// v < min < max -> min +TEST_CASE(__FILE__"/v_lt_min_max", "[Math][Clamp]") +{ + REQUIRE(Math::Clamp(4.0, 6.0, 9.0) == 6.0); + return; +} + +// min < max < v -> max +TEST_CASE(__FILE__"/min_lt_max_lt_v", "[Math][Clamp]") +{ + REQUIRE(Math::Clamp(12.0, 6.0, 9.0) == 9.0); + return; +} + +// v == min < max -> min +TEST_CASE(__FILE__"/v_eq_min_lt_max", "[Math][Clamp]") +{ + REQUIRE(Math::Clamp(6.0, 6.0, 9.0) == 6.0); + return; +} + +// min < v == max -> max +TEST_CASE(__FILE__"/min_lt_v_eq_max", "[Math][Clamp]") +{ + REQUIRE(Math::Clamp(9.0, 6.0, 9.0) == 9.0); + return; +} + +// v < max == min -> max +TEST_CASE(__FILE__"/v_lt_max_eq_min", "[Math][Clamp]") +{ + REQUIRE(Math::Clamp(9.0, 6.0, 9.0) == 9.0); + return; +} + +// max == min < v -> max +TEST_CASE(__FILE__"/max_eq_min_lt_v", "[Math][Clamp]") +{ + REQUIRE(Math::Clamp(15.0, 9.0, 9.0) == 9.0); + return; +} + +// min == v == max -> max +TEST_CASE(__FILE__"/min_eq_v_eq_max", "[Math][Clamp]") +{ + REQUIRE( Math::Clamp(15.0, 15.0, 15.0) == 15.); + return; +} + +// max < v < min -> min +TEST_CASE(__FILE__"/max_lt_v_lt_min", "[Math][Clamp]") +{ + REQUIRE(Math::Clamp(4.0, 7.0, 3.0) == 7.0); + return; +} diff --git a/Test/Math__Lerp.cpp b/Test/Math__Lerp.cpp new file mode 100644 index 0000000..9d443f8 --- /dev/null +++ b/Test/Math__Lerp.cpp @@ -0,0 +1,106 @@ +#include "Catch2.h" +#include + +using namespace Eule; + +/** Equivalence classes: +* -- a < b, 0 < t < 1 -> a < result < b +* -- a > b, 0 < t < 1 -> b < result < a +* -- a == b, 0 < t < 1 -> result == b +* +* -- a < b, t < 0 -> result < a +* -- a > b, t < 0 -> result > a +* -- a == b, t < 0 -> result == b +* +* -- a < b, t > 1 -> result > b +* -- a > b, t > 1 -> result < b +* -- a == b, t > 1 -> result == b +* +* -- a == 0 +* -- b == 0 +* -- a == b == 0 +*/ + +// -- a < b, 0 < t < 1 -> a < result < b +TEST_CASE(__FILE__"/a_lt_b___0_lt_t_lt_1", "[Math][Lerp]") +{ + REQUIRE(Math::Lerp(1, 2, 0.75) == 1.75); + return; +} + +// -- a > b, 0 < t < 1 -> b < result < a +TEST_CASE(__FILE__"/a_gt_b___0_lt_t_lt_1", "[Math][Lerp]") +{ + REQUIRE(Math::Lerp(2, 1, 0.75) == 1.25); + return; +} + +// -- a == b, 0 < t < 1 -> result == b +TEST_CASE(__FILE__"/a_eq_b___0_lt_t_lt_1", "[Math][Lerp]") +{ + REQUIRE(Math::Lerp(2, 2, 0.75) == 2.0); + return; +} + +// -- a < b, t < 0 -> result < a +TEST_CASE(__FILE__"/a_lt_b___t_lt_0", "[Math][Lerp]") +{ + REQUIRE(Math::Lerp(1, 2, -0.75) == 0.25); + return; +} + +// -- a > b, t < 0 -> result > a +TEST_CASE(__FILE__"/a_gt_b___t_lt_0", "[Math][Lerp]") +{ + REQUIRE(Math::Lerp(2, 1, -0.75) == 2.75); + return; +} + +// -- a == b, t < 0 -> result == b +TEST_CASE(__FILE__"/a_eq_b___t_lt_0", "[Math][Lerp]") +{ + REQUIRE(Math::Lerp(2, 2, -0.75) == 2.0); + return; +} + +// -- a < b, t > 1 -> result > b +TEST_CASE(__FILE__"/a_lt_b___t_gt_1", "[Math][Lerp]") +{ + REQUIRE(Math::Lerp(1, 2, 1.5) == 2.5); + return; +} + +// -- a > b, t > 1 -> result < b +TEST_CASE(__FILE__"/a_gt_b___t_gt_1", "[Math][Lerp]") +{ + REQUIRE(Math::Lerp(2, 1, 1.5) == 0.5); + return; +} + +// -- a == b, t > 1 -> result == b +TEST_CASE(__FILE__"/a_eq_b___t_gt_1", "[Math][Lerp]") +{ + REQUIRE(Math::Lerp(1, 1, 1.5) == 1.0); + return; +} + +// -- a == 0 +TEST_CASE(__FILE__"/a_eq_0", "[Math][Lerp]") +{ + REQUIRE(Math::Lerp(0, 3, 0.75) == 2.25); + return; +} + +// -- b == 0 +TEST_CASE(__FILE__"/b_eq_0", "[Math][Lerp]") +{ + REQUIRE(Math::Lerp(3, 0, 0.75) == 0.75); + return; +} + +// -- a == b == 0 +TEST_CASE(__FILE__"/a_eq_b_eq_0", "[Math][Lerp]") +{ + REQUIRE(Math::Lerp(0, 0, 0.75) == 0.0); + return; +}