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 DosCenterTests
|
|
|
|
|
{
|
|
|
|
|
[Fact]
|
|
|
|
|
public void RoundTripTest()
|
|
|
|
|
{
|
|
|
|
|
// Get the cross-model serializer
|
2025-09-26 10:20:48 -04:00
|
|
|
var serializer = new DosCenter();
|
2024-11-27 10:16:23 -05:00
|
|
|
|
|
|
|
|
// Build the data
|
2025-09-26 13:06:18 -04:00
|
|
|
Data.Models.DosCenter.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.DosCenter.MetadataFile? newMf = serializer.Deserialize(metadata);
|
2024-11-27 10:16:23 -05:00
|
|
|
|
|
|
|
|
// Validate the data
|
|
|
|
|
Assert.NotNull(newMf);
|
|
|
|
|
Validate(newMf.DosCenter);
|
|
|
|
|
Assert.NotNull(newMf.Game);
|
|
|
|
|
var newGame = Assert.Single(newMf.Game);
|
|
|
|
|
Validate(newGame);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Build model for serialization and deserialization
|
|
|
|
|
/// </summary>
|
2025-09-26 13:06:18 -04:00
|
|
|
private static Data.Models.DosCenter.MetadataFile Build()
|
2024-11-27 10:16:23 -05:00
|
|
|
{
|
2025-09-26 13:06:18 -04:00
|
|
|
var dc = new Data.Models.DosCenter.DosCenter
|
2024-11-27 10:16:23 -05:00
|
|
|
{
|
2026-04-02 13:21:37 -04:00
|
|
|
Name = "name",
|
2026-04-02 11:18:49 -04:00
|
|
|
Description = "description",
|
2026-04-08 21:04:11 -04:00
|
|
|
Version = "version",
|
|
|
|
|
Date = "date",
|
|
|
|
|
Author = "author",
|
|
|
|
|
Homepage = "homepage",
|
|
|
|
|
Comment = "comment",
|
2024-11-27 10:16:23 -05:00
|
|
|
};
|
|
|
|
|
|
2025-09-26 13:06:18 -04:00
|
|
|
var file = new Data.Models.DosCenter.File
|
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,
|
2026-04-08 21:04:11 -04:00
|
|
|
CRC = "crc32",
|
|
|
|
|
SHA1 = "sha1",
|
|
|
|
|
Date = "date",
|
2024-11-27 10:16:23 -05:00
|
|
|
};
|
|
|
|
|
|
2025-09-26 13:06:18 -04:00
|
|
|
var game = new Data.Models.DosCenter.Game
|
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
|
|
|
File = [file],
|
|
|
|
|
};
|
|
|
|
|
|
2025-09-26 13:06:18 -04:00
|
|
|
return new Data.Models.DosCenter.MetadataFile
|
2024-11-27 10:16:23 -05:00
|
|
|
{
|
|
|
|
|
DosCenter = dc,
|
|
|
|
|
Game = [game],
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Validate a DosCenter
|
|
|
|
|
/// </summary>
|
2025-09-26 13:06:18 -04:00
|
|
|
private static void Validate(Data.Models.DosCenter.DosCenter? cmp)
|
2024-11-27 10:16:23 -05:00
|
|
|
{
|
|
|
|
|
Assert.NotNull(cmp);
|
2026-04-02 13:21:37 -04:00
|
|
|
Assert.Equal("name", cmp.Name);
|
2026-04-02 11:18:49 -04:00
|
|
|
Assert.Equal("description", cmp.Description);
|
2026-04-08 21:04:11 -04:00
|
|
|
Assert.Equal("version", cmp.Version);
|
|
|
|
|
Assert.Equal("date", cmp.Date);
|
|
|
|
|
Assert.Equal("author", cmp.Author);
|
|
|
|
|
Assert.Equal("homepage", cmp.Homepage);
|
|
|
|
|
Assert.Equal("comment", cmp.Comment);
|
2024-11-27 10:16:23 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Validate a Game
|
|
|
|
|
/// </summary>
|
2025-09-26 13:06:18 -04:00
|
|
|
private static void Validate(Data.Models.DosCenter.Game? game)
|
2024-11-27 10:16:23 -05:00
|
|
|
{
|
|
|
|
|
Assert.NotNull(game);
|
2026-04-02 13:21:37 -04:00
|
|
|
Assert.Equal("name", game.Name);
|
2024-11-27 10:16:23 -05:00
|
|
|
|
|
|
|
|
Assert.NotNull(game.File);
|
|
|
|
|
var file = Assert.Single(game.File);
|
|
|
|
|
Validate(file);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Validate a File
|
|
|
|
|
/// </summary>
|
2025-09-26 13:06:18 -04:00
|
|
|
private static void Validate(Data.Models.DosCenter.File? rom)
|
2024-11-27 10:16:23 -05:00
|
|
|
{
|
|
|
|
|
Assert.NotNull(rom);
|
2026-04-02 13:21:37 -04:00
|
|
|
Assert.Equal("name", rom.Name);
|
2026-04-03 12:02:24 -04:00
|
|
|
Assert.Equal(12345, rom.Size);
|
2026-04-08 21:04:11 -04:00
|
|
|
Assert.Equal("crc32", rom.CRC);
|
|
|
|
|
Assert.Equal("sha1", rom.SHA1);
|
|
|
|
|
Assert.Equal("date", rom.Date);
|
2024-11-27 10:16:23 -05:00
|
|
|
}
|
|
|
|
|
}
|
2025-11-14 09:06:59 -05:00
|
|
|
}
|