#ifdef TESTS_BUILD #include "../../extern/catch.hpp" #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.", "[Battling]") { auto lib = TestLibrary::Get(); auto c1 = CreateCreature(lib, "testSpecies1", 1).Create(); auto c2 = CreateCreature(lib, "testSpecies1", 1).Create(); auto c3 = CreateCreature(lib, "testSpecies1", 1).Create(); auto c4 = CreateCreature(lib, "testSpecies1", 1).Create(); std::vector choices = { new PassTurnChoice(c1), new PassTurnChoice(c2), new PassTurnChoice(c3), new 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)); delete choiceQueue.Dequeue(); delete choiceQueue.Dequeue(); CHECK_FALSE(choiceQueue.MoveCreatureChoiceNext(c1)); delete choiceQueue.Dequeue(); delete choiceQueue.Dequeue(); delete c1; delete c2; delete c3; delete c4; } #endif