Add a few assertions to pathfinder tests, fix the disabled tests.

Differential Revision: https://code.wildfiregames.com/D1831
This was SVN commit r22206.
This commit is contained in:
wraitii 2019-04-22 12:13:54 +00:00
parent ab5f63e087
commit 4c7f14b7f3

View File

@ -1,4 +1,4 @@
/* Copyright (C) 2018 Wildfire Games.
/* Copyright (C) 2019 Wildfire Games.
* This file is part of 0 A.D.
*
* 0 A.D. is free software: you can redistribute it and/or modify
@ -19,6 +19,7 @@
#include "simulation2/components/ICmpObstructionManager.h"
#include "simulation2/components/ICmpPathfinder.h"
#include "simulation2/components/CCmpPathfinder_Common.h"
#include "graphics/MapReader.h"
#include "graphics/Terrain.h"
@ -64,7 +65,7 @@ public:
TS_ASSERT_EQUALS((Pathfinding::NAVCELL_SIZE >> 1).ToInt_RoundToZero(), Pathfinding::NAVCELL_SIZE_LOG2);
}
void test_pathgoal()
void test_pathgoal_nearest_distance()
{
entity_pos_t i = Pathfinding::NAVCELL_SIZE;
CFixedVector2D u(i*1, i*0);
@ -76,6 +77,11 @@ public:
TS_ASSERT_EQUALS(goal.DistanceToPoint(u*8 + v*4), i*2);
TS_ASSERT_EQUALS(goal.NearestPointOnGoal(u*0 + v*0), u*8 + v*6);
TS_ASSERT_EQUALS(goal.DistanceToPoint(u*0 + v*0), i*10);
TS_ASSERT(goal.RectContainsGoal(i*4, i*3, i*12, i*9));
TS_ASSERT(goal.RectContainsGoal(i*4, i*3, i*8, i*6));
TS_ASSERT(goal.RectContainsGoal(i*8, i*6, i*12, i*9));
TS_ASSERT(!goal.RectContainsGoal(i*4, i*3, i*7, i*5));
TS_ASSERT(!goal.RectContainsGoal(i*9, i*7, i*13, i*15));
}
{
@ -84,6 +90,10 @@ public:
TS_ASSERT_EQUALS(goal.DistanceToPoint(u*8 + v*4), i*0);
TS_ASSERT_EQUALS(goal.NearestPointOnGoal(u*0 + v*0), u*4 + v*3);
TS_ASSERT_EQUALS(goal.DistanceToPoint(u*0 + v*0), i*5);
TS_ASSERT(goal.RectContainsGoal(i*7, i*5, i*9, i*7)); // fully inside
TS_ASSERT(goal.RectContainsGoal(i*3, i*1, i*13, i*11)); // fully outside
TS_ASSERT(goal.RectContainsGoal(i*4, i*3, i*8, i*6)); // partially inside
TS_ASSERT(goal.RectContainsGoal(i*4, i*0, i*12, i*1)); // touching the edge
}
{
@ -92,6 +102,10 @@ public:
TS_ASSERT_EQUALS(goal.DistanceToPoint(u*8 + v*4), i*3);
TS_ASSERT_EQUALS(goal.NearestPointOnGoal(u*0 + v*0), u*0 + v*0);
TS_ASSERT_EQUALS(goal.DistanceToPoint(u*0 + v*0), i*0);
TS_ASSERT(!goal.RectContainsGoal(i*7, i*5, i*9, i*7)); // fully inside
TS_ASSERT(goal.RectContainsGoal(i*3, i*1, i*13, i*11)); // fully outside
TS_ASSERT(goal.RectContainsGoal(i*4, i*3, i*8, i*6)); // partially inside
TS_ASSERT(goal.RectContainsGoal(i*4, i*0, i*12, i*1)); // touching the edge
}
{
@ -100,6 +114,11 @@ public:
TS_ASSERT_EQUALS(goal.DistanceToPoint(u*8 + v*4), i*0);
TS_ASSERT_EQUALS(goal.NearestPointOnGoal(u*0 + v*0), u*4 + v*3);
TS_ASSERT_EQUALS(goal.DistanceToPoint(u*0 + v*0), i*5);
TS_ASSERT(goal.RectContainsGoal(i*7, i*5, i*9, i*7)); // fully inside
TS_ASSERT(goal.RectContainsGoal(i*3, i*1, i*13, i*11)); // fully outside
TS_ASSERT(goal.RectContainsGoal(i*4, i*3, i*8, i*6)); // partially inside
TS_ASSERT(goal.RectContainsGoal(i*4, i*2, i*12, i*3)); // touching the edge
TS_ASSERT(goal.RectContainsGoal(i*3, i*0, i*4, i*10)); // touching the edge
}
{
@ -108,6 +127,11 @@ public:
TS_ASSERT_EQUALS(goal.DistanceToPoint(u*8 + v*4), i*1);
TS_ASSERT_EQUALS(goal.NearestPointOnGoal(u*0 + v*0), u*0 + v*0);
TS_ASSERT_EQUALS(goal.DistanceToPoint(u*0 + v*0), i*0);
TS_ASSERT(!goal.RectContainsGoal(i*7, i*5, i*9, i*7)); // fully inside
TS_ASSERT(goal.RectContainsGoal(i*3, i*1, i*13, i*11)); // fully outside
TS_ASSERT(!goal.RectContainsGoal(i*4, i*3, i*8, i*6)); // inside, touching (should fail)
TS_ASSERT(goal.RectContainsGoal(i*4, i*2, i*12, i*3)); // touching the edge
TS_ASSERT(goal.RectContainsGoal(i*3, i*0, i*4, i*10)); // touching the edge
}
}
@ -129,6 +153,8 @@ public:
LDR_EndRegistering();
TS_ASSERT_OK(LDR_NonprogressiveLoad());
sim2.PreInitGame();
sim2.InitGame();
sim2.Update(0);
CmpPtr<ICmpPathfinder> cmp(sim2, SYSTEM_ENTITY);
@ -240,6 +266,8 @@ public:
LDR_EndRegistering();
TS_ASSERT_OK(LDR_NonprogressiveLoad());
sim2.PreInitGame();
sim2.InitGame();
sim2.Update(0);
std::ofstream stream(OsString("perf2.html").c_str(), std::ofstream::out | std::ofstream::trunc);
@ -295,6 +323,8 @@ public:
LDR_EndRegistering();
TS_ASSERT_OK(LDR_NonprogressiveLoad());
sim2.PreInitGame();
sim2.InitGame();
sim2.Update(0);
std::ofstream stream(OsString("perf3.html").c_str(), std::ofstream::out | std::ofstream::trunc);