PKHeX/Tests/PKHeX.Core.Tests/Legality/Wild8aRNGTests.cs
2022-05-07 11:47:01 -07:00

67 lines
1.9 KiB
C#

using FluentAssertions;
using Xunit;
namespace PKHeX.Core.Tests.Legality;
public static class Wild8aRNGTests
{
[Fact]
public static void TryGenerateShinyOutbreakZorua()
{
PA8 test = new() { Species = (int)Species.Zorua, Form = 1 };
const ulong s0 = 0xDF440DA44EEC4FFB;
var param = new OverworldParam8a
{
FlawlessIVs = 0, IsAlpha = false,
Shiny = Shiny.Random, RollCount = 30,
GenderRatio = 0x7F,
};
var result = Overworld8aRNG.TryApplyFromSeed(test, EncounterCriteria.Unrestricted, param, s0);
result.Should().BeTrue();
test.IV_HP.Should().Be(10);
test.IV_ATK.Should().Be(13);
test.IV_DEF.Should().Be(8);
test.IV_SPA.Should().Be(0);
test.IV_SPD.Should().Be(17);
test.IV_SPE.Should().Be(25);
test.HeightScalar.Should().Be(99);
test.WeightScalar.Should().Be(153);
var verify = Overworld8aRNG.Verify(test, s0, param);
verify.Should().BeTrue();
}
[Fact]
public static void TestMagby()
{
const ulong s0 = 0xE12DDECBDFC64AA1ul;
PA8 test = new() { Species = (int)Species.Magby };
var param = new OverworldParam8a
{
FlawlessIVs = 3,
IsAlpha = true,
Shiny = Shiny.Random,
RollCount = 17,
GenderRatio = 0x7F,
};
var xoro = new Xoroshiro128Plus(s0);
var (EntitySeed, _) = Overworld8aRNG.ApplyDetails(test, param, true, ref xoro);
test.IV_HP.Should().Be(31);
test.IV_ATK.Should().Be(31);
test.IV_DEF.Should().Be(7);
test.IV_SPA.Should().Be(31);
test.IV_SPD.Should().Be(20);
test.IV_SPE.Should().Be(10);
test.AlphaMove.Should().Be((ushort)Move.Flamethrower);
var verify = Overworld8aRNG.Verify(test, EntitySeed, param);
verify.Should().BeTrue();
}
}