49 lines
1.5 KiB
C#
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);
|
|
}
|
|
}
|
|
} |