Move all battle state from IPokemon to an ephemeral IBattlePokemon wrapper
This commit is contained in:
@@ -20,8 +20,8 @@ public class DoublePowerIfTargetDamagedInTurnTests
|
||||
/// Creates a fully mocked test setup where the target sits on side 0 whose volatile scripts are a
|
||||
/// real <see cref="ScriptSet"/>.
|
||||
/// </summary>
|
||||
private static (DoublePowerIfTargetDamagedInTurn script, IExecutingMove move, IPokemon target, ScriptSet sideScripts
|
||||
) CreateTestSetup()
|
||||
private static (DoublePowerIfTargetDamagedInTurn script, IExecutingMove move, IBattlePokemon target, ScriptSet
|
||||
sideScripts ) CreateTestSetup()
|
||||
{
|
||||
var script = new DoublePowerIfTargetDamagedInTurn();
|
||||
var move = Substitute.For<IExecutingMove>();
|
||||
@@ -33,17 +33,13 @@ public class DoublePowerIfTargetDamagedInTurnTests
|
||||
var battle = Substitute.For<IBattle>();
|
||||
battle.Sides.Returns(new[] { side });
|
||||
|
||||
var user = Substitute.For<IPokemon>();
|
||||
var userBattleData = Substitute.For<IPokemonBattleData>();
|
||||
userBattleData.Battle.Returns(battle);
|
||||
user.BattleData.Returns(userBattleData);
|
||||
var user = Substitute.For<IBattlePokemon>();
|
||||
user.Battle.Returns(battle);
|
||||
move.User.Returns(user);
|
||||
|
||||
var target = Substitute.For<IPokemon>();
|
||||
var targetBattleData = Substitute.For<IPokemonBattleData>();
|
||||
targetBattleData.Battle.Returns(battle);
|
||||
targetBattleData.SideIndex.Returns((byte)0);
|
||||
target.BattleData.Returns(targetBattleData);
|
||||
var target = Substitute.For<IBattlePokemon>();
|
||||
target.Battle.Returns(battle);
|
||||
target.SideIndex.Returns((byte)0);
|
||||
|
||||
return (script, move, target, sideScripts);
|
||||
}
|
||||
@@ -140,7 +136,7 @@ public class DoublePowerIfTargetDamagedInTurnTests
|
||||
var (script, move, target, sideScripts) = CreateTestSetup();
|
||||
var data = new DoublePowerIfTargetDamagedInTurnData();
|
||||
sideScripts.Add(data);
|
||||
data.OnDamage(Substitute.For<IPokemon>(), DamageSource.MoveDamage, 100, 80);
|
||||
data.OnDamage(Substitute.For<IBattlePokemon>(), DamageSource.MoveDamage, 100, 80);
|
||||
ushort basePower = 60;
|
||||
|
||||
// Act
|
||||
@@ -192,27 +188,4 @@ public class DoublePowerIfTargetDamagedInTurnTests
|
||||
await Assert.That(sideScripts.Contains(ScriptUtils.ResolveName<DoublePowerIfTargetDamagedInTurnData>()))
|
||||
.IsFalse();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Technical test: without battle data on the user (outside of battle) the base power is unchanged
|
||||
/// and nothing throws.
|
||||
/// </summary>
|
||||
[Test]
|
||||
public async Task ChangeBasePower_UserHasNoBattleData_BasePowerUnchanged()
|
||||
{
|
||||
// Arrange
|
||||
var script = new DoublePowerIfTargetDamagedInTurn();
|
||||
var move = Substitute.For<IExecutingMove>();
|
||||
var user = Substitute.For<IPokemon>();
|
||||
user.BattleData.Returns((IPokemonBattleData?)null);
|
||||
move.User.Returns(user);
|
||||
var target = Substitute.For<IPokemon>();
|
||||
ushort basePower = 60;
|
||||
|
||||
// Act
|
||||
script.ChangeBasePower(move, target, 0, ref basePower);
|
||||
|
||||
// Assert
|
||||
await Assert.That(basePower).IsEqualTo((ushort)60);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user