172 lines
4.9 KiB
C++
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
|