Update dependencies, replace Moq with NSubstitute
This commit is contained in:
@@ -23,37 +23,37 @@ public class DamageCalculatorTests
|
||||
[Test]
|
||||
public async Task BulbapediaExampleDamageTest()
|
||||
{
|
||||
var attacker = new Mock<IPokemon>();
|
||||
var attacker = Substitute.For<IPokemon>();
|
||||
// Imagine a level 75 Glaceon
|
||||
attacker.Setup(x => x.Level).Returns(75);
|
||||
attacker.Level.Returns((byte)75);
|
||||
// with an effective Attack stat of 123
|
||||
attacker.Setup(x => x.BoostedStats).Returns(new StatisticSet<uint>(1, 123, 1, 1, 1, 1));
|
||||
attacker.BoostedStats.Returns(new StatisticSet<uint>(1, 123, 1, 1, 1, 1));
|
||||
// We use 10 as the Ice type
|
||||
attacker.Setup(x => x.Types).Returns([new TypeIdentifier(10, "ice")]);
|
||||
attacker.Types.Returns([new TypeIdentifier(10, "ice")]);
|
||||
|
||||
var defender = new Mock<IPokemon>();
|
||||
var defender = Substitute.For<IPokemon>();
|
||||
// a Garchomp with an effective Defense stat of 163
|
||||
defender.Setup(x => x.BoostedStats).Returns(new StatisticSet<uint>(1, 1, 163, 1, 1, 1));
|
||||
defender.Setup(x => x.GetScripts()).Returns(new ScriptIterator([]));
|
||||
defender.BoostedStats.Returns(new StatisticSet<uint>(1, 1, 163, 1, 1, 1));
|
||||
defender.GetScripts().Returns(new ScriptIterator([]));
|
||||
|
||||
var useMove = new Mock<IMoveData>();
|
||||
var useMove = Substitute.For<IMoveData>();
|
||||
// Ice Fang (an Ice-type physical move with a power of 65)
|
||||
useMove.Setup(x => x.Category).Returns(MoveCategory.Physical);
|
||||
useMove.Category.Returns(MoveCategory.Physical);
|
||||
|
||||
var damageCalculator = new Gen7DamageCalculator(false);
|
||||
var executingMove = new Mock<IExecutingMove>();
|
||||
executingMove.Setup(x => x.UseMove).Returns(useMove.Object);
|
||||
executingMove.Setup(x => x.User).Returns(attacker.Object);
|
||||
executingMove.Setup(x => x.GetScripts()).Returns(new ScriptIterator([]));
|
||||
var executingMove = Substitute.For<IExecutingMove>();
|
||||
executingMove.UseMove.Returns(useMove);
|
||||
executingMove.User.Returns(attacker);
|
||||
executingMove.GetScripts().Returns(new ScriptIterator([]));
|
||||
|
||||
var hit = new Mock<IHitData>();
|
||||
var hit = Substitute.For<IHitData>();
|
||||
// Ice Fang (an Ice-type physical move with a power of 65)
|
||||
hit.Setup(x => x.BasePower).Returns(65);
|
||||
hit.Setup(x => x.Type).Returns(new TypeIdentifier(10, "ice"));
|
||||
hit.BasePower.Returns((byte)65);
|
||||
hit.Type.Returns(new TypeIdentifier(10, "ice"));
|
||||
// has a double weakness to the move's Ice type
|
||||
hit.Setup(x => x.Effectiveness).Returns(4.0f);
|
||||
hit.Effectiveness.Returns(4.0f);
|
||||
|
||||
var damage = damageCalculator.GetDamage(executingMove.Object, defender.Object, 0, hit.Object);
|
||||
var damage = damageCalculator.GetDamage(executingMove, defender, 0, hit);
|
||||
// That means Ice Fang will do between 168 and 196 HP damage, depending on luck.
|
||||
// Note that we are testing deterministic damage, so we expect the maximum damage.
|
||||
await Assert.That(damage).IsEqualTo((uint)196);
|
||||
|
||||
Reference in New Issue
Block a user