CreatureLib/tests/BattleTests/ChoiceQueueTests.cpp

44 lines
1.5 KiB
C++

#ifdef TESTS_BUILD
#include <doctest.h>
#include "../../src/Battling/Flow/ChoiceQueue.hpp"
#include "../../src/Battling/Models/BattleSide.hpp"
#include "../../src/Battling/Models/CreateCreature.hpp"
#include "../../src/Battling/TurnChoices/PassTurnChoice.hpp"
#include "../TestLibrary/TestLibrary.hpp"
using namespace CreatureLib::Battling;
TEST_CASE("Move creature choice up next.") {
auto lib = TestLibrary::Get();
auto c1 = CreateCreature(lib, "testSpecies1"_cnc, 1).Create();
auto c2 = CreateCreature(lib, "testSpecies1"_cnc, 1).Create();
auto c3 = CreateCreature(lib, "testSpecies1"_cnc, 1).Create();
auto c4 = CreateCreature(lib, "testSpecies1"_cnc, 1).Create();
std::vector<std::shared_ptr<BaseTurnChoice>> choices = {
std::make_shared<PassTurnChoice>(c1),
std::make_shared<PassTurnChoice>(c2),
std::make_shared<PassTurnChoice>(c3),
std::make_shared<PassTurnChoice>(c4),
};
auto choiceQueue = ChoiceQueue(choices);
CHECK(choiceQueue.MoveCreatureChoiceNext(c4));
auto& currentChoices = choiceQueue.GetInnerQueue();
CHECK(currentChoices[0]->GetUser() == c4);
CHECK(currentChoices[1]->GetUser() == c1);
CHECK(currentChoices[2]->GetUser() == c2);
CHECK(currentChoices[3]->GetUser() == c3);
CHECK_FALSE(choiceQueue.MoveCreatureChoiceNext(c4));
choiceQueue.Dequeue();
choiceQueue.Dequeue();
CHECK_FALSE(choiceQueue.MoveCreatureChoiceNext(c1));
delete c1;
delete c2;
delete c3;
delete c4;
}
#endif