Translated tests for Math/Lerp

This commit is contained in:
Leonetienne 2022-02-11 11:22:23 +01:00
parent 879d2e9b91
commit baa22608a6
5 changed files with 186 additions and 202 deletions

View File

@ -13,6 +13,7 @@ add_executable(Tests
Math__Oscillate.cpp
Math__Abs.cpp
Math__Clamp.cpp
Math__Lerp.cpp
)
target_link_libraries(Tests Eule)

View File

@ -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;
}
};
}

View File

@ -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;
}
};
}

79
Test/Math__Clamp.cpp Normal file
View File

@ -0,0 +1,79 @@
#include "Catch2.h"
#include <Eule/Math.h>
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;
}

106
Test/Math__Lerp.cpp Normal file
View File

@ -0,0 +1,106 @@
#include "Catch2.h"
#include <Eule/Math.h>
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;
}