Add MathEngineTest and Commects and clean ups

This commit is contained in:
2018-08-18 20:50:06 -04:00
parent bd3c111fa1
commit a815367c9d
52 changed files with 386 additions and 144 deletions
@@ -0,0 +1,98 @@
#include "CollisionTest.hpp"
#include "../UTest/UTest.hpp"
/*** TrooperEngine DLL Header Files ***/
#include "TrooperEngine.hpp"
using MathEngine::cCollision;
void CollisionTest()
{
/// cCollision
printf("\nTesting cCollision -----\n\n");
UTest u("cCollision");
SDL_Rect a = { 50, 50, 50, 50 };
SDL_Rect bLeftTouch = { 0, 50, 50, 50 };
SDL_Rect bRightTouch = { 100, 50, 50, 50 };
SDL_Rect bTopTouch = { 50, 0, 50, 50 };
SDL_Rect bBottomTouch = { 50, 100, 50, 50 };
SDL_Rect bxywhTouch = { 1, 1, 49, 49 };
SDL_Rect bxnotTouch = { 101, 101, 50, 50 };
cString boundingbox = "BoundingBox(SDL_Rect a, SDL_Rect b) Check two SDL_Rect ";
u.test(boundingbox + "that overlap, should return true.", cCollision::BoundingBox(a, a));
u.test(boundingbox + "that overlap on the left side only, should return true.", cCollision::BoundingBox(a, bLeftTouch));
u.test(boundingbox + "that overlap on the right side only, should return true.", cCollision::BoundingBox(a, bRightTouch));
u.test(boundingbox + "that overlap on the Top side only, should return true.", cCollision::BoundingBox(a, bTopTouch));
u.test(boundingbox + "that overlap on the Bottom side only, should return true.", cCollision::BoundingBox(a, bBottomTouch));
u.test(boundingbox + "one is inside the other, should return true.", cCollision::BoundingBox(a, bxywhTouch));
u.test(boundingbox + "that don't overlap, should return false.", !(cCollision::BoundingBox(a, bxnotTouch)));
//////////////////////////////////////////////////////////////////////////
/// Vector4
//////////////////////////////////////////////////////////////////////////
MathEngine::Vector4 Va = { 50.0, 50.0, 50.0, 50.0 };
MathEngine::Vector4 VbLeftTouch = { 0.0, 50.0, 50.0, 50.0 };
MathEngine::Vector4 VbRightTouch = { 100.0, 50.0, 50.0, 50.0 };
MathEngine::Vector4 VbTopTouch = { 50.0, 0.0, 50.0, 50.0 };
MathEngine::Vector4 VbBottomTouch = { 50.0, 100.0, 50.0, 50.0 };
MathEngine::Vector4 VbxywhTouch = { 1.0, 1.0, 49.0, 49.0 };
MathEngine::Vector4 VbxnotTouch = { 101.0, 101.0, 50.0, 50.0 };
boundingbox = "BoundingBox( const Vector4& a, const Vector4& b ) Check two Vector4 ";
u.test(boundingbox + "that overlap, should return true.", cCollision::BoundingBox(Va, Va));
u.test(boundingbox + "that overlap on the left side only, should return true.", cCollision::BoundingBox(Va, VbLeftTouch));
u.test(boundingbox + "that overlap on the right side only, should return true.", cCollision::BoundingBox(Va, VbRightTouch));
u.test(boundingbox + "that overlap on the Top side only, should return true.", cCollision::BoundingBox(Va, VbTopTouch));
u.test(boundingbox + "that overlap on the Bottom side only, should return true.", cCollision::BoundingBox(Va, VbBottomTouch));
u.test(boundingbox + "one is inside the other, should return true.", cCollision::BoundingBox(Va, VbxywhTouch));
u.test(boundingbox + "that don't overlap, should return false.", !(cCollision::BoundingBox(Va, VbxnotTouch)));
//////////////////////////////////////////////////////////////////////////
/// iVector4
//////////////////////////////////////////////////////////////////////////
MathEngine::iVector4 iVa = { 50, 50, 50, 50 };
MathEngine::iVector4 iVbLeftTouch = { 0, 50, 50, 50 };
MathEngine::iVector4 iVbRightTouch = { 100, 50, 50, 50 };
MathEngine::iVector4 iVbTopTouch = { 50, 0, 50, 50 };
MathEngine::iVector4 iVbBottomTouch = { 50, 100, 50, 50 };
MathEngine::iVector4 iVbxywhTouch = { 1, 1, 49, 49 };
MathEngine::iVector4 iVbxnotTouch = { 101, 101, 50, 50 };
boundingbox = "BoundingBox( const iVector4& a, const iVector4& b ) Check two iVector4 ";
u.test(boundingbox + "that overlap, should return true.", cCollision::BoundingBox(iVa, iVa));
u.test(boundingbox + "that overlap on the left side only, should return true.", cCollision::BoundingBox(iVa, iVbLeftTouch));
u.test(boundingbox + "that overlap on the right side only, should return true.", cCollision::BoundingBox(iVa, iVbRightTouch));
u.test(boundingbox + "that overlap on the Top side only, should return true.", cCollision::BoundingBox(iVa, iVbTopTouch));
u.test(boundingbox + "that overlap on the Bottom side only, should return true.", cCollision::BoundingBox(iVa, iVbBottomTouch));
u.test(boundingbox + "one is inside the other, should return true.", cCollision::BoundingBox(iVa, iVbxywhTouch));
u.test(boundingbox + "that don't overlap, should return false.", !(cCollision::BoundingBox(iVa, iVbxnotTouch)));
u.report();
}