#include "../../extern/catch.hpp" #include "../Library.hpp" #define CHECK_NATURE_NEUTRAL(name) \ { \ auto nature = natureLib->GetNatureByName(ArbUt::StringView(#name)); \ CHECK(nature->GetIncreaseModifier() == Approx(1.0)); \ CHECK(nature->GetDecreaseModifier() == Approx(1.0)); \ } #define CHECK_NATURE(name, increasedStat, decreasedStat) \ { \ auto nature = natureLib->GetNatureByName(ArbUt::StringView(#name)); \ CHECK(nature->GetIncreasedStat() == PkmnLib::Library::Statistic::increasedStat); \ CHECK(nature->GetDecreasedStat() == PkmnLib::Library::Statistic::decreasedStat); \ CHECK(nature->GetIncreaseModifier() == Approx(1.1)); \ CHECK(nature->GetDecreaseModifier() == Approx(0.9)); \ } TEST_CASE("Nature Checks", "[natures]") { auto natureLib = Library::GetStaticLib()->GetNatureLibrary(); CHECK_NATURE_NEUTRAL(Hardy); CHECK_NATURE(Lonely, PhysicalAttack, PhysicalDefense); CHECK_NATURE(Brave, PhysicalAttack, Speed); CHECK_NATURE(Adamant, PhysicalAttack, SpecialAttack); CHECK_NATURE(Naughty, PhysicalAttack, SpecialDefense); CHECK_NATURE(Bold, PhysicalDefense, PhysicalAttack); CHECK_NATURE_NEUTRAL(Docile); CHECK_NATURE(Relaxed, PhysicalDefense, Speed); CHECK_NATURE(Impish, PhysicalDefense, SpecialAttack); CHECK_NATURE(Lax, PhysicalDefense, SpecialDefense); CHECK_NATURE(Timid, Speed, PhysicalAttack); CHECK_NATURE(Hasty, Speed, PhysicalDefense); CHECK_NATURE_NEUTRAL(Serious); CHECK_NATURE(Jolly, Speed, SpecialAttack); CHECK_NATURE(Naive, Speed, SpecialDefense); CHECK_NATURE(Modest, SpecialAttack, PhysicalAttack); CHECK_NATURE(Mild, SpecialAttack, PhysicalDefense); CHECK_NATURE(Quiet, SpecialAttack, Speed); CHECK_NATURE_NEUTRAL(Bashful); CHECK_NATURE(Rash, SpecialAttack, SpecialDefense); CHECK_NATURE(Calm, SpecialDefense, PhysicalAttack); CHECK_NATURE(Gentle, SpecialDefense, PhysicalDefense); CHECK_NATURE(Sassy, SpecialDefense, Speed); CHECK_NATURE(Careful, SpecialDefense, SpecialAttack); CHECK_NATURE_NEUTRAL(Quirky); }