PkmnLib.NET/PkmnLib.Tests/DataTests/MoveDataTests.cs

49 lines
1.5 KiB
C#

using PkmnLib.Dynamic.Libraries;
using PkmnLib.Dynamic.ScriptHandling;
using PkmnLib.Static.Moves;
using PkmnLib.Tests.Integration;
namespace PkmnLib.Tests.DataTests;
public class MoveDataTests
{
public record TestCaseData(IDynamicLibrary Library, IMoveData Move)
{
/// <inheritdoc />
public override string ToString()
{
return Move.Name + " has valid scripts";
}
}
public static IEnumerable<TestCaseData> AllMovesHaveValidScriptsData()
{
var library = LibraryHelpers.LoadLibrary();
var moveLibrary = library.StaticLibrary.Moves;
foreach (var move in moveLibrary)
{
if (move.SecondaryEffect == null)
continue;
yield return new TestCaseData(library, move);
}
}
[Test]
[MethodDataSource(nameof(AllMovesHaveValidScriptsData))]
public async Task AllMoveEffectsHaveValidScripts(TestCaseData test)
{
if (test.Move.SecondaryEffect == null)
return;
var scriptName = test.Move.SecondaryEffect.Name;
try
{
await Assert.That(test.Library.ScriptResolver.TryResolve(ScriptCategory.Move, scriptName,
test.Move.SecondaryEffect.Parameters, out var script)).IsTrue();
}
catch (Exception e)
{
throw new AggregateException($"Failed to resolve script for move {test.Move.Name} with effect {scriptName}", e);
}
}
}