From e3927ca3e6a3d6ddd3e4125536c3eb09ab6d214b Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Fri, 3 Apr 2026 16:02:44 -0400 Subject: [PATCH] Fix longstanding TODOs around Software items --- .../MetadataExtensions.cs | 4 + SabreTools.Data.Models/Metadata/Software.cs | 1 - .../Metadata/SoftwareList.cs | 10 +- .../DatFileTests.FromMetadata.cs | 41 ++++++- .../DatFileTests.ToMetadata.cs | 36 +++++- SabreTools.Metadata.DatItems/DatItem.cs | 1 + SabreTools.Metadata.DatItems/Formats/Part.cs | 41 ++++++- .../Formats/Software.cs | 115 ++++++++++++++++++ .../Formats/SoftwareList.cs | 37 +++++- SabreTools.Metadata.Filter/FilterObject.cs | 6 + .../DictionaryBaseExtensions.cs | 4 + .../ListxmlTests.cs | 4 +- .../LogiqxTests.cs | 4 +- .../M1Tests.cs | 4 +- .../MessTests.cs | 4 +- .../SoftwareListTests.cs | 8 +- .../Listxml.Deserializer.cs | 2 +- .../Listxml.Serializer.cs | 2 +- .../Logiqx.Deserializer.cs | 2 +- .../Logiqx.Serializer.cs | 2 +- .../ListxmlTests.cs | 4 +- .../LogiqxTests.cs | 4 +- .../M1Tests.cs | 4 +- .../MessTests.cs | 4 +- .../NoIntroDatabaseTests.cs | 4 +- .../SoftwareListTests.cs | 8 +- 26 files changed, 307 insertions(+), 49 deletions(-) create mode 100644 SabreTools.Metadata.DatItems/Formats/Software.cs diff --git a/SabreTools.Data.Extensions/MetadataExtensions.cs b/SabreTools.Data.Extensions/MetadataExtensions.cs index 90f7c6df..3de34d06 100644 --- a/SabreTools.Data.Extensions/MetadataExtensions.cs +++ b/SabreTools.Data.Extensions/MetadataExtensions.cs @@ -63,6 +63,7 @@ namespace SabreTools.Data.Extensions SharedFeat sharedFeat => sharedFeat.Name, Slot slot => slot.Name, SlotOption slotOption => slotOption.Name, + Software software => software.Name, SoftwareList softwareList => softwareList.Name, Sound => null, SourceDetails => null, @@ -123,6 +124,7 @@ namespace SabreTools.Data.Extensions case SharedFeat sharedFeat: sharedFeat.Name = name; break; case Slot slot: slot.Name = name; break; case SlotOption slotOption: slotOption.Name = name; break; + case Software software: software.Name = name; break; case SoftwareList softwareList: softwareList.Name = name; break; case Sound: break; case SourceDetails: break; @@ -335,6 +337,8 @@ namespace SabreTools.Data.Extensions else if (self is SoftwareList selfSoftwareList && clone is SoftwareList cloneSoftwareList) { cloneSoftwareList.Description = selfSoftwareList.Description; + cloneSoftwareList.Filter = selfSoftwareList.Filter; + cloneSoftwareList.Notes = selfSoftwareList.Notes; cloneSoftwareList.Status = selfSoftwareList.Status; cloneSoftwareList.Tag = selfSoftwareList.Tag; } diff --git a/SabreTools.Data.Models/Metadata/Software.cs b/SabreTools.Data.Models/Metadata/Software.cs index 9e1e2207..feb7d209 100644 --- a/SabreTools.Data.Models/Metadata/Software.cs +++ b/SabreTools.Data.Models/Metadata/Software.cs @@ -3,7 +3,6 @@ using Newtonsoft.Json; namespace SabreTools.Data.Models.Metadata { - // TODO: What DAT type does this come from? [JsonObject("software"), XmlRoot("software")] public class Software : DatItem { diff --git a/SabreTools.Data.Models/Metadata/SoftwareList.cs b/SabreTools.Data.Models/Metadata/SoftwareList.cs index 57944cf5..5b5c5b88 100644 --- a/SabreTools.Data.Models/Metadata/SoftwareList.cs +++ b/SabreTools.Data.Models/Metadata/SoftwareList.cs @@ -10,8 +10,12 @@ namespace SabreTools.Data.Models.Metadata public string? Description { get; set; } + public string? Filter { get; set; } + public string? Name { get; set; } + public string? Notes { get; set; } + /// (original|compatible) public SoftwareListStatus? Status { get; set; } @@ -21,12 +25,6 @@ namespace SabreTools.Data.Models.Metadata #region Keys - /// string - public const string FilterKey = "filter"; - - /// string - public const string NotesKey = "notes"; - /// Software[] [NoFilter] public const string SoftwareKey = "software"; diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs index d89e020a..f8d003bc 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs @@ -950,9 +950,9 @@ namespace SabreTools.Metadata.DatFiles.Test return new Data.Models.Metadata.SoftwareList { Description = "description", - [Data.Models.Metadata.SoftwareList.FilterKey] = "filter", + Filter = "filter", Name = "name", - [Data.Models.Metadata.SoftwareList.NotesKey] = "notes", + Notes = "notes", [Data.Models.Metadata.SoftwareList.SoftwareKey] = new Data.Models.Metadata.Software[] { CreateMetadataSoftware() }, Status = Data.Models.Metadata.SoftwareListStatus.Original, Tag = "tag", @@ -1628,12 +1628,43 @@ namespace SabreTools.Metadata.DatFiles.Test { Assert.NotNull(softwareList); Assert.Equal("description", softwareList.Description); - Assert.Equal("filter", softwareList.ReadString(Data.Models.Metadata.SoftwareList.FilterKey)); + Assert.Equal("filter", softwareList.Filter); Assert.Equal("name", softwareList.Name); - Assert.Equal("notes", softwareList.ReadString(Data.Models.Metadata.SoftwareList.NotesKey)); - // TODO: Figure out why Data.Models.Metadata.SoftwareList.SoftwareKey doesn't get processed + Assert.Equal("notes", softwareList.Notes); Assert.Equal(Data.Models.Metadata.SoftwareListStatus.Original, softwareList.Status); Assert.Equal("tag", softwareList.Tag); + + Software[]? softwares = softwareList.Read(Data.Models.Metadata.SoftwareList.SoftwareKey); + Assert.NotNull(softwares); + Software? software = Assert.Single(softwares); + ValidateSoftware(software); + } + + private static void ValidateSoftware(Software? software) + { + Assert.NotNull(software); + Assert.Equal("cloneof", software.ReadString(Data.Models.Metadata.Software.CloneOfKey)); + Assert.Equal("description", software.Description); + Assert.Equal("name", software.Name); + Assert.Equal("notes", software.ReadString(Data.Models.Metadata.Software.NotesKey)); + Assert.Equal("publisher", software.ReadString(Data.Models.Metadata.Software.PublisherKey)); + Assert.Equal(Data.Models.Metadata.Supported.Yes, software.Supported); + Assert.Equal("year", software.ReadString(Data.Models.Metadata.Software.YearKey)); + + Info[]? infos = software.Read(Data.Models.Metadata.Software.InfoKey); + Assert.NotNull(infos); + Info? info = Assert.Single(infos); + ValidateInfo(info); + + Part[]? parts = software.Read(Data.Models.Metadata.Software.PartKey); + Assert.NotNull(parts); + Part? part = Assert.Single(parts); + ValidatePart(part); + + SharedFeat[]? sharedFeats = software.Read(Data.Models.Metadata.Software.SharedFeatKey); + Assert.NotNull(sharedFeats); + SharedFeat? sharedFeat = Assert.Single(sharedFeats); + ValidateSharedFeat(sharedFeat); } private static void ValidateSound(Sound? sound) diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs index c961a2cb..ce48887b 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs @@ -1190,13 +1190,43 @@ namespace SabreTools.Metadata.DatFiles.Test { Assert.NotNull(softwareList); Assert.Equal("description", softwareList.Description); - Assert.Equal("filter", softwareList.ReadString(Data.Models.Metadata.SoftwareList.FilterKey)); + Assert.Equal("filter", softwareList.Filter); Assert.Equal("name", softwareList.Name); - Assert.Equal("notes", softwareList.ReadString(Data.Models.Metadata.SoftwareList.NotesKey)); + Assert.Equal("notes", softwareList.Notes); Assert.Equal(Data.Models.Metadata.SoftwareListStatus.Original, softwareList.Status); Assert.Equal("tag", softwareList.Tag); - // TODO: Figure out why Data.Models.Metadata.SoftwareList.SoftwareKey doesn't get processed + Data.Models.Metadata.Software[]? softwares = softwareList.ReadArray(Data.Models.Metadata.SoftwareList.SoftwareKey); + Assert.NotNull(softwares); + Data.Models.Metadata.Software? software = Assert.Single(softwares); + ValidateMetadataSoftware(software); + } + + private static void ValidateMetadataSoftware(Data.Models.Metadata.Software? software) + { + Assert.NotNull(software); + Assert.Equal("cloneof", software.ReadString(Data.Models.Metadata.Software.CloneOfKey)); + Assert.Equal("description", software.Description); + Assert.Equal("name", software.Name); + Assert.Equal("notes", software.ReadString(Data.Models.Metadata.Software.NotesKey)); + Assert.Equal("publisher", software.ReadString(Data.Models.Metadata.Software.PublisherKey)); + Assert.Equal(Data.Models.Metadata.Supported.Yes, software.Supported); + Assert.Equal("year", software.ReadString(Data.Models.Metadata.Software.YearKey)); + + Data.Models.Metadata.Info[]? infos = software.Read(Data.Models.Metadata.Software.InfoKey); + Assert.NotNull(infos); + Data.Models.Metadata.Info? info = Assert.Single(infos); + ValidateMetadataInfo(info); + + Data.Models.Metadata.Part[]? parts = software.Read(Data.Models.Metadata.Software.PartKey); + Assert.NotNull(parts); + Data.Models.Metadata.Part? part = Assert.Single(parts); + ValidateMetadataPart(part); + + Data.Models.Metadata.SharedFeat[]? sharedFeats = software.Read(Data.Models.Metadata.Software.SharedFeatKey); + Assert.NotNull(sharedFeats); + Data.Models.Metadata.SharedFeat? sharedFeat = Assert.Single(sharedFeats); + ValidateMetadataSharedFeat(sharedFeat); } private static void ValidateMetadataSound(Data.Models.Metadata.Sound? sound) diff --git a/SabreTools.Metadata.DatItems/DatItem.cs b/SabreTools.Metadata.DatItems/DatItem.cs index 604e2dec..abbefc81 100644 --- a/SabreTools.Metadata.DatItems/DatItem.cs +++ b/SabreTools.Metadata.DatItems/DatItem.cs @@ -51,6 +51,7 @@ namespace SabreTools.Metadata.DatItems [XmlInclude(typeof(SharedFeat))] [XmlInclude(typeof(Slot))] [XmlInclude(typeof(SlotOption))] + [XmlInclude(typeof(Software))] [XmlInclude(typeof(SoftwareList))] [XmlInclude(typeof(Sound))] [XmlInclude(typeof(SourceDetails))] diff --git a/SabreTools.Metadata.DatItems/Formats/Part.cs b/SabreTools.Metadata.DatItems/Formats/Part.cs index da121ff4..c61529f8 100644 --- a/SabreTools.Metadata.DatItems/Formats/Part.cs +++ b/SabreTools.Metadata.DatItems/Formats/Part.cs @@ -1,11 +1,12 @@ -using System.Xml.Serialization; +using System; +using System.Xml.Serialization; using Newtonsoft.Json; using SabreTools.Data.Extensions; namespace SabreTools.Metadata.DatItems.Formats { /// - /// SoftwareList part information + /// PartList part information /// /// One Part can contain multiple PartFeature, DataArea, DiskArea, and DipSwitch items [JsonObject("part"), XmlRoot("part")] @@ -60,6 +61,42 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override object Clone() => new Part(_internal.DeepClone() as Data.Models.Metadata.Part ?? []); + /// + public override Data.Models.Metadata.Part GetInternalClone() + { + var partItem = base.GetInternalClone(); + + var dataAreas = Read(Data.Models.Metadata.Part.DataAreaKey); + if (dataAreas is not null) + { + Data.Models.Metadata.DataArea[] dataAreaItems = Array.ConvertAll(dataAreas, dataArea => dataArea.GetInternalClone()); + partItem[Data.Models.Metadata.Part.DataAreaKey] = dataAreaItems; + } + + var diskAreas = Read(Data.Models.Metadata.Part.DiskAreaKey); + if (diskAreas is not null) + { + Data.Models.Metadata.DiskArea[] diskAreaItems = Array.ConvertAll(diskAreas, diskArea => diskArea.GetInternalClone()); + partItem[Data.Models.Metadata.Part.DiskAreaKey] = diskAreaItems; + } + + var dipSwitches = Read(Data.Models.Metadata.Part.DipSwitchKey); + if (dipSwitches is not null) + { + Data.Models.Metadata.DipSwitch[] dipSwitchItems = Array.ConvertAll(dipSwitches, dipSwitch => dipSwitch.GetInternalClone()); + partItem[Data.Models.Metadata.Part.DipSwitchKey] = dipSwitchItems; + } + + var features = Read(Data.Models.Metadata.Part.FeatureKey); + if (features is not null) + { + Data.Models.Metadata.Feature[] featureItems = Array.ConvertAll(features, feature => feature.GetInternalClone()); + partItem[Data.Models.Metadata.Part.FeatureKey] = featureItems; + } + + return partItem; + } + #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/Software.cs b/SabreTools.Metadata.DatItems/Formats/Software.cs new file mode 100644 index 00000000..a040c78c --- /dev/null +++ b/SabreTools.Metadata.DatItems/Formats/Software.cs @@ -0,0 +1,115 @@ +using System; +using System.Xml.Serialization; +using Newtonsoft.Json; +using SabreTools.Data.Extensions; + +namespace SabreTools.Metadata.DatItems.Formats +{ + /// + /// Represents one ListXML software + /// + [JsonObject("software"), XmlRoot("software")] + public sealed class Software : DatItem + { + #region Properties + + public string? Description + { + get => (_internal as Data.Models.Metadata.Software)?.Description; + set => (_internal as Data.Models.Metadata.Software)?.Description = value; + } + + /// /> + public override Data.Models.Metadata.ItemType ItemType + => Data.Models.Metadata.ItemType.Software; + + public string? Name + { + get => (_internal as Data.Models.Metadata.Software)?.Name; + set => (_internal as Data.Models.Metadata.Software)?.Name = value; + } + + public Data.Models.Metadata.Supported? Supported + { + get => (_internal as Data.Models.Metadata.Software)?.Supported; + set => (_internal as Data.Models.Metadata.Software)?.Supported = value; + } + + #endregion + + #region Constructors + + public Software() : base() { } + + public Software(Data.Models.Metadata.Software item) : base(item) + { + // Handle subitems + var infos = item.ReadArray(Data.Models.Metadata.Software.InfoKey); + if (infos is not null) + { + Info[] infoItems = Array.ConvertAll(infos, info => new Info(info)); + Write(Data.Models.Metadata.Software.InfoKey, infoItems); + } + + var parts = item.ReadArray(Data.Models.Metadata.Software.PartKey); + if (parts is not null) + { + Part[] partItems = Array.ConvertAll(parts, part => new Part(part)); + Write(Data.Models.Metadata.Software.PartKey, partItems); + } + + var sharedFeats = item.ReadArray(Data.Models.Metadata.Software.SharedFeatKey); + if (sharedFeats is not null) + { + SharedFeat[] sharedFeatItems = Array.ConvertAll(sharedFeats, sharedFeat => new SharedFeat(sharedFeat)); + Write(Data.Models.Metadata.Software.SharedFeatKey, sharedFeatItems); + } + } + + public Software(Data.Models.Metadata.Software item, Machine machine, Source source) : this(item) + { + Source = source; + CopyMachineInformation(machine); + } + + #endregion + + #region Cloning Methods + + /// + + /// + public override object Clone() => new Software(_internal.DeepClone() as Data.Models.Metadata.Software ?? []); + + /// + public override Data.Models.Metadata.Software GetInternalClone() + { + var softwareItem = base.GetInternalClone(); + + var infos = Read(Data.Models.Metadata.Software.InfoKey); + if (infos is not null) + { + Data.Models.Metadata.Info[] infoItems = Array.ConvertAll(infos, info => info.GetInternalClone()); + softwareItem[Data.Models.Metadata.Software.InfoKey] = infoItems; + } + + var parts = Read(Data.Models.Metadata.Software.PartKey); + if (parts is not null) + { + Data.Models.Metadata.Part[] partItems = Array.ConvertAll(parts, part => part.GetInternalClone()); + softwareItem[Data.Models.Metadata.Software.PartKey] = partItems; + } + + var sharedFeats = Read(Data.Models.Metadata.Software.SharedFeatKey); + if (sharedFeats is not null) + { + Data.Models.Metadata.SharedFeat[] sharedFeatItems = Array.ConvertAll(sharedFeats, sharedFeat => sharedFeat.GetInternalClone()); + softwareItem[Data.Models.Metadata.Software.SharedFeatKey] = sharedFeatItems; + } + + return softwareItem; + } + + #endregion + } +} diff --git a/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs b/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs index 3f23af77..0e1ae432 100644 --- a/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs +++ b/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs @@ -1,4 +1,5 @@ -using System.Xml.Serialization; +using System; +using System.Xml.Serialization; using Newtonsoft.Json; using SabreTools.Data.Extensions; @@ -18,6 +19,12 @@ namespace SabreTools.Metadata.DatItems.Formats set => (_internal as Data.Models.Metadata.SoftwareList)?.Description = value; } + public string? Filter + { + get => (_internal as Data.Models.Metadata.SoftwareList)?.Filter; + set => (_internal as Data.Models.Metadata.SoftwareList)?.Filter = value; + } + /// /> public override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.SoftwareList; @@ -28,6 +35,12 @@ namespace SabreTools.Metadata.DatItems.Formats set => (_internal as Data.Models.Metadata.SoftwareList)?.Name = value; } + public string? Notes + { + get => (_internal as Data.Models.Metadata.SoftwareList)?.Notes; + set => (_internal as Data.Models.Metadata.SoftwareList)?.Notes = value; + } + public Data.Models.Metadata.SoftwareListStatus? Status { get => (_internal as Data.Models.Metadata.SoftwareList)?.Status; @@ -49,7 +62,12 @@ namespace SabreTools.Metadata.DatItems.Formats public SoftwareList(Data.Models.Metadata.SoftwareList item) : base(item) { // Handle subitems - // TODO: Handle the Software subitem + var softwares = item.ReadArray(Data.Models.Metadata.SoftwareList.SoftwareKey); + if (softwares is not null) + { + Software[] softwareItems = Array.ConvertAll(softwares, software => new Software(software)); + Write(Data.Models.Metadata.SoftwareList.SoftwareKey, softwareItems); + } } public SoftwareList(Data.Models.Metadata.SoftwareList item, Machine machine, Source source) : this(item) @@ -65,6 +83,21 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override object Clone() => new SoftwareList(_internal.DeepClone() as Data.Models.Metadata.SoftwareList ?? []); + /// + public override Data.Models.Metadata.SoftwareList GetInternalClone() + { + var softwareListItem = base.GetInternalClone(); + + var softwares = Read(Data.Models.Metadata.SoftwareList.SoftwareKey); + if (softwares is not null) + { + Data.Models.Metadata.Software[] softwareItems = Array.ConvertAll(softwares, software => software.GetInternalClone()); + softwareListItem[Data.Models.Metadata.SoftwareList.SoftwareKey] = softwareItems; + } + + return softwareListItem; + } + #endregion } } diff --git a/SabreTools.Metadata.Filter/FilterObject.cs b/SabreTools.Metadata.Filter/FilterObject.cs index af8221e1..2728e346 100644 --- a/SabreTools.Metadata.Filter/FilterObject.cs +++ b/SabreTools.Metadata.Filter/FilterObject.cs @@ -839,6 +839,12 @@ namespace SabreTools.Metadata.Filter case SoftwareList item when fieldName == "description": checkValue = item.Description; return true; + case SoftwareList item when fieldName == "filter": + checkValue = item.Filter; + return true; + case SoftwareList item when fieldName == "notes": + checkValue = item.Notes; + return true; case SoftwareList item when fieldName == "status": checkValue = item.Status?.AsStringValue(); return true; diff --git a/SabreTools.Metadata/DictionaryBaseExtensions.cs b/SabreTools.Metadata/DictionaryBaseExtensions.cs index a89f2d74..471f086d 100644 --- a/SabreTools.Metadata/DictionaryBaseExtensions.cs +++ b/SabreTools.Metadata/DictionaryBaseExtensions.cs @@ -339,6 +339,10 @@ namespace SabreTools.Metadata { if (selfSoftwareList.Description != otherSoftwareList.Description) return false; + if (selfSoftwareList.Filter != otherSoftwareList.Filter) + return false; + if (selfSoftwareList.Notes != otherSoftwareList.Notes) + return false; if (selfSoftwareList.Status != otherSoftwareList.Status) return false; if (selfSoftwareList.Tag != otherSoftwareList.Tag) diff --git a/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs b/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs index b9317bcc..cdda4263 100644 --- a/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs @@ -317,7 +317,7 @@ namespace SabreTools.Serialization.CrossModel.Test Tag = "tag", Name = "name", Status = Data.Models.Metadata.SoftwareListStatus.Original, - Filter = "XXXXXX", + Filter = "filter", }; var ramoption = new Data.Models.Listxml.RamOption @@ -861,7 +861,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("tag", softwarelist.Tag); Assert.Equal("name", softwarelist.Name); Assert.Equal(Data.Models.Metadata.SoftwareListStatus.Original, softwarelist.Status); - Assert.Equal("XXXXXX", softwarelist.Filter); + Assert.Equal("filter", softwarelist.Filter); } /// diff --git a/SabreTools.Serialization.CrossModel.Test/LogiqxTests.cs b/SabreTools.Serialization.CrossModel.Test/LogiqxTests.cs index 8ff4567a..b6b78d2c 100644 --- a/SabreTools.Serialization.CrossModel.Test/LogiqxTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/LogiqxTests.cs @@ -224,7 +224,7 @@ namespace SabreTools.Serialization.CrossModel.Test Tag = "tag", Name = "name", Status = Data.Models.Metadata.SoftwareListStatus.Original, - Filter = "XXXXXX", + Filter = "filter", }; Data.Models.Logiqx.GameBase gameBase = game @@ -568,7 +568,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("tag", softwarelist.Tag); Assert.Equal("name", softwarelist.Name); Assert.Equal(Data.Models.Metadata.SoftwareListStatus.Original, softwarelist.Status); - Assert.Equal("XXXXXX", softwarelist.Filter); + Assert.Equal("filter", softwarelist.Filter); } } } diff --git a/SabreTools.Serialization.CrossModel.Test/M1Tests.cs b/SabreTools.Serialization.CrossModel.Test/M1Tests.cs index a801540f..f151b31c 100644 --- a/SabreTools.Serialization.CrossModel.Test/M1Tests.cs +++ b/SabreTools.Serialization.CrossModel.Test/M1Tests.cs @@ -313,7 +313,7 @@ namespace SabreTools.Serialization.CrossModel.Test Tag = "tag", Name = "name", Status = Data.Models.Metadata.SoftwareListStatus.Original, - Filter = "XXXXXX", + Filter = "filter", }; var ramoption = new Data.Models.Listxml.RamOption @@ -855,7 +855,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("tag", softwarelist.Tag); Assert.Equal("name", softwarelist.Name); Assert.Equal(Data.Models.Metadata.SoftwareListStatus.Original, softwarelist.Status); - Assert.Equal("XXXXXX", softwarelist.Filter); + Assert.Equal("filter", softwarelist.Filter); } /// diff --git a/SabreTools.Serialization.CrossModel.Test/MessTests.cs b/SabreTools.Serialization.CrossModel.Test/MessTests.cs index d282641f..f3fa9a92 100644 --- a/SabreTools.Serialization.CrossModel.Test/MessTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/MessTests.cs @@ -313,7 +313,7 @@ namespace SabreTools.Serialization.CrossModel.Test Tag = "tag", Name = "name", Status = Data.Models.Metadata.SoftwareListStatus.Original, - Filter = "XXXXXX", + Filter = "filter", }; var ramoption = new Data.Models.Listxml.RamOption @@ -855,7 +855,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("tag", softwarelist.Tag); Assert.Equal("name", softwarelist.Name); Assert.Equal(Data.Models.Metadata.SoftwareListStatus.Original, softwarelist.Status); - Assert.Equal("XXXXXX", softwarelist.Filter); + Assert.Equal("filter", softwarelist.Filter); } /// diff --git a/SabreTools.Serialization.CrossModel.Test/SoftwareListTests.cs b/SabreTools.Serialization.CrossModel.Test/SoftwareListTests.cs index 3d3eb904..5b4a7beb 100644 --- a/SabreTools.Serialization.CrossModel.Test/SoftwareListTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/SoftwareListTests.cs @@ -24,7 +24,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(newSl); Assert.Equal("name", newSl.Name); Assert.Equal("description", newSl.Description); - Assert.Equal("XXXXXX", newSl.Notes); + Assert.Equal("notes", newSl.Notes); Assert.NotNull(newSl.Software); var newSoftware = Assert.Single(newSl.Software); @@ -124,7 +124,7 @@ namespace SabreTools.Serialization.CrossModel.Test Description = "description", Year = "XXXXXX", Publisher = "XXXXXX", - Notes = "XXXXXX", + Notes = "notes", Info = [info], SharedFeat = [sharedfeat], Part = [part], @@ -134,7 +134,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Name = "name", Description = "description", - Notes = "XXXXXX", + Notes = "notes", Software = [software], }; } @@ -151,7 +151,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("description", software.Description); Assert.Equal("XXXXXX", software.Year); Assert.Equal("XXXXXX", software.Publisher); - Assert.Equal("XXXXXX", software.Notes); + Assert.Equal("notes", software.Notes); Assert.NotNull(software.Info); var info = Assert.Single(software.Info); diff --git a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs index 53354b34..ff086e68 100644 --- a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs @@ -634,7 +634,7 @@ namespace SabreTools.Serialization.CrossModel Tag = item.Tag, Name = item.Name, Status = item.Status, - Filter = item.ReadString(Data.Models.Metadata.SoftwareList.FilterKey), + Filter = item.Filter, }; return softwareList; } diff --git a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs index 3ecd6045..a11029c1 100644 --- a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs @@ -675,7 +675,7 @@ namespace SabreTools.Serialization.CrossModel Tag = item.Tag, Name = item.Name, Status = item.Status, - [Data.Models.Metadata.SoftwareList.FilterKey] = item.Filter, + Filter = item.Filter, }; return softwareList; } diff --git a/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs b/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs index b23b4f10..a265cf11 100644 --- a/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs @@ -350,7 +350,7 @@ namespace SabreTools.Serialization.CrossModel Tag = item.Tag, Name = item.Name, Status = item.Status, - Filter = item.ReadString(Data.Models.Metadata.SoftwareList.FilterKey), + Filter = item.Filter, }; return softwareList; } diff --git a/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs b/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs index 7509ecd5..ffb914f1 100644 --- a/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs @@ -344,7 +344,7 @@ namespace SabreTools.Serialization.CrossModel Tag = item.Tag, Name = item.Name, Status = item.Status, - [Data.Models.Metadata.SoftwareList.FilterKey] = item.Filter, + Filter = item.Filter, }; return softwareList; } diff --git a/SabreTools.Serialization.Readers.Test/ListxmlTests.cs b/SabreTools.Serialization.Readers.Test/ListxmlTests.cs index d486c2fe..50763fe1 100644 --- a/SabreTools.Serialization.Readers.Test/ListxmlTests.cs +++ b/SabreTools.Serialization.Readers.Test/ListxmlTests.cs @@ -384,7 +384,7 @@ namespace SabreTools.Serialization.Readers.Test Tag = "tag", Name = "name", Status = Data.Models.Metadata.SoftwareListStatus.Original, - Filter = "XXXXXX", + Filter = "filter", }; var ramoption = new Data.Models.Listxml.RamOption @@ -928,7 +928,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("tag", softwarelist.Tag); Assert.Equal("name", softwarelist.Name); Assert.Equal(Data.Models.Metadata.SoftwareListStatus.Original, softwarelist.Status); - Assert.Equal("XXXXXX", softwarelist.Filter); + Assert.Equal("filter", softwarelist.Filter); } /// diff --git a/SabreTools.Serialization.Readers.Test/LogiqxTests.cs b/SabreTools.Serialization.Readers.Test/LogiqxTests.cs index 45c18740..0717566b 100644 --- a/SabreTools.Serialization.Readers.Test/LogiqxTests.cs +++ b/SabreTools.Serialization.Readers.Test/LogiqxTests.cs @@ -289,7 +289,7 @@ namespace SabreTools.Serialization.Readers.Test Tag = "tag", Name = "name", Status = Data.Models.Metadata.SoftwareListStatus.Original, - Filter = "XXXXXX", + Filter = "filter", }; Data.Models.Logiqx.GameBase gameBase = game @@ -616,7 +616,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("tag", softwarelist.Tag); Assert.Equal("name", softwarelist.Name); Assert.Equal(Data.Models.Metadata.SoftwareListStatus.Original, softwarelist.Status); - Assert.Equal("XXXXXX", softwarelist.Filter); + Assert.Equal("filter", softwarelist.Filter); } } } diff --git a/SabreTools.Serialization.Readers.Test/M1Tests.cs b/SabreTools.Serialization.Readers.Test/M1Tests.cs index bd7bac20..9a48a233 100644 --- a/SabreTools.Serialization.Readers.Test/M1Tests.cs +++ b/SabreTools.Serialization.Readers.Test/M1Tests.cs @@ -380,7 +380,7 @@ namespace SabreTools.Serialization.Readers.Test Tag = "tag", Name = "name", Status = Data.Models.Metadata.SoftwareListStatus.Original, - Filter = "XXXXXX", + Filter = "filter", }; var ramoption = new Data.Models.Listxml.RamOption @@ -922,7 +922,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("tag", softwarelist.Tag); Assert.Equal("name", softwarelist.Name); Assert.Equal(Data.Models.Metadata.SoftwareListStatus.Original, softwarelist.Status); - Assert.Equal("XXXXXX", softwarelist.Filter); + Assert.Equal("filter", softwarelist.Filter); } /// diff --git a/SabreTools.Serialization.Readers.Test/MessTests.cs b/SabreTools.Serialization.Readers.Test/MessTests.cs index c1374f68..a6f471cb 100644 --- a/SabreTools.Serialization.Readers.Test/MessTests.cs +++ b/SabreTools.Serialization.Readers.Test/MessTests.cs @@ -380,7 +380,7 @@ namespace SabreTools.Serialization.Readers.Test Tag = "tag", Name = "name", Status = Data.Models.Metadata.SoftwareListStatus.Original, - Filter = "XXXXXX", + Filter = "filter", }; var ramoption = new Data.Models.Listxml.RamOption @@ -922,7 +922,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("tag", softwarelist.Tag); Assert.Equal("name", softwarelist.Name); Assert.Equal(Data.Models.Metadata.SoftwareListStatus.Original, softwarelist.Status); - Assert.Equal("XXXXXX", softwarelist.Filter); + Assert.Equal("filter", softwarelist.Filter); } /// diff --git a/SabreTools.Serialization.Readers.Test/NoIntroDatabaseTests.cs b/SabreTools.Serialization.Readers.Test/NoIntroDatabaseTests.cs index bd2deb23..f0241627 100644 --- a/SabreTools.Serialization.Readers.Test/NoIntroDatabaseTests.cs +++ b/SabreTools.Serialization.Readers.Test/NoIntroDatabaseTests.cs @@ -196,7 +196,7 @@ namespace SabreTools.Serialization.Readers.Test Date = "XXXXXX", Format = "XXXXXX", Note = "XXXXXX", - Filter = "XXXXXX", + Filter = "filter", Version = "XXXXXX", UpdateType = "XXXXXX", Size = "XXXXXX", @@ -420,7 +420,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", file.Date); Assert.Equal("XXXXXX", file.Format); Assert.Equal("XXXXXX", file.Note); - Assert.Equal("XXXXXX", file.Filter); + Assert.Equal("filter", file.Filter); Assert.Equal("XXXXXX", file.Version); Assert.Equal("XXXXXX", file.UpdateType); Assert.Equal("XXXXXX", file.Size); diff --git a/SabreTools.Serialization.Readers.Test/SoftwareListTests.cs b/SabreTools.Serialization.Readers.Test/SoftwareListTests.cs index bf51cd5c..7473572c 100644 --- a/SabreTools.Serialization.Readers.Test/SoftwareListTests.cs +++ b/SabreTools.Serialization.Readers.Test/SoftwareListTests.cs @@ -97,7 +97,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(newSl); Assert.Equal("name", newSl.Name); Assert.Equal("description", newSl.Description); - Assert.Equal("XXXXXX", newSl.Notes); + Assert.Equal("notes", newSl.Notes); Assert.NotNull(newSl.Software); var newSoftware = Assert.Single(newSl.Software); @@ -197,7 +197,7 @@ namespace SabreTools.Serialization.Readers.Test Description = "description", Year = "XXXXXX", Publisher = "XXXXXX", - Notes = "XXXXXX", + Notes = "notes", Info = [info], SharedFeat = [sharedfeat], Part = [part], @@ -207,7 +207,7 @@ namespace SabreTools.Serialization.Readers.Test { Name = "name", Description = "description", - Notes = "XXXXXX", + Notes = "notes", Software = [software], }; } @@ -224,7 +224,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("description", software.Description); Assert.Equal("XXXXXX", software.Year); Assert.Equal("XXXXXX", software.Publisher); - Assert.Equal("XXXXXX", software.Notes); + Assert.Equal("notes", software.Notes); Assert.NotNull(software.Info); var info = Assert.Single(software.Info);