Files
pokemon-battle-engine/tests/unit/core/test_stats.cpp
cdemeyer-teachx aff99a507c code refactor
2025-08-20 13:02:04 +09:00

172 lines
4.9 KiB
C++

#include <gtest/gtest.h>
#include "core/stats.h"
namespace PokEng {
// Test fixture for stats tests
class StatsTest : public ::testing::Test {
protected:
void SetUp() override {
// Set up test fixtures
}
void TearDown() override {
// Clean up test fixtures
}
};
// Generation I && II example
// HP Attack Defense Sp.Atk Sp.Def Speed
// Base stat 35 55 30 50 50 90
// IV 14 16 26 18 10 0
// StatXP 22850 23140 17280 19625 24795 0
// Total 189 137 101 128 112 190
/**
// Test type string conversion
TEST_F(StatsTest, CalculateHP_GenI_II) {
StatCalculatorParams pikachuParams;
pikachuParams.m_base = 35;
pikachuParams.m_iv = 14;
pikachuParams.m_level = 81;
pikachuParams.m_statIndex = StatIndex::HP;
pikachuParams.m_statExp = 22850;
EXPECT_EQ(CalculateHP<Generation::I>(pikachuParams), 189);
}
TEST_F(StatsTest, CalculateStat_GenI_II_Attack) {
StatCalculatorParams pikachuParams;
pikachuParams.m_base = 55;
pikachuParams.m_iv = 16;
pikachuParams.m_level = 81;
pikachuParams.m_statIndex = StatIndex::ATTACK;
pikachuParams.m_statExp = 23140;
EXPECT_EQ(CalculateStat<Generation::I>(pikachuParams), 137);
}
TEST_F(StatsTest, CalculateStat_GenI_II_Defense) {
StatCalculatorParams pikachuParams;
pikachuParams.m_base = 30;
pikachuParams.m_iv = 26;
pikachuParams.m_level = 81;
pikachuParams.m_statIndex = StatIndex::DEFENSE;
pikachuParams.m_statExp = 17280;
EXPECT_EQ(CalculateStat<Generation::I>(pikachuParams), 101);
}
TEST_F(StatsTest, CalculateStat_GenI_II_SpAttack) {
StatCalculatorParams pikachuParams;
pikachuParams.m_base = 50;
pikachuParams.m_iv = 18;
pikachuParams.m_level = 81;
pikachuParams.m_statIndex = StatIndex::SP_ATTACK;
pikachuParams.m_statExp = 19625;
EXPECT_EQ(CalculateStat<Generation::I>(pikachuParams), 128);
}
TEST_F(StatsTest, CalculateStat_GenI_II_SpDefense) {
StatCalculatorParams pikachuParams;
pikachuParams.m_base = 50;
pikachuParams.m_iv = 10;
pikachuParams.m_level = 81;
pikachuParams.m_statIndex = StatIndex::SP_DEFENSE;
pikachuParams.m_statExp = 24795;
EXPECT_EQ(CalculateStat<Generation::I>(pikachuParams), 112);
}
TEST_F(StatsTest, CalculateStat_GenI_II_Speed) {
StatCalculatorParams pikachuParams;
pikachuParams.m_base = 90;
pikachuParams.m_iv = 0;
pikachuParams.m_level = 81;
pikachuParams.m_statIndex = StatIndex::SPEED;
pikachuParams.m_statExp = 0;
EXPECT_EQ(CalculateStat<Generation::I>(pikachuParams), 190);
}
// Generation 3+ example
// HP Attack Defense Sp.Atk Sp.Def Speed
// Base stat 108 130 95 80 85 102
// IV 24 12 30 16 23 5
// EV 74 190 91 48 84 23
// Total 289 278 193 135 171 171
TEST_F(StatsTest, CalculateStat_GenIII) {
StatCalculatorParams pikachuParams;
pikachuParams.m_base = 108;
pikachuParams.m_iv = 24;
pikachuParams.m_level = 81;
pikachuParams.m_statIndex = StatIndex::ATTACK;
pikachuParams.m_statExp = 74;
EXPECT_EQ(CalculateStat<Generation::III>(pikachuParams), 278);
}
TEST_F(StatsTest, CalculateStat_GenIII_Defense) {
StatCalculatorParams pikachuParams;
pikachuParams.m_base = 130;
pikachuParams.m_iv = 12;
pikachuParams.m_level = 81;
pikachuParams.m_statIndex = StatIndex::DEFENSE;
pikachuParams.m_statExp = 190;
EXPECT_EQ(CalculateStat<Generation::III>(pikachuParams), 193);
}
TEST_F(StatsTest, CalculateStat_GenIII_SpAttack) {
StatCalculatorParams pikachuParams;
pikachuParams.m_base = 80;
pikachuParams.m_iv = 16;
pikachuParams.m_level = 81;
pikachuParams.m_statIndex = StatIndex::SP_ATTACK;
pikachuParams.m_statExp = 48;
EXPECT_EQ(CalculateStat<Generation::III>(pikachuParams), 135);
}
TEST_F(StatsTest, CalculateStat_GenIII_SpDefense) {
StatCalculatorParams pikachuParams;
pikachuParams.m_base = 85;
pikachuParams.m_iv = 23;
pikachuParams.m_level = 81;
pikachuParams.m_statIndex = StatIndex::SP_DEFENSE;
pikachuParams.m_statExp = 84;
EXPECT_EQ(CalculateStat<Generation::III>(pikachuParams), 171);
}
TEST_F(StatsTest, CalculateStat_GenIII_Speed) {
StatCalculatorParams pikachuParams;
pikachuParams.m_base = 102;
pikachuParams.m_iv = 5;
pikachuParams.m_level = 81;
pikachuParams.m_statIndex = StatIndex::SPEED;
pikachuParams.m_statExp = 23;
EXPECT_EQ(CalculateStat<Generation::III>(pikachuParams), 171);
}
TEST_F(StatsTest, CalculateHP_GenIII) {
StatCalculatorParams pikachuParams;
pikachuParams.m_base = 108;
pikachuParams.m_iv = 24;
pikachuParams.m_level = 81;
pikachuParams.m_statIndex = StatIndex::HP;
pikachuParams.m_statExp = 74;
EXPECT_EQ(CalculateHP<Generation::III>(pikachuParams), 289);
}
*/
} // namespace PokEng