Implements a bunch more moves
This commit is contained in:
@@ -10,14 +10,15 @@
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Moq" Version="4.20.70" />
|
||||
<PackageReference Include="Moq" Version="4.20.70"/>
|
||||
<PackageReference Include="coverlet.collector" Version="6.0.0"/>
|
||||
<PackageReference Include="TUnit" Version="0.5.18" />
|
||||
<PackageReference Include="TUnit" Version="0.5.18"/>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\PkmnLib.Dynamic\PkmnLib.Dynamic.csproj" />
|
||||
<ProjectReference Include="..\PkmnLib.Plugin.Gen7\PkmnLib.Plugin.Gen7.csproj" />
|
||||
<ProjectReference Include="..\..\PkmnLib.Dataloader\PkmnLib.Dataloader.csproj"/>
|
||||
<ProjectReference Include="..\..\PkmnLib.Dynamic\PkmnLib.Dynamic.csproj"/>
|
||||
<ProjectReference Include="..\PkmnLib.Plugin.Gen7\PkmnLib.Plugin.Gen7.csproj"/>
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
||||
@@ -0,0 +1,90 @@
|
||||
using PkmnLib.Dynamic.Libraries;
|
||||
using PkmnLib.Dynamic.Models;
|
||||
using PkmnLib.Plugin.Gen7.Scripts.Moves;
|
||||
using PkmnLib.Static;
|
||||
using PkmnLib.Static.Libraries;
|
||||
using PkmnLib.Static.Utils;
|
||||
|
||||
namespace PkmnLib.Plugin.Gen7.Tests.Scripts.Moves;
|
||||
|
||||
public class HiddenPowerTests
|
||||
{
|
||||
public record TestCaseData(IndividualValueStatisticSet Ivs, StringKey ExpectedType, byte ExpectedPower)
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public override string ToString() =>
|
||||
$"Hidden Power type is {ExpectedType}, base power is {ExpectedPower} " +
|
||||
$"with IVs: HP {Ivs.Hp}, Atk {Ivs.Attack}, Def {Ivs.Defense}, SpA {Ivs.SpecialAttack}, SpD {Ivs.SpecialDefense}, Spe {Ivs.Speed}";
|
||||
}
|
||||
|
||||
public static IEnumerable<Func<TestCaseData>> HiddenPowerTestData()
|
||||
{
|
||||
yield return () => new TestCaseData(new IndividualValueStatisticSet(31, 31, 31, 31, 31, 31), "dark", 70);
|
||||
yield return () => new TestCaseData(new IndividualValueStatisticSet(25, 2, 12, 5, 8, 17), "bug", 31);
|
||||
yield return () => new TestCaseData(new IndividualValueStatisticSet(29, 19, 18, 22, 15, 28), "fire", 64);
|
||||
}
|
||||
|
||||
[Test, MethodDataSource(nameof(HiddenPowerTestData))]
|
||||
public async Task HiddenPower_ChangesType(TestCaseData test)
|
||||
{
|
||||
var typeLibrary = new TypeLibrary();
|
||||
typeLibrary.RegisterType("normal");
|
||||
typeLibrary.RegisterType("fighting");
|
||||
typeLibrary.RegisterType("flying");
|
||||
typeLibrary.RegisterType("poison");
|
||||
typeLibrary.RegisterType("ground");
|
||||
typeLibrary.RegisterType("rock");
|
||||
typeLibrary.RegisterType("bug");
|
||||
typeLibrary.RegisterType("ghost");
|
||||
typeLibrary.RegisterType("steel");
|
||||
typeLibrary.RegisterType("fire");
|
||||
typeLibrary.RegisterType("water");
|
||||
typeLibrary.RegisterType("grass");
|
||||
typeLibrary.RegisterType("electric");
|
||||
typeLibrary.RegisterType("psychic");
|
||||
typeLibrary.RegisterType("ice");
|
||||
typeLibrary.RegisterType("dragon");
|
||||
typeLibrary.RegisterType("dark");
|
||||
typeLibrary.RegisterType("fairy");
|
||||
|
||||
var executingMove = new Mock<IExecutingMove>(MockBehavior.Strict);
|
||||
var user = new Mock<IPokemon>(MockBehavior.Strict);
|
||||
var target = new Mock<IPokemon>(MockBehavior.Strict);
|
||||
var dynamicLibrary = new Mock<IDynamicLibrary>(MockBehavior.Strict);
|
||||
var staticLibrary = new Mock<IStaticLibrary>(MockBehavior.Strict);
|
||||
|
||||
executingMove.SetupGet(x => x.User).Returns(user.Object);
|
||||
user.SetupGet(x => x.IndividualValues).Returns(test.Ivs);
|
||||
user.SetupGet(x => x.Library).Returns(dynamicLibrary.Object);
|
||||
staticLibrary.Setup(x => x.Types).Returns(typeLibrary);
|
||||
dynamicLibrary.Setup(x => x.StaticLibrary).Returns(staticLibrary.Object);
|
||||
|
||||
var moveType = new TypeIdentifier(1, "normal");
|
||||
|
||||
var hiddenPower = new HiddenPower();
|
||||
hiddenPower.ChangeMoveType(executingMove.Object, target.Object, 0, ref moveType);
|
||||
|
||||
await Assert.That(moveType.Name).IsEqualTo(test.ExpectedType);
|
||||
}
|
||||
|
||||
[Test, MethodDataSource(nameof(HiddenPowerTestData))]
|
||||
public async Task HiddenPower_ChangesBasePower(TestCaseData test)
|
||||
{
|
||||
var executingMove = new Mock<IExecutingMove>(MockBehavior.Strict);
|
||||
var user = new Mock<IPokemon>(MockBehavior.Strict);
|
||||
var target = new Mock<IPokemon>(MockBehavior.Strict);
|
||||
var dynamicLibrary = new Mock<IDynamicLibrary>(MockBehavior.Strict);
|
||||
var staticLibrary = new Mock<IStaticLibrary>(MockBehavior.Strict);
|
||||
|
||||
executingMove.SetupGet(x => x.User).Returns(user.Object);
|
||||
user.SetupGet(x => x.IndividualValues).Returns(test.Ivs);
|
||||
user.SetupGet(x => x.Library).Returns(dynamicLibrary.Object);
|
||||
dynamicLibrary.Setup(x => x.StaticLibrary).Returns(staticLibrary.Object);
|
||||
|
||||
var hiddenPower = new HiddenPower();
|
||||
byte power = 0;
|
||||
hiddenPower.ChangeBasePower(executingMove.Object, target.Object, 0, ref power);
|
||||
|
||||
await Assert.That(power).IsEqualTo(test.ExpectedPower);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user