Add test for Acupressure, Acrobatics.
This commit is contained in:
parent
f0738f8cf3
commit
287d57e140
|
@ -26,4 +26,4 @@ class PkmnLibConan(ConanFile):
|
||||||
self.copy("*.dll", "bin", "bin")
|
self.copy("*.dll", "bin", "bin")
|
||||||
|
|
||||||
def requirements(self):
|
def requirements(self):
|
||||||
self.requires("PkmnLib/93be2ee8a1a11cd106136f703ac0c2b2e0cb9e60@pkmnlib/master")
|
self.requires("PkmnLib/b1f101d646de65a56837a80302e85ff88c2fa04d@pkmnlib/master")
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
#include <PkmnLib/Battling/Battle/Battle.hpp>
|
|
||||||
#include <CreatureLib/Battling/Models/ExecutingAttack.hpp>
|
#include <CreatureLib/Battling/Models/ExecutingAttack.hpp>
|
||||||
|
#include <CreatureLib/Battling/ScriptHandling/ScriptCategory.hpp>
|
||||||
|
#include <PkmnLib/Battling/Battle/Battle.hpp>
|
||||||
#include <PkmnLib/Battling/Pokemon/CreatePokemon.hpp>
|
#include <PkmnLib/Battling/Pokemon/CreatePokemon.hpp>
|
||||||
#include <PkmnLib/ScriptResolving/AngelScript/AngelScriptScript.hpp>
|
#include <PkmnLib/ScriptResolving/AngelScript/AngelScriptScript.hpp>
|
||||||
#include "../../Library.hpp"
|
|
||||||
#include "../../../extern/catch.hpp"
|
#include "../../../extern/catch.hpp"
|
||||||
|
#include "../../Library.hpp"
|
||||||
|
|
||||||
#define SETUP_MOVE_TEST(move) \
|
#define SETUP_MOVE_TEST(move) \
|
||||||
auto library = Library::GetLibrary(); \
|
auto library = Library::GetLibrary(); \
|
||||||
|
@ -23,7 +24,7 @@
|
||||||
userMon->SetBattleData(battle, battle->GetSides()[0]); \
|
userMon->SetBattleData(battle, battle->GetSides()[0]); \
|
||||||
targetMon->SetBattleData(battle, battle->GetSides()[1]); \
|
targetMon->SetBattleData(battle, battle->GetSides()[1]); \
|
||||||
\
|
\
|
||||||
auto script = library->LoadScript(CreatureLib::Battling::ScriptResolver::ScriptCategory::Attack, #move); \
|
auto script = library->LoadScript(ScriptCategory::Attack, #move); \
|
||||||
REQUIRE(script != nullptr); \
|
REQUIRE(script != nullptr); \
|
||||||
\
|
\
|
||||||
auto executingMove = \
|
auto executingMove = \
|
||||||
|
|
|
@ -0,0 +1,34 @@
|
||||||
|
#include "../../Macros/MoveMacros.hpp"
|
||||||
|
using Stats = PkmnLib::Library::Statistic;
|
||||||
|
|
||||||
|
TEST_CASE("Acrobatics - doubles base power when no held item", "[moves]") {
|
||||||
|
SETUP_MOVE_TEST(Acrobatics)
|
||||||
|
|
||||||
|
uint8_t basePower = 40;
|
||||||
|
script->OverrideBasePower(executingMove, userMon, 0, &basePower);
|
||||||
|
REQUIRE(basePower == 80);
|
||||||
|
|
||||||
|
CLEANUP_MOVE_TEST
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_CASE("Acrobatics - doesn't overflow", "[moves]") {
|
||||||
|
SETUP_MOVE_TEST(Acrobatics)
|
||||||
|
|
||||||
|
uint8_t basePower = 200;
|
||||||
|
script->OverrideBasePower(executingMove, userMon, 0, &basePower);
|
||||||
|
REQUIRE(basePower == 255);
|
||||||
|
|
||||||
|
CLEANUP_MOVE_TEST
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
TEST_CASE("Acrobatics - doesn't double base power when no held item", "[moves]") {
|
||||||
|
SETUP_MOVE_TEST(Acrobatics)
|
||||||
|
|
||||||
|
userMon->SetHeldItem("poke_ball");
|
||||||
|
uint8_t basePower = 40;
|
||||||
|
script->OverrideBasePower(executingMove, userMon, 0, &basePower);
|
||||||
|
REQUIRE(basePower == 40);
|
||||||
|
|
||||||
|
CLEANUP_MOVE_TEST
|
||||||
|
}
|
|
@ -0,0 +1,52 @@
|
||||||
|
#include <CreatureLib/Battling/Models/ExecutingAttack.hpp>
|
||||||
|
#include <PkmnLib/Battling/Battle/Battle.hpp>
|
||||||
|
#include <PkmnLib/Battling/Pokemon/CreatePokemon.hpp>
|
||||||
|
#include "../../../../extern/catch.hpp"
|
||||||
|
#include "../../Macros/MoveMacros.hpp"
|
||||||
|
|
||||||
|
TEST_CASE("Acupressure - increases random stat by 2", "[moves]") {
|
||||||
|
SETUP_MOVE_TEST(Acupressure)
|
||||||
|
|
||||||
|
script->OnStatusMove(executingMove, targetMon, 0);
|
||||||
|
bool hasDoubleIncreasedStat = false;
|
||||||
|
for (auto stat: CreatureLib::Core::StatisticHelper::GetValues()){
|
||||||
|
auto statBoost = targetMon->GetStatBoost(stat);
|
||||||
|
|
||||||
|
if (statBoost == 0)
|
||||||
|
continue;
|
||||||
|
else if (statBoost == 2){
|
||||||
|
if (hasDoubleIncreasedStat){
|
||||||
|
FAIL("We already had an increased stat.");
|
||||||
|
}
|
||||||
|
hasDoubleIncreasedStat = true;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
FAIL("A stat did not have either 0 or 2 for a stat boost.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
REQUIRE(hasDoubleIncreasedStat);
|
||||||
|
|
||||||
|
CLEANUP_MOVE_TEST
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_CASE("Acupressure - fails if user is target", "[moves]") {
|
||||||
|
SETUP_MOVE_TEST(Acupressure)
|
||||||
|
|
||||||
|
script->OnStatusMove(executingMove, userMon, 0);
|
||||||
|
bool hasDoubleIncreasedStat = false;
|
||||||
|
for (auto stat: CreatureLib::Core::StatisticHelper::GetValues()){
|
||||||
|
auto statBoost = userMon->GetStatBoost(stat);
|
||||||
|
|
||||||
|
if (statBoost == 0)
|
||||||
|
continue;
|
||||||
|
else if (statBoost == 2){
|
||||||
|
hasDoubleIncreasedStat = true;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
FAIL("A stat did not have either 0 or 2 for a stat boost.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
REQUIRE_FALSE(hasDoubleIncreasedStat);
|
||||||
|
|
||||||
|
CLEANUP_MOVE_TEST
|
||||||
|
}
|
Loading…
Reference in New Issue