Migrate to TUnit for unit tests

This commit is contained in:
2024-12-27 14:30:22 +01:00
parent 5b518df24a
commit 853d6dd1cb
19 changed files with 158 additions and 184 deletions

View File

@@ -1,5 +1,6 @@
using System.Collections;
using System.Text.Json;
using EnumerableAsyncProcessor.Extensions;
using PkmnLib.Dynamic.Models;
using PkmnLib.Static.Species;
using PkmnLib.Tests.Integration.Models;
@@ -8,36 +9,34 @@ namespace PkmnLib.Tests.Integration;
public class IntegrationTestRunner
{
private static IEnumerable TestCases
public static IEnumerable<IntegrationTestModel> TestCases()
{
get
var files = Directory.GetFiles("Integration/Tests", "*.json");
var serializerOptions = new JsonSerializerOptions
{
var files = Directory.GetFiles("Integration/Tests", "*.json");
var serializerOptions = new JsonSerializerOptions
{
PropertyNameCaseInsensitive = true,
};
foreach (var file in files)
{
var json = File.ReadAllText(file);
var test = JsonSerializer.Deserialize<IntegrationTestModel>(json, serializerOptions)!;
yield return new TestCaseData(test).SetName(test.Name).SetDescription(test.Description);
}
PropertyNameCaseInsensitive = true,
};
foreach (var file in files)
{
var json = File.ReadAllText(file);
var test = JsonSerializer.Deserialize<IntegrationTestModel>(json, serializerOptions)!;
yield return test;
}
}
[TestCaseSource(nameof(TestCases))]
public void RunIntegrationTest(IntegrationTestModel test)
[Test]
[MethodDataSource(nameof(TestCases))]
public async Task RunIntegrationTest(IntegrationTestModel test)
{
var library = LibraryHelpers.LoadLibrary();
var parties = test.BattleSetup.Parties.Select(IBattleParty (x) =>
var parties = await test.BattleSetup.Parties.SelectAsync(async Task<IBattleParty> (x) =>
{
var party = new PokemonParty(6);
for (var index = 0; index < x.Pokemon.Length; index++)
{
var pokemon = x.Pokemon[index];
Assert.That(library.StaticLibrary.Species.TryGet(pokemon.Species, out var species), Is.True);
await Assert.That(library.StaticLibrary.Species.TryGet(pokemon.Species, out var species)).IsTrue();
var mon = new PokemonImpl(library, species!, species!.GetDefaultForm(), new AbilityIndex
{
IsHidden = false,
@@ -53,13 +52,13 @@ public class IntegrationTestRunner
}
return new BattlePartyImpl(party, x.Indices.Select(y => new ResponsibleIndex(y[0], y[1])).ToArray());
}).ToArray();
}).ProcessOneAtATime().GetResultsAsync();
var battle = new BattleImpl(library, parties, test.BattleSetup.CanFlee, test.BattleSetup.NumberOfSides,
test.BattleSetup.PositionsPerSide);
foreach (var action in test.Actions)
{
action.Execute(battle);
await action.Execute(battle);
}
}
}