From a0a5947590c016b7dbeb195e38e9b334913b6cb1 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Sun, 14 Dec 2025 12:24:39 -0300 Subject: [PATCH] Added tests for stat-changing moves (#8278) Co-authored-by: Bassoonian --- data/battle_scripts_1.s | 6 ++--- include/constants/generational_changes.h | 2 +- test/battle/move_effect/coil.c | 24 ++++++++++++++--- test/battle/move_effect/decorate.c | 22 +++++++++++++-- test/battle/move_effect/dragon_dance.c | 21 ++++++++++++++- test/battle/move_effect/flatter.c | 22 ++++++++++++++- test/battle/move_effect/minimize.c | 27 ++++++++++++++++++- test/battle/move_effect/noble_roar.c | 21 ++++++++++++++- test/battle/move_effect/quiver_dance.c | 22 ++++++++++++++- test/battle/move_effect/shift_gear.c | 21 ++++++++++++++- .../move_effect/special_attack_down_2.c | 20 +++++++++++++- test/battle/move_effect/special_attack_up_2.c | 20 +++++++++++++- .../move_effect/special_defense_down_2.c | 20 +++++++++++++- .../battle/move_effect/special_defense_up_2.c | 20 +++++++++++++- test/battle/move_effect/speed_down_2.c | 20 +++++++++++++- test/battle/move_effect/speed_up_2.c | 20 +++++++++++++- test/battle/move_effect/swagger.c | 22 ++++++++++++++- test/battle/move_effect/tickle.c | 21 ++++++++++++++- test/battle/move_effect/victory_dance.c | 22 ++++++++++++++- 19 files changed, 349 insertions(+), 24 deletions(-) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 8389737cef..6a3e29d17f 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -3364,11 +3364,11 @@ BattleScript_NightmareWorked:: BattleScript_EffectMinimize:: attackcanceler setvolatile BS_ATTACKER, VOLATILE_MINIMIZE -.if B_MINIMIZE_EVASION >= GEN_5 + jumpifgenconfiglowerthan CONFIG_MINIMIZE_EVASION, GEN_5, BattleScript_EffectMinimizeGen4 setstatchanger STAT_EVASION, 2, FALSE -.else + goto BattleScript_EffectStatUpAfterAtkCanceler +BattleScript_EffectMinimizeGen4: setstatchanger STAT_EVASION, 1, FALSE -.endif goto BattleScript_EffectStatUpAfterAtkCanceler BattleScript_EffectCurse:: diff --git a/include/constants/generational_changes.h b/include/constants/generational_changes.h index bd5dfcd83d..94fd2c2a8e 100644 --- a/include/constants/generational_changes.h +++ b/include/constants/generational_changes.h @@ -81,7 +81,7 @@ F(KINGS_SHIELD_LOWER_ATK, kingsShieldLowerAtk, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \ F(SPEED_BUFFING_RAPID_SPIN, speedBuffingRapidSpin, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \ F(CHARGE_SPDEF_RAISE, chargeSpDefRaise, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \ - F(MINIMIZE_EVASION, minimizeEvasion, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \ + F(MINIMIZE_EVASION, minimizeEvasion, (u32, GEN_COUNT - 1)) \ F(GROWTH_STAT_RAISE, growthStatRaise, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \ F(FOCUS_ENERGY_CRIT_RATIO, focusEnergyCritRatio, (u32, GEN_COUNT - 1)) \ /* Other move settings */ \ diff --git a/test/battle/move_effect/coil.c b/test/battle/move_effect/coil.c index ce9e8629a8..7d56702989 100644 --- a/test/battle/move_effect/coil.c +++ b/test/battle/move_effect/coil.c @@ -1,6 +1,24 @@ #include "global.h" #include "test/battle.h" -TO_DO_BATTLE_TEST("Coil raises the user's Attack by 1 stage"); -TO_DO_BATTLE_TEST("Coil raises the user's Defense by 1 stage"); -TO_DO_BATTLE_TEST("Coil raises the user's Accuracy by 1 stage"); +ASSUMPTIONS +{ + ASSUME(GetMoveEffect(MOVE_COIL) == EFFECT_COIL); +} + +SINGLE_BATTLE_TEST("Coil increases the user's Attack, Defense and Accuracy by 1 stage each") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_COIL); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_COIL, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + } THEN { + EXPECT_EQ(player->statStages[STAT_ATK], DEFAULT_STAT_STAGE + 1); + EXPECT_EQ(player->statStages[STAT_DEF], DEFAULT_STAT_STAGE + 1); + EXPECT_EQ(player->statStages[STAT_ACC], DEFAULT_STAT_STAGE + 1); + } +} diff --git a/test/battle/move_effect/decorate.c b/test/battle/move_effect/decorate.c index 5eef9dc305..ac2bb6105b 100644 --- a/test/battle/move_effect/decorate.c +++ b/test/battle/move_effect/decorate.c @@ -1,5 +1,23 @@ #include "global.h" #include "test/battle.h" -TO_DO_BATTLE_TEST("Decorate raises the target's Attack by 2 stages"); -TO_DO_BATTLE_TEST("Decorate raises the target's Sp. Attack by 2 stages"); +ASSUMPTIONS +{ + ASSUME(GetMoveEffect(MOVE_DECORATE) == EFFECT_DECORATE); +} + +SINGLE_BATTLE_TEST("Decorate raises the target's Attack and Sp. Attack by 2 stages each") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_DECORATE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_DECORATE, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + } THEN { + EXPECT_EQ(opponent->statStages[STAT_ATK], DEFAULT_STAT_STAGE + 2); + EXPECT_EQ(opponent->statStages[STAT_SPATK], DEFAULT_STAT_STAGE + 2); + } +} diff --git a/test/battle/move_effect/dragon_dance.c b/test/battle/move_effect/dragon_dance.c index 52587cc098..0d0cb6a4bc 100644 --- a/test/battle/move_effect/dragon_dance.c +++ b/test/battle/move_effect/dragon_dance.c @@ -1,4 +1,23 @@ #include "global.h" #include "test/battle.h" -TO_DO_BATTLE_TEST("Dragon Dance increases Attack and Speed by one stage each"); +ASSUMPTIONS +{ + ASSUME(GetMoveEffect(MOVE_DRAGON_DANCE) == EFFECT_DRAGON_DANCE); +} + +SINGLE_BATTLE_TEST("Dragon Dance increases the user's Attack and Speed by 1 stage each") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_DRAGON_DANCE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_DRAGON_DANCE, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + } THEN { + EXPECT_EQ(player->statStages[STAT_ATK], DEFAULT_STAT_STAGE + 1); + EXPECT_EQ(player->statStages[STAT_SPEED], DEFAULT_STAT_STAGE + 1); + } +} diff --git a/test/battle/move_effect/flatter.c b/test/battle/move_effect/flatter.c index d9d05a98f2..ce798e555c 100644 --- a/test/battle/move_effect/flatter.c +++ b/test/battle/move_effect/flatter.c @@ -1,7 +1,27 @@ #include "global.h" #include "test/battle.h" -TO_DO_BATTLE_TEST("Flatter raises the target's Sp. Atk and confuses them") +ASSUMPTIONS +{ + ASSUME(GetMoveEffect(MOVE_FLATTER) == EFFECT_FLATTER); +} + +SINGLE_BATTLE_TEST("Flatter increases the target's Sp. Attack by 1 stage and confuses them") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_FLATTER); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_FLATTER, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + } THEN { + EXPECT_EQ(opponent->statStages[STAT_SPATK], DEFAULT_STAT_STAGE + 1); + EXPECT(opponent->volatiles.confusionTurns > 0); + } +} + TO_DO_BATTLE_TEST("Flatter raises the target's Sp. Atk even if they're already confused") TO_DO_BATTLE_TEST("Flatter raises the target's Sp. Atk even when protected by Safeguard") TO_DO_BATTLE_TEST("Flatter raises the target's Sp. Atk even when protected Own Tempo") diff --git a/test/battle/move_effect/minimize.c b/test/battle/move_effect/minimize.c index f0196936a5..b6730fca9b 100644 --- a/test/battle/move_effect/minimize.c +++ b/test/battle/move_effect/minimize.c @@ -1,4 +1,29 @@ #include "global.h" #include "test/battle.h" -TO_DO_BATTLE_TEST("TODO: Write Minimize (Move Effect) test titles") +ASSUMPTIONS +{ + ASSUME(GetMoveEffect(MOVE_MINIMIZE) == EFFECT_MINIMIZE); +} + +SINGLE_BATTLE_TEST("Minimize increases the user's Evasion by 2 stages (Gen5+) or 1 stage (Gen1-4)") +{ + u32 config; + PARAMETRIZE { config = GEN_4; } + PARAMETRIZE { config = GEN_5; } + + GIVEN { + WITH_CONFIG(CONFIG_MINIMIZE_EVASION, config); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_MINIMIZE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_MINIMIZE, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + } THEN { + EXPECT_EQ(player->statStages[STAT_EVASION], DEFAULT_STAT_STAGE + (config >= GEN_5 ? 2 : 1)); + } +} + +// Minimize's flag tests are handled in tests/battle/move_flags/minimize_double_damage.c diff --git a/test/battle/move_effect/noble_roar.c b/test/battle/move_effect/noble_roar.c index 4fd182b84d..f683619b4f 100644 --- a/test/battle/move_effect/noble_roar.c +++ b/test/battle/move_effect/noble_roar.c @@ -1,4 +1,23 @@ #include "global.h" #include "test/battle.h" -TO_DO_BATTLE_TEST("TODO: Write Noble Roar (Move Effect) test titles") +ASSUMPTIONS +{ + ASSUME(GetMoveEffect(MOVE_NOBLE_ROAR) == EFFECT_NOBLE_ROAR); +} + +SINGLE_BATTLE_TEST("Noble Roar reduces the target's Attack and Sp. Attack by 1 stage each") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_NOBLE_ROAR); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_NOBLE_ROAR, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + } THEN { + EXPECT_EQ(opponent->statStages[STAT_ATK], DEFAULT_STAT_STAGE - 1); + EXPECT_EQ(opponent->statStages[STAT_SPATK], DEFAULT_STAT_STAGE - 1); + } +} diff --git a/test/battle/move_effect/quiver_dance.c b/test/battle/move_effect/quiver_dance.c index 5a7ff5b944..b317d39878 100644 --- a/test/battle/move_effect/quiver_dance.c +++ b/test/battle/move_effect/quiver_dance.c @@ -1,4 +1,24 @@ #include "global.h" #include "test/battle.h" -TO_DO_BATTLE_TEST("TODO: Write Quiver Dance (Move Effect) test titles") +ASSUMPTIONS +{ + ASSUME(GetMoveEffect(MOVE_QUIVER_DANCE) == EFFECT_QUIVER_DANCE); +} + +SINGLE_BATTLE_TEST("Quiver Dance increases the user's Sp. Attack, Sp. Defense and Speed by 1 stage each") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_QUIVER_DANCE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_QUIVER_DANCE, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + } THEN { + EXPECT_EQ(player->statStages[STAT_SPATK], DEFAULT_STAT_STAGE + 1); + EXPECT_EQ(player->statStages[STAT_SPDEF], DEFAULT_STAT_STAGE + 1); + EXPECT_EQ(player->statStages[STAT_SPEED], DEFAULT_STAT_STAGE + 1); + } +} diff --git a/test/battle/move_effect/shift_gear.c b/test/battle/move_effect/shift_gear.c index 990e815cb3..a480eaa949 100644 --- a/test/battle/move_effect/shift_gear.c +++ b/test/battle/move_effect/shift_gear.c @@ -1,4 +1,23 @@ #include "global.h" #include "test/battle.h" -TO_DO_BATTLE_TEST("TODO: Write Shift Gear (Move Effect) test titles") +ASSUMPTIONS +{ + ASSUME(GetMoveEffect(MOVE_SHIFT_GEAR) == EFFECT_SHIFT_GEAR); +} + +SINGLE_BATTLE_TEST("Shift Gear increases the user's Speed by 2 stages and Attack by 1 stage") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_SHIFT_GEAR); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SHIFT_GEAR, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + } THEN { + EXPECT_EQ(player->statStages[STAT_SPEED], DEFAULT_STAT_STAGE + 2); + EXPECT_EQ(player->statStages[STAT_ATK], DEFAULT_STAT_STAGE + 1); + } +} diff --git a/test/battle/move_effect/special_attack_down_2.c b/test/battle/move_effect/special_attack_down_2.c index b62d4b52ac..7ea5204431 100644 --- a/test/battle/move_effect/special_attack_down_2.c +++ b/test/battle/move_effect/special_attack_down_2.c @@ -1,4 +1,22 @@ #include "global.h" #include "test/battle.h" -TO_DO_BATTLE_TEST("TODO: Write Eerie Impulse (Move Effect) test titles") +ASSUMPTIONS +{ + ASSUME(GetMoveEffect(MOVE_EERIE_IMPULSE) == EFFECT_SPECIAL_ATTACK_DOWN_2); +} + +SINGLE_BATTLE_TEST("Eerie Impulse reduces the target's Sp. Attack by 2 stages") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_EERIE_IMPULSE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_EERIE_IMPULSE, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + } THEN { + EXPECT_EQ(opponent->statStages[STAT_SPATK], DEFAULT_STAT_STAGE - 2); + } +} diff --git a/test/battle/move_effect/special_attack_up_2.c b/test/battle/move_effect/special_attack_up_2.c index c4bf38d6aa..c87b3fea0b 100644 --- a/test/battle/move_effect/special_attack_up_2.c +++ b/test/battle/move_effect/special_attack_up_2.c @@ -1,4 +1,22 @@ #include "global.h" #include "test/battle.h" -TO_DO_BATTLE_TEST("TODO: Write Nasty Plot (Move Effect) test titles") +ASSUMPTIONS +{ + ASSUME(GetMoveEffect(MOVE_NASTY_PLOT) == EFFECT_SPECIAL_ATTACK_UP_2); +} + +SINGLE_BATTLE_TEST("Nasty Plot increases the user's Sp. Attack by 2 stages") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_NASTY_PLOT); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_NASTY_PLOT, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + } THEN { + EXPECT_EQ(player->statStages[STAT_SPATK], DEFAULT_STAT_STAGE + 2); + } +} diff --git a/test/battle/move_effect/special_defense_down_2.c b/test/battle/move_effect/special_defense_down_2.c index 5fff5bdd7b..4740d3e5e2 100644 --- a/test/battle/move_effect/special_defense_down_2.c +++ b/test/battle/move_effect/special_defense_down_2.c @@ -1,4 +1,22 @@ #include "global.h" #include "test/battle.h" -TO_DO_BATTLE_TEST("TODO: Write Fake Tears/Metal Sound (Move Effect) test titles") +ASSUMPTIONS +{ + ASSUME(GetMoveEffect(MOVE_FAKE_TEARS) == EFFECT_SPECIAL_DEFENSE_DOWN_2); +} + +SINGLE_BATTLE_TEST("Fake Tears reduces the target's Sp. Defense by 2 stages") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_FAKE_TEARS); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_FAKE_TEARS, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + } THEN { + EXPECT_EQ(opponent->statStages[STAT_SPDEF], DEFAULT_STAT_STAGE - 2); + } +} diff --git a/test/battle/move_effect/special_defense_up_2.c b/test/battle/move_effect/special_defense_up_2.c index 1685663452..9da91d8d07 100644 --- a/test/battle/move_effect/special_defense_up_2.c +++ b/test/battle/move_effect/special_defense_up_2.c @@ -1,4 +1,22 @@ #include "global.h" #include "test/battle.h" -TO_DO_BATTLE_TEST("TODO: Write Amnesia (Move Effect) test titles") +ASSUMPTIONS +{ + ASSUME(GetMoveEffect(MOVE_AMNESIA) == EFFECT_SPECIAL_DEFENSE_UP_2); +} + +SINGLE_BATTLE_TEST("Amnesia increases the user's Sp. Defense by 2 stages") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_AMNESIA); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_AMNESIA, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + } THEN { + EXPECT_EQ(player->statStages[STAT_SPDEF], DEFAULT_STAT_STAGE + 2); + } +} diff --git a/test/battle/move_effect/speed_down_2.c b/test/battle/move_effect/speed_down_2.c index e3b95e3fe9..2b350b6252 100644 --- a/test/battle/move_effect/speed_down_2.c +++ b/test/battle/move_effect/speed_down_2.c @@ -1,4 +1,22 @@ #include "global.h" #include "test/battle.h" -TO_DO_BATTLE_TEST("TODO: Write Scary Face/Cotton Spore (Move Effect) test titles") +ASSUMPTIONS +{ + ASSUME(GetMoveEffect(MOVE_SCARY_FACE) == EFFECT_SPEED_DOWN_2); +} + +SINGLE_BATTLE_TEST("Scary Face reduces the target's Speed by 2 stages") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_SCARY_FACE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCARY_FACE, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + } THEN { + EXPECT_EQ(opponent->statStages[STAT_SPEED], DEFAULT_STAT_STAGE - 2); + } +} diff --git a/test/battle/move_effect/speed_up_2.c b/test/battle/move_effect/speed_up_2.c index 7202555498..bba7fb88b1 100644 --- a/test/battle/move_effect/speed_up_2.c +++ b/test/battle/move_effect/speed_up_2.c @@ -1,4 +1,22 @@ #include "global.h" #include "test/battle.h" -TO_DO_BATTLE_TEST("TODO: Write Agility/Rock Polish (Move Effect) test titles") +ASSUMPTIONS +{ + ASSUME(GetMoveEffect(MOVE_AGILITY) == EFFECT_SPEED_UP_2); +} + +SINGLE_BATTLE_TEST("Agility increases the user's Speed by 2 stages") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_AGILITY); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_AGILITY, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + } THEN { + EXPECT_EQ(player->statStages[STAT_SPEED], DEFAULT_STAT_STAGE + 2); + } +} diff --git a/test/battle/move_effect/swagger.c b/test/battle/move_effect/swagger.c index 3217e48903..fad4a39c5c 100644 --- a/test/battle/move_effect/swagger.c +++ b/test/battle/move_effect/swagger.c @@ -1,7 +1,27 @@ #include "global.h" #include "test/battle.h" -TO_DO_BATTLE_TEST("Swagger raises the target's Attack and confuses them") +ASSUMPTIONS +{ + ASSUME(GetMoveEffect(MOVE_SWAGGER) == EFFECT_SWAGGER); +} + +SINGLE_BATTLE_TEST("Swagger increases the target's Attack by 2 stages and confuses them") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_SWAGGER); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SWAGGER, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + } THEN { + EXPECT_EQ(opponent->statStages[STAT_ATK], DEFAULT_STAT_STAGE + 2); + EXPECT(opponent->volatiles.confusionTurns > 0); + } +} + TO_DO_BATTLE_TEST("Swagger raises the target's Attack even if they're already confused") TO_DO_BATTLE_TEST("Swagger raises the target's Attack even when protected by Safeguard") TO_DO_BATTLE_TEST("Swagger raises the target's Attack even when protected Own Tempo") diff --git a/test/battle/move_effect/tickle.c b/test/battle/move_effect/tickle.c index b5f5a56d69..3a878868fd 100644 --- a/test/battle/move_effect/tickle.c +++ b/test/battle/move_effect/tickle.c @@ -1,4 +1,23 @@ #include "global.h" #include "test/battle.h" -TO_DO_BATTLE_TEST("TODO: Write Tickle (Move Effect) test titles") +ASSUMPTIONS +{ + ASSUME(GetMoveEffect(MOVE_TICKLE) == EFFECT_TICKLE); +} + +SINGLE_BATTLE_TEST("Tickle reduces the target's Attack and Defense by 1 stage each") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TICKLE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TICKLE, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + } THEN { + EXPECT_EQ(opponent->statStages[STAT_ATK], DEFAULT_STAT_STAGE - 1); + EXPECT_EQ(opponent->statStages[STAT_DEF], DEFAULT_STAT_STAGE - 1); + } +} diff --git a/test/battle/move_effect/victory_dance.c b/test/battle/move_effect/victory_dance.c index cd1d892428..83fff322e3 100644 --- a/test/battle/move_effect/victory_dance.c +++ b/test/battle/move_effect/victory_dance.c @@ -1,4 +1,24 @@ #include "global.h" #include "test/battle.h" -TO_DO_BATTLE_TEST("TODO: Write Victory Dance (Move Effect) test titles") +ASSUMPTIONS +{ + ASSUME(GetMoveEffect(MOVE_VICTORY_DANCE) == EFFECT_VICTORY_DANCE); +} + +SINGLE_BATTLE_TEST("Victory Dance increases the user's Attack, Defense and Speed by 1 stage each") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_VICTORY_DANCE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_VICTORY_DANCE, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + } THEN { + EXPECT_EQ(player->statStages[STAT_ATK], DEFAULT_STAT_STAGE + 1); + EXPECT_EQ(player->statStages[STAT_DEF], DEFAULT_STAT_STAGE + 1); + EXPECT_EQ(player->statStages[STAT_SPEED], DEFAULT_STAT_STAGE + 1); + } +}