Tiny refactoring of PickupSpawnTest. Updated and fixed HealthSystemTest.
This commit is contained in:
@@ -55,19 +55,14 @@ GameHealthSystemTest::GameHealthSystemTest()
|
||||
//create entity which has transform,player,model,health in it. i.e. is a player
|
||||
EntityID playerID = m_World->CreateEntity();
|
||||
ComponentWrapper player = m_World->AttachComponent(playerID, "Player");
|
||||
ComponentWrapper health = m_World->AttachComponent(playerID, "Health");
|
||||
healthsID = playerID;
|
||||
ComponentWrapper& health = m_World->AttachComponent(playerID, "Health");
|
||||
health["Health"] = 100.0;
|
||||
m_PlayersID = playerID;
|
||||
|
||||
EntityID playerID2 = m_World->CreateEntity();
|
||||
ComponentWrapper player2 = m_World->AttachComponent(playerID2, "Player");
|
||||
ComponentWrapper health2 = m_World->AttachComponent(playerID2, "Health");
|
||||
|
||||
//heal player with 40
|
||||
Events::PlayerHealthPickup e3;
|
||||
e3.HealthAmount = 40.0f;
|
||||
e3.Player = EntityWrapper(m_World, player.EntityID);
|
||||
m_EventBroker->Publish(e3);
|
||||
|
||||
//damage player with 50
|
||||
Events::PlayerDamage e;
|
||||
e.Damage = 50.0f;
|
||||
@@ -103,9 +98,18 @@ void GameHealthSystemTest::Tick()
|
||||
|
||||
m_EventBroker->Swap();
|
||||
m_EventBroker->Clear();
|
||||
|
||||
//if health reaches 90 then we know the test has succeeded (start with 100hp, remove 50hp, add 40hp)
|
||||
double currentHealth = (double)m_World->GetComponent(healthsID, "Health")["Health"];
|
||||
if (currentHealth == 90)
|
||||
|
||||
double currentHealth = (double)m_World->GetComponent(m_PlayersID, "Health")["Health"];
|
||||
//if players health reach 50 means he got damaged by 50
|
||||
if (currentHealth == 50) {
|
||||
m_TestStage1Success = true;
|
||||
//heal player with 40
|
||||
Events::PlayerHealthPickup e3;
|
||||
e3.HealthAmount = 40.0f;
|
||||
e3.Player = EntityWrapper(m_World, m_PlayersID);
|
||||
m_EventBroker->Publish(e3);
|
||||
}
|
||||
if (m_TestStage1Success && currentHealth == 90.0f) {
|
||||
TestSucceeded = true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,7 +31,9 @@ private:
|
||||
EventBroker* m_EventBroker;
|
||||
World* m_World;
|
||||
SystemPipeline* m_SystemPipeline;
|
||||
int healthsID;
|
||||
int m_PlayersID;
|
||||
bool m_TestStage1Success = false;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -4,7 +4,6 @@ using boost::unit_test_framework::test_case;
|
||||
|
||||
#include "PickupSpawnTest.h"
|
||||
|
||||
|
||||
BOOST_AUTO_TEST_SUITE(PickupSpawnTestSuite)
|
||||
|
||||
//dont use the same name as the classname in test cases...
|
||||
@@ -73,15 +72,15 @@ bool PickupSpawnTest::OnHealthPickup(Events::PlayerHealthPickup& e) {
|
||||
//very that the event has the correct healthgain number and playerid
|
||||
if (m_RunTestNumber == 1) {
|
||||
if (e.HealthAmount == 22.0 && e.Player.ID == m_PlayerID) {
|
||||
testStage1Success = true;
|
||||
m_TestStage1Success = true;
|
||||
}
|
||||
}
|
||||
if (m_RunTestNumber == 2) {
|
||||
testStage1Success = false;
|
||||
m_TestStage1Success = false;
|
||||
}
|
||||
if (m_RunTestNumber == 3) {
|
||||
if (e.HealthAmount == 50.0 && e.Player.ID == m_PlayerID) {
|
||||
testStage1Success = true;
|
||||
m_TestStage1Success = true;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
@@ -90,22 +89,24 @@ bool PickupSpawnTest::OnPickupSpawned(Events::PickupSpawned& e) {
|
||||
//verify that the newly spawned pickup has the same variable values as the original one
|
||||
if (m_RunTestNumber == 1) {
|
||||
if ((double)e.Pickup["HealthPickup"]["HealthGain"] == 22.0 && (double)e.Pickup["HealthPickup"]["RespawnTimer"] == 2.0) {
|
||||
testStage2Success = true;
|
||||
m_TestStage2Success = true;
|
||||
}
|
||||
}
|
||||
if (m_RunTestNumber == 2) {
|
||||
testStage2Success = false;
|
||||
m_TestStage2Success = false;
|
||||
}
|
||||
if (m_RunTestNumber == 3) {
|
||||
testStage2Success = false;
|
||||
m_TestStage2Success = false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void PickupSpawnTest::TestSetup(int testNumber)
|
||||
{
|
||||
//cant use switch here, since each case might initialize different variables
|
||||
if (m_RunTestNumber == 1) {
|
||||
switch (m_RunTestNumber)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
//PickupSpawnTest_HealthPickupRespawns_PlayerHealthPickupEventTriggers
|
||||
auto& healthPickupEW = EntityWrapper(m_World, m_HealthPickupID);
|
||||
healthPickupEW["HealthPickup"]["RespawnTimer"] = 2.0;
|
||||
@@ -115,11 +116,10 @@ void PickupSpawnTest::TestSetup(int testNumber)
|
||||
auto& health = m_World->AttachComponent(m_PlayerID, "Health");
|
||||
health["Health"] = 20.0;
|
||||
health["MaxHealth"] = 100.0;
|
||||
|
||||
Events::TriggerTouch eTriggerTouch;
|
||||
DoTouchEvent(m_PlayerID, m_HealthPickupID);
|
||||
}
|
||||
if (m_RunTestNumber == 2) {
|
||||
break;
|
||||
case 2:
|
||||
{
|
||||
//PickupSpawnTest_APlayerAtMaxHealth_CantTakeHealthPickup
|
||||
auto& healthPickupEW = EntityWrapper(m_World, m_HealthPickupID);
|
||||
healthPickupEW["HealthPickup"]["RespawnTimer"] = 1.0;
|
||||
@@ -129,11 +129,10 @@ void PickupSpawnTest::TestSetup(int testNumber)
|
||||
auto& health = m_World->AttachComponent(m_PlayerID, "Health");
|
||||
health["Health"] = 100.0;
|
||||
health["MaxHealth"] = 100.0;
|
||||
|
||||
Events::TriggerTouch eTriggerTouch;
|
||||
DoTouchEvent(m_PlayerID, m_HealthPickupID);
|
||||
}
|
||||
if (m_RunTestNumber == 3) {
|
||||
break;
|
||||
case 3:
|
||||
{
|
||||
//PickupSpawnTest_APickupCanRespawnSlowly
|
||||
auto& healthPickupEW = EntityWrapper(m_World, m_HealthPickupID);
|
||||
healthPickupEW["HealthPickup"]["RespawnTimer"] = 100.0;
|
||||
@@ -143,10 +142,14 @@ void PickupSpawnTest::TestSetup(int testNumber)
|
||||
auto& health = m_World->AttachComponent(m_PlayerID, "Health");
|
||||
health["Health"] = 1.0;
|
||||
health["MaxHealth"] = 100.0;
|
||||
|
||||
Events::TriggerTouch eTriggerTouch;
|
||||
DoTouchEvent(m_PlayerID, m_HealthPickupID);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
//do the triggerTouch event to get the pickupSpawnTest started
|
||||
Events::TriggerTouch eTriggerTouch;
|
||||
DoTouchEvent(m_PlayerID, m_HealthPickupID);
|
||||
}
|
||||
|
||||
//generic stuff
|
||||
@@ -164,16 +167,16 @@ void PickupSpawnTest::Tick()
|
||||
m_EventBroker->Clear();
|
||||
|
||||
//verify that healthgain event has been published and pickup has respawned
|
||||
if (m_RunTestNumber == 1 && testStage1Success && testStage2Success) {
|
||||
m_TestSucceeded = true;
|
||||
if (m_RunTestNumber == 1 && m_TestStage1Success && m_TestStage2Success) {
|
||||
TestSucceeded = true;
|
||||
}
|
||||
//verify that no healthgain event has been published and that no pickup has respawned
|
||||
if (m_NumLoops > 90 && m_RunTestNumber == 2 && !testStage1Success && !testStage2Success) {
|
||||
m_TestSucceeded = true;
|
||||
if (NumLoops > 90 && m_RunTestNumber == 2 && !m_TestStage1Success && !m_TestStage2Success) {
|
||||
TestSucceeded = true;
|
||||
}
|
||||
//3: verify that the pickup hasnt spawned
|
||||
if (m_NumLoops > 90 && m_RunTestNumber == 3 && testStage1Success && !testStage2Success) {
|
||||
m_TestSucceeded = true;
|
||||
if (NumLoops > 90 && m_RunTestNumber == 3 && m_TestStage1Success && !m_TestStage2Success) {
|
||||
TestSucceeded = true;
|
||||
}
|
||||
}
|
||||
bool PickupSpawnTest::Game_Loop_OneHundredTimes() {
|
||||
@@ -182,8 +185,8 @@ bool PickupSpawnTest::Game_Loop_OneHundredTimes() {
|
||||
bool success = false;
|
||||
while (loops > 0) {
|
||||
Tick();
|
||||
m_NumLoops++;
|
||||
if (m_TestSucceeded) {
|
||||
NumLoops++;
|
||||
if (TestSucceeded) {
|
||||
success = true;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -42,8 +42,8 @@ public:
|
||||
~PickupSpawnTest();
|
||||
|
||||
void Tick();
|
||||
bool m_TestSucceeded = false;
|
||||
int m_NumLoops = 0;
|
||||
bool TestSucceeded = false;
|
||||
int NumLoops = 0;
|
||||
|
||||
bool Game_Loop_OneHundredTimes();
|
||||
|
||||
@@ -64,8 +64,8 @@ private:
|
||||
EventRelay<PickupSpawnSystem, Events::PickupSpawned> m_PS;
|
||||
bool OnPickupSpawned(Events::PickupSpawned& e);
|
||||
|
||||
bool testStage1Success = false;
|
||||
bool testStage2Success = false;
|
||||
bool m_TestStage1Success = false;
|
||||
bool m_TestStage2Success = false;
|
||||
|
||||
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user