using PkmnLib.Dynamic.Libraries.DataLoaders;
using PkmnLib.Dynamic.Plugins;
using PkmnLib.Static.Libraries;

namespace PkmnLib.Tests.Dataloader;

public class MoveDataLoaderTests
{
    [Test]
    public async Task TestPrimaryMoveFile()
    {
        IResourceProvider plugin = new Plugin.Gen7.Gen7Plugin();
        var result = plugin.GetResource(ResourceFileType.Moves)!;
        await using var stream = result.Open();
        var typeLibrary = new TypeLibrary();
        typeLibrary.RegisterType("Normal");
        typeLibrary.RegisterType("Fire");
        typeLibrary.RegisterType("Water");
        typeLibrary.RegisterType("Electric");
        typeLibrary.RegisterType("Grass");
        typeLibrary.RegisterType("Ice");
        typeLibrary.RegisterType("Fighting");
        typeLibrary.RegisterType("Poison");
        typeLibrary.RegisterType("Ground");
        typeLibrary.RegisterType("Flying");
        typeLibrary.RegisterType("Psychic");
        typeLibrary.RegisterType("Bug");
        typeLibrary.RegisterType("Rock");
        typeLibrary.RegisterType("Ghost");
        typeLibrary.RegisterType("Dragon");
        typeLibrary.RegisterType("Dark");
        typeLibrary.RegisterType("Steel");
        typeLibrary.RegisterType("Fairy");

        var library = MoveDataLoader.LoadMoves(stream, typeLibrary);
        await Assert.That(library).IsNotNull();
    }
}