From 4c7f14b7f3bb32a4c429c5b2e22017f4ffabeff1 Mon Sep 17 00:00:00 2001 From: wraitii Date: Mon, 22 Apr 2019 12:13:54 +0000 Subject: [PATCH] Add a few assertions to pathfinder tests, fix the disabled tests. Differential Revision: https://code.wildfiregames.com/D1831 This was SVN commit r22206. --- .../components/tests/test_Pathfinder.h | 34 +++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/source/simulation2/components/tests/test_Pathfinder.h b/source/simulation2/components/tests/test_Pathfinder.h index ae9a11af13..3c45c154ff 100644 --- a/source/simulation2/components/tests/test_Pathfinder.h +++ b/source/simulation2/components/tests/test_Pathfinder.h @@ -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 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);