A load more work on FFI
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
130
PkmnLibRSharpTests/DynamicData/PokemonTests.cs
Normal file
130
PkmnLibRSharpTests/DynamicData/PokemonTests.cs
Normal file
@@ -0,0 +1,130 @@
|
||||
using System;
|
||||
using NUnit.Framework;
|
||||
using PkmnLibSharp.DynamicData;
|
||||
using PkmnLibSharp.DynamicData.Libraries;
|
||||
using PkmnLibSharp.StaticData;
|
||||
using PkmnLibSharp.StaticData.Libraries;
|
||||
|
||||
namespace PkmnLibRSharpTests.DynamicData
|
||||
{
|
||||
public class PokemonTests
|
||||
{
|
||||
[Test]
|
||||
public void Pokemon_GetLibrary()
|
||||
{
|
||||
using var library = GetLibrary();
|
||||
using var pokemon = new PokemonBuilder(library, "testSpecies", 100).Build();
|
||||
Assert.AreEqual(library, pokemon.Library);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Pokemon_GetSpecies()
|
||||
{
|
||||
using var library = GetLibrary();
|
||||
using var pokemon = new PokemonBuilder(library, "testSpecies", 100).Build();
|
||||
Assert.AreEqual(library.StaticData.SpeciesLibrary["testSpecies"], pokemon.Species);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Pokemon_GetForm()
|
||||
{
|
||||
using var library = GetLibrary();
|
||||
using var pokemon = new PokemonBuilder(library, "testSpecies", 100).Build();
|
||||
Assert.AreEqual(library.StaticData.SpeciesLibrary["testSpecies"].DefaultForm, pokemon.Form);
|
||||
}
|
||||
|
||||
|
||||
[Test]
|
||||
public void Pokemon_GetDisplaySpecies()
|
||||
{
|
||||
using var library = GetLibrary();
|
||||
using var pokemon = new PokemonBuilder(library, "testSpecies", 100).Build();
|
||||
Assert.AreEqual(library.StaticData.SpeciesLibrary["testSpecies"], pokemon.Species);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Pokemon_GetDisplayForm()
|
||||
{
|
||||
using var library = GetLibrary();
|
||||
using var pokemon = new PokemonBuilder(library, "testSpecies", 100).Build();
|
||||
Assert.AreEqual(library.StaticData.SpeciesLibrary["testSpecies"].DefaultForm, pokemon.Form);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Pokemon_GetLevel()
|
||||
{
|
||||
using var library = GetLibrary();
|
||||
using var pokemon = new PokemonBuilder(library, "testSpecies", 100).Build();
|
||||
Assert.AreEqual(100, pokemon.Level);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Pokemon_GetExperience()
|
||||
{
|
||||
using var library = GetLibrary();
|
||||
using var pokemon = new PokemonBuilder(library, "testSpecies", 100).Build();
|
||||
Assert.AreEqual(library.StaticData.GrowthRateLibrary.CalculateExperience("testGrowthrate", 100),
|
||||
pokemon.Experience);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Pokemon_GetUniqueIdentifier()
|
||||
{
|
||||
using var library = GetLibrary();
|
||||
using var pokemon = new PokemonBuilder(library, "testSpecies", 100).WithIdentifier(1000).Build();
|
||||
Assert.AreEqual(1000, pokemon.UniqueIdentifier);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Pokemon_GetGender()
|
||||
{
|
||||
using var library = GetLibrary();
|
||||
using var pokemon = new PokemonBuilder(library, "testSpecies", 100).WithGender(Gender.Male).Build();
|
||||
Assert.AreEqual(Gender.Male, pokemon.Gender);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Pokemon_GetColoring()
|
||||
{
|
||||
using var library = GetLibrary();
|
||||
using var pokemon = new PokemonBuilder(library, "testSpecies", 100).ForceShiny(true).Build();
|
||||
Assert.AreEqual(1, pokemon.Coloring);
|
||||
}
|
||||
|
||||
private static DynamicLibrary GetLibrary()
|
||||
{
|
||||
using var settings = new LibrarySettings(100, 4096);
|
||||
using var speciesLibrary = new SpeciesLibrary(0);
|
||||
FillSpeciesLibrary(speciesLibrary);
|
||||
using var moves = new MoveLibrary(0);
|
||||
using var items = new ItemLibrary(0);
|
||||
using var growthRates = new GrowthRateLibrary(0);
|
||||
using var gr = CommonGrowthRates.Erratic(100);
|
||||
growthRates.AddGrowthRate("testGrowthrate", gr);
|
||||
using var types = new TypeLibrary(0);
|
||||
using var natures = new NatureLibrary(0);
|
||||
natures.LoadNature("testNature", Nature.NeutralNature());
|
||||
using var abilities = new AbilityLibrary(0);
|
||||
using var library = new PkmnLibSharp.StaticData.Libraries.StaticData(settings, speciesLibrary, moves, items,
|
||||
growthRates, types, natures, abilities);
|
||||
|
||||
using var statCalc = new Gen7BattleStatCalculator();
|
||||
using var damageLib = new Gen7DamageLibrary(false);
|
||||
using var miscLib = new Gen7MiscLibrary();
|
||||
using var scriptResolver = new WasmScriptResolver();
|
||||
|
||||
return new DynamicLibrary(library, statCalc, damageLib, miscLib, scriptResolver);
|
||||
}
|
||||
|
||||
private static void FillSpeciesLibrary(SpeciesLibrary speciesLibrary)
|
||||
{
|
||||
using var stats = new StaticStatisticSet<short>(5, 10, 30, 20, 2, 0);
|
||||
using var moves = new LearnableMoves();
|
||||
using var form = new Form("foobar", 0.2f, 5.8f, 300, new TypeIdentifier[] { new(1), new(2) }, stats,
|
||||
new[] { "foo", "bar" }, new[] { "set" }, moves, Array.Empty<string>());
|
||||
using var species =
|
||||
new Species(10, "testSpecies", 0.2f, "testGrowthrate", 120, form, Array.Empty<string>());
|
||||
speciesLibrary.Add(species.Name, species);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,94 @@
|
||||
using NUnit.Framework;
|
||||
using PkmnLibSharp.StaticData;
|
||||
|
||||
namespace PkmnLibRSharpTests.StaticData.Libraries
|
||||
{
|
||||
public class CommonGrowthRateTests
|
||||
{
|
||||
[TestCase(1, 0)]
|
||||
[TestCase(20, 12_800)]
|
||||
[TestCase(40, 76_800)]
|
||||
[TestCase(60, 194_400)]
|
||||
[TestCase(68, 257_834)]
|
||||
[TestCase(70, 276_458)]
|
||||
[TestCase(80, 378_880)]
|
||||
[TestCase(90, 491_346)]
|
||||
[TestCase(98, 583_539)]
|
||||
[TestCase(100, 600_000)]
|
||||
public void ErraticExperience(byte level, int experience)
|
||||
{
|
||||
using var growthRate = CommonGrowthRates.Erratic(100);
|
||||
Assert.AreEqual(experience, growthRate.CalculateExperience(level));
|
||||
}
|
||||
|
||||
[TestCase(1, 0)]
|
||||
[TestCase(20, 6_400)]
|
||||
[TestCase(40, 51_200)]
|
||||
[TestCase(60, 172_800)]
|
||||
[TestCase(70, 274_400)]
|
||||
[TestCase(80, 409_600)]
|
||||
[TestCase(90, 583_200)]
|
||||
[TestCase(100, 800_000)]
|
||||
public void FastExperience(byte level, int experience)
|
||||
{
|
||||
using var growthRate = CommonGrowthRates.Fast(100);
|
||||
Assert.AreEqual(experience, growthRate.CalculateExperience(level));
|
||||
}
|
||||
|
||||
[TestCase(1, 0)]
|
||||
[TestCase(20, 8_000)]
|
||||
[TestCase(40, 64_000)]
|
||||
[TestCase(60, 216_000)]
|
||||
[TestCase(70, 343_000)]
|
||||
[TestCase(80, 512_000)]
|
||||
[TestCase(90, 729_000)]
|
||||
[TestCase(100, 1_000_000)]
|
||||
public void MediumFastExperience(byte level, int experience)
|
||||
{
|
||||
using var growthRate = CommonGrowthRates.MediumFast(100);
|
||||
Assert.AreEqual(experience, growthRate.CalculateExperience(level));
|
||||
}
|
||||
|
||||
[TestCase(1, 0)]
|
||||
[TestCase(20, 5_460)]
|
||||
[TestCase(40, 56_660)]
|
||||
[TestCase(60, 211_060)]
|
||||
[TestCase(70, 344_960)]
|
||||
[TestCase(80, 526_260)]
|
||||
[TestCase(90, 762_160)]
|
||||
[TestCase(100, 1_059_860)]
|
||||
public void MediumSlowExperience(byte level, int experience)
|
||||
{
|
||||
using var growthRate = CommonGrowthRates.MediumSlow(100);
|
||||
Assert.AreEqual(experience, growthRate.CalculateExperience(level));
|
||||
}
|
||||
|
||||
[TestCase(1, 0)]
|
||||
[TestCase(20, 10_000)]
|
||||
[TestCase(40, 80_000)]
|
||||
[TestCase(60, 270_000)]
|
||||
[TestCase(70, 428_750)]
|
||||
[TestCase(80, 640_000)]
|
||||
[TestCase(90, 911_250)]
|
||||
[TestCase(100, 1_250_000)]
|
||||
public void SlowExperience(byte level, int experience)
|
||||
{
|
||||
using var growthRate = CommonGrowthRates.Slow(100);
|
||||
Assert.AreEqual(experience, growthRate.CalculateExperience(level));
|
||||
}
|
||||
|
||||
[TestCase(1, 0)]
|
||||
[TestCase(20, 5_440)]
|
||||
[TestCase(40, 66_560)]
|
||||
[TestCase(60, 267_840)]
|
||||
[TestCase(70, 459_620)]
|
||||
[TestCase(80, 737_280)]
|
||||
[TestCase(90, 1_122_660)]
|
||||
[TestCase(100, 1_640_000)]
|
||||
public void FluctuatingExperience(byte level, int experience)
|
||||
{
|
||||
using var growthRate = CommonGrowthRates.Fluctuating(100);
|
||||
Assert.AreEqual(experience, growthRate.CalculateExperience(level));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -8,13 +8,13 @@ namespace PkmnLibRSharpTests.StaticData.Libraries
|
||||
[Test]
|
||||
public void CreateLibrarySettings()
|
||||
{
|
||||
using var settings = new LibrarySettings(100);
|
||||
using var settings = new LibrarySettings(100, 4096);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void GetMaxLevel()
|
||||
{
|
||||
using var settings = new LibrarySettings(100);
|
||||
using var settings = new LibrarySettings(100, 4096);
|
||||
Assert.AreEqual(100, settings.MaxLevel);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@ namespace PkmnLibRSharpTests.StaticData.Libraries
|
||||
{
|
||||
private PkmnLibSharp.StaticData.Libraries.StaticData Build()
|
||||
{
|
||||
using var settings = new LibrarySettings(100);
|
||||
using var settings = new LibrarySettings(100, 4096);
|
||||
using var species = new SpeciesLibrary(0);
|
||||
using var moves = new MoveLibrary(0);
|
||||
using var items = new ItemLibrary(0);
|
||||
|
||||
Reference in New Issue
Block a user