#ifdef TESTS_BUILD #include "../../extern/doctest.hpp" #include "../../src/Battling/History/HistoryElements/AttackUseHistory.hpp" #include "../../src/Battling/Models/Battle.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("Clone battle, test basic functionality") { auto lib = TestLibrary::Get(); auto creature = CreateCreature(lib, "testSpecies1"_cnc, 1).Create(); auto party = CreatureParty(6); party.SwapInto(0, creature); auto bp = ArbUt::List(); bp.Append(new BattleParty(&party, {CreatureIndex(0, 0)})); auto battle = Battle(lib, bp); battle.SwitchCreature(0, 0, creature); auto clone = battle.Clone(); REQUIRE_NE(battle.GetCreature(0, 0), clone->GetCreature(0, 0)); REQUIRE(battle.GetCreature(0, 0).GetValue()->GetSpecies() == clone->GetCreature(0, 0).GetValue()->GetSpecies()); auto clonedParty = clone->GetParties().At(0)->GetParty().GetRaw(); delete clone; delete clonedParty; } TEST_CASE("Clone battle, test history history holder") { auto lib = TestLibrary::Get(); auto battle = Battle(lib, {}); auto side = BattleSide(0, &battle, 1); auto c = CreateCreature(TestLibrary::Get(), "testSpecies1"_cnc, 5).Create(); side.SetCreature(c, 0); auto clone = battle.Clone(); clone->RegisterHistoryElement(nullptr); clone->RegisterHistoryElement(nullptr); delete c; delete clone; } #endif