2024-11-27 10:16:23 -05:00
|
|
|
using Xunit;
|
|
|
|
|
|
2026-03-21 16:26:56 -04:00
|
|
|
namespace SabreTools.Serialization.CrossModel.Test
|
2024-11-27 10:16:23 -05:00
|
|
|
{
|
|
|
|
|
public class ListromTests
|
|
|
|
|
{
|
|
|
|
|
[Fact]
|
|
|
|
|
public void RoundTripTest()
|
|
|
|
|
{
|
|
|
|
|
// Get the cross-model serializer
|
2025-09-26 10:20:48 -04:00
|
|
|
var serializer = new Listrom();
|
2024-11-27 10:16:23 -05:00
|
|
|
|
|
|
|
|
// Build the data
|
2025-09-26 13:06:18 -04:00
|
|
|
Data.Models.Listrom.MetadataFile mf = Build();
|
2024-11-27 10:16:23 -05:00
|
|
|
|
|
|
|
|
// Serialize to generic model
|
2025-09-26 13:06:18 -04:00
|
|
|
Data.Models.Metadata.MetadataFile? metadata = serializer.Serialize(mf);
|
2024-11-27 10:16:23 -05:00
|
|
|
Assert.NotNull(metadata);
|
|
|
|
|
|
|
|
|
|
// Serialize back to original model
|
2025-09-26 13:06:18 -04:00
|
|
|
Data.Models.Listrom.MetadataFile? newMf = serializer.Deserialize(metadata);
|
2024-11-27 10:16:23 -05:00
|
|
|
|
|
|
|
|
// Validate the data
|
|
|
|
|
Assert.NotNull(newMf);
|
|
|
|
|
Assert.NotNull(newMf.Set);
|
|
|
|
|
Assert.Equal(2, newMf.Set.Length);
|
|
|
|
|
|
|
|
|
|
ValidateDevice(newMf.Set[0]);
|
|
|
|
|
ValidateDriver(newMf.Set[1]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Build model for serialization and deserialization
|
|
|
|
|
/// </summary>
|
2025-09-26 13:06:18 -04:00
|
|
|
private static Data.Models.Listrom.MetadataFile Build()
|
2024-11-27 10:16:23 -05:00
|
|
|
{
|
2025-09-26 13:06:18 -04:00
|
|
|
var rom = new Data.Models.Listrom.Row
|
2024-11-27 10:16:23 -05:00
|
|
|
{
|
2026-04-02 13:21:37 -04:00
|
|
|
Name = "name",
|
2026-04-03 12:02:24 -04:00
|
|
|
Size = 12345,
|
2024-11-27 10:16:23 -05:00
|
|
|
Bad = true,
|
2026-04-08 21:04:11 -04:00
|
|
|
CRC = "crc32",
|
|
|
|
|
SHA1 = "sha1",
|
2024-11-27 10:16:23 -05:00
|
|
|
NoGoodDumpKnown = false,
|
|
|
|
|
};
|
|
|
|
|
|
2025-09-26 13:06:18 -04:00
|
|
|
var disk = new Data.Models.Listrom.Row
|
2024-11-27 10:16:23 -05:00
|
|
|
{
|
2026-04-02 13:21:37 -04:00
|
|
|
Name = "name",
|
2024-11-27 10:16:23 -05:00
|
|
|
Bad = false,
|
2026-04-08 21:04:11 -04:00
|
|
|
MD5 = "md5",
|
|
|
|
|
SHA1 = "sha1",
|
2024-11-27 10:16:23 -05:00
|
|
|
NoGoodDumpKnown = true,
|
|
|
|
|
};
|
|
|
|
|
|
2025-09-26 13:06:18 -04:00
|
|
|
var device = new Data.Models.Listrom.Set()
|
2024-11-27 10:16:23 -05:00
|
|
|
{
|
2026-04-08 21:04:11 -04:00
|
|
|
Device = "device",
|
2024-11-27 10:16:23 -05:00
|
|
|
Row = [rom],
|
|
|
|
|
};
|
|
|
|
|
|
2025-09-26 13:06:18 -04:00
|
|
|
var driver = new Data.Models.Listrom.Set()
|
2024-11-27 10:16:23 -05:00
|
|
|
{
|
2026-04-08 21:04:11 -04:00
|
|
|
Driver = "driver",
|
2024-11-27 10:16:23 -05:00
|
|
|
Row = [disk],
|
|
|
|
|
};
|
|
|
|
|
|
2025-09-26 13:06:18 -04:00
|
|
|
return new Data.Models.Listrom.MetadataFile
|
2024-11-27 10:16:23 -05:00
|
|
|
{
|
|
|
|
|
Set = [device, driver],
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Validate a Set
|
|
|
|
|
/// </summary>
|
2025-09-26 13:06:18 -04:00
|
|
|
private static void ValidateDevice(Data.Models.Listrom.Set? set)
|
2024-11-27 10:16:23 -05:00
|
|
|
{
|
|
|
|
|
Assert.NotNull(set);
|
2026-04-08 21:04:11 -04:00
|
|
|
Assert.Equal("device", set.Device);
|
2024-11-27 10:16:23 -05:00
|
|
|
|
|
|
|
|
Assert.NotNull(set.Row);
|
|
|
|
|
var row = Assert.Single(set.Row);
|
|
|
|
|
ValidateRom(row);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Validate a Set
|
|
|
|
|
/// </summary>
|
2025-09-26 13:06:18 -04:00
|
|
|
private static void ValidateDriver(Data.Models.Listrom.Set? set)
|
2024-11-27 10:16:23 -05:00
|
|
|
{
|
|
|
|
|
Assert.NotNull(set);
|
2026-04-08 21:04:11 -04:00
|
|
|
Assert.Equal("driver", set.Driver);
|
2024-11-27 10:16:23 -05:00
|
|
|
|
|
|
|
|
Assert.NotNull(set.Row);
|
|
|
|
|
var row = Assert.Single(set.Row);
|
|
|
|
|
ValidateDisk(row);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Validate a Row
|
|
|
|
|
/// </summary>
|
2025-09-26 13:06:18 -04:00
|
|
|
private static void ValidateRom(Data.Models.Listrom.Row? row)
|
2024-11-27 10:16:23 -05:00
|
|
|
{
|
|
|
|
|
Assert.NotNull(row);
|
2026-04-02 13:21:37 -04:00
|
|
|
Assert.Equal("name", row.Name);
|
2026-04-03 12:02:24 -04:00
|
|
|
Assert.Equal(12345, row.Size);
|
2024-11-27 10:16:23 -05:00
|
|
|
Assert.True(row.Bad);
|
2026-04-08 21:04:11 -04:00
|
|
|
Assert.Equal("crc32", row.CRC);
|
|
|
|
|
Assert.Equal("sha1", row.SHA1);
|
2024-11-27 10:16:23 -05:00
|
|
|
Assert.False(row.NoGoodDumpKnown);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Validate a Row
|
|
|
|
|
/// </summary>
|
2025-09-26 13:06:18 -04:00
|
|
|
private static void ValidateDisk(Data.Models.Listrom.Row? row)
|
2024-11-27 10:16:23 -05:00
|
|
|
{
|
|
|
|
|
Assert.NotNull(row);
|
2026-04-02 13:21:37 -04:00
|
|
|
Assert.Equal("name", row.Name);
|
2024-11-27 10:16:23 -05:00
|
|
|
Assert.False(row.Bad);
|
2026-04-08 21:04:11 -04:00
|
|
|
Assert.Equal("md5", row.MD5);
|
|
|
|
|
Assert.Equal("sha1", row.SHA1);
|
2024-11-27 10:16:23 -05:00
|
|
|
Assert.True(row.NoGoodDumpKnown);
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-11-14 09:06:59 -05:00
|
|
|
}
|