#ifdef TESTS_BUILD #include "../../extern/doctest.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.") { 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> choices = { std::make_shared(c1), std::make_shared(c2), std::make_shared(c3), std::make_shared(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