using SabreTools.Serialization.CrossModel; using Xunit; namespace SabreTools.Serialization.Test.CrossModel { public class DosCenterTests { [Fact] public void RoundTripTest() { // Get the cross-model serializer var serializer = new DosCenter(); // Build the data Data.Models.DosCenter.MetadataFile mf = Build(); // Serialize to generic model Data.Models.Metadata.MetadataFile? metadata = serializer.Serialize(mf); Assert.NotNull(metadata); // Serialize back to original model Data.Models.DosCenter.MetadataFile? newMf = serializer.Deserialize(metadata); // Validate the data Assert.NotNull(newMf); Validate(newMf.DosCenter); Assert.NotNull(newMf.Game); var newGame = Assert.Single(newMf.Game); Validate(newGame); } /// /// Build model for serialization and deserialization /// private static Data.Models.DosCenter.MetadataFile Build() { var dc = new Data.Models.DosCenter.DosCenter { Name = "XXXXXX", Description = "XXXXXX", Version = "XXXXXX", Date = "XXXXXX", Author = "XXXXXX", Homepage = "XXXXXX", Comment = "XXXXXX", }; var file = new Data.Models.DosCenter.File { Name = "XXXXXX", Size = "XXXXXX", CRC = "XXXXXX", SHA1 = "XXXXXX", Date = "XXXXXX", }; var game = new Data.Models.DosCenter.Game { Name = "XXXXXX", File = [file], }; return new Data.Models.DosCenter.MetadataFile { DosCenter = dc, Game = [game], }; } /// /// Validate a DosCenter /// private static void Validate(Data.Models.DosCenter.DosCenter? cmp) { Assert.NotNull(cmp); Assert.Equal("XXXXXX", cmp.Name); Assert.Equal("XXXXXX", cmp.Description); Assert.Equal("XXXXXX", cmp.Version); Assert.Equal("XXXXXX", cmp.Date); Assert.Equal("XXXXXX", cmp.Author); Assert.Equal("XXXXXX", cmp.Homepage); Assert.Equal("XXXXXX", cmp.Comment); } /// /// Validate a Game /// private static void Validate(Data.Models.DosCenter.Game? game) { Assert.NotNull(game); Assert.Equal("XXXXXX", game.Name); Assert.NotNull(game.File); var file = Assert.Single(game.File); Validate(file); } /// /// Validate a File /// private static void Validate(Data.Models.DosCenter.File? rom) { Assert.NotNull(rom); Assert.Equal("XXXXXX", rom.Name); Assert.Equal("XXXXXX", rom.Size); Assert.Equal("XXXXXX", rom.CRC); Assert.Equal("XXXXXX", rom.SHA1); Assert.Equal("XXXXXX", rom.Date); } } }