diff --git a/src/SarcLibrary/Writers/SarcAlignment.cs b/src/SarcLibrary/Writers/SarcAlignment.cs index 6813254..5dad309 100644 --- a/src/SarcLibrary/Writers/SarcAlignment.cs +++ b/src/SarcLibrary/Writers/SarcAlignment.cs @@ -33,8 +33,8 @@ public static int Estimate(KeyValuePair> sarcEntry, i "bgsdw" or "bksky" or "bpref" or "glght" or "glpbd" or "glpbm" or "gsdw" or "ksky" or "pref" => LCM(result, 8), - "baglmf" => LCM(result, 0x80), - "sharc" or "sharcb" => LCM(result, 0x1000), + "byml" or "baglmf" => LCM(result, 0x80), + "bfres" or "sharc" or "sharcb" => LCM(result, 0x1000), "bofx" or "fmd" or "ftx" or "genvres" or "gtx" or "ofx" => LCM(result, 0x2000), _ => result }; @@ -50,7 +50,7 @@ public static int Estimate(KeyValuePair> sarcEntry, i "bchemical" or "bas" or "batcllist" or "batcl" or "baischedule" or "bdmgparam" or "brgconfiglist" or "brgconfig" or "brgbw" or "bawareness" or "bdrop" or "bshop" or "brecipe" or "blod" or "bbonectrl" or "blifecondition" or "bumii" or "baniminfo" or - "byaml" or "bassetting" or "hkrb" or "hkrg" or "bphyssb" or "hkcl" or "hksc" or + "byaml" or "byml" or "bassetting" or "hkrb" or "hkrg" or "bphyssb" or "hkcl" or "hksc" or "hktmrb" or "brgcon" or "esetlist" or "bdemo" or "bfevfl" or "bfevtm")) { result = LCM(result, GetBinaryFileAlignment(sarcEntry.Value)); diff --git a/src/Tests/SarcLibrary.Tests/AlignmentTest.cs b/src/Tests/SarcLibrary.Tests/AlignmentTest.cs new file mode 100644 index 0000000..3714dca --- /dev/null +++ b/src/Tests/SarcLibrary.Tests/AlignmentTest.cs @@ -0,0 +1,21 @@ +using Revrs; + +namespace SarcLibrary.Tests; + +public class AlignmentTest +{ + [Fact] + public void TestSMOAirCurrentSarcAlignment() + { + byte[] data = DataProvider.GetAirCurrent(); + var sarc = Sarc.FromBinary(data); + Assert.NotNull(sarc); + + MemoryStream output = new(); + sarc.Write(output); + + DataProvider.WriteGeneratedAirCurrent(output); + + Assert.Equal(data, output.ToArray()); + } +} \ No newline at end of file diff --git a/src/Tests/SarcLibrary.Tests/Data/AirCurrent.sarc b/src/Tests/SarcLibrary.Tests/Data/AirCurrent.sarc new file mode 100644 index 0000000..998fac9 Binary files /dev/null and b/src/Tests/SarcLibrary.Tests/Data/AirCurrent.sarc differ diff --git a/src/Tests/SarcLibrary.Tests/DataProvider.cs b/src/Tests/SarcLibrary.Tests/DataProvider.cs index 350dfa6..6638709 100644 --- a/src/Tests/SarcLibrary.Tests/DataProvider.cs +++ b/src/Tests/SarcLibrary.Tests/DataProvider.cs @@ -6,17 +6,29 @@ public static class DataProvider { public static byte[] GetTest1(Endianness endianness) { - return File.ReadAllBytes(endianness switch { + return File.ReadAllBytes(endianness switch + { Endianness.Little => "Data/Test1-LE.sarc", _ => "Data/Test1-BE.sarc" }); } - + public static Stream StreamTest1(Endianness endianness) { - return File.OpenRead(endianness switch { + return File.OpenRead(endianness switch + { Endianness.Little => "Data/Test1-LE.sarc", _ => "Data/Test1-BE.sarc" }); } + + + public static byte[] GetAirCurrent() + { + return File.ReadAllBytes("Data/AirCurrent.sarc"); + } + public static void WriteGeneratedAirCurrent(MemoryStream stream) + { + File.WriteAllBytes("Data/AirCurrentOutput.sarc", stream.ToArray()); + } } \ No newline at end of file diff --git a/src/Tests/SarcLibrary.Tests/SarcLibrary.Tests.csproj b/src/Tests/SarcLibrary.Tests/SarcLibrary.Tests.csproj index 8edf89b..cc2399b 100644 --- a/src/Tests/SarcLibrary.Tests/SarcLibrary.Tests.csproj +++ b/src/Tests/SarcLibrary.Tests/SarcLibrary.Tests.csproj @@ -29,6 +29,9 @@ PreserveNewest + + PreserveNewest +