Files
OpenMaidEngine/engine/Age.Engine.Tests/Sys4ScriptProviderTests.cs
2026-07-11 09:14:14 -04:00

35 lines
1.3 KiB
C#

using Age.Engine.Sys4;
using Xunit;
public class Sys4ScriptProviderTests
{
[Fact]
public void ResolvesKnownIdsToTheirScripts()
{
var table = OpcodeTableJson.Load(Paths.OpcodesJson);
var provider = Sys4ScriptProvider.Load(table);
var additem = provider.GetById(0x1ab); // ADDITEM.BIN
var mes = provider.GetById(0x2ae7); // MES.BIN
Assert.NotNull(additem);
Assert.NotNull(mes);
Assert.True(additem!.Instructions.Count > 0);
Assert.Same(additem, provider.GetById(0x1ab)); // cached: same instance
Assert.Null(provider.GetById(long.MaxValue)); // unknown id
}
[Fact]
public void RootScriptLoadingUsesTheSameAssetStoreAndLoosePrecedence()
{
var table = OpcodeTableJson.Load(Paths.OpcodesJson);
var provider = Sys4ScriptProvider.Load(table);
var patched = provider.RequireByName("FIELD.BIN");
var directLoose = Sys4Loader.Load(Path.Combine(Paths.GameDir, "FIELD.BIN"), table);
Assert.Equal(directLoose.Instructions.Count, patched.Instructions.Count);
Assert.Same(patched, provider.RequireByName("field.bin"));
Assert.Null(provider.GetByName("../FIELD.BIN"));
Assert.Equal(481, provider.ScriptNames.Count);
}
}