Translated tests for Colliders/TrapazoidalPrismCollider

This commit is contained in:
Leonetienne 2022-02-11 15:50:15 +01:00
parent 7675422264
commit b77534a7a1
2 changed files with 158 additions and 159 deletions

View File

@ -29,6 +29,7 @@ add_executable(Tests
Random__RandomInteger.cpp
Random__RandomRange.cpp
Random_RandomIntRange.cpp
TrapazoidalPrismCollider.cpp
)
target_link_libraries(Tests Eule)

View File

@ -1,33 +1,18 @@
#include "CppUnitTest.h"
#include "../Eule/TrapazoidalPrismCollider.h"
#include "../Eule/Quaternion.h"
#include "../_TestingUtilities/HandyMacros.h"
#include "Catch2.h"
#include <Eule/TrapazoidalPrismCollider.h>
#include <Eule/Quaternion.h>
#include <random>
#include <array>
#include <sstream>
using namespace Microsoft::VisualStudio::CppUnitTestFramework;
using namespace Eule;
using TPC = TrapazoidalPrismCollider;
namespace Colliders
{
TEST_CLASS(_TrapazoidalPrismCollider)
{
private:
std::mt19937 rng;
public:
// Constructor
_TrapazoidalPrismCollider()
{
rng = std::mt19937((std::random_device())());
return;
namespace {
static std::mt19937 rng = std::mt19937((std::random_device())());
}
// Tests that all vertices can be set individually, and at once
TEST_METHOD(Can_Set_Each_Vertex)
TEST_CASE(__FILE__"/Can_Set_Each_Vertex", "[TrapazoidalPrismCollider][Collider]")
{
// All vertex values are unique
TPC tpc;
@ -40,14 +25,29 @@ namespace Colliders
tpc.SetVertex(TPC::BACK | TPC::RIGHT | TPC::BOTTOM, Vector3d(1, -1, -1) * 7);
tpc.SetVertex(TPC::BACK | TPC::RIGHT | TPC::TOP, Vector3d(1, 1, -1) * 8);
Assert::IsTrue(tpc.GetVertex(TPC::FRONT | TPC::LEFT | TPC::BOTTOM) == (Vector3d(-1, -1, 1) * 1), L"FRONT|LEFT|BOTTOM");
Assert::IsTrue(tpc.GetVertex(TPC::FRONT | TPC::LEFT | TPC::TOP) == (Vector3d(-1, 1, 1) * 2), L"FRONT|LEFT|TOP");
Assert::IsTrue(tpc.GetVertex(TPC::BACK | TPC::LEFT | TPC::BOTTOM) == (Vector3d(-1, -1, -1) * 3), L"BACK|LEFT|BOTTOM");
Assert::IsTrue(tpc.GetVertex(TPC::BACK | TPC::LEFT | TPC::TOP) == (Vector3d(-1, 1, -1) * 4), L"BACK|LEFT|TOP");
Assert::IsTrue(tpc.GetVertex(TPC::FRONT | TPC::RIGHT | TPC::BOTTOM) == (Vector3d(1, -1, 1) * 5), L"FRONT|RIGHT|BOTTOM");
Assert::IsTrue(tpc.GetVertex(TPC::FRONT | TPC::RIGHT | TPC::TOP) == (Vector3d(1, 1, 1) * 6), L"FRONT|RIGHT|TOP");
Assert::IsTrue(tpc.GetVertex(TPC::BACK | TPC::RIGHT | TPC::BOTTOM) == (Vector3d(1, -1, -1) * 7), L"BACK|RIGHT|BOTTOM");
Assert::IsTrue(tpc.GetVertex(TPC::BACK | TPC::RIGHT | TPC::TOP) == (Vector3d(1, 1, -1) * 8), L"BACK|RIGHT|TOP");
INFO("FRONT|LEFT|BOTTOM");
REQUIRE(tpc.GetVertex(TPC::FRONT | TPC::LEFT | TPC::BOTTOM) == (Vector3d(-1, -1, 1) * 1));
INFO("FRONT|LEFT|TOP");
REQUIRE(tpc.GetVertex(TPC::FRONT | TPC::LEFT | TPC::TOP) == (Vector3d(-1, 1, 1) * 2));
INFO("BACK|LEFT|BOTTOM");
REQUIRE(tpc.GetVertex(TPC::BACK | TPC::LEFT | TPC::BOTTOM) == (Vector3d(-1, -1, -1) * 3));
INFO("BACK|LEFT|TOP");
REQUIRE(tpc.GetVertex(TPC::BACK | TPC::LEFT | TPC::TOP) == (Vector3d(-1, 1, -1) * 4));
INFO("FRONT|RIGHT|BOTTOM");
REQUIRE(tpc.GetVertex(TPC::FRONT | TPC::RIGHT | TPC::BOTTOM) == (Vector3d(1, -1, 1) * 5));
INFO("FRONT|RIGHT|TOP");
REQUIRE(tpc.GetVertex(TPC::FRONT | TPC::RIGHT | TPC::TOP) == (Vector3d(1, 1, 1) * 6));
INFO("BACK|RIGHT|BOTTOM");
REQUIRE(tpc.GetVertex(TPC::BACK | TPC::RIGHT | TPC::BOTTOM) == (Vector3d(1, -1, -1) * 7));
INFO("BACK|RIGHT|TOP");
REQUIRE(tpc.GetVertex(TPC::BACK | TPC::RIGHT | TPC::TOP) == (Vector3d(1, 1, -1) * 8));
return;
}
@ -56,7 +56,7 @@ namespace Colliders
// For this, we define a few points around [0,0,0] and check if they are contained.
// We then rotate the collider, and check again
// Gets repeated for every possible rotation with a min-distance per axis of 2 deg
TEST_METHOD(Points_Inside)
TEST_CASE(__FILE__"/Points_Inside", "[TrapazoidalPrismCollider][Collider]")
{
// Setup
// Define known-inside points
@ -78,7 +78,7 @@ namespace Colliders
// Exercise
// Now check that these points are inside for all these possible angles
#ifndef _DEBUG
constexpr double stepSize = 2;
constexpr double stepSize = 40;
#else
constexpr double stepSize = 32;
#endif
@ -99,7 +99,7 @@ namespace Colliders
// Verify
// Verify that all are inside
for (const Vector3d& v : knownInsides)
Assert::IsTrue(tpc.Contains(v));
REQUIRE(tpc.Contains(v));
}
return;
@ -109,7 +109,7 @@ namespace Colliders
// For this, we define a few points that are definitely outside for various reasons and check if they are not contained.
// We then rotate the collider, and check again
// Gets repeated for every possible rotation with a min-distance per axis of 2 deg
TEST_METHOD(Points_Outside)
TEST_CASE(__FILE__"/Points_Outside", "[TrapazoidalPrismCollider][Collider]")
{
// Setup
// Define known-inside points
@ -136,7 +136,7 @@ namespace Colliders
// Exercise
// Now check that these points are inside for all these possible angles
#ifndef _DEBUG
constexpr double stepSize = 2;
constexpr double stepSize = 40;
#else
constexpr double stepSize = 32;
#endif
@ -157,10 +157,8 @@ namespace Colliders
// Verify
// Verify that all are inside
for (const Vector3d& v : knownOutsides)
Assert::IsFalse(tpc.Contains(v));
REQUIRE_FALSE(tpc.Contains(v));
}
return;
}
};
}