From 3e2bba866d09f8cebb3b85dd9f2a4e0936cfa011 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Wed, 1 Apr 2026 11:24:33 -0400 Subject: [PATCH 001/142] Change ItemType into concerete property --- .../MetadataExtensionsTests.cs | 8 +- SabreTools.Data.Models/Metadata/Adjuster.cs | 2 +- SabreTools.Data.Models/Metadata/Analog.cs | 2 +- SabreTools.Data.Models/Metadata/Archive.cs | 2 +- SabreTools.Data.Models/Metadata/BiosSet.cs | 2 +- SabreTools.Data.Models/Metadata/Blank.cs | 2 +- SabreTools.Data.Models/Metadata/Chip.cs | 2 +- SabreTools.Data.Models/Metadata/Condition.cs | 2 +- .../Metadata/ConfLocation.cs | 2 +- .../Metadata/ConfSetting.cs | 2 +- .../Metadata/Configuration.cs | 2 +- SabreTools.Data.Models/Metadata/Control.cs | 2 +- SabreTools.Data.Models/Metadata/DatItem.cs | 12 +- SabreTools.Data.Models/Metadata/DataArea.cs | 2 +- SabreTools.Data.Models/Metadata/Device.cs | 2 +- SabreTools.Data.Models/Metadata/DeviceRef.cs | 2 +- .../Metadata/DipLocation.cs | 2 +- SabreTools.Data.Models/Metadata/DipSwitch.cs | 2 +- SabreTools.Data.Models/Metadata/DipValue.cs | 2 +- SabreTools.Data.Models/Metadata/Disk.cs | 2 +- SabreTools.Data.Models/Metadata/DiskArea.cs | 2 +- SabreTools.Data.Models/Metadata/Display.cs | 2 +- SabreTools.Data.Models/Metadata/Driver.cs | 2 +- SabreTools.Data.Models/Metadata/Dump.cs | 2 +- SabreTools.Data.Models/Metadata/Enums.cs | 2 + SabreTools.Data.Models/Metadata/Extension.cs | 2 +- SabreTools.Data.Models/Metadata/Feature.cs | 2 +- SabreTools.Data.Models/Metadata/Info.cs | 2 +- SabreTools.Data.Models/Metadata/Input.cs | 2 +- SabreTools.Data.Models/Metadata/Instance.cs | 2 +- SabreTools.Data.Models/Metadata/Media.cs | 2 +- SabreTools.Data.Models/Metadata/Original.cs | 2 +- SabreTools.Data.Models/Metadata/Part.cs | 2 +- SabreTools.Data.Models/Metadata/Port.cs | 2 +- SabreTools.Data.Models/Metadata/RamOption.cs | 2 +- SabreTools.Data.Models/Metadata/Release.cs | 2 +- .../Metadata/ReleaseDetails.cs | 2 +- SabreTools.Data.Models/Metadata/Rom.cs | 2 +- SabreTools.Data.Models/Metadata/Sample.cs | 2 +- SabreTools.Data.Models/Metadata/Serials.cs | 2 +- SabreTools.Data.Models/Metadata/SharedFeat.cs | 2 +- SabreTools.Data.Models/Metadata/Slot.cs | 2 +- SabreTools.Data.Models/Metadata/SlotOption.cs | 2 +- SabreTools.Data.Models/Metadata/Software.cs | 2 +- .../Metadata/SoftwareList.cs | 2 +- SabreTools.Data.Models/Metadata/Sound.cs | 2 +- .../Metadata/SourceDetails.cs | 2 +- SabreTools.Data.Models/Metadata/Video.cs | 2 +- .../DatStatisticsTests.cs | 62 +++--- .../FormatsTests.cs | 171 ++++++++------- .../ItemDictionaryDBTests.cs | 4 +- .../ItemDictionaryTests.cs | 4 +- .../DatFile.Splitting.cs | 8 +- SabreTools.Metadata.DatFiles/DatFile.cs | 26 +-- SabreTools.Metadata.DatFiles/DatStatistics.cs | 16 +- .../Formats/ArchiveDotOrg.cs | 8 +- .../Formats/AttractMode.cs | 4 +- .../Formats/ClrMamePro.cs | 28 +-- .../Formats/DosCenter.cs | 4 +- .../Formats/EverdriveSmdb.cs | 4 +- .../Formats/Listrom.cs | 6 +- .../Formats/Listxml.cs | 42 ++-- .../Formats/Logiqx.cs | 22 +- .../Formats/Md2File.cs | 4 +- .../Formats/Md4File.cs | 4 +- .../Formats/Md5File.cs | 8 +- .../Formats/Missfile.cs | 4 +- .../Formats/OfflineList.cs | 4 +- .../Formats/OpenMSX.cs | 4 +- .../Formats/RipeMD128File.cs | 4 +- .../Formats/RipeMD160File.cs | 4 +- .../Formats/RomCenter.cs | 4 +- .../Formats/SabreJSON.cs | 102 +++++---- .../Formats/SabreXML.cs | 6 +- .../Formats/SeparatedValue.cs | 8 +- .../Formats/SfvFile.cs | 4 +- .../Formats/Sha1File.cs | 8 +- .../Formats/Sha256File.cs | 6 +- .../Formats/Sha384File.cs | 4 +- .../Formats/Sha512File.cs | 4 +- .../Formats/SoftwareList.cs | 14 +- .../Formats/SpamSumFile.cs | 6 +- .../ItemDictionary.cs | 12 +- .../ItemDictionaryDB.cs | 12 +- .../DatItemTests.cs | 2 +- .../ExtensionsTests.cs | 202 +++++++++--------- SabreTools.Metadata.DatItems/DatItem.cs | 6 +- SabreTools.Metadata.DatItems/DatItemT.cs | 6 +- SabreTools.Metadata.DatItems/Enums.cs | 147 ------------- SabreTools.Metadata.DatItems/Extensions.cs | 191 +++++++++-------- .../Formats/Adjuster.cs | 2 +- .../Formats/Analog.cs | 2 +- .../Formats/Archive.cs | 2 +- .../Formats/BiosSet.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Blank.cs | 10 +- SabreTools.Metadata.DatItems/Formats/Chip.cs | 2 +- .../Formats/Condition.cs | 2 +- .../Formats/ConfLocation.cs | 2 +- .../Formats/ConfSetting.cs | 2 +- .../Formats/Configuration.cs | 2 +- .../Formats/Control.cs | 2 +- .../Formats/DataArea.cs | 2 +- .../Formats/Device.cs | 2 +- .../Formats/DeviceRef.cs | 2 +- .../Formats/DipLocation.cs | 2 +- .../Formats/DipSwitch.cs | 2 +- .../Formats/DipValue.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Disk.cs | 2 +- .../Formats/DiskArea.cs | 2 +- .../Formats/Display.cs | 2 +- .../Formats/Driver.cs | 2 +- .../Formats/Extension.cs | 2 +- .../Formats/Feature.cs | 2 +- SabreTools.Metadata.DatItems/Formats/File.cs | 9 +- SabreTools.Metadata.DatItems/Formats/Info.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Input.cs | 2 +- .../Formats/Instance.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Media.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Part.cs | 2 +- .../Formats/PartFeature.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Port.cs | 2 +- .../Formats/RamOption.cs | 2 +- .../Formats/Release.cs | 2 +- .../Formats/ReleaseDetails.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Rom.cs | 4 +- .../Formats/Sample.cs | 2 +- .../Formats/Serials.cs | 2 +- .../Formats/SharedFeat.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Slot.cs | 2 +- .../Formats/SlotOption.cs | 2 +- .../Formats/SoftwareList.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Sound.cs | 2 +- .../Formats/SourceDetails.cs | 2 +- .../SabreTools.Metadata.DatItems.csproj | 4 + .../Listrom.Serializer.cs | 2 - 135 files changed, 629 insertions(+), 781 deletions(-) diff --git a/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs b/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs index 5248b23c..76d50745 100644 --- a/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs +++ b/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs @@ -24,7 +24,7 @@ namespace SabreTools.Data.Extensions.Test Assert.NotNull(actual); Assert.Equal(8, actual.Count); - Assert.Equal(ItemType.Rom, actual["_type"]); + Assert.Equal(ItemType.Rom, actual.ItemType); Assert.Null(actual[Rom.NameKey]); Assert.Null(actual[Rom.MergeKey]); Assert.Null(actual[Rom.RegionKey]); @@ -52,7 +52,7 @@ namespace SabreTools.Data.Extensions.Test Assert.NotNull(actual); Assert.Equal(8, actual.Count); - Assert.Equal(ItemType.Rom, actual["_type"]); + Assert.Equal(ItemType.Rom, actual.ItemType); Assert.Equal("XXXXXX.chd", actual[Rom.NameKey]); Assert.Equal("XXXXXX", actual[Rom.MergeKey]); Assert.Equal("XXXXXX", actual[Rom.RegionKey]); @@ -70,7 +70,7 @@ namespace SabreTools.Data.Extensions.Test Assert.NotNull(actual); Assert.Equal(6, actual.Count); - Assert.Equal(ItemType.Rom, actual["_type"]); + Assert.Equal(ItemType.Rom, actual.ItemType); Assert.Null(actual[Rom.NameKey]); Assert.Null(actual[Rom.MD5Key]); Assert.Null(actual[Rom.SHA1Key]); @@ -94,7 +94,7 @@ namespace SabreTools.Data.Extensions.Test Assert.NotNull(actual); Assert.Equal(6, actual.Count); - Assert.Equal(ItemType.Rom, actual["_type"]); + Assert.Equal(ItemType.Rom, actual.ItemType); Assert.Equal("XXXXXX.aaruf", actual[Rom.NameKey]); Assert.Equal("XXXXXX", actual[Rom.MD5Key]); Assert.Equal("XXXXXX", actual[Rom.SHA1Key]); diff --git a/SabreTools.Data.Models/Metadata/Adjuster.cs b/SabreTools.Data.Models/Metadata/Adjuster.cs index 7b4c8e96..cc057c04 100644 --- a/SabreTools.Data.Models/Metadata/Adjuster.cs +++ b/SabreTools.Data.Models/Metadata/Adjuster.cs @@ -20,6 +20,6 @@ namespace SabreTools.Data.Models.Metadata #endregion - public Adjuster() => Type = ItemType.Adjuster; + public Adjuster() => ItemType = ItemType.Adjuster; } } diff --git a/SabreTools.Data.Models/Metadata/Analog.cs b/SabreTools.Data.Models/Metadata/Analog.cs index b02d99bc..273d159e 100644 --- a/SabreTools.Data.Models/Metadata/Analog.cs +++ b/SabreTools.Data.Models/Metadata/Analog.cs @@ -13,6 +13,6 @@ namespace SabreTools.Data.Models.Metadata #endregion - public Analog() => Type = ItemType.Analog; + public Analog() => ItemType = ItemType.Analog; } } diff --git a/SabreTools.Data.Models/Metadata/Archive.cs b/SabreTools.Data.Models/Metadata/Archive.cs index d80c9ecd..44d47d00 100644 --- a/SabreTools.Data.Models/Metadata/Archive.cs +++ b/SabreTools.Data.Models/Metadata/Archive.cs @@ -109,6 +109,6 @@ namespace SabreTools.Data.Models.Metadata #endregion - public Archive() => Type = ItemType.Archive; + public Archive() => ItemType = ItemType.Archive; } } diff --git a/SabreTools.Data.Models/Metadata/BiosSet.cs b/SabreTools.Data.Models/Metadata/BiosSet.cs index 08600ba8..df3e3d1f 100644 --- a/SabreTools.Data.Models/Metadata/BiosSet.cs +++ b/SabreTools.Data.Models/Metadata/BiosSet.cs @@ -19,6 +19,6 @@ namespace SabreTools.Data.Models.Metadata #endregion - public BiosSet() => Type = ItemType.BiosSet; + public BiosSet() => ItemType = ItemType.BiosSet; } } diff --git a/SabreTools.Data.Models/Metadata/Blank.cs b/SabreTools.Data.Models/Metadata/Blank.cs index 411f0273..45b1284d 100644 --- a/SabreTools.Data.Models/Metadata/Blank.cs +++ b/SabreTools.Data.Models/Metadata/Blank.cs @@ -6,6 +6,6 @@ namespace SabreTools.Data.Models.Metadata [JsonObject("blank"), XmlRoot("blank")] public class Blank : DatItem { - public Blank() => Type = ItemType.Blank; + public Blank() => ItemType = ItemType.Blank; } } diff --git a/SabreTools.Data.Models/Metadata/Chip.cs b/SabreTools.Data.Models/Metadata/Chip.cs index c3a512b0..2348bfdd 100644 --- a/SabreTools.Data.Models/Metadata/Chip.cs +++ b/SabreTools.Data.Models/Metadata/Chip.cs @@ -28,6 +28,6 @@ namespace SabreTools.Data.Models.Metadata #endregion - public Chip() => Type = ItemType.Chip; + public Chip() => ItemType = ItemType.Chip; } } diff --git a/SabreTools.Data.Models/Metadata/Condition.cs b/SabreTools.Data.Models/Metadata/Condition.cs index ead68ff2..d2a257cc 100644 --- a/SabreTools.Data.Models/Metadata/Condition.cs +++ b/SabreTools.Data.Models/Metadata/Condition.cs @@ -22,6 +22,6 @@ namespace SabreTools.Data.Models.Metadata #endregion - public Condition() => Type = ItemType.Condition; + public Condition() => ItemType = ItemType.Condition; } } diff --git a/SabreTools.Data.Models/Metadata/ConfLocation.cs b/SabreTools.Data.Models/Metadata/ConfLocation.cs index d26305c6..ada4f513 100644 --- a/SabreTools.Data.Models/Metadata/ConfLocation.cs +++ b/SabreTools.Data.Models/Metadata/ConfLocation.cs @@ -19,6 +19,6 @@ namespace SabreTools.Data.Models.Metadata #endregion - public ConfLocation() => Type = ItemType.ConfLocation; + public ConfLocation() => ItemType = ItemType.ConfLocation; } } diff --git a/SabreTools.Data.Models/Metadata/ConfSetting.cs b/SabreTools.Data.Models/Metadata/ConfSetting.cs index f5e1d706..a4c7131c 100644 --- a/SabreTools.Data.Models/Metadata/ConfSetting.cs +++ b/SabreTools.Data.Models/Metadata/ConfSetting.cs @@ -23,6 +23,6 @@ namespace SabreTools.Data.Models.Metadata #endregion - public ConfSetting() => Type = ItemType.ConfSetting; + public ConfSetting() => ItemType = ItemType.ConfSetting; } } diff --git a/SabreTools.Data.Models/Metadata/Configuration.cs b/SabreTools.Data.Models/Metadata/Configuration.cs index baeea5ed..dd793423 100644 --- a/SabreTools.Data.Models/Metadata/Configuration.cs +++ b/SabreTools.Data.Models/Metadata/Configuration.cs @@ -31,6 +31,6 @@ namespace SabreTools.Data.Models.Metadata #endregion - public Configuration() => Type = ItemType.Configuration; + public Configuration() => ItemType = ItemType.Configuration; } } diff --git a/SabreTools.Data.Models/Metadata/Control.cs b/SabreTools.Data.Models/Metadata/Control.cs index b14eee03..c14b816d 100644 --- a/SabreTools.Data.Models/Metadata/Control.cs +++ b/SabreTools.Data.Models/Metadata/Control.cs @@ -46,6 +46,6 @@ namespace SabreTools.Data.Models.Metadata #endregion - public Control() => Type = ItemType.Control; + public Control() => ItemType = ItemType.Control; } } diff --git a/SabreTools.Data.Models/Metadata/DatItem.cs b/SabreTools.Data.Models/Metadata/DatItem.cs index 47a1c59e..85f6a0fb 100644 --- a/SabreTools.Data.Models/Metadata/DatItem.cs +++ b/SabreTools.Data.Models/Metadata/DatItem.cs @@ -8,20 +8,10 @@ namespace SabreTools.Data.Models.Metadata /// public class DatItem : DictionaryBase { - #region Common Keys - - public const string TypeKey = "_type"; - - #endregion - /// /// Quick accessor to item type, if it exists /// [JsonProperty("itemtype", DefaultValueHandling = DefaultValueHandling.Ignore), XmlElement("itemtype")] - public ItemType? Type - { - get => ContainsKey(TypeKey) ? this[TypeKey] as ItemType? : null; - set => this[TypeKey] = value; - } + public ItemType ItemType { get; protected set; } } } diff --git a/SabreTools.Data.Models/Metadata/DataArea.cs b/SabreTools.Data.Models/Metadata/DataArea.cs index 2a2b989d..2d2e4fb4 100644 --- a/SabreTools.Data.Models/Metadata/DataArea.cs +++ b/SabreTools.Data.Models/Metadata/DataArea.cs @@ -26,6 +26,6 @@ namespace SabreTools.Data.Models.Metadata #endregion - public DataArea() => Type = ItemType.DataArea; + public DataArea() => ItemType = ItemType.DataArea; } } diff --git a/SabreTools.Data.Models/Metadata/Device.cs b/SabreTools.Data.Models/Metadata/Device.cs index b2ba3bdb..17b2076c 100644 --- a/SabreTools.Data.Models/Metadata/Device.cs +++ b/SabreTools.Data.Models/Metadata/Device.cs @@ -33,6 +33,6 @@ namespace SabreTools.Data.Models.Metadata #endregion - public Device() => Type = ItemType.Device; + public Device() => ItemType = ItemType.Device; } } diff --git a/SabreTools.Data.Models/Metadata/DeviceRef.cs b/SabreTools.Data.Models/Metadata/DeviceRef.cs index 31223b86..a83e31d8 100644 --- a/SabreTools.Data.Models/Metadata/DeviceRef.cs +++ b/SabreTools.Data.Models/Metadata/DeviceRef.cs @@ -13,6 +13,6 @@ namespace SabreTools.Data.Models.Metadata #endregion - public DeviceRef() => Type = ItemType.DeviceRef; + public DeviceRef() => ItemType = ItemType.DeviceRef; } } diff --git a/SabreTools.Data.Models/Metadata/DipLocation.cs b/SabreTools.Data.Models/Metadata/DipLocation.cs index 24570ba9..4535667b 100644 --- a/SabreTools.Data.Models/Metadata/DipLocation.cs +++ b/SabreTools.Data.Models/Metadata/DipLocation.cs @@ -19,6 +19,6 @@ namespace SabreTools.Data.Models.Metadata #endregion - public DipLocation() => Type = ItemType.DipLocation; + public DipLocation() => ItemType = ItemType.DipLocation; } } diff --git a/SabreTools.Data.Models/Metadata/DipSwitch.cs b/SabreTools.Data.Models/Metadata/DipSwitch.cs index a363539a..ff5b170c 100644 --- a/SabreTools.Data.Models/Metadata/DipSwitch.cs +++ b/SabreTools.Data.Models/Metadata/DipSwitch.cs @@ -37,6 +37,6 @@ namespace SabreTools.Data.Models.Metadata #endregion - public DipSwitch() => Type = ItemType.DipSwitch; + public DipSwitch() => ItemType = ItemType.DipSwitch; } } diff --git a/SabreTools.Data.Models/Metadata/DipValue.cs b/SabreTools.Data.Models/Metadata/DipValue.cs index 153c8bcb..53bae423 100644 --- a/SabreTools.Data.Models/Metadata/DipValue.cs +++ b/SabreTools.Data.Models/Metadata/DipValue.cs @@ -23,6 +23,6 @@ namespace SabreTools.Data.Models.Metadata #endregion - public DipValue() => Type = ItemType.DipValue; + public DipValue() => ItemType = ItemType.DipValue; } } diff --git a/SabreTools.Data.Models/Metadata/Disk.cs b/SabreTools.Data.Models/Metadata/Disk.cs index 006218c5..dffda24e 100644 --- a/SabreTools.Data.Models/Metadata/Disk.cs +++ b/SabreTools.Data.Models/Metadata/Disk.cs @@ -40,6 +40,6 @@ namespace SabreTools.Data.Models.Metadata #endregion - public Disk() => Type = ItemType.Disk; + public Disk() => ItemType = ItemType.Disk; } } diff --git a/SabreTools.Data.Models/Metadata/DiskArea.cs b/SabreTools.Data.Models/Metadata/DiskArea.cs index 0c1c73ba..cb91efa3 100644 --- a/SabreTools.Data.Models/Metadata/DiskArea.cs +++ b/SabreTools.Data.Models/Metadata/DiskArea.cs @@ -17,6 +17,6 @@ namespace SabreTools.Data.Models.Metadata #endregion - public DiskArea() => Type = ItemType.DiskArea; + public DiskArea() => ItemType = ItemType.DiskArea; } } diff --git a/SabreTools.Data.Models/Metadata/Display.cs b/SabreTools.Data.Models/Metadata/Display.cs index 286b72cc..edbf05dd 100644 --- a/SabreTools.Data.Models/Metadata/Display.cs +++ b/SabreTools.Data.Models/Metadata/Display.cs @@ -52,6 +52,6 @@ namespace SabreTools.Data.Models.Metadata #endregion - public Display() => Type = ItemType.Display; + public Display() => ItemType = ItemType.Display; } } diff --git a/SabreTools.Data.Models/Metadata/Driver.cs b/SabreTools.Data.Models/Metadata/Driver.cs index 2f614f55..9860acfc 100644 --- a/SabreTools.Data.Models/Metadata/Driver.cs +++ b/SabreTools.Data.Models/Metadata/Driver.cs @@ -46,6 +46,6 @@ namespace SabreTools.Data.Models.Metadata #endregion - public Driver() => Type = ItemType.Driver; + public Driver() => ItemType = ItemType.Driver; } } diff --git a/SabreTools.Data.Models/Metadata/Dump.cs b/SabreTools.Data.Models/Metadata/Dump.cs index 4311062d..f4ca3c33 100644 --- a/SabreTools.Data.Models/Metadata/Dump.cs +++ b/SabreTools.Data.Models/Metadata/Dump.cs @@ -26,6 +26,6 @@ namespace SabreTools.Data.Models.Metadata #endregion - public Dump() => Type = ItemType.Dump; + public Dump() => ItemType = ItemType.Dump; } } diff --git a/SabreTools.Data.Models/Metadata/Enums.cs b/SabreTools.Data.Models/Metadata/Enums.cs index 59913ea0..cca49b14 100644 --- a/SabreTools.Data.Models/Metadata/Enums.cs +++ b/SabreTools.Data.Models/Metadata/Enums.cs @@ -279,12 +279,14 @@ namespace SabreTools.Data.Models.Metadata Dump, Extension, Feature, + File, // TODO: This should be merged with Rom? Info, Input, Instance, Media, Original, Part, + PartFeature, Port, RamOption, Release, diff --git a/SabreTools.Data.Models/Metadata/Extension.cs b/SabreTools.Data.Models/Metadata/Extension.cs index fd55943c..66af6c6e 100644 --- a/SabreTools.Data.Models/Metadata/Extension.cs +++ b/SabreTools.Data.Models/Metadata/Extension.cs @@ -13,6 +13,6 @@ namespace SabreTools.Data.Models.Metadata #endregion - public Extension() => Type = ItemType.Extension; + public Extension() => ItemType = ItemType.Extension; } } diff --git a/SabreTools.Data.Models/Metadata/Feature.cs b/SabreTools.Data.Models/Metadata/Feature.cs index 95ae91fd..7a3521e7 100644 --- a/SabreTools.Data.Models/Metadata/Feature.cs +++ b/SabreTools.Data.Models/Metadata/Feature.cs @@ -25,6 +25,6 @@ namespace SabreTools.Data.Models.Metadata #endregion - public Feature() => Type = ItemType.Feature; + public Feature() => ItemType = ItemType.Feature; } } diff --git a/SabreTools.Data.Models/Metadata/Info.cs b/SabreTools.Data.Models/Metadata/Info.cs index 4aaab026..4eeb3840 100644 --- a/SabreTools.Data.Models/Metadata/Info.cs +++ b/SabreTools.Data.Models/Metadata/Info.cs @@ -16,6 +16,6 @@ namespace SabreTools.Data.Models.Metadata #endregion - public Info() => Type = ItemType.Info; + public Info() => ItemType = ItemType.Info; } } diff --git a/SabreTools.Data.Models/Metadata/Input.cs b/SabreTools.Data.Models/Metadata/Input.cs index fc6dd84a..dba3364e 100644 --- a/SabreTools.Data.Models/Metadata/Input.cs +++ b/SabreTools.Data.Models/Metadata/Input.cs @@ -28,6 +28,6 @@ namespace SabreTools.Data.Models.Metadata #endregion - public Input() => Type = ItemType.Input; + public Input() => ItemType = ItemType.Input; } } diff --git a/SabreTools.Data.Models/Metadata/Instance.cs b/SabreTools.Data.Models/Metadata/Instance.cs index 3aede5fd..df36275f 100644 --- a/SabreTools.Data.Models/Metadata/Instance.cs +++ b/SabreTools.Data.Models/Metadata/Instance.cs @@ -16,6 +16,6 @@ namespace SabreTools.Data.Models.Metadata #endregion - public Instance() => Type = ItemType.Instance; + public Instance() => ItemType = ItemType.Instance; } } diff --git a/SabreTools.Data.Models/Metadata/Media.cs b/SabreTools.Data.Models/Metadata/Media.cs index af0275d5..f00cb3c6 100644 --- a/SabreTools.Data.Models/Metadata/Media.cs +++ b/SabreTools.Data.Models/Metadata/Media.cs @@ -25,6 +25,6 @@ namespace SabreTools.Data.Models.Metadata #endregion - public Media() => Type = ItemType.Media; + public Media() => ItemType = ItemType.Media; } } diff --git a/SabreTools.Data.Models/Metadata/Original.cs b/SabreTools.Data.Models/Metadata/Original.cs index ead97687..fbf46886 100644 --- a/SabreTools.Data.Models/Metadata/Original.cs +++ b/SabreTools.Data.Models/Metadata/Original.cs @@ -16,6 +16,6 @@ namespace SabreTools.Data.Models.Metadata #endregion - public Original() => Type = ItemType.Original; + public Original() => ItemType = ItemType.Original; } } diff --git a/SabreTools.Data.Models/Metadata/Part.cs b/SabreTools.Data.Models/Metadata/Part.cs index 2b1bc1f0..1b67de05 100644 --- a/SabreTools.Data.Models/Metadata/Part.cs +++ b/SabreTools.Data.Models/Metadata/Part.cs @@ -32,6 +32,6 @@ namespace SabreTools.Data.Models.Metadata #endregion - public Part() => Type = ItemType.Part; + public Part() => ItemType = ItemType.Part; } } diff --git a/SabreTools.Data.Models/Metadata/Port.cs b/SabreTools.Data.Models/Metadata/Port.cs index 13621878..9a017d7f 100644 --- a/SabreTools.Data.Models/Metadata/Port.cs +++ b/SabreTools.Data.Models/Metadata/Port.cs @@ -17,6 +17,6 @@ namespace SabreTools.Data.Models.Metadata #endregion - public Port() => Type = ItemType.Port; + public Port() => ItemType = ItemType.Port; } } diff --git a/SabreTools.Data.Models/Metadata/RamOption.cs b/SabreTools.Data.Models/Metadata/RamOption.cs index 5dbd3fe1..f39796b7 100644 --- a/SabreTools.Data.Models/Metadata/RamOption.cs +++ b/SabreTools.Data.Models/Metadata/RamOption.cs @@ -19,6 +19,6 @@ namespace SabreTools.Data.Models.Metadata #endregion - public RamOption() => Type = ItemType.RamOption; + public RamOption() => ItemType = ItemType.RamOption; } } diff --git a/SabreTools.Data.Models/Metadata/Release.cs b/SabreTools.Data.Models/Metadata/Release.cs index aeb4442e..0a6f5aa9 100644 --- a/SabreTools.Data.Models/Metadata/Release.cs +++ b/SabreTools.Data.Models/Metadata/Release.cs @@ -25,6 +25,6 @@ namespace SabreTools.Data.Models.Metadata #endregion - public Release() => Type = ItemType.Release; + public Release() => ItemType = ItemType.Release; } } diff --git a/SabreTools.Data.Models/Metadata/ReleaseDetails.cs b/SabreTools.Data.Models/Metadata/ReleaseDetails.cs index 6a1a9fa9..ab8579f9 100644 --- a/SabreTools.Data.Models/Metadata/ReleaseDetails.cs +++ b/SabreTools.Data.Models/Metadata/ReleaseDetails.cs @@ -58,6 +58,6 @@ namespace SabreTools.Data.Models.Metadata #endregion - public ReleaseDetails() => Type = ItemType.ReleaseDetails; + public ReleaseDetails() => ItemType = ItemType.ReleaseDetails; } } diff --git a/SabreTools.Data.Models/Metadata/Rom.cs b/SabreTools.Data.Models/Metadata/Rom.cs index 728b0009..92d0914d 100644 --- a/SabreTools.Data.Models/Metadata/Rom.cs +++ b/SabreTools.Data.Models/Metadata/Rom.cs @@ -298,6 +298,6 @@ namespace SabreTools.Data.Models.Metadata #endregion - public Rom() => Type = ItemType.Rom; + public Rom() => ItemType = ItemType.Rom; } } diff --git a/SabreTools.Data.Models/Metadata/Sample.cs b/SabreTools.Data.Models/Metadata/Sample.cs index ff4e25a4..93a40b44 100644 --- a/SabreTools.Data.Models/Metadata/Sample.cs +++ b/SabreTools.Data.Models/Metadata/Sample.cs @@ -13,6 +13,6 @@ namespace SabreTools.Data.Models.Metadata #endregion - public Sample() => Type = ItemType.Sample; + public Sample() => ItemType = ItemType.Sample; } } diff --git a/SabreTools.Data.Models/Metadata/Serials.cs b/SabreTools.Data.Models/Metadata/Serials.cs index 9f451b3e..ecbc8a6b 100644 --- a/SabreTools.Data.Models/Metadata/Serials.cs +++ b/SabreTools.Data.Models/Metadata/Serials.cs @@ -52,6 +52,6 @@ namespace SabreTools.Data.Models.Metadata #endregion - public Serials() => Type = ItemType.Serials; + public Serials() => ItemType = ItemType.Serials; } } diff --git a/SabreTools.Data.Models/Metadata/SharedFeat.cs b/SabreTools.Data.Models/Metadata/SharedFeat.cs index 9263c08f..6a2fe032 100644 --- a/SabreTools.Data.Models/Metadata/SharedFeat.cs +++ b/SabreTools.Data.Models/Metadata/SharedFeat.cs @@ -16,6 +16,6 @@ namespace SabreTools.Data.Models.Metadata #endregion - public SharedFeat() => Type = ItemType.SharedFeat; + public SharedFeat() => ItemType = ItemType.SharedFeat; } } diff --git a/SabreTools.Data.Models/Metadata/Slot.cs b/SabreTools.Data.Models/Metadata/Slot.cs index eb25435f..abd99216 100644 --- a/SabreTools.Data.Models/Metadata/Slot.cs +++ b/SabreTools.Data.Models/Metadata/Slot.cs @@ -17,6 +17,6 @@ namespace SabreTools.Data.Models.Metadata #endregion - public Slot() => Type = ItemType.Slot; + public Slot() => ItemType = ItemType.Slot; } } diff --git a/SabreTools.Data.Models/Metadata/SlotOption.cs b/SabreTools.Data.Models/Metadata/SlotOption.cs index 6aad120b..83388ac5 100644 --- a/SabreTools.Data.Models/Metadata/SlotOption.cs +++ b/SabreTools.Data.Models/Metadata/SlotOption.cs @@ -19,6 +19,6 @@ namespace SabreTools.Data.Models.Metadata #endregion - public SlotOption() => Type = ItemType.SlotOption; + public SlotOption() => ItemType = ItemType.SlotOption; } } diff --git a/SabreTools.Data.Models/Metadata/Software.cs b/SabreTools.Data.Models/Metadata/Software.cs index 43312610..44d991be 100644 --- a/SabreTools.Data.Models/Metadata/Software.cs +++ b/SabreTools.Data.Models/Metadata/Software.cs @@ -43,6 +43,6 @@ namespace SabreTools.Data.Models.Metadata #endregion - public Software() => Type = ItemType.Software; + public Software() => ItemType = ItemType.Software; } } diff --git a/SabreTools.Data.Models/Metadata/SoftwareList.cs b/SabreTools.Data.Models/Metadata/SoftwareList.cs index 7aa8f492..3642796d 100644 --- a/SabreTools.Data.Models/Metadata/SoftwareList.cs +++ b/SabreTools.Data.Models/Metadata/SoftwareList.cs @@ -32,6 +32,6 @@ namespace SabreTools.Data.Models.Metadata #endregion - public SoftwareList() => Type = ItemType.SoftwareList; + public SoftwareList() => ItemType = ItemType.SoftwareList; } } diff --git a/SabreTools.Data.Models/Metadata/Sound.cs b/SabreTools.Data.Models/Metadata/Sound.cs index 64ae132e..480d1537 100644 --- a/SabreTools.Data.Models/Metadata/Sound.cs +++ b/SabreTools.Data.Models/Metadata/Sound.cs @@ -13,6 +13,6 @@ namespace SabreTools.Data.Models.Metadata #endregion - public Sound() => Type = ItemType.Sound; + public Sound() => ItemType = ItemType.Sound; } } diff --git a/SabreTools.Data.Models/Metadata/SourceDetails.cs b/SabreTools.Data.Models/Metadata/SourceDetails.cs index b151d954..b443b163 100644 --- a/SabreTools.Data.Models/Metadata/SourceDetails.cs +++ b/SabreTools.Data.Models/Metadata/SourceDetails.cs @@ -82,6 +82,6 @@ namespace SabreTools.Data.Models.Metadata #endregion - public SourceDetails() => Type = ItemType.SourceDetails; + public SourceDetails() => ItemType = ItemType.SourceDetails; } } diff --git a/SabreTools.Data.Models/Metadata/Video.cs b/SabreTools.Data.Models/Metadata/Video.cs index 615dfa9a..406cb218 100644 --- a/SabreTools.Data.Models/Metadata/Video.cs +++ b/SabreTools.Data.Models/Metadata/Video.cs @@ -31,6 +31,6 @@ namespace SabreTools.Data.Models.Metadata #endregion - public Video() => Type = ItemType.Video; + public Video() => ItemType = ItemType.Video; } } diff --git a/SabreTools.Metadata.DatFiles.Test/DatStatisticsTests.cs b/SabreTools.Metadata.DatFiles.Test/DatStatisticsTests.cs index a0f75e80..f5cef637 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatStatisticsTests.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatStatisticsTests.cs @@ -62,11 +62,11 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal(0, stats.GetHashCount(HashType.SHA384)); Assert.Equal(0, stats.GetHashCount(HashType.SHA512)); Assert.Equal(0, stats.GetHashCount(HashType.SpamSum)); - Assert.Equal(0, stats.GetItemCount(ItemType.Disk)); - Assert.Equal(0, stats.GetItemCount(ItemType.File)); - Assert.Equal(0, stats.GetItemCount(ItemType.Media)); - Assert.Equal(0, stats.GetItemCount(ItemType.Rom)); - Assert.Equal(0, stats.GetItemCount(ItemType.Sample)); + Assert.Equal(0, stats.GetItemCount(Data.Models.Metadata.ItemType.Disk)); + Assert.Equal(0, stats.GetItemCount(Data.Models.Metadata.ItemType.File)); + Assert.Equal(0, stats.GetItemCount(Data.Models.Metadata.ItemType.Media)); + Assert.Equal(0, stats.GetItemCount(Data.Models.Metadata.ItemType.Rom)); + Assert.Equal(0, stats.GetItemCount(Data.Models.Metadata.ItemType.Sample)); Assert.Equal(0, stats.GetStatusCount(ItemStatus.Good)); // AddItemStatistics @@ -90,11 +90,11 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal(1, stats.GetHashCount(HashType.SHA384)); Assert.Equal(1, stats.GetHashCount(HashType.SHA512)); Assert.Equal(2, stats.GetHashCount(HashType.SpamSum)); - Assert.Equal(1, stats.GetItemCount(ItemType.Disk)); - Assert.Equal(1, stats.GetItemCount(ItemType.File)); - Assert.Equal(1, stats.GetItemCount(ItemType.Media)); - Assert.Equal(1, stats.GetItemCount(ItemType.Rom)); - Assert.Equal(1, stats.GetItemCount(ItemType.Sample)); + Assert.Equal(1, stats.GetItemCount(Data.Models.Metadata.ItemType.Disk)); + Assert.Equal(1, stats.GetItemCount(Data.Models.Metadata.ItemType.File)); + Assert.Equal(1, stats.GetItemCount(Data.Models.Metadata.ItemType.Media)); + Assert.Equal(1, stats.GetItemCount(Data.Models.Metadata.ItemType.Rom)); + Assert.Equal(1, stats.GetItemCount(Data.Models.Metadata.ItemType.Sample)); Assert.Equal(2, stats.GetStatusCount(ItemStatus.Good)); // RemoveItemStatistics @@ -118,11 +118,11 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal(0, stats.GetHashCount(HashType.SHA384)); Assert.Equal(0, stats.GetHashCount(HashType.SHA512)); Assert.Equal(0, stats.GetHashCount(HashType.SpamSum)); - Assert.Equal(0, stats.GetItemCount(ItemType.Disk)); - Assert.Equal(0, stats.GetItemCount(ItemType.File)); - Assert.Equal(0, stats.GetItemCount(ItemType.Media)); - Assert.Equal(0, stats.GetItemCount(ItemType.Rom)); - Assert.Equal(0, stats.GetItemCount(ItemType.Sample)); + Assert.Equal(0, stats.GetItemCount(Data.Models.Metadata.ItemType.Disk)); + Assert.Equal(0, stats.GetItemCount(Data.Models.Metadata.ItemType.File)); + Assert.Equal(0, stats.GetItemCount(Data.Models.Metadata.ItemType.Media)); + Assert.Equal(0, stats.GetItemCount(Data.Models.Metadata.ItemType.Rom)); + Assert.Equal(0, stats.GetItemCount(Data.Models.Metadata.ItemType.Sample)); Assert.Equal(0, stats.GetStatusCount(ItemStatus.Good)); } @@ -153,11 +153,11 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal(0, stats.GetHashCount(HashType.SHA384)); Assert.Equal(0, stats.GetHashCount(HashType.SHA512)); Assert.Equal(0, stats.GetHashCount(HashType.SpamSum)); - Assert.Equal(0, stats.GetItemCount(ItemType.Disk)); - Assert.Equal(0, stats.GetItemCount(ItemType.File)); - Assert.Equal(0, stats.GetItemCount(ItemType.Media)); - Assert.Equal(0, stats.GetItemCount(ItemType.Rom)); - Assert.Equal(0, stats.GetItemCount(ItemType.Sample)); + Assert.Equal(0, stats.GetItemCount(Data.Models.Metadata.ItemType.Disk)); + Assert.Equal(0, stats.GetItemCount(Data.Models.Metadata.ItemType.File)); + Assert.Equal(0, stats.GetItemCount(Data.Models.Metadata.ItemType.Media)); + Assert.Equal(0, stats.GetItemCount(Data.Models.Metadata.ItemType.Rom)); + Assert.Equal(0, stats.GetItemCount(Data.Models.Metadata.ItemType.Sample)); Assert.Equal(0, stats.GetStatusCount(ItemStatus.Good)); // AddItemStatistics @@ -181,11 +181,11 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal(1, stats.GetHashCount(HashType.SHA384)); Assert.Equal(1, stats.GetHashCount(HashType.SHA512)); Assert.Equal(2, stats.GetHashCount(HashType.SpamSum)); - Assert.Equal(1, stats.GetItemCount(ItemType.Disk)); - Assert.Equal(1, stats.GetItemCount(ItemType.File)); - Assert.Equal(1, stats.GetItemCount(ItemType.Media)); - Assert.Equal(1, stats.GetItemCount(ItemType.Rom)); - Assert.Equal(1, stats.GetItemCount(ItemType.Sample)); + Assert.Equal(1, stats.GetItemCount(Data.Models.Metadata.ItemType.Disk)); + Assert.Equal(1, stats.GetItemCount(Data.Models.Metadata.ItemType.File)); + Assert.Equal(1, stats.GetItemCount(Data.Models.Metadata.ItemType.Media)); + Assert.Equal(1, stats.GetItemCount(Data.Models.Metadata.ItemType.Rom)); + Assert.Equal(1, stats.GetItemCount(Data.Models.Metadata.ItemType.Sample)); Assert.Equal(2, stats.GetStatusCount(ItemStatus.Good)); // ResetStatistics @@ -205,11 +205,11 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal(0, stats.GetHashCount(HashType.SHA384)); Assert.Equal(0, stats.GetHashCount(HashType.SHA512)); Assert.Equal(0, stats.GetHashCount(HashType.SpamSum)); - Assert.Equal(0, stats.GetItemCount(ItemType.Disk)); - Assert.Equal(0, stats.GetItemCount(ItemType.File)); - Assert.Equal(0, stats.GetItemCount(ItemType.Media)); - Assert.Equal(0, stats.GetItemCount(ItemType.Rom)); - Assert.Equal(0, stats.GetItemCount(ItemType.Sample)); + Assert.Equal(0, stats.GetItemCount(Data.Models.Metadata.ItemType.Disk)); + Assert.Equal(0, stats.GetItemCount(Data.Models.Metadata.ItemType.File)); + Assert.Equal(0, stats.GetItemCount(Data.Models.Metadata.ItemType.Media)); + Assert.Equal(0, stats.GetItemCount(Data.Models.Metadata.ItemType.Rom)); + Assert.Equal(0, stats.GetItemCount(Data.Models.Metadata.ItemType.Sample)); Assert.Equal(0, stats.GetStatusCount(ItemStatus.Good)); } @@ -240,7 +240,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal(1, newStats.GetHashCount(HashType.SHA384)); Assert.Equal(1, newStats.GetHashCount(HashType.SHA512)); Assert.Equal(1, newStats.GetHashCount(HashType.SpamSum)); - Assert.Equal(1, newStats.GetItemCount(ItemType.Rom)); + Assert.Equal(1, newStats.GetItemCount(Data.Models.Metadata.ItemType.Rom)); Assert.Equal(1, newStats.GetStatusCount(ItemStatus.Good)); } diff --git a/SabreTools.Metadata.DatFiles.Test/FormatsTests.cs b/SabreTools.Metadata.DatFiles.Test/FormatsTests.cs index 96b898de..9d32691a 100644 --- a/SabreTools.Metadata.DatFiles.Test/FormatsTests.cs +++ b/SabreTools.Metadata.DatFiles.Test/FormatsTests.cs @@ -1,7 +1,6 @@ using System; using System.Linq; using SabreTools.Metadata.DatFiles.Formats; -using SabreTools.Metadata.DatItems; using SabreTools.Metadata.DatItems.Formats; using Xunit; @@ -17,7 +16,7 @@ namespace SabreTools.Metadata.DatFiles.Test /// /// All defined item types /// - private static readonly ItemType[] AllTypes = Enum.GetValues(); + private static readonly Data.Models.Metadata.ItemType[] AllTypes = Enum.GetValues(); #endregion @@ -29,7 +28,7 @@ namespace SabreTools.Metadata.DatFiles.Test var datFile = new ArchiveDotOrg(null); var actual = datFile.SupportedTypes; Assert.True(actual.SequenceEqual([ - ItemType.Rom, + Data.Models.Metadata.ItemType.Rom, ])); } @@ -43,7 +42,7 @@ namespace SabreTools.Metadata.DatFiles.Test var datFile = new AttractMode(null); var actual = datFile.SupportedTypes; Assert.True(actual.SequenceEqual([ - ItemType.Rom, + Data.Models.Metadata.ItemType.Rom, ])); } @@ -71,19 +70,19 @@ namespace SabreTools.Metadata.DatFiles.Test var datFile = new ClrMamePro(null); var actual = datFile.SupportedTypes; Assert.True(actual.SequenceEqual([ - ItemType.Archive, - ItemType.BiosSet, - ItemType.Chip, - ItemType.DipSwitch, - ItemType.Disk, - ItemType.Display, - ItemType.Driver, - ItemType.Input, - ItemType.Media, - ItemType.Release, - ItemType.Rom, - ItemType.Sample, - ItemType.Sound, + Data.Models.Metadata.ItemType.Archive, + Data.Models.Metadata.ItemType.BiosSet, + Data.Models.Metadata.ItemType.Chip, + Data.Models.Metadata.ItemType.DipSwitch, + Data.Models.Metadata.ItemType.Disk, + Data.Models.Metadata.ItemType.Display, + Data.Models.Metadata.ItemType.Driver, + Data.Models.Metadata.ItemType.Input, + Data.Models.Metadata.ItemType.Media, + Data.Models.Metadata.ItemType.Release, + Data.Models.Metadata.ItemType.Rom, + Data.Models.Metadata.ItemType.Sample, + Data.Models.Metadata.ItemType.Sound, ])); } @@ -274,7 +273,7 @@ namespace SabreTools.Metadata.DatFiles.Test var datFile = new DosCenter(null); var actual = datFile.SupportedTypes; Assert.True(actual.SequenceEqual([ - ItemType.Rom, + Data.Models.Metadata.ItemType.Rom, ])); } @@ -304,7 +303,7 @@ namespace SabreTools.Metadata.DatFiles.Test var datFile = new EverdriveSMDB(null); var actual = datFile.SupportedTypes; Assert.True(actual.SequenceEqual([ - ItemType.Rom, + Data.Models.Metadata.ItemType.Rom, ])); } @@ -336,7 +335,7 @@ namespace SabreTools.Metadata.DatFiles.Test var datFile = new SfvFile(null); var actual = datFile.SupportedTypes; Assert.True(actual.SequenceEqual([ - ItemType.Rom, + Data.Models.Metadata.ItemType.Rom, ])); } @@ -361,7 +360,7 @@ namespace SabreTools.Metadata.DatFiles.Test var datFile = new Md2File(null); var actual = datFile.SupportedTypes; Assert.True(actual.SequenceEqual([ - ItemType.Rom, + Data.Models.Metadata.ItemType.Rom, ])); } @@ -386,7 +385,7 @@ namespace SabreTools.Metadata.DatFiles.Test var datFile = new Md4File(null); var actual = datFile.SupportedTypes; Assert.True(actual.SequenceEqual([ - ItemType.Rom, + Data.Models.Metadata.ItemType.Rom, ])); } @@ -411,9 +410,9 @@ namespace SabreTools.Metadata.DatFiles.Test var datFile = new Md5File(null); var actual = datFile.SupportedTypes; Assert.True(actual.SequenceEqual([ - ItemType.Disk, - ItemType.Media, - ItemType.Rom, + Data.Models.Metadata.ItemType.Disk, + Data.Models.Metadata.ItemType.Media, + Data.Models.Metadata.ItemType.Rom, ])); } @@ -468,7 +467,7 @@ namespace SabreTools.Metadata.DatFiles.Test var datFile = new RipeMD128File(null); var actual = datFile.SupportedTypes; Assert.True(actual.SequenceEqual([ - ItemType.Rom, + Data.Models.Metadata.ItemType.Rom, ])); } @@ -493,7 +492,7 @@ namespace SabreTools.Metadata.DatFiles.Test var datFile = new RipeMD160File(null); var actual = datFile.SupportedTypes; Assert.True(actual.SequenceEqual([ - ItemType.Rom, + Data.Models.Metadata.ItemType.Rom, ])); } @@ -518,9 +517,9 @@ namespace SabreTools.Metadata.DatFiles.Test var datFile = new Sha1File(null); var actual = datFile.SupportedTypes; Assert.True(actual.SequenceEqual([ - ItemType.Disk, - ItemType.Media, - ItemType.Rom, + Data.Models.Metadata.ItemType.Disk, + Data.Models.Metadata.ItemType.Media, + Data.Models.Metadata.ItemType.Rom, ])); } @@ -575,8 +574,8 @@ namespace SabreTools.Metadata.DatFiles.Test var datFile = new Sha256File(null); var actual = datFile.SupportedTypes; Assert.True(actual.SequenceEqual([ - ItemType.Media, - ItemType.Rom, + Data.Models.Metadata.ItemType.Media, + Data.Models.Metadata.ItemType.Rom, ])); } @@ -616,7 +615,7 @@ namespace SabreTools.Metadata.DatFiles.Test var datFile = new Sha384File(null); var actual = datFile.SupportedTypes; Assert.True(actual.SequenceEqual([ - ItemType.Rom, + Data.Models.Metadata.ItemType.Rom, ])); } @@ -641,7 +640,7 @@ namespace SabreTools.Metadata.DatFiles.Test var datFile = new Sha512File(null); var actual = datFile.SupportedTypes; Assert.True(actual.SequenceEqual([ - ItemType.Rom, + Data.Models.Metadata.ItemType.Rom, ])); } @@ -666,8 +665,8 @@ namespace SabreTools.Metadata.DatFiles.Test var datFile = new SpamSumFile(null); var actual = datFile.SupportedTypes; Assert.True(actual.SequenceEqual([ - ItemType.Media, - ItemType.Rom, + Data.Models.Metadata.ItemType.Media, + Data.Models.Metadata.ItemType.Rom, ])); } @@ -711,8 +710,8 @@ namespace SabreTools.Metadata.DatFiles.Test var datFile = new Listrom(null); var actual = datFile.SupportedTypes; Assert.True(actual.SequenceEqual([ - ItemType.Disk, - ItemType.Rom, + Data.Models.Metadata.ItemType.Disk, + Data.Models.Metadata.ItemType.Rom, ])); } @@ -758,26 +757,26 @@ namespace SabreTools.Metadata.DatFiles.Test var datFile = new Listxml(null); var actual = datFile.SupportedTypes; Assert.True(actual.SequenceEqual([ - ItemType.Adjuster, - ItemType.BiosSet, - ItemType.Chip, - ItemType.Condition, - ItemType.Configuration, - ItemType.Device, - ItemType.DeviceRef, - ItemType.DipSwitch, - ItemType.Disk, - ItemType.Display, - ItemType.Driver, - ItemType.Feature, - ItemType.Input, - ItemType.Port, - ItemType.RamOption, - ItemType.Rom, - ItemType.Sample, - ItemType.Slot, - ItemType.SoftwareList, - ItemType.Sound, + Data.Models.Metadata.ItemType.Adjuster, + Data.Models.Metadata.ItemType.BiosSet, + Data.Models.Metadata.ItemType.Chip, + Data.Models.Metadata.ItemType.Condition, + Data.Models.Metadata.ItemType.Configuration, + Data.Models.Metadata.ItemType.Device, + Data.Models.Metadata.ItemType.DeviceRef, + Data.Models.Metadata.ItemType.DipSwitch, + Data.Models.Metadata.ItemType.Disk, + Data.Models.Metadata.ItemType.Display, + Data.Models.Metadata.ItemType.Driver, + Data.Models.Metadata.ItemType.Feature, + Data.Models.Metadata.ItemType.Input, + Data.Models.Metadata.ItemType.Port, + Data.Models.Metadata.ItemType.RamOption, + Data.Models.Metadata.ItemType.Rom, + Data.Models.Metadata.ItemType.Sample, + Data.Models.Metadata.ItemType.Slot, + Data.Models.Metadata.ItemType.SoftwareList, + Data.Models.Metadata.ItemType.Sound, ])); } @@ -1070,16 +1069,16 @@ namespace SabreTools.Metadata.DatFiles.Test var datFile = new Logiqx(null, false); var actual = datFile.SupportedTypes; Assert.True(actual.SequenceEqual([ - ItemType.Archive, - ItemType.BiosSet, - ItemType.DeviceRef, - ItemType.Disk, - ItemType.Driver, - ItemType.Media, - ItemType.Release, - ItemType.Rom, - ItemType.Sample, - ItemType.SoftwareList, + Data.Models.Metadata.ItemType.Archive, + Data.Models.Metadata.ItemType.BiosSet, + Data.Models.Metadata.ItemType.DeviceRef, + Data.Models.Metadata.ItemType.Disk, + Data.Models.Metadata.ItemType.Driver, + Data.Models.Metadata.ItemType.Media, + Data.Models.Metadata.ItemType.Release, + Data.Models.Metadata.ItemType.Rom, + Data.Models.Metadata.ItemType.Sample, + Data.Models.Metadata.ItemType.SoftwareList, ])); } @@ -1263,7 +1262,7 @@ namespace SabreTools.Metadata.DatFiles.Test var datFile = new OfflineList(null); var actual = datFile.SupportedTypes; Assert.True(actual.SequenceEqual([ - ItemType.Rom, + Data.Models.Metadata.ItemType.Rom, ])); } @@ -1292,7 +1291,7 @@ namespace SabreTools.Metadata.DatFiles.Test var datFile = new OpenMSX(null); var actual = datFile.SupportedTypes; Assert.True(actual.SequenceEqual([ - ItemType.Rom, + Data.Models.Metadata.ItemType.Rom, ])); } @@ -1321,7 +1320,7 @@ namespace SabreTools.Metadata.DatFiles.Test var datFile = new RomCenter(null); var actual = datFile.SupportedTypes; Assert.True(actual.SequenceEqual([ - ItemType.Rom, + Data.Models.Metadata.ItemType.Rom, ])); } @@ -1375,9 +1374,9 @@ namespace SabreTools.Metadata.DatFiles.Test var datFile = new CommaSeparatedValue(null); var actual = datFile.SupportedTypes; Assert.True(actual.SequenceEqual([ - ItemType.Disk, - ItemType.Media, - ItemType.Rom, + Data.Models.Metadata.ItemType.Disk, + Data.Models.Metadata.ItemType.Media, + Data.Models.Metadata.ItemType.Rom, ])); } @@ -1433,9 +1432,9 @@ namespace SabreTools.Metadata.DatFiles.Test var datFile = new SemicolonSeparatedValue(null); var actual = datFile.SupportedTypes; Assert.True(actual.SequenceEqual([ - ItemType.Disk, - ItemType.Media, - ItemType.Rom, + Data.Models.Metadata.ItemType.Disk, + Data.Models.Metadata.ItemType.Media, + Data.Models.Metadata.ItemType.Rom, ])); } @@ -1491,9 +1490,9 @@ namespace SabreTools.Metadata.DatFiles.Test var datFile = new TabSeparatedValue(null); var actual = datFile.SupportedTypes; Assert.True(actual.SequenceEqual([ - ItemType.Disk, - ItemType.Media, - ItemType.Rom, + Data.Models.Metadata.ItemType.Disk, + Data.Models.Metadata.ItemType.Media, + Data.Models.Metadata.ItemType.Rom, ])); } @@ -1553,12 +1552,12 @@ namespace SabreTools.Metadata.DatFiles.Test var datFile = new Formats.SoftwareList(null); var actual = datFile.SupportedTypes; Assert.True(actual.SequenceEqual([ - ItemType.DipSwitch, - ItemType.Disk, - ItemType.Info, - ItemType.PartFeature, - ItemType.Rom, - ItemType.SharedFeat, + Data.Models.Metadata.ItemType.DipSwitch, + Data.Models.Metadata.ItemType.Disk, + Data.Models.Metadata.ItemType.Info, + Data.Models.Metadata.ItemType.PartFeature, + Data.Models.Metadata.ItemType.Rom, + Data.Models.Metadata.ItemType.SharedFeat, ])); } diff --git a/SabreTools.Metadata.DatFiles.Test/ItemDictionaryDBTests.cs b/SabreTools.Metadata.DatFiles.Test/ItemDictionaryDBTests.cs index 45b3a936..d0df6070 100644 --- a/SabreTools.Metadata.DatFiles.Test/ItemDictionaryDBTests.cs +++ b/SabreTools.Metadata.DatFiles.Test/ItemDictionaryDBTests.cs @@ -1004,7 +1004,7 @@ namespace SabreTools.Metadata.DatFiles.Test _ = dict.AddItem(item, machineIndex, sourceIndex, statsOnly: false); Assert.Equal(1, dict.DatStatistics.TotalCount); - Assert.Equal(1, dict.DatStatistics.GetItemCount(ItemType.Rom)); + Assert.Equal(1, dict.DatStatistics.GetItemCount(Data.Models.Metadata.ItemType.Rom)); Assert.Equal(12345, dict.DatStatistics.TotalSize); Assert.Equal(1, dict.DatStatistics.GetHashCount(HashType.CRC32)); Assert.Equal(0, dict.DatStatistics.GetHashCount(HashType.MD5)); @@ -1014,7 +1014,7 @@ namespace SabreTools.Metadata.DatFiles.Test dict.RecalculateStats(); Assert.Equal(1, dict.DatStatistics.TotalCount); - Assert.Equal(1, dict.DatStatistics.GetItemCount(ItemType.Rom)); + Assert.Equal(1, dict.DatStatistics.GetItemCount(Data.Models.Metadata.ItemType.Rom)); Assert.Equal(12345, dict.DatStatistics.TotalSize); Assert.Equal(1, dict.DatStatistics.GetHashCount(HashType.CRC32)); Assert.Equal(1, dict.DatStatistics.GetHashCount(HashType.MD5)); diff --git a/SabreTools.Metadata.DatFiles.Test/ItemDictionaryTests.cs b/SabreTools.Metadata.DatFiles.Test/ItemDictionaryTests.cs index 6c78640f..6b6bbd25 100644 --- a/SabreTools.Metadata.DatFiles.Test/ItemDictionaryTests.cs +++ b/SabreTools.Metadata.DatFiles.Test/ItemDictionaryTests.cs @@ -797,7 +797,7 @@ namespace SabreTools.Metadata.DatFiles.Test _ = dict.AddItem(item, statsOnly: false); Assert.Equal(1, dict.DatStatistics.TotalCount); - Assert.Equal(1, dict.DatStatistics.GetItemCount(ItemType.Rom)); + Assert.Equal(1, dict.DatStatistics.GetItemCount(Data.Models.Metadata.ItemType.Rom)); Assert.Equal(12345, dict.DatStatistics.TotalSize); Assert.Equal(1, dict.DatStatistics.GetHashCount(HashType.CRC32)); Assert.Equal(0, dict.DatStatistics.GetHashCount(HashType.MD5)); @@ -807,7 +807,7 @@ namespace SabreTools.Metadata.DatFiles.Test dict.RecalculateStats(); Assert.Equal(1, dict.DatStatistics.TotalCount); - Assert.Equal(1, dict.DatStatistics.GetItemCount(ItemType.Rom)); + Assert.Equal(1, dict.DatStatistics.GetItemCount(Data.Models.Metadata.ItemType.Rom)); Assert.Equal(12345, dict.DatStatistics.TotalSize); Assert.Equal(1, dict.DatStatistics.GetHashCount(HashType.CRC32)); Assert.Equal(1, dict.DatStatistics.GetHashCount(HashType.MD5)); diff --git a/SabreTools.Metadata.DatFiles/DatFile.Splitting.cs b/SabreTools.Metadata.DatFiles/DatFile.Splitting.cs index 79ba0702..be6c7c63 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.Splitting.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.Splitting.cs @@ -702,7 +702,7 @@ namespace SabreTools.Metadata.DatFiles foreach (DatItem item in devItems) { // If the parent machine doesn't already contain this item, add it - if (!datItems.Exists(i => i.ReadString(Data.Models.Metadata.DatItem.TypeKey) == item.ReadString(Data.Models.Metadata.DatItem.TypeKey) && i.GetName() == item.GetName())) + if (!datItems.Exists(i => i.ItemType == item.ItemType && i.GetName() == item.GetName())) { // Set that we found new items foundnew = true; @@ -752,7 +752,7 @@ namespace SabreTools.Metadata.DatFiles foreach (DatItem item in slotItems) { // If the parent machine doesn't already contain this item, add it - if (!datItems.Exists(i => i.ReadString(Data.Models.Metadata.DatItem.TypeKey) == item.ReadString(Data.Models.Metadata.DatItem.TypeKey) && i.GetName() == item.GetName())) + if (!datItems.Exists(i => i.ItemType == item.ItemType && i.GetName() == item.GetName())) { // Set that we found new items foundnew = true; @@ -870,7 +870,7 @@ namespace SabreTools.Metadata.DatFiles foreach (var item in devItems.Values) { // If the parent machine doesn't already contain this item, add it - if (!items.Values.Any(i => i.ReadString(Data.Models.Metadata.DatItem.TypeKey) == item.ReadString(Data.Models.Metadata.DatItem.TypeKey) + if (!items.Values.Any(i => i.ItemType == item.ItemType && i.GetName() == item.GetName())) { // Set that we found new items @@ -926,7 +926,7 @@ namespace SabreTools.Metadata.DatFiles foreach (var item in slotItems.Values) { // If the parent machine doesn't already contain this item, add it - if (!items.Values.Any(i => i.ReadString(Data.Models.Metadata.DatItem.TypeKey) == item.ReadString(Data.Models.Metadata.DatItem.TypeKey) + if (!items.Values.Any(i => i.ItemType == item.ItemType && i.GetName() == item.GetName())) { // Set that we found new items diff --git a/SabreTools.Metadata.DatFiles/DatFile.cs b/SabreTools.Metadata.DatFiles/DatFile.cs index 757c2fcd..f82fbb34 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.cs @@ -55,7 +55,7 @@ namespace SabreTools.Metadata.DatFiles /// /// List of supported types for writing /// - public abstract ItemType[] SupportedTypes { get; } + public abstract Data.Models.Metadata.ItemType[] SupportedTypes { get; } #endregion @@ -581,13 +581,13 @@ namespace SabreTools.Metadata.DatFiles protected internal static string FormatPrefixPostfix(DatItem item, Machine? machine, string fix) { // Initialize strings - string? type = item.ReadString(Data.Models.Metadata.DatItem.TypeKey); + Data.Models.Metadata.ItemType type = item.ItemType; string game = machine?.GetName() ?? string.Empty, manufacturer = machine?.ReadString(Data.Models.Metadata.Machine.ManufacturerKey) ?? string.Empty, publisher = machine?.ReadString(Data.Models.Metadata.Machine.PublisherKey) ?? string.Empty, category = machine?.ReadString(Data.Models.Metadata.Machine.CategoryKey) ?? string.Empty, - name = item.GetName() ?? type.AsItemType().AsStringValue() ?? string.Empty, + name = item.GetName() ?? type.AsStringValue() ?? string.Empty, crc16 = string.Empty, crc = string.Empty, crc64 = string.Empty, @@ -741,7 +741,7 @@ namespace SabreTools.Metadata.DatFiles foreach (DatItem datItem in datItems) { - ItemType itemType = datItem.ReadString(Data.Models.Metadata.DatItem.TypeKey).AsItemType(); + Data.Models.Metadata.ItemType itemType = datItem.ItemType; if (Array.Exists(SupportedTypes, t => t == itemType)) return true; } @@ -800,12 +800,12 @@ namespace SabreTools.Metadata.DatFiles // Get the last item name, if applicable string lastItemName = lastItem.GetName() - ?? lastItem.ReadString(Data.Models.Metadata.DatItem.TypeKey).AsItemType().AsStringValue() + ?? lastItem.ItemType.AsStringValue() ?? string.Empty; // Get the current item name, if applicable string datItemName = datItem.GetName() - ?? datItem.ReadString(Data.Models.Metadata.DatItem.TypeKey).AsItemType().AsStringValue() + ?? datItem.ItemType.AsStringValue() ?? string.Empty; // If the current item exactly matches the last item, then we don't add it @@ -897,12 +897,12 @@ namespace SabreTools.Metadata.DatFiles // Get the last item name, if applicable string lastItemName = lastItem.Value.Value.GetName() - ?? lastItem.Value.Value.ReadString(Data.Models.Metadata.DatItem.TypeKey).AsItemType().AsStringValue() + ?? lastItem.Value.Value.ItemType.AsStringValue() ?? string.Empty; // Get the current item name, if applicable string datItemName = datItem.Value.GetName() - ?? datItem.Value.ReadString(Data.Models.Metadata.DatItem.TypeKey).AsItemType().AsStringValue() + ?? datItem.Value.ItemType.AsStringValue() ?? string.Empty; // Get sources for both items @@ -1009,7 +1009,7 @@ namespace SabreTools.Metadata.DatFiles } // If we have an item type not in the list of supported values - ItemType itemType = datItem.ReadString(Data.Models.Metadata.DatItem.TypeKey).AsItemType(); + Data.Models.Metadata.ItemType itemType = datItem.ItemType; if (!Array.Exists(SupportedTypes, t => t == itemType)) { string itemString = JsonConvert.SerializeObject(datItem, Formatting.None); @@ -1182,8 +1182,8 @@ namespace SabreTools.Metadata.DatFiles return nc.Compare(xMachineName, yMachineName); // If types don't match - string? xType = x.ReadString(Data.Models.Metadata.DatItem.TypeKey); - string? yType = y.ReadString(Data.Models.Metadata.DatItem.TypeKey); + string? xType = x.ItemType.AsStringValue(); + string? yType = y.ItemType.AsStringValue(); if (xType != yType) return xType.AsItemType() - yType.AsItemType(); @@ -1239,8 +1239,8 @@ namespace SabreTools.Metadata.DatFiles return nc.Compare(xMachineName, yMachineName); // If types don't match - string? xType = x.Value.ReadString(Data.Models.Metadata.DatItem.TypeKey); - string? yType = y.Value.ReadString(Data.Models.Metadata.DatItem.TypeKey); + string? xType = x.Value.ItemType.AsStringValue(); + string? yType = y.Value.ItemType.AsStringValue(); if (xType != yType) return xType.AsItemType() - yType.AsItemType(); diff --git a/SabreTools.Metadata.DatFiles/DatStatistics.cs b/SabreTools.Metadata.DatFiles/DatStatistics.cs index 63eb73e9..ec010b03 100644 --- a/SabreTools.Metadata.DatFiles/DatStatistics.cs +++ b/SabreTools.Metadata.DatFiles/DatStatistics.cs @@ -22,7 +22,7 @@ namespace SabreTools.Metadata.DatFiles /// /// Number of items for each item type /// - private readonly Dictionary _itemCounts = []; + private readonly Dictionary _itemCounts = []; /// /// Number of items for each item status @@ -122,7 +122,7 @@ namespace SabreTools.Metadata.DatFiles RemovedCount++; // Increment the item count for the type - AddItemCount(item.ReadString(Data.Models.Metadata.DatItem.TypeKey).AsItemType()); + AddItemCount(item.ItemType); // Some item types require special processing switch (item) @@ -161,7 +161,7 @@ namespace SabreTools.Metadata.DatFiles RemovedCount++; // Increment the item count for the type - AddItemCount(item.ReadString(Data.Models.Metadata.DatItem.TypeKey).AsItemType()); + AddItemCount(item.ItemType); // Some item types require special processing switch (item) @@ -237,7 +237,7 @@ namespace SabreTools.Metadata.DatFiles /// /// Item type to retrieve /// The number of items of that type, if it exists - public long GetItemCount(ItemType itemType) + public long GetItemCount(Data.Models.Metadata.ItemType itemType) { lock (_itemCounts) { @@ -284,7 +284,7 @@ namespace SabreTools.Metadata.DatFiles RemovedCount--; // Decrement the item count for the type - RemoveItemCount(item.ReadString(Data.Models.Metadata.DatItem.TypeKey).AsItemType()); + RemoveItemCount(item.ItemType); // Some item types require special processing switch (item) @@ -329,7 +329,7 @@ namespace SabreTools.Metadata.DatFiles RemovedCount--; // Decrement the item count for the type - RemoveItemCount(item.ReadString(Data.Models.Metadata.DatItem.TypeKey).AsItemType()); + RemoveItemCount(item.ItemType); // Some item types require special processing switch (item) @@ -389,7 +389,7 @@ namespace SabreTools.Metadata.DatFiles /// /// Item type to increment /// Amount to increment by, defaults to 1 - private void AddItemCount(ItemType itemType, long interval = 1) + private void AddItemCount(Data.Models.Metadata.ItemType itemType, long interval = 1) { lock (_itemCounts) { @@ -580,7 +580,7 @@ namespace SabreTools.Metadata.DatFiles /// /// Item type to decrement /// Amount to increment by, defaults to 1 - private void RemoveItemCount(ItemType itemType, long interval = 1) + private void RemoveItemCount(Data.Models.Metadata.ItemType itemType, long interval = 1) { lock (_itemCounts) { diff --git a/SabreTools.Metadata.DatFiles/Formats/ArchiveDotOrg.cs b/SabreTools.Metadata.DatFiles/Formats/ArchiveDotOrg.cs index 5f20cdcb..256037bf 100644 --- a/SabreTools.Metadata.DatFiles/Formats/ArchiveDotOrg.cs +++ b/SabreTools.Metadata.DatFiles/Formats/ArchiveDotOrg.cs @@ -1,6 +1,4 @@ -using SabreTools.Metadata.DatItems; - -namespace SabreTools.Metadata.DatFiles.Formats +namespace SabreTools.Metadata.DatFiles.Formats { /// /// Represents a Archive.org file list @@ -8,9 +6,9 @@ namespace SabreTools.Metadata.DatFiles.Formats public sealed class ArchiveDotOrg : SerializableDatFile { /// - public override ItemType[] SupportedTypes + public override Data.Models.Metadata.ItemType[] SupportedTypes => [ - ItemType.Rom, + Data.Models.Metadata.ItemType.Rom, ]; /// diff --git a/SabreTools.Metadata.DatFiles/Formats/AttractMode.cs b/SabreTools.Metadata.DatFiles/Formats/AttractMode.cs index 90d74b76..68f24059 100644 --- a/SabreTools.Metadata.DatFiles/Formats/AttractMode.cs +++ b/SabreTools.Metadata.DatFiles/Formats/AttractMode.cs @@ -9,9 +9,9 @@ namespace SabreTools.Metadata.DatFiles.Formats public sealed class AttractMode : SerializableDatFile { /// - public override ItemType[] SupportedTypes + public override Data.Models.Metadata.ItemType[] SupportedTypes => [ - ItemType.Rom, + Data.Models.Metadata.ItemType.Rom, ]; /// diff --git a/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs b/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs index 69244997..7ecd1379 100644 --- a/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs +++ b/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs @@ -15,21 +15,21 @@ namespace SabreTools.Metadata.DatFiles.Formats #region Fields /// - public override ItemType[] SupportedTypes + public override Data.Models.Metadata.ItemType[] SupportedTypes => [ - ItemType.Archive, - ItemType.BiosSet, - ItemType.Chip, - ItemType.DipSwitch, - ItemType.Disk, - ItemType.Display, - ItemType.Driver, - ItemType.Input, - ItemType.Media, - ItemType.Release, - ItemType.Rom, - ItemType.Sample, - ItemType.Sound, + Data.Models.Metadata.ItemType.Archive, + Data.Models.Metadata.ItemType.BiosSet, + Data.Models.Metadata.ItemType.Chip, + Data.Models.Metadata.ItemType.DipSwitch, + Data.Models.Metadata.ItemType.Disk, + Data.Models.Metadata.ItemType.Display, + Data.Models.Metadata.ItemType.Driver, + Data.Models.Metadata.ItemType.Input, + Data.Models.Metadata.ItemType.Media, + Data.Models.Metadata.ItemType.Release, + Data.Models.Metadata.ItemType.Rom, + Data.Models.Metadata.ItemType.Sample, + Data.Models.Metadata.ItemType.Sound, ]; #endregion diff --git a/SabreTools.Metadata.DatFiles/Formats/DosCenter.cs b/SabreTools.Metadata.DatFiles/Formats/DosCenter.cs index e193b162..f008a551 100644 --- a/SabreTools.Metadata.DatFiles/Formats/DosCenter.cs +++ b/SabreTools.Metadata.DatFiles/Formats/DosCenter.cs @@ -10,9 +10,9 @@ namespace SabreTools.Metadata.DatFiles.Formats public sealed class DosCenter : SerializableDatFile { /// - public override ItemType[] SupportedTypes + public override Data.Models.Metadata.ItemType[] SupportedTypes => [ - ItemType.Rom, + Data.Models.Metadata.ItemType.Rom, ]; /// diff --git a/SabreTools.Metadata.DatFiles/Formats/EverdriveSmdb.cs b/SabreTools.Metadata.DatFiles/Formats/EverdriveSmdb.cs index 8b10d692..03f88f7a 100644 --- a/SabreTools.Metadata.DatFiles/Formats/EverdriveSmdb.cs +++ b/SabreTools.Metadata.DatFiles/Formats/EverdriveSmdb.cs @@ -10,9 +10,9 @@ namespace SabreTools.Metadata.DatFiles.Formats public sealed class EverdriveSMDB : SerializableDatFile { /// - public override ItemType[] SupportedTypes + public override Data.Models.Metadata.ItemType[] SupportedTypes => [ - ItemType.Rom, + Data.Models.Metadata.ItemType.Rom, ]; /// diff --git a/SabreTools.Metadata.DatFiles/Formats/Listrom.cs b/SabreTools.Metadata.DatFiles/Formats/Listrom.cs index 5e97faf5..234f9723 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Listrom.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Listrom.cs @@ -10,10 +10,10 @@ namespace SabreTools.Metadata.DatFiles.Formats public sealed class Listrom : SerializableDatFile { /// - public override ItemType[] SupportedTypes + public override Data.Models.Metadata.ItemType[] SupportedTypes => [ - ItemType.Disk, - ItemType.Rom, + Data.Models.Metadata.ItemType.Disk, + Data.Models.Metadata.ItemType.Rom, ]; /// diff --git a/SabreTools.Metadata.DatFiles/Formats/Listxml.cs b/SabreTools.Metadata.DatFiles/Formats/Listxml.cs index cd20f0c8..da230117 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Listxml.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Listxml.cs @@ -185,28 +185,28 @@ namespace SabreTools.Metadata.DatFiles.Formats #region Fields /// - public override ItemType[] SupportedTypes + public override Data.Models.Metadata.ItemType[] SupportedTypes => [ - ItemType.Adjuster, - ItemType.BiosSet, - ItemType.Chip, - ItemType.Condition, - ItemType.Configuration, - ItemType.Device, - ItemType.DeviceRef, - ItemType.DipSwitch, - ItemType.Disk, - ItemType.Display, - ItemType.Driver, - ItemType.Feature, - ItemType.Input, - ItemType.Port, - ItemType.RamOption, - ItemType.Rom, - ItemType.Sample, - ItemType.Slot, - ItemType.SoftwareList, - ItemType.Sound, + Data.Models.Metadata.ItemType.Adjuster, + Data.Models.Metadata.ItemType.BiosSet, + Data.Models.Metadata.ItemType.Chip, + Data.Models.Metadata.ItemType.Condition, + Data.Models.Metadata.ItemType.Configuration, + Data.Models.Metadata.ItemType.Device, + Data.Models.Metadata.ItemType.DeviceRef, + Data.Models.Metadata.ItemType.DipSwitch, + Data.Models.Metadata.ItemType.Disk, + Data.Models.Metadata.ItemType.Display, + Data.Models.Metadata.ItemType.Driver, + Data.Models.Metadata.ItemType.Feature, + Data.Models.Metadata.ItemType.Input, + Data.Models.Metadata.ItemType.Port, + Data.Models.Metadata.ItemType.RamOption, + Data.Models.Metadata.ItemType.Rom, + Data.Models.Metadata.ItemType.Sample, + Data.Models.Metadata.ItemType.Slot, + Data.Models.Metadata.ItemType.SoftwareList, + Data.Models.Metadata.ItemType.Sound, ]; #endregion diff --git a/SabreTools.Metadata.DatFiles/Formats/Logiqx.cs b/SabreTools.Metadata.DatFiles/Formats/Logiqx.cs index f5b86759..59113dbe 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Logiqx.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Logiqx.cs @@ -224,18 +224,18 @@ namespace SabreTools.Metadata.DatFiles.Formats #region Fields /// - public override ItemType[] SupportedTypes + public override Data.Models.Metadata.ItemType[] SupportedTypes => [ - ItemType.Archive, - ItemType.BiosSet, - ItemType.DeviceRef, - ItemType.Disk, - ItemType.Driver, - ItemType.Media, - ItemType.Release, - ItemType.Rom, - ItemType.Sample, - ItemType.SoftwareList, + Data.Models.Metadata.ItemType.Archive, + Data.Models.Metadata.ItemType.BiosSet, + Data.Models.Metadata.ItemType.DeviceRef, + Data.Models.Metadata.ItemType.Disk, + Data.Models.Metadata.ItemType.Driver, + Data.Models.Metadata.ItemType.Media, + Data.Models.Metadata.ItemType.Release, + Data.Models.Metadata.ItemType.Rom, + Data.Models.Metadata.ItemType.Sample, + Data.Models.Metadata.ItemType.SoftwareList, ]; /// diff --git a/SabreTools.Metadata.DatFiles/Formats/Md2File.cs b/SabreTools.Metadata.DatFiles/Formats/Md2File.cs index 489dbf4e..2ac078f0 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Md2File.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Md2File.cs @@ -11,9 +11,9 @@ namespace SabreTools.Metadata.DatFiles.Formats public sealed class Md2File : Hashfile { /// - public override ItemType[] SupportedTypes + public override Data.Models.Metadata.ItemType[] SupportedTypes => [ - ItemType.Rom, + Data.Models.Metadata.ItemType.Rom, ]; /// diff --git a/SabreTools.Metadata.DatFiles/Formats/Md4File.cs b/SabreTools.Metadata.DatFiles/Formats/Md4File.cs index 16e85eb0..344bab1b 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Md4File.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Md4File.cs @@ -11,9 +11,9 @@ namespace SabreTools.Metadata.DatFiles.Formats public sealed class Md4File : Hashfile { /// - public override ItemType[] SupportedTypes + public override Data.Models.Metadata.ItemType[] SupportedTypes => [ - ItemType.Rom, + Data.Models.Metadata.ItemType.Rom, ]; /// diff --git a/SabreTools.Metadata.DatFiles/Formats/Md5File.cs b/SabreTools.Metadata.DatFiles/Formats/Md5File.cs index ccd4d355..81a9e1b5 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Md5File.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Md5File.cs @@ -11,11 +11,11 @@ namespace SabreTools.Metadata.DatFiles.Formats public sealed class Md5File : Hashfile { /// - public override ItemType[] SupportedTypes + public override Data.Models.Metadata.ItemType[] SupportedTypes => [ - ItemType.Disk, - ItemType.Media, - ItemType.Rom, + Data.Models.Metadata.ItemType.Disk, + Data.Models.Metadata.ItemType.Media, + Data.Models.Metadata.ItemType.Rom, ]; /// diff --git a/SabreTools.Metadata.DatFiles/Formats/Missfile.cs b/SabreTools.Metadata.DatFiles/Formats/Missfile.cs index 4aa8aaca..c0b96d01 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Missfile.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Missfile.cs @@ -13,8 +13,8 @@ namespace SabreTools.Metadata.DatFiles.Formats public sealed class Missfile : DatFile { /// - public override ItemType[] SupportedTypes - => Enum.GetValues(typeof(ItemType)) as ItemType[] ?? []; + public override Data.Models.Metadata.ItemType[] SupportedTypes + => Enum.GetValues(typeof(Data.Models.Metadata.ItemType)) as Data.Models.Metadata.ItemType[] ?? []; /// /// Constructor designed for casting a base DatFile diff --git a/SabreTools.Metadata.DatFiles/Formats/OfflineList.cs b/SabreTools.Metadata.DatFiles/Formats/OfflineList.cs index 7a1cdd21..51cba1ae 100644 --- a/SabreTools.Metadata.DatFiles/Formats/OfflineList.cs +++ b/SabreTools.Metadata.DatFiles/Formats/OfflineList.cs @@ -10,9 +10,9 @@ namespace SabreTools.Metadata.DatFiles.Formats public sealed class OfflineList : SerializableDatFile { /// - public override ItemType[] SupportedTypes + public override Data.Models.Metadata.ItemType[] SupportedTypes => [ - ItemType.Rom, + Data.Models.Metadata.ItemType.Rom, ]; /// diff --git a/SabreTools.Metadata.DatFiles/Formats/OpenMSX.cs b/SabreTools.Metadata.DatFiles/Formats/OpenMSX.cs index e8dd9d24..cc0ed775 100644 --- a/SabreTools.Metadata.DatFiles/Formats/OpenMSX.cs +++ b/SabreTools.Metadata.DatFiles/Formats/OpenMSX.cs @@ -47,9 +47,9 @@ The softwaredb.xml file contains information about rom mapper types #region Fields /// - public override ItemType[] SupportedTypes + public override Data.Models.Metadata.ItemType[] SupportedTypes => [ - ItemType.Rom, + Data.Models.Metadata.ItemType.Rom, ]; #endregion diff --git a/SabreTools.Metadata.DatFiles/Formats/RipeMD128File.cs b/SabreTools.Metadata.DatFiles/Formats/RipeMD128File.cs index d3360791..3eaa2ac0 100644 --- a/SabreTools.Metadata.DatFiles/Formats/RipeMD128File.cs +++ b/SabreTools.Metadata.DatFiles/Formats/RipeMD128File.cs @@ -11,9 +11,9 @@ namespace SabreTools.Metadata.DatFiles.Formats public sealed class RipeMD128File : Hashfile { /// - public override ItemType[] SupportedTypes + public override Data.Models.Metadata.ItemType[] SupportedTypes => [ - ItemType.Rom, + Data.Models.Metadata.ItemType.Rom, ]; /// diff --git a/SabreTools.Metadata.DatFiles/Formats/RipeMD160File.cs b/SabreTools.Metadata.DatFiles/Formats/RipeMD160File.cs index e20483bd..44dcdf7a 100644 --- a/SabreTools.Metadata.DatFiles/Formats/RipeMD160File.cs +++ b/SabreTools.Metadata.DatFiles/Formats/RipeMD160File.cs @@ -11,9 +11,9 @@ namespace SabreTools.Metadata.DatFiles.Formats public sealed class RipeMD160File : Hashfile { /// - public override ItemType[] SupportedTypes + public override Data.Models.Metadata.ItemType[] SupportedTypes => [ - ItemType.Rom, + Data.Models.Metadata.ItemType.Rom, ]; /// diff --git a/SabreTools.Metadata.DatFiles/Formats/RomCenter.cs b/SabreTools.Metadata.DatFiles/Formats/RomCenter.cs index fff1933d..06da3fb8 100644 --- a/SabreTools.Metadata.DatFiles/Formats/RomCenter.cs +++ b/SabreTools.Metadata.DatFiles/Formats/RomCenter.cs @@ -10,9 +10,9 @@ namespace SabreTools.Metadata.DatFiles.Formats public sealed class RomCenter : SerializableDatFile { /// - public override ItemType[] SupportedTypes + public override Data.Models.Metadata.ItemType[] SupportedTypes => [ - ItemType.Rom, + Data.Models.Metadata.ItemType.Rom, ]; /// diff --git a/SabreTools.Metadata.DatFiles/Formats/SabreJSON.cs b/SabreTools.Metadata.DatFiles/Formats/SabreJSON.cs index a2666e43..44c37e51 100644 --- a/SabreTools.Metadata.DatFiles/Formats/SabreJSON.cs +++ b/SabreTools.Metadata.DatFiles/Formats/SabreJSON.cs @@ -19,8 +19,12 @@ namespace SabreTools.Metadata.DatFiles.Formats public sealed class SabreJSON : DatFile { /// - public override ItemType[] SupportedTypes - => Enum.GetValues(typeof(ItemType)) as ItemType[] ?? []; + public override Data.Models.Metadata.ItemType[] SupportedTypes +#if NET5_0_OR_GREATER + => Enum.GetValues(); +#else + => Enum.GetValues(typeof(Data.Models.Metadata.ItemType)) as Data.Models.Metadata.ItemType[] ?? []; +#endif /// /// Constructor designed for casting a base DatFile @@ -250,140 +254,144 @@ namespace SabreTools.Metadata.DatFiles.Formats switch (datItemObj.Value("type").AsItemType()) { - case ItemType.Adjuster: + case Data.Models.Metadata.ItemType.Adjuster: datItem = datItemObj.ToObject(); break; - case ItemType.Analog: + case Data.Models.Metadata.ItemType.Analog: datItem = datItemObj.ToObject(); break; - case ItemType.Archive: + case Data.Models.Metadata.ItemType.Archive: datItem = datItemObj.ToObject(); break; - case ItemType.BiosSet: + case Data.Models.Metadata.ItemType.BiosSet: datItem = datItemObj.ToObject(); break; - case ItemType.Blank: + case Data.Models.Metadata.ItemType.Blank: datItem = datItemObj.ToObject(); break; - case ItemType.Chip: + case Data.Models.Metadata.ItemType.Chip: datItem = datItemObj.ToObject(); break; - case ItemType.Condition: + case Data.Models.Metadata.ItemType.Condition: datItem = datItemObj.ToObject(); break; - case ItemType.Configuration: + case Data.Models.Metadata.ItemType.Configuration: datItem = datItemObj.ToObject(); break; - case ItemType.ConfLocation: + case Data.Models.Metadata.ItemType.ConfLocation: datItem = datItemObj.ToObject(); break; - case ItemType.ConfSetting: + case Data.Models.Metadata.ItemType.ConfSetting: datItem = datItemObj.ToObject(); break; - case ItemType.Control: + case Data.Models.Metadata.ItemType.Control: datItem = datItemObj.ToObject(); break; - case ItemType.DataArea: + case Data.Models.Metadata.ItemType.DataArea: datItem = datItemObj.ToObject(); break; - case ItemType.Device: + case Data.Models.Metadata.ItemType.Device: datItem = datItemObj.ToObject(); break; - case ItemType.DeviceRef: + case Data.Models.Metadata.ItemType.DeviceRef: datItem = datItemObj.ToObject(); break; - case ItemType.DipLocation: + case Data.Models.Metadata.ItemType.DipLocation: datItem = datItemObj.ToObject(); break; - case ItemType.DipValue: + case Data.Models.Metadata.ItemType.DipValue: datItem = datItemObj.ToObject(); break; - case ItemType.DipSwitch: + case Data.Models.Metadata.ItemType.DipSwitch: datItem = datItemObj.ToObject(); break; - case ItemType.Disk: + case Data.Models.Metadata.ItemType.Disk: datItem = datItemObj.ToObject(); break; - case ItemType.DiskArea: + case Data.Models.Metadata.ItemType.DiskArea: datItem = datItemObj.ToObject(); break; - case ItemType.Display: + case Data.Models.Metadata.ItemType.Display: datItem = datItemObj.ToObject(); break; - case ItemType.Driver: + case Data.Models.Metadata.ItemType.Driver: datItem = datItemObj.ToObject(); break; - case ItemType.Extension: + case Data.Models.Metadata.ItemType.Extension: datItem = datItemObj.ToObject(); break; - case ItemType.Feature: + case Data.Models.Metadata.ItemType.Feature: datItem = datItemObj.ToObject(); break; - case ItemType.File: + case Data.Models.Metadata.ItemType.File: datItem = datItemObj.ToObject(); break; - case ItemType.Info: + case Data.Models.Metadata.ItemType.Info: datItem = datItemObj.ToObject(); break; - case ItemType.Input: + case Data.Models.Metadata.ItemType.Input: datItem = datItemObj.ToObject(); break; - case ItemType.Instance: + case Data.Models.Metadata.ItemType.Instance: datItem = datItemObj.ToObject(); break; - case ItemType.Media: + case Data.Models.Metadata.ItemType.Media: datItem = datItemObj.ToObject(); break; - case ItemType.Original: + case Data.Models.Metadata.ItemType.Original: // Cannot be converted to a DatItem break; - case ItemType.Part: + case Data.Models.Metadata.ItemType.Part: datItem = datItemObj.ToObject(); break; - case ItemType.PartFeature: + case Data.Models.Metadata.ItemType.PartFeature: datItem = datItemObj.ToObject(); break; - case ItemType.Port: + case Data.Models.Metadata.ItemType.Port: datItem = datItemObj.ToObject(); break; - case ItemType.RamOption: + case Data.Models.Metadata.ItemType.RamOption: datItem = datItemObj.ToObject(); break; - case ItemType.Release: + case Data.Models.Metadata.ItemType.Release: datItem = datItemObj.ToObject(); break; - case ItemType.ReleaseDetails: + case Data.Models.Metadata.ItemType.ReleaseDetails: datItem = datItemObj.ToObject(); break; - case ItemType.Rom: + case Data.Models.Metadata.ItemType.Rom: datItem = datItemObj.ToObject(); break; - case ItemType.Sample: + case Data.Models.Metadata.ItemType.Sample: datItem = datItemObj.ToObject(); break; - case ItemType.Serials: + case Data.Models.Metadata.ItemType.Serials: datItem = datItemObj.ToObject(); break; - case ItemType.SharedFeat: + case Data.Models.Metadata.ItemType.SharedFeat: datItem = datItemObj.ToObject(); break; - case ItemType.Slot: + case Data.Models.Metadata.ItemType.Slot: datItem = datItemObj.ToObject(); break; - case ItemType.SlotOption: + case Data.Models.Metadata.ItemType.SlotOption: datItem = datItemObj.ToObject(); break; - case ItemType.SoftwareList: + case Data.Models.Metadata.ItemType.SoftwareList: datItem = datItemObj.ToObject(); break; - case ItemType.Sound: + case Data.Models.Metadata.ItemType.Sound: datItem = datItemObj.ToObject(); break; - case ItemType.SourceDetails: + case Data.Models.Metadata.ItemType.SourceDetails: datItem = datItemObj.ToObject(); break; - case ItemType.NULL: + // TODO: Implement these? + case Data.Models.Metadata.ItemType.Dump: + case Data.Models.Metadata.ItemType.Software: + case Data.Models.Metadata.ItemType.Video: + case Data.Models.Metadata.ItemType.NULL: default: // This should never happen break; diff --git a/SabreTools.Metadata.DatFiles/Formats/SabreXML.cs b/SabreTools.Metadata.DatFiles/Formats/SabreXML.cs index a51ed6df..a34b5fea 100644 --- a/SabreTools.Metadata.DatFiles/Formats/SabreXML.cs +++ b/SabreTools.Metadata.DatFiles/Formats/SabreXML.cs @@ -18,11 +18,11 @@ namespace SabreTools.Metadata.DatFiles.Formats public sealed class SabreXML : DatFile { /// - public override ItemType[] SupportedTypes + public override Data.Models.Metadata.ItemType[] SupportedTypes #if NET5_0_OR_GREATER - => Enum.GetValues(); + => Enum.GetValues(); #else - => Enum.GetValues(typeof(ItemType)) as ItemType[] ?? []; + => Enum.GetValues(typeof(Data.Models.Metadata.ItemType)) as Data.Models.Metadata.ItemType[] ?? []; #endif /// diff --git a/SabreTools.Metadata.DatFiles/Formats/SeparatedValue.cs b/SabreTools.Metadata.DatFiles/Formats/SeparatedValue.cs index 7310823b..86ccd46a 100644 --- a/SabreTools.Metadata.DatFiles/Formats/SeparatedValue.cs +++ b/SabreTools.Metadata.DatFiles/Formats/SeparatedValue.cs @@ -15,11 +15,11 @@ namespace SabreTools.Metadata.DatFiles.Formats #region Fields /// - public override ItemType[] SupportedTypes + public override Data.Models.Metadata.ItemType[] SupportedTypes => [ - ItemType.Disk, - ItemType.Media, - ItemType.Rom, + Data.Models.Metadata.ItemType.Disk, + Data.Models.Metadata.ItemType.Media, + Data.Models.Metadata.ItemType.Rom, ]; /// diff --git a/SabreTools.Metadata.DatFiles/Formats/SfvFile.cs b/SabreTools.Metadata.DatFiles/Formats/SfvFile.cs index 8f577769..9a16b416 100644 --- a/SabreTools.Metadata.DatFiles/Formats/SfvFile.cs +++ b/SabreTools.Metadata.DatFiles/Formats/SfvFile.cs @@ -11,9 +11,9 @@ namespace SabreTools.Metadata.DatFiles.Formats public sealed class SfvFile : Hashfile { /// - public override ItemType[] SupportedTypes + public override Data.Models.Metadata.ItemType[] SupportedTypes => [ - ItemType.Rom, + Data.Models.Metadata.ItemType.Rom, ]; /// diff --git a/SabreTools.Metadata.DatFiles/Formats/Sha1File.cs b/SabreTools.Metadata.DatFiles/Formats/Sha1File.cs index 7bbc4e2c..00891709 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Sha1File.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Sha1File.cs @@ -11,11 +11,11 @@ namespace SabreTools.Metadata.DatFiles.Formats public sealed class Sha1File : Hashfile { /// - public override ItemType[] SupportedTypes + public override Data.Models.Metadata.ItemType[] SupportedTypes => [ - ItemType.Disk, - ItemType.Media, - ItemType.Rom, + Data.Models.Metadata.ItemType.Disk, + Data.Models.Metadata.ItemType.Media, + Data.Models.Metadata.ItemType.Rom, ]; /// diff --git a/SabreTools.Metadata.DatFiles/Formats/Sha256File.cs b/SabreTools.Metadata.DatFiles/Formats/Sha256File.cs index b65b4c99..a0d90e3a 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Sha256File.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Sha256File.cs @@ -11,10 +11,10 @@ namespace SabreTools.Metadata.DatFiles.Formats public sealed class Sha256File : Hashfile { /// - public override ItemType[] SupportedTypes + public override Data.Models.Metadata.ItemType[] SupportedTypes => [ - ItemType.Media, - ItemType.Rom, + Data.Models.Metadata.ItemType.Media, + Data.Models.Metadata.ItemType.Rom, ]; /// diff --git a/SabreTools.Metadata.DatFiles/Formats/Sha384File.cs b/SabreTools.Metadata.DatFiles/Formats/Sha384File.cs index d3ac102c..1b165af9 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Sha384File.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Sha384File.cs @@ -11,9 +11,9 @@ namespace SabreTools.Metadata.DatFiles.Formats public sealed class Sha384File : Hashfile { /// - public override ItemType[] SupportedTypes + public override Data.Models.Metadata.ItemType[] SupportedTypes => [ - ItemType.Rom, + Data.Models.Metadata.ItemType.Rom, ]; /// diff --git a/SabreTools.Metadata.DatFiles/Formats/Sha512File.cs b/SabreTools.Metadata.DatFiles/Formats/Sha512File.cs index 26f5ab07..0428d0d2 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Sha512File.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Sha512File.cs @@ -11,9 +11,9 @@ namespace SabreTools.Metadata.DatFiles.Formats public sealed class Sha512File : Hashfile { /// - public override ItemType[] SupportedTypes + public override Data.Models.Metadata.ItemType[] SupportedTypes => [ - ItemType.Rom, + Data.Models.Metadata.ItemType.Rom, ]; /// diff --git a/SabreTools.Metadata.DatFiles/Formats/SoftwareList.cs b/SabreTools.Metadata.DatFiles/Formats/SoftwareList.cs index 64332ce0..66db7703 100644 --- a/SabreTools.Metadata.DatFiles/Formats/SoftwareList.cs +++ b/SabreTools.Metadata.DatFiles/Formats/SoftwareList.cs @@ -78,14 +78,14 @@ namespace SabreTools.Metadata.DatFiles.Formats #region Fields /// - public override ItemType[] SupportedTypes + public override Data.Models.Metadata.ItemType[] SupportedTypes => [ - ItemType.DipSwitch, - ItemType.Disk, - ItemType.Info, - ItemType.PartFeature, - ItemType.Rom, - ItemType.SharedFeat, + Data.Models.Metadata.ItemType.DipSwitch, + Data.Models.Metadata.ItemType.Disk, + Data.Models.Metadata.ItemType.Info, + Data.Models.Metadata.ItemType.PartFeature, + Data.Models.Metadata.ItemType.Rom, + Data.Models.Metadata.ItemType.SharedFeat, ]; #endregion diff --git a/SabreTools.Metadata.DatFiles/Formats/SpamSumFile.cs b/SabreTools.Metadata.DatFiles/Formats/SpamSumFile.cs index eb4f30f4..1ead5e31 100644 --- a/SabreTools.Metadata.DatFiles/Formats/SpamSumFile.cs +++ b/SabreTools.Metadata.DatFiles/Formats/SpamSumFile.cs @@ -11,10 +11,10 @@ namespace SabreTools.Metadata.DatFiles.Formats public sealed class SpamSumFile : Hashfile { /// - public override ItemType[] SupportedTypes + public override Data.Models.Metadata.ItemType[] SupportedTypes => [ - ItemType.Media, - ItemType.Rom, + Data.Models.Metadata.ItemType.Media, + Data.Models.Metadata.ItemType.Rom, ]; /// diff --git a/SabreTools.Metadata.DatFiles/ItemDictionary.cs b/SabreTools.Metadata.DatFiles/ItemDictionary.cs index 12131826..4ab04d2e 100644 --- a/SabreTools.Metadata.DatFiles/ItemDictionary.cs +++ b/SabreTools.Metadata.DatFiles/ItemDictionary.cs @@ -661,9 +661,9 @@ namespace SabreTools.Metadata.DatFiles private ItemKey GetBestAvailable() { // Get the required counts - long diskCount = DatStatistics.GetItemCount(ItemType.Disk); - long mediaCount = DatStatistics.GetItemCount(ItemType.Media); - long romCount = DatStatistics.GetItemCount(ItemType.Rom); + long diskCount = DatStatistics.GetItemCount(Data.Models.Metadata.ItemType.Disk); + long mediaCount = DatStatistics.GetItemCount(Data.Models.Metadata.ItemType.Media); + long romCount = DatStatistics.GetItemCount(Data.Models.Metadata.ItemType.Rom); long nodumpCount = DatStatistics.GetStatusCount(ItemStatus.Nodump); // If all items are supposed to have a SHA-512, we bucket by that @@ -863,10 +863,10 @@ namespace SabreTools.Metadata.DatFiles return nc.Compare(xMachineName, yMachineName); // If types don't match - string? xType = x.ReadString(Data.Models.Metadata.DatItem.TypeKey); - string? yType = y.ReadString(Data.Models.Metadata.DatItem.TypeKey); + Data.Models.Metadata.ItemType xType = x.ItemType; + Data.Models.Metadata.ItemType yType = y.ItemType; if (xType != yType) - return xType.AsItemType() - yType.AsItemType(); + return xType - yType; // If directory names don't match string? xDirectoryName = Path.GetDirectoryName(TextHelper.RemovePathUnsafeCharacters(x.GetName() ?? string.Empty)); diff --git a/SabreTools.Metadata.DatFiles/ItemDictionaryDB.cs b/SabreTools.Metadata.DatFiles/ItemDictionaryDB.cs index cd9161ff..91813283 100644 --- a/SabreTools.Metadata.DatFiles/ItemDictionaryDB.cs +++ b/SabreTools.Metadata.DatFiles/ItemDictionaryDB.cs @@ -976,9 +976,9 @@ namespace SabreTools.Metadata.DatFiles private ItemKey GetBestAvailable() { // Get the required counts - long diskCount = DatStatistics.GetItemCount(ItemType.Disk); - long mediaCount = DatStatistics.GetItemCount(ItemType.Media); - long romCount = DatStatistics.GetItemCount(ItemType.Rom); + long diskCount = DatStatistics.GetItemCount(Data.Models.Metadata.ItemType.Disk); + long mediaCount = DatStatistics.GetItemCount(Data.Models.Metadata.ItemType.Media); + long romCount = DatStatistics.GetItemCount(Data.Models.Metadata.ItemType.Rom); long nodumpCount = DatStatistics.GetStatusCount(ItemStatus.Nodump); // If all items are supposed to have a SHA-512, we bucket by that @@ -1197,10 +1197,10 @@ namespace SabreTools.Metadata.DatFiles return nc.Compare(xMachineName, yMachineName); // If types don't match - string? xType = x.Value.ReadString(Data.Models.Metadata.DatItem.TypeKey); - string? yType = y.Value.ReadString(Data.Models.Metadata.DatItem.TypeKey); + Data.Models.Metadata.ItemType xType = x.Value.ItemType; + Data.Models.Metadata.ItemType yType = y.Value.ItemType; if (xType != yType) - return xType.AsItemType() - yType.AsItemType(); + return xType - yType; // If directory names don't match string? xDirectoryName = Path.GetDirectoryName(TextHelper.RemovePathUnsafeCharacters(x.Value.GetName())); diff --git a/SabreTools.Metadata.DatItems.Test/DatItemTests.cs b/SabreTools.Metadata.DatItems.Test/DatItemTests.cs index 36c66ca4..df6b29cc 100644 --- a/SabreTools.Metadata.DatItems.Test/DatItemTests.cs +++ b/SabreTools.Metadata.DatItems.Test/DatItemTests.cs @@ -23,7 +23,7 @@ namespace SabreTools.Metadata.DatItems.Test { private readonly string? _nameKey; - protected override ItemType ItemType => ItemType.Blank; + internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Blank; public TestDatItem() => _nameKey = TestDatItemModel.NameKey; diff --git a/SabreTools.Metadata.DatItems.Test/ExtensionsTests.cs b/SabreTools.Metadata.DatItems.Test/ExtensionsTests.cs index dfb28c81..26473563 100644 --- a/SabreTools.Metadata.DatItems.Test/ExtensionsTests.cs +++ b/SabreTools.Metadata.DatItems.Test/ExtensionsTests.cs @@ -7,63 +7,63 @@ namespace SabreTools.Metadata.DatItems.Test #region String to Enum [Theory] - [InlineData(null, ItemType.NULL)] - [InlineData("adjuster", ItemType.Adjuster)] - [InlineData("analog", ItemType.Analog)] - [InlineData("archive", ItemType.Archive)] - [InlineData("biosset", ItemType.BiosSet)] - [InlineData("blank", ItemType.Blank)] - [InlineData("chip", ItemType.Chip)] - [InlineData("condition", ItemType.Condition)] - [InlineData("configuration", ItemType.Configuration)] - [InlineData("conflocation", ItemType.ConfLocation)] - [InlineData("confsetting", ItemType.ConfSetting)] - [InlineData("control", ItemType.Control)] - [InlineData("dataarea", ItemType.DataArea)] - [InlineData("device", ItemType.Device)] - [InlineData("deviceref", ItemType.DeviceRef)] - [InlineData("device_ref", ItemType.DeviceRef)] - [InlineData("diplocation", ItemType.DipLocation)] - [InlineData("dipswitch", ItemType.DipSwitch)] - [InlineData("dipvalue", ItemType.DipValue)] - [InlineData("disk", ItemType.Disk)] - [InlineData("diskarea", ItemType.DiskArea)] - [InlineData("display", ItemType.Display)] - [InlineData("driver", ItemType.Driver)] - [InlineData("extension", ItemType.Extension)] - [InlineData("feature", ItemType.Feature)] - [InlineData("file", ItemType.File)] - [InlineData("info", ItemType.Info)] - [InlineData("input", ItemType.Input)] - [InlineData("instance", ItemType.Instance)] - [InlineData("media", ItemType.Media)] - [InlineData("part", ItemType.Part)] - [InlineData("partfeature", ItemType.PartFeature)] - [InlineData("part_feature", ItemType.PartFeature)] - [InlineData("port", ItemType.Port)] - [InlineData("ramoption", ItemType.RamOption)] - [InlineData("ram_option", ItemType.RamOption)] - [InlineData("release", ItemType.Release)] - [InlineData("releasedetails", ItemType.ReleaseDetails)] - [InlineData("release_details", ItemType.ReleaseDetails)] - [InlineData("rom", ItemType.Rom)] - [InlineData("sample", ItemType.Sample)] - [InlineData("serials", ItemType.Serials)] - [InlineData("sharedfeat", ItemType.SharedFeat)] - [InlineData("shared_feat", ItemType.SharedFeat)] - [InlineData("sharedfeature", ItemType.SharedFeat)] - [InlineData("shared_feature", ItemType.SharedFeat)] - [InlineData("slot", ItemType.Slot)] - [InlineData("slotoption", ItemType.SlotOption)] - [InlineData("slot_option", ItemType.SlotOption)] - [InlineData("softwarelist", ItemType.SoftwareList)] - [InlineData("software_list", ItemType.SoftwareList)] - [InlineData("sound", ItemType.Sound)] - [InlineData("sourcedetails", ItemType.SourceDetails)] - [InlineData("source_details", ItemType.SourceDetails)] - public void AsItemTypeTest(string? field, ItemType expected) + [InlineData(null, Data.Models.Metadata.ItemType.NULL)] + [InlineData("adjuster", Data.Models.Metadata.ItemType.Adjuster)] + [InlineData("analog", Data.Models.Metadata.ItemType.Analog)] + [InlineData("archive", Data.Models.Metadata.ItemType.Archive)] + [InlineData("biosset", Data.Models.Metadata.ItemType.BiosSet)] + [InlineData("blank", Data.Models.Metadata.ItemType.Blank)] + [InlineData("chip", Data.Models.Metadata.ItemType.Chip)] + [InlineData("condition", Data.Models.Metadata.ItemType.Condition)] + [InlineData("configuration", Data.Models.Metadata.ItemType.Configuration)] + [InlineData("conflocation", Data.Models.Metadata.ItemType.ConfLocation)] + [InlineData("confsetting", Data.Models.Metadata.ItemType.ConfSetting)] + [InlineData("control", Data.Models.Metadata.ItemType.Control)] + [InlineData("dataarea", Data.Models.Metadata.ItemType.DataArea)] + [InlineData("device", Data.Models.Metadata.ItemType.Device)] + [InlineData("deviceref", Data.Models.Metadata.ItemType.DeviceRef)] + [InlineData("device_ref", Data.Models.Metadata.ItemType.DeviceRef)] + [InlineData("diplocation", Data.Models.Metadata.ItemType.DipLocation)] + [InlineData("dipswitch", Data.Models.Metadata.ItemType.DipSwitch)] + [InlineData("dipvalue", Data.Models.Metadata.ItemType.DipValue)] + [InlineData("disk", Data.Models.Metadata.ItemType.Disk)] + [InlineData("diskarea", Data.Models.Metadata.ItemType.DiskArea)] + [InlineData("display", Data.Models.Metadata.ItemType.Display)] + [InlineData("driver", Data.Models.Metadata.ItemType.Driver)] + [InlineData("extension", Data.Models.Metadata.ItemType.Extension)] + [InlineData("feature", Data.Models.Metadata.ItemType.Feature)] + [InlineData("file", Data.Models.Metadata.ItemType.File)] + [InlineData("info", Data.Models.Metadata.ItemType.Info)] + [InlineData("input", Data.Models.Metadata.ItemType.Input)] + [InlineData("instance", Data.Models.Metadata.ItemType.Instance)] + [InlineData("media", Data.Models.Metadata.ItemType.Media)] + [InlineData("part", Data.Models.Metadata.ItemType.Part)] + [InlineData("partfeature", Data.Models.Metadata.ItemType.PartFeature)] + [InlineData("part_feature", Data.Models.Metadata.ItemType.PartFeature)] + [InlineData("port", Data.Models.Metadata.ItemType.Port)] + [InlineData("ramoption", Data.Models.Metadata.ItemType.RamOption)] + [InlineData("ram_option", Data.Models.Metadata.ItemType.RamOption)] + [InlineData("release", Data.Models.Metadata.ItemType.Release)] + [InlineData("releasedetails", Data.Models.Metadata.ItemType.ReleaseDetails)] + [InlineData("release_details", Data.Models.Metadata.ItemType.ReleaseDetails)] + [InlineData("rom", Data.Models.Metadata.ItemType.Rom)] + [InlineData("sample", Data.Models.Metadata.ItemType.Sample)] + [InlineData("serials", Data.Models.Metadata.ItemType.Serials)] + [InlineData("sharedfeat", Data.Models.Metadata.ItemType.SharedFeat)] + [InlineData("shared_feat", Data.Models.Metadata.ItemType.SharedFeat)] + [InlineData("sharedfeature", Data.Models.Metadata.ItemType.SharedFeat)] + [InlineData("shared_feature", Data.Models.Metadata.ItemType.SharedFeat)] + [InlineData("slot", Data.Models.Metadata.ItemType.Slot)] + [InlineData("slotoption", Data.Models.Metadata.ItemType.SlotOption)] + [InlineData("slot_option", Data.Models.Metadata.ItemType.SlotOption)] + [InlineData("softwarelist", Data.Models.Metadata.ItemType.SoftwareList)] + [InlineData("software_list", Data.Models.Metadata.ItemType.SoftwareList)] + [InlineData("sound", Data.Models.Metadata.ItemType.Sound)] + [InlineData("sourcedetails", Data.Models.Metadata.ItemType.SourceDetails)] + [InlineData("source_details", Data.Models.Metadata.ItemType.SourceDetails)] + public void AsItemTypeTest(string? field, Data.Models.Metadata.ItemType expected) { - ItemType actual = field.AsItemType(); + Data.Models.Metadata.ItemType actual = field.AsItemType(); Assert.Equal(expected, actual); } @@ -86,51 +86,51 @@ namespace SabreTools.Metadata.DatItems.Test #region Enum to String [Theory] - [InlineData(ItemType.NULL, null)] - [InlineData(ItemType.Adjuster, "adjuster")] - [InlineData(ItemType.Analog, "analog")] - [InlineData(ItemType.Archive, "archive")] - [InlineData(ItemType.BiosSet, "biosset")] - [InlineData(ItemType.Blank, "blank")] - [InlineData(ItemType.Chip, "chip")] - [InlineData(ItemType.Condition, "condition")] - [InlineData(ItemType.Configuration, "configuration")] - [InlineData(ItemType.ConfLocation, "conflocation")] - [InlineData(ItemType.ConfSetting, "confsetting")] - [InlineData(ItemType.Control, "control")] - [InlineData(ItemType.DataArea, "dataarea")] - [InlineData(ItemType.Device, "device")] - [InlineData(ItemType.DeviceRef, "device_ref")] - [InlineData(ItemType.DipLocation, "diplocation")] - [InlineData(ItemType.DipSwitch, "dipswitch")] - [InlineData(ItemType.DipValue, "dipvalue")] - [InlineData(ItemType.Disk, "disk")] - [InlineData(ItemType.DiskArea, "diskarea")] - [InlineData(ItemType.Display, "display")] - [InlineData(ItemType.Driver, "driver")] - [InlineData(ItemType.Extension, "extension")] - [InlineData(ItemType.Feature, "feature")] - [InlineData(ItemType.File, "file")] - [InlineData(ItemType.Info, "info")] - [InlineData(ItemType.Input, "input")] - [InlineData(ItemType.Instance, "instance")] - [InlineData(ItemType.Media, "media")] - [InlineData(ItemType.Part, "part")] - [InlineData(ItemType.PartFeature, "part_feature")] - [InlineData(ItemType.Port, "port")] - [InlineData(ItemType.RamOption, "ramoption")] - [InlineData(ItemType.Release, "release")] - [InlineData(ItemType.ReleaseDetails, "release_details")] - [InlineData(ItemType.Rom, "rom")] - [InlineData(ItemType.Sample, "sample")] - [InlineData(ItemType.Serials, "serials")] - [InlineData(ItemType.SharedFeat, "sharedfeat")] - [InlineData(ItemType.Slot, "slot")] - [InlineData(ItemType.SlotOption, "slotoption")] - [InlineData(ItemType.SoftwareList, "softwarelist")] - [InlineData(ItemType.Sound, "sound")] - [InlineData(ItemType.SourceDetails, "source_details")] - public void FromItemTypeTest(ItemType field, string? expected) + [InlineData(Data.Models.Metadata.ItemType.NULL, null)] + [InlineData(Data.Models.Metadata.ItemType.Adjuster, "adjuster")] + [InlineData(Data.Models.Metadata.ItemType.Analog, "analog")] + [InlineData(Data.Models.Metadata.ItemType.Archive, "archive")] + [InlineData(Data.Models.Metadata.ItemType.BiosSet, "biosset")] + [InlineData(Data.Models.Metadata.ItemType.Blank, "blank")] + [InlineData(Data.Models.Metadata.ItemType.Chip, "chip")] + [InlineData(Data.Models.Metadata.ItemType.Condition, "condition")] + [InlineData(Data.Models.Metadata.ItemType.Configuration, "configuration")] + [InlineData(Data.Models.Metadata.ItemType.ConfLocation, "conflocation")] + [InlineData(Data.Models.Metadata.ItemType.ConfSetting, "confsetting")] + [InlineData(Data.Models.Metadata.ItemType.Control, "control")] + [InlineData(Data.Models.Metadata.ItemType.DataArea, "dataarea")] + [InlineData(Data.Models.Metadata.ItemType.Device, "device")] + [InlineData(Data.Models.Metadata.ItemType.DeviceRef, "device_ref")] + [InlineData(Data.Models.Metadata.ItemType.DipLocation, "diplocation")] + [InlineData(Data.Models.Metadata.ItemType.DipSwitch, "dipswitch")] + [InlineData(Data.Models.Metadata.ItemType.DipValue, "dipvalue")] + [InlineData(Data.Models.Metadata.ItemType.Disk, "disk")] + [InlineData(Data.Models.Metadata.ItemType.DiskArea, "diskarea")] + [InlineData(Data.Models.Metadata.ItemType.Display, "display")] + [InlineData(Data.Models.Metadata.ItemType.Driver, "driver")] + [InlineData(Data.Models.Metadata.ItemType.Extension, "extension")] + [InlineData(Data.Models.Metadata.ItemType.Feature, "feature")] + [InlineData(Data.Models.Metadata.ItemType.File, "file")] + [InlineData(Data.Models.Metadata.ItemType.Info, "info")] + [InlineData(Data.Models.Metadata.ItemType.Input, "input")] + [InlineData(Data.Models.Metadata.ItemType.Instance, "instance")] + [InlineData(Data.Models.Metadata.ItemType.Media, "media")] + [InlineData(Data.Models.Metadata.ItemType.Part, "part")] + [InlineData(Data.Models.Metadata.ItemType.PartFeature, "part_feature")] + [InlineData(Data.Models.Metadata.ItemType.Port, "port")] + [InlineData(Data.Models.Metadata.ItemType.RamOption, "ramoption")] + [InlineData(Data.Models.Metadata.ItemType.Release, "release")] + [InlineData(Data.Models.Metadata.ItemType.ReleaseDetails, "release_details")] + [InlineData(Data.Models.Metadata.ItemType.Rom, "rom")] + [InlineData(Data.Models.Metadata.ItemType.Sample, "sample")] + [InlineData(Data.Models.Metadata.ItemType.Serials, "serials")] + [InlineData(Data.Models.Metadata.ItemType.SharedFeat, "sharedfeat")] + [InlineData(Data.Models.Metadata.ItemType.Slot, "slot")] + [InlineData(Data.Models.Metadata.ItemType.SlotOption, "slotoption")] + [InlineData(Data.Models.Metadata.ItemType.SoftwareList, "softwarelist")] + [InlineData(Data.Models.Metadata.ItemType.Sound, "sound")] + [InlineData(Data.Models.Metadata.ItemType.SourceDetails, "source_details")] + public void FromItemTypeTest(Data.Models.Metadata.ItemType field, string? expected) { string? actual = field.AsStringValue(); Assert.Equal(expected, actual); diff --git a/SabreTools.Metadata.DatItems/DatItem.cs b/SabreTools.Metadata.DatItems/DatItem.cs index e542490d..92d1e050 100644 --- a/SabreTools.Metadata.DatItems/DatItem.cs +++ b/SabreTools.Metadata.DatItems/DatItem.cs @@ -85,7 +85,7 @@ namespace SabreTools.Metadata.DatItems /// /// Item type for the object /// - protected abstract ItemType ItemType { get; } + internal abstract Data.Models.Metadata.ItemType ItemType { get; } #endregion @@ -223,8 +223,8 @@ namespace SabreTools.Metadata.DatItems return false; // Get the types for comparison - ItemType selfType = ReadString(Data.Models.Metadata.DatItem.TypeKey).AsItemType(); - ItemType otherType = other.ReadString(Data.Models.Metadata.DatItem.TypeKey).AsItemType(); + Data.Models.Metadata.ItemType selfType = ItemType; + Data.Models.Metadata.ItemType otherType = other.ItemType; // If we don't have a matched type, return false if (selfType != otherType) diff --git a/SabreTools.Metadata.DatItems/DatItemT.cs b/SabreTools.Metadata.DatItems/DatItemT.cs index f0386246..9859bc5f 100644 --- a/SabreTools.Metadata.DatItems/DatItemT.cs +++ b/SabreTools.Metadata.DatItems/DatItemT.cs @@ -18,7 +18,6 @@ namespace SabreTools.Metadata.DatItems _internal = new T(); SetName(string.Empty); - Write(Data.Models.Metadata.DatItem.TypeKey, ItemType); Write(MachineKey, new Machine()); } @@ -29,7 +28,6 @@ namespace SabreTools.Metadata.DatItems { _internal = item; - Write(Data.Models.Metadata.DatItem.TypeKey, ItemType); Write(MachineKey, new Machine()); } @@ -78,8 +76,8 @@ namespace SabreTools.Metadata.DatItems return false; // Get the types for comparison - ItemType selfType = ReadString(Data.Models.Metadata.DatItem.TypeKey).AsItemType(); - ItemType otherType = other.ReadString(Data.Models.Metadata.DatItem.TypeKey).AsItemType(); + Data.Models.Metadata.ItemType selfType = ItemType; + Data.Models.Metadata.ItemType otherType = other.ItemType; // If we don't have a matched type, return false if (selfType != otherType) diff --git a/SabreTools.Metadata.DatItems/Enums.cs b/SabreTools.Metadata.DatItems/Enums.cs index b0427e43..85084652 100644 --- a/SabreTools.Metadata.DatItems/Enums.cs +++ b/SabreTools.Metadata.DatItems/Enums.cs @@ -41,153 +41,6 @@ namespace SabreTools.Metadata.DatItems SpamSum, } - /// - /// Determine what type of file an item is - /// - public enum ItemType - { - /// - /// This is a fake flag that is used for filter only - /// - NULL = 0, - - // "Actionable" item types - - /// "rom" - Rom, - - /// "disk" - Disk, - - /// "file" - File, - - /// "media" - Media, - - // "Auxiliary" item types - - /// "adjuster" - Adjuster, - - /// "analog" - Analog, - - /// "archive" - Archive, - - /// "biosset" - BiosSet, - - /// "chip" - Chip, - - /// "condition" - Condition, - - /// "configuration" - Configuration, - - /// "conflocation" - ConfLocation, - - /// "confsetting" - ConfSetting, - - /// "control" - Control, - - /// "dataarea" - DataArea, - - /// "device" - Device, - - /// "device_ref", "deviceref" - DeviceRef, - - /// "diplocation" - DipLocation, - - /// "dipswitch" - DipSwitch, - - /// "dipvalue" - DipValue, - - /// "diskarea" - DiskArea, - - /// "display" - Display, - - /// "driver" - Driver, - - /// "extension" - Extension, - - /// "feature" - Feature, - - /// "info" - Info, - - /// "input" - Input, - - /// "instance" - Instance, - - /// "original" - Original, - - /// "part" - Part, - - /// "part_feature", "partfeature" - PartFeature, - - /// "port" - Port, - - /// "ramoption", "ram_option" - RamOption, - - /// "release" - Release, - - /// "release_details", "releasedetails" - ReleaseDetails, - - /// "sample" - Sample, - - /// "serials" - Serials, - - /// "sharedfeat", "shared_feat", "sharedfeature", "shared_feature" - SharedFeat, - - /// "slot" - Slot, - - /// "slotoption", "slot_option" - SlotOption, - - /// "softwarelist", "software_list" - SoftwareList, - - /// "sound" - Sound, - - /// "source_details", "sourcedetails" - SourceDetails, - - /// "blank" - Blank = 99, // This is not a real type, only used internally - } - /// /// Determine what type of machine it is /// diff --git a/SabreTools.Metadata.DatItems/Extensions.cs b/SabreTools.Metadata.DatItems/Extensions.cs index 1f42603e..f64ee29a 100644 --- a/SabreTools.Metadata.DatItems/Extensions.cs +++ b/SabreTools.Metadata.DatItems/Extensions.cs @@ -9,58 +9,61 @@ namespace SabreTools.Metadata.DatItems /// /// String value to parse/param> /// Enum value representing the input, default on error - public static ItemType AsItemType(this string? value) + public static Data.Models.Metadata.ItemType AsItemType(this string? value) { return value?.ToLowerInvariant() switch { // "Actionable" item types - "rom" => ItemType.Rom, - "disk" => ItemType.Disk, - "file" => ItemType.File, - "media" => ItemType.Media, + "rom" => Data.Models.Metadata.ItemType.Rom, + "disk" => Data.Models.Metadata.ItemType.Disk, + "file" => Data.Models.Metadata.ItemType.File, + "media" => Data.Models.Metadata.ItemType.Media, // "Auxiliary" item types - "adjuster" => ItemType.Adjuster, - "analog" => ItemType.Analog, - "archive" => ItemType.Archive, - "biosset" => ItemType.BiosSet, - "chip" => ItemType.Chip, - "condition" => ItemType.Condition, - "configuration" => ItemType.Configuration, - "conflocation" => ItemType.ConfLocation, - "confsetting" => ItemType.ConfSetting, - "control" => ItemType.Control, - "dataarea" => ItemType.DataArea, - "device" => ItemType.Device, - "device_ref" or "deviceref" => ItemType.DeviceRef, - "diplocation" => ItemType.DipLocation, - "dipswitch" => ItemType.DipSwitch, - "dipvalue" => ItemType.DipValue, - "diskarea" => ItemType.DiskArea, - "display" => ItemType.Display, - "driver" => ItemType.Driver, - "extension" => ItemType.Extension, - "feature" => ItemType.Feature, - "info" => ItemType.Info, - "input" => ItemType.Input, - "instance" => ItemType.Instance, - "original" => ItemType.Original, - "part" => ItemType.Part, - "part_feature" or "partfeature" => ItemType.PartFeature, - "port" => ItemType.Port, - "ramoption" or "ram_option" => ItemType.RamOption, - "release" => ItemType.Release, - "release_details" or "releasedetails" => ItemType.ReleaseDetails, - "sample" => ItemType.Sample, - "serials" => ItemType.Serials, - "sharedfeat" or "shared_feat" or "sharedfeature" or "shared_feature" => ItemType.SharedFeat, - "slot" => ItemType.Slot, - "slotoption" or "slot_option" => ItemType.SlotOption, - "softwarelist" or "software_list" => ItemType.SoftwareList, - "sound" => ItemType.Sound, - "source_details" or "sourcedetails" => ItemType.SourceDetails, - "blank" => ItemType.Blank, - _ => ItemType.NULL, + "adjuster" => Data.Models.Metadata.ItemType.Adjuster, + "analog" => Data.Models.Metadata.ItemType.Analog, + "archive" => Data.Models.Metadata.ItemType.Archive, + "biosset" => Data.Models.Metadata.ItemType.BiosSet, + "chip" => Data.Models.Metadata.ItemType.Chip, + "condition" => Data.Models.Metadata.ItemType.Condition, + "configuration" => Data.Models.Metadata.ItemType.Configuration, + "conflocation" => Data.Models.Metadata.ItemType.ConfLocation, + "confsetting" => Data.Models.Metadata.ItemType.ConfSetting, + "control" => Data.Models.Metadata.ItemType.Control, + "dataarea" => Data.Models.Metadata.ItemType.DataArea, + "device" => Data.Models.Metadata.ItemType.Device, + "device_ref" or "deviceref" => Data.Models.Metadata.ItemType.DeviceRef, + "diplocation" => Data.Models.Metadata.ItemType.DipLocation, + "dipswitch" => Data.Models.Metadata.ItemType.DipSwitch, + "dipvalue" => Data.Models.Metadata.ItemType.DipValue, + "diskarea" => Data.Models.Metadata.ItemType.DiskArea, + "display" => Data.Models.Metadata.ItemType.Display, + "driver" => Data.Models.Metadata.ItemType.Driver, + "dump" => Data.Models.Metadata.ItemType.Dump, + "extension" => Data.Models.Metadata.ItemType.Extension, + "feature" => Data.Models.Metadata.ItemType.Feature, + "info" => Data.Models.Metadata.ItemType.Info, + "input" => Data.Models.Metadata.ItemType.Input, + "instance" => Data.Models.Metadata.ItemType.Instance, + "original" => Data.Models.Metadata.ItemType.Original, + "part" => Data.Models.Metadata.ItemType.Part, + "part_feature" or "partfeature" => Data.Models.Metadata.ItemType.PartFeature, + "port" => Data.Models.Metadata.ItemType.Port, + "ramoption" or "ram_option" => Data.Models.Metadata.ItemType.RamOption, + "release" => Data.Models.Metadata.ItemType.Release, + "release_details" or "releasedetails" => Data.Models.Metadata.ItemType.ReleaseDetails, + "sample" => Data.Models.Metadata.ItemType.Sample, + "serials" => Data.Models.Metadata.ItemType.Serials, + "sharedfeat" or "shared_feat" or "sharedfeature" or "shared_feature" => Data.Models.Metadata.ItemType.SharedFeat, + "slot" => Data.Models.Metadata.ItemType.Slot, + "slotoption" or "slot_option" => Data.Models.Metadata.ItemType.SlotOption, + "software" => Data.Models.Metadata.ItemType.Software, + "softwarelist" or "software_list" => Data.Models.Metadata.ItemType.SoftwareList, + "sound" => Data.Models.Metadata.ItemType.Sound, + "source_details" or "sourcedetails" => Data.Models.Metadata.ItemType.SourceDetails, + "video" => Data.Models.Metadata.ItemType.Video, + "blank" => Data.Models.Metadata.ItemType.Blank, + _ => Data.Models.Metadata.ItemType.NULL, }; } @@ -90,60 +93,62 @@ namespace SabreTools.Metadata.DatItems /// /// Enum value to parse/param> /// String value representing the input, default on error - public static string? AsStringValue(this ItemType value) + public static string? AsStringValue(this Data.Models.Metadata.ItemType value) { return value switch { // "Actionable" item types - ItemType.Rom => "rom", - ItemType.Disk => "disk", - ItemType.File => "file", - ItemType.Media => "media", + Data.Models.Metadata.ItemType.Rom => "rom", + Data.Models.Metadata.ItemType.Disk => "disk", + Data.Models.Metadata.ItemType.File => "file", + Data.Models.Metadata.ItemType.Media => "media", // "Auxiliary" item types + Data.Models.Metadata.ItemType.Adjuster => "adjuster", + Data.Models.Metadata.ItemType.Analog => "analog", + Data.Models.Metadata.ItemType.Archive => "archive", + Data.Models.Metadata.ItemType.BiosSet => "biosset", + Data.Models.Metadata.ItemType.Chip => "chip", + Data.Models.Metadata.ItemType.Condition => "condition", + Data.Models.Metadata.ItemType.Configuration => "configuration", + Data.Models.Metadata.ItemType.ConfLocation => "conflocation", + Data.Models.Metadata.ItemType.ConfSetting => "confsetting", + Data.Models.Metadata.ItemType.Control => "control", + Data.Models.Metadata.ItemType.DataArea => "dataarea", + Data.Models.Metadata.ItemType.Device => "device", + Data.Models.Metadata.ItemType.DeviceRef => "device_ref", + Data.Models.Metadata.ItemType.DipLocation => "diplocation", + Data.Models.Metadata.ItemType.DipSwitch => "dipswitch", + Data.Models.Metadata.ItemType.DipValue => "dipvalue", + Data.Models.Metadata.ItemType.DiskArea => "diskarea", + Data.Models.Metadata.ItemType.Display => "display", + Data.Models.Metadata.ItemType.Driver => "driver", + Data.Models.Metadata.ItemType.Dump => "dump", + Data.Models.Metadata.ItemType.Extension => "extension", + Data.Models.Metadata.ItemType.Feature => "feature", + Data.Models.Metadata.ItemType.Info => "info", + Data.Models.Metadata.ItemType.Input => "input", + Data.Models.Metadata.ItemType.Instance => "instance", + Data.Models.Metadata.ItemType.Original => "original", + Data.Models.Metadata.ItemType.Part => "part", + Data.Models.Metadata.ItemType.PartFeature => "part_feature", + Data.Models.Metadata.ItemType.Port => "port", + Data.Models.Metadata.ItemType.RamOption => "ramoption", + Data.Models.Metadata.ItemType.Release => "release", + Data.Models.Metadata.ItemType.ReleaseDetails => "release_details", + Data.Models.Metadata.ItemType.Sample => "sample", + Data.Models.Metadata.ItemType.Serials => "serials", + Data.Models.Metadata.ItemType.SharedFeat => "sharedfeat", + Data.Models.Metadata.ItemType.Slot => "slot", + Data.Models.Metadata.ItemType.SlotOption => "slotoption", + Data.Models.Metadata.ItemType.Software => "software", + Data.Models.Metadata.ItemType.SoftwareList => "softwarelist", + Data.Models.Metadata.ItemType.Sound => "sound", + Data.Models.Metadata.ItemType.SourceDetails => "source_details", + Data.Models.Metadata.ItemType.Video => "video", + Data.Models.Metadata.ItemType.Blank => "blank", - ItemType.Adjuster => "adjuster", - ItemType.Analog => "analog", - ItemType.Archive => "archive", - ItemType.BiosSet => "biosset", - ItemType.Chip => "chip", - ItemType.Condition => "condition", - ItemType.Configuration => "configuration", - ItemType.ConfLocation => "conflocation", - ItemType.ConfSetting => "confsetting", - ItemType.Control => "control", - ItemType.DataArea => "dataarea", - ItemType.Device => "device", - ItemType.DeviceRef => "device_ref", - ItemType.DipLocation => "diplocation", - ItemType.DipSwitch => "dipswitch", - ItemType.DipValue => "dipvalue", - ItemType.DiskArea => "diskarea", - ItemType.Display => "display", - ItemType.Driver => "driver", - ItemType.Extension => "extension", - ItemType.Feature => "feature", - ItemType.Info => "info", - ItemType.Input => "input", - ItemType.Instance => "instance", - ItemType.Original => "original", - ItemType.Part => "part", - ItemType.PartFeature => "part_feature", - ItemType.Port => "port", - ItemType.RamOption => "ramoption", - ItemType.Release => "release", - ItemType.ReleaseDetails => "release_details", - ItemType.Sample => "sample", - ItemType.Serials => "serials", - ItemType.SharedFeat => "sharedfeat", - ItemType.Slot => "slot", - ItemType.SlotOption => "slotoption", - ItemType.SoftwareList => "softwarelist", - ItemType.Sound => "sound", - ItemType.SourceDetails => "source_details", - ItemType.Blank => "blank", - - ItemType.NULL => null, + Data.Models.Metadata.ItemType.NULL => null, _ => null, }; } diff --git a/SabreTools.Metadata.DatItems/Formats/Adjuster.cs b/SabreTools.Metadata.DatItems/Formats/Adjuster.cs index fa62b24d..71f951f4 100644 --- a/SabreTools.Metadata.DatItems/Formats/Adjuster.cs +++ b/SabreTools.Metadata.DatItems/Formats/Adjuster.cs @@ -13,7 +13,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Fields /// /> - protected override ItemType ItemType => ItemType.Adjuster; + internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Adjuster; [JsonIgnore] public bool ConditionsSpecified diff --git a/SabreTools.Metadata.DatItems/Formats/Analog.cs b/SabreTools.Metadata.DatItems/Formats/Analog.cs index 02e9c43f..b2c8f80e 100644 --- a/SabreTools.Metadata.DatItems/Formats/Analog.cs +++ b/SabreTools.Metadata.DatItems/Formats/Analog.cs @@ -13,7 +13,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Fields /// /> - protected override ItemType ItemType => ItemType.Analog; + internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Analog; #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/Archive.cs b/SabreTools.Metadata.DatItems/Formats/Archive.cs index 3cdb978d..98640cb4 100644 --- a/SabreTools.Metadata.DatItems/Formats/Archive.cs +++ b/SabreTools.Metadata.DatItems/Formats/Archive.cs @@ -13,7 +13,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Fields /// /> - protected override ItemType ItemType => ItemType.Archive; + internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Archive; // TODO: None of the following are used or checked diff --git a/SabreTools.Metadata.DatItems/Formats/BiosSet.cs b/SabreTools.Metadata.DatItems/Formats/BiosSet.cs index bb47ae1d..ab93e366 100644 --- a/SabreTools.Metadata.DatItems/Formats/BiosSet.cs +++ b/SabreTools.Metadata.DatItems/Formats/BiosSet.cs @@ -13,7 +13,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Fields /// /> - protected override ItemType ItemType => ItemType.BiosSet; + internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.BiosSet; #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/Blank.cs b/SabreTools.Metadata.DatItems/Formats/Blank.cs index a5d53525..23c6e15f 100644 --- a/SabreTools.Metadata.DatItems/Formats/Blank.cs +++ b/SabreTools.Metadata.DatItems/Formats/Blank.cs @@ -12,7 +12,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Fields /// /> - protected override ItemType ItemType => ItemType.Blank; + internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Blank; #endregion @@ -21,10 +21,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// /// Create a default, empty Blank object /// - public Blank() - { - Write(Data.Models.Metadata.DatItem.TypeKey, ItemType); - } + public Blank() { } #endregion @@ -37,7 +34,6 @@ namespace SabreTools.Metadata.DatItems.Formats blank.Write(MachineKey, GetMachine()); blank.Write(RemoveKey, ReadBool(RemoveKey)); blank.Write(SourceKey, Read(SourceKey)); - blank.Write(Data.Models.Metadata.DatItem.TypeKey, ReadString(Data.Models.Metadata.DatItem.TypeKey).AsItemType().AsStringValue()); return blank; } @@ -80,7 +76,7 @@ namespace SabreTools.Metadata.DatItems.Formats public override bool Equals(DatItem? other) { // If we don't have a blank, return false - if (ReadString(Data.Models.Metadata.DatItem.TypeKey) != other?.ReadString(Data.Models.Metadata.DatItem.TypeKey)) + if (ItemType != other?.ItemType) return false; // Otherwise, treat it as a Blank diff --git a/SabreTools.Metadata.DatItems/Formats/Chip.cs b/SabreTools.Metadata.DatItems/Formats/Chip.cs index 18df99e3..391979a5 100644 --- a/SabreTools.Metadata.DatItems/Formats/Chip.cs +++ b/SabreTools.Metadata.DatItems/Formats/Chip.cs @@ -13,7 +13,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Fields /// /> - protected override ItemType ItemType => ItemType.Chip; + internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Chip; #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/Condition.cs b/SabreTools.Metadata.DatItems/Formats/Condition.cs index 9d0011bf..5af02f57 100644 --- a/SabreTools.Metadata.DatItems/Formats/Condition.cs +++ b/SabreTools.Metadata.DatItems/Formats/Condition.cs @@ -13,7 +13,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Fields /// /> - protected override ItemType ItemType => ItemType.Condition; + internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Condition; #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs b/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs index 78750d68..832331c4 100644 --- a/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs +++ b/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs @@ -13,7 +13,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Fields /// /> - protected override ItemType ItemType => ItemType.ConfLocation; + internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.ConfLocation; #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs b/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs index 82804d7a..2b8adac0 100644 --- a/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs +++ b/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs @@ -13,7 +13,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Fields /// /> - protected override ItemType ItemType => ItemType.ConfSetting; + internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.ConfSetting; [JsonIgnore] public bool ConditionsSpecified diff --git a/SabreTools.Metadata.DatItems/Formats/Configuration.cs b/SabreTools.Metadata.DatItems/Formats/Configuration.cs index 6e1521ce..c27feb08 100644 --- a/SabreTools.Metadata.DatItems/Formats/Configuration.cs +++ b/SabreTools.Metadata.DatItems/Formats/Configuration.cs @@ -14,7 +14,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Fields /// /> - protected override ItemType ItemType => ItemType.Configuration; + internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Configuration; [JsonIgnore] public bool ConditionsSpecified diff --git a/SabreTools.Metadata.DatItems/Formats/Control.cs b/SabreTools.Metadata.DatItems/Formats/Control.cs index ca837969..25febac4 100644 --- a/SabreTools.Metadata.DatItems/Formats/Control.cs +++ b/SabreTools.Metadata.DatItems/Formats/Control.cs @@ -13,7 +13,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Fields /// /> - protected override ItemType ItemType => ItemType.Control; + internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Control; #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/DataArea.cs b/SabreTools.Metadata.DatItems/Formats/DataArea.cs index f436a9db..c9cb7546 100644 --- a/SabreTools.Metadata.DatItems/Formats/DataArea.cs +++ b/SabreTools.Metadata.DatItems/Formats/DataArea.cs @@ -14,7 +14,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Fields /// /> - protected override ItemType ItemType => ItemType.DataArea; + internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.DataArea; #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/Device.cs b/SabreTools.Metadata.DatItems/Formats/Device.cs index 80c8e92e..a413868b 100644 --- a/SabreTools.Metadata.DatItems/Formats/Device.cs +++ b/SabreTools.Metadata.DatItems/Formats/Device.cs @@ -14,7 +14,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Fields /// /> - protected override ItemType ItemType => ItemType.Device; + internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Device; [JsonIgnore] public bool InstancesSpecified diff --git a/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs b/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs index 9814037f..b3611c61 100644 --- a/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs +++ b/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs @@ -13,7 +13,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Fields /// /> - protected override ItemType ItemType => ItemType.DeviceRef; + internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.DeviceRef; #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/DipLocation.cs b/SabreTools.Metadata.DatItems/Formats/DipLocation.cs index 6e92ee74..56efb857 100644 --- a/SabreTools.Metadata.DatItems/Formats/DipLocation.cs +++ b/SabreTools.Metadata.DatItems/Formats/DipLocation.cs @@ -13,7 +13,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Fields /// /> - protected override ItemType ItemType => ItemType.DipLocation; + internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.DipLocation; #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs b/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs index c0f9e1d2..40caa877 100644 --- a/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs +++ b/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs @@ -23,7 +23,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Fields /// /> - protected override ItemType ItemType => ItemType.DipSwitch; + internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.DipSwitch; [JsonIgnore] public bool ConditionsSpecified diff --git a/SabreTools.Metadata.DatItems/Formats/DipValue.cs b/SabreTools.Metadata.DatItems/Formats/DipValue.cs index 6380d250..206886ad 100644 --- a/SabreTools.Metadata.DatItems/Formats/DipValue.cs +++ b/SabreTools.Metadata.DatItems/Formats/DipValue.cs @@ -13,7 +13,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Fields /// /> - protected override ItemType ItemType => ItemType.DipValue; + internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.DipValue; [JsonIgnore] public bool ConditionsSpecified diff --git a/SabreTools.Metadata.DatItems/Formats/Disk.cs b/SabreTools.Metadata.DatItems/Formats/Disk.cs index fe9e3243..fb1398b6 100644 --- a/SabreTools.Metadata.DatItems/Formats/Disk.cs +++ b/SabreTools.Metadata.DatItems/Formats/Disk.cs @@ -29,7 +29,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Fields /// /> - protected override ItemType ItemType => ItemType.Disk; + internal override ItemType ItemType => ItemType.Disk; [JsonIgnore] public bool DiskAreaSpecified diff --git a/SabreTools.Metadata.DatItems/Formats/DiskArea.cs b/SabreTools.Metadata.DatItems/Formats/DiskArea.cs index 00f13f02..4f4061bd 100644 --- a/SabreTools.Metadata.DatItems/Formats/DiskArea.cs +++ b/SabreTools.Metadata.DatItems/Formats/DiskArea.cs @@ -14,7 +14,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Fields /// /> - protected override ItemType ItemType => ItemType.DiskArea; + internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.DiskArea; #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/Display.cs b/SabreTools.Metadata.DatItems/Formats/Display.cs index 8b8b836e..e7ff0b0b 100644 --- a/SabreTools.Metadata.DatItems/Formats/Display.cs +++ b/SabreTools.Metadata.DatItems/Formats/Display.cs @@ -14,7 +14,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Fields /// /> - protected override ItemType ItemType => ItemType.Display; + internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Display; #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/Driver.cs b/SabreTools.Metadata.DatItems/Formats/Driver.cs index 47a01f39..2fea004c 100644 --- a/SabreTools.Metadata.DatItems/Formats/Driver.cs +++ b/SabreTools.Metadata.DatItems/Formats/Driver.cs @@ -13,7 +13,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Fields /// /> - protected override ItemType ItemType => ItemType.Driver; + internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Driver; #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/Extension.cs b/SabreTools.Metadata.DatItems/Formats/Extension.cs index 4f2bfe5f..b11fd9e7 100644 --- a/SabreTools.Metadata.DatItems/Formats/Extension.cs +++ b/SabreTools.Metadata.DatItems/Formats/Extension.cs @@ -13,7 +13,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Fields /// /> - protected override ItemType ItemType => ItemType.Extension; + internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Extension; #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/Feature.cs b/SabreTools.Metadata.DatItems/Formats/Feature.cs index 34defc68..735ae025 100644 --- a/SabreTools.Metadata.DatItems/Formats/Feature.cs +++ b/SabreTools.Metadata.DatItems/Formats/Feature.cs @@ -13,7 +13,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Fields /// /> - protected override ItemType ItemType => ItemType.Feature; + internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Feature; #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/File.cs b/SabreTools.Metadata.DatItems/Formats/File.cs index 33cc0ec1..fd132ebd 100644 --- a/SabreTools.Metadata.DatItems/Formats/File.cs +++ b/SabreTools.Metadata.DatItems/Formats/File.cs @@ -27,7 +27,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Fields /// /> - protected override ItemType ItemType => ItemType.File; + internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.File; /// /// ID value @@ -100,10 +100,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// /// Create a default, empty File object /// - public File() - { - Write(Data.Models.Metadata.DatItem.TypeKey, ItemType); - } + public File() { } #endregion @@ -164,7 +161,7 @@ namespace SabreTools.Metadata.DatItems.Formats bool dupefound = false; // If we don't have a file, return false - if (ReadString(Data.Models.Metadata.DatItem.TypeKey) != other?.ReadString(Data.Models.Metadata.DatItem.TypeKey)) + if (ItemType != other?.ItemType) return dupefound; // Otherwise, treat it as a File diff --git a/SabreTools.Metadata.DatItems/Formats/Info.cs b/SabreTools.Metadata.DatItems/Formats/Info.cs index 4232db88..fe9421f2 100644 --- a/SabreTools.Metadata.DatItems/Formats/Info.cs +++ b/SabreTools.Metadata.DatItems/Formats/Info.cs @@ -13,7 +13,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Fields /// /> - protected override ItemType ItemType => ItemType.Info; + internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Info; #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/Input.cs b/SabreTools.Metadata.DatItems/Formats/Input.cs index a44300d0..811e5daf 100644 --- a/SabreTools.Metadata.DatItems/Formats/Input.cs +++ b/SabreTools.Metadata.DatItems/Formats/Input.cs @@ -14,7 +14,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Fields /// /> - protected override ItemType ItemType => ItemType.Input; + internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Input; [JsonIgnore] public bool ControlsSpecified diff --git a/SabreTools.Metadata.DatItems/Formats/Instance.cs b/SabreTools.Metadata.DatItems/Formats/Instance.cs index f2f7e954..3ac50eca 100644 --- a/SabreTools.Metadata.DatItems/Formats/Instance.cs +++ b/SabreTools.Metadata.DatItems/Formats/Instance.cs @@ -13,7 +13,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Fields /// /> - protected override ItemType ItemType => ItemType.Instance; + internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Instance; #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/Media.cs b/SabreTools.Metadata.DatItems/Formats/Media.cs index 7ab8144d..483c8a36 100644 --- a/SabreTools.Metadata.DatItems/Formats/Media.cs +++ b/SabreTools.Metadata.DatItems/Formats/Media.cs @@ -14,7 +14,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Fields /// /> - protected override ItemType ItemType => ItemType.Media; + internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Media; #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/Part.cs b/SabreTools.Metadata.DatItems/Formats/Part.cs index 32c2fed4..a4cae2d1 100644 --- a/SabreTools.Metadata.DatItems/Formats/Part.cs +++ b/SabreTools.Metadata.DatItems/Formats/Part.cs @@ -14,7 +14,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Fields /// /> - protected override ItemType ItemType => ItemType.Part; + internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Part; [JsonIgnore] public bool FeaturesSpecified diff --git a/SabreTools.Metadata.DatItems/Formats/PartFeature.cs b/SabreTools.Metadata.DatItems/Formats/PartFeature.cs index ae4ff5ba..fa31e20a 100644 --- a/SabreTools.Metadata.DatItems/Formats/PartFeature.cs +++ b/SabreTools.Metadata.DatItems/Formats/PartFeature.cs @@ -22,7 +22,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Fields /// /> - protected override ItemType ItemType => ItemType.PartFeature; + internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.PartFeature; #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/Port.cs b/SabreTools.Metadata.DatItems/Formats/Port.cs index 84eaf426..9a38a1be 100644 --- a/SabreTools.Metadata.DatItems/Formats/Port.cs +++ b/SabreTools.Metadata.DatItems/Formats/Port.cs @@ -14,7 +14,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Fields /// /> - protected override ItemType ItemType => ItemType.Port; + internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Port; [JsonIgnore] public bool AnalogsSpecified diff --git a/SabreTools.Metadata.DatItems/Formats/RamOption.cs b/SabreTools.Metadata.DatItems/Formats/RamOption.cs index 50e32990..d1f9cd12 100644 --- a/SabreTools.Metadata.DatItems/Formats/RamOption.cs +++ b/SabreTools.Metadata.DatItems/Formats/RamOption.cs @@ -13,7 +13,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Fields /// /> - protected override ItemType ItemType => ItemType.RamOption; + internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.RamOption; #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/Release.cs b/SabreTools.Metadata.DatItems/Formats/Release.cs index 2eaf01ab..5a5637b2 100644 --- a/SabreTools.Metadata.DatItems/Formats/Release.cs +++ b/SabreTools.Metadata.DatItems/Formats/Release.cs @@ -13,7 +13,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Fields /// /> - protected override ItemType ItemType => ItemType.Release; + internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Release; #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs b/SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs index cd39f5ef..0beb5f56 100644 --- a/SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs +++ b/SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs @@ -13,7 +13,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Fields /// /> - protected override ItemType ItemType => ItemType.ReleaseDetails; + internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.ReleaseDetails; #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/Rom.cs b/SabreTools.Metadata.DatItems/Formats/Rom.cs index f7b20fa0..1ea42c6c 100644 --- a/SabreTools.Metadata.DatItems/Formats/Rom.cs +++ b/SabreTools.Metadata.DatItems/Formats/Rom.cs @@ -29,7 +29,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Fields /// /> - protected override ItemType ItemType => ItemType.Rom; + internal override ItemType ItemType => ItemType.Rom; [JsonIgnore] public bool ItemStatusSpecified @@ -118,7 +118,7 @@ namespace SabreTools.Metadata.DatItems.Formats SetName(name); Write(Data.Models.Metadata.Rom.OffsetKey, rom.ReadString(Data.Models.Metadata.Rom.StartKey)); Write(Data.Models.Metadata.Rom.OpenMSXMediaType, subType?.AsStringValue()); - Write(Data.Models.Metadata.Rom.OpenMSXType, rom.ReadString(Data.Models.Metadata.Rom.OpenMSXType) ?? rom.ReadString(Data.Models.Metadata.DatItem.TypeKey)); + Write(Data.Models.Metadata.Rom.OpenMSXType, rom.ReadString(Data.Models.Metadata.Rom.OpenMSXType) ?? rom.ItemType.ToString()); Write(Data.Models.Metadata.Rom.RemarkKey, rom.ReadString(Data.Models.Metadata.Rom.RemarkKey)); Write(Data.Models.Metadata.Rom.SHA1Key, rom.ReadString(Data.Models.Metadata.Rom.SHA1Key)); Write(Data.Models.Metadata.Rom.StartKey, rom.ReadString(Data.Models.Metadata.Rom.StartKey)); diff --git a/SabreTools.Metadata.DatItems/Formats/Sample.cs b/SabreTools.Metadata.DatItems/Formats/Sample.cs index c1c50baa..5fbf2932 100644 --- a/SabreTools.Metadata.DatItems/Formats/Sample.cs +++ b/SabreTools.Metadata.DatItems/Formats/Sample.cs @@ -13,7 +13,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Fields /// /> - protected override ItemType ItemType => ItemType.Sample; + internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Sample; #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/Serials.cs b/SabreTools.Metadata.DatItems/Formats/Serials.cs index 344ced23..7fc10ae1 100644 --- a/SabreTools.Metadata.DatItems/Formats/Serials.cs +++ b/SabreTools.Metadata.DatItems/Formats/Serials.cs @@ -13,7 +13,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Fields /// /> - protected override ItemType ItemType => ItemType.Serials; + internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Serials; #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs b/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs index 274cb9f7..8c812e4b 100644 --- a/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs +++ b/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs @@ -13,7 +13,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Fields /// /> - protected override ItemType ItemType => ItemType.SharedFeat; + internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.SharedFeat; #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/Slot.cs b/SabreTools.Metadata.DatItems/Formats/Slot.cs index 8e8efced..1d17bdac 100644 --- a/SabreTools.Metadata.DatItems/Formats/Slot.cs +++ b/SabreTools.Metadata.DatItems/Formats/Slot.cs @@ -14,7 +14,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Fields /// /> - protected override ItemType ItemType => ItemType.Slot; + internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Slot; [JsonIgnore] public bool SlotOptionsSpecified diff --git a/SabreTools.Metadata.DatItems/Formats/SlotOption.cs b/SabreTools.Metadata.DatItems/Formats/SlotOption.cs index 2fa4718c..c02768a5 100644 --- a/SabreTools.Metadata.DatItems/Formats/SlotOption.cs +++ b/SabreTools.Metadata.DatItems/Formats/SlotOption.cs @@ -13,7 +13,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Fields /// /> - protected override ItemType ItemType => ItemType.SlotOption; + internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.SlotOption; #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs b/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs index ddf1ab95..ff686638 100644 --- a/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs +++ b/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs @@ -13,7 +13,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Fields /// /> - protected override ItemType ItemType => ItemType.SoftwareList; + internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.SoftwareList; #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/Sound.cs b/SabreTools.Metadata.DatItems/Formats/Sound.cs index 27fbde3a..e9a51763 100644 --- a/SabreTools.Metadata.DatItems/Formats/Sound.cs +++ b/SabreTools.Metadata.DatItems/Formats/Sound.cs @@ -13,7 +13,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Fields /// /> - protected override ItemType ItemType => ItemType.Sound; + internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Sound; #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/SourceDetails.cs b/SabreTools.Metadata.DatItems/Formats/SourceDetails.cs index dcf47068..baf8dc70 100644 --- a/SabreTools.Metadata.DatItems/Formats/SourceDetails.cs +++ b/SabreTools.Metadata.DatItems/Formats/SourceDetails.cs @@ -13,7 +13,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Fields /// /> - protected override ItemType ItemType => ItemType.SourceDetails; + internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.SourceDetails; #endregion diff --git a/SabreTools.Metadata.DatItems/SabreTools.Metadata.DatItems.csproj b/SabreTools.Metadata.DatItems/SabreTools.Metadata.DatItems.csproj index 32969615..5cc3061c 100644 --- a/SabreTools.Metadata.DatItems/SabreTools.Metadata.DatItems.csproj +++ b/SabreTools.Metadata.DatItems/SabreTools.Metadata.DatItems.csproj @@ -30,6 +30,10 @@ + + + + diff --git a/SabreTools.Serialization.CrossModel/Listrom.Serializer.cs b/SabreTools.Serialization.CrossModel/Listrom.Serializer.cs index bf02b157..c049bad1 100644 --- a/SabreTools.Serialization.CrossModel/Listrom.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Listrom.Serializer.cs @@ -83,7 +83,6 @@ namespace SabreTools.Serialization.CrossModel { var disk = new Data.Models.Metadata.Disk { - [Data.Models.Metadata.DatItem.TypeKey] = "disk", [Data.Models.Metadata.Disk.NameKey] = item.Name, [Data.Models.Metadata.Disk.MD5Key] = item.MD5, [Data.Models.Metadata.Disk.SHA1Key] = item.SHA1, @@ -100,7 +99,6 @@ namespace SabreTools.Serialization.CrossModel { var rom = new Data.Models.Metadata.Rom { - [Data.Models.Metadata.DatItem.TypeKey] = "rom", [Data.Models.Metadata.Rom.NameKey] = item.Name, [Data.Models.Metadata.Rom.SizeKey] = item.Size, [Data.Models.Metadata.Rom.CRCKey] = item.CRC, From 6810dce2ed380cfd57a5f9b9850baca90e919d3a Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Wed, 1 Apr 2026 11:37:44 -0400 Subject: [PATCH 002/142] Remove redundant ItemType declarations --- .../MetadataExtensionsTests.cs | 8 +- .../DatItemTests.cs | 2 +- SabreTools.Metadata.DatItems/DatItem.cs | 4 +- SabreTools.Metadata.DatItems/DatItemT.cs | 7 ++ .../Formats/Adjuster.cs | 3 - .../Formats/Analog.cs | 7 -- .../Formats/Archive.cs | 74 ------------------- .../Formats/BiosSet.cs | 7 -- SabreTools.Metadata.DatItems/Formats/Blank.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Chip.cs | 7 -- .../Formats/Condition.cs | 7 -- .../Formats/ConfLocation.cs | 7 -- .../Formats/ConfSetting.cs | 3 - .../Formats/Configuration.cs | 3 - .../Formats/Control.cs | 7 -- .../Formats/DataArea.cs | 7 -- .../Formats/Device.cs | 3 - .../Formats/DeviceRef.cs | 7 -- .../Formats/DipLocation.cs | 7 -- .../Formats/DipSwitch.cs | 3 - .../Formats/DipValue.cs | 3 - SabreTools.Metadata.DatItems/Formats/Disk.cs | 3 - .../Formats/DiskArea.cs | 7 -- .../Formats/Display.cs | 7 -- .../Formats/Driver.cs | 7 -- .../Formats/Extension.cs | 7 -- .../Formats/Feature.cs | 7 -- SabreTools.Metadata.DatItems/Formats/File.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Info.cs | 7 -- SabreTools.Metadata.DatItems/Formats/Input.cs | 3 - .../Formats/Instance.cs | 7 -- SabreTools.Metadata.DatItems/Formats/Media.cs | 7 -- SabreTools.Metadata.DatItems/Formats/Part.cs | 3 - .../Formats/PartFeature.cs | 3 +- SabreTools.Metadata.DatItems/Formats/Port.cs | 3 - .../Formats/RamOption.cs | 7 -- .../Formats/Release.cs | 7 -- .../Formats/ReleaseDetails.cs | 7 -- SabreTools.Metadata.DatItems/Formats/Rom.cs | 3 - .../Formats/Sample.cs | 7 -- .../Formats/Serials.cs | 7 -- .../Formats/SharedFeat.cs | 7 -- SabreTools.Metadata.DatItems/Formats/Slot.cs | 3 - .../Formats/SlotOption.cs | 7 -- .../Formats/SoftwareList.cs | 7 -- SabreTools.Metadata.DatItems/Formats/Sound.cs | 7 -- .../Formats/SourceDetails.cs | 7 -- .../SabreTools.Metadata.DatItems.csproj | 4 - 48 files changed, 18 insertions(+), 313 deletions(-) diff --git a/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs b/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs index 76d50745..e7c86d78 100644 --- a/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs +++ b/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs @@ -23,7 +23,7 @@ namespace SabreTools.Data.Extensions.Test Rom? actual = self.ConvertToRom(); Assert.NotNull(actual); - Assert.Equal(8, actual.Count); + Assert.Equal(7, actual.Count); Assert.Equal(ItemType.Rom, actual.ItemType); Assert.Null(actual[Rom.NameKey]); Assert.Null(actual[Rom.MergeKey]); @@ -51,7 +51,7 @@ namespace SabreTools.Data.Extensions.Test Rom? actual = self.ConvertToRom(); Assert.NotNull(actual); - Assert.Equal(8, actual.Count); + Assert.Equal(7, actual.Count); Assert.Equal(ItemType.Rom, actual.ItemType); Assert.Equal("XXXXXX.chd", actual[Rom.NameKey]); Assert.Equal("XXXXXX", actual[Rom.MergeKey]); @@ -69,7 +69,7 @@ namespace SabreTools.Data.Extensions.Test Rom? actual = self.ConvertToRom(); Assert.NotNull(actual); - Assert.Equal(6, actual.Count); + Assert.Equal(5, actual.Count); Assert.Equal(ItemType.Rom, actual.ItemType); Assert.Null(actual[Rom.NameKey]); Assert.Null(actual[Rom.MD5Key]); @@ -93,7 +93,7 @@ namespace SabreTools.Data.Extensions.Test Rom? actual = self.ConvertToRom(); Assert.NotNull(actual); - Assert.Equal(6, actual.Count); + Assert.Equal(5, actual.Count); Assert.Equal(ItemType.Rom, actual.ItemType); Assert.Equal("XXXXXX.aaruf", actual[Rom.NameKey]); Assert.Equal("XXXXXX", actual[Rom.MD5Key]); diff --git a/SabreTools.Metadata.DatItems.Test/DatItemTests.cs b/SabreTools.Metadata.DatItems.Test/DatItemTests.cs index df6b29cc..f80fa993 100644 --- a/SabreTools.Metadata.DatItems.Test/DatItemTests.cs +++ b/SabreTools.Metadata.DatItems.Test/DatItemTests.cs @@ -23,7 +23,7 @@ namespace SabreTools.Metadata.DatItems.Test { private readonly string? _nameKey; - internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Blank; + public override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Blank; public TestDatItem() => _nameKey = TestDatItemModel.NameKey; diff --git a/SabreTools.Metadata.DatItems/DatItem.cs b/SabreTools.Metadata.DatItems/DatItem.cs index 92d1e050..c61ef588 100644 --- a/SabreTools.Metadata.DatItems/DatItem.cs +++ b/SabreTools.Metadata.DatItems/DatItem.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Xml.Serialization; using Newtonsoft.Json; using SabreTools.Data.Extensions; @@ -85,7 +85,7 @@ namespace SabreTools.Metadata.DatItems /// /// Item type for the object /// - internal abstract Data.Models.Metadata.ItemType ItemType { get; } + public abstract Data.Models.Metadata.ItemType ItemType { get; } #endregion diff --git a/SabreTools.Metadata.DatItems/DatItemT.cs b/SabreTools.Metadata.DatItems/DatItemT.cs index 9859bc5f..f76bfe8f 100644 --- a/SabreTools.Metadata.DatItems/DatItemT.cs +++ b/SabreTools.Metadata.DatItems/DatItemT.cs @@ -8,6 +8,13 @@ namespace SabreTools.Metadata.DatItems /// public abstract class DatItem : DatItem, IEquatable>, IComparable>, ICloneable where T : Data.Models.Metadata.DatItem, new() { + #region Fields + + /// /> + public override Data.Models.Metadata.ItemType ItemType => _internal.ItemType; + + #endregion + #region Constructors /// diff --git a/SabreTools.Metadata.DatItems/Formats/Adjuster.cs b/SabreTools.Metadata.DatItems/Formats/Adjuster.cs index 71f951f4..fef67fbb 100644 --- a/SabreTools.Metadata.DatItems/Formats/Adjuster.cs +++ b/SabreTools.Metadata.DatItems/Formats/Adjuster.cs @@ -12,9 +12,6 @@ namespace SabreTools.Metadata.DatItems.Formats { #region Fields - /// /> - internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Adjuster; - [JsonIgnore] public bool ConditionsSpecified { diff --git a/SabreTools.Metadata.DatItems/Formats/Analog.cs b/SabreTools.Metadata.DatItems/Formats/Analog.cs index b2c8f80e..8338418d 100644 --- a/SabreTools.Metadata.DatItems/Formats/Analog.cs +++ b/SabreTools.Metadata.DatItems/Formats/Analog.cs @@ -10,13 +10,6 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("analog"), XmlRoot("analog")] public sealed class Analog : DatItem { - #region Fields - - /// /> - internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Analog; - - #endregion - #region Constructors public Analog() : base() { } diff --git a/SabreTools.Metadata.DatItems/Formats/Archive.cs b/SabreTools.Metadata.DatItems/Formats/Archive.cs index 98640cb4..d227eb50 100644 --- a/SabreTools.Metadata.DatItems/Formats/Archive.cs +++ b/SabreTools.Metadata.DatItems/Formats/Archive.cs @@ -10,80 +10,6 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("archive"), XmlRoot("archive")] public sealed class Archive : DatItem { - #region Fields - - /// /> - internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Archive; - - // TODO: None of the following are used or checked - - /// - /// Archive ID number - /// - /// TODO: No-Intro database export only - [JsonProperty("number"), XmlElement("number")] - public string? Number { get; set; } - - /// - /// Clone value - /// - /// TODO: No-Intro database export only - [JsonProperty("clone"), XmlElement("clone")] - public string? CloneValue { get; set; } - - /// - /// Regional parent value - /// - /// TODO: No-Intro database export only - [JsonProperty("regparent"), XmlElement("regparent")] - public string? RegParent { get; set; } - - /// - /// Region value - /// - /// TODO: No-Intro database export only - [JsonProperty("region"), XmlElement("region")] - public string? Region { get; set; } - - /// - /// Languages value - /// - /// TODO: No-Intro database export only - [JsonProperty("languages"), XmlElement("languages")] - public string? Languages { get; set; } - - /// - /// Development status value - /// - /// TODO: No-Intro database export only - [JsonProperty("devstatus"), XmlElement("devstatus")] - public string? DevStatus { get; set; } - - /// - /// Physical value - /// - /// TODO: No-Intro database export only - /// TODO: Is this numeric or a flag? - [JsonProperty("physical"), XmlElement("physical")] - public string? Physical { get; set; } - - /// - /// Complete value - /// - /// TODO: No-Intro database export only - /// TODO: Is this numeric or a flag? - [JsonProperty("complete"), XmlElement("complete")] - public string? Complete { get; set; } - - /// - /// Categories value - /// - /// TODO: No-Intro database export only - [JsonProperty("categories"), XmlElement("categories")] - public string? Categories { get; set; } - - #endregion - #region Constructors public Archive() : base() { } diff --git a/SabreTools.Metadata.DatItems/Formats/BiosSet.cs b/SabreTools.Metadata.DatItems/Formats/BiosSet.cs index ab93e366..395e59ca 100644 --- a/SabreTools.Metadata.DatItems/Formats/BiosSet.cs +++ b/SabreTools.Metadata.DatItems/Formats/BiosSet.cs @@ -10,13 +10,6 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("biosset"), XmlRoot("biosset")] public sealed class BiosSet : DatItem { - #region Fields - - /// /> - internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.BiosSet; - - #endregion - #region Constructors public BiosSet() : base() { } diff --git a/SabreTools.Metadata.DatItems/Formats/Blank.cs b/SabreTools.Metadata.DatItems/Formats/Blank.cs index 23c6e15f..e00521e7 100644 --- a/SabreTools.Metadata.DatItems/Formats/Blank.cs +++ b/SabreTools.Metadata.DatItems/Formats/Blank.cs @@ -12,7 +12,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Fields /// /> - internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Blank; + public override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Blank; #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/Chip.cs b/SabreTools.Metadata.DatItems/Formats/Chip.cs index 391979a5..dd83cf93 100644 --- a/SabreTools.Metadata.DatItems/Formats/Chip.cs +++ b/SabreTools.Metadata.DatItems/Formats/Chip.cs @@ -10,13 +10,6 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("chip"), XmlRoot("chip")] public sealed class Chip : DatItem { - #region Fields - - /// /> - internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Chip; - - #endregion - #region Constructors public Chip() : base() { } diff --git a/SabreTools.Metadata.DatItems/Formats/Condition.cs b/SabreTools.Metadata.DatItems/Formats/Condition.cs index 5af02f57..93157cc2 100644 --- a/SabreTools.Metadata.DatItems/Formats/Condition.cs +++ b/SabreTools.Metadata.DatItems/Formats/Condition.cs @@ -10,13 +10,6 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("condition"), XmlRoot("condition")] public sealed class Condition : DatItem { - #region Fields - - /// /> - internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Condition; - - #endregion - #region Constructors public Condition() : base() { } diff --git a/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs b/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs index 832331c4..34835759 100644 --- a/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs +++ b/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs @@ -10,13 +10,6 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("conflocation"), XmlRoot("conflocation")] public sealed class ConfLocation : DatItem { - #region Fields - - /// /> - internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.ConfLocation; - - #endregion - #region Constructors public ConfLocation() : base() { } diff --git a/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs b/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs index 2b8adac0..4fe81fe4 100644 --- a/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs +++ b/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs @@ -12,9 +12,6 @@ namespace SabreTools.Metadata.DatItems.Formats { #region Fields - /// /> - internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.ConfSetting; - [JsonIgnore] public bool ConditionsSpecified { diff --git a/SabreTools.Metadata.DatItems/Formats/Configuration.cs b/SabreTools.Metadata.DatItems/Formats/Configuration.cs index c27feb08..4d8e8525 100644 --- a/SabreTools.Metadata.DatItems/Formats/Configuration.cs +++ b/SabreTools.Metadata.DatItems/Formats/Configuration.cs @@ -13,9 +13,6 @@ namespace SabreTools.Metadata.DatItems.Formats { #region Fields - /// /> - internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Configuration; - [JsonIgnore] public bool ConditionsSpecified { diff --git a/SabreTools.Metadata.DatItems/Formats/Control.cs b/SabreTools.Metadata.DatItems/Formats/Control.cs index 25febac4..b8840a00 100644 --- a/SabreTools.Metadata.DatItems/Formats/Control.cs +++ b/SabreTools.Metadata.DatItems/Formats/Control.cs @@ -10,13 +10,6 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("control"), XmlRoot("control")] public sealed class Control : DatItem { - #region Fields - - /// /> - internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Control; - - #endregion - #region Constructors public Control() : base() { } diff --git a/SabreTools.Metadata.DatItems/Formats/DataArea.cs b/SabreTools.Metadata.DatItems/Formats/DataArea.cs index c9cb7546..1dd9191e 100644 --- a/SabreTools.Metadata.DatItems/Formats/DataArea.cs +++ b/SabreTools.Metadata.DatItems/Formats/DataArea.cs @@ -11,13 +11,6 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("dataarea"), XmlRoot("dataarea")] public sealed class DataArea : DatItem { - #region Fields - - /// /> - internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.DataArea; - - #endregion - #region Constructors public DataArea() : base() { } diff --git a/SabreTools.Metadata.DatItems/Formats/Device.cs b/SabreTools.Metadata.DatItems/Formats/Device.cs index a413868b..3c95b8d8 100644 --- a/SabreTools.Metadata.DatItems/Formats/Device.cs +++ b/SabreTools.Metadata.DatItems/Formats/Device.cs @@ -13,9 +13,6 @@ namespace SabreTools.Metadata.DatItems.Formats { #region Fields - /// /> - internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Device; - [JsonIgnore] public bool InstancesSpecified { diff --git a/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs b/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs index b3611c61..c74dedcb 100644 --- a/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs +++ b/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs @@ -10,13 +10,6 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("device_ref"), XmlRoot("device_ref")] public sealed class DeviceRef : DatItem { - #region Fields - - /// /> - internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.DeviceRef; - - #endregion - #region Constructors public DeviceRef() : base() { } diff --git a/SabreTools.Metadata.DatItems/Formats/DipLocation.cs b/SabreTools.Metadata.DatItems/Formats/DipLocation.cs index 56efb857..207e4b14 100644 --- a/SabreTools.Metadata.DatItems/Formats/DipLocation.cs +++ b/SabreTools.Metadata.DatItems/Formats/DipLocation.cs @@ -10,13 +10,6 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("diplocation"), XmlRoot("diplocation")] public sealed class DipLocation : DatItem { - #region Fields - - /// /> - internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.DipLocation; - - #endregion - #region Constructors public DipLocation() : base() { } diff --git a/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs b/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs index 40caa877..db1053ef 100644 --- a/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs +++ b/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs @@ -22,9 +22,6 @@ namespace SabreTools.Metadata.DatItems.Formats #region Fields - /// /> - internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.DipSwitch; - [JsonIgnore] public bool ConditionsSpecified { diff --git a/SabreTools.Metadata.DatItems/Formats/DipValue.cs b/SabreTools.Metadata.DatItems/Formats/DipValue.cs index 206886ad..94600083 100644 --- a/SabreTools.Metadata.DatItems/Formats/DipValue.cs +++ b/SabreTools.Metadata.DatItems/Formats/DipValue.cs @@ -12,9 +12,6 @@ namespace SabreTools.Metadata.DatItems.Formats { #region Fields - /// /> - internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.DipValue; - [JsonIgnore] public bool ConditionsSpecified { diff --git a/SabreTools.Metadata.DatItems/Formats/Disk.cs b/SabreTools.Metadata.DatItems/Formats/Disk.cs index fb1398b6..14cefd9d 100644 --- a/SabreTools.Metadata.DatItems/Formats/Disk.cs +++ b/SabreTools.Metadata.DatItems/Formats/Disk.cs @@ -28,9 +28,6 @@ namespace SabreTools.Metadata.DatItems.Formats #region Fields - /// /> - internal override ItemType ItemType => ItemType.Disk; - [JsonIgnore] public bool DiskAreaSpecified { diff --git a/SabreTools.Metadata.DatItems/Formats/DiskArea.cs b/SabreTools.Metadata.DatItems/Formats/DiskArea.cs index 4f4061bd..3bda040b 100644 --- a/SabreTools.Metadata.DatItems/Formats/DiskArea.cs +++ b/SabreTools.Metadata.DatItems/Formats/DiskArea.cs @@ -11,13 +11,6 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("diskarea"), XmlRoot("diskarea")] public sealed class DiskArea : DatItem { - #region Fields - - /// /> - internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.DiskArea; - - #endregion - #region Constructors public DiskArea() : base() { } diff --git a/SabreTools.Metadata.DatItems/Formats/Display.cs b/SabreTools.Metadata.DatItems/Formats/Display.cs index e7ff0b0b..8921a2f6 100644 --- a/SabreTools.Metadata.DatItems/Formats/Display.cs +++ b/SabreTools.Metadata.DatItems/Formats/Display.cs @@ -11,13 +11,6 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("display"), XmlRoot("display")] public sealed class Display : DatItem { - #region Fields - - /// /> - internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Display; - - #endregion - #region Constructors public Display() : base() { } diff --git a/SabreTools.Metadata.DatItems/Formats/Driver.cs b/SabreTools.Metadata.DatItems/Formats/Driver.cs index 2fea004c..03a038bf 100644 --- a/SabreTools.Metadata.DatItems/Formats/Driver.cs +++ b/SabreTools.Metadata.DatItems/Formats/Driver.cs @@ -10,13 +10,6 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("driver"), XmlRoot("driver")] public sealed class Driver : DatItem { - #region Fields - - /// /> - internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Driver; - - #endregion - #region Constructors public Driver() : base() { } diff --git a/SabreTools.Metadata.DatItems/Formats/Extension.cs b/SabreTools.Metadata.DatItems/Formats/Extension.cs index b11fd9e7..cd1a3c51 100644 --- a/SabreTools.Metadata.DatItems/Formats/Extension.cs +++ b/SabreTools.Metadata.DatItems/Formats/Extension.cs @@ -10,13 +10,6 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("extension"), XmlRoot("extension")] public sealed class Extension : DatItem { - #region Fields - - /// /> - internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Extension; - - #endregion - #region Constructors public Extension() : base() { } diff --git a/SabreTools.Metadata.DatItems/Formats/Feature.cs b/SabreTools.Metadata.DatItems/Formats/Feature.cs index 735ae025..dea27133 100644 --- a/SabreTools.Metadata.DatItems/Formats/Feature.cs +++ b/SabreTools.Metadata.DatItems/Formats/Feature.cs @@ -10,13 +10,6 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("feature"), XmlRoot("feature")] public sealed class Feature : DatItem { - #region Fields - - /// /> - internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Feature; - - #endregion - #region Constructors public Feature() : base() { } diff --git a/SabreTools.Metadata.DatItems/Formats/File.cs b/SabreTools.Metadata.DatItems/Formats/File.cs index fd132ebd..4acc452b 100644 --- a/SabreTools.Metadata.DatItems/Formats/File.cs +++ b/SabreTools.Metadata.DatItems/Formats/File.cs @@ -27,7 +27,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Fields /// /> - internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.File; + public override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.File; /// /// ID value diff --git a/SabreTools.Metadata.DatItems/Formats/Info.cs b/SabreTools.Metadata.DatItems/Formats/Info.cs index fe9421f2..1908073a 100644 --- a/SabreTools.Metadata.DatItems/Formats/Info.cs +++ b/SabreTools.Metadata.DatItems/Formats/Info.cs @@ -10,13 +10,6 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("info"), XmlRoot("info")] public sealed class Info : DatItem { - #region Fields - - /// /> - internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Info; - - #endregion - #region Constructors public Info() : base() { } diff --git a/SabreTools.Metadata.DatItems/Formats/Input.cs b/SabreTools.Metadata.DatItems/Formats/Input.cs index 811e5daf..2b71950f 100644 --- a/SabreTools.Metadata.DatItems/Formats/Input.cs +++ b/SabreTools.Metadata.DatItems/Formats/Input.cs @@ -13,9 +13,6 @@ namespace SabreTools.Metadata.DatItems.Formats { #region Fields - /// /> - internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Input; - [JsonIgnore] public bool ControlsSpecified { diff --git a/SabreTools.Metadata.DatItems/Formats/Instance.cs b/SabreTools.Metadata.DatItems/Formats/Instance.cs index 3ac50eca..b50addd5 100644 --- a/SabreTools.Metadata.DatItems/Formats/Instance.cs +++ b/SabreTools.Metadata.DatItems/Formats/Instance.cs @@ -10,13 +10,6 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("instance"), XmlRoot("instance")] public sealed class Instance : DatItem { - #region Fields - - /// /> - internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Instance; - - #endregion - #region Constructors public Instance() : base() { } diff --git a/SabreTools.Metadata.DatItems/Formats/Media.cs b/SabreTools.Metadata.DatItems/Formats/Media.cs index 483c8a36..8448773a 100644 --- a/SabreTools.Metadata.DatItems/Formats/Media.cs +++ b/SabreTools.Metadata.DatItems/Formats/Media.cs @@ -11,13 +11,6 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("media"), XmlRoot("media")] public sealed class Media : DatItem { - #region Fields - - /// /> - internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Media; - - #endregion - #region Constructors public Media() : base() diff --git a/SabreTools.Metadata.DatItems/Formats/Part.cs b/SabreTools.Metadata.DatItems/Formats/Part.cs index a4cae2d1..1ac80150 100644 --- a/SabreTools.Metadata.DatItems/Formats/Part.cs +++ b/SabreTools.Metadata.DatItems/Formats/Part.cs @@ -13,9 +13,6 @@ namespace SabreTools.Metadata.DatItems.Formats { #region Fields - /// /> - internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Part; - [JsonIgnore] public bool FeaturesSpecified { diff --git a/SabreTools.Metadata.DatItems/Formats/PartFeature.cs b/SabreTools.Metadata.DatItems/Formats/PartFeature.cs index fa31e20a..a2be2f3c 100644 --- a/SabreTools.Metadata.DatItems/Formats/PartFeature.cs +++ b/SabreTools.Metadata.DatItems/Formats/PartFeature.cs @@ -22,7 +22,8 @@ namespace SabreTools.Metadata.DatItems.Formats #region Fields /// /> - internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.PartFeature; + /// This needs to be set to PartFeature because internally it uses Feature + public override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.PartFeature; #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/Port.cs b/SabreTools.Metadata.DatItems/Formats/Port.cs index 9a38a1be..d98745e8 100644 --- a/SabreTools.Metadata.DatItems/Formats/Port.cs +++ b/SabreTools.Metadata.DatItems/Formats/Port.cs @@ -13,9 +13,6 @@ namespace SabreTools.Metadata.DatItems.Formats { #region Fields - /// /> - internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Port; - [JsonIgnore] public bool AnalogsSpecified { diff --git a/SabreTools.Metadata.DatItems/Formats/RamOption.cs b/SabreTools.Metadata.DatItems/Formats/RamOption.cs index d1f9cd12..0546dfe2 100644 --- a/SabreTools.Metadata.DatItems/Formats/RamOption.cs +++ b/SabreTools.Metadata.DatItems/Formats/RamOption.cs @@ -10,13 +10,6 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("ramoption"), XmlRoot("ramoption")] public sealed class RamOption : DatItem { - #region Fields - - /// /> - internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.RamOption; - - #endregion - #region Constructors public RamOption() : base() { } diff --git a/SabreTools.Metadata.DatItems/Formats/Release.cs b/SabreTools.Metadata.DatItems/Formats/Release.cs index 5a5637b2..8e142259 100644 --- a/SabreTools.Metadata.DatItems/Formats/Release.cs +++ b/SabreTools.Metadata.DatItems/Formats/Release.cs @@ -10,13 +10,6 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("release"), XmlRoot("release")] public sealed class Release : DatItem { - #region Fields - - /// /> - internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Release; - - #endregion - #region Constructors public Release() : base() { } diff --git a/SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs b/SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs index 0beb5f56..16b8f80c 100644 --- a/SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs +++ b/SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs @@ -10,13 +10,6 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("release_details"), XmlRoot("release_details")] public sealed class ReleaseDetails : DatItem { - #region Fields - - /// /> - internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.ReleaseDetails; - - #endregion - #region Constructors public ReleaseDetails() : base() { } diff --git a/SabreTools.Metadata.DatItems/Formats/Rom.cs b/SabreTools.Metadata.DatItems/Formats/Rom.cs index 1ea42c6c..005110e7 100644 --- a/SabreTools.Metadata.DatItems/Formats/Rom.cs +++ b/SabreTools.Metadata.DatItems/Formats/Rom.cs @@ -28,9 +28,6 @@ namespace SabreTools.Metadata.DatItems.Formats #region Fields - /// /> - internal override ItemType ItemType => ItemType.Rom; - [JsonIgnore] public bool ItemStatusSpecified { diff --git a/SabreTools.Metadata.DatItems/Formats/Sample.cs b/SabreTools.Metadata.DatItems/Formats/Sample.cs index 5fbf2932..06454412 100644 --- a/SabreTools.Metadata.DatItems/Formats/Sample.cs +++ b/SabreTools.Metadata.DatItems/Formats/Sample.cs @@ -10,13 +10,6 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("sample"), XmlRoot("sample")] public class Sample : DatItem { - #region Fields - - /// /> - internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Sample; - - #endregion - #region Constructors public Sample() : base() { } diff --git a/SabreTools.Metadata.DatItems/Formats/Serials.cs b/SabreTools.Metadata.DatItems/Formats/Serials.cs index 7fc10ae1..8d8a8a4a 100644 --- a/SabreTools.Metadata.DatItems/Formats/Serials.cs +++ b/SabreTools.Metadata.DatItems/Formats/Serials.cs @@ -10,13 +10,6 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("serials"), XmlRoot("serials")] public sealed class Serials : DatItem { - #region Fields - - /// /> - internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Serials; - - #endregion - #region Constructors public Serials() : base() { } diff --git a/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs b/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs index 8c812e4b..63ba7ae3 100644 --- a/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs +++ b/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs @@ -10,13 +10,6 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("sharedfeat"), XmlRoot("sharedfeat")] public sealed class SharedFeat : DatItem { - #region Fields - - /// /> - internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.SharedFeat; - - #endregion - #region Constructors public SharedFeat() : base() { } diff --git a/SabreTools.Metadata.DatItems/Formats/Slot.cs b/SabreTools.Metadata.DatItems/Formats/Slot.cs index 1d17bdac..06f97768 100644 --- a/SabreTools.Metadata.DatItems/Formats/Slot.cs +++ b/SabreTools.Metadata.DatItems/Formats/Slot.cs @@ -13,9 +13,6 @@ namespace SabreTools.Metadata.DatItems.Formats { #region Fields - /// /> - internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Slot; - [JsonIgnore] public bool SlotOptionsSpecified { diff --git a/SabreTools.Metadata.DatItems/Formats/SlotOption.cs b/SabreTools.Metadata.DatItems/Formats/SlotOption.cs index c02768a5..73f90bd6 100644 --- a/SabreTools.Metadata.DatItems/Formats/SlotOption.cs +++ b/SabreTools.Metadata.DatItems/Formats/SlotOption.cs @@ -10,13 +10,6 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("slotoption"), XmlRoot("slotoption")] public sealed class SlotOption : DatItem { - #region Fields - - /// /> - internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.SlotOption; - - #endregion - #region Constructors public SlotOption() : base() { } diff --git a/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs b/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs index ff686638..c6516287 100644 --- a/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs +++ b/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs @@ -10,13 +10,6 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("softwarelist"), XmlRoot("softwarelist")] public sealed class SoftwareList : DatItem { - #region Fields - - /// /> - internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.SoftwareList; - - #endregion - #region Constructors public SoftwareList() : base() { } diff --git a/SabreTools.Metadata.DatItems/Formats/Sound.cs b/SabreTools.Metadata.DatItems/Formats/Sound.cs index e9a51763..3716fa56 100644 --- a/SabreTools.Metadata.DatItems/Formats/Sound.cs +++ b/SabreTools.Metadata.DatItems/Formats/Sound.cs @@ -10,13 +10,6 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("sound"), XmlRoot("sound")] public sealed class Sound : DatItem { - #region Fields - - /// /> - internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Sound; - - #endregion - #region Constructors public Sound() : base() { } diff --git a/SabreTools.Metadata.DatItems/Formats/SourceDetails.cs b/SabreTools.Metadata.DatItems/Formats/SourceDetails.cs index baf8dc70..00d189d4 100644 --- a/SabreTools.Metadata.DatItems/Formats/SourceDetails.cs +++ b/SabreTools.Metadata.DatItems/Formats/SourceDetails.cs @@ -10,13 +10,6 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("source_details"), XmlRoot("source_details")] public sealed class SourceDetails : DatItem { - #region Fields - - /// /> - internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.SourceDetails; - - #endregion - #region Constructors public SourceDetails() : base() { } diff --git a/SabreTools.Metadata.DatItems/SabreTools.Metadata.DatItems.csproj b/SabreTools.Metadata.DatItems/SabreTools.Metadata.DatItems.csproj index 5cc3061c..32969615 100644 --- a/SabreTools.Metadata.DatItems/SabreTools.Metadata.DatItems.csproj +++ b/SabreTools.Metadata.DatItems/SabreTools.Metadata.DatItems.csproj @@ -30,10 +30,6 @@ - - - - From 5812d197a5ae89510b0eab65d0d3a3a81a525652 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Wed, 1 Apr 2026 13:18:45 -0400 Subject: [PATCH 003/142] Change Name to concrete property --- README.MD | 2 +- .../MetadataExtensionsTests.cs | 26 ++-- .../MetadataExtensions.cs | 131 +++++++++-------- SabreTools.Data.Models/Metadata/Adjuster.cs | 6 + SabreTools.Data.Models/Metadata/Archive.cs | 6 + SabreTools.Data.Models/Metadata/BiosSet.cs | 6 + SabreTools.Data.Models/Metadata/Chip.cs | 6 + .../Metadata/ConfLocation.cs | 6 + .../Metadata/ConfSetting.cs | 6 + .../Metadata/Configuration.cs | 6 + SabreTools.Data.Models/Metadata/DataArea.cs | 6 + SabreTools.Data.Models/Metadata/DeviceRef.cs | 6 + .../Metadata/DipLocation.cs | 6 + SabreTools.Data.Models/Metadata/DipSwitch.cs | 6 + SabreTools.Data.Models/Metadata/DipValue.cs | 6 + SabreTools.Data.Models/Metadata/Disk.cs | 6 + SabreTools.Data.Models/Metadata/DiskArea.cs | 6 + SabreTools.Data.Models/Metadata/Extension.cs | 6 + SabreTools.Data.Models/Metadata/Feature.cs | 6 + SabreTools.Data.Models/Metadata/Header.cs | 6 + SabreTools.Data.Models/Metadata/Info.cs | 6 + SabreTools.Data.Models/Metadata/Instance.cs | 6 + SabreTools.Data.Models/Metadata/Machine.cs | 6 + SabreTools.Data.Models/Metadata/Media.cs | 6 + SabreTools.Data.Models/Metadata/Part.cs | 6 + SabreTools.Data.Models/Metadata/RamOption.cs | 6 + SabreTools.Data.Models/Metadata/Release.cs | 6 + SabreTools.Data.Models/Metadata/Rom.cs | 6 + SabreTools.Data.Models/Metadata/Sample.cs | 6 + SabreTools.Data.Models/Metadata/SharedFeat.cs | 6 + SabreTools.Data.Models/Metadata/Slot.cs | 6 + SabreTools.Data.Models/Metadata/SlotOption.cs | 6 + SabreTools.Data.Models/Metadata/Software.cs | 6 + .../Metadata/SoftwareList.cs | 6 + .../DatFileTests.Filtering.cs | 24 ++-- .../DatFileTests.FromMetadata.cs | 122 ++++++++-------- .../DatFileTests.ToMetadata.cs | 60 ++++---- .../DatFileTests.cs | 88 ++++++------ .../DatHeaderTests.cs | 16 +-- .../ItemDictionaryDBTests.cs | 4 +- .../DatFile.FromMetadata.cs | 7 +- .../DatFile.ToMetadata.cs | 38 ++--- SabreTools.Metadata.DatFiles/DatFile.cs | 4 +- SabreTools.Metadata.DatFiles/DatHeader.cs | 6 + .../DatItemTests.cs | 4 +- .../Formats/DiskTests.cs | 8 +- .../Formats/FileTests.cs | 4 +- .../Formats/MediaTests.cs | 4 +- .../Formats/RomTests.cs | 2 +- .../MachineTests.cs | 15 +- SabreTools.Metadata.DatItems/Formats/Disk.cs | 4 +- .../FilterObjectTests.cs | 72 +++++----- .../FilterRunnerTests.cs | 16 +-- SabreTools.Metadata.Filter/FilterObject.cs | 132 ++++++++++++++---- .../DictionaryBaseExtensionsTests.cs | 116 +++++++-------- .../DictionaryBaseExtensions.cs | 12 +- .../ArchiveDotOrg.Deserializer.cs | 2 +- .../ArchiveDotOrg.Serializer.cs | 4 +- .../AttractMode.Deserializer.cs | 4 +- .../AttractMode.Serializer.cs | 4 +- .../ClrMamePro.Deserializer.cs | 22 +-- .../ClrMamePro.Serializer.cs | 22 +-- .../DosCenter.Deserializer.cs | 6 +- .../DosCenter.Serializer.cs | 6 +- .../EverdriveSMDB.Deserializer.cs | 2 +- .../EverdriveSMDB.Serializer.cs | 4 +- .../Hashfile.Deserializer.cs | 22 +-- .../Hashfile.Serializer.cs | 24 ++-- .../Listrom.Deserializer.cs | 8 +- .../Listrom.Serializer.cs | 10 +- .../Listxml.Deserializer.cs | 40 +++--- .../Listxml.Serializer.cs | 40 +++--- .../Logiqx.Deserializer.cs | 22 +-- .../Logiqx.Serializer.cs | 22 +-- .../OfflineList.Deserializer.cs | 6 +- .../OfflineList.Serializer.cs | 4 +- .../OpenMSX.Deserializer.cs | 2 +- .../OpenMSX.Serializer.cs | 2 +- .../RomCenter.Deserializer.cs | 4 +- .../RomCenter.Serializer.cs | 4 +- .../SeparatedValue.Deserializer.cs | 18 +-- .../SeparatedValue.Serializer.cs | 10 +- .../SoftwareList.Deserializer.cs | 24 ++-- .../SoftwareList.Serializer.cs | 24 ++-- 84 files changed, 871 insertions(+), 594 deletions(-) diff --git a/README.MD b/README.MD index 5bdad96b..b5edf963 100644 --- a/README.MD +++ b/README.MD @@ -8,7 +8,7 @@ Find the link to the Nuget package [here](https://www.nuget.org/packages/SabreTo ## Releases -For the most recent stable build, download the latest release here: [Releases Page](https://github.com/SabreTools/SabreTools.Serialization/releases) +For the most recent stable build, download the latest release where: [Releases Page](https://github.com/SabreTools/SabreTools.Serialization/releases) For the latest WIP build here: [Rolling Release](https://github.com/SabreTools/SabreTools.Serialization/releases/tag/rolling) diff --git a/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs b/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs index e7c86d78..05672d49 100644 --- a/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs +++ b/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs @@ -23,9 +23,9 @@ namespace SabreTools.Data.Extensions.Test Rom? actual = self.ConvertToRom(); Assert.NotNull(actual); - Assert.Equal(7, actual.Count); + Assert.Equal(6, actual.Count); Assert.Equal(ItemType.Rom, actual.ItemType); - Assert.Null(actual[Rom.NameKey]); + Assert.Null(actual.Name); Assert.Null(actual[Rom.MergeKey]); Assert.Null(actual[Rom.RegionKey]); Assert.Null(actual[Rom.StatusKey]); @@ -39,7 +39,7 @@ namespace SabreTools.Data.Extensions.Test { DictionaryBase? self = new Disk { - [Disk.NameKey] = "XXXXXX", + Name = "XXXXXX", [Disk.MergeKey] = "XXXXXX", [Disk.RegionKey] = "XXXXXX", [Disk.StatusKey] = "XXXXXX", @@ -51,9 +51,9 @@ namespace SabreTools.Data.Extensions.Test Rom? actual = self.ConvertToRom(); Assert.NotNull(actual); - Assert.Equal(7, actual.Count); + Assert.Equal(6, actual.Count); Assert.Equal(ItemType.Rom, actual.ItemType); - Assert.Equal("XXXXXX.chd", actual[Rom.NameKey]); + Assert.Equal("XXXXXX.chd", actual.Name); Assert.Equal("XXXXXX", actual[Rom.MergeKey]); Assert.Equal("XXXXXX", actual[Rom.RegionKey]); Assert.Equal("XXXXXX", actual[Rom.StatusKey]); @@ -69,9 +69,9 @@ namespace SabreTools.Data.Extensions.Test Rom? actual = self.ConvertToRom(); Assert.NotNull(actual); - Assert.Equal(5, actual.Count); + Assert.Equal(4, actual.Count); Assert.Equal(ItemType.Rom, actual.ItemType); - Assert.Null(actual[Rom.NameKey]); + Assert.Null(actual.Name); Assert.Null(actual[Rom.MD5Key]); Assert.Null(actual[Rom.SHA1Key]); Assert.Null(actual[Rom.SHA256Key]); @@ -83,7 +83,7 @@ namespace SabreTools.Data.Extensions.Test { DictionaryBase? self = new Media { - [Media.NameKey] = "XXXXXX", + Name = "XXXXXX", [Media.MD5Key] = "XXXXXX", [Media.SHA1Key] = "XXXXXX", [Media.SHA256Key] = "XXXXXX", @@ -93,9 +93,9 @@ namespace SabreTools.Data.Extensions.Test Rom? actual = self.ConvertToRom(); Assert.NotNull(actual); - Assert.Equal(5, actual.Count); + Assert.Equal(4, actual.Count); Assert.Equal(ItemType.Rom, actual.ItemType); - Assert.Equal("XXXXXX.aaruf", actual[Rom.NameKey]); + Assert.Equal("XXXXXX.aaruf", actual.Name); Assert.Equal("XXXXXX", actual[Rom.MD5Key]); Assert.Equal("XXXXXX", actual[Rom.SHA1Key]); Assert.Equal("XXXXXX", actual[Rom.SHA256Key]); @@ -1501,7 +1501,7 @@ namespace SabreTools.Data.Extensions.Test DictionaryBase other = new Disk(); self.FillMissingHashes(other); - Assert.Single(self); + Assert.Empty(self); } [Fact] @@ -1523,7 +1523,7 @@ namespace SabreTools.Data.Extensions.Test DictionaryBase self = new Media(); DictionaryBase other = new Media(); self.FillMissingHashes(other); - Assert.Single(self); + Assert.Empty(self); } [Fact] @@ -1547,7 +1547,7 @@ namespace SabreTools.Data.Extensions.Test DictionaryBase self = new Rom(); DictionaryBase other = new Rom(); self.FillMissingHashes(other); - Assert.Single(self); + Assert.Empty(self); } [Fact] diff --git a/SabreTools.Data.Extensions/MetadataExtensions.cs b/SabreTools.Data.Extensions/MetadataExtensions.cs index c46fece7..36d8c2ca 100644 --- a/SabreTools.Data.Extensions/MetadataExtensions.cs +++ b/SabreTools.Data.Extensions/MetadataExtensions.cs @@ -20,46 +20,48 @@ namespace SabreTools.Data.Extensions return self switch { - Machine => self.ReadString(Machine.NameKey), + Header header => header.Name, - Adjuster => self.ReadString(Adjuster.NameKey), + Machine machine => machine.Name, + + Adjuster adjuster => adjuster.Name, Analog => null, - Archive => self.ReadString(Archive.NameKey), - BiosSet => self.ReadString(BiosSet.NameKey), - Chip => self.ReadString(Chip.NameKey), + Archive archive => archive.Name, + BiosSet biosSet => biosSet.Name, + Chip chip => chip.Name, Condition => null, - ConfLocation => self.ReadString(ConfLocation.NameKey), - ConfSetting => self.ReadString(ConfSetting.NameKey), - Configuration => self.ReadString(Configuration.NameKey), + ConfLocation confLocation => confLocation.Name, + ConfSetting confSetting => confSetting.Name, + Configuration configuration => configuration.Name, Control => null, - DataArea => self.ReadString(DataArea.NameKey), + DataArea dataArea => dataArea.Name, Device => null, - DeviceRef => self.ReadString(DeviceRef.NameKey), - DipLocation => self.ReadString(DipLocation.NameKey), - DipSwitch => self.ReadString(DipSwitch.NameKey), - DipValue => self.ReadString(DipValue.NameKey), - Disk => self.ReadString(Disk.NameKey), - DiskArea => self.ReadString(DiskArea.NameKey), + DeviceRef deviceRef => deviceRef.Name, + DipLocation dipLocation => dipLocation.Name, + DipSwitch dipSwitch => dipSwitch.Name, + DipValue dipValue => dipValue.Name, + Disk disk => disk.Name, + DiskArea diskArea => diskArea.Name, Display => null, Driver => null, - Extension => self.ReadString(Extension.NameKey), - Feature => self.ReadString(Feature.NameKey), - Info => self.ReadString(Info.NameKey), + Extension extension => extension.Name, + Feature feature => feature.Name, + Info info => info.Name, Input => null, - Instance => self.ReadString(Instance.NameKey), - Media => self.ReadString(Media.NameKey), - Part => self.ReadString(Part.NameKey), + Instance instance => instance.Name, + Media media => media.Name, + Part part => part.Name, Port => null, - RamOption => self.ReadString(RamOption.NameKey), - Release => self.ReadString(Release.NameKey), + RamOption ramOption => ramOption.Name, + Release release => release.Name, ReleaseDetails => null, - Rom => self.ReadString(Rom.NameKey), - Sample => self.ReadString(Sample.NameKey), + Rom rom => rom.Name, + Sample sample => sample.Name, Serials => null, - SharedFeat => self.ReadString(SharedFeat.NameKey), - Slot => self.ReadString(Slot.NameKey), - SlotOption => self.ReadString(SlotOption.NameKey), - SoftwareList => self.ReadString(SoftwareList.NameKey), + SharedFeat sharedFeat => sharedFeat.Name, + Slot slot => slot.Name, + SlotOption slotOption => slotOption.Name, + SoftwareList softwareList => softwareList.Name, Sound => null, SourceDetails => null, Video => null, @@ -78,46 +80,48 @@ namespace SabreTools.Data.Extensions switch (self) { - case Machine: self[Machine.NameKey] = name; break; + case Header header: header.Name = name; break; - case Adjuster: self[Adjuster.NameKey] = name; break; + case Machine machine: machine.Name = name; break; + + case Adjuster adjuster: adjuster.Name = name; break; case Analog: break; - case Archive: self[Archive.NameKey] = name; break; - case BiosSet: self[BiosSet.NameKey] = name; break; - case Chip: self[Chip.NameKey] = name; break; + case Archive archive: archive.Name = name; break; + case BiosSet biosSet: biosSet.Name = name; break; + case Chip chip: chip.Name = name; break; case Condition: break; - case ConfLocation: self[ConfLocation.NameKey] = name; break; - case ConfSetting: self[ConfSetting.NameKey] = name; break; - case Configuration: self[Configuration.NameKey] = name; break; + case ConfLocation confLocation: confLocation.Name = name; break; + case ConfSetting confSetting: confSetting.Name = name; break; + case Configuration configuration: configuration.Name = name; break; case Control: break; - case DataArea: self[DataArea.NameKey] = name; break; + case DataArea dataArea: dataArea.Name = name; break; case Device: break; - case DeviceRef: self[DeviceRef.NameKey] = name; break; - case DipLocation: self[DipLocation.NameKey] = name; break; - case DipSwitch: self[DipSwitch.NameKey] = name; break; - case DipValue: self[DipValue.NameKey] = name; break; - case Disk: self[Disk.NameKey] = name; break; - case DiskArea: self[DiskArea.NameKey] = name; break; + case DeviceRef deviceRef: deviceRef.Name = name; break; + case DipLocation dipLocation: dipLocation.Name = name; break; + case DipSwitch dipSwitch: dipSwitch.Name = name; break; + case DipValue dipValue: dipValue.Name = name; break; + case Disk disk: disk.Name = name; break; + case DiskArea diskArea: diskArea.Name = name; break; case Display: break; case Driver: break; - case Extension: self[Extension.NameKey] = name; break; - case Feature: self[Feature.NameKey] = name; break; - case Info: self[Info.NameKey] = name; break; + case Extension extension: extension.Name = name; break; + case Feature feature: feature.Name = name; break; + case Info info: info.Name = name; break; case Input: break; - case Instance: self[Instance.NameKey] = name; break; - case Media: self[Media.NameKey] = name; break; - case Part: self[Part.NameKey] = name; break; + case Instance instance: instance.Name = name; break; + case Media media: media.Name = name; break; + case Part part: part.Name = name; break; case Port: break; - case RamOption: self[RamOption.NameKey] = name; break; - case Release: self[Release.NameKey] = name; break; + case RamOption ramOption: ramOption.Name = name; break; + case Release release: release.Name = name; break; case ReleaseDetails: break; - case Rom: self[Rom.NameKey] = name; break; - case Sample: self[Sample.NameKey] = name; break; + case Rom rom: rom.Name = name; break; + case Sample sample: sample.Name = name; break; case Serials: break; - case SharedFeat: self[SharedFeat.NameKey] = name; break; - case Slot: self[Slot.NameKey] = name; break; - case SlotOption: self[SlotOption.NameKey] = name; break; - case SoftwareList: self[SoftwareList.NameKey] = name; break; + case SharedFeat sharedFeat: sharedFeat.Name = name; break; + case Slot slot: slot.Name = name; break; + case SlotOption slotOption: slotOption.Name = name; break; + case SoftwareList softwareList: softwareList.Name = name; break; case Sound: break; case SourceDetails: break; case Video: break; @@ -139,6 +143,9 @@ namespace SabreTools.Data.Extensions if (Activator.CreateInstance(self.GetType()) is not DictionaryBase clone) return null; + // Handle known properties + clone.SetName(self.GetName()); + // Loop through and clone per type foreach (string key in self.Keys) { @@ -196,13 +203,13 @@ namespace SabreTools.Data.Extensions return null; // Append a suffix to the name - string? name = disk.ReadString(Disk.NameKey); + string? name = disk.Name; if (name is not null) name += ".chd"; return new Rom { - [Rom.NameKey] = name, + Name = name, [Rom.MergeKey] = disk.ReadString(Disk.MergeKey), [Rom.RegionKey] = disk.ReadString(Disk.RegionKey), [Rom.StatusKey] = disk.ReadString(Disk.StatusKey), @@ -222,13 +229,13 @@ namespace SabreTools.Data.Extensions return null; // Append a suffix to the name - string? name = media.ReadString(Media.NameKey); + string? name = media.Name; if (name is not null) name += ".aaruf"; return new Rom { - [Rom.NameKey] = name, + Name = name, [Rom.MD5Key] = media.ReadString(Media.MD5Key), [Rom.SHA1Key] = media.ReadString(Media.SHA1Key), [Rom.SHA256Key] = media.ReadString(Media.SHA256Key), diff --git a/SabreTools.Data.Models/Metadata/Adjuster.cs b/SabreTools.Data.Models/Metadata/Adjuster.cs index cc057c04..93a92165 100644 --- a/SabreTools.Data.Models/Metadata/Adjuster.cs +++ b/SabreTools.Data.Models/Metadata/Adjuster.cs @@ -6,6 +6,12 @@ namespace SabreTools.Data.Models.Metadata [JsonObject("adjuster"), XmlRoot("adjuster")] public class Adjuster : DatItem { + #region Properties + + public string? Name { get; set; } + + #endregion + #region Keys // Condition diff --git a/SabreTools.Data.Models/Metadata/Archive.cs b/SabreTools.Data.Models/Metadata/Archive.cs index 44d47d00..12280858 100644 --- a/SabreTools.Data.Models/Metadata/Archive.cs +++ b/SabreTools.Data.Models/Metadata/Archive.cs @@ -6,6 +6,12 @@ namespace SabreTools.Data.Models.Metadata [JsonObject("archive"), XmlRoot("archive")] public class Archive : DatItem { + #region Properties + + public string? Name { get; set; } + + #endregion + #region Keys /// string, No-Intro DB extension diff --git a/SabreTools.Data.Models/Metadata/BiosSet.cs b/SabreTools.Data.Models/Metadata/BiosSet.cs index df3e3d1f..e5026427 100644 --- a/SabreTools.Data.Models/Metadata/BiosSet.cs +++ b/SabreTools.Data.Models/Metadata/BiosSet.cs @@ -6,6 +6,12 @@ namespace SabreTools.Data.Models.Metadata [JsonObject("biosset"), XmlRoot("biosset")] public class BiosSet : DatItem { + #region Properties + + public string? Name { get; set; } + + #endregion + #region Keys /// bool diff --git a/SabreTools.Data.Models/Metadata/Chip.cs b/SabreTools.Data.Models/Metadata/Chip.cs index 2348bfdd..29717274 100644 --- a/SabreTools.Data.Models/Metadata/Chip.cs +++ b/SabreTools.Data.Models/Metadata/Chip.cs @@ -6,6 +6,12 @@ namespace SabreTools.Data.Models.Metadata [JsonObject("chip"), XmlRoot("chip")] public class Chip : DatItem { + #region Properties + + public string? Name { get; set; } + + #endregion + #region Keys /// long diff --git a/SabreTools.Data.Models/Metadata/ConfLocation.cs b/SabreTools.Data.Models/Metadata/ConfLocation.cs index ada4f513..84f95648 100644 --- a/SabreTools.Data.Models/Metadata/ConfLocation.cs +++ b/SabreTools.Data.Models/Metadata/ConfLocation.cs @@ -6,6 +6,12 @@ namespace SabreTools.Data.Models.Metadata [JsonObject("conflocation"), XmlRoot("conflocation")] public class ConfLocation : DatItem { + #region Properties + + public string? Name { get; set; } + + #endregion + #region Keys /// (yes|no) "no" diff --git a/SabreTools.Data.Models/Metadata/ConfSetting.cs b/SabreTools.Data.Models/Metadata/ConfSetting.cs index a4c7131c..8f61ce32 100644 --- a/SabreTools.Data.Models/Metadata/ConfSetting.cs +++ b/SabreTools.Data.Models/Metadata/ConfSetting.cs @@ -6,6 +6,12 @@ namespace SabreTools.Data.Models.Metadata [JsonObject("confsetting"), XmlRoot("confsetting")] public class ConfSetting : DatItem { + #region Properties + + public string? Name { get; set; } + + #endregion + #region Keys /// Condition diff --git a/SabreTools.Data.Models/Metadata/Configuration.cs b/SabreTools.Data.Models/Metadata/Configuration.cs index dd793423..120ba827 100644 --- a/SabreTools.Data.Models/Metadata/Configuration.cs +++ b/SabreTools.Data.Models/Metadata/Configuration.cs @@ -6,6 +6,12 @@ namespace SabreTools.Data.Models.Metadata [JsonObject("configuration"), XmlRoot("configuration")] public class Configuration : DatItem { + #region Properties + + public string? Name { get; set; } + + #endregion + #region Keys /// Condition diff --git a/SabreTools.Data.Models/Metadata/DataArea.cs b/SabreTools.Data.Models/Metadata/DataArea.cs index 2d2e4fb4..2ad809ae 100644 --- a/SabreTools.Data.Models/Metadata/DataArea.cs +++ b/SabreTools.Data.Models/Metadata/DataArea.cs @@ -6,6 +6,12 @@ namespace SabreTools.Data.Models.Metadata [JsonObject("dataarea"), XmlRoot("dataarea")] public class DataArea : DatItem { + #region Properties + + public string? Name { get; set; } + + #endregion + #region Keys /// (big|little) "little" diff --git a/SabreTools.Data.Models/Metadata/DeviceRef.cs b/SabreTools.Data.Models/Metadata/DeviceRef.cs index a83e31d8..6da889da 100644 --- a/SabreTools.Data.Models/Metadata/DeviceRef.cs +++ b/SabreTools.Data.Models/Metadata/DeviceRef.cs @@ -6,6 +6,12 @@ namespace SabreTools.Data.Models.Metadata [JsonObject("device_ref"), XmlRoot("device_ref")] public class DeviceRef : DatItem { + #region Properties + + public string? Name { get; set; } + + #endregion + #region Keys /// string diff --git a/SabreTools.Data.Models/Metadata/DipLocation.cs b/SabreTools.Data.Models/Metadata/DipLocation.cs index 4535667b..3a344d33 100644 --- a/SabreTools.Data.Models/Metadata/DipLocation.cs +++ b/SabreTools.Data.Models/Metadata/DipLocation.cs @@ -6,6 +6,12 @@ namespace SabreTools.Data.Models.Metadata [JsonObject("diplocation"), XmlRoot("diplocation")] public class DipLocation : DatItem { + #region Properties + + public string? Name { get; set; } + + #endregion + #region Keys /// (yes|no) "no" diff --git a/SabreTools.Data.Models/Metadata/DipSwitch.cs b/SabreTools.Data.Models/Metadata/DipSwitch.cs index ff5b170c..6538d0a8 100644 --- a/SabreTools.Data.Models/Metadata/DipSwitch.cs +++ b/SabreTools.Data.Models/Metadata/DipSwitch.cs @@ -6,6 +6,12 @@ namespace SabreTools.Data.Models.Metadata [JsonObject("dipswitch"), XmlRoot("dipswitch")] public class DipSwitch : DatItem { + #region Properties + + public string? Name { get; set; } + + #endregion + #region Keys /// Condition diff --git a/SabreTools.Data.Models/Metadata/DipValue.cs b/SabreTools.Data.Models/Metadata/DipValue.cs index 53bae423..f4416636 100644 --- a/SabreTools.Data.Models/Metadata/DipValue.cs +++ b/SabreTools.Data.Models/Metadata/DipValue.cs @@ -6,6 +6,12 @@ namespace SabreTools.Data.Models.Metadata [JsonObject("dipvalue"), XmlRoot("dipvalue")] public class DipValue : DatItem { + #region Properties + + public string? Name { get; set; } + + #endregion + #region Keys /// Condition diff --git a/SabreTools.Data.Models/Metadata/Disk.cs b/SabreTools.Data.Models/Metadata/Disk.cs index dffda24e..ebb019f8 100644 --- a/SabreTools.Data.Models/Metadata/Disk.cs +++ b/SabreTools.Data.Models/Metadata/Disk.cs @@ -6,6 +6,12 @@ namespace SabreTools.Data.Models.Metadata [JsonObject("disk"), XmlRoot(elementName: "disk")] public class Disk : DatItem { + #region Properties + + public string? Name { get; set; } + + #endregion + #region Keys /// string diff --git a/SabreTools.Data.Models/Metadata/DiskArea.cs b/SabreTools.Data.Models/Metadata/DiskArea.cs index cb91efa3..5cd92483 100644 --- a/SabreTools.Data.Models/Metadata/DiskArea.cs +++ b/SabreTools.Data.Models/Metadata/DiskArea.cs @@ -6,6 +6,12 @@ namespace SabreTools.Data.Models.Metadata [JsonObject("diskarea"), XmlRoot("diskarea")] public class DiskArea : DatItem { + #region Properties + + public string? Name { get; set; } + + #endregion + #region Keys /// Disk[] diff --git a/SabreTools.Data.Models/Metadata/Extension.cs b/SabreTools.Data.Models/Metadata/Extension.cs index 66af6c6e..d5c912a1 100644 --- a/SabreTools.Data.Models/Metadata/Extension.cs +++ b/SabreTools.Data.Models/Metadata/Extension.cs @@ -6,6 +6,12 @@ namespace SabreTools.Data.Models.Metadata [JsonObject("extension"), XmlRoot("extension")] public class Extension : DatItem { + #region Properties + + public string? Name { get; set; } + + #endregion + #region Keys /// string diff --git a/SabreTools.Data.Models/Metadata/Feature.cs b/SabreTools.Data.Models/Metadata/Feature.cs index 7a3521e7..3ecadbe0 100644 --- a/SabreTools.Data.Models/Metadata/Feature.cs +++ b/SabreTools.Data.Models/Metadata/Feature.cs @@ -6,6 +6,12 @@ namespace SabreTools.Data.Models.Metadata [JsonObject("feature"), XmlRoot("feature")] public class Feature : DatItem { + #region Properties + + public string? Name { get; set; } + + #endregion + #region Keys /// string diff --git a/SabreTools.Data.Models/Metadata/Header.cs b/SabreTools.Data.Models/Metadata/Header.cs index 84addcdc..0851a8bc 100644 --- a/SabreTools.Data.Models/Metadata/Header.cs +++ b/SabreTools.Data.Models/Metadata/Header.cs @@ -6,6 +6,12 @@ namespace SabreTools.Data.Models.Metadata /// public class Header : DictionaryBase { + #region Properties + + public string? Name { get; set; } + + #endregion + #region Keys /// string diff --git a/SabreTools.Data.Models/Metadata/Info.cs b/SabreTools.Data.Models/Metadata/Info.cs index 4eeb3840..380b8eb1 100644 --- a/SabreTools.Data.Models/Metadata/Info.cs +++ b/SabreTools.Data.Models/Metadata/Info.cs @@ -6,6 +6,12 @@ namespace SabreTools.Data.Models.Metadata [JsonObject("info"), XmlRoot("info")] public class Info : DatItem { + #region Properties + + public string? Name { get; set; } + + #endregion + #region Keys /// string diff --git a/SabreTools.Data.Models/Metadata/Instance.cs b/SabreTools.Data.Models/Metadata/Instance.cs index df36275f..bcf5f4f4 100644 --- a/SabreTools.Data.Models/Metadata/Instance.cs +++ b/SabreTools.Data.Models/Metadata/Instance.cs @@ -6,6 +6,12 @@ namespace SabreTools.Data.Models.Metadata [JsonObject("instance"), XmlRoot("instance")] public class Instance : DatItem { + #region Properties + + public string? Name { get; set; } + + #endregion + #region Keys /// string diff --git a/SabreTools.Data.Models/Metadata/Machine.cs b/SabreTools.Data.Models/Metadata/Machine.cs index 3e258a5c..0bccb4fb 100644 --- a/SabreTools.Data.Models/Metadata/Machine.cs +++ b/SabreTools.Data.Models/Metadata/Machine.cs @@ -6,6 +6,12 @@ namespace SabreTools.Data.Models.Metadata /// public class Machine : DictionaryBase { + #region Properties + + public string? Name { get; set; } + + #endregion + #region Keys /// Adjuster[] diff --git a/SabreTools.Data.Models/Metadata/Media.cs b/SabreTools.Data.Models/Metadata/Media.cs index f00cb3c6..ee974675 100644 --- a/SabreTools.Data.Models/Metadata/Media.cs +++ b/SabreTools.Data.Models/Metadata/Media.cs @@ -6,6 +6,12 @@ namespace SabreTools.Data.Models.Metadata [JsonObject("media"), XmlRoot("media")] public class Media : DatItem { + #region Properties + + public string? Name { get; set; } + + #endregion + #region Keys /// string diff --git a/SabreTools.Data.Models/Metadata/Part.cs b/SabreTools.Data.Models/Metadata/Part.cs index 1b67de05..1e2a969e 100644 --- a/SabreTools.Data.Models/Metadata/Part.cs +++ b/SabreTools.Data.Models/Metadata/Part.cs @@ -6,6 +6,12 @@ namespace SabreTools.Data.Models.Metadata [JsonObject("part"), XmlRoot("part")] public class Part : DatItem { + #region Properties + + public string? Name { get; set; } + + #endregion + #region Keys /// DataArea[] diff --git a/SabreTools.Data.Models/Metadata/RamOption.cs b/SabreTools.Data.Models/Metadata/RamOption.cs index f39796b7..abe5f9b6 100644 --- a/SabreTools.Data.Models/Metadata/RamOption.cs +++ b/SabreTools.Data.Models/Metadata/RamOption.cs @@ -6,6 +6,12 @@ namespace SabreTools.Data.Models.Metadata [JsonObject("ramoption"), XmlRoot("ramoption")] public class RamOption : DatItem { + #region Properties + + public string? Name { get; set; } + + #endregion + #region Keys /// string diff --git a/SabreTools.Data.Models/Metadata/Release.cs b/SabreTools.Data.Models/Metadata/Release.cs index 0a6f5aa9..e32520a3 100644 --- a/SabreTools.Data.Models/Metadata/Release.cs +++ b/SabreTools.Data.Models/Metadata/Release.cs @@ -6,6 +6,12 @@ namespace SabreTools.Data.Models.Metadata [JsonObject("release"), XmlRoot("release")] public class Release : DatItem { + #region Properties + + public string? Name { get; set; } + + #endregion + #region Keys /// string diff --git a/SabreTools.Data.Models/Metadata/Rom.cs b/SabreTools.Data.Models/Metadata/Rom.cs index 92d0914d..2e97dfe7 100644 --- a/SabreTools.Data.Models/Metadata/Rom.cs +++ b/SabreTools.Data.Models/Metadata/Rom.cs @@ -6,6 +6,12 @@ namespace SabreTools.Data.Models.Metadata [JsonObject("rom"), XmlRoot("rom")] public class Rom : DatItem { + #region Properties + + public string? Name { get; set; } + + #endregion + #region Keys /// string; ArchiveDotOrg.File diff --git a/SabreTools.Data.Models/Metadata/Sample.cs b/SabreTools.Data.Models/Metadata/Sample.cs index 93a40b44..63ec55ec 100644 --- a/SabreTools.Data.Models/Metadata/Sample.cs +++ b/SabreTools.Data.Models/Metadata/Sample.cs @@ -6,6 +6,12 @@ namespace SabreTools.Data.Models.Metadata [JsonObject("sample"), XmlRoot("sample")] public class Sample : DatItem { + #region Properties + + public string? Name { get; set; } + + #endregion + #region Keys /// string diff --git a/SabreTools.Data.Models/Metadata/SharedFeat.cs b/SabreTools.Data.Models/Metadata/SharedFeat.cs index 6a2fe032..524848dc 100644 --- a/SabreTools.Data.Models/Metadata/SharedFeat.cs +++ b/SabreTools.Data.Models/Metadata/SharedFeat.cs @@ -6,6 +6,12 @@ namespace SabreTools.Data.Models.Metadata [JsonObject("sharedfeat"), XmlRoot("sharedfeat")] public class SharedFeat : DatItem { + #region Properties + + public string? Name { get; set; } + + #endregion + #region Keys /// string diff --git a/SabreTools.Data.Models/Metadata/Slot.cs b/SabreTools.Data.Models/Metadata/Slot.cs index abd99216..3b57cbf7 100644 --- a/SabreTools.Data.Models/Metadata/Slot.cs +++ b/SabreTools.Data.Models/Metadata/Slot.cs @@ -6,6 +6,12 @@ namespace SabreTools.Data.Models.Metadata [JsonObject("slot"), XmlRoot("slot")] public class Slot : DatItem { + #region Properties + + public string? Name { get; set; } + + #endregion + #region Keys /// string diff --git a/SabreTools.Data.Models/Metadata/SlotOption.cs b/SabreTools.Data.Models/Metadata/SlotOption.cs index 83388ac5..829b9bcd 100644 --- a/SabreTools.Data.Models/Metadata/SlotOption.cs +++ b/SabreTools.Data.Models/Metadata/SlotOption.cs @@ -6,6 +6,12 @@ namespace SabreTools.Data.Models.Metadata [JsonObject("slotoption"), XmlRoot("slotoption")] public class SlotOption : DatItem { + #region Properties + + public string? Name { get; set; } + + #endregion + #region Keys /// (yes|no) "no" diff --git a/SabreTools.Data.Models/Metadata/Software.cs b/SabreTools.Data.Models/Metadata/Software.cs index 44d991be..9e1450f0 100644 --- a/SabreTools.Data.Models/Metadata/Software.cs +++ b/SabreTools.Data.Models/Metadata/Software.cs @@ -6,6 +6,12 @@ namespace SabreTools.Data.Models.Metadata [JsonObject("software"), XmlRoot("software")] public class Software : DatItem { + #region Properties + + public string? Name { get; set; } + + #endregion + #region Keys /// string diff --git a/SabreTools.Data.Models/Metadata/SoftwareList.cs b/SabreTools.Data.Models/Metadata/SoftwareList.cs index 3642796d..ac6a912f 100644 --- a/SabreTools.Data.Models/Metadata/SoftwareList.cs +++ b/SabreTools.Data.Models/Metadata/SoftwareList.cs @@ -6,6 +6,12 @@ namespace SabreTools.Data.Models.Metadata [JsonObject("softwarelist"), XmlRoot("softwarelist")] public class SoftwareList : DatItem { + #region Properties + + public string? Name { get; set; } + + #endregion + #region Keys /// string diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.Filtering.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.Filtering.cs index 434da387..cbe19e54 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.Filtering.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.Filtering.cs @@ -20,7 +20,7 @@ namespace SabreTools.Metadata.DatFiles.Test Source source = new Source(0, source: null); Machine machine = new Machine(); - machine.Write(Data.Models.Metadata.Machine.NameKey, "machine"); + machine.SetName("machine"); DatItem datItem = new Rom(); datItem.SetName("rom.bin"); @@ -48,7 +48,7 @@ namespace SabreTools.Metadata.DatFiles.Test Source source = new Source(0, source: null); Machine machine = new Machine(); - machine.Write(Data.Models.Metadata.Machine.NameKey, "machine"); + machine.SetName("machine"); DatItem datItem = new Rom(); datItem.SetName("rom.bin"); @@ -79,7 +79,7 @@ namespace SabreTools.Metadata.DatFiles.Test Source source = new Source(0, source: null); Machine machine = new Machine(); - machine.Write(Data.Models.Metadata.Machine.NameKey, "machine"); + machine.SetName("machine"); machine.Write(Data.Models.Metadata.Machine.DescriptionKey, "description"); DatItem datItem = new Rom(); @@ -103,7 +103,7 @@ namespace SabreTools.Metadata.DatFiles.Test public void MachineDescriptionToName_ItemsDB() { Machine machine = new Machine(); - machine.Write(Data.Models.Metadata.Machine.NameKey, "machine"); + machine.SetName("machine"); machine.Write(Data.Models.Metadata.Machine.DescriptionKey, "description"); DatFile datFile = new Logiqx(datFile: null, useGame: false); @@ -126,7 +126,7 @@ namespace SabreTools.Metadata.DatFiles.Test Source source = new Source(0, source: null); Machine machine = new Machine(); - machine.Write(Data.Models.Metadata.Machine.NameKey, "machine"); + machine.SetName("machine"); DatItem rom = new Rom(); rom.SetName("rom.bin"); @@ -165,7 +165,7 @@ namespace SabreTools.Metadata.DatFiles.Test Source source = new Source(0, source: null); Machine machine = new Machine(); - machine.Write(Data.Models.Metadata.Machine.NameKey, "machine"); + machine.SetName("machine"); DatItem rom = new Rom(); rom.SetName("rom.bin"); @@ -204,10 +204,10 @@ namespace SabreTools.Metadata.DatFiles.Test public void SetOneGamePerRegion_Items() { Machine nowhereMachine = new Machine(); - nowhereMachine.Write(Data.Models.Metadata.Machine.NameKey, "machine (Nowhere)"); + nowhereMachine.SetName("machine (Nowhere)"); Machine worldMachine = new Machine(); - worldMachine.Write(Data.Models.Metadata.Machine.NameKey, "machine (World)"); + worldMachine.SetName("machine (World)"); worldMachine.Write(Data.Models.Metadata.Machine.CloneOfKey, "machine (Nowhere)"); DatItem nowhereRom = new Rom(); @@ -238,10 +238,10 @@ namespace SabreTools.Metadata.DatFiles.Test public void SetOneGamePerRegion_ItemsDB() { Machine nowhereMachine = new Machine(); - nowhereMachine.Write(Data.Models.Metadata.Machine.NameKey, "machine (Nowhere)"); + nowhereMachine.SetName("machine (Nowhere)"); Machine worldMachine = new Machine(); - worldMachine.Write(Data.Models.Metadata.Machine.NameKey, "machine (World)"); + worldMachine.SetName("machine (World)"); worldMachine.Write(Data.Models.Metadata.Machine.CloneOfKey, "machine (Nowhere)"); DatFile datFile = new Logiqx(datFile: null, useGame: false); @@ -266,7 +266,7 @@ namespace SabreTools.Metadata.DatFiles.Test Source source = new Source(0, source: null); Machine machine = new Machine(); - machine.Write(Data.Models.Metadata.Machine.NameKey, "10.10.10-machine-name"); + machine.SetName("10.10.10-machine-name"); DatItem datItem = new Rom(); datItem.Write(DatItem.MachineKey, machine); @@ -288,7 +288,7 @@ namespace SabreTools.Metadata.DatFiles.Test public void StripSceneDatesFromItems_ItemsDB() { Machine machine = new Machine(); - machine.Write(Data.Models.Metadata.Machine.NameKey, "10.10.10-machine-name"); + machine.SetName("10.10.10-machine-name"); DatFile datFile = new Logiqx(datFile: null, useGame: false); _ = datFile.AddMachineDB(machine); diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs index 51bfb603..231e2fab 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs @@ -227,7 +227,7 @@ namespace SabreTools.Metadata.DatFiles.Test [Data.Models.Metadata.Header.LockRomModeKey] = "yes", [Data.Models.Metadata.Header.LockSampleModeKey] = "yes", [Data.Models.Metadata.Header.MameConfigKey] = "mameconfig", - [Data.Models.Metadata.Header.NameKey] = "name", + Name = "name", [Data.Models.Metadata.Header.NewDatKey] = newDat, [Data.Models.Metadata.Header.NotesKey] = "notes", [Data.Models.Metadata.Header.PluginKey] = "plugin", @@ -297,7 +297,7 @@ namespace SabreTools.Metadata.DatFiles.Test [Data.Models.Metadata.Machine.LocationKey] = "location", [Data.Models.Metadata.Machine.ManufacturerKey] = "manufacturer", [Data.Models.Metadata.Machine.MediaKey] = new Data.Models.Metadata.Media[] { CreateMetadataMedia() }, - [Data.Models.Metadata.Machine.NameKey] = "name", + Name = "name", [Data.Models.Metadata.Machine.NotesKey] = "notes", [Data.Models.Metadata.Machine.PartKey] = new Data.Models.Metadata.Part[] { CreateMetadataPart() }, [Data.Models.Metadata.Machine.PlayedCountKey] = "playedcount", @@ -338,7 +338,7 @@ namespace SabreTools.Metadata.DatFiles.Test { [Data.Models.Metadata.Adjuster.ConditionKey] = CreateMetadataCondition(), [Data.Models.Metadata.Adjuster.DefaultKey] = true, - [Data.Models.Metadata.Adjuster.NameKey] = "name", + Name = "name", }; } @@ -359,7 +359,7 @@ namespace SabreTools.Metadata.DatFiles.Test [Data.Models.Metadata.Archive.RegParentKey] = "regparent", [Data.Models.Metadata.Archive.MergeOfKey] = "mergeof", [Data.Models.Metadata.Archive.MergeNameKey] = "mergename", - [Data.Models.Metadata.Archive.NameKey] = "name", + Name = "name", [Data.Models.Metadata.Archive.NameAltKey] = "name_alt", [Data.Models.Metadata.Archive.RegionKey] = "region", [Data.Models.Metadata.Archive.LanguagesKey] = "languages", @@ -396,7 +396,7 @@ namespace SabreTools.Metadata.DatFiles.Test { [Data.Models.Metadata.BiosSet.DefaultKey] = true, [Data.Models.Metadata.BiosSet.DescriptionKey] = "description", - [Data.Models.Metadata.BiosSet.NameKey] = "name", + Name = "name", }; } @@ -406,7 +406,7 @@ namespace SabreTools.Metadata.DatFiles.Test { [Data.Models.Metadata.Chip.ClockKey] = 12345L, [Data.Models.Metadata.Chip.FlagsKey] = "flags", - [Data.Models.Metadata.Chip.NameKey] = "name", + Name = "name", [Data.Models.Metadata.Chip.SoundOnlyKey] = "yes", [Data.Models.Metadata.Chip.TagKey] = "tag", [Data.Models.Metadata.Chip.ChipTypeKey] = "cpu", @@ -421,7 +421,7 @@ namespace SabreTools.Metadata.DatFiles.Test [Data.Models.Metadata.Configuration.ConfLocationKey] = new Data.Models.Metadata.ConfLocation[] { CreateMetadataConfLocation() }, [Data.Models.Metadata.Configuration.ConfSettingKey] = new Data.Models.Metadata.ConfSetting[] { CreateMetadataConfSetting() }, [Data.Models.Metadata.Configuration.MaskKey] = "mask", - [Data.Models.Metadata.Configuration.NameKey] = "name", + Name = "name", [Data.Models.Metadata.Configuration.TagKey] = "tag", }; } @@ -442,7 +442,7 @@ namespace SabreTools.Metadata.DatFiles.Test return new Data.Models.Metadata.ConfLocation { [Data.Models.Metadata.ConfLocation.InvertedKey] = "yes", - [Data.Models.Metadata.ConfLocation.NameKey] = "name", + Name = "name", [Data.Models.Metadata.ConfLocation.NumberKey] = "number", }; } @@ -453,7 +453,7 @@ namespace SabreTools.Metadata.DatFiles.Test { [Data.Models.Metadata.ConfSetting.ConditionKey] = CreateMetadataCondition(), [Data.Models.Metadata.ConfSetting.DefaultKey] = "yes", - [Data.Models.Metadata.ConfSetting.NameKey] = "name", + Name = "name", [Data.Models.Metadata.ConfSetting.ValueKey] = "value", }; } @@ -495,7 +495,7 @@ namespace SabreTools.Metadata.DatFiles.Test { return new Data.Models.Metadata.DeviceRef { - [Data.Models.Metadata.DeviceRef.NameKey] = "name", + Name = "name", }; } @@ -504,7 +504,7 @@ namespace SabreTools.Metadata.DatFiles.Test return new Data.Models.Metadata.DipLocation { [Data.Models.Metadata.DipLocation.InvertedKey] = "yes", - [Data.Models.Metadata.DipLocation.NameKey] = "name", + Name = "name", [Data.Models.Metadata.DipLocation.NumberKey] = "number", }; } @@ -519,7 +519,7 @@ namespace SabreTools.Metadata.DatFiles.Test [Data.Models.Metadata.DipSwitch.DipValueKey] = new Data.Models.Metadata.DipValue[] { CreateMetadataDipValue() }, [Data.Models.Metadata.DipSwitch.EntryKey] = new string[] { "entry" }, [Data.Models.Metadata.DipSwitch.MaskKey] = "mask", - [Data.Models.Metadata.DipSwitch.NameKey] = "name", + Name = "name", [Data.Models.Metadata.DipSwitch.TagKey] = "tag", }; } @@ -530,7 +530,7 @@ namespace SabreTools.Metadata.DatFiles.Test { [Data.Models.Metadata.DipValue.ConditionKey] = CreateMetadataCondition(), [Data.Models.Metadata.DipValue.DefaultKey] = "yes", - [Data.Models.Metadata.DipValue.NameKey] = "name", + Name = "name", [Data.Models.Metadata.DipValue.ValueKey] = "value", }; } @@ -540,7 +540,7 @@ namespace SabreTools.Metadata.DatFiles.Test return new Data.Models.Metadata.DataArea { [Data.Models.Metadata.DataArea.EndiannessKey] = "big", - [Data.Models.Metadata.DataArea.NameKey] = "name", + Name = "name", [Data.Models.Metadata.DataArea.RomKey] = new Data.Models.Metadata.Rom[] { [] }, [Data.Models.Metadata.DataArea.SizeKey] = 12345L, [Data.Models.Metadata.DataArea.WidthKey] = 64, @@ -555,7 +555,7 @@ namespace SabreTools.Metadata.DatFiles.Test [Data.Models.Metadata.Disk.IndexKey] = "index", [Data.Models.Metadata.Disk.MD5Key] = HashType.MD5.ZeroString, [Data.Models.Metadata.Disk.MergeKey] = "merge", - [Data.Models.Metadata.Disk.NameKey] = "name", + Name = "name", [Data.Models.Metadata.Disk.OptionalKey] = "yes", [Data.Models.Metadata.Disk.RegionKey] = "region", [Data.Models.Metadata.Disk.SHA1Key] = HashType.SHA1.ZeroString, @@ -568,7 +568,7 @@ namespace SabreTools.Metadata.DatFiles.Test return new Data.Models.Metadata.DiskArea { [Data.Models.Metadata.DiskArea.DiskKey] = new Data.Models.Metadata.Disk[] { [] }, - [Data.Models.Metadata.DiskArea.NameKey] = "name", + Name = "name", }; } @@ -631,7 +631,7 @@ namespace SabreTools.Metadata.DatFiles.Test { return new Data.Models.Metadata.Extension { - [Data.Models.Metadata.Extension.NameKey] = "name", + Name = "name", }; } @@ -639,7 +639,7 @@ namespace SabreTools.Metadata.DatFiles.Test { return new Data.Models.Metadata.Feature { - [Data.Models.Metadata.Feature.NameKey] = "name", + Name = "name", [Data.Models.Metadata.Feature.OverallKey] = "imperfect", [Data.Models.Metadata.Feature.StatusKey] = "imperfect", [Data.Models.Metadata.Feature.FeatureTypeKey] = "protection", @@ -651,7 +651,7 @@ namespace SabreTools.Metadata.DatFiles.Test { return new Data.Models.Metadata.Info { - [Data.Models.Metadata.Info.NameKey] = "name", + Name = "name", [Data.Models.Metadata.Info.ValueKey] = "value", }; } @@ -674,7 +674,7 @@ namespace SabreTools.Metadata.DatFiles.Test return new Data.Models.Metadata.Instance { [Data.Models.Metadata.Instance.BriefNameKey] = "briefname", - [Data.Models.Metadata.Instance.NameKey] = "name", + Name = "name", }; } @@ -683,7 +683,7 @@ namespace SabreTools.Metadata.DatFiles.Test return new Data.Models.Metadata.Media { [Data.Models.Metadata.Media.MD5Key] = HashType.MD5.ZeroString, - [Data.Models.Metadata.Media.NameKey] = "name", + Name = "name", [Data.Models.Metadata.Media.SHA1Key] = HashType.SHA1.ZeroString, [Data.Models.Metadata.Media.SHA256Key] = HashType.SHA256.ZeroString, [Data.Models.Metadata.Media.SpamSumKey] = HashType.SpamSum.ZeroString, @@ -708,7 +708,7 @@ namespace SabreTools.Metadata.DatFiles.Test [Data.Models.Metadata.Part.DipSwitchKey] = new Data.Models.Metadata.DipSwitch[] { [] }, [Data.Models.Metadata.Part.FeatureKey] = new Data.Models.Metadata.Feature[] { CreateMetadataFeature() }, [Data.Models.Metadata.Part.InterfaceKey] = "interface", - [Data.Models.Metadata.Part.NameKey] = "name", + Name = "name", }; } @@ -727,7 +727,7 @@ namespace SabreTools.Metadata.DatFiles.Test { [Data.Models.Metadata.RamOption.ContentKey] = "content", [Data.Models.Metadata.RamOption.DefaultKey] = "yes", - [Data.Models.Metadata.RamOption.NameKey] = "name", + Name = "name", }; } @@ -738,7 +738,7 @@ namespace SabreTools.Metadata.DatFiles.Test [Data.Models.Metadata.Release.DateKey] = "date", [Data.Models.Metadata.Release.DefaultKey] = "yes", [Data.Models.Metadata.Release.LanguageKey] = "language", - [Data.Models.Metadata.Release.NameKey] = "name", + Name = "name", [Data.Models.Metadata.Release.RegionKey] = "region", }; } @@ -813,7 +813,7 @@ namespace SabreTools.Metadata.DatFiles.Test // [Data.Models.Metadata.Rom.OpenMSXMediaType] = null, // Omit due to other test [Data.Models.Metadata.Rom.MergeKey] = "merge", [Data.Models.Metadata.Rom.MIAKey] = "yes", - [Data.Models.Metadata.Rom.NameKey] = "name", + Name = "name", [Data.Models.Metadata.Rom.TesseractOCRKey] = "ocr", [Data.Models.Metadata.Rom.TesseractOCRConvertedKey] = "ocr_converted", [Data.Models.Metadata.Rom.TesseractOCRDetectedLangKey] = "ocr_detected_lang", @@ -873,7 +873,7 @@ namespace SabreTools.Metadata.DatFiles.Test { return new Data.Models.Metadata.Sample { - [Data.Models.Metadata.Sample.NameKey] = "name", + Name = "name", }; } @@ -902,7 +902,7 @@ namespace SabreTools.Metadata.DatFiles.Test { return new Data.Models.Metadata.SharedFeat { - [Data.Models.Metadata.SharedFeat.NameKey] = "name", + Name = "name", [Data.Models.Metadata.SharedFeat.ValueKey] = "value", }; } @@ -911,7 +911,7 @@ namespace SabreTools.Metadata.DatFiles.Test { return new Data.Models.Metadata.Slot { - [Data.Models.Metadata.Slot.NameKey] = "name", + Name = "name", [Data.Models.Metadata.Slot.SlotOptionKey] = new Data.Models.Metadata.SlotOption[] { CreateMetadataSlotOption() }, }; } @@ -922,7 +922,7 @@ namespace SabreTools.Metadata.DatFiles.Test { [Data.Models.Metadata.SlotOption.DefaultKey] = "yes", [Data.Models.Metadata.SlotOption.DevNameKey] = "devname", - [Data.Models.Metadata.SlotOption.NameKey] = "name", + Name = "name", }; } @@ -933,7 +933,7 @@ namespace SabreTools.Metadata.DatFiles.Test [Data.Models.Metadata.Software.CloneOfKey] = "cloneof", [Data.Models.Metadata.Software.DescriptionKey] = "description", [Data.Models.Metadata.Software.InfoKey] = new Data.Models.Metadata.Info[] { CreateMetadataInfo() }, - [Data.Models.Metadata.Software.NameKey] = "name", + Name = "name", [Data.Models.Metadata.Software.NotesKey] = "notes", [Data.Models.Metadata.Software.PartKey] = new Data.Models.Metadata.Part[] { CreateMetadataPart() }, [Data.Models.Metadata.Software.PublisherKey] = "publisher", @@ -949,7 +949,7 @@ namespace SabreTools.Metadata.DatFiles.Test { [Data.Models.Metadata.SoftwareList.DescriptionKey] = "description", [Data.Models.Metadata.SoftwareList.FilterKey] = "filter", - [Data.Models.Metadata.SoftwareList.NameKey] = "name", + Name = "name", [Data.Models.Metadata.SoftwareList.NotesKey] = "notes", [Data.Models.Metadata.SoftwareList.SoftwareKey] = new Data.Models.Metadata.Software[] { CreateMetadataSoftware() }, [Data.Models.Metadata.SoftwareList.StatusKey] = "original", @@ -1063,7 +1063,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.True(datHeader.ReadBool(Data.Models.Metadata.Header.LockRomModeKey)); Assert.True(datHeader.ReadBool(Data.Models.Metadata.Header.LockSampleModeKey)); Assert.Equal("mameconfig", datHeader.ReadString(Data.Models.Metadata.Header.MameConfigKey)); - Assert.Equal("name", datHeader.ReadString(Data.Models.Metadata.Header.NameKey)); + Assert.Equal("name", datHeader.Name); Assert.NotNull(datHeader.ReadString(Data.Models.Metadata.Header.NewDatKey)); Assert.Equal("notes", datHeader.ReadString(Data.Models.Metadata.Header.NotesKey)); Assert.Equal("plugin", datHeader.ReadString(Data.Models.Metadata.Header.PluginKey)); @@ -1145,7 +1145,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Assert.NotNull(adjuster); Assert.True(adjuster.ReadBool(Data.Models.Metadata.Adjuster.DefaultKey)); - Assert.Equal("name", adjuster.ReadString(Data.Models.Metadata.Adjuster.NameKey)); + Assert.Equal("name", adjuster.GetName()); Condition? condition = adjuster.Read(Data.Models.Metadata.Adjuster.ConditionKey); ValidateCondition(condition); @@ -1160,7 +1160,7 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateArchive(Archive? archive) { Assert.NotNull(archive); - Assert.Equal("name", archive.ReadString(Data.Models.Metadata.Archive.NameKey)); + Assert.Equal("name", archive.GetName()); } private static void ValidateBiosSet(BiosSet? biosSet) @@ -1168,7 +1168,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(biosSet); Assert.True(biosSet.ReadBool(Data.Models.Metadata.BiosSet.DefaultKey)); Assert.Equal("description", biosSet.ReadString(Data.Models.Metadata.BiosSet.DescriptionKey)); - Assert.Equal("name", biosSet.ReadString(Data.Models.Metadata.BiosSet.NameKey)); + Assert.Equal("name", biosSet.GetName()); } private static void ValidateChip(Chip? chip) @@ -1176,7 +1176,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(chip); Assert.Equal(12345L, chip.ReadLong(Data.Models.Metadata.Chip.ClockKey)); Assert.Equal("flags", chip.ReadString(Data.Models.Metadata.Chip.FlagsKey)); - Assert.Equal("name", chip.ReadString(Data.Models.Metadata.Chip.NameKey)); + Assert.Equal("name", chip.GetName()); Assert.True(chip.ReadBool(Data.Models.Metadata.Chip.SoundOnlyKey)); Assert.Equal("tag", chip.ReadString(Data.Models.Metadata.Chip.TagKey)); Assert.Equal("cpu", chip.ReadString(Data.Models.Metadata.Chip.ChipTypeKey)); @@ -1195,7 +1195,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Assert.NotNull(configuration); Assert.Equal("mask", configuration.ReadString(Data.Models.Metadata.Configuration.MaskKey)); - Assert.Equal("name", configuration.ReadString(Data.Models.Metadata.Configuration.NameKey)); + Assert.Equal("name", configuration.GetName()); Assert.Equal("tag", configuration.ReadString(Data.Models.Metadata.Configuration.TagKey)); Condition? condition = configuration.Read(Data.Models.Metadata.Configuration.ConditionKey); @@ -1216,7 +1216,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Assert.NotNull(confLocation); Assert.True(confLocation.ReadBool(Data.Models.Metadata.ConfLocation.InvertedKey)); - Assert.Equal("name", confLocation.ReadString(Data.Models.Metadata.ConfLocation.NameKey)); + Assert.Equal("name", confLocation.GetName()); Assert.Equal("number", confLocation.ReadString(Data.Models.Metadata.ConfLocation.NumberKey)); } @@ -1224,7 +1224,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Assert.NotNull(confSetting); Assert.True(confSetting.ReadBool(Data.Models.Metadata.ConfSetting.DefaultKey)); - Assert.Equal("name", confSetting.ReadString(Data.Models.Metadata.ConfSetting.NameKey)); + Assert.Equal("name", confSetting.GetName()); Assert.Equal("value", confSetting.ReadString(Data.Models.Metadata.ConfSetting.ValueKey)); Condition? condition = confSetting.Read(Data.Models.Metadata.ConfSetting.ConditionKey); @@ -1252,7 +1252,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Assert.NotNull(dataArea); Assert.Equal("big", dataArea.ReadString(Data.Models.Metadata.DataArea.EndiannessKey)); - Assert.Equal("name", dataArea.ReadString(Data.Models.Metadata.DataArea.NameKey)); + Assert.Equal("name", dataArea.GetName()); Assert.Equal(12345L, dataArea.ReadLong(Data.Models.Metadata.DataArea.SizeKey)); Assert.Equal(64, dataArea.ReadLong(Data.Models.Metadata.DataArea.WidthKey)); } @@ -1278,14 +1278,14 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateDeviceRef(DeviceRef? deviceRef) { Assert.NotNull(deviceRef); - Assert.Equal("name", deviceRef.ReadString(Data.Models.Metadata.DeviceRef.NameKey)); + Assert.Equal("name", deviceRef.GetName()); } private static void ValidateDipLocation(DipLocation? dipLocation) { Assert.NotNull(dipLocation); Assert.True(dipLocation.ReadBool(Data.Models.Metadata.DipLocation.InvertedKey)); - Assert.Equal("name", dipLocation.ReadString(Data.Models.Metadata.DipLocation.NameKey)); + Assert.Equal("name", dipLocation.GetName()); Assert.Equal("number", dipLocation.ReadString(Data.Models.Metadata.DipLocation.NumberKey)); } @@ -1294,7 +1294,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(dipSwitch); Assert.True(dipSwitch.ReadBool(Data.Models.Metadata.DipSwitch.DefaultKey)); Assert.Equal("mask", dipSwitch.ReadString(Data.Models.Metadata.DipSwitch.MaskKey)); - Assert.Equal("name", dipSwitch.ReadString(Data.Models.Metadata.DipSwitch.NameKey)); + Assert.Equal("name", dipSwitch.GetName()); Assert.Equal("tag", dipSwitch.ReadString(Data.Models.Metadata.DipSwitch.TagKey)); Condition? condition = dipSwitch.Read(Data.Models.Metadata.DipSwitch.ConditionKey); @@ -1320,7 +1320,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Assert.NotNull(dipValue); Assert.True(dipValue.ReadBool(Data.Models.Metadata.DipValue.DefaultKey)); - Assert.Equal("name", dipValue.ReadString(Data.Models.Metadata.DipValue.NameKey)); + Assert.Equal("name", dipValue.GetName()); Assert.Equal("value", dipValue.ReadString(Data.Models.Metadata.DipValue.ValueKey)); Condition? condition = dipValue.Read(Data.Models.Metadata.DipValue.ConditionKey); @@ -1334,7 +1334,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("index", disk.ReadString(Data.Models.Metadata.Disk.IndexKey)); Assert.Equal(HashType.MD5.ZeroString, disk.ReadString(Data.Models.Metadata.Disk.MD5Key)); Assert.Equal("merge", disk.ReadString(Data.Models.Metadata.Disk.MergeKey)); - Assert.Equal("name", disk.ReadString(Data.Models.Metadata.Disk.NameKey)); + Assert.Equal("name", disk.GetName()); Assert.True(disk.ReadBool(Data.Models.Metadata.Disk.OptionalKey)); Assert.Equal("region", disk.ReadString(Data.Models.Metadata.Disk.RegionKey)); Assert.Equal(HashType.SHA1.ZeroString, disk.ReadString(Data.Models.Metadata.Disk.SHA1Key)); @@ -1344,7 +1344,7 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateDiskArea(DiskArea? diskArea) { Assert.NotNull(diskArea); - Assert.Equal("name", diskArea.ReadString(Data.Models.Metadata.DiskArea.NameKey)); + Assert.Equal("name", diskArea.GetName()); } private static void ValidateDisplay(Display? display) @@ -1386,13 +1386,13 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateExtension(Extension? extension) { Assert.NotNull(extension); - Assert.Equal("name", extension.ReadString(Data.Models.Metadata.Extension.NameKey)); + Assert.Equal("name", extension.GetName()); } private static void ValidateFeature(Feature? feature) { Assert.NotNull(feature); - Assert.Equal("name", feature.ReadString(Data.Models.Metadata.Feature.NameKey)); + Assert.Equal("name", feature.GetName()); Assert.Equal("imperfect", feature.ReadString(Data.Models.Metadata.Feature.OverallKey)); Assert.Equal("imperfect", feature.ReadString(Data.Models.Metadata.Feature.StatusKey)); Assert.Equal("protection", feature.ReadString(Data.Models.Metadata.Feature.FeatureTypeKey)); @@ -1402,7 +1402,7 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateInfo(Info? info) { Assert.NotNull(info); - Assert.Equal("name", info.ReadString(Data.Models.Metadata.Info.NameKey)); + Assert.Equal("name", info.GetName()); Assert.Equal("value", info.ReadString(Data.Models.Metadata.Info.ValueKey)); } @@ -1425,14 +1425,14 @@ namespace SabreTools.Metadata.DatFiles.Test { Assert.NotNull(instance); Assert.Equal("briefname", instance.ReadString(Data.Models.Metadata.Instance.BriefNameKey)); - Assert.Equal("name", instance.ReadString(Data.Models.Metadata.Instance.NameKey)); + Assert.Equal("name", instance.GetName()); } private static void ValidateMedia(Media? media) { Assert.NotNull(media); Assert.Equal(HashType.MD5.ZeroString, media.ReadString(Data.Models.Metadata.Media.MD5Key)); - Assert.Equal("name", media.ReadString(Data.Models.Metadata.Media.NameKey)); + Assert.Equal("name", media.GetName()); Assert.Equal(HashType.SHA1.ZeroString, media.ReadString(Data.Models.Metadata.Media.SHA1Key)); Assert.Equal(HashType.SHA256.ZeroString, media.ReadString(Data.Models.Metadata.Media.SHA256Key)); Assert.Equal(HashType.SpamSum.ZeroString, media.ReadString(Data.Models.Metadata.Media.SpamSumKey)); @@ -1442,13 +1442,13 @@ namespace SabreTools.Metadata.DatFiles.Test { Assert.NotNull(part); Assert.Equal("interface", part.ReadString(Data.Models.Metadata.Part.InterfaceKey)); - Assert.Equal("name", part.ReadString(Data.Models.Metadata.Part.NameKey)); + Assert.Equal("name", part.GetName()); } private static void ValidatePartFeature(PartFeature? partFeature) { Assert.NotNull(partFeature); - Assert.Equal("name", partFeature.ReadString(Data.Models.Metadata.Feature.NameKey)); + Assert.Equal("name", partFeature.GetName()); Assert.Equal("imperfect", partFeature.ReadString(Data.Models.Metadata.Feature.OverallKey)); Assert.Equal("imperfect", partFeature.ReadString(Data.Models.Metadata.Feature.StatusKey)); Assert.Equal("protection", partFeature.ReadString(Data.Models.Metadata.Feature.FeatureTypeKey)); @@ -1474,7 +1474,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(ramOption); Assert.Equal("content", ramOption.ReadString(Data.Models.Metadata.RamOption.ContentKey)); Assert.True(ramOption.ReadBool(Data.Models.Metadata.RamOption.DefaultKey)); - Assert.Equal("name", ramOption.ReadString(Data.Models.Metadata.RamOption.NameKey)); + Assert.Equal("name", ramOption.GetName()); } private static void ValidateRelease(Release? release) @@ -1483,7 +1483,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("date", release.ReadString(Data.Models.Metadata.Release.DateKey)); Assert.True(release.ReadBool(Data.Models.Metadata.Release.DefaultKey)); Assert.Equal("language", release.ReadString(Data.Models.Metadata.Release.LanguageKey)); - Assert.Equal("name", release.ReadString(Data.Models.Metadata.Release.NameKey)); + Assert.Equal("name", release.GetName()); Assert.Equal("region", release.ReadString(Data.Models.Metadata.Release.RegionKey)); } @@ -1533,7 +1533,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Null(rom.ReadString(Data.Models.Metadata.Rom.OpenMSXMediaType)); // Omit due to other test Assert.Equal("merge", rom.ReadString(Data.Models.Metadata.Rom.MergeKey)); Assert.True(rom.ReadBool(Data.Models.Metadata.Rom.MIAKey)); - Assert.Equal("name", rom.ReadString(Data.Models.Metadata.Rom.NameKey)); + Assert.Equal("name", rom.GetName()); Assert.Equal("ocr", rom.ReadString(Data.Models.Metadata.Rom.TesseractOCRKey)); Assert.Equal("ocr_converted", rom.ReadString(Data.Models.Metadata.Rom.TesseractOCRConvertedKey)); Assert.Equal("ocr_detected_lang", rom.ReadString(Data.Models.Metadata.Rom.TesseractOCRDetectedLangKey)); @@ -1591,20 +1591,20 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateSample(Sample? sample) { Assert.NotNull(sample); - Assert.Equal("name", sample.ReadString(Data.Models.Metadata.Sample.NameKey)); + Assert.Equal("name", sample.GetName()); } private static void ValidateSharedFeat(SharedFeat? sharedFeat) { Assert.NotNull(sharedFeat); - Assert.Equal("name", sharedFeat.ReadString(Data.Models.Metadata.SharedFeat.NameKey)); + Assert.Equal("name", sharedFeat.GetName()); Assert.Equal("value", sharedFeat.ReadString(Data.Models.Metadata.SharedFeat.ValueKey)); } private static void ValidateSlot(Slot? slot) { Assert.NotNull(slot); - Assert.Equal("name", slot.ReadString(Data.Models.Metadata.Slot.NameKey)); + Assert.Equal("name", slot.GetName()); SlotOption[]? slotOptions = slot.Read(Data.Models.Metadata.Slot.SlotOptionKey); Assert.NotNull(slotOptions); @@ -1617,7 +1617,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(slotOption); Assert.True(slotOption.ReadBool(Data.Models.Metadata.SlotOption.DefaultKey)); Assert.Equal("devname", slotOption.ReadString(Data.Models.Metadata.SlotOption.DevNameKey)); - Assert.Equal("name", slotOption.ReadString(Data.Models.Metadata.SlotOption.NameKey)); + Assert.Equal("name", slotOption.GetName()); } private static void ValidateSoftwareList(SoftwareList? softwareList) @@ -1625,7 +1625,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(softwareList); Assert.Equal("description", softwareList.ReadString(Data.Models.Metadata.SoftwareList.DescriptionKey)); Assert.Equal("filter", softwareList.ReadString(Data.Models.Metadata.SoftwareList.FilterKey)); - Assert.Equal("name", softwareList.ReadString(Data.Models.Metadata.SoftwareList.NameKey)); + Assert.Equal("name", softwareList.GetName()); 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("original", softwareList.ReadString(Data.Models.Metadata.SoftwareList.StatusKey)); diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs index e6fb6f2d..6f762582 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs @@ -399,7 +399,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.True(header.ReadBool(Data.Models.Metadata.Header.LockRomModeKey)); Assert.True(header.ReadBool(Data.Models.Metadata.Header.LockSampleModeKey)); Assert.Equal("mameconfig", header.ReadString(Data.Models.Metadata.Header.MameConfigKey)); - Assert.Equal("name", header.ReadString(Data.Models.Metadata.Header.NameKey)); + Assert.Equal("name", header.Name); Assert.NotNull(header.Read(Data.Models.Metadata.Header.NewDatKey)); Assert.Equal("notes", header.ReadString(Data.Models.Metadata.Header.NotesKey)); Assert.Equal("plugin", header.ReadString(Data.Models.Metadata.Header.PluginKey)); @@ -450,7 +450,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("language", machine.ReadString(Data.Models.Metadata.Machine.LanguageKey)); Assert.Equal("location", machine.ReadString(Data.Models.Metadata.Machine.LocationKey)); Assert.Equal("manufacturer", machine.ReadString(Data.Models.Metadata.Machine.ManufacturerKey)); - Assert.Equal("name", machine.ReadString(Data.Models.Metadata.Machine.NameKey)); + Assert.Equal("name", machine.Name); Assert.Equal("notes", machine.ReadString(Data.Models.Metadata.Machine.NotesKey)); Assert.Equal("playedcount", machine.ReadString(Data.Models.Metadata.Machine.PlayedCountKey)); Assert.Equal("playedtime", machine.ReadString(Data.Models.Metadata.Machine.PlayedTimeKey)); @@ -620,7 +620,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Assert.NotNull(adjuster); Assert.True(adjuster.ReadBool(Data.Models.Metadata.Adjuster.DefaultKey)); - Assert.Equal("name", adjuster.ReadString(Data.Models.Metadata.Adjuster.NameKey)); + Assert.Equal("name", adjuster.Name); Data.Models.Metadata.Condition? condition = adjuster.Read(Data.Models.Metadata.Adjuster.ConditionKey); ValidateMetadataCondition(condition); @@ -640,7 +640,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("regparent", archive.ReadString(Data.Models.Metadata.Archive.RegParentKey)); Assert.Equal("mergeof", archive.ReadString(Data.Models.Metadata.Archive.MergeOfKey)); Assert.Equal("mergename", archive.ReadString(Data.Models.Metadata.Archive.MergeNameKey)); - Assert.Equal("name", archive.ReadString(Data.Models.Metadata.Archive.NameKey)); + Assert.Equal("name", archive.Name); Assert.Equal("name_alt", archive.ReadString(Data.Models.Metadata.Archive.NameAltKey)); Assert.Equal("region", archive.ReadString(Data.Models.Metadata.Archive.RegionKey)); Assert.Equal("languages", archive.ReadString(Data.Models.Metadata.Archive.LanguagesKey)); @@ -675,7 +675,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(biosSet); Assert.True(biosSet.ReadBool(Data.Models.Metadata.BiosSet.DefaultKey)); Assert.Equal("description", biosSet.ReadString(Data.Models.Metadata.BiosSet.DescriptionKey)); - Assert.Equal("name", biosSet.ReadString(Data.Models.Metadata.BiosSet.NameKey)); + Assert.Equal("name", biosSet.Name); } private static void ValidateMetadataChip(Data.Models.Metadata.Chip? chip) @@ -683,7 +683,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(chip); Assert.Equal(12345, chip.ReadLong(Data.Models.Metadata.Chip.ClockKey)); Assert.Equal("flags", chip.ReadString(Data.Models.Metadata.Chip.FlagsKey)); - Assert.Equal("name", chip.ReadString(Data.Models.Metadata.Chip.NameKey)); + Assert.Equal("name", chip.Name); Assert.True(chip.ReadBool(Data.Models.Metadata.Chip.SoundOnlyKey)); Assert.Equal("tag", chip.ReadString(Data.Models.Metadata.Chip.TagKey)); Assert.Equal("cpu", chip.ReadString(Data.Models.Metadata.Chip.ChipTypeKey)); @@ -702,7 +702,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Assert.NotNull(configuration); Assert.Equal("mask", configuration.ReadString(Data.Models.Metadata.Configuration.MaskKey)); - Assert.Equal("name", configuration.ReadString(Data.Models.Metadata.Configuration.NameKey)); + Assert.Equal("name", configuration.Name); Assert.Equal("tag", configuration.ReadString(Data.Models.Metadata.Configuration.TagKey)); Data.Models.Metadata.Condition? condition = configuration.Read(Data.Models.Metadata.Configuration.ConditionKey); @@ -723,7 +723,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Assert.NotNull(confLocation); Assert.True(confLocation.ReadBool(Data.Models.Metadata.ConfLocation.InvertedKey)); - Assert.Equal("name", confLocation.ReadString(Data.Models.Metadata.ConfLocation.NameKey)); + Assert.Equal("name", confLocation.Name); Assert.Equal("number", confLocation.ReadString(Data.Models.Metadata.ConfLocation.NumberKey)); } @@ -731,7 +731,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Assert.NotNull(confSetting); Assert.True(confSetting.ReadBool(Data.Models.Metadata.ConfSetting.DefaultKey)); - Assert.Equal("name", confSetting.ReadString(Data.Models.Metadata.ConfSetting.NameKey)); + Assert.Equal("name", confSetting.Name); Assert.Equal("value", confSetting.ReadString(Data.Models.Metadata.ConfSetting.ValueKey)); Data.Models.Metadata.Condition? condition = confSetting.Read(Data.Models.Metadata.ConfSetting.ConditionKey); @@ -759,7 +759,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Assert.NotNull(dataArea); Assert.Equal("big", dataArea.ReadString(Data.Models.Metadata.DataArea.EndiannessKey)); - Assert.Equal("name", dataArea.ReadString(Data.Models.Metadata.DataArea.NameKey)); + Assert.Equal("name", dataArea.Name); Assert.Equal(12345, dataArea.ReadLong(Data.Models.Metadata.DataArea.SizeKey)); Assert.Equal(64, dataArea.ReadLong(Data.Models.Metadata.DataArea.WidthKey)); @@ -790,14 +790,14 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateMetadataDeviceRef(Data.Models.Metadata.DeviceRef? deviceRef) { Assert.NotNull(deviceRef); - Assert.Equal("name", deviceRef.ReadString(Data.Models.Metadata.DeviceRef.NameKey)); + Assert.Equal("name", deviceRef.Name); } private static void ValidateMetadataDipLocation(Data.Models.Metadata.DipLocation? dipLocation) { Assert.NotNull(dipLocation); Assert.True(dipLocation.ReadBool(Data.Models.Metadata.DipLocation.InvertedKey)); - Assert.Equal("name", dipLocation.ReadString(Data.Models.Metadata.DipLocation.NameKey)); + Assert.Equal("name", dipLocation.Name); Assert.Equal("number", dipLocation.ReadString(Data.Models.Metadata.DipLocation.NumberKey)); } @@ -806,7 +806,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(dipSwitch); Assert.True(dipSwitch.ReadBool(Data.Models.Metadata.DipSwitch.DefaultKey)); Assert.Equal("mask", dipSwitch.ReadString(Data.Models.Metadata.DipSwitch.MaskKey)); - Assert.Equal("name", dipSwitch.ReadString(Data.Models.Metadata.DipSwitch.NameKey)); + Assert.Equal("name", dipSwitch.Name); Assert.Equal("tag", dipSwitch.ReadString(Data.Models.Metadata.DipSwitch.TagKey)); Data.Models.Metadata.Condition? condition = dipSwitch.Read(Data.Models.Metadata.DipSwitch.ConditionKey); @@ -832,7 +832,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Assert.NotNull(dipValue); Assert.True(dipValue.ReadBool(Data.Models.Metadata.DipValue.DefaultKey)); - Assert.Equal("name", dipValue.ReadString(Data.Models.Metadata.DipValue.NameKey)); + Assert.Equal("name", dipValue.Name); Assert.Equal("value", dipValue.ReadString(Data.Models.Metadata.DipValue.ValueKey)); Data.Models.Metadata.Condition? condition = dipValue.Read(Data.Models.Metadata.DipValue.ConditionKey); @@ -846,7 +846,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("index", disk.ReadString(Data.Models.Metadata.Disk.IndexKey)); Assert.Equal(HashType.MD5.ZeroString, disk.ReadString(Data.Models.Metadata.Disk.MD5Key)); Assert.Equal("merge", disk.ReadString(Data.Models.Metadata.Disk.MergeKey)); - Assert.Equal("name", disk.ReadString(Data.Models.Metadata.Disk.NameKey)); + Assert.Equal("name", disk.Name); Assert.True(disk.ReadBool(Data.Models.Metadata.Disk.OptionalKey)); Assert.Equal("region", disk.ReadString(Data.Models.Metadata.Disk.RegionKey)); Assert.Equal(HashType.SHA1.ZeroString, disk.ReadString(Data.Models.Metadata.Disk.SHA1Key)); @@ -856,7 +856,7 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateMetadataDiskArea(Data.Models.Metadata.DiskArea? diskArea) { Assert.NotNull(diskArea); - Assert.Equal("name", diskArea.ReadString(Data.Models.Metadata.DiskArea.NameKey)); + Assert.Equal("name", diskArea.Name); Data.Models.Metadata.Disk[]? disks = diskArea.ReadArray(Data.Models.Metadata.DiskArea.DiskKey); Assert.NotNull(disks); @@ -903,13 +903,13 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateMetadataExtension(Data.Models.Metadata.Extension? extension) { Assert.NotNull(extension); - Assert.Equal("name", extension.ReadString(Data.Models.Metadata.Extension.NameKey)); + Assert.Equal("name", extension.Name); } private static void ValidateMetadataFeature(Data.Models.Metadata.Feature? feature) { Assert.NotNull(feature); - Assert.Equal("name", feature.ReadString(Data.Models.Metadata.Feature.NameKey)); + Assert.Equal("name", feature.Name); Assert.Equal("imperfect", feature.ReadString(Data.Models.Metadata.Feature.OverallKey)); Assert.Equal("imperfect", feature.ReadString(Data.Models.Metadata.Feature.StatusKey)); Assert.Equal("protection", feature.ReadString(Data.Models.Metadata.Feature.FeatureTypeKey)); @@ -919,7 +919,7 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateMetadataInfo(Data.Models.Metadata.Info? info) { Assert.NotNull(info); - Assert.Equal("name", info.ReadString(Data.Models.Metadata.Info.NameKey)); + Assert.Equal("name", info.Name); Assert.Equal("value", info.ReadString(Data.Models.Metadata.Info.ValueKey)); } @@ -942,14 +942,14 @@ namespace SabreTools.Metadata.DatFiles.Test { Assert.NotNull(instance); Assert.Equal("briefname", instance.ReadString(Data.Models.Metadata.Instance.BriefNameKey)); - Assert.Equal("name", instance.ReadString(Data.Models.Metadata.Instance.NameKey)); + Assert.Equal("name", instance.Name); } private static void ValidateMetadataMedia(Data.Models.Metadata.Media? media) { Assert.NotNull(media); Assert.Equal(HashType.MD5.ZeroString, media.ReadString(Data.Models.Metadata.Media.MD5Key)); - Assert.Equal("name", media.ReadString(Data.Models.Metadata.Media.NameKey)); + Assert.Equal("name", media.Name); Assert.Equal(HashType.SHA1.ZeroString, media.ReadString(Data.Models.Metadata.Media.SHA1Key)); Assert.Equal(HashType.SHA256.ZeroString, media.ReadString(Data.Models.Metadata.Media.SHA256Key)); Assert.Equal(HashType.SpamSum.ZeroString, media.ReadString(Data.Models.Metadata.Media.SpamSumKey)); @@ -959,7 +959,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Assert.NotNull(part); Assert.Equal("interface", part.ReadString(Data.Models.Metadata.Part.InterfaceKey)); - Assert.Equal("name", part.ReadString(Data.Models.Metadata.Part.NameKey)); + Assert.Equal("name", part.Name); Data.Models.Metadata.DataArea[]? dataAreas = part.ReadArray(Data.Models.Metadata.Part.DataAreaKey); Assert.NotNull(dataAreas); @@ -998,7 +998,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(ramOption); Assert.Equal("content", ramOption.ReadString(Data.Models.Metadata.RamOption.ContentKey)); Assert.True(ramOption.ReadBool(Data.Models.Metadata.RamOption.DefaultKey)); - Assert.Equal("name", ramOption.ReadString(Data.Models.Metadata.RamOption.NameKey)); + Assert.Equal("name", ramOption.Name); } private static void ValidateMetadataRelease(Data.Models.Metadata.Release? release) @@ -1007,7 +1007,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("date", release.ReadString(Data.Models.Metadata.Release.DateKey)); Assert.True(release.ReadBool(Data.Models.Metadata.Release.DefaultKey)); Assert.Equal("language", release.ReadString(Data.Models.Metadata.Release.LanguageKey)); - Assert.Equal("name", release.ReadString(Data.Models.Metadata.Release.NameKey)); + Assert.Equal("name", release.Name); Assert.Equal("region", release.ReadString(Data.Models.Metadata.Release.RegionKey)); } @@ -1078,7 +1078,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Null(rom.ReadString(Data.Models.Metadata.Rom.OpenMSXMediaType)); // Omit due to other test Assert.Equal("merge", rom.ReadString(Data.Models.Metadata.Rom.MergeKey)); Assert.True(rom.ReadBool(Data.Models.Metadata.Rom.MIAKey)); - Assert.Equal("name", rom.ReadString(Data.Models.Metadata.Rom.NameKey)); + Assert.Equal("name", rom.Name); Assert.Equal("ocr", rom.ReadString(Data.Models.Metadata.Rom.TesseractOCRKey)); Assert.Equal("ocr_converted", rom.ReadString(Data.Models.Metadata.Rom.TesseractOCRConvertedKey)); Assert.Equal("ocr_detected_lang", rom.ReadString(Data.Models.Metadata.Rom.TesseractOCRDetectedLangKey)); @@ -1136,7 +1136,7 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateMetadataSample(Data.Models.Metadata.Sample? sample) { Assert.NotNull(sample); - Assert.Equal("name", sample.ReadString(Data.Models.Metadata.Sample.NameKey)); + Assert.Equal("name", sample.Name); } private static void ValidateMetadataSerials(Data.Models.Metadata.Serials? serials) @@ -1161,14 +1161,14 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateMetadataSharedFeat(Data.Models.Metadata.SharedFeat? sharedFeat) { Assert.NotNull(sharedFeat); - Assert.Equal("name", sharedFeat.ReadString(Data.Models.Metadata.SharedFeat.NameKey)); + Assert.Equal("name", sharedFeat.Name); Assert.Equal("value", sharedFeat.ReadString(Data.Models.Metadata.SharedFeat.ValueKey)); } private static void ValidateMetadataSlot(Data.Models.Metadata.Slot? slot) { Assert.NotNull(slot); - Assert.Equal("name", slot.ReadString(Data.Models.Metadata.Slot.NameKey)); + Assert.Equal("name", slot.Name); Data.Models.Metadata.SlotOption[]? slotOptions = slot.ReadArray(Data.Models.Metadata.Slot.SlotOptionKey); Assert.NotNull(slotOptions); @@ -1181,7 +1181,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(slotOption); Assert.True(slotOption.ReadBool(Data.Models.Metadata.SlotOption.DefaultKey)); Assert.Equal("devname", slotOption.ReadString(Data.Models.Metadata.SlotOption.DevNameKey)); - Assert.Equal("name", slotOption.ReadString(Data.Models.Metadata.SlotOption.NameKey)); + Assert.Equal("name", slotOption.Name); } private static void ValidateMetadataSoftwareList(Data.Models.Metadata.SoftwareList? softwareList) @@ -1189,7 +1189,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(softwareList); Assert.Equal("description", softwareList.ReadString(Data.Models.Metadata.SoftwareList.DescriptionKey)); Assert.Equal("filter", softwareList.ReadString(Data.Models.Metadata.SoftwareList.FilterKey)); - Assert.Equal("name", softwareList.ReadString(Data.Models.Metadata.SoftwareList.NameKey)); + Assert.Equal("name", softwareList.Name); Assert.Equal("notes", softwareList.ReadString(Data.Models.Metadata.SoftwareList.NotesKey)); Assert.Equal("original", softwareList.ReadString(Data.Models.Metadata.SoftwareList.StatusKey)); Assert.Equal("tag", softwareList.ReadString(Data.Models.Metadata.SoftwareList.TagKey)); diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.cs index 49ff1fa6..a0cb87f8 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.cs @@ -40,7 +40,7 @@ namespace SabreTools.Metadata.DatFiles.Test rom.Write(DatItem.MachineKey, machine); DatFile? datFile = new Logiqx(datFile: null, useGame: false); - datFile.Header.Write(Data.Models.Metadata.Header.NameKey, "name"); + datFile.Header.Name = "name"; datFile.AddItem(rom, statsOnly: false); long sourceIndex = datFile.AddSourceDB(source); @@ -51,7 +51,7 @@ namespace SabreTools.Metadata.DatFiles.Test created.BucketBy(ItemKey.Machine); Assert.NotNull(created.Header); - Assert.Equal("name", created.Header.ReadString(Data.Models.Metadata.Header.NameKey)); + Assert.Equal("name", created.Header.Name); Assert.NotNull(created.Items); DatItem datItem = Assert.Single(created.GetItemsForBucket("key")); @@ -113,14 +113,14 @@ namespace SabreTools.Metadata.DatFiles.Test public void FillHeaderFromPath_NoNameNoDesc_NotBare() { DatFile datFile = new Logiqx(datFile: null, useGame: false); - datFile.Header.Write(Data.Models.Metadata.Header.NameKey, string.Empty); + datFile.Header.Name = string.Empty; datFile.Header.Write(Data.Models.Metadata.Header.DescriptionKey, string.Empty); datFile.Header.Write(Data.Models.Metadata.Header.DateKey, "1980-01-01"); string path = Path.Combine("Fake", "Path", "Filename"); datFile.FillHeaderFromPath(path, false); - Assert.Equal("Filename (1980-01-01)", datFile.Header.ReadString(Data.Models.Metadata.Header.NameKey)); + Assert.Equal("Filename (1980-01-01)", datFile.Header.Name); Assert.Equal("Filename (1980-01-01)", datFile.Header.ReadString(Data.Models.Metadata.Header.DescriptionKey)); } @@ -128,14 +128,14 @@ namespace SabreTools.Metadata.DatFiles.Test public void FillHeaderFromPath_NoNameNoDesc_Bare() { DatFile datFile = new Logiqx(datFile: null, useGame: false); - datFile.Header.Write(Data.Models.Metadata.Header.NameKey, string.Empty); + datFile.Header.Name = string.Empty; datFile.Header.Write(Data.Models.Metadata.Header.DescriptionKey, string.Empty); datFile.Header.Write(Data.Models.Metadata.Header.DateKey, "1980-01-01"); string path = Path.Combine("Fake", "Path", "Filename"); datFile.FillHeaderFromPath(path, true); - Assert.Equal("Filename", datFile.Header.ReadString(Data.Models.Metadata.Header.NameKey)); + Assert.Equal("Filename", datFile.Header.Name); Assert.Equal("Filename", datFile.Header.ReadString(Data.Models.Metadata.Header.DescriptionKey)); } @@ -143,14 +143,14 @@ namespace SabreTools.Metadata.DatFiles.Test public void FillHeaderFromPath_NoNameDesc_NotBare() { DatFile datFile = new Logiqx(datFile: null, useGame: false); - datFile.Header.Write(Data.Models.Metadata.Header.NameKey, string.Empty); + datFile.Header.Name = string.Empty; datFile.Header.Write(Data.Models.Metadata.Header.DescriptionKey, "Description"); datFile.Header.Write(Data.Models.Metadata.Header.DateKey, "1980-01-01"); string path = Path.Combine("Fake", "Path", "Filename"); datFile.FillHeaderFromPath(path, false); - Assert.Equal("Description (1980-01-01)", datFile.Header.ReadString(Data.Models.Metadata.Header.NameKey)); + Assert.Equal("Description (1980-01-01)", datFile.Header.Name); Assert.Equal("Description", datFile.Header.ReadString(Data.Models.Metadata.Header.DescriptionKey)); } @@ -158,14 +158,14 @@ namespace SabreTools.Metadata.DatFiles.Test public void FillHeaderFromPath_NoNameDesc_Bare() { DatFile datFile = new Logiqx(datFile: null, useGame: false); - datFile.Header.Write(Data.Models.Metadata.Header.NameKey, string.Empty); + datFile.Header.Name = string.Empty; datFile.Header.Write(Data.Models.Metadata.Header.DescriptionKey, "Description"); datFile.Header.Write(Data.Models.Metadata.Header.DateKey, "1980-01-01"); string path = Path.Combine("Fake", "Path", "Filename"); datFile.FillHeaderFromPath(path, true); - Assert.Equal("Description", datFile.Header.ReadString(Data.Models.Metadata.Header.NameKey)); + Assert.Equal("Description", datFile.Header.Name); Assert.Equal("Description", datFile.Header.ReadString(Data.Models.Metadata.Header.DescriptionKey)); } @@ -173,14 +173,14 @@ namespace SabreTools.Metadata.DatFiles.Test public void FillHeaderFromPath_NameNoDesc_NotBare() { DatFile datFile = new Logiqx(datFile: null, useGame: false); - datFile.Header.Write(Data.Models.Metadata.Header.NameKey, "Name"); + datFile.Header.Name = "Name"; datFile.Header.Write(Data.Models.Metadata.Header.DescriptionKey, string.Empty); datFile.Header.Write(Data.Models.Metadata.Header.DateKey, "1980-01-01"); string path = Path.Combine("Fake", "Path", "Filename"); datFile.FillHeaderFromPath(path, false); - Assert.Equal("Name", datFile.Header.ReadString(Data.Models.Metadata.Header.NameKey)); + Assert.Equal("Name", datFile.Header.Name); Assert.Equal("Name (1980-01-01)", datFile.Header.ReadString(Data.Models.Metadata.Header.DescriptionKey)); } @@ -188,14 +188,14 @@ namespace SabreTools.Metadata.DatFiles.Test public void FillHeaderFromPath_NameNoDesc_Bare() { DatFile datFile = new Logiqx(datFile: null, useGame: false); - datFile.Header.Write(Data.Models.Metadata.Header.NameKey, "Name"); + datFile.Header.Name = "Name"; datFile.Header.Write(Data.Models.Metadata.Header.DescriptionKey, string.Empty); datFile.Header.Write(Data.Models.Metadata.Header.DateKey, "1980-01-01"); string path = Path.Combine("Fake", "Path", "Filename"); datFile.FillHeaderFromPath(path, true); - Assert.Equal("Name", datFile.Header.ReadString(Data.Models.Metadata.Header.NameKey)); + Assert.Equal("Name", datFile.Header.Name); Assert.Equal("Name", datFile.Header.ReadString(Data.Models.Metadata.Header.DescriptionKey)); } @@ -203,14 +203,14 @@ namespace SabreTools.Metadata.DatFiles.Test public void FillHeaderFromPath_NameDesc_NotBare() { DatFile datFile = new Logiqx(datFile: null, useGame: false); - datFile.Header.Write(Data.Models.Metadata.Header.NameKey, "Name"); + datFile.Header.Name = "Name"; datFile.Header.Write(Data.Models.Metadata.Header.DescriptionKey, "Description"); datFile.Header.Write(Data.Models.Metadata.Header.DateKey, "1980-01-01"); string path = Path.Combine("Fake", "Path", "Filename"); datFile.FillHeaderFromPath(path, false); - Assert.Equal("Name", datFile.Header.ReadString(Data.Models.Metadata.Header.NameKey)); + Assert.Equal("Name", datFile.Header.Name); Assert.Equal("Description", datFile.Header.ReadString(Data.Models.Metadata.Header.DescriptionKey)); } @@ -218,14 +218,14 @@ namespace SabreTools.Metadata.DatFiles.Test public void FillHeaderFromPath_NameDesc_Bare() { DatFile datFile = new Logiqx(datFile: null, useGame: false); - datFile.Header.Write(Data.Models.Metadata.Header.NameKey, "Name "); + datFile.Header.Name = "Name "; datFile.Header.Write(Data.Models.Metadata.Header.DescriptionKey, "Description "); datFile.Header.Write(Data.Models.Metadata.Header.DateKey, "1980-01-01"); string path = Path.Combine("Fake", "Path", "Filename"); datFile.FillHeaderFromPath(path, true); - Assert.Equal("Name", datFile.Header.ReadString(Data.Models.Metadata.Header.NameKey)); + Assert.Equal("Name", datFile.Header.Name); Assert.Equal("Description", datFile.Header.ReadString(Data.Models.Metadata.Header.DescriptionKey)); } @@ -237,14 +237,14 @@ namespace SabreTools.Metadata.DatFiles.Test public void SetHeaderTest() { DatHeader datHeader = new DatHeader(); - datHeader.Write(Data.Models.Metadata.Header.NameKey, "name"); + datHeader.Name = "name"; DatFile? datFile = new Logiqx(datFile: null, useGame: false); - datFile.Header.Write(Data.Models.Metadata.Header.NameKey, "notname"); + datFile.Header.Name = "notname"; datFile.SetHeader(datHeader); Assert.NotNull(datFile.Header); - Assert.Equal("name", datFile.Header.ReadString(Data.Models.Metadata.Header.NameKey)); + Assert.Equal("name", datFile.Header.Name); } #endregion @@ -273,7 +273,7 @@ namespace SabreTools.Metadata.DatFiles.Test public void ResetDictionaryTest() { DatFile datFile = new Logiqx(datFile: null, useGame: false); - datFile.Header.Write(Data.Models.Metadata.Header.NameKey, "name"); + datFile.Header.Name = "name"; datFile.AddItem(new Rom(), statsOnly: false); datFile.AddItemDB(new Rom(), 0, 0, false); @@ -1329,10 +1329,10 @@ namespace SabreTools.Metadata.DatFiles.Test string expected) { Machine machine = new Machine(); - machine.Write(Data.Models.Metadata.Machine.NameKey, "machine"); + machine.SetName("machine"); DatItem item = new Rom(); - item.Write(Data.Models.Metadata.Rom.NameKey, "name"); + item.SetName("name"); item.Write(Data.Models.Metadata.Rom.SHA1Key, HashType.SHA1.ZeroString); DatFile? datFile = new Logiqx(datFile: null, useGame: false); @@ -1363,13 +1363,13 @@ namespace SabreTools.Metadata.DatFiles.Test string expected = string.Empty; Machine machine = new Machine(); - machine.Write(Data.Models.Metadata.Machine.NameKey, "machine"); + machine.SetName("machine"); machine.Write(Data.Models.Metadata.Machine.ManufacturerKey, "manufacturer"); machine.Write(Data.Models.Metadata.Machine.PublisherKey, "publisher"); machine.Write(Data.Models.Metadata.Machine.CategoryKey, "category"); DatItem item = new Rom(); - item.Write(Data.Models.Metadata.Rom.NameKey, "name"); + item.SetName("name"); item.Write(Data.Models.Metadata.Rom.SizeKey, 12345); item.Write(Data.Models.Metadata.Rom.CRC16Key, "crc16"); item.Write(Data.Models.Metadata.Rom.CRCKey, "crc"); @@ -1396,13 +1396,13 @@ namespace SabreTools.Metadata.DatFiles.Test string expected = "machine_machine_name_manufacturer_publisher_category______md5___sha1_____"; Machine machine = new Machine(); - machine.Write(Data.Models.Metadata.Machine.NameKey, "machine"); + machine.SetName("machine"); machine.Write(Data.Models.Metadata.Machine.ManufacturerKey, "manufacturer"); machine.Write(Data.Models.Metadata.Machine.PublisherKey, "publisher"); machine.Write(Data.Models.Metadata.Machine.CategoryKey, "category"); DatItem item = new Disk(); - item.Write(Data.Models.Metadata.Disk.NameKey, "name"); + item.SetName("name"); item.Write(Data.Models.Metadata.Disk.MD5Key, "md5"); item.Write(Data.Models.Metadata.Disk.SHA1Key, "sha1"); @@ -1417,7 +1417,7 @@ namespace SabreTools.Metadata.DatFiles.Test string expected = "machine_machine_name.bin_manufacturer_publisher_category__00000000____d41d8cd98f00b204e9800998ecf8427e___da39a3ee5e6b4b0d3255bfef95601890afd80709_e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855___12345_"; Machine machine = new Machine(); - machine.Write(Data.Models.Metadata.Machine.NameKey, "machine"); + machine.SetName("machine"); machine.Write(Data.Models.Metadata.Machine.ManufacturerKey, "manufacturer"); machine.Write(Data.Models.Metadata.Machine.PublisherKey, "publisher"); machine.Write(Data.Models.Metadata.Machine.CategoryKey, "category"); @@ -1444,13 +1444,13 @@ namespace SabreTools.Metadata.DatFiles.Test string expected = "machine_machine_name_manufacturer_publisher_category______md5___sha1_sha256____spamsum"; Machine machine = new Machine(); - machine.Write(Data.Models.Metadata.Machine.NameKey, "machine"); + machine.SetName("machine"); machine.Write(Data.Models.Metadata.Machine.ManufacturerKey, "manufacturer"); machine.Write(Data.Models.Metadata.Machine.PublisherKey, "publisher"); machine.Write(Data.Models.Metadata.Machine.CategoryKey, "category"); DatItem item = new Media(); - item.Write(Data.Models.Metadata.Media.NameKey, "name"); + item.SetName("name"); item.Write(Data.Models.Metadata.Media.MD5Key, "md5"); item.Write(Data.Models.Metadata.Media.SHA1Key, "sha1"); item.Write(Data.Models.Metadata.Media.SHA256Key, "sha256"); @@ -1467,13 +1467,13 @@ namespace SabreTools.Metadata.DatFiles.Test string expected = "machine_machine_name_manufacturer_publisher_category_crc16_crc_crc64_md2_md4_md5_ripemd128_ripemd160_sha1_sha256_sha384_sha512_12345_spamsum"; Machine machine = new Machine(); - machine.Write(Data.Models.Metadata.Machine.NameKey, "machine"); + machine.SetName("machine"); machine.Write(Data.Models.Metadata.Machine.ManufacturerKey, "manufacturer"); machine.Write(Data.Models.Metadata.Machine.PublisherKey, "publisher"); machine.Write(Data.Models.Metadata.Machine.CategoryKey, "category"); DatItem item = new Rom(); - item.Write(Data.Models.Metadata.Rom.NameKey, "name"); + item.SetName("name"); item.Write(Data.Models.Metadata.Rom.SizeKey, 12345); item.Write(Data.Models.Metadata.Rom.CRC16Key, "crc16"); item.Write(Data.Models.Metadata.Rom.CRCKey, "crc"); @@ -1952,7 +1952,7 @@ namespace SabreTools.Metadata.DatFiles.Test public void ResolveNames_SingleItem_Single() { Machine machine = new Machine(); - machine.Write(Data.Models.Metadata.Machine.NameKey, "machine"); + machine.SetName("machine"); Source source = new Source(0); @@ -1980,7 +1980,7 @@ namespace SabreTools.Metadata.DatFiles.Test public void ResolveNames_NonDuplicate_AllUntouched() { Machine machine = new Machine(); - machine.Write(Data.Models.Metadata.Machine.NameKey, "machine"); + machine.SetName("machine"); Source source = new Source(0); @@ -2022,7 +2022,7 @@ namespace SabreTools.Metadata.DatFiles.Test public void ResolveNames_AllDuplicate_Single() { Machine machine = new Machine(); - machine.Write(Data.Models.Metadata.Machine.NameKey, "machine"); + machine.SetName("machine"); Source source = new Source(0); @@ -2057,7 +2057,7 @@ namespace SabreTools.Metadata.DatFiles.Test public void ResolveNames_NameMatch_SingleRenamed() { Machine machine = new Machine(); - machine.Write(Data.Models.Metadata.Machine.NameKey, "machine"); + machine.SetName("machine"); Source source = new Source(0); @@ -2114,7 +2114,7 @@ namespace SabreTools.Metadata.DatFiles.Test public void ResolveNamesDB_SingleItem_Single() { Machine machine = new Machine(); - machine.Write(Data.Models.Metadata.Machine.NameKey, "machine"); + machine.SetName("machine"); Source source = new Source(0); @@ -2144,7 +2144,7 @@ namespace SabreTools.Metadata.DatFiles.Test public void ResolveNamesDB_NonDuplicate_AllUntouched() { Machine machine = new Machine(); - machine.Write(Data.Models.Metadata.Machine.NameKey, "machine"); + machine.SetName("machine"); Source source = new Source(0); @@ -2191,7 +2191,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatFile datFile = new Logiqx(null, useGame: false); Machine machine = new Machine(); - machine.Write(Data.Models.Metadata.Machine.NameKey, "machine"); + machine.SetName("machine"); long machineIndex = datFile.AddMachineDB(machine); Source source = new Source(0); @@ -2228,7 +2228,7 @@ namespace SabreTools.Metadata.DatFiles.Test public void ResolveNamesDB_NameMatch_SingleRenamed() { Machine machine = new Machine(); - machine.Write(Data.Models.Metadata.Machine.NameKey, "machine"); + machine.SetName("machine"); Source source = new Source(0); @@ -2318,7 +2318,7 @@ namespace SabreTools.Metadata.DatFiles.Test public void ShouldIgnore_NoIgnoreBlanksZeroRom_False() { DatItem? datItem = new Rom(); - datItem.Write(Data.Models.Metadata.Rom.NameKey, "name"); + datItem.SetName("name"); datItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); datItem.Write(Data.Models.Metadata.Rom.CRCKey, "crc"); DatFile datFile = new Logiqx(null, useGame: false); @@ -2341,7 +2341,7 @@ namespace SabreTools.Metadata.DatFiles.Test public void ShouldIgnore_MissingRequired_True() { DatItem? datItem = new Rom(); - datItem.Write(Data.Models.Metadata.Rom.NameKey, "name"); + datItem.SetName("name"); datItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); DatFile datFile = new Logiqx(null, useGame: false); @@ -2353,7 +2353,7 @@ namespace SabreTools.Metadata.DatFiles.Test public void ShouldIgnore_AllVerified_False() { DatItem? datItem = new Rom(); - datItem.Write(Data.Models.Metadata.Rom.NameKey, "name"); + datItem.SetName("name"); datItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); datItem.Write(Data.Models.Metadata.Rom.CRCKey, "crc"); datItem.Write(Data.Models.Metadata.Rom.MD2Key, "crc"); diff --git a/SabreTools.Metadata.DatFiles.Test/DatHeaderTests.cs b/SabreTools.Metadata.DatFiles.Test/DatHeaderTests.cs index ab8b6187..46c86387 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatHeaderTests.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatHeaderTests.cs @@ -118,12 +118,12 @@ namespace SabreTools.Metadata.DatFiles.Test public void CloneTest() { DatHeader header = new DatHeader(); - header.Write(Data.Models.Metadata.Header.NameKey, "name"); + header.Name = "name"; object clone = header.Clone(); DatHeader? actual = clone as DatHeader; Assert.NotNull(actual); - Assert.Equal("name", actual.ReadString(Data.Models.Metadata.Header.NameKey)); + Assert.Equal("name", actual.Name); } #endregion @@ -150,10 +150,10 @@ namespace SabreTools.Metadata.DatFiles.Test public void GetInternalCloneTest() { DatHeader header = new DatHeader(); - header.Write(Data.Models.Metadata.Header.NameKey, "name"); + header.Name = "name"; Data.Models.Metadata.Header actual = header.GetInternalClone(); - Assert.Equal("name", actual[Data.Models.Metadata.Header.NameKey]); + Assert.Equal("name", actual.Name); } #endregion @@ -184,10 +184,10 @@ namespace SabreTools.Metadata.DatFiles.Test public void Equals_MismatchedInternal_False() { DatHeader self = new DatHeader(); - self.Write(Data.Models.Metadata.Header.NameKey, "self"); + self.Name = "self"; DatHeader? other = new DatHeader(); - other.Write(Data.Models.Metadata.Header.NameKey, "other"); + other.Name = "other"; bool actual = self.Equals(other); Assert.False(actual); @@ -197,10 +197,10 @@ namespace SabreTools.Metadata.DatFiles.Test public void Equals_EqualInternal_True() { DatHeader self = new DatHeader(); - self.Write(Data.Models.Metadata.Header.NameKey, "name"); + self.Name = "name"; DatHeader? other = new DatHeader(); - other.Write(Data.Models.Metadata.Header.NameKey, "name"); + other.Name = "name"; bool actual = self.Equals(other); Assert.True(actual); diff --git a/SabreTools.Metadata.DatFiles.Test/ItemDictionaryDBTests.cs b/SabreTools.Metadata.DatFiles.Test/ItemDictionaryDBTests.cs index d0df6070..03f630f9 100644 --- a/SabreTools.Metadata.DatFiles.Test/ItemDictionaryDBTests.cs +++ b/SabreTools.Metadata.DatFiles.Test/ItemDictionaryDBTests.cs @@ -509,10 +509,10 @@ namespace SabreTools.Metadata.DatFiles.Test Source source = new Source(0, source: null); Machine origMachine = new Machine(); - origMachine.Write(Data.Models.Metadata.Machine.NameKey, "original"); + origMachine.SetName("original"); Machine newMachine = new Machine(); - newMachine.Write(Data.Models.Metadata.Machine.NameKey, "new"); + newMachine.SetName("new"); DatItem datItem = new Rom(); diff --git a/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs b/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs index e3704e9d..2d30295d 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs @@ -67,6 +67,7 @@ namespace SabreTools.Metadata.DatFiles // Create an internal header var header = new DatHeader(item); + Header.Name = header.Name; // Convert subheader values var canOpen = item.Read(Data.Models.Metadata.Header.CanOpenKey); @@ -136,8 +137,8 @@ namespace SabreTools.Metadata.DatFiles Header.Write(Data.Models.Metadata.Header.LockSampleModeKey, header.ReadBool(Data.Models.Metadata.Header.LockSampleModeKey)); if (Header.ReadString(Data.Models.Metadata.Header.MameConfigKey) is null) Header.Write(Data.Models.Metadata.Header.MameConfigKey, header.ReadString(Data.Models.Metadata.Header.MameConfigKey)); - if (Header.ReadString(Data.Models.Metadata.Header.NameKey) is null) - Header.Write(Data.Models.Metadata.Header.NameKey, header.ReadString(Data.Models.Metadata.Header.NameKey)); + if (Header.Name is null) + Header.Name = header.Name; if (Header.ReadString(Data.Models.Metadata.Header.NotesKey) is null) Header.Write(Data.Models.Metadata.Header.NotesKey, header.ReadString(Data.Models.Metadata.Header.NotesKey)); if (Header.ReadString(Data.Models.Metadata.Header.PluginKey) is null) @@ -170,7 +171,7 @@ namespace SabreTools.Metadata.DatFiles Header.Write(Data.Models.Metadata.Header.VersionKey, header.ReadString(Data.Models.Metadata.Header.VersionKey)); // Handle implied SuperDAT - if (Header.ReadString(Data.Models.Metadata.Header.NameKey)?.Contains(" - SuperDAT") == true && keep) + if (Header.Name?.Contains(" - SuperDAT") == true && keep) { if (Header.ReadString(Data.Models.Metadata.Header.TypeKey) is null) Header.Write(Data.Models.Metadata.Header.TypeKey, "SuperDAT"); diff --git a/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs b/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs index 536c5cb4..27ebcece 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs @@ -315,7 +315,7 @@ namespace SabreTools.Metadata.DatFiles var datItem = partMapping.Value; // Get the part name and skip if there's none - string? partName = partItem.ReadString(Data.Models.Metadata.Part.NameKey); + string? partName = partItem.Name; if (partName is null) continue; @@ -324,7 +324,7 @@ namespace SabreTools.Metadata.DatFiles partItems[partName] = []; // Copy over string values - partItems[partName][Data.Models.Metadata.Part.NameKey] = partName; + partItems[partName].Name = partName; if (!partItems[partName].ContainsKey(Data.Models.Metadata.Part.InterfaceKey)) partItems[partName][Data.Models.Metadata.Part.InterfaceKey] = partItem.ReadString(Data.Models.Metadata.Part.InterfaceKey); @@ -341,7 +341,7 @@ namespace SabreTools.Metadata.DatFiles ClearEmptyKeys(romItem); // Get the data area name and skip if there's none - string? dataAreaName = dataArea.ReadString(Data.Models.Metadata.DataArea.NameKey); + string? dataAreaName = dataArea.Name; if (dataAreaName is not null) { // Get existing data areas as a list @@ -349,7 +349,7 @@ namespace SabreTools.Metadata.DatFiles List dataAreas = [.. dataAreasArr]; // Find the existing disk area to append to, otherwise create a new disk area - int dataAreaIndex = dataAreas.FindIndex(da => da.ReadString(Data.Models.Metadata.DataArea.NameKey) == dataAreaName); + int dataAreaIndex = dataAreas.FindIndex(da => da.Name == dataAreaName); Data.Models.Metadata.DataArea aggregateDataArea; if (dataAreaIndex > -1) { @@ -359,7 +359,7 @@ namespace SabreTools.Metadata.DatFiles { aggregateDataArea = []; aggregateDataArea[Data.Models.Metadata.DataArea.EndiannessKey] = dataArea.ReadString(Data.Models.Metadata.DataArea.EndiannessKey); - aggregateDataArea[Data.Models.Metadata.DataArea.NameKey] = dataArea.ReadString(Data.Models.Metadata.DataArea.NameKey); + aggregateDataArea.Name = dataArea.Name; aggregateDataArea[Data.Models.Metadata.DataArea.SizeKey] = dataArea.ReadString(Data.Models.Metadata.DataArea.SizeKey); aggregateDataArea[Data.Models.Metadata.DataArea.WidthKey] = dataArea.ReadString(Data.Models.Metadata.DataArea.WidthKey); } @@ -398,7 +398,7 @@ namespace SabreTools.Metadata.DatFiles ClearEmptyKeys(diskItem); // Get the disk area name and skip if there's none - string? diskAreaName = diskArea.ReadString(Data.Models.Metadata.DiskArea.NameKey); + string? diskAreaName = diskArea.Name; if (diskAreaName is not null) { // Get existing disk areas as a list @@ -406,7 +406,7 @@ namespace SabreTools.Metadata.DatFiles List diskAreas = [.. diskAreasArr]; // Find the existing disk area to append to, otherwise create a new disk area - int diskAreaIndex = diskAreas.FindIndex(da => da.ReadString(Data.Models.Metadata.DiskArea.NameKey) == diskAreaName); + int diskAreaIndex = diskAreas.FindIndex(da => da.Name == diskAreaName); Data.Models.Metadata.DiskArea aggregateDiskArea; if (diskAreaIndex > -1) { @@ -415,7 +415,7 @@ namespace SabreTools.Metadata.DatFiles else { aggregateDiskArea = []; - aggregateDiskArea[Data.Models.Metadata.DiskArea.NameKey] = diskArea.ReadString(Data.Models.Metadata.DiskArea.NameKey); + aggregateDiskArea.Name = diskArea.Name; } // Clear any empty fields @@ -741,7 +741,7 @@ namespace SabreTools.Metadata.DatFiles var datItem = partMapping.Value; // Get the part name and skip if there's none - string? partName = partItem.ReadString(Data.Models.Metadata.Part.NameKey); + string? partName = partItem.Name; if (partName is null) continue; @@ -750,7 +750,7 @@ namespace SabreTools.Metadata.DatFiles partItems[partName] = []; // Copy over string values - partItems[partName][Data.Models.Metadata.Part.NameKey] = partName; + partItems[partName].Name = partName; if (!partItems[partName].ContainsKey(Data.Models.Metadata.Part.InterfaceKey)) partItems[partName][Data.Models.Metadata.Part.InterfaceKey] = partItem.ReadString(Data.Models.Metadata.Part.InterfaceKey); @@ -767,7 +767,7 @@ namespace SabreTools.Metadata.DatFiles ClearEmptyKeys(romItem); // Get the data area name and skip if there's none - string? dataAreaName = dataArea.ReadString(Data.Models.Metadata.DataArea.NameKey); + string? dataAreaName = dataArea.Name; if (dataAreaName is not null) { // Get existing data areas as a list @@ -775,7 +775,7 @@ namespace SabreTools.Metadata.DatFiles List dataAreas = [.. dataAreasArr]; // Find the existing disk area to append to, otherwise create a new disk area - int dataAreaIndex = dataAreas.FindIndex(da => da.ReadString(Data.Models.Metadata.DataArea.NameKey) == dataAreaName); + int dataAreaIndex = dataAreas.FindIndex(da => da.Name == dataAreaName); Data.Models.Metadata.DataArea aggregateDataArea; if (dataAreaIndex > -1) { @@ -785,7 +785,7 @@ namespace SabreTools.Metadata.DatFiles { aggregateDataArea = []; aggregateDataArea[Data.Models.Metadata.DataArea.EndiannessKey] = dataArea.ReadString(Data.Models.Metadata.DataArea.EndiannessKey); - aggregateDataArea[Data.Models.Metadata.DataArea.NameKey] = dataArea.ReadString(Data.Models.Metadata.DataArea.NameKey); + aggregateDataArea.Name = dataArea.Name; aggregateDataArea[Data.Models.Metadata.DataArea.SizeKey] = dataArea.ReadString(Data.Models.Metadata.DataArea.SizeKey); aggregateDataArea[Data.Models.Metadata.DataArea.WidthKey] = dataArea.ReadString(Data.Models.Metadata.DataArea.WidthKey); } @@ -824,7 +824,7 @@ namespace SabreTools.Metadata.DatFiles ClearEmptyKeys(diskItem); // Get the disk area name and skip if there's none - string? diskAreaName = diskArea.ReadString(Data.Models.Metadata.DiskArea.NameKey); + string? diskAreaName = diskArea.Name; if (diskAreaName is not null) { // Get existing disk areas as a list @@ -832,7 +832,7 @@ namespace SabreTools.Metadata.DatFiles List diskAreas = [.. diskAreasArr]; // Find the existing disk area to append to, otherwise create a new disk area - int diskAreaIndex = diskAreas.FindIndex(da => da.ReadString(Data.Models.Metadata.DiskArea.NameKey) == diskAreaName); + int diskAreaIndex = diskAreas.FindIndex(da => da.Name == diskAreaName); Data.Models.Metadata.DiskArea aggregateDiskArea; if (diskAreaIndex > -1) { @@ -841,7 +841,7 @@ namespace SabreTools.Metadata.DatFiles else { aggregateDiskArea = []; - aggregateDiskArea[Data.Models.Metadata.DiskArea.NameKey] = diskArea.ReadString(Data.Models.Metadata.DiskArea.NameKey); + aggregateDiskArea.Name = diskArea.Name; } // Clear any empty fields @@ -983,7 +983,7 @@ namespace SabreTools.Metadata.DatFiles var dumpRom = new Data.Models.Metadata.Dump(); var rom = new Data.Models.Metadata.Rom(); - rom[Data.Models.Metadata.Rom.NameKey] = romItem.ReadString(Data.Models.Metadata.Rom.NameKey); + rom.Name = romItem.Name; rom[Data.Models.Metadata.Rom.OffsetKey] = romItem.ReadString(Data.Models.Metadata.Rom.StartKey) ?? romItem.ReadString(Data.Models.Metadata.Rom.OffsetKey); rom[Data.Models.Metadata.Rom.OpenMSXType] = romItem.ReadString(Data.Models.Metadata.Rom.OpenMSXType); rom[Data.Models.Metadata.Rom.RemarkKey] = romItem.ReadString(Data.Models.Metadata.Rom.RemarkKey); @@ -1011,7 +1011,7 @@ namespace SabreTools.Metadata.DatFiles var dumpMegaRom = new Data.Models.Metadata.Dump(); var megaRom = new Data.Models.Metadata.Rom(); - megaRom[Data.Models.Metadata.Rom.NameKey] = romItem.ReadString(Data.Models.Metadata.Rom.NameKey); + megaRom.Name = romItem.Name; megaRom[Data.Models.Metadata.Rom.OffsetKey] = romItem.ReadString(Data.Models.Metadata.Rom.StartKey) ?? romItem.ReadString(Data.Models.Metadata.Rom.OffsetKey); megaRom[Data.Models.Metadata.Rom.OpenMSXType] = romItem.ReadString(Data.Models.Metadata.Rom.OpenMSXType); megaRom[Data.Models.Metadata.Rom.RemarkKey] = romItem.ReadString(Data.Models.Metadata.Rom.RemarkKey); @@ -1039,7 +1039,7 @@ namespace SabreTools.Metadata.DatFiles var dumpSccPlusCart = new Data.Models.Metadata.Dump(); var sccPlusCart = new Data.Models.Metadata.Rom(); - sccPlusCart[Data.Models.Metadata.Rom.NameKey] = romItem.ReadString(Data.Models.Metadata.Rom.NameKey); + sccPlusCart.Name = romItem.Name; sccPlusCart[Data.Models.Metadata.Rom.OffsetKey] = romItem.ReadString(Data.Models.Metadata.Rom.StartKey) ?? romItem.ReadString(Data.Models.Metadata.Rom.OffsetKey); sccPlusCart[Data.Models.Metadata.Rom.OpenMSXType] = romItem.ReadString(Data.Models.Metadata.Rom.OpenMSXType); sccPlusCart[Data.Models.Metadata.Rom.RemarkKey] = romItem.ReadString(Data.Models.Metadata.Rom.RemarkKey); diff --git a/SabreTools.Metadata.DatFiles/DatFile.cs b/SabreTools.Metadata.DatFiles/DatFile.cs index f82fbb34..908e108d 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.cs @@ -95,7 +95,7 @@ namespace SabreTools.Metadata.DatFiles public void FillHeaderFromPath(string path, bool bare) { // Get the header strings - string? name = Header.ReadString(Data.Models.Metadata.Header.NameKey); + string? name = Header.Name; string? description = Header.ReadString(Data.Models.Metadata.Header.DescriptionKey); string? date = Header.ReadString(Data.Models.Metadata.Header.DateKey); @@ -129,7 +129,7 @@ namespace SabreTools.Metadata.DatFiles description = description?.Trim(); // Set the fields back - Header.Write(Data.Models.Metadata.Header.NameKey, name); + Header.Name = name; Header.Write(Data.Models.Metadata.Header.DescriptionKey, description); } diff --git a/SabreTools.Metadata.DatFiles/DatHeader.cs b/SabreTools.Metadata.DatFiles/DatHeader.cs index c61c7e1d..197387f6 100644 --- a/SabreTools.Metadata.DatFiles/DatHeader.cs +++ b/SabreTools.Metadata.DatFiles/DatHeader.cs @@ -31,6 +31,12 @@ namespace SabreTools.Metadata.DatFiles #region Fields + public string? Name + { + get => _internal.Name; + set => _internal.Name = value; + } + [JsonIgnore] public bool CanOpenSpecified { diff --git a/SabreTools.Metadata.DatItems.Test/DatItemTests.cs b/SabreTools.Metadata.DatItems.Test/DatItemTests.cs index f80fa993..6dfa3f3a 100644 --- a/SabreTools.Metadata.DatItems.Test/DatItemTests.cs +++ b/SabreTools.Metadata.DatItems.Test/DatItemTests.cs @@ -356,7 +356,7 @@ namespace SabreTools.Metadata.DatItems.Test Source source = new Source(0); Machine machine = new Machine(); - machine.Write(Data.Models.Metadata.Machine.NameKey, "Machine"); + machine.SetName("Machine"); DatItem datItem = new Blank(); @@ -430,7 +430,7 @@ namespace SabreTools.Metadata.DatItems.Test Source source = new Source(0); Machine machine = new Machine(); - machine.Write(Data.Models.Metadata.Machine.NameKey, "Machine"); + machine.SetName("Machine"); DatItem datItem = new Rom(); datItem.Write(Data.Models.Metadata.Rom.CRC16Key, "DEADBEEF"); diff --git a/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs b/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs index 63372540..df8ff31b 100644 --- a/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs +++ b/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs @@ -14,7 +14,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test diskArea.SetName("XXXXXX"); Machine machine = new Machine(); - machine.Write(Data.Models.Metadata.Machine.NameKey, "XXXXXX"); + machine.SetName("XXXXXX"); Part part = new Part(); part.SetName("XXXXXX"); @@ -49,7 +49,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test DataArea? actualDataArea = actual.Read(Rom.DataAreaKey); Assert.NotNull(actualDataArea); - Assert.Equal("XXXXXX", actualDataArea.ReadString(Data.Models.Metadata.DataArea.NameKey)); + Assert.Equal("XXXXXX", actualDataArea.GetName()); Machine? actualMachine = actual.GetMachine(); Assert.NotNull(actualMachine); @@ -59,7 +59,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Part? actualPart = actual.Read(Rom.PartKey); Assert.NotNull(actualPart); - Assert.Equal("XXXXXX", actualPart.ReadString(Data.Models.Metadata.Part.NameKey)); + Assert.Equal("XXXXXX", actualPart.GetName()); Source? actualSource = actual.Read(DatItem.SourceKey); Assert.NotNull(actualSource); @@ -254,7 +254,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Source source = new Source(0); Machine machine = new Machine(); - machine.Write(Data.Models.Metadata.Machine.NameKey, "Machine"); + machine.SetName("Machine"); DatItem datItem = new Disk(); datItem.Write(Data.Models.Metadata.Disk.MD5Key, "DEADBEEF"); diff --git a/SabreTools.Metadata.DatItems.Test/Formats/FileTests.cs b/SabreTools.Metadata.DatItems.Test/Formats/FileTests.cs index d31ccce8..70177d4f 100644 --- a/SabreTools.Metadata.DatItems.Test/Formats/FileTests.cs +++ b/SabreTools.Metadata.DatItems.Test/Formats/FileTests.cs @@ -11,7 +11,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test public void ConvertToRomTest() { Machine machine = new Machine(); - machine.Write(Data.Models.Metadata.Machine.NameKey, "XXXXXX"); + machine.SetName("XXXXXX"); Source source = new Source(0, "XXXXXX"); @@ -341,7 +341,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Source source = new Source(0); Machine machine = new Machine(); - machine.Write(Data.Models.Metadata.Machine.NameKey, "Machine"); + machine.SetName("Machine"); DatItem datItem = new File { diff --git a/SabreTools.Metadata.DatItems.Test/Formats/MediaTests.cs b/SabreTools.Metadata.DatItems.Test/Formats/MediaTests.cs index d2636b5f..5cab2483 100644 --- a/SabreTools.Metadata.DatItems.Test/Formats/MediaTests.cs +++ b/SabreTools.Metadata.DatItems.Test/Formats/MediaTests.cs @@ -11,7 +11,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test public void ConvertToRomTest() { Machine machine = new Machine(); - machine.Write(Data.Models.Metadata.Machine.NameKey, "XXXXXX"); + machine.SetName("XXXXXX"); Source source = new Source(0, "XXXXXX"); @@ -306,7 +306,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Source source = new Source(0); Machine machine = new Machine(); - machine.Write(Data.Models.Metadata.Machine.NameKey, "Machine"); + machine.SetName("Machine"); DatItem datItem = new Media(); datItem.Write(Data.Models.Metadata.Media.MD5Key, "DEADBEEF"); diff --git a/SabreTools.Metadata.DatItems.Test/Formats/RomTests.cs b/SabreTools.Metadata.DatItems.Test/Formats/RomTests.cs index 704fb1a0..062f19d9 100644 --- a/SabreTools.Metadata.DatItems.Test/Formats/RomTests.cs +++ b/SabreTools.Metadata.DatItems.Test/Formats/RomTests.cs @@ -800,7 +800,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Source source = new Source(0); Machine machine = new Machine(); - machine.Write(Data.Models.Metadata.Machine.NameKey, "Machine"); + machine.SetName("Machine"); DatItem datItem = new Rom(); datItem.Write(Data.Models.Metadata.Rom.CRC16Key, "DEADBEEF"); diff --git a/SabreTools.Metadata.DatItems.Test/MachineTests.cs b/SabreTools.Metadata.DatItems.Test/MachineTests.cs index aced0ad8..c8922d83 100644 --- a/SabreTools.Metadata.DatItems.Test/MachineTests.cs +++ b/SabreTools.Metadata.DatItems.Test/MachineTests.cs @@ -1,3 +1,4 @@ +using SabreTools.Data.Extensions; using Xunit; namespace SabreTools.Metadata.DatItems.Test @@ -10,7 +11,7 @@ namespace SabreTools.Metadata.DatItems.Test public void CloneTest() { Machine item = new Machine(); - item.Write(Data.Models.Metadata.Machine.NameKey, "name"); + item.SetName("name"); object clone = item.Clone(); Machine? actual = clone as Machine; @@ -26,10 +27,10 @@ namespace SabreTools.Metadata.DatItems.Test public void GetInternalCloneTest() { Machine item = new Machine(); - item.Write(Data.Models.Metadata.Machine.NameKey, "name"); + item.SetName("name"); Data.Models.Metadata.Machine actual = item.GetInternalClone(); - Assert.Equal("name", actual[Data.Models.Metadata.Machine.NameKey]); + Assert.Equal("name", actual.GetName()); } #endregion @@ -60,10 +61,10 @@ namespace SabreTools.Metadata.DatItems.Test public void Equals_MismatchedInternal_False() { Machine self = new Machine(); - self.Write(Data.Models.Metadata.Machine.NameKey, "self"); + self.SetName("self"); Machine? other = new Machine(); - other.Write(Data.Models.Metadata.Machine.NameKey, "other"); + other.SetName("other"); bool actual = self.Equals(other); Assert.False(actual); @@ -73,10 +74,10 @@ namespace SabreTools.Metadata.DatItems.Test public void Equals_EqualInternal_True() { Machine self = new Machine(); - self.Write(Data.Models.Metadata.Machine.NameKey, "name"); + self.SetName("name"); Machine? other = new Machine(); - other.Write(Data.Models.Metadata.Machine.NameKey, "name"); + other.SetName("name"); bool actual = self.Equals(other); Assert.True(actual); diff --git a/SabreTools.Metadata.DatItems/Formats/Disk.cs b/SabreTools.Metadata.DatItems/Formats/Disk.cs index 14cefd9d..82753e3d 100644 --- a/SabreTools.Metadata.DatItems/Formats/Disk.cs +++ b/SabreTools.Metadata.DatItems/Formats/Disk.cs @@ -114,8 +114,8 @@ namespace SabreTools.Metadata.DatItems.Formats { var dataArea = new DataArea(); - string? diskAreaName = diskArea.ReadString(Data.Models.Metadata.DiskArea.NameKey); - dataArea.Write(Data.Models.Metadata.DataArea.NameKey, diskAreaName); + string? diskAreaName = diskArea.GetName(); + dataArea.SetName(diskAreaName); rom.Write(Rom.DataAreaKey, dataArea); } diff --git a/SabreTools.Metadata.Filter.Test/FilterObjectTests.cs b/SabreTools.Metadata.Filter.Test/FilterObjectTests.cs index 34b96bf7..280b59eb 100644 --- a/SabreTools.Metadata.Filter.Test/FilterObjectTests.cs +++ b/SabreTools.Metadata.Filter.Test/FilterObjectTests.cs @@ -85,7 +85,7 @@ namespace SabreTools.Metadata.Filter.Test [Fact] public void MatchesEqual_NoValue() { - var sample = new Sample { [Sample.NameKey] = null }; + var sample = new Sample { Name = null }; FilterObject filterObject = new FilterObject("Sample.Name", null, Operation.Equals); bool actual = filterObject.Matches(sample); Assert.True(actual); @@ -94,7 +94,7 @@ namespace SabreTools.Metadata.Filter.Test [Fact] public void MatchesEqual_BoolValue() { - var sample = new Sample { [Sample.NameKey] = "true" }; + var sample = new Sample { Name = "true" }; FilterObject filterObject = new FilterObject("Sample.Name", "yes", Operation.Equals); bool actual = filterObject.Matches(sample); Assert.True(actual); @@ -103,7 +103,7 @@ namespace SabreTools.Metadata.Filter.Test [Fact] public void MatchesEqual_Int64Value() { - var sample = new Sample { [Sample.NameKey] = "12345" }; + var sample = new Sample { Name = "12345" }; FilterObject filterObject = new FilterObject("Sample.Name", "12345", Operation.Equals); bool actual = filterObject.Matches(sample); Assert.True(actual); @@ -112,7 +112,7 @@ namespace SabreTools.Metadata.Filter.Test [Fact] public void MatchesEqual_DoubleValue() { - var sample = new Sample { [Sample.NameKey] = "12.345" }; + var sample = new Sample { Name = "12.345" }; FilterObject filterObject = new FilterObject("Sample.Name", "12.345", Operation.Equals); bool actual = filterObject.Matches(sample); Assert.True(actual); @@ -121,7 +121,7 @@ namespace SabreTools.Metadata.Filter.Test [Fact] public void MatchesEqual_RegexValue() { - var sample = new Sample { [Sample.NameKey] = "XXXXXX" }; + var sample = new Sample { Name = "XXXXXX" }; FilterObject filterObject = new FilterObject("Sample.Name", "^XXXXXX$", Operation.Equals); bool actual = filterObject.Matches(sample); Assert.True(actual); @@ -130,7 +130,7 @@ namespace SabreTools.Metadata.Filter.Test [Fact] public void MatchesEqual_StringValue() { - var sample = new Sample { [Sample.NameKey] = "XXXXXX" }; + var sample = new Sample { Name = "XXXXXX" }; FilterObject filterObject = new FilterObject("Sample.Name", "XXXXXX", Operation.Equals); bool actual = filterObject.Matches(sample); Assert.True(actual); @@ -152,7 +152,7 @@ namespace SabreTools.Metadata.Filter.Test [Fact] public void MatchesNotEqual_NoValue() { - var sample = new Sample { [Sample.NameKey] = null }; + var sample = new Sample { Name = null }; FilterObject filterObject = new FilterObject("Sample.Name", null, Operation.NotEquals); bool actual = filterObject.Matches(sample); Assert.False(actual); @@ -161,7 +161,7 @@ namespace SabreTools.Metadata.Filter.Test [Fact] public void MatchesNotEqual_BoolValue() { - var sample = new Sample { [Sample.NameKey] = "true" }; + var sample = new Sample { Name = "true" }; FilterObject filterObject = new FilterObject("Sample.Name", "yes", Operation.NotEquals); bool actual = filterObject.Matches(sample); Assert.False(actual); @@ -170,7 +170,7 @@ namespace SabreTools.Metadata.Filter.Test [Fact] public void MatchesNotEqual_Int64Value() { - var sample = new Sample { [Sample.NameKey] = "12345" }; + var sample = new Sample { Name = "12345" }; FilterObject filterObject = new FilterObject("Sample.Name", "12345", Operation.NotEquals); bool actual = filterObject.Matches(sample); Assert.False(actual); @@ -179,7 +179,7 @@ namespace SabreTools.Metadata.Filter.Test [Fact] public void MatchesNotEqual_DoubleValue() { - var sample = new Sample { [Sample.NameKey] = "12.345" }; + var sample = new Sample { Name = "12.345" }; FilterObject filterObject = new FilterObject("Sample.Name", "12.345", Operation.NotEquals); bool actual = filterObject.Matches(sample); Assert.False(actual); @@ -188,7 +188,7 @@ namespace SabreTools.Metadata.Filter.Test [Fact] public void MatchesNotEqual_RegexValue() { - var sample = new Sample { [Sample.NameKey] = "XXXXXX" }; + var sample = new Sample { Name = "XXXXXX" }; FilterObject filterObject = new FilterObject("Sample.Name", "^XXXXXX$", Operation.NotEquals); bool actual = filterObject.Matches(sample); Assert.False(actual); @@ -197,7 +197,7 @@ namespace SabreTools.Metadata.Filter.Test [Fact] public void MatchesNotEqual_StringValue() { - var sample = new Sample { [Sample.NameKey] = "XXXXXX" }; + var sample = new Sample { Name = "XXXXXX" }; FilterObject filterObject = new FilterObject("Sample.Name", "XXXXXX", Operation.NotEquals); bool actual = filterObject.Matches(sample); Assert.False(actual); @@ -219,7 +219,7 @@ namespace SabreTools.Metadata.Filter.Test [Fact] public void MatchesGreaterThan_NoValue() { - var sample = new Sample { [Sample.NameKey] = null }; + var sample = new Sample { Name = null }; FilterObject filterObject = new FilterObject("Sample.Name", null, Operation.GreaterThan); bool actual = filterObject.Matches(sample); Assert.False(actual); @@ -228,7 +228,7 @@ namespace SabreTools.Metadata.Filter.Test [Fact] public void MatchesGreaterThan_BoolValue() { - var sample = new Sample { [Sample.NameKey] = "true" }; + var sample = new Sample { Name = "true" }; FilterObject filterObject = new FilterObject("Sample.Name", "yes", Operation.GreaterThan); bool actual = filterObject.Matches(sample); Assert.False(actual); @@ -237,7 +237,7 @@ namespace SabreTools.Metadata.Filter.Test [Fact] public void MatchesGreaterThan_Int64Value() { - var sample = new Sample { [Sample.NameKey] = "12346" }; + var sample = new Sample { Name = "12346" }; FilterObject filterObject = new FilterObject("Sample.Name", "12345", Operation.GreaterThan); bool actual = filterObject.Matches(sample); Assert.True(actual); @@ -246,7 +246,7 @@ namespace SabreTools.Metadata.Filter.Test [Fact] public void MatchesGreaterThan_DoubleValue() { - var sample = new Sample { [Sample.NameKey] = "12.346" }; + var sample = new Sample { Name = "12.346" }; FilterObject filterObject = new FilterObject("Sample.Name", "12.345", Operation.GreaterThan); bool actual = filterObject.Matches(sample); Assert.True(actual); @@ -255,7 +255,7 @@ namespace SabreTools.Metadata.Filter.Test [Fact] public void MatchesGreaterThan_RegexValue() { - var sample = new Sample { [Sample.NameKey] = "XXXXXX" }; + var sample = new Sample { Name = "XXXXXX" }; FilterObject filterObject = new FilterObject("Sample.Name", "^XXXXXX$", Operation.GreaterThan); bool actual = filterObject.Matches(sample); Assert.False(actual); @@ -264,7 +264,7 @@ namespace SabreTools.Metadata.Filter.Test [Fact] public void MatchesGreaterThan_StringValue() { - var sample = new Sample { [Sample.NameKey] = "XXXXXX" }; + var sample = new Sample { Name = "XXXXXX" }; FilterObject filterObject = new FilterObject("Sample.Name", "XXXXXX", Operation.GreaterThan); bool actual = filterObject.Matches(sample); Assert.False(actual); @@ -286,7 +286,7 @@ namespace SabreTools.Metadata.Filter.Test [Fact] public void MatchesGreaterThanOrEqual_NoValue() { - var sample = new Sample { [Sample.NameKey] = null }; + var sample = new Sample { Name = null }; FilterObject filterObject = new FilterObject("Sample.Name", null, Operation.GreaterThanOrEqual); bool actual = filterObject.Matches(sample); Assert.False(actual); @@ -295,7 +295,7 @@ namespace SabreTools.Metadata.Filter.Test [Fact] public void MatchesGreaterThanOrEqual_BoolValue() { - var sample = new Sample { [Sample.NameKey] = "true" }; + var sample = new Sample { Name = "true" }; FilterObject filterObject = new FilterObject("Sample.Name", "yes", Operation.GreaterThanOrEqual); bool actual = filterObject.Matches(sample); Assert.False(actual); @@ -304,7 +304,7 @@ namespace SabreTools.Metadata.Filter.Test [Fact] public void MatchesGreaterThanOrEqual_Int64Value() { - var sample = new Sample { [Sample.NameKey] = "12346" }; + var sample = new Sample { Name = "12346" }; FilterObject filterObject = new FilterObject("Sample.Name", "12345", Operation.GreaterThanOrEqual); bool actual = filterObject.Matches(sample); Assert.True(actual); @@ -313,7 +313,7 @@ namespace SabreTools.Metadata.Filter.Test [Fact] public void MatchesGreaterThanOrEqual_DoubleValue() { - var sample = new Sample { [Sample.NameKey] = "12.346" }; + var sample = new Sample { Name = "12.346" }; FilterObject filterObject = new FilterObject("Sample.Name", "12.345", Operation.GreaterThanOrEqual); bool actual = filterObject.Matches(sample); Assert.True(actual); @@ -322,7 +322,7 @@ namespace SabreTools.Metadata.Filter.Test [Fact] public void MatchesGreaterThanOrEqual_RegexValue() { - var sample = new Sample { [Sample.NameKey] = "XXXXXX" }; + var sample = new Sample { Name = "XXXXXX" }; FilterObject filterObject = new FilterObject("Sample.Name", "^XXXXXX$", Operation.GreaterThanOrEqual); bool actual = filterObject.Matches(sample); Assert.False(actual); @@ -331,7 +331,7 @@ namespace SabreTools.Metadata.Filter.Test [Fact] public void MatchesGreaterThanOrEqual_StringValue() { - var sample = new Sample { [Sample.NameKey] = "XXXXXX" }; + var sample = new Sample { Name = "XXXXXX" }; FilterObject filterObject = new FilterObject("Sample.Name", "XXXXXX", Operation.GreaterThanOrEqual); bool actual = filterObject.Matches(sample); Assert.False(actual); @@ -353,7 +353,7 @@ namespace SabreTools.Metadata.Filter.Test [Fact] public void MatchesLessThan_NoValue() { - var sample = new Sample { [Sample.NameKey] = null }; + var sample = new Sample { Name = null }; FilterObject filterObject = new FilterObject("Sample.Name", null, Operation.LessThan); bool actual = filterObject.Matches(sample); Assert.False(actual); @@ -362,7 +362,7 @@ namespace SabreTools.Metadata.Filter.Test [Fact] public void MatchesLessThan_BoolValue() { - var sample = new Sample { [Sample.NameKey] = "true" }; + var sample = new Sample { Name = "true" }; FilterObject filterObject = new FilterObject("Sample.Name", "yes", Operation.LessThan); bool actual = filterObject.Matches(sample); Assert.False(actual); @@ -371,7 +371,7 @@ namespace SabreTools.Metadata.Filter.Test [Fact] public void MatchesLessThan_Int64Value() { - var sample = new Sample { [Sample.NameKey] = "12344" }; + var sample = new Sample { Name = "12344" }; FilterObject filterObject = new FilterObject("Sample.Name", "12345", Operation.LessThan); bool actual = filterObject.Matches(sample); Assert.True(actual); @@ -380,7 +380,7 @@ namespace SabreTools.Metadata.Filter.Test [Fact] public void MatchesLessThan_DoubleValue() { - var sample = new Sample { [Sample.NameKey] = "12.344" }; + var sample = new Sample { Name = "12.344" }; FilterObject filterObject = new FilterObject("Sample.Name", "12.345", Operation.LessThan); bool actual = filterObject.Matches(sample); Assert.True(actual); @@ -389,7 +389,7 @@ namespace SabreTools.Metadata.Filter.Test [Fact] public void MatchesLessThan_RegexValue() { - var sample = new Sample { [Sample.NameKey] = "XXXXXX" }; + var sample = new Sample { Name = "XXXXXX" }; FilterObject filterObject = new FilterObject("Sample.Name", "^XXXXXX$", Operation.LessThan); bool actual = filterObject.Matches(sample); Assert.False(actual); @@ -398,7 +398,7 @@ namespace SabreTools.Metadata.Filter.Test [Fact] public void MatchesLessThan_StringValue() { - var sample = new Sample { [Sample.NameKey] = "XXXXXX" }; + var sample = new Sample { Name = "XXXXXX" }; FilterObject filterObject = new FilterObject("Sample.Name", "XXXXXX", Operation.LessThan); bool actual = filterObject.Matches(sample); Assert.False(actual); @@ -420,7 +420,7 @@ namespace SabreTools.Metadata.Filter.Test [Fact] public void MatchesLessThanOrEqual_NoValue() { - var sample = new Sample { [Sample.NameKey] = null }; + var sample = new Sample { Name = null }; FilterObject filterObject = new FilterObject("Sample.Name", null, Operation.LessThanOrEqual); bool actual = filterObject.Matches(sample); Assert.False(actual); @@ -429,7 +429,7 @@ namespace SabreTools.Metadata.Filter.Test [Fact] public void MatchesLessThanOrEqual_BoolValue() { - var sample = new Sample { [Sample.NameKey] = "true" }; + var sample = new Sample { Name = "true" }; FilterObject filterObject = new FilterObject("Sample.Name", "yes", Operation.LessThanOrEqual); bool actual = filterObject.Matches(sample); Assert.False(actual); @@ -438,7 +438,7 @@ namespace SabreTools.Metadata.Filter.Test [Fact] public void MatchesLessThanOrEqual_Int64Value() { - var sample = new Sample { [Sample.NameKey] = "12344" }; + var sample = new Sample { Name = "12344" }; FilterObject filterObject = new FilterObject("Sample.Name", "12345", Operation.LessThanOrEqual); bool actual = filterObject.Matches(sample); Assert.True(actual); @@ -447,7 +447,7 @@ namespace SabreTools.Metadata.Filter.Test [Fact] public void MatchesLessThanOrEqual_DoubleValue() { - var sample = new Sample { [Sample.NameKey] = "12.344" }; + var sample = new Sample { Name = "12.344" }; FilterObject filterObject = new FilterObject("Sample.Name", "12.345", Operation.LessThanOrEqual); bool actual = filterObject.Matches(sample); Assert.True(actual); @@ -456,7 +456,7 @@ namespace SabreTools.Metadata.Filter.Test [Fact] public void MatchesLessThanOrEqual_RegexValue() { - var sample = new Sample { [Sample.NameKey] = "XXXXXX" }; + var sample = new Sample { Name = "XXXXXX" }; FilterObject filterObject = new FilterObject("Sample.Name", "^XXXXXX$", Operation.LessThanOrEqual); bool actual = filterObject.Matches(sample); Assert.False(actual); @@ -465,7 +465,7 @@ namespace SabreTools.Metadata.Filter.Test [Fact] public void MatchesLessThanOrEqual_StringValue() { - var sample = new Sample { [Sample.NameKey] = "XXXXXX" }; + var sample = new Sample { Name = "XXXXXX" }; FilterObject filterObject = new FilterObject("Sample.Name", "XXXXXX", Operation.LessThanOrEqual); bool actual = filterObject.Matches(sample); Assert.False(actual); diff --git a/SabreTools.Metadata.Filter.Test/FilterRunnerTests.cs b/SabreTools.Metadata.Filter.Test/FilterRunnerTests.cs index cfbaf684..23140ae1 100644 --- a/SabreTools.Metadata.Filter.Test/FilterRunnerTests.cs +++ b/SabreTools.Metadata.Filter.Test/FilterRunnerTests.cs @@ -121,7 +121,7 @@ namespace SabreTools.Metadata.Filter.Test [Fact] public void DatItem_Null_False() { - DatItem datItem = new Sample { [Sample.NameKey] = null }; + DatItem datItem = new Sample { Name = null }; bool actual = _filterRunner.Run(datItem); Assert.False(actual); } @@ -129,7 +129,7 @@ namespace SabreTools.Metadata.Filter.Test [Fact] public void DatItem_Empty_False() { - DatItem datItem = new Sample { [Sample.NameKey] = "" }; + DatItem datItem = new Sample { Name = "" }; bool actual = _filterRunner.Run(datItem); Assert.False(actual); } @@ -137,7 +137,7 @@ namespace SabreTools.Metadata.Filter.Test [Fact] public void DatItem_Incorrect_False() { - DatItem datItem = new Sample { [Sample.NameKey] = "NO_MATCH" }; + DatItem datItem = new Sample { Name = "NO_MATCH" }; bool actual = _filterRunner.Run(datItem); Assert.False(actual); } @@ -145,7 +145,7 @@ namespace SabreTools.Metadata.Filter.Test [Fact] public void DatItem_Correct_True() { - DatItem datItem = new Sample { [Sample.NameKey] = "name" }; + DatItem datItem = new Sample { Name = "name" }; bool actual = _filterRunner.Run(datItem); Assert.True(actual); } @@ -167,7 +167,7 @@ namespace SabreTools.Metadata.Filter.Test { DatItem datItem = new Rom { - [Rom.NameKey] = "name", + Name = "name", [Rom.CRCKey] = null, }; @@ -180,7 +180,7 @@ namespace SabreTools.Metadata.Filter.Test { DatItem datItem = new Rom { - [Rom.NameKey] = "name", + Name = "name", [Rom.CRCKey] = "", }; @@ -193,7 +193,7 @@ namespace SabreTools.Metadata.Filter.Test { DatItem datItem = new Rom { - [Rom.NameKey] = "name", + Name = "name", [Rom.CRCKey] = "NO_MATCH", }; @@ -206,7 +206,7 @@ namespace SabreTools.Metadata.Filter.Test { DatItem datItem = new Rom { - [Rom.NameKey] = "name", + Name = "name", [Rom.CRCKey] = "crc", }; diff --git a/SabreTools.Metadata.Filter/FilterObject.cs b/SabreTools.Metadata.Filter/FilterObject.cs index f0448b01..dcfca12c 100644 --- a/SabreTools.Metadata.Filter/FilterObject.cs +++ b/SabreTools.Metadata.Filter/FilterObject.cs @@ -77,12 +77,24 @@ namespace SabreTools.Metadata.Filter /// private bool MatchesEqual(DictionaryBase dictionaryBase) { - // If the key doesn't exist, we count it as null - if (!dictionaryBase.ContainsKey(Key.FieldName)) - return string.IsNullOrEmpty(Value); + // Some fields need unique handling + string? checkValue; + if (Key.FieldName == "name") + { + // TODO: Make this less awkward and hacky + checkValue = dictionaryBase.GetName(); + } + else + { + // If the key doesn't exist, we count it as null + if (!dictionaryBase.ContainsKey(Key.FieldName)) + return string.IsNullOrEmpty(Value); - // If the value in the dictionary is null - string? checkValue = dictionaryBase.ReadString(Key.FieldName); + // If the value in the dictionary is null + checkValue = dictionaryBase.ReadString(Key.FieldName); + } + + // If a null value is expected if (checkValue is null) return string.IsNullOrEmpty(Value); @@ -120,12 +132,24 @@ namespace SabreTools.Metadata.Filter /// private bool MatchesNotEqual(DictionaryBase dictionaryBase) { - // If the key doesn't exist, we count it as null - if (!dictionaryBase.ContainsKey(Key.FieldName)) - return !string.IsNullOrEmpty(Value); + // Some fields need unique handling + string? checkValue; + if (Key.FieldName == "name") + { + // TODO: Make this less awkward and hacky + checkValue = dictionaryBase.GetName(); + } + else + { + // If the key doesn't exist, we count it as null + if (!dictionaryBase.ContainsKey(Key.FieldName)) + return string.IsNullOrEmpty(Value); - // If the value in the dictionary is null - string? checkValue = dictionaryBase.ReadString(Key.FieldName); + // If the value in the dictionary is null + checkValue = dictionaryBase.ReadString(Key.FieldName); + } + + // If a null value is expected if (checkValue is null) return !string.IsNullOrEmpty(Value); @@ -163,12 +187,24 @@ namespace SabreTools.Metadata.Filter /// private bool MatchesGreaterThan(DictionaryBase dictionaryBase) { - // If the key doesn't exist, we count it as null - if (!dictionaryBase.ContainsKey(Key.FieldName)) - return false; + // Some fields need unique handling + string? checkValue; + if (Key.FieldName == "name") + { + // TODO: Make this less awkward and hacky + checkValue = dictionaryBase.GetName(); + } + else + { + // If the key doesn't exist, we count it as null + if (!dictionaryBase.ContainsKey(Key.FieldName)) + return string.IsNullOrEmpty(Value); - // If the value in the dictionary is null - string? checkValue = dictionaryBase.ReadString(Key.FieldName); + // If the value in the dictionary is null + checkValue = dictionaryBase.ReadString(Key.FieldName); + } + + // Null is always failure if (checkValue is null) return false; @@ -196,12 +232,24 @@ namespace SabreTools.Metadata.Filter /// private bool MatchesGreaterThanOrEqual(DictionaryBase dictionaryBase) { - // If the key doesn't exist, we count it as null - if (!dictionaryBase.ContainsKey(Key.FieldName)) - return false; + // Some fields need unique handling + string? checkValue; + if (Key.FieldName == "name") + { + // TODO: Make this less awkward and hacky + checkValue = dictionaryBase.GetName(); + } + else + { + // If the key doesn't exist, we count it as null + if (!dictionaryBase.ContainsKey(Key.FieldName)) + return string.IsNullOrEmpty(Value); - // If the value in the dictionary is null - string? checkValue = dictionaryBase.ReadString(Key.FieldName); + // If the value in the dictionary is null + checkValue = dictionaryBase.ReadString(Key.FieldName); + } + + // Null is always failure if (checkValue is null) return false; @@ -229,12 +277,24 @@ namespace SabreTools.Metadata.Filter /// private bool MatchesLessThan(DictionaryBase dictionaryBase) { - // If the key doesn't exist, we count it as null - if (!dictionaryBase.ContainsKey(Key.FieldName)) - return false; + // Some fields need unique handling + string? checkValue; + if (Key.FieldName == "name") + { + // TODO: Make this less awkward and hacky + checkValue = dictionaryBase.GetName(); + } + else + { + // If the key doesn't exist, we count it as null + if (!dictionaryBase.ContainsKey(Key.FieldName)) + return string.IsNullOrEmpty(Value); - // If the value in the dictionary is null - string? checkValue = dictionaryBase.ReadString(Key.FieldName); + // If the value in the dictionary is null + checkValue = dictionaryBase.ReadString(Key.FieldName); + } + + // Null is always failure if (checkValue is null) return false; @@ -262,12 +322,24 @@ namespace SabreTools.Metadata.Filter /// private bool MatchesLessThanOrEqual(DictionaryBase dictionaryBase) { - // If the key doesn't exist, we count it as null - if (!dictionaryBase.ContainsKey(Key.FieldName)) - return false; + // Some fields need unique handling + string? checkValue; + if (Key.FieldName == "name") + { + // TODO: Make this less awkward and hacky + checkValue = dictionaryBase.GetName(); + } + else + { + // If the key doesn't exist, we count it as null + if (!dictionaryBase.ContainsKey(Key.FieldName)) + return string.IsNullOrEmpty(Value); - // If the value in the dictionary is null - string? checkValue = dictionaryBase.ReadString(Key.FieldName); + // If the value in the dictionary is null + checkValue = dictionaryBase.ReadString(Key.FieldName); + } + + // Null is always failure if (checkValue is null) return false; diff --git a/SabreTools.Metadata.Test/DictionaryBaseExtensionsTests.cs b/SabreTools.Metadata.Test/DictionaryBaseExtensionsTests.cs index cf320aad..e6905167 100644 --- a/SabreTools.Metadata.Test/DictionaryBaseExtensionsTests.cs +++ b/SabreTools.Metadata.Test/DictionaryBaseExtensionsTests.cs @@ -23,14 +23,14 @@ namespace SabreTools.Metadata.Test DictionaryBase self = new Disk { [Disk.StatusKey] = "nodump", - [Disk.NameKey] = "XXXXXX", + Name = "XXXXXX", [Disk.MD5Key] = string.Empty, [Disk.SHA1Key] = string.Empty, }; DictionaryBase other = new Disk { [Disk.StatusKey] = "NODUMP", - [Disk.NameKey] = "XXXXXX", + Name = "XXXXXX", [Disk.MD5Key] = string.Empty, [Disk.SHA1Key] = string.Empty, }; @@ -44,13 +44,13 @@ namespace SabreTools.Metadata.Test { DictionaryBase self = new Disk { - [Disk.NameKey] = "XXXXXX", + Name = "XXXXXX", [Disk.MD5Key] = "XXXXXX", [Disk.SHA1Key] = string.Empty, }; DictionaryBase other = new Disk { - [Disk.NameKey] = "XXXXXX", + Name = "XXXXXX", [Disk.MD5Key] = string.Empty, [Disk.SHA1Key] = "XXXXXX", }; @@ -64,13 +64,13 @@ namespace SabreTools.Metadata.Test { DictionaryBase self = new Disk { - [Disk.NameKey] = "XXXXXX1", + Name = "XXXXXX1", [Disk.MD5Key] = "XXXXXX", [Disk.SHA1Key] = string.Empty, }; DictionaryBase other = new Disk { - [Disk.NameKey] = "XXXXXX2", + Name = "XXXXXX2", [Disk.MD5Key] = "XXXXXX", [Disk.SHA1Key] = "XXXXXX", }; @@ -84,13 +84,13 @@ namespace SabreTools.Metadata.Test { DictionaryBase self = new Disk { - [Disk.NameKey] = "XXXXXX1", + Name = "XXXXXX1", [Disk.MD5Key] = string.Empty, [Disk.SHA1Key] = "XXXXXX", }; DictionaryBase other = new Disk { - [Disk.NameKey] = "XXXXXX2", + Name = "XXXXXX2", [Disk.MD5Key] = "XXXXXX", [Disk.SHA1Key] = "XXXXXX", }; @@ -104,13 +104,13 @@ namespace SabreTools.Metadata.Test { DictionaryBase self = new Disk { - [Disk.NameKey] = "XXXXXX1", + Name = "XXXXXX1", [Disk.MD5Key] = "XXXXXX", [Disk.SHA1Key] = "XXXXXX", }; DictionaryBase other = new Disk { - [Disk.NameKey] = "XXXXXX2", + Name = "XXXXXX2", [Disk.MD5Key] = "XXXXXX", [Disk.SHA1Key] = "XXXXXX", }; @@ -124,7 +124,7 @@ namespace SabreTools.Metadata.Test { DictionaryBase self = new Media { - [Media.NameKey] = "XXXXXX", + Name = "XXXXXX", [Media.MD5Key] = "XXXXXX", [Media.SHA1Key] = string.Empty, [Media.SHA256Key] = "XXXXXX", @@ -132,7 +132,7 @@ namespace SabreTools.Metadata.Test }; DictionaryBase other = new Media { - [Media.NameKey] = "XXXXXX", + Name = "XXXXXX", [Media.MD5Key] = string.Empty, [Media.SHA1Key] = "XXXXXX", [Media.SHA256Key] = string.Empty, @@ -148,7 +148,7 @@ namespace SabreTools.Metadata.Test { DictionaryBase self = new Media { - [Media.NameKey] = "XXXXXX", + Name = "XXXXXX", [Media.MD5Key] = "XXXXXX", [Media.SHA1Key] = string.Empty, [Media.SHA256Key] = string.Empty, @@ -156,7 +156,7 @@ namespace SabreTools.Metadata.Test }; DictionaryBase other = new Media { - [Media.NameKey] = "XXXXXX", + Name = "XXXXXX", [Media.MD5Key] = "XXXXXX", [Media.SHA1Key] = "XXXXXX", [Media.SHA256Key] = "XXXXXX", @@ -172,7 +172,7 @@ namespace SabreTools.Metadata.Test { DictionaryBase self = new Media { - [Media.NameKey] = "XXXXXX", + Name = "XXXXXX", [Media.MD5Key] = string.Empty, [Media.SHA1Key] = "XXXXXX", [Media.SHA256Key] = string.Empty, @@ -180,7 +180,7 @@ namespace SabreTools.Metadata.Test }; DictionaryBase other = new Media { - [Media.NameKey] = "XXXXXX", + Name = "XXXXXX", [Media.MD5Key] = "XXXXXX", [Media.SHA1Key] = "XXXXXX", [Media.SHA256Key] = "XXXXXX", @@ -196,7 +196,7 @@ namespace SabreTools.Metadata.Test { DictionaryBase self = new Media { - [Media.NameKey] = "XXXXXX", + Name = "XXXXXX", [Media.MD5Key] = string.Empty, [Media.SHA1Key] = string.Empty, [Media.SHA256Key] = "XXXXXX", @@ -204,7 +204,7 @@ namespace SabreTools.Metadata.Test }; DictionaryBase other = new Media { - [Media.NameKey] = "XXXXXX", + Name = "XXXXXX", [Media.MD5Key] = "XXXXXX", [Media.SHA1Key] = "XXXXXX", [Media.SHA256Key] = "XXXXXX", @@ -220,7 +220,7 @@ namespace SabreTools.Metadata.Test { DictionaryBase self = new Media { - [Media.NameKey] = "XXXXXX", + Name = "XXXXXX", [Media.MD5Key] = string.Empty, [Media.SHA1Key] = string.Empty, [Media.SHA256Key] = string.Empty, @@ -228,7 +228,7 @@ namespace SabreTools.Metadata.Test }; DictionaryBase other = new Media { - [Media.NameKey] = "XXXXXX", + Name = "XXXXXX", [Media.MD5Key] = "XXXXXX", [Media.SHA1Key] = "XXXXXX", [Media.SHA256Key] = "XXXXXX", @@ -244,7 +244,7 @@ namespace SabreTools.Metadata.Test { DictionaryBase self = new Media { - [Media.NameKey] = "XXXXXX", + Name = "XXXXXX", [Media.MD5Key] = "XXXXXX", [Media.SHA1Key] = "XXXXXX", [Media.SHA256Key] = "XXXXXX", @@ -252,7 +252,7 @@ namespace SabreTools.Metadata.Test }; DictionaryBase other = new Media { - [Media.NameKey] = "XXXXXX", + Name = "XXXXXX", [Media.MD5Key] = "XXXXXX", [Media.SHA1Key] = "XXXXXX", [Media.SHA256Key] = "XXXXXX", @@ -269,7 +269,7 @@ namespace SabreTools.Metadata.Test DictionaryBase self = new Rom { [Rom.StatusKey] = "nodump", - [Rom.NameKey] = "XXXXXX", + Name = "XXXXXX", [Rom.SizeKey] = 12345, [Rom.CRC16Key] = string.Empty, [Rom.CRCKey] = string.Empty, @@ -288,7 +288,7 @@ namespace SabreTools.Metadata.Test DictionaryBase other = new Rom { [Rom.StatusKey] = "NODUMP", - [Rom.NameKey] = "XXXXXX", + Name = "XXXXXX", [Rom.SizeKey] = 12345, [Rom.CRC16Key] = string.Empty, [Rom.CRCKey] = string.Empty, @@ -314,7 +314,7 @@ namespace SabreTools.Metadata.Test { DictionaryBase self = new Rom { - [Rom.NameKey] = "XXXXXX", + Name = "XXXXXX", [Rom.SizeKey] = 12345, [Rom.CRC16Key] = "XXXXXX", [Rom.CRCKey] = string.Empty, @@ -332,7 +332,7 @@ namespace SabreTools.Metadata.Test }; DictionaryBase other = new Rom { - [Rom.NameKey] = "XXXXXX", + Name = "XXXXXX", [Rom.SizeKey] = 12345, [Rom.CRC16Key] = string.Empty, [Rom.CRCKey] = "XXXXXX", @@ -358,7 +358,7 @@ namespace SabreTools.Metadata.Test { DictionaryBase self = new Rom { - [Rom.NameKey] = "XXXXXX1", + Name = "XXXXXX1", [Rom.CRC16Key] = "XXXXXX", [Rom.CRCKey] = "XXXXXX", [Rom.CRC64Key] = "XXXXXX", @@ -375,7 +375,7 @@ namespace SabreTools.Metadata.Test }; DictionaryBase other = new Rom { - [Rom.NameKey] = "XXXXXX2", + Name = "XXXXXX2", [Rom.SizeKey] = 12345, [Rom.CRC16Key] = "XXXXXX", [Rom.CRCKey] = "XXXXXX", @@ -401,7 +401,7 @@ namespace SabreTools.Metadata.Test { DictionaryBase self = new Rom { - [Rom.NameKey] = "XXXXXX1", + Name = "XXXXXX1", [Rom.SizeKey] = 12345, [Rom.CRC16Key] = "XXXXXX", [Rom.CRCKey] = "XXXXXX", @@ -419,7 +419,7 @@ namespace SabreTools.Metadata.Test }; DictionaryBase other = new Rom { - [Rom.NameKey] = "XXXXXX2", + Name = "XXXXXX2", [Rom.CRC16Key] = "XXXXXX", [Rom.CRCKey] = "XXXXXX", [Rom.CRC64Key] = "XXXXXX", @@ -444,7 +444,7 @@ namespace SabreTools.Metadata.Test { DictionaryBase self = new Rom { - [Rom.NameKey] = "XXXXXX1", + Name = "XXXXXX1", [Rom.SizeKey] = 12345, [Rom.CRC16Key] = "XXXXXX", [Rom.CRCKey] = string.Empty, @@ -462,7 +462,7 @@ namespace SabreTools.Metadata.Test }; DictionaryBase other = new Rom { - [Rom.NameKey] = "XXXXXX2", + Name = "XXXXXX2", [Rom.SizeKey] = 12345, [Rom.CRC16Key] = "XXXXXX", [Rom.CRCKey] = "XXXXXX", @@ -488,7 +488,7 @@ namespace SabreTools.Metadata.Test { DictionaryBase self = new Rom { - [Rom.NameKey] = "XXXXXX1", + Name = "XXXXXX1", [Rom.SizeKey] = 12345, [Rom.CRC16Key] = string.Empty, [Rom.CRCKey] = "XXXXXX", @@ -506,7 +506,7 @@ namespace SabreTools.Metadata.Test }; DictionaryBase other = new Rom { - [Rom.NameKey] = "XXXXXX2", + Name = "XXXXXX2", [Rom.SizeKey] = 12345, [Rom.CRC16Key] = "XXXXXX", [Rom.CRCKey] = "XXXXXX", @@ -532,7 +532,7 @@ namespace SabreTools.Metadata.Test { DictionaryBase self = new Rom { - [Rom.NameKey] = "XXXXXX1", + Name = "XXXXXX1", [Rom.SizeKey] = 12345, [Rom.CRC16Key] = string.Empty, [Rom.CRCKey] = string.Empty, @@ -550,7 +550,7 @@ namespace SabreTools.Metadata.Test }; DictionaryBase other = new Rom { - [Rom.NameKey] = "XXXXXX2", + Name = "XXXXXX2", [Rom.SizeKey] = 12345, [Rom.CRC16Key] = "XXXXXX", [Rom.CRCKey] = "XXXXXX", @@ -576,7 +576,7 @@ namespace SabreTools.Metadata.Test { DictionaryBase self = new Rom { - [Rom.NameKey] = "XXXXXX1", + Name = "XXXXXX1", [Rom.SizeKey] = 12345, [Rom.CRC16Key] = string.Empty, [Rom.CRCKey] = string.Empty, @@ -594,7 +594,7 @@ namespace SabreTools.Metadata.Test }; DictionaryBase other = new Rom { - [Rom.NameKey] = "XXXXXX2", + Name = "XXXXXX2", [Rom.SizeKey] = 12345, [Rom.CRC16Key] = "XXXXXX", [Rom.CRCKey] = "XXXXXX", @@ -620,7 +620,7 @@ namespace SabreTools.Metadata.Test { DictionaryBase self = new Rom { - [Rom.NameKey] = "XXXXXX1", + Name = "XXXXXX1", [Rom.SizeKey] = 12345, [Rom.CRC16Key] = string.Empty, [Rom.CRCKey] = string.Empty, @@ -638,7 +638,7 @@ namespace SabreTools.Metadata.Test }; DictionaryBase other = new Rom { - [Rom.NameKey] = "XXXXXX2", + Name = "XXXXXX2", [Rom.SizeKey] = 12345, [Rom.CRC16Key] = "XXXXXX", [Rom.CRCKey] = "XXXXXX", @@ -664,7 +664,7 @@ namespace SabreTools.Metadata.Test { DictionaryBase self = new Rom { - [Rom.NameKey] = "XXXXXX1", + Name = "XXXXXX1", [Rom.SizeKey] = 12345, [Rom.CRC16Key] = string.Empty, [Rom.CRCKey] = string.Empty, @@ -682,7 +682,7 @@ namespace SabreTools.Metadata.Test }; DictionaryBase other = new Rom { - [Rom.NameKey] = "XXXXXX2", + Name = "XXXXXX2", [Rom.SizeKey] = 12345, [Rom.CRC16Key] = "XXXXXX", [Rom.CRCKey] = "XXXXXX", @@ -708,7 +708,7 @@ namespace SabreTools.Metadata.Test { DictionaryBase self = new Rom { - [Rom.NameKey] = "XXXXXX1", + Name = "XXXXXX1", [Rom.SizeKey] = 12345, [Rom.CRC16Key] = string.Empty, [Rom.CRCKey] = string.Empty, @@ -726,7 +726,7 @@ namespace SabreTools.Metadata.Test }; DictionaryBase other = new Rom { - [Rom.NameKey] = "XXXXXX2", + Name = "XXXXXX2", [Rom.SizeKey] = 12345, [Rom.CRC16Key] = "XXXXXX", [Rom.CRCKey] = "XXXXXX", @@ -752,7 +752,7 @@ namespace SabreTools.Metadata.Test { DictionaryBase self = new Rom { - [Rom.NameKey] = "XXXXXX1", + Name = "XXXXXX1", [Rom.SizeKey] = 12345, [Rom.CRC16Key] = string.Empty, [Rom.CRCKey] = string.Empty, @@ -770,7 +770,7 @@ namespace SabreTools.Metadata.Test }; DictionaryBase other = new Rom { - [Rom.NameKey] = "XXXXXX2", + Name = "XXXXXX2", [Rom.SizeKey] = 12345, [Rom.CRC16Key] = "XXXXXX", [Rom.CRCKey] = "XXXXXX", @@ -796,7 +796,7 @@ namespace SabreTools.Metadata.Test { DictionaryBase self = new Rom { - [Rom.NameKey] = "XXXXXX1", + Name = "XXXXXX1", [Rom.SizeKey] = 12345, [Rom.CRC16Key] = string.Empty, [Rom.CRCKey] = string.Empty, @@ -814,7 +814,7 @@ namespace SabreTools.Metadata.Test }; DictionaryBase other = new Rom { - [Rom.NameKey] = "XXXXXX2", + Name = "XXXXXX2", [Rom.SizeKey] = 12345, [Rom.CRC16Key] = "XXXXXX", [Rom.CRCKey] = "XXXXXX", @@ -840,7 +840,7 @@ namespace SabreTools.Metadata.Test { DictionaryBase self = new Rom { - [Rom.NameKey] = "XXXXXX1", + Name = "XXXXXX1", [Rom.SizeKey] = 12345, [Rom.CRC16Key] = string.Empty, [Rom.CRCKey] = string.Empty, @@ -858,7 +858,7 @@ namespace SabreTools.Metadata.Test }; DictionaryBase other = new Rom { - [Rom.NameKey] = "XXXXXX2", + Name = "XXXXXX2", [Rom.SizeKey] = 12345, [Rom.CRC16Key] = "XXXXXX", [Rom.CRCKey] = "XXXXXX", @@ -884,7 +884,7 @@ namespace SabreTools.Metadata.Test { DictionaryBase self = new Rom { - [Rom.NameKey] = "XXXXXX1", + Name = "XXXXXX1", [Rom.SizeKey] = 12345, [Rom.CRC16Key] = string.Empty, [Rom.CRCKey] = string.Empty, @@ -902,7 +902,7 @@ namespace SabreTools.Metadata.Test }; DictionaryBase other = new Rom { - [Rom.NameKey] = "XXXXXX2", + Name = "XXXXXX2", [Rom.SizeKey] = 12345, [Rom.CRC16Key] = "XXXXXX", [Rom.CRCKey] = "XXXXXX", @@ -928,7 +928,7 @@ namespace SabreTools.Metadata.Test { DictionaryBase self = new Rom { - [Rom.NameKey] = "XXXXXX1", + Name = "XXXXXX1", [Rom.SizeKey] = 12345, [Rom.CRC16Key] = string.Empty, [Rom.CRCKey] = string.Empty, @@ -946,7 +946,7 @@ namespace SabreTools.Metadata.Test }; DictionaryBase other = new Rom { - [Rom.NameKey] = "XXXXXX2", + Name = "XXXXXX2", [Rom.SizeKey] = 12345, [Rom.CRC16Key] = "XXXXXX", [Rom.CRCKey] = "XXXXXX", @@ -972,7 +972,7 @@ namespace SabreTools.Metadata.Test { DictionaryBase self = new Rom { - [Rom.NameKey] = "XXXXXX1", + Name = "XXXXXX1", [Rom.SizeKey] = 12345, [Rom.CRC16Key] = string.Empty, [Rom.CRCKey] = string.Empty, @@ -990,7 +990,7 @@ namespace SabreTools.Metadata.Test }; DictionaryBase other = new Rom { - [Rom.NameKey] = "XXXXXX2", + Name = "XXXXXX2", [Rom.SizeKey] = 12345, [Rom.CRC16Key] = "XXXXXX", [Rom.CRCKey] = "XXXXXX", @@ -1016,7 +1016,7 @@ namespace SabreTools.Metadata.Test { DictionaryBase self = new Rom { - [Rom.NameKey] = "XXXXXX1", + Name = "XXXXXX1", [Rom.SizeKey] = 12345, [Rom.CRC16Key] = "XXXXXX", [Rom.CRCKey] = "XXXXXX", @@ -1034,7 +1034,7 @@ namespace SabreTools.Metadata.Test }; DictionaryBase other = new Rom { - [Rom.NameKey] = "XXXXXX2", + Name = "XXXXXX2", [Rom.SizeKey] = 12345, [Rom.CRC16Key] = "XXXXXX", [Rom.CRCKey] = "XXXXXX", diff --git a/SabreTools.Metadata/DictionaryBaseExtensions.cs b/SabreTools.Metadata/DictionaryBaseExtensions.cs index 0fe77c02..04466666 100644 --- a/SabreTools.Metadata/DictionaryBaseExtensions.cs +++ b/SabreTools.Metadata/DictionaryBaseExtensions.cs @@ -55,6 +55,10 @@ namespace SabreTools.Metadata if (!selfKeys.SetEquals(otherKeys)) return false; + // Check names + if (self.GetName() != other.GetName()) + return false; + // Check all pairs to see if they're equal foreach (var kvp in self) { @@ -175,8 +179,8 @@ namespace SabreTools.Metadata string? selfStatus = self.ReadString(Disk.StatusKey); string? otherStatus = other.ReadString(Disk.StatusKey); - string? selfName = self.ReadString(Disk.NameKey); - string? otherName = other.ReadString(Disk.NameKey); + string? selfName = self.Name; + string? otherName = other.Name; // If all hashes are empty but they're both nodump and the names match, then they're dupes if (string.Equals(selfStatus, "nodump", StringComparison.OrdinalIgnoreCase) @@ -217,8 +221,8 @@ namespace SabreTools.Metadata string? selfStatus = self.ReadString(Rom.StatusKey); string? otherStatus = other.ReadString(Rom.StatusKey); - string? selfName = self.ReadString(Rom.NameKey); - string? otherName = other.ReadString(Rom.NameKey); + string? selfName = self.Name; + string? otherName = other.Name; long? selfSize = self.ReadLong(Rom.SizeKey); long? otherSize = other.ReadLong(Rom.SizeKey); diff --git a/SabreTools.Serialization.CrossModel/ArchiveDotOrg.Deserializer.cs b/SabreTools.Serialization.CrossModel/ArchiveDotOrg.Deserializer.cs index ea09cc81..f194e1f0 100644 --- a/SabreTools.Serialization.CrossModel/ArchiveDotOrg.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/ArchiveDotOrg.Deserializer.cs @@ -44,7 +44,7 @@ namespace SabreTools.Serialization.CrossModel { var file = new File { - Name = item.ReadString(Data.Models.Metadata.Rom.NameKey), + Name = item.Name, Source = item.ReadString(Data.Models.Metadata.Rom.SourceKey), BitTorrentMagnetHash = item.ReadString(Data.Models.Metadata.Rom.BitTorrentMagnetHashKey), LastModifiedTime = item.ReadString(Data.Models.Metadata.Rom.LastModifiedTimeKey), diff --git a/SabreTools.Serialization.CrossModel/ArchiveDotOrg.Serializer.cs b/SabreTools.Serialization.CrossModel/ArchiveDotOrg.Serializer.cs index 815abf05..21fdf3f4 100644 --- a/SabreTools.Serialization.CrossModel/ArchiveDotOrg.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/ArchiveDotOrg.Serializer.cs @@ -32,7 +32,7 @@ namespace SabreTools.Serialization.CrossModel { var header = new Data.Models.Metadata.Header { - [Data.Models.Metadata.Header.NameKey] = "archive.org", + Name = "archive.org", }; return header; } @@ -61,7 +61,7 @@ namespace SabreTools.Serialization.CrossModel var rom = new Data.Models.Metadata.Rom { - [Data.Models.Metadata.Rom.NameKey] = item.Name, + Name = item.Name, [Data.Models.Metadata.Rom.SourceKey] = item.Source, [Data.Models.Metadata.Rom.BitTorrentMagnetHashKey] = item.BitTorrentMagnetHash, [Data.Models.Metadata.Rom.LastModifiedTimeKey] = item.LastModifiedTime, diff --git a/SabreTools.Serialization.CrossModel/AttractMode.Deserializer.cs b/SabreTools.Serialization.CrossModel/AttractMode.Deserializer.cs index 533f8e97..9019ffbf 100644 --- a/SabreTools.Serialization.CrossModel/AttractMode.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/AttractMode.Deserializer.cs @@ -57,8 +57,8 @@ namespace SabreTools.Serialization.CrossModel { var row = new Row { - Name = parent.ReadString(Data.Models.Metadata.Machine.NameKey), - Title = item.ReadString(Data.Models.Metadata.Rom.NameKey), + Name = parent.Name, + Title = item.Name, Emulator = parent.ReadString(Data.Models.Metadata.Machine.EmulatorKey), CloneOf = parent.ReadString(Data.Models.Metadata.Machine.CloneOfKey), Year = parent.ReadString(Data.Models.Metadata.Machine.YearKey), diff --git a/SabreTools.Serialization.CrossModel/AttractMode.Serializer.cs b/SabreTools.Serialization.CrossModel/AttractMode.Serializer.cs index 3f8188d2..1ae5ab1e 100644 --- a/SabreTools.Serialization.CrossModel/AttractMode.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/AttractMode.Serializer.cs @@ -47,7 +47,7 @@ namespace SabreTools.Serialization.CrossModel var machine = new Data.Models.Metadata.Machine { - [Data.Models.Metadata.Machine.NameKey] = item.Name, + Name = item.Name, [Data.Models.Metadata.Machine.EmulatorKey] = item.Emulator, [Data.Models.Metadata.Machine.CloneOfKey] = item.CloneOf, [Data.Models.Metadata.Machine.YearKey] = item.Year, @@ -77,7 +77,7 @@ namespace SabreTools.Serialization.CrossModel { var rom = new Data.Models.Metadata.Rom { - [Data.Models.Metadata.Rom.NameKey] = item.Title, + Name = item.Title, [Data.Models.Metadata.Rom.AltRomnameKey] = item.AltRomname, [Data.Models.Metadata.Rom.AltTitleKey] = item.AltTitle, [Data.Models.Metadata.Rom.FileIsAvailableKey] = item.FileIsAvailable, diff --git a/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs b/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs index 362085a1..cb198879 100644 --- a/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs @@ -43,7 +43,7 @@ namespace SabreTools.Serialization.CrossModel { var clrMamePro = new Data.Models.ClrMamePro.ClrMamePro { - Name = item.ReadString(Data.Models.Metadata.Header.NameKey), + Name = item.Name, Description = item.ReadString(Data.Models.Metadata.Header.DescriptionKey), RootDir = item.ReadString(Data.Models.Metadata.Header.RootDirKey), Category = item.ReadString(Data.Models.Metadata.Header.CategoryKey), @@ -69,7 +69,7 @@ namespace SabreTools.Serialization.CrossModel { GameBase gameBase = game ? new Game() : new Machine(); - gameBase.Name = item.ReadString(Data.Models.Metadata.Machine.NameKey); + gameBase.Name = item.Name; gameBase.Description = item.ReadString(Data.Models.Metadata.Machine.DescriptionKey); // gameBase.DriverStatus = item.ReadString(Data.Models.Metadata.Machine.DriverKey); // TODO: Needs metadata mapping gameBase.Year = item.ReadString(Data.Models.Metadata.Machine.YearKey); @@ -141,7 +141,7 @@ namespace SabreTools.Serialization.CrossModel { var archive = new Archive { - Name = item.ReadString(Data.Models.Metadata.Archive.NameKey), + Name = item.Name, }; return archive; } @@ -153,7 +153,7 @@ namespace SabreTools.Serialization.CrossModel { var biosset = new BiosSet { - Name = item.ReadString(Data.Models.Metadata.BiosSet.NameKey), + Name = item.Name, Description = item.ReadString(Data.Models.Metadata.BiosSet.DescriptionKey), Default = item.ReadString(Data.Models.Metadata.BiosSet.DefaultKey), }; @@ -168,7 +168,7 @@ namespace SabreTools.Serialization.CrossModel var chip = new Chip { Type = item.ReadString(Data.Models.Metadata.Chip.ChipTypeKey), - Name = item.ReadString(Data.Models.Metadata.Chip.NameKey), + Name = item.Name, Flags = item.ReadString(Data.Models.Metadata.Chip.FlagsKey), Clock = item.ReadString(Data.Models.Metadata.Chip.ClockKey), }; @@ -182,7 +182,7 @@ namespace SabreTools.Serialization.CrossModel { var dipswitch = new DipSwitch { - Name = item.ReadString(Data.Models.Metadata.DipSwitch.NameKey), + Name = item.Name, Entry = item[Data.Models.Metadata.DipSwitch.EntryKey] as string[], Default = item.ReadString(Data.Models.Metadata.DipSwitch.DefaultKey), }; @@ -196,7 +196,7 @@ namespace SabreTools.Serialization.CrossModel { var disk = new Disk { - Name = item.ReadString(Data.Models.Metadata.Disk.NameKey), + Name = item.Name, MD5 = item.ReadString(Data.Models.Metadata.Disk.MD5Key), SHA1 = item.ReadString(Data.Models.Metadata.Disk.SHA1Key), Merge = item.ReadString(Data.Models.Metadata.Disk.MergeKey), @@ -246,7 +246,7 @@ namespace SabreTools.Serialization.CrossModel { var media = new Media { - Name = item.ReadString(Data.Models.Metadata.Media.NameKey), + Name = item.Name, MD5 = item.ReadString(Data.Models.Metadata.Media.MD5Key), SHA1 = item.ReadString(Data.Models.Metadata.Media.SHA1Key), SHA256 = item.ReadString(Data.Models.Metadata.Media.SHA256Key), @@ -262,7 +262,7 @@ namespace SabreTools.Serialization.CrossModel { var release = new Release { - Name = item.ReadString(Data.Models.Metadata.Release.NameKey), + Name = item.Name, Region = item.ReadString(Data.Models.Metadata.Release.RegionKey), Language = item.ReadString(Data.Models.Metadata.Release.LanguageKey), Date = item.ReadString(Data.Models.Metadata.Release.DateKey), @@ -278,7 +278,7 @@ namespace SabreTools.Serialization.CrossModel { var rom = new Rom { - Name = item.ReadString(Data.Models.Metadata.Rom.NameKey), + Name = item.Name, Size = item.ReadString(Data.Models.Metadata.Rom.SizeKey), CRC16 = item.ReadString(Data.Models.Metadata.Rom.CRC16Key), CRC = item.ReadString(Data.Models.Metadata.Rom.CRCKey), @@ -316,7 +316,7 @@ namespace SabreTools.Serialization.CrossModel { var sample = new Sample { - Name = item.ReadString(Data.Models.Metadata.Sample.NameKey), + Name = item.Name, }; return sample; } diff --git a/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs b/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs index ec3f209c..0c2f1399 100644 --- a/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs @@ -35,7 +35,7 @@ namespace SabreTools.Serialization.CrossModel { var header = new Data.Models.Metadata.Header { - [Data.Models.Metadata.Header.NameKey] = item.Name, + Name = item.Name, [Data.Models.Metadata.Header.DescriptionKey] = item.Description, [Data.Models.Metadata.Header.RootDirKey] = item.RootDir, [Data.Models.Metadata.Header.CategoryKey] = item.Category, @@ -64,7 +64,7 @@ namespace SabreTools.Serialization.CrossModel var machine = new Data.Models.Metadata.Machine { - [Data.Models.Metadata.Machine.NameKey] = item.Name, + Name = item.Name, [Data.Models.Metadata.Machine.DescriptionKey] = item.Description, // [Data.Models.Metadata.Machine.DriverKey] = item.DriverStatus, // TODO: Needs metadata mapping [Data.Models.Metadata.Machine.YearKey] = item.Year, @@ -154,7 +154,7 @@ namespace SabreTools.Serialization.CrossModel { var archive = new Data.Models.Metadata.Archive { - [Data.Models.Metadata.Archive.NameKey] = item.Name, + Name = item.Name, }; return archive; } @@ -166,7 +166,7 @@ namespace SabreTools.Serialization.CrossModel { var biosset = new Data.Models.Metadata.BiosSet { - [Data.Models.Metadata.BiosSet.NameKey] = item.Name, + Name = item.Name, [Data.Models.Metadata.BiosSet.DescriptionKey] = item.Description, [Data.Models.Metadata.BiosSet.DefaultKey] = item.Default, }; @@ -181,7 +181,7 @@ namespace SabreTools.Serialization.CrossModel var chip = new Data.Models.Metadata.Chip { [Data.Models.Metadata.Chip.ChipTypeKey] = item.Type, - [Data.Models.Metadata.Chip.NameKey] = item.Name, + Name = item.Name, [Data.Models.Metadata.Chip.FlagsKey] = item.Flags, [Data.Models.Metadata.Chip.ClockKey] = item.Clock, }; @@ -195,7 +195,7 @@ namespace SabreTools.Serialization.CrossModel { var dipswitch = new Data.Models.Metadata.DipSwitch { - [Data.Models.Metadata.DipSwitch.NameKey] = item.Name, + Name = item.Name, [Data.Models.Metadata.DipSwitch.EntryKey] = item.Entry, [Data.Models.Metadata.DipSwitch.DefaultKey] = item.Default, }; @@ -209,7 +209,7 @@ namespace SabreTools.Serialization.CrossModel { var disk = new Data.Models.Metadata.Disk { - [Data.Models.Metadata.Disk.NameKey] = item.Name, + Name = item.Name, [Data.Models.Metadata.Disk.MD5Key] = item.MD5, [Data.Models.Metadata.Disk.SHA1Key] = item.SHA1, [Data.Models.Metadata.Disk.MergeKey] = item.Merge, @@ -259,7 +259,7 @@ namespace SabreTools.Serialization.CrossModel { var media = new Data.Models.Metadata.Media { - [Data.Models.Metadata.Media.NameKey] = item.Name, + Name = item.Name, [Data.Models.Metadata.Media.MD5Key] = item.MD5, [Data.Models.Metadata.Media.SHA1Key] = item.SHA1, [Data.Models.Metadata.Media.SHA256Key] = item.SHA256, @@ -275,7 +275,7 @@ namespace SabreTools.Serialization.CrossModel { var release = new Data.Models.Metadata.Release { - [Data.Models.Metadata.Release.NameKey] = item.Name, + Name = item.Name, [Data.Models.Metadata.Release.RegionKey] = item.Region, [Data.Models.Metadata.Release.LanguageKey] = item.Language, [Data.Models.Metadata.Release.DateKey] = item.Date, @@ -291,7 +291,7 @@ namespace SabreTools.Serialization.CrossModel { var rom = new Data.Models.Metadata.Rom { - [Data.Models.Metadata.Rom.NameKey] = item.Name, + Name = item.Name, [Data.Models.Metadata.Rom.SizeKey] = item.Size, [Data.Models.Metadata.Rom.CRC16Key] = item.CRC16, [Data.Models.Metadata.Rom.CRCKey] = item.CRC, @@ -329,7 +329,7 @@ namespace SabreTools.Serialization.CrossModel { var sample = new Data.Models.Metadata.Sample { - [Data.Models.Metadata.Sample.NameKey] = item.Name, + Name = item.Name, }; return sample; } diff --git a/SabreTools.Serialization.CrossModel/DosCenter.Deserializer.cs b/SabreTools.Serialization.CrossModel/DosCenter.Deserializer.cs index a73db67f..8e3f3259 100644 --- a/SabreTools.Serialization.CrossModel/DosCenter.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/DosCenter.Deserializer.cs @@ -31,7 +31,7 @@ namespace SabreTools.Serialization.CrossModel { var dosCenter = new Data.Models.DosCenter.DosCenter { - Name = item.ReadString(Data.Models.Metadata.Header.NameKey), + Name = item.Name, Description = item.ReadString(Data.Models.Metadata.Header.DescriptionKey), Version = item.ReadString(Data.Models.Metadata.Header.VersionKey), Date = item.ReadString(Data.Models.Metadata.Header.DateKey), @@ -49,7 +49,7 @@ namespace SabreTools.Serialization.CrossModel { var game = new Game { - Name = item.ReadString(Data.Models.Metadata.Machine.NameKey), + Name = item.Name, }; var roms = item.Read(Data.Models.Metadata.Machine.RomKey); @@ -66,7 +66,7 @@ namespace SabreTools.Serialization.CrossModel { var file = new File { - Name = item.ReadString(Data.Models.Metadata.Rom.NameKey), + Name = item.Name, Size = item.ReadString(Data.Models.Metadata.Rom.SizeKey), CRC = item.ReadString(Data.Models.Metadata.Rom.CRCKey), SHA1 = item.ReadString(Data.Models.Metadata.Rom.SHA1Key), diff --git a/SabreTools.Serialization.CrossModel/DosCenter.Serializer.cs b/SabreTools.Serialization.CrossModel/DosCenter.Serializer.cs index c800e016..1342d1ec 100644 --- a/SabreTools.Serialization.CrossModel/DosCenter.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/DosCenter.Serializer.cs @@ -32,7 +32,7 @@ namespace SabreTools.Serialization.CrossModel { var header = new Data.Models.Metadata.Header { - [Data.Models.Metadata.Header.NameKey] = item.Name, + Name = item.Name, [Data.Models.Metadata.Header.DescriptionKey] = item.Description, [Data.Models.Metadata.Header.VersionKey] = item.Version, [Data.Models.Metadata.Header.DateKey] = item.Date, @@ -50,7 +50,7 @@ namespace SabreTools.Serialization.CrossModel { var machine = new Data.Models.Metadata.Machine { - [Data.Models.Metadata.Machine.NameKey] = item.Name, + Name = item.Name, }; if (item.File is not null && item.File.Length > 0) @@ -69,7 +69,7 @@ namespace SabreTools.Serialization.CrossModel { var rom = new Data.Models.Metadata.Rom { - [Data.Models.Metadata.Rom.NameKey] = item.Name, + Name = item.Name, [Data.Models.Metadata.Rom.SizeKey] = item.Size, [Data.Models.Metadata.Rom.CRCKey] = item.CRC, [Data.Models.Metadata.Rom.SHA1Key] = item.SHA1, diff --git a/SabreTools.Serialization.CrossModel/EverdriveSMDB.Deserializer.cs b/SabreTools.Serialization.CrossModel/EverdriveSMDB.Deserializer.cs index 44e097f9..bbb8bf43 100644 --- a/SabreTools.Serialization.CrossModel/EverdriveSMDB.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/EverdriveSMDB.Deserializer.cs @@ -46,7 +46,7 @@ namespace SabreTools.Serialization.CrossModel var row = new Row { SHA256 = item.ReadString(Data.Models.Metadata.Rom.SHA256Key), - Name = item.ReadString(Data.Models.Metadata.Rom.NameKey), + Name = item.Name, SHA1 = item.ReadString(Data.Models.Metadata.Rom.SHA1Key), MD5 = item.ReadString(Data.Models.Metadata.Rom.MD5Key), CRC32 = item.ReadString(Data.Models.Metadata.Rom.CRCKey), diff --git a/SabreTools.Serialization.CrossModel/EverdriveSMDB.Serializer.cs b/SabreTools.Serialization.CrossModel/EverdriveSMDB.Serializer.cs index dccf6ccd..89b6f060 100644 --- a/SabreTools.Serialization.CrossModel/EverdriveSMDB.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/EverdriveSMDB.Serializer.cs @@ -32,7 +32,7 @@ namespace SabreTools.Serialization.CrossModel { var header = new Data.Models.Metadata.Header { - [Data.Models.Metadata.Header.NameKey] = "Everdrive SMDB", + Name = "Everdrive SMDB", }; return header; } @@ -57,7 +57,7 @@ namespace SabreTools.Serialization.CrossModel var rom = new Data.Models.Metadata.Rom { [Data.Models.Metadata.Rom.SHA256Key] = item.SHA256, - [Data.Models.Metadata.Rom.NameKey] = item.Name, + Name = item.Name, [Data.Models.Metadata.Rom.SHA1Key] = item.SHA1, [Data.Models.Metadata.Rom.MD5Key] = item.MD5, [Data.Models.Metadata.Rom.CRCKey] = item.CRC32, diff --git a/SabreTools.Serialization.CrossModel/Hashfile.Deserializer.cs b/SabreTools.Serialization.CrossModel/Hashfile.Deserializer.cs index 07f63d7c..708360e6 100644 --- a/SabreTools.Serialization.CrossModel/Hashfile.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Hashfile.Deserializer.cs @@ -146,7 +146,7 @@ namespace SabreTools.Serialization.CrossModel var md2 = new MD2 { Hash = item.ReadString(Data.Models.Metadata.Rom.MD2Key), - File = item.ReadString(Data.Models.Metadata.Rom.NameKey), + File = item.Name, }; return md2; } @@ -159,7 +159,7 @@ namespace SabreTools.Serialization.CrossModel var md4 = new MD4 { Hash = item.ReadString(Data.Models.Metadata.Rom.MD4Key), - File = item.ReadString(Data.Models.Metadata.Rom.NameKey), + File = item.Name, }; return md4; } @@ -172,7 +172,7 @@ namespace SabreTools.Serialization.CrossModel var md5 = new MD5 { Hash = item.ReadString(Data.Models.Metadata.Rom.MD5Key), - File = item.ReadString(Data.Models.Metadata.Rom.NameKey), + File = item.Name, }; return md5; } @@ -185,7 +185,7 @@ namespace SabreTools.Serialization.CrossModel var ripemd128 = new RIPEMD128 { Hash = item.ReadString(Data.Models.Metadata.Rom.RIPEMD128Key), - File = item.ReadString(Data.Models.Metadata.Rom.NameKey), + File = item.Name, }; return ripemd128; } @@ -198,7 +198,7 @@ namespace SabreTools.Serialization.CrossModel var ripemd160 = new RIPEMD160 { Hash = item.ReadString(Data.Models.Metadata.Rom.RIPEMD160Key), - File = item.ReadString(Data.Models.Metadata.Rom.NameKey), + File = item.Name, }; return ripemd160; } @@ -210,7 +210,7 @@ namespace SabreTools.Serialization.CrossModel { var sfv = new SFV { - File = item.ReadString(Data.Models.Metadata.Rom.NameKey), + File = item.Name, Hash = item.ReadString(Data.Models.Metadata.Rom.CRCKey), }; return sfv; @@ -224,7 +224,7 @@ namespace SabreTools.Serialization.CrossModel var sha1 = new SHA1 { Hash = item.ReadString(Data.Models.Metadata.Rom.SHA1Key), - File = item.ReadString(Data.Models.Metadata.Rom.NameKey), + File = item.Name, }; return sha1; } @@ -237,7 +237,7 @@ namespace SabreTools.Serialization.CrossModel var sha256 = new SHA256 { Hash = item.ReadString(Data.Models.Metadata.Rom.SHA256Key), - File = item.ReadString(Data.Models.Metadata.Rom.NameKey), + File = item.Name, }; return sha256; } @@ -250,7 +250,7 @@ namespace SabreTools.Serialization.CrossModel var sha384 = new SHA384 { Hash = item.ReadString(Data.Models.Metadata.Rom.SHA384Key), - File = item.ReadString(Data.Models.Metadata.Rom.NameKey), + File = item.Name, }; return sha384; } @@ -263,7 +263,7 @@ namespace SabreTools.Serialization.CrossModel var sha512 = new SHA512 { Hash = item.ReadString(Data.Models.Metadata.Rom.SHA512Key), - File = item.ReadString(Data.Models.Metadata.Rom.NameKey), + File = item.Name, }; return sha512; } @@ -276,7 +276,7 @@ namespace SabreTools.Serialization.CrossModel var spamsum = new SpamSum { Hash = item.ReadString(Data.Models.Metadata.Rom.SpamSumKey), - File = item.ReadString(Data.Models.Metadata.Rom.NameKey), + File = item.Name, }; return spamsum; } diff --git a/SabreTools.Serialization.CrossModel/Hashfile.Serializer.cs b/SabreTools.Serialization.CrossModel/Hashfile.Serializer.cs index 4d79740a..49b86282 100644 --- a/SabreTools.Serialization.CrossModel/Hashfile.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Hashfile.Serializer.cs @@ -29,7 +29,7 @@ namespace SabreTools.Serialization.CrossModel { var header = new Data.Models.Metadata.Header { - [Data.Models.Metadata.Header.NameKey] = "Hashfile", + Name = "Hashfile", }; return header; } @@ -75,7 +75,7 @@ namespace SabreTools.Serialization.CrossModel var rom = new Data.Models.Metadata.Rom { [Data.Models.Metadata.Rom.MD2Key] = item.Hash, - [Data.Models.Metadata.Rom.NameKey] = item.File, + Name = item.File, }; return rom; } @@ -88,7 +88,7 @@ namespace SabreTools.Serialization.CrossModel var rom = new Data.Models.Metadata.Rom { [Data.Models.Metadata.Rom.MD4Key] = item.Hash, - [Data.Models.Metadata.Rom.NameKey] = item.File, + Name = item.File, }; return rom; } @@ -101,7 +101,7 @@ namespace SabreTools.Serialization.CrossModel var rom = new Data.Models.Metadata.Rom { [Data.Models.Metadata.Rom.MD5Key] = item.Hash, - [Data.Models.Metadata.Rom.NameKey] = item.File, + Name = item.File, }; return rom; } @@ -114,7 +114,7 @@ namespace SabreTools.Serialization.CrossModel var rom = new Data.Models.Metadata.Rom { [Data.Models.Metadata.Rom.RIPEMD128Key] = item.Hash, - [Data.Models.Metadata.Rom.NameKey] = item.File, + Name = item.File, }; return rom; } @@ -127,7 +127,7 @@ namespace SabreTools.Serialization.CrossModel var rom = new Data.Models.Metadata.Rom { [Data.Models.Metadata.Rom.RIPEMD160Key] = item.Hash, - [Data.Models.Metadata.Rom.NameKey] = item.File, + Name = item.File, }; return rom; } @@ -139,7 +139,7 @@ namespace SabreTools.Serialization.CrossModel { var rom = new Data.Models.Metadata.Rom { - [Data.Models.Metadata.Rom.NameKey] = item.File, + Name = item.File, [Data.Models.Metadata.Rom.CRCKey] = item.Hash, }; return rom; @@ -153,7 +153,7 @@ namespace SabreTools.Serialization.CrossModel var rom = new Data.Models.Metadata.Rom { [Data.Models.Metadata.Rom.SHA1Key] = item.Hash, - [Data.Models.Metadata.Rom.NameKey] = item.File, + Name = item.File, }; return rom; } @@ -166,7 +166,7 @@ namespace SabreTools.Serialization.CrossModel var rom = new Data.Models.Metadata.Rom { [Data.Models.Metadata.Rom.SHA256Key] = item.Hash, - [Data.Models.Metadata.Rom.NameKey] = item.File, + Name = item.File, }; return rom; } @@ -179,7 +179,7 @@ namespace SabreTools.Serialization.CrossModel var rom = new Data.Models.Metadata.Rom { [Data.Models.Metadata.Rom.SHA384Key] = item.Hash, - [Data.Models.Metadata.Rom.NameKey] = item.File, + Name = item.File, }; return rom; } @@ -192,7 +192,7 @@ namespace SabreTools.Serialization.CrossModel var rom = new Data.Models.Metadata.Rom { [Data.Models.Metadata.Rom.SHA512Key] = item.Hash, - [Data.Models.Metadata.Rom.NameKey] = item.File, + Name = item.File, }; return rom; } @@ -205,7 +205,7 @@ namespace SabreTools.Serialization.CrossModel var rom = new Data.Models.Metadata.Rom { [Data.Models.Metadata.Rom.SpamSumKey] = item.Hash, - [Data.Models.Metadata.Rom.NameKey] = item.File, + Name = item.File, }; return rom; } diff --git a/SabreTools.Serialization.CrossModel/Listrom.Deserializer.cs b/SabreTools.Serialization.CrossModel/Listrom.Deserializer.cs index 0e0bb551..ac5806ef 100644 --- a/SabreTools.Serialization.CrossModel/Listrom.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Listrom.Deserializer.cs @@ -28,9 +28,9 @@ namespace SabreTools.Serialization.CrossModel { var set = new Set(); if (item.ReadString(Data.Models.Metadata.Machine.IsDeviceKey) == "yes") - set.Device = item.ReadString(Data.Models.Metadata.Machine.NameKey); + set.Device = item.Name; else - set.Driver = item.ReadString(Data.Models.Metadata.Machine.NameKey); + set.Driver = item.Name; var rowItems = new List(); @@ -55,7 +55,7 @@ namespace SabreTools.Serialization.CrossModel { var row = new Row { - Name = item.ReadString(Data.Models.Metadata.Disk.NameKey), + Name = item.Name, MD5 = item.ReadString(Data.Models.Metadata.Disk.MD5Key), SHA1 = item.ReadString(Data.Models.Metadata.Disk.SHA1Key), }; @@ -75,7 +75,7 @@ namespace SabreTools.Serialization.CrossModel { var row = new Row { - Name = item.ReadString(Data.Models.Metadata.Rom.NameKey), + Name = item.Name, Size = item.ReadString(Data.Models.Metadata.Rom.SizeKey), CRC = item.ReadString(Data.Models.Metadata.Rom.CRCKey), SHA1 = item.ReadString(Data.Models.Metadata.Rom.SHA1Key), diff --git a/SabreTools.Serialization.CrossModel/Listrom.Serializer.cs b/SabreTools.Serialization.CrossModel/Listrom.Serializer.cs index c049bad1..86844857 100644 --- a/SabreTools.Serialization.CrossModel/Listrom.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Listrom.Serializer.cs @@ -33,7 +33,7 @@ namespace SabreTools.Serialization.CrossModel { var header = new Data.Models.Metadata.Header { - [Data.Models.Metadata.Header.NameKey] = "MAME Listrom", + Name = "MAME Listrom", }; return header; } @@ -46,12 +46,12 @@ namespace SabreTools.Serialization.CrossModel var machine = new Data.Models.Metadata.Machine(); if (!string.IsNullOrEmpty(item.Device)) { - machine[Data.Models.Metadata.Machine.NameKey] = item.Device; + machine.Name = item.Device; machine[Data.Models.Metadata.Machine.IsDeviceKey] = "yes"; } else { - machine[Data.Models.Metadata.Machine.NameKey] = item.Driver; + machine.Name = item.Driver; } if (item.Row is not null && item.Row.Length > 0) @@ -83,7 +83,7 @@ namespace SabreTools.Serialization.CrossModel { var disk = new Data.Models.Metadata.Disk { - [Data.Models.Metadata.Disk.NameKey] = item.Name, + Name = item.Name, [Data.Models.Metadata.Disk.MD5Key] = item.MD5, [Data.Models.Metadata.Disk.SHA1Key] = item.SHA1, }; @@ -99,7 +99,7 @@ namespace SabreTools.Serialization.CrossModel { var rom = new Data.Models.Metadata.Rom { - [Data.Models.Metadata.Rom.NameKey] = item.Name, + Name = item.Name, [Data.Models.Metadata.Rom.SizeKey] = item.Size, [Data.Models.Metadata.Rom.CRCKey] = item.CRC, [Data.Models.Metadata.Rom.SHA1Key] = item.SHA1, diff --git a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs index af9978f6..3064aaa2 100644 --- a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs @@ -43,7 +43,7 @@ namespace SabreTools.Serialization.CrossModel { var machine = new Machine { - Name = item.ReadString(Data.Models.Metadata.Machine.NameKey), + Name = item.Name, SourceFile = item.ReadString(Data.Models.Metadata.Machine.SourceFileKey), IsBios = item.ReadString(Data.Models.Metadata.Machine.IsBiosKey), IsDevice = item.ReadString(Data.Models.Metadata.Machine.IsDeviceKey), @@ -148,7 +148,7 @@ namespace SabreTools.Serialization.CrossModel { var adjuster = new Adjuster { - Name = item.ReadString(Data.Models.Metadata.Adjuster.NameKey), + Name = item.Name, Default = item.ReadString(Data.Models.Metadata.Adjuster.DefaultKey), }; @@ -178,7 +178,7 @@ namespace SabreTools.Serialization.CrossModel { var biosset = new BiosSet { - Name = item.ReadString(Data.Models.Metadata.BiosSet.NameKey), + Name = item.Name, Description = item.ReadString(Data.Models.Metadata.BiosSet.DescriptionKey), Default = item.ReadString(Data.Models.Metadata.BiosSet.DefaultKey), }; @@ -192,7 +192,7 @@ namespace SabreTools.Serialization.CrossModel { var chip = new Chip { - Name = item.ReadString(Data.Models.Metadata.Chip.NameKey), + Name = item.Name, Tag = item.ReadString(Data.Models.Metadata.Chip.TagKey), Type = item.ReadString(Data.Models.Metadata.Chip.ChipTypeKey), SoundOnly = item.ReadString(Data.Models.Metadata.Chip.SoundOnlyKey), @@ -223,7 +223,7 @@ namespace SabreTools.Serialization.CrossModel { var configuration = new Configuration { - Name = item.ReadString(Data.Models.Metadata.Configuration.NameKey), + Name = item.Name, Tag = item.ReadString(Data.Models.Metadata.Configuration.TagKey), Mask = item.ReadString(Data.Models.Metadata.Configuration.MaskKey), }; @@ -250,7 +250,7 @@ namespace SabreTools.Serialization.CrossModel { var confLocation = new ConfLocation { - Name = item.ReadString(Data.Models.Metadata.ConfLocation.NameKey), + Name = item.Name, Number = item.ReadString(Data.Models.Metadata.ConfLocation.NumberKey), Inverted = item.ReadString(Data.Models.Metadata.ConfLocation.InvertedKey), }; @@ -264,7 +264,7 @@ namespace SabreTools.Serialization.CrossModel { var confSetting = new ConfSetting { - Name = item.ReadString(Data.Models.Metadata.ConfSetting.NameKey), + Name = item.Name, Value = item.ReadString(Data.Models.Metadata.ConfSetting.ValueKey), Default = item.ReadString(Data.Models.Metadata.ConfSetting.DefaultKey), }; @@ -331,7 +331,7 @@ namespace SabreTools.Serialization.CrossModel { var deviceRef = new DeviceRef { - Name = item.ReadString(Data.Models.Metadata.DeviceRef.NameKey), + Name = item.Name, }; return deviceRef; } @@ -343,7 +343,7 @@ namespace SabreTools.Serialization.CrossModel { var dipLocation = new DipLocation { - Name = item.ReadString(Data.Models.Metadata.DipLocation.NameKey), + Name = item.Name, Number = item.ReadString(Data.Models.Metadata.DipLocation.NumberKey), Inverted = item.ReadString(Data.Models.Metadata.DipLocation.InvertedKey), }; @@ -357,7 +357,7 @@ namespace SabreTools.Serialization.CrossModel { var dipSwitch = new DipSwitch { - Name = item.ReadString(Data.Models.Metadata.DipSwitch.NameKey), + Name = item.Name, Tag = item.ReadString(Data.Models.Metadata.DipSwitch.TagKey), Mask = item.ReadString(Data.Models.Metadata.DipSwitch.MaskKey), }; @@ -384,7 +384,7 @@ namespace SabreTools.Serialization.CrossModel { var dipValue = new DipValue { - Name = item.ReadString(Data.Models.Metadata.DipValue.NameKey), + Name = item.Name, Value = item.ReadString(Data.Models.Metadata.DipValue.ValueKey), Default = item.ReadString(Data.Models.Metadata.DipValue.DefaultKey), }; @@ -403,7 +403,7 @@ namespace SabreTools.Serialization.CrossModel { var disk = new Disk { - Name = item.ReadString(Data.Models.Metadata.Disk.NameKey), + Name = item.Name, MD5 = item.ReadString(Data.Models.Metadata.Disk.MD5Key), SHA1 = item.ReadString(Data.Models.Metadata.Disk.SHA1Key), Merge = item.ReadString(Data.Models.Metadata.Disk.MergeKey), @@ -470,7 +470,7 @@ namespace SabreTools.Serialization.CrossModel { var extension = new Extension { - Name = item.ReadString(Data.Models.Metadata.Extension.NameKey), + Name = item.Name, }; return extension; } @@ -521,7 +521,7 @@ namespace SabreTools.Serialization.CrossModel { var instance = new Instance { - Name = item.ReadString(Data.Models.Metadata.Instance.NameKey), + Name = item.Name, BriefName = item.ReadString(Data.Models.Metadata.Instance.BriefNameKey), }; return instance; @@ -551,7 +551,7 @@ namespace SabreTools.Serialization.CrossModel { var ramOption = new RamOption { - Name = item.ReadString(Data.Models.Metadata.RamOption.NameKey), + Name = item.Name, Default = item.ReadString(Data.Models.Metadata.RamOption.DefaultKey), Content = item.ReadString(Data.Models.Metadata.RamOption.ContentKey), }; @@ -565,7 +565,7 @@ namespace SabreTools.Serialization.CrossModel { var rom = new Rom { - Name = item.ReadString(Data.Models.Metadata.Rom.NameKey), + Name = item.Name, Bios = item.ReadString(Data.Models.Metadata.Rom.BiosKey), Size = item.ReadString(Data.Models.Metadata.Rom.SizeKey), CRC = item.ReadString(Data.Models.Metadata.Rom.CRCKey), @@ -588,7 +588,7 @@ namespace SabreTools.Serialization.CrossModel { var sample = new Sample { - Name = item.ReadString(Data.Models.Metadata.Sample.NameKey), + Name = item.Name, }; return sample; } @@ -600,7 +600,7 @@ namespace SabreTools.Serialization.CrossModel { var slot = new Slot { - Name = item.ReadString(Data.Models.Metadata.Slot.NameKey), + Name = item.Name, }; var slotOptions = item.Read(Data.Models.Metadata.Slot.SlotOptionKey); @@ -617,7 +617,7 @@ namespace SabreTools.Serialization.CrossModel { var slotOption = new SlotOption { - Name = item.ReadString(Data.Models.Metadata.SlotOption.NameKey), + Name = item.Name, DevName = item.ReadString(Data.Models.Metadata.SlotOption.DevNameKey), Default = item.ReadString(Data.Models.Metadata.SlotOption.DefaultKey), }; @@ -632,7 +632,7 @@ namespace SabreTools.Serialization.CrossModel var softwareList = new Data.Models.Listxml.SoftwareList { Tag = item.ReadString(Data.Models.Metadata.SoftwareList.TagKey), - Name = item.ReadString(Data.Models.Metadata.SoftwareList.NameKey), + Name = item.Name, Status = item.ReadString(Data.Models.Metadata.SoftwareList.StatusKey), Filter = item.ReadString(Data.Models.Metadata.SoftwareList.FilterKey), }; diff --git a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs index d4173c4f..2769f63c 100644 --- a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs @@ -46,7 +46,7 @@ namespace SabreTools.Serialization.CrossModel { var machine = new Data.Models.Metadata.Machine { - [Data.Models.Metadata.Machine.NameKey] = item.Name, + Name = item.Name, [Data.Models.Metadata.Machine.SourceFileKey] = item.SourceFile, [Data.Models.Metadata.Machine.IsBiosKey] = item.IsBios, [Data.Models.Metadata.Machine.IsDeviceKey] = item.IsDevice, @@ -182,7 +182,7 @@ namespace SabreTools.Serialization.CrossModel { var adjuster = new Data.Models.Metadata.Adjuster { - [Data.Models.Metadata.Adjuster.NameKey] = item.Name, + Name = item.Name, [Data.Models.Metadata.Adjuster.DefaultKey] = item.Default, }; @@ -211,7 +211,7 @@ namespace SabreTools.Serialization.CrossModel { var biosset = new Data.Models.Metadata.BiosSet { - [Data.Models.Metadata.BiosSet.NameKey] = item.Name, + Name = item.Name, [Data.Models.Metadata.BiosSet.DescriptionKey] = item.Description, [Data.Models.Metadata.BiosSet.DefaultKey] = item.Default, }; @@ -225,7 +225,7 @@ namespace SabreTools.Serialization.CrossModel { var chip = new Data.Models.Metadata.Chip { - [Data.Models.Metadata.Chip.NameKey] = item.Name, + Name = item.Name, [Data.Models.Metadata.Chip.TagKey] = item.Tag, [Data.Models.Metadata.Chip.ChipTypeKey] = item.Type, [Data.Models.Metadata.Chip.SoundOnlyKey] = item.SoundOnly, @@ -256,7 +256,7 @@ namespace SabreTools.Serialization.CrossModel { var configuration = new Data.Models.Metadata.Configuration { - [Data.Models.Metadata.Configuration.NameKey] = item.Name, + Name = item.Name, [Data.Models.Metadata.Configuration.TagKey] = item.Tag, [Data.Models.Metadata.Configuration.MaskKey] = item.Mask, }; @@ -286,7 +286,7 @@ namespace SabreTools.Serialization.CrossModel { var confLocation = new Data.Models.Metadata.ConfLocation { - [Data.Models.Metadata.ConfLocation.NameKey] = item.Name, + Name = item.Name, [Data.Models.Metadata.ConfLocation.NumberKey] = item.Number, [Data.Models.Metadata.ConfLocation.InvertedKey] = item.Inverted, }; @@ -300,7 +300,7 @@ namespace SabreTools.Serialization.CrossModel { var confSetting = new Data.Models.Metadata.ConfSetting { - [Data.Models.Metadata.ConfSetting.NameKey] = item.Name, + Name = item.Name, [Data.Models.Metadata.ConfSetting.ValueKey] = item.Value, [Data.Models.Metadata.ConfSetting.DefaultKey] = item.Default, }; @@ -367,7 +367,7 @@ namespace SabreTools.Serialization.CrossModel { var deviceRef = new Data.Models.Metadata.DeviceRef { - [Data.Models.Metadata.DeviceRef.NameKey] = item.Name, + Name = item.Name, }; return deviceRef; } @@ -379,7 +379,7 @@ namespace SabreTools.Serialization.CrossModel { var dipLocation = new Data.Models.Metadata.DipLocation { - [Data.Models.Metadata.DipLocation.NameKey] = item.Name, + Name = item.Name, [Data.Models.Metadata.DipLocation.NumberKey] = item.Number, [Data.Models.Metadata.DipLocation.InvertedKey] = item.Inverted, }; @@ -393,7 +393,7 @@ namespace SabreTools.Serialization.CrossModel { var dipSwitch = new Data.Models.Metadata.DipSwitch { - [Data.Models.Metadata.DipSwitch.NameKey] = item.Name, + Name = item.Name, [Data.Models.Metadata.DipSwitch.TagKey] = item.Tag, [Data.Models.Metadata.DipSwitch.MaskKey] = item.Mask, }; @@ -423,7 +423,7 @@ namespace SabreTools.Serialization.CrossModel { var dipValue = new Data.Models.Metadata.DipValue { - [Data.Models.Metadata.DipValue.NameKey] = item.Name, + Name = item.Name, [Data.Models.Metadata.DipValue.ValueKey] = item.Value, [Data.Models.Metadata.DipValue.DefaultKey] = item.Default, }; @@ -441,7 +441,7 @@ namespace SabreTools.Serialization.CrossModel { var disk = new Data.Models.Metadata.Disk { - [Data.Models.Metadata.Disk.NameKey] = item.Name, + Name = item.Name, [Data.Models.Metadata.Disk.MD5Key] = item.MD5, [Data.Models.Metadata.Disk.SHA1Key] = item.SHA1, [Data.Models.Metadata.Disk.MergeKey] = item.Merge, @@ -508,7 +508,7 @@ namespace SabreTools.Serialization.CrossModel { var extension = new Data.Models.Metadata.Extension { - [Data.Models.Metadata.Extension.NameKey] = item.Name, + Name = item.Name, }; return extension; } @@ -558,7 +558,7 @@ namespace SabreTools.Serialization.CrossModel { var instance = new Data.Models.Metadata.Instance { - [Data.Models.Metadata.Instance.NameKey] = item.Name, + Name = item.Name, [Data.Models.Metadata.Instance.BriefNameKey] = item.BriefName, }; return instance; @@ -590,7 +590,7 @@ namespace SabreTools.Serialization.CrossModel { var ramOption = new Data.Models.Metadata.RamOption { - [Data.Models.Metadata.RamOption.NameKey] = item.Name, + Name = item.Name, [Data.Models.Metadata.RamOption.DefaultKey] = item.Default, [Data.Models.Metadata.RamOption.ContentKey] = item.Content, }; @@ -604,7 +604,7 @@ namespace SabreTools.Serialization.CrossModel { var rom = new Data.Models.Metadata.Rom { - [Data.Models.Metadata.Rom.NameKey] = item.Name, + Name = item.Name, [Data.Models.Metadata.Rom.BiosKey] = item.Bios, [Data.Models.Metadata.Rom.SizeKey] = item.Size, [Data.Models.Metadata.Rom.CRCKey] = item.CRC, @@ -627,7 +627,7 @@ namespace SabreTools.Serialization.CrossModel { var sample = new Data.Models.Metadata.Sample { - [Data.Models.Metadata.Sample.NameKey] = item.Name, + Name = item.Name, }; return sample; } @@ -639,7 +639,7 @@ namespace SabreTools.Serialization.CrossModel { var slot = new Data.Models.Metadata.Slot { - [Data.Models.Metadata.Slot.NameKey] = item.Name, + Name = item.Name, }; if (item.SlotOption is not null && item.SlotOption.Length > 0) @@ -658,7 +658,7 @@ namespace SabreTools.Serialization.CrossModel { var slotOption = new Data.Models.Metadata.SlotOption { - [Data.Models.Metadata.SlotOption.NameKey] = item.Name, + Name = item.Name, [Data.Models.Metadata.SlotOption.DevNameKey] = item.DevName, [Data.Models.Metadata.SlotOption.DefaultKey] = item.Default, }; @@ -673,7 +673,7 @@ namespace SabreTools.Serialization.CrossModel var softwareList = new Data.Models.Metadata.SoftwareList { [Data.Models.Metadata.SoftwareList.TagKey] = item.Tag, - [Data.Models.Metadata.SoftwareList.NameKey] = item.Name, + Name = item.Name, [Data.Models.Metadata.SoftwareList.StatusKey] = item.Status, [Data.Models.Metadata.SoftwareList.FilterKey] = item.Filter, }; diff --git a/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs b/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs index c04ee6b4..8ded8f42 100644 --- a/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs @@ -42,7 +42,7 @@ namespace SabreTools.Serialization.CrossModel var header = new Header { Id = item.ReadString(Data.Models.Metadata.Header.IdKey), - Name = item.ReadString(Data.Models.Metadata.Header.NameKey), + Name = item.Name, Description = item.ReadString(Data.Models.Metadata.Header.DescriptionKey), RootDir = item.ReadString(Data.Models.Metadata.Header.RootDirKey), Category = item.ReadString(Data.Models.Metadata.Header.CategoryKey), @@ -120,7 +120,7 @@ namespace SabreTools.Serialization.CrossModel { GameBase gameBase = game ? new Game() : new Machine(); - gameBase.Name = item.ReadString(Data.Models.Metadata.Machine.NameKey); + gameBase.Name = item.Name; gameBase.SourceFile = item.ReadString(Data.Models.Metadata.Machine.SourceFileKey); gameBase.IsBios = item.ReadString(Data.Models.Metadata.Machine.IsBiosKey); gameBase.IsDevice = item.ReadString(Data.Models.Metadata.Machine.IsDeviceKey); @@ -194,7 +194,7 @@ namespace SabreTools.Serialization.CrossModel { var archive = new Archive { - Name = item.ReadString(Data.Models.Metadata.Archive.NameKey), + Name = item.Name, }; return archive; } @@ -206,7 +206,7 @@ namespace SabreTools.Serialization.CrossModel { var biosset = new BiosSet { - Name = item.ReadString(Data.Models.Metadata.BiosSet.NameKey), + Name = item.Name, Description = item.ReadString(Data.Models.Metadata.BiosSet.DescriptionKey), Default = item.ReadString(Data.Models.Metadata.BiosSet.DefaultKey), }; @@ -220,7 +220,7 @@ namespace SabreTools.Serialization.CrossModel { var deviceRef = new DeviceRef { - Name = item.ReadString(Data.Models.Metadata.DipSwitch.NameKey), + Name = item.Name, }; return deviceRef; } @@ -232,7 +232,7 @@ namespace SabreTools.Serialization.CrossModel { var disk = new Disk { - Name = item.ReadString(Data.Models.Metadata.Disk.NameKey), + Name = item.Name, MD5 = item.ReadString(Data.Models.Metadata.Disk.MD5Key), SHA1 = item.ReadString(Data.Models.Metadata.Disk.SHA1Key), Merge = item.ReadString(Data.Models.Metadata.Disk.MergeKey), @@ -268,7 +268,7 @@ namespace SabreTools.Serialization.CrossModel { var media = new Media { - Name = item.ReadString(Data.Models.Metadata.Media.NameKey), + Name = item.Name, MD5 = item.ReadString(Data.Models.Metadata.Media.MD5Key), SHA1 = item.ReadString(Data.Models.Metadata.Media.SHA1Key), SHA256 = item.ReadString(Data.Models.Metadata.Media.SHA256Key), @@ -284,7 +284,7 @@ namespace SabreTools.Serialization.CrossModel { var release = new Release { - Name = item.ReadString(Data.Models.Metadata.Release.NameKey), + Name = item.Name, Region = item.ReadString(Data.Models.Metadata.Release.RegionKey), Language = item.ReadString(Data.Models.Metadata.Release.LanguageKey), Date = item.ReadString(Data.Models.Metadata.Release.DateKey), @@ -300,7 +300,7 @@ namespace SabreTools.Serialization.CrossModel { var rom = new Rom { - Name = item.ReadString(Data.Models.Metadata.Rom.NameKey), + Name = item.Name, Size = item.ReadString(Data.Models.Metadata.Rom.SizeKey), CRC16 = item.ReadString(Data.Models.Metadata.Rom.CRC16Key), CRC = item.ReadString(Data.Models.Metadata.Rom.CRCKey), @@ -335,7 +335,7 @@ namespace SabreTools.Serialization.CrossModel { var sample = new Sample { - Name = item.ReadString(Data.Models.Metadata.Sample.NameKey), + Name = item.Name, }; return sample; } @@ -348,7 +348,7 @@ namespace SabreTools.Serialization.CrossModel var softwareList = new Data.Models.Logiqx.SoftwareList { Tag = item.ReadString(Data.Models.Metadata.SoftwareList.TagKey), - Name = item.ReadString(Data.Models.Metadata.SoftwareList.NameKey), + Name = item.Name, Status = item.ReadString(Data.Models.Metadata.SoftwareList.StatusKey), Filter = item.ReadString(Data.Models.Metadata.SoftwareList.FilterKey), }; diff --git a/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs b/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs index 316c3d77..33ed2d0b 100644 --- a/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs @@ -54,7 +54,7 @@ namespace SabreTools.Serialization.CrossModel var header = new Data.Models.Metadata.Header { [Data.Models.Metadata.Header.IdKey] = item.Id, - [Data.Models.Metadata.Header.NameKey] = item.Name, + Name = item.Name, [Data.Models.Metadata.Header.DescriptionKey] = item.Description, [Data.Models.Metadata.Header.RootDirKey] = item.RootDir, [Data.Models.Metadata.Header.CategoryKey] = item.Category, @@ -126,7 +126,7 @@ namespace SabreTools.Serialization.CrossModel var machine = new Data.Models.Metadata.Machine { - [Data.Models.Metadata.Machine.NameKey] = machineName, + Name = machineName, [Data.Models.Metadata.Machine.SourceFileKey] = item.SourceFile, [Data.Models.Metadata.Machine.IsBiosKey] = item.IsBios, [Data.Models.Metadata.Machine.IsDeviceKey] = item.IsDevice, @@ -188,7 +188,7 @@ namespace SabreTools.Serialization.CrossModel { var archive = new Data.Models.Metadata.Archive { - [Data.Models.Metadata.Archive.NameKey] = item.Name, + Name = item.Name, }; return archive; } @@ -200,7 +200,7 @@ namespace SabreTools.Serialization.CrossModel { var biosset = new Data.Models.Metadata.BiosSet { - [Data.Models.Metadata.BiosSet.NameKey] = item.Name, + Name = item.Name, [Data.Models.Metadata.BiosSet.DescriptionKey] = item.Description, [Data.Models.Metadata.BiosSet.DefaultKey] = item.Default, }; @@ -214,7 +214,7 @@ namespace SabreTools.Serialization.CrossModel { var deviceRef = new Data.Models.Metadata.DeviceRef { - [Data.Models.Metadata.DeviceRef.NameKey] = item.Name, + Name = item.Name, }; return deviceRef; } @@ -226,7 +226,7 @@ namespace SabreTools.Serialization.CrossModel { var disk = new Data.Models.Metadata.Disk { - [Data.Models.Metadata.Disk.NameKey] = item.Name, + Name = item.Name, [Data.Models.Metadata.Disk.MD5Key] = item.MD5, [Data.Models.Metadata.Disk.SHA1Key] = item.SHA1, [Data.Models.Metadata.Disk.MergeKey] = item.Merge, @@ -262,7 +262,7 @@ namespace SabreTools.Serialization.CrossModel { var media = new Data.Models.Metadata.Media { - [Data.Models.Metadata.Media.NameKey] = item.Name, + Name = item.Name, [Data.Models.Metadata.Media.MD5Key] = item.MD5, [Data.Models.Metadata.Media.SHA1Key] = item.SHA1, [Data.Models.Metadata.Media.SHA256Key] = item.SHA256, @@ -278,7 +278,7 @@ namespace SabreTools.Serialization.CrossModel { var release = new Data.Models.Metadata.Release { - [Data.Models.Metadata.Release.NameKey] = item.Name, + Name = item.Name, [Data.Models.Metadata.Release.RegionKey] = item.Region, [Data.Models.Metadata.Release.LanguageKey] = item.Language, [Data.Models.Metadata.Release.DateKey] = item.Date, @@ -294,7 +294,7 @@ namespace SabreTools.Serialization.CrossModel { var rom = new Data.Models.Metadata.Rom { - [Data.Models.Metadata.Rom.NameKey] = item.Name, + Name = item.Name, [Data.Models.Metadata.Rom.SizeKey] = item.Size, [Data.Models.Metadata.Rom.CRC16Key] = item.CRC16, [Data.Models.Metadata.Rom.CRCKey] = item.CRC, @@ -329,7 +329,7 @@ namespace SabreTools.Serialization.CrossModel { var sample = new Data.Models.Metadata.Sample { - [Data.Models.Metadata.Sample.NameKey] = item.Name, + Name = item.Name, }; return sample; } @@ -342,7 +342,7 @@ namespace SabreTools.Serialization.CrossModel var softwareList = new Data.Models.Metadata.SoftwareList { [Data.Models.Metadata.SoftwareList.TagKey] = item.Tag, - [Data.Models.Metadata.SoftwareList.NameKey] = item.Name, + Name = item.Name, [Data.Models.Metadata.SoftwareList.StatusKey] = item.Status, [Data.Models.Metadata.SoftwareList.FilterKey] = item.Filter, }; diff --git a/SabreTools.Serialization.CrossModel/OfflineList.Deserializer.cs b/SabreTools.Serialization.CrossModel/OfflineList.Deserializer.cs index 02e1b261..dd7199e8 100644 --- a/SabreTools.Serialization.CrossModel/OfflineList.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/OfflineList.Deserializer.cs @@ -36,7 +36,7 @@ namespace SabreTools.Serialization.CrossModel NoNamespaceSchemaLocation = item.ReadString(Data.Models.Metadata.Header.SchemaLocationKey), }; - if (item.ContainsKey(Data.Models.Metadata.Header.NameKey) + if (item.Name is not null || item.ContainsKey(Data.Models.Metadata.Header.ImFolderKey) || item.ContainsKey(Data.Models.Metadata.Header.DatVersionKey) || item.ContainsKey(Data.Models.Metadata.Header.SystemKey) @@ -50,7 +50,7 @@ namespace SabreTools.Serialization.CrossModel { dat.Configuration = new Configuration { - DatName = item.ReadString(Data.Models.Metadata.Header.NameKey), + DatName = item.Name, ImFolder = item.ReadString(Data.Models.Metadata.Header.ImFolderKey), DatVersion = item.ReadString(Data.Models.Metadata.Header.DatVersionKey), System = item.ReadString(Data.Models.Metadata.Header.SystemKey), @@ -84,7 +84,7 @@ namespace SabreTools.Serialization.CrossModel { ImageNumber = item.ReadString(Data.Models.Metadata.Machine.ImageNumberKey), ReleaseNumber = item.ReadString(Data.Models.Metadata.Machine.ReleaseNumberKey), - Title = item.ReadString(Data.Models.Metadata.Machine.NameKey), + Title = item.Name, SaveType = item.ReadString(Data.Models.Metadata.Machine.SaveTypeKey), Publisher = item.ReadString(Data.Models.Metadata.Machine.PublisherKey), Location = item.ReadString(Data.Models.Metadata.Machine.LocationKey), diff --git a/SabreTools.Serialization.CrossModel/OfflineList.Serializer.cs b/SabreTools.Serialization.CrossModel/OfflineList.Serializer.cs index 1b3f1139..c8032e8d 100644 --- a/SabreTools.Serialization.CrossModel/OfflineList.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/OfflineList.Serializer.cs @@ -37,7 +37,7 @@ namespace SabreTools.Serialization.CrossModel if (item.Configuration is not null) { - header[Data.Models.Metadata.Header.NameKey] = item.Configuration.DatName; + header.Name = item.Configuration.DatName; header[Data.Models.Metadata.Header.ImFolderKey] = item.Configuration.ImFolder; header[Data.Models.Metadata.Header.DatVersionKey] = item.Configuration.DatVersion; header[Data.Models.Metadata.Header.SystemKey] = item.Configuration.System; @@ -67,7 +67,7 @@ namespace SabreTools.Serialization.CrossModel { [Data.Models.Metadata.Machine.ImageNumberKey] = item.ImageNumber, [Data.Models.Metadata.Machine.ReleaseNumberKey] = item.ReleaseNumber, - [Data.Models.Metadata.Machine.NameKey] = item.Title, + Name = item.Title, [Data.Models.Metadata.Machine.SaveTypeKey] = item.SaveType, [Data.Models.Metadata.Machine.PublisherKey] = item.Publisher, [Data.Models.Metadata.Machine.LocationKey] = item.Location, diff --git a/SabreTools.Serialization.CrossModel/OpenMSX.Deserializer.cs b/SabreTools.Serialization.CrossModel/OpenMSX.Deserializer.cs index adcea623..0fd48c22 100644 --- a/SabreTools.Serialization.CrossModel/OpenMSX.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/OpenMSX.Deserializer.cs @@ -40,7 +40,7 @@ namespace SabreTools.Serialization.CrossModel { var game = new Software { - Title = item.ReadString(Data.Models.Metadata.Machine.NameKey), + Title = item.Name, GenMSXID = item.ReadString(Data.Models.Metadata.Machine.GenMSXIDKey), System = item.ReadString(Data.Models.Metadata.Machine.SystemKey), Company = item.ReadString(Data.Models.Metadata.Machine.CompanyKey), diff --git a/SabreTools.Serialization.CrossModel/OpenMSX.Serializer.cs b/SabreTools.Serialization.CrossModel/OpenMSX.Serializer.cs index c86f5ee1..e77396d4 100644 --- a/SabreTools.Serialization.CrossModel/OpenMSX.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/OpenMSX.Serializer.cs @@ -44,7 +44,7 @@ namespace SabreTools.Serialization.CrossModel { var machine = new Data.Models.Metadata.Machine { - [Data.Models.Metadata.Machine.NameKey] = item.Title, + Name = item.Title, [Data.Models.Metadata.Machine.GenMSXIDKey] = item.GenMSXID, [Data.Models.Metadata.Machine.SystemKey] = item.System, [Data.Models.Metadata.Machine.CompanyKey] = item.Company, diff --git a/SabreTools.Serialization.CrossModel/RomCenter.Deserializer.cs b/SabreTools.Serialization.CrossModel/RomCenter.Deserializer.cs index afd41443..35121c7e 100644 --- a/SabreTools.Serialization.CrossModel/RomCenter.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/RomCenter.Deserializer.cs @@ -100,9 +100,9 @@ namespace SabreTools.Serialization.CrossModel { ParentName = parent.ReadString(Data.Models.Metadata.Machine.CloneOfKey), //ParentDescription = parent.ReadString(Data.Models.Metadata.Machine.ParentDescriptionKey), // This is unmappable - GameName = parent.ReadString(Data.Models.Metadata.Machine.NameKey), + GameName = parent.Name, GameDescription = parent.ReadString(Data.Models.Metadata.Machine.DescriptionKey), - RomName = item.ReadString(Data.Models.Metadata.Rom.NameKey), + RomName = item.Name, RomCRC = item.ReadString(Data.Models.Metadata.Rom.CRCKey), RomSize = item.ReadString(Data.Models.Metadata.Rom.SizeKey), RomOf = parent.ReadString(Data.Models.Metadata.Machine.RomOfKey), diff --git a/SabreTools.Serialization.CrossModel/RomCenter.Serializer.cs b/SabreTools.Serialization.CrossModel/RomCenter.Serializer.cs index 214a66be..7e77deec 100644 --- a/SabreTools.Serialization.CrossModel/RomCenter.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/RomCenter.Serializer.cs @@ -73,7 +73,7 @@ namespace SabreTools.Serialization.CrossModel [Data.Models.Metadata.Machine.RomOfKey] = item.RomOf, [Data.Models.Metadata.Machine.CloneOfKey] = item.ParentName, //[Data.Models.Metadata.Machine.ParentDescriptionKey] = item.ParentDescription, // This is unmappable - [Data.Models.Metadata.Machine.NameKey] = item.GameName, + Name = item.GameName, [Data.Models.Metadata.Machine.DescriptionKey] = item.GameDescription, [Data.Models.Metadata.Machine.RomKey] = new Data.Models.Metadata.Rom[] { ConvertToInternalModel(item) }, }; @@ -88,7 +88,7 @@ namespace SabreTools.Serialization.CrossModel { var rom = new Data.Models.Metadata.Rom { - [Data.Models.Metadata.Rom.NameKey] = item.RomName, + Name = item.RomName, [Data.Models.Metadata.Rom.CRCKey] = item.RomCRC, [Data.Models.Metadata.Rom.SizeKey] = item.RomSize, [Data.Models.Metadata.Rom.MergeKey] = item.MergeName, diff --git a/SabreTools.Serialization.CrossModel/SeparatedValue.Deserializer.cs b/SabreTools.Serialization.CrossModel/SeparatedValue.Deserializer.cs index e6404c6b..38ac7b00 100644 --- a/SabreTools.Serialization.CrossModel/SeparatedValue.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/SeparatedValue.Deserializer.cs @@ -77,13 +77,13 @@ namespace SabreTools.Serialization.CrossModel var row = new Row { FileName = header?.ReadString("FILENAME"), // TODO: Make this an actual key to retrieve - InternalName = header?.ReadString(Data.Models.Metadata.Header.NameKey), + InternalName = header?.Name, Description = header?.ReadString(Data.Models.Metadata.Header.DescriptionKey), - GameName = parent.ReadString(Data.Models.Metadata.Machine.NameKey), + GameName = parent.Name, GameDescription = parent.ReadString(Data.Models.Metadata.Machine.DescriptionKey), Type = "disk", RomName = null, - DiskName = item.ReadString(Data.Models.Metadata.Disk.NameKey), + DiskName = item.Name, Size = null, CRC = null, MD5 = item.ReadString(Data.Models.Metadata.Disk.MD5Key), @@ -105,13 +105,13 @@ namespace SabreTools.Serialization.CrossModel var row = new Row { FileName = header?.ReadString("FILENAME"), // TODO: Make this an actual key to retrieve on an item -- OriginalFilename - InternalName = header?.ReadString(Data.Models.Metadata.Header.NameKey), + InternalName = header?.Name, Description = header?.ReadString(Data.Models.Metadata.Header.DescriptionKey), - GameName = parent.ReadString(Data.Models.Metadata.Machine.NameKey), + GameName = parent.Name, GameDescription = parent.ReadString(Data.Models.Metadata.Machine.DescriptionKey), Type = "media", RomName = null, - DiskName = item.ReadString(Data.Models.Metadata.Media.NameKey), + DiskName = item.Name, Size = null, CRC = null, MD5 = item.ReadString(Data.Models.Metadata.Media.MD5Key), @@ -132,12 +132,12 @@ namespace SabreTools.Serialization.CrossModel var row = new Row { FileName = header?.ReadString("FILENAME"), // TODO: Make this an actual key to retrieve - InternalName = header?.ReadString(Data.Models.Metadata.Header.NameKey), + InternalName = header?.Name, Description = header?.ReadString(Data.Models.Metadata.Header.DescriptionKey), - GameName = parent.ReadString(Data.Models.Metadata.Machine.NameKey), + GameName = parent.Name, GameDescription = parent.ReadString(Data.Models.Metadata.Machine.DescriptionKey), Type = "rom", - RomName = item.ReadString(Data.Models.Metadata.Rom.NameKey), + RomName = item.Name, DiskName = null, Size = item.ReadString(Data.Models.Metadata.Rom.SizeKey), CRC = item.ReadString(Data.Models.Metadata.Rom.CRCKey), diff --git a/SabreTools.Serialization.CrossModel/SeparatedValue.Serializer.cs b/SabreTools.Serialization.CrossModel/SeparatedValue.Serializer.cs index 8a6492c1..5b98e28f 100644 --- a/SabreTools.Serialization.CrossModel/SeparatedValue.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/SeparatedValue.Serializer.cs @@ -39,7 +39,7 @@ namespace SabreTools.Serialization.CrossModel { var first = item.Row[0]; header["FILENAME"] = first.FileName; // TODO: Make this an actual key to retrieve on an item -- OriginalFilename - header[Data.Models.Metadata.Header.NameKey] = first.FileName; + header.Name = first.FileName; header[Data.Models.Metadata.Header.DescriptionKey] = first.Description; } @@ -53,7 +53,7 @@ namespace SabreTools.Serialization.CrossModel { var machine = new Data.Models.Metadata.Machine { - [Data.Models.Metadata.Machine.NameKey] = item.GameName, + Name = item.GameName, [Data.Models.Metadata.Machine.DescriptionKey] = item.GameDescription, }; @@ -89,14 +89,14 @@ namespace SabreTools.Serialization.CrossModel { "disk" => new Data.Models.Metadata.Disk { - [Data.Models.Metadata.Disk.NameKey] = item.DiskName, + Name = item.DiskName, [Data.Models.Metadata.Disk.MD5Key] = item.MD5, [Data.Models.Metadata.Disk.SHA1Key] = item.SHA1, [Data.Models.Metadata.Disk.StatusKey] = item.Status, }, "media" => new Data.Models.Metadata.Media { - [Data.Models.Metadata.Media.NameKey] = item.DiskName, + Name = item.DiskName, [Data.Models.Metadata.Media.MD5Key] = item.MD5, [Data.Models.Metadata.Media.SHA1Key] = item.SHA1, [Data.Models.Metadata.Media.SHA256Key] = item.SHA256, @@ -104,7 +104,7 @@ namespace SabreTools.Serialization.CrossModel }, "rom" => new Data.Models.Metadata.Rom { - [Data.Models.Metadata.Rom.NameKey] = item.RomName, + Name = item.RomName, [Data.Models.Metadata.Rom.SizeKey] = item.Size, [Data.Models.Metadata.Rom.CRCKey] = item.CRC, [Data.Models.Metadata.Rom.MD5Key] = item.MD5, diff --git a/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs b/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs index 28b116b3..e5bcaf2f 100644 --- a/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs @@ -28,7 +28,7 @@ namespace SabreTools.Serialization.CrossModel { var softwareList = new Data.Models.SoftwareList.SoftwareList { - Name = item.ReadString(Data.Models.Metadata.Header.NameKey), + Name = item.Name, Description = item.ReadString(Data.Models.Metadata.Header.DescriptionKey), Notes = item.ReadString(Data.Models.Metadata.Header.NotesKey), }; @@ -42,7 +42,7 @@ namespace SabreTools.Serialization.CrossModel { var software = new Software { - Name = item.ReadString(Data.Models.Metadata.Machine.NameKey), + Name = item.Name, CloneOf = item.ReadString(Data.Models.Metadata.Machine.CloneOfKey), Supported = item.ReadString(Data.Models.Metadata.Machine.SupportedKey), Description = item.ReadString(Data.Models.Metadata.Machine.DescriptionKey), @@ -73,7 +73,7 @@ namespace SabreTools.Serialization.CrossModel { var dataArea = new DataArea { - Name = item.ReadString(Data.Models.Metadata.DataArea.NameKey), + Name = item.Name, Size = item.ReadString(Data.Models.Metadata.DataArea.SizeKey), Width = item.ReadString(Data.Models.Metadata.DataArea.WidthKey), Endianness = item.ReadString(Data.Models.Metadata.DataArea.EndiannessKey), @@ -93,7 +93,7 @@ namespace SabreTools.Serialization.CrossModel { var dipSwitch = new DipSwitch { - Name = item.ReadString(Data.Models.Metadata.DipSwitch.NameKey), + Name = item.Name, Tag = item.ReadString(Data.Models.Metadata.DipSwitch.TagKey), Mask = item.ReadString(Data.Models.Metadata.DipSwitch.MaskKey), }; @@ -112,7 +112,7 @@ namespace SabreTools.Serialization.CrossModel { var dipValue = new DipValue { - Name = item.ReadString(Data.Models.Metadata.DipValue.NameKey), + Name = item.Name, Value = item.ReadString(Data.Models.Metadata.DipValue.ValueKey), Default = item.ReadString(Data.Models.Metadata.DipValue.DefaultKey), }; @@ -126,7 +126,7 @@ namespace SabreTools.Serialization.CrossModel { var disk = new Disk { - Name = item.ReadString(Data.Models.Metadata.Disk.NameKey), + Name = item.Name, MD5 = item.ReadString(Data.Models.Metadata.Disk.MD5Key), SHA1 = item.ReadString(Data.Models.Metadata.Disk.SHA1Key), Status = item.ReadString(Data.Models.Metadata.Disk.StatusKey), @@ -142,7 +142,7 @@ namespace SabreTools.Serialization.CrossModel { var diskArea = new DiskArea { - Name = item.ReadString(Data.Models.Metadata.DiskArea.NameKey), + Name = item.Name, }; var disks = item.Read(Data.Models.Metadata.DiskArea.DiskKey); @@ -159,7 +159,7 @@ namespace SabreTools.Serialization.CrossModel { var feature = new Feature { - Name = item.ReadString(Data.Models.Metadata.Feature.NameKey), + Name = item.Name, Value = item.ReadString(Data.Models.Metadata.Feature.ValueKey), }; return feature; @@ -172,7 +172,7 @@ namespace SabreTools.Serialization.CrossModel { var info = new Info { - Name = item.ReadString(Data.Models.Metadata.Info.NameKey), + Name = item.Name, Value = item.ReadString(Data.Models.Metadata.Info.ValueKey), }; return info; @@ -185,7 +185,7 @@ namespace SabreTools.Serialization.CrossModel { var part = new Part { - Name = item.ReadString(Data.Models.Metadata.Part.NameKey), + Name = item.Name, Interface = item.ReadString(Data.Models.Metadata.Part.InterfaceKey), }; @@ -215,7 +215,7 @@ namespace SabreTools.Serialization.CrossModel { var rom = new Rom { - Name = item.ReadString(Data.Models.Metadata.Rom.NameKey), + Name = item.Name, Size = item.ReadString(Data.Models.Metadata.Rom.SizeKey), Length = item.ReadString(Data.Models.Metadata.Rom.LengthKey), CRC = item.ReadString(Data.Models.Metadata.Rom.CRCKey), @@ -235,7 +235,7 @@ namespace SabreTools.Serialization.CrossModel { var sharedFeat = new SharedFeat { - Name = item.ReadString(Data.Models.Metadata.SharedFeat.NameKey), + Name = item.Name, Value = item.ReadString(Data.Models.Metadata.SharedFeat.ValueKey), }; return sharedFeat; diff --git a/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs b/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs index d9f2c7aa..ea3f33e5 100644 --- a/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs @@ -32,7 +32,7 @@ namespace SabreTools.Serialization.CrossModel { var header = new Data.Models.Metadata.Header { - [Data.Models.Metadata.Header.NameKey] = item.Name, + Name = item.Name, [Data.Models.Metadata.Header.DescriptionKey] = item.Description, [Data.Models.Metadata.Header.NotesKey] = item.Notes, }; @@ -46,7 +46,7 @@ namespace SabreTools.Serialization.CrossModel { var machine = new Data.Models.Metadata.Machine { - [Data.Models.Metadata.Machine.NameKey] = item.Name, + Name = item.Name, [Data.Models.Metadata.Machine.CloneOfKey] = item.CloneOf, [Data.Models.Metadata.Machine.SupportedKey] = item.Supported, [Data.Models.Metadata.Machine.DescriptionKey] = item.Description, @@ -74,7 +74,7 @@ namespace SabreTools.Serialization.CrossModel { var dataArea = new Data.Models.Metadata.DataArea { - [Data.Models.Metadata.DataArea.NameKey] = item.Name, + Name = item.Name, [Data.Models.Metadata.DataArea.SizeKey] = item.Size, [Data.Models.Metadata.DataArea.WidthKey] = item.Width, [Data.Models.Metadata.DataArea.EndiannessKey] = item.Endianness, @@ -93,7 +93,7 @@ namespace SabreTools.Serialization.CrossModel { var dipSwitch = new Data.Models.Metadata.DipSwitch { - [Data.Models.Metadata.DipSwitch.NameKey] = item.Name, + Name = item.Name, [Data.Models.Metadata.DipSwitch.TagKey] = item.Tag, [Data.Models.Metadata.DipSwitch.MaskKey] = item.Mask, }; @@ -111,7 +111,7 @@ namespace SabreTools.Serialization.CrossModel { var dipValue = new Data.Models.Metadata.DipValue { - [Data.Models.Metadata.DipValue.NameKey] = item.Name, + Name = item.Name, [Data.Models.Metadata.DipValue.ValueKey] = item.Value, [Data.Models.Metadata.DipValue.DefaultKey] = item.Default, }; @@ -125,7 +125,7 @@ namespace SabreTools.Serialization.CrossModel { var disk = new Data.Models.Metadata.Disk { - [Data.Models.Metadata.Disk.NameKey] = item.Name, + Name = item.Name, [Data.Models.Metadata.Disk.MD5Key] = item.MD5, [Data.Models.Metadata.Disk.SHA1Key] = item.SHA1, [Data.Models.Metadata.Disk.StatusKey] = item.Status, @@ -141,7 +141,7 @@ namespace SabreTools.Serialization.CrossModel { var diskArea = new Data.Models.Metadata.DiskArea { - [Data.Models.Metadata.DiskArea.NameKey] = item.Name, + Name = item.Name, }; if (item.Disk is not null && item.Disk.Length > 0) @@ -157,7 +157,7 @@ namespace SabreTools.Serialization.CrossModel { var feature = new Data.Models.Metadata.Feature { - [Data.Models.Metadata.Feature.NameKey] = item.Name, + Name = item.Name, [Data.Models.Metadata.Feature.ValueKey] = item.Value, }; return feature; @@ -170,7 +170,7 @@ namespace SabreTools.Serialization.CrossModel { var info = new Data.Models.Metadata.Info { - [Data.Models.Metadata.Info.NameKey] = item.Name, + Name = item.Name, [Data.Models.Metadata.Info.ValueKey] = item.Value, }; return info; @@ -183,7 +183,7 @@ namespace SabreTools.Serialization.CrossModel { var part = new Data.Models.Metadata.Part { - [Data.Models.Metadata.Part.NameKey] = item.Name, + Name = item.Name, [Data.Models.Metadata.Part.InterfaceKey] = item.Interface, }; @@ -209,7 +209,7 @@ namespace SabreTools.Serialization.CrossModel { var rom = new Data.Models.Metadata.Rom { - [Data.Models.Metadata.Rom.NameKey] = item.Name, + Name = item.Name, [Data.Models.Metadata.Rom.SizeKey] = item.Size, [Data.Models.Metadata.Rom.LengthKey] = item.Length, [Data.Models.Metadata.Rom.CRCKey] = item.CRC, @@ -229,7 +229,7 @@ namespace SabreTools.Serialization.CrossModel { var sharedFeat = new Data.Models.Metadata.SharedFeat { - [Data.Models.Metadata.SharedFeat.NameKey] = item.Name, + Name = item.Name, [Data.Models.Metadata.SharedFeat.ValueKey] = item.Value, }; return sharedFeat; From d2b8a4aa2c3a729ddd54fe9c3e67d182f5c18991 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Wed, 1 Apr 2026 13:42:07 -0400 Subject: [PATCH 004/142] Remove NameKey from all current locations --- SabreTools.Data.Models/Metadata/Adjuster.cs | 3 - SabreTools.Data.Models/Metadata/Archive.cs | 3 - SabreTools.Data.Models/Metadata/BiosSet.cs | 3 - SabreTools.Data.Models/Metadata/Chip.cs | 3 - .../Metadata/ConfLocation.cs | 3 - .../Metadata/ConfSetting.cs | 3 - .../Metadata/Configuration.cs | 3 - SabreTools.Data.Models/Metadata/DataArea.cs | 3 - SabreTools.Data.Models/Metadata/DeviceRef.cs | 7 - .../Metadata/DipLocation.cs | 3 - SabreTools.Data.Models/Metadata/DipSwitch.cs | 3 - SabreTools.Data.Models/Metadata/DipValue.cs | 3 - SabreTools.Data.Models/Metadata/Disk.cs | 3 - SabreTools.Data.Models/Metadata/DiskArea.cs | 3 - SabreTools.Data.Models/Metadata/Extension.cs | 7 - SabreTools.Data.Models/Metadata/Feature.cs | 3 - SabreTools.Data.Models/Metadata/Header.cs | 3 - SabreTools.Data.Models/Metadata/Info.cs | 3 - SabreTools.Data.Models/Metadata/Instance.cs | 3 - SabreTools.Data.Models/Metadata/Machine.cs | 3 - SabreTools.Data.Models/Metadata/Media.cs | 3 - SabreTools.Data.Models/Metadata/Part.cs | 3 - SabreTools.Data.Models/Metadata/RamOption.cs | 3 - SabreTools.Data.Models/Metadata/Release.cs | 3 - SabreTools.Data.Models/Metadata/Rom.cs | 3 - SabreTools.Data.Models/Metadata/Sample.cs | 7 - SabreTools.Data.Models/Metadata/SharedFeat.cs | 3 - SabreTools.Data.Models/Metadata/Slot.cs | 3 - SabreTools.Data.Models/Metadata/SlotOption.cs | 3 - SabreTools.Data.Models/Metadata/Software.cs | 3 - .../Metadata/SoftwareList.cs | 3 - .../FormatsTests.cs | 142 +++++++++--------- .../Formats/AttractMode.cs | 4 +- .../Formats/ClrMamePro.cs | 16 +- .../Formats/DosCenter.cs | 2 +- .../Formats/EverdriveSmdb.cs | 2 +- .../Formats/Listrom.cs | 2 +- .../Formats/Listxml.cs | 24 +-- .../Formats/Logiqx.cs | 18 +-- .../Formats/Md2File.cs | 2 +- .../Formats/Md4File.cs | 2 +- .../Formats/Md5File.cs | 2 +- .../Formats/OpenMSX.cs | 2 +- .../Formats/RipeMD128File.cs | 2 +- .../Formats/RipeMD160File.cs | 2 +- .../Formats/RomCenter.cs | 2 +- .../Formats/SeparatedValue.cs | 2 +- .../Formats/SfvFile.cs | 2 +- .../Formats/Sha1File.cs | 2 +- .../Formats/Sha256File.cs | 2 +- .../Formats/Sha384File.cs | 2 +- .../Formats/Sha512File.cs | 2 +- .../Formats/SoftwareList.cs | 30 ++-- .../Formats/SpamSumFile.cs | 2 +- SabreTools.Metadata.Filter/FilterKey.cs | 28 ++++ 55 files changed, 162 insertions(+), 239 deletions(-) diff --git a/SabreTools.Data.Models/Metadata/Adjuster.cs b/SabreTools.Data.Models/Metadata/Adjuster.cs index 93a92165..b8708904 100644 --- a/SabreTools.Data.Models/Metadata/Adjuster.cs +++ b/SabreTools.Data.Models/Metadata/Adjuster.cs @@ -21,9 +21,6 @@ namespace SabreTools.Data.Models.Metadata /// bool public const string DefaultKey = "default"; - /// string - public const string NameKey = "name"; - #endregion public Adjuster() => ItemType = ItemType.Adjuster; diff --git a/SabreTools.Data.Models/Metadata/Archive.cs b/SabreTools.Data.Models/Metadata/Archive.cs index 12280858..7217d9ba 100644 --- a/SabreTools.Data.Models/Metadata/Archive.cs +++ b/SabreTools.Data.Models/Metadata/Archive.cs @@ -29,9 +29,6 @@ namespace SabreTools.Data.Models.Metadata /// string, No-Intro DB extension public const string MergeNameKey = "mergename"; - /// string - public const string NameKey = "name"; - /// string, No-Intro DB extension public const string NameAltKey = "name_alt"; diff --git a/SabreTools.Data.Models/Metadata/BiosSet.cs b/SabreTools.Data.Models/Metadata/BiosSet.cs index e5026427..86dd5efd 100644 --- a/SabreTools.Data.Models/Metadata/BiosSet.cs +++ b/SabreTools.Data.Models/Metadata/BiosSet.cs @@ -20,9 +20,6 @@ namespace SabreTools.Data.Models.Metadata /// string public const string DescriptionKey = "description"; - /// string - public const string NameKey = "name"; - #endregion public BiosSet() => ItemType = ItemType.BiosSet; diff --git a/SabreTools.Data.Models/Metadata/Chip.cs b/SabreTools.Data.Models/Metadata/Chip.cs index 29717274..0a8860cc 100644 --- a/SabreTools.Data.Models/Metadata/Chip.cs +++ b/SabreTools.Data.Models/Metadata/Chip.cs @@ -20,9 +20,6 @@ namespace SabreTools.Data.Models.Metadata /// string public const string FlagsKey = "flags"; - /// string - public const string NameKey = "name"; - /// (yes|no) "no" public const string SoundOnlyKey = "soundonly"; diff --git a/SabreTools.Data.Models/Metadata/ConfLocation.cs b/SabreTools.Data.Models/Metadata/ConfLocation.cs index 84f95648..9fe02618 100644 --- a/SabreTools.Data.Models/Metadata/ConfLocation.cs +++ b/SabreTools.Data.Models/Metadata/ConfLocation.cs @@ -17,9 +17,6 @@ namespace SabreTools.Data.Models.Metadata /// (yes|no) "no" public const string InvertedKey = "inverted"; - /// string - public const string NameKey = "name"; - /// string, possibly long public const string NumberKey = "number"; diff --git a/SabreTools.Data.Models/Metadata/ConfSetting.cs b/SabreTools.Data.Models/Metadata/ConfSetting.cs index 8f61ce32..996d2b0f 100644 --- a/SabreTools.Data.Models/Metadata/ConfSetting.cs +++ b/SabreTools.Data.Models/Metadata/ConfSetting.cs @@ -21,9 +21,6 @@ namespace SabreTools.Data.Models.Metadata /// (yes|no) "no" public const string DefaultKey = "default"; - /// string - public const string NameKey = "name"; - /// string public const string ValueKey = "value"; diff --git a/SabreTools.Data.Models/Metadata/Configuration.cs b/SabreTools.Data.Models/Metadata/Configuration.cs index 120ba827..d261bb88 100644 --- a/SabreTools.Data.Models/Metadata/Configuration.cs +++ b/SabreTools.Data.Models/Metadata/Configuration.cs @@ -29,9 +29,6 @@ namespace SabreTools.Data.Models.Metadata /// string public const string MaskKey = "mask"; - /// string - public const string NameKey = "name"; - /// string public const string TagKey = "tag"; diff --git a/SabreTools.Data.Models/Metadata/DataArea.cs b/SabreTools.Data.Models/Metadata/DataArea.cs index 2ad809ae..5bc474cf 100644 --- a/SabreTools.Data.Models/Metadata/DataArea.cs +++ b/SabreTools.Data.Models/Metadata/DataArea.cs @@ -17,9 +17,6 @@ namespace SabreTools.Data.Models.Metadata /// (big|little) "little" public const string EndiannessKey = "endianness"; - /// string - public const string NameKey = "name"; - /// Rom[] [NoFilter] public const string RomKey = "rom"; diff --git a/SabreTools.Data.Models/Metadata/DeviceRef.cs b/SabreTools.Data.Models/Metadata/DeviceRef.cs index 6da889da..edfdf54d 100644 --- a/SabreTools.Data.Models/Metadata/DeviceRef.cs +++ b/SabreTools.Data.Models/Metadata/DeviceRef.cs @@ -12,13 +12,6 @@ namespace SabreTools.Data.Models.Metadata #endregion - #region Keys - - /// string - public const string NameKey = "name"; - - #endregion - public DeviceRef() => ItemType = ItemType.DeviceRef; } } diff --git a/SabreTools.Data.Models/Metadata/DipLocation.cs b/SabreTools.Data.Models/Metadata/DipLocation.cs index 3a344d33..58dde81e 100644 --- a/SabreTools.Data.Models/Metadata/DipLocation.cs +++ b/SabreTools.Data.Models/Metadata/DipLocation.cs @@ -17,9 +17,6 @@ namespace SabreTools.Data.Models.Metadata /// (yes|no) "no" public const string InvertedKey = "inverted"; - /// string - public const string NameKey = "name"; - /// string, possibly long public const string NumberKey = "number"; diff --git a/SabreTools.Data.Models/Metadata/DipSwitch.cs b/SabreTools.Data.Models/Metadata/DipSwitch.cs index 6538d0a8..fe5127be 100644 --- a/SabreTools.Data.Models/Metadata/DipSwitch.cs +++ b/SabreTools.Data.Models/Metadata/DipSwitch.cs @@ -35,9 +35,6 @@ namespace SabreTools.Data.Models.Metadata /// string public const string MaskKey = "mask"; - /// string - public const string NameKey = "name"; - /// string public const string TagKey = "tag"; diff --git a/SabreTools.Data.Models/Metadata/DipValue.cs b/SabreTools.Data.Models/Metadata/DipValue.cs index f4416636..b8415547 100644 --- a/SabreTools.Data.Models/Metadata/DipValue.cs +++ b/SabreTools.Data.Models/Metadata/DipValue.cs @@ -21,9 +21,6 @@ namespace SabreTools.Data.Models.Metadata /// (yes|no) "no" public const string DefaultKey = "default"; - /// string - public const string NameKey = "name"; - /// string public const string ValueKey = "value"; diff --git a/SabreTools.Data.Models/Metadata/Disk.cs b/SabreTools.Data.Models/Metadata/Disk.cs index ebb019f8..f67a0b8e 100644 --- a/SabreTools.Data.Models/Metadata/Disk.cs +++ b/SabreTools.Data.Models/Metadata/Disk.cs @@ -26,9 +26,6 @@ namespace SabreTools.Data.Models.Metadata /// string public const string MergeKey = "merge"; - /// string - public const string NameKey = "name"; - /// (yes|no) "no" public const string OptionalKey = "optional"; diff --git a/SabreTools.Data.Models/Metadata/DiskArea.cs b/SabreTools.Data.Models/Metadata/DiskArea.cs index 5cd92483..87e68a86 100644 --- a/SabreTools.Data.Models/Metadata/DiskArea.cs +++ b/SabreTools.Data.Models/Metadata/DiskArea.cs @@ -18,9 +18,6 @@ namespace SabreTools.Data.Models.Metadata [NoFilter] public const string DiskKey = "disk"; - /// string - public const string NameKey = "name"; - #endregion public DiskArea() => ItemType = ItemType.DiskArea; diff --git a/SabreTools.Data.Models/Metadata/Extension.cs b/SabreTools.Data.Models/Metadata/Extension.cs index d5c912a1..ff5f9808 100644 --- a/SabreTools.Data.Models/Metadata/Extension.cs +++ b/SabreTools.Data.Models/Metadata/Extension.cs @@ -12,13 +12,6 @@ namespace SabreTools.Data.Models.Metadata #endregion - #region Keys - - /// string - public const string NameKey = "name"; - - #endregion - public Extension() => ItemType = ItemType.Extension; } } diff --git a/SabreTools.Data.Models/Metadata/Feature.cs b/SabreTools.Data.Models/Metadata/Feature.cs index 3ecadbe0..2195c262 100644 --- a/SabreTools.Data.Models/Metadata/Feature.cs +++ b/SabreTools.Data.Models/Metadata/Feature.cs @@ -14,9 +14,6 @@ namespace SabreTools.Data.Models.Metadata #region Keys - /// string - public const string NameKey = "name"; - /// (unemulated|imperfect) public const string OverallKey = "overall"; diff --git a/SabreTools.Data.Models/Metadata/Header.cs b/SabreTools.Data.Models/Metadata/Header.cs index 0851a8bc..9ed506ee 100644 --- a/SabreTools.Data.Models/Metadata/Header.cs +++ b/SabreTools.Data.Models/Metadata/Header.cs @@ -98,9 +98,6 @@ namespace SabreTools.Data.Models.Metadata /// string public const string MameConfigKey = "mameconfig"; - /// string - public const string NameKey = "name"; - /// TODO: This needs an internal model OR mapping to fields /// NewDat [NoFilter] diff --git a/SabreTools.Data.Models/Metadata/Info.cs b/SabreTools.Data.Models/Metadata/Info.cs index 380b8eb1..7adec396 100644 --- a/SabreTools.Data.Models/Metadata/Info.cs +++ b/SabreTools.Data.Models/Metadata/Info.cs @@ -14,9 +14,6 @@ namespace SabreTools.Data.Models.Metadata #region Keys - /// string - public const string NameKey = "name"; - /// string public const string ValueKey = "value"; diff --git a/SabreTools.Data.Models/Metadata/Instance.cs b/SabreTools.Data.Models/Metadata/Instance.cs index bcf5f4f4..2d07298a 100644 --- a/SabreTools.Data.Models/Metadata/Instance.cs +++ b/SabreTools.Data.Models/Metadata/Instance.cs @@ -17,9 +17,6 @@ namespace SabreTools.Data.Models.Metadata /// string public const string BriefNameKey = "briefname"; - /// string - public const string NameKey = "name"; - #endregion public Instance() => ItemType = ItemType.Instance; diff --git a/SabreTools.Data.Models/Metadata/Machine.cs b/SabreTools.Data.Models/Metadata/Machine.cs index 0bccb4fb..82ccf0e1 100644 --- a/SabreTools.Data.Models/Metadata/Machine.cs +++ b/SabreTools.Data.Models/Metadata/Machine.cs @@ -168,9 +168,6 @@ namespace SabreTools.Data.Models.Metadata [NoFilter] public const string MediaKey = "media"; - /// string - public const string NameKey = "name"; - /// string public const string NotesKey = "notes"; diff --git a/SabreTools.Data.Models/Metadata/Media.cs b/SabreTools.Data.Models/Metadata/Media.cs index ee974675..cb45c2cc 100644 --- a/SabreTools.Data.Models/Metadata/Media.cs +++ b/SabreTools.Data.Models/Metadata/Media.cs @@ -17,9 +17,6 @@ namespace SabreTools.Data.Models.Metadata /// string public const string MD5Key = "md5"; - /// string - public const string NameKey = "name"; - /// string public const string SHA1Key = "sha1"; diff --git a/SabreTools.Data.Models/Metadata/Part.cs b/SabreTools.Data.Models/Metadata/Part.cs index 1e2a969e..49dd52fd 100644 --- a/SabreTools.Data.Models/Metadata/Part.cs +++ b/SabreTools.Data.Models/Metadata/Part.cs @@ -33,9 +33,6 @@ namespace SabreTools.Data.Models.Metadata /// string public const string InterfaceKey = "interface"; - /// string - public const string NameKey = "name"; - #endregion public Part() => ItemType = ItemType.Part; diff --git a/SabreTools.Data.Models/Metadata/RamOption.cs b/SabreTools.Data.Models/Metadata/RamOption.cs index abe5f9b6..b2b82a99 100644 --- a/SabreTools.Data.Models/Metadata/RamOption.cs +++ b/SabreTools.Data.Models/Metadata/RamOption.cs @@ -20,9 +20,6 @@ namespace SabreTools.Data.Models.Metadata /// (yes|no) "no" public const string DefaultKey = "default"; - /// string - public const string NameKey = "name"; - #endregion public RamOption() => ItemType = ItemType.RamOption; diff --git a/SabreTools.Data.Models/Metadata/Release.cs b/SabreTools.Data.Models/Metadata/Release.cs index e32520a3..ae3ef67a 100644 --- a/SabreTools.Data.Models/Metadata/Release.cs +++ b/SabreTools.Data.Models/Metadata/Release.cs @@ -23,9 +23,6 @@ namespace SabreTools.Data.Models.Metadata /// string public const string LanguageKey = "language"; - /// string - public const string NameKey = "name"; - /// string public const string RegionKey = "region"; diff --git a/SabreTools.Data.Models/Metadata/Rom.cs b/SabreTools.Data.Models/Metadata/Rom.cs index 2e97dfe7..99648714 100644 --- a/SabreTools.Data.Models/Metadata/Rom.cs +++ b/SabreTools.Data.Models/Metadata/Rom.cs @@ -143,9 +143,6 @@ namespace SabreTools.Data.Models.Metadata /// (yes|no) "no" public const string MIAKey = "mia"; - /// string - public const string NameKey = "name"; - /// string; ArchiveDotOrg.File public const string TesseractOCRKey = "ocr"; diff --git a/SabreTools.Data.Models/Metadata/Sample.cs b/SabreTools.Data.Models/Metadata/Sample.cs index 63ec55ec..3570b3aa 100644 --- a/SabreTools.Data.Models/Metadata/Sample.cs +++ b/SabreTools.Data.Models/Metadata/Sample.cs @@ -12,13 +12,6 @@ namespace SabreTools.Data.Models.Metadata #endregion - #region Keys - - /// string - public const string NameKey = "name"; - - #endregion - public Sample() => ItemType = ItemType.Sample; } } diff --git a/SabreTools.Data.Models/Metadata/SharedFeat.cs b/SabreTools.Data.Models/Metadata/SharedFeat.cs index 524848dc..86df3931 100644 --- a/SabreTools.Data.Models/Metadata/SharedFeat.cs +++ b/SabreTools.Data.Models/Metadata/SharedFeat.cs @@ -14,9 +14,6 @@ namespace SabreTools.Data.Models.Metadata #region Keys - /// string - public const string NameKey = "name"; - /// string public const string ValueKey = "value"; diff --git a/SabreTools.Data.Models/Metadata/Slot.cs b/SabreTools.Data.Models/Metadata/Slot.cs index 3b57cbf7..5eb79f6a 100644 --- a/SabreTools.Data.Models/Metadata/Slot.cs +++ b/SabreTools.Data.Models/Metadata/Slot.cs @@ -14,9 +14,6 @@ namespace SabreTools.Data.Models.Metadata #region Keys - /// string - public const string NameKey = "name"; - /// SlotOption[] [NoFilter] public const string SlotOptionKey = "slotoption"; diff --git a/SabreTools.Data.Models/Metadata/SlotOption.cs b/SabreTools.Data.Models/Metadata/SlotOption.cs index 829b9bcd..ff84c17d 100644 --- a/SabreTools.Data.Models/Metadata/SlotOption.cs +++ b/SabreTools.Data.Models/Metadata/SlotOption.cs @@ -20,9 +20,6 @@ namespace SabreTools.Data.Models.Metadata /// string public const string DevNameKey = "devname"; - /// string - public const string NameKey = "name"; - #endregion public SlotOption() => ItemType = ItemType.SlotOption; diff --git a/SabreTools.Data.Models/Metadata/Software.cs b/SabreTools.Data.Models/Metadata/Software.cs index 9e1450f0..18e67e4d 100644 --- a/SabreTools.Data.Models/Metadata/Software.cs +++ b/SabreTools.Data.Models/Metadata/Software.cs @@ -24,9 +24,6 @@ namespace SabreTools.Data.Models.Metadata [NoFilter] public const string InfoKey = "info"; - /// string - public const string NameKey = "name"; - /// string public const string NotesKey = "notes"; diff --git a/SabreTools.Data.Models/Metadata/SoftwareList.cs b/SabreTools.Data.Models/Metadata/SoftwareList.cs index ac6a912f..8b51bb32 100644 --- a/SabreTools.Data.Models/Metadata/SoftwareList.cs +++ b/SabreTools.Data.Models/Metadata/SoftwareList.cs @@ -20,9 +20,6 @@ namespace SabreTools.Data.Models.Metadata /// string public const string FilterKey = "filter"; - /// string - public const string NameKey = "name"; - /// string public const string NotesKey = "notes"; diff --git a/SabreTools.Metadata.DatFiles.Test/FormatsTests.cs b/SabreTools.Metadata.DatFiles.Test/FormatsTests.cs index 9d32691a..5981ecc4 100644 --- a/SabreTools.Metadata.DatFiles.Test/FormatsTests.cs +++ b/SabreTools.Metadata.DatFiles.Test/FormatsTests.cs @@ -56,7 +56,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Rom.NameKey, + nameof(Data.Models.Metadata.Rom.Name), ])); } @@ -96,7 +96,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Release.NameKey, + nameof(Data.Models.Metadata.Release.Name), Data.Models.Metadata.Release.RegionKey, ])); } @@ -111,7 +111,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.BiosSet.NameKey, + nameof(Data.Models.Metadata.BiosSet.Name), Data.Models.Metadata.BiosSet.DescriptionKey, ])); } @@ -126,7 +126,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Rom.NameKey, + nameof(Data.Models.Metadata.Rom.Name), Data.Models.Metadata.Rom.SizeKey, Data.Models.Metadata.Rom.SHA1Key, ])); @@ -142,7 +142,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Disk.NameKey, + nameof(Data.Models.Metadata.Disk.Name), Data.Models.Metadata.Disk.SHA1Key, ])); } @@ -157,7 +157,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Sample.NameKey, + nameof(Data.Models.Metadata.Sample.Name), ])); } @@ -171,7 +171,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Archive.NameKey, + nameof(Data.Models.Metadata.Archive.Name), ])); } @@ -186,7 +186,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ Data.Models.Metadata.Chip.ChipTypeKey, - Data.Models.Metadata.Chip.NameKey, + nameof(Data.Models.Metadata.Chip.Name), ])); } @@ -244,7 +244,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.DipSwitch.NameKey, + nameof(Data.Models.Metadata.DipSwitch.Name), ])); } @@ -287,7 +287,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Rom.NameKey, + nameof(Data.Models.Metadata.Rom.Name), Data.Models.Metadata.Rom.SizeKey, Data.Models.Metadata.Rom.CRCKey, ])); @@ -317,7 +317,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Rom.NameKey, + nameof(Data.Models.Metadata.Rom.Name), Data.Models.Metadata.Rom.SHA256Key, Data.Models.Metadata.Rom.SHA1Key, Data.Models.Metadata.Rom.MD5Key, @@ -349,7 +349,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Rom.NameKey, + nameof(Data.Models.Metadata.Rom.Name), Data.Models.Metadata.Rom.CRCKey, ])); } @@ -374,7 +374,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Rom.NameKey, + nameof(Data.Models.Metadata.Rom.Name), Data.Models.Metadata.Rom.MD2Key, ])); } @@ -399,7 +399,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Rom.NameKey, + nameof(Data.Models.Metadata.Rom.Name), Data.Models.Metadata.Rom.MD4Key, ])); } @@ -426,7 +426,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Disk.NameKey, + nameof(Data.Models.Metadata.Disk.Name), Data.Models.Metadata.Disk.MD5Key, ])); } @@ -441,7 +441,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Media.NameKey, + nameof(Data.Models.Metadata.Media.Name), Data.Models.Metadata.Media.MD5Key, ])); } @@ -456,7 +456,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Rom.NameKey, + nameof(Data.Models.Metadata.Rom.Name), Data.Models.Metadata.Rom.MD5Key, ])); } @@ -481,7 +481,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Rom.NameKey, + nameof(Data.Models.Metadata.Rom.Name), Data.Models.Metadata.Rom.RIPEMD128Key, ])); } @@ -506,7 +506,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Rom.NameKey, + nameof(Data.Models.Metadata.Rom.Name), Data.Models.Metadata.Rom.RIPEMD160Key, ])); } @@ -533,7 +533,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Disk.NameKey, + nameof(Data.Models.Metadata.Disk.Name), Data.Models.Metadata.Disk.SHA1Key, ])); } @@ -548,7 +548,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Media.NameKey, + nameof(Data.Models.Metadata.Media.Name), Data.Models.Metadata.Media.SHA1Key, ])); } @@ -563,7 +563,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Rom.NameKey, + nameof(Data.Models.Metadata.Rom.Name), Data.Models.Metadata.Rom.SHA1Key, ])); } @@ -589,7 +589,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Media.NameKey, + nameof(Data.Models.Metadata.Media.Name), Data.Models.Metadata.Media.SHA256Key, ])); } @@ -604,7 +604,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Rom.NameKey, + nameof(Data.Models.Metadata.Rom.Name), Data.Models.Metadata.Rom.SHA256Key, ])); } @@ -629,7 +629,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Rom.NameKey, + nameof(Data.Models.Metadata.Rom.Name), Data.Models.Metadata.Rom.SHA384Key, ])); } @@ -654,7 +654,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Rom.NameKey, + nameof(Data.Models.Metadata.Rom.Name), Data.Models.Metadata.Rom.SHA512Key, ])); } @@ -680,7 +680,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Media.NameKey, + nameof(Data.Models.Metadata.Media.Name), Data.Models.Metadata.Media.SpamSumKey, ])); } @@ -695,7 +695,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Rom.NameKey, + nameof(Data.Models.Metadata.Rom.Name), Data.Models.Metadata.Rom.SpamSumKey, ])); } @@ -725,7 +725,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Disk.NameKey, + nameof(Data.Models.Metadata.Disk.Name), Data.Models.Metadata.Disk.SHA1Key, ])); } @@ -740,7 +740,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Rom.NameKey, + nameof(Data.Models.Metadata.Rom.Name), Data.Models.Metadata.Rom.SizeKey, Data.Models.Metadata.Rom.CRCKey, Data.Models.Metadata.Rom.SHA1Key, @@ -790,7 +790,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.BiosSet.NameKey, + nameof(Data.Models.Metadata.BiosSet.Name), Data.Models.Metadata.BiosSet.DescriptionKey, ])); } @@ -805,7 +805,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Rom.NameKey, + nameof(Data.Models.Metadata.Rom.Name), Data.Models.Metadata.Rom.SizeKey, Data.Models.Metadata.Rom.SHA1Key, ])); @@ -821,7 +821,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Disk.NameKey, + nameof(Data.Models.Metadata.Disk.Name), Data.Models.Metadata.Disk.SHA1Key, ])); } @@ -836,7 +836,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.DeviceRef.NameKey, + nameof(Data.Models.Metadata.DeviceRef.Name), ])); } @@ -850,7 +850,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Sample.NameKey, + nameof(Data.Models.Metadata.Sample.Name), ])); } @@ -864,7 +864,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Chip.NameKey, + nameof(Data.Models.Metadata.Chip.Name), Data.Models.Metadata.Chip.ChipTypeKey, ])); } @@ -922,7 +922,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.DipSwitch.NameKey, + nameof(Data.Models.Metadata.DipSwitch.Name), Data.Models.Metadata.DipSwitch.TagKey, ])); } @@ -937,7 +937,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Configuration.NameKey, + nameof(Data.Models.Metadata.Configuration.Name), Data.Models.Metadata.Configuration.TagKey, ])); } @@ -966,7 +966,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Adjuster.NameKey, + nameof(Data.Models.Metadata.Adjuster.Name), ])); } @@ -1025,7 +1025,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Slot.NameKey, + nameof(Data.Models.Metadata.Slot.Name), ])); } @@ -1040,7 +1040,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ Data.Models.Metadata.SoftwareList.TagKey, - Data.Models.Metadata.SoftwareList.NameKey, + nameof(Data.Models.Metadata.SoftwareList.Name), Data.Models.Metadata.SoftwareList.StatusKey, ])); } @@ -1055,7 +1055,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.RamOption.NameKey, + nameof(Data.Models.Metadata.RamOption.Name), ])); } @@ -1092,7 +1092,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Release.NameKey, + nameof(Data.Models.Metadata.Release.Name), Data.Models.Metadata.Release.RegionKey, ])); } @@ -1107,7 +1107,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.BiosSet.NameKey, + nameof(Data.Models.Metadata.BiosSet.Name), Data.Models.Metadata.BiosSet.DescriptionKey, ])); } @@ -1122,7 +1122,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Rom.NameKey, + nameof(Data.Models.Metadata.Rom.Name), Data.Models.Metadata.Rom.SizeKey, Data.Models.Metadata.Rom.SHA1Key, ])); @@ -1138,7 +1138,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Disk.NameKey, + nameof(Data.Models.Metadata.Disk.Name), Data.Models.Metadata.Disk.SHA1Key, ])); } @@ -1153,7 +1153,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Media.NameKey, + nameof(Data.Models.Metadata.Media.Name), Data.Models.Metadata.Media.SHA1Key, ])); } @@ -1168,7 +1168,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.DeviceRef.NameKey, + nameof(Data.Models.Metadata.DeviceRef.Name), ])); } @@ -1182,7 +1182,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Sample.NameKey, + nameof(Data.Models.Metadata.Sample.Name), ])); } @@ -1196,7 +1196,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Archive.NameKey, + nameof(Data.Models.Metadata.Archive.Name), ])); } @@ -1228,7 +1228,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ Data.Models.Metadata.SoftwareList.TagKey, - Data.Models.Metadata.SoftwareList.NameKey, + nameof(Data.Models.Metadata.SoftwareList.Name), Data.Models.Metadata.SoftwareList.StatusKey, ])); } @@ -1305,7 +1305,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Rom.NameKey, + nameof(Data.Models.Metadata.Rom.Name), Data.Models.Metadata.Rom.SHA1Key, ])); } @@ -1334,7 +1334,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Rom.NameKey, + nameof(Data.Models.Metadata.Rom.Name), Data.Models.Metadata.Rom.CRCKey, Data.Models.Metadata.Rom.SizeKey, ])); @@ -1390,7 +1390,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Disk.NameKey, + nameof(Data.Models.Metadata.Disk.Name), Data.Models.Metadata.Disk.SHA1Key, ])); } @@ -1405,7 +1405,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Media.NameKey, + nameof(Data.Models.Metadata.Media.Name), Data.Models.Metadata.Media.SHA1Key, ])); } @@ -1420,7 +1420,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Rom.NameKey, + nameof(Data.Models.Metadata.Rom.Name), Data.Models.Metadata.Rom.SizeKey, Data.Models.Metadata.Rom.SHA1Key, ])); @@ -1448,7 +1448,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Disk.NameKey, + nameof(Data.Models.Metadata.Disk.Name), Data.Models.Metadata.Disk.SHA1Key, ])); } @@ -1463,7 +1463,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Media.NameKey, + nameof(Data.Models.Metadata.Media.Name), Data.Models.Metadata.Media.SHA1Key, ])); } @@ -1478,7 +1478,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Rom.NameKey, + nameof(Data.Models.Metadata.Rom.Name), Data.Models.Metadata.Rom.SizeKey, Data.Models.Metadata.Rom.SHA1Key, ])); @@ -1506,7 +1506,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Disk.NameKey, + nameof(Data.Models.Metadata.Disk.Name), Data.Models.Metadata.Disk.SHA1Key, ])); } @@ -1521,7 +1521,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Media.NameKey, + nameof(Data.Models.Metadata.Media.Name), Data.Models.Metadata.Media.SHA1Key, ])); } @@ -1536,7 +1536,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Rom.NameKey, + nameof(Data.Models.Metadata.Rom.Name), Data.Models.Metadata.Rom.SizeKey, Data.Models.Metadata.Rom.SHA1Key, ])); @@ -1571,9 +1571,9 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Part.NameKey, + nameof(Data.Models.Metadata.Part.Name), Data.Models.Metadata.Part.InterfaceKey, - Data.Models.Metadata.DipSwitch.NameKey, + nameof(Data.Models.Metadata.DipSwitch.Name), Data.Models.Metadata.DipSwitch.TagKey, Data.Models.Metadata.DipSwitch.MaskKey, ])); @@ -1589,10 +1589,10 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Part.NameKey, + nameof(Data.Models.Metadata.Part.Name), Data.Models.Metadata.Part.InterfaceKey, - Data.Models.Metadata.DiskArea.NameKey, - Data.Models.Metadata.Disk.NameKey, + nameof(Data.Models.Metadata.DiskArea.Name), + nameof(Data.Models.Metadata.Disk.Name), ])); } @@ -1606,7 +1606,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Info.NameKey, + nameof(Data.Models.Metadata.Info.Name), ])); } @@ -1620,9 +1620,9 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Part.NameKey, + nameof(Data.Models.Metadata.Part.Name), Data.Models.Metadata.Part.InterfaceKey, - Data.Models.Metadata.DataArea.NameKey, + nameof(Data.Models.Metadata.DataArea.Name), Data.Models.Metadata.DataArea.SizeKey, ])); } @@ -1637,7 +1637,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.SharedFeat.NameKey, + nameof(Data.Models.Metadata.SharedFeat.Name), ])); } diff --git a/SabreTools.Metadata.DatFiles/Formats/AttractMode.cs b/SabreTools.Metadata.DatFiles/Formats/AttractMode.cs index 68f24059..8861f40f 100644 --- a/SabreTools.Metadata.DatFiles/Formats/AttractMode.cs +++ b/SabreTools.Metadata.DatFiles/Formats/AttractMode.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using SabreTools.Metadata.DatItems; namespace SabreTools.Metadata.DatFiles.Formats @@ -30,7 +30,7 @@ namespace SabreTools.Metadata.DatFiles.Formats // Check item name if (string.IsNullOrEmpty(datItem.GetName())) - missingFields.Add(Data.Models.Metadata.Rom.NameKey); + missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); return missingFields; } diff --git a/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs b/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs index 7ecd1379..7c644f29 100644 --- a/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs +++ b/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs @@ -76,21 +76,21 @@ namespace SabreTools.Metadata.DatFiles.Formats { case Release release: if (string.IsNullOrEmpty(release.GetName())) - missingFields.Add(Data.Models.Metadata.Release.NameKey); + missingFields.Add(nameof(Data.Models.Metadata.Release.Name)); if (string.IsNullOrEmpty(release.ReadString(Data.Models.Metadata.Release.RegionKey))) missingFields.Add(Data.Models.Metadata.Release.RegionKey); break; case BiosSet biosset: if (string.IsNullOrEmpty(biosset.GetName())) - missingFields.Add(Data.Models.Metadata.BiosSet.NameKey); + missingFields.Add(nameof(Data.Models.Metadata.BiosSet.Name)); if (string.IsNullOrEmpty(biosset.ReadString(Data.Models.Metadata.BiosSet.DescriptionKey))) missingFields.Add(Data.Models.Metadata.BiosSet.DescriptionKey); break; case Rom rom: if (string.IsNullOrEmpty(rom.GetName())) - missingFields.Add(Data.Models.Metadata.Rom.NameKey); + missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); if (rom.ReadLong(Data.Models.Metadata.Rom.SizeKey) is null || rom.ReadLong(Data.Models.Metadata.Rom.SizeKey) < 0) missingFields.Add(Data.Models.Metadata.Rom.SizeKey); if (string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.CRC16Key)) @@ -114,7 +114,7 @@ namespace SabreTools.Metadata.DatFiles.Formats case Disk disk: if (string.IsNullOrEmpty(disk.GetName())) - missingFields.Add(Data.Models.Metadata.Disk.NameKey); + missingFields.Add(nameof(Data.Models.Metadata.Disk.Name)); if (string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key)) && string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.SHA1Key))) { @@ -125,19 +125,19 @@ namespace SabreTools.Metadata.DatFiles.Formats case Sample sample: if (string.IsNullOrEmpty(sample.GetName())) - missingFields.Add(Data.Models.Metadata.Sample.NameKey); + missingFields.Add(nameof(Data.Models.Metadata.Sample.Name)); break; case Archive archive: if (string.IsNullOrEmpty(archive.GetName())) - missingFields.Add(Data.Models.Metadata.Archive.NameKey); + missingFields.Add(nameof(Data.Models.Metadata.Archive.Name)); break; case Chip chip: if (chip.ReadString(Data.Models.Metadata.Chip.ChipTypeKey).AsChipType() is null) missingFields.Add(Data.Models.Metadata.Chip.ChipTypeKey); if (string.IsNullOrEmpty(chip.GetName())) - missingFields.Add(Data.Models.Metadata.Chip.NameKey); + missingFields.Add(nameof(Data.Models.Metadata.Chip.Name)); break; case Display display: @@ -161,7 +161,7 @@ namespace SabreTools.Metadata.DatFiles.Formats case DipSwitch dipswitch: if (string.IsNullOrEmpty(dipswitch.GetName())) - missingFields.Add(Data.Models.Metadata.DipSwitch.NameKey); + missingFields.Add(nameof(Data.Models.Metadata.DipSwitch.Name)); break; case Driver driver: diff --git a/SabreTools.Metadata.DatFiles/Formats/DosCenter.cs b/SabreTools.Metadata.DatFiles/Formats/DosCenter.cs index f008a551..3a37381c 100644 --- a/SabreTools.Metadata.DatFiles/Formats/DosCenter.cs +++ b/SabreTools.Metadata.DatFiles/Formats/DosCenter.cs @@ -31,7 +31,7 @@ namespace SabreTools.Metadata.DatFiles.Formats // Check item name if (string.IsNullOrEmpty(datItem.GetName())) - missingFields.Add(Data.Models.Metadata.Rom.NameKey); + missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); switch (datItem) { diff --git a/SabreTools.Metadata.DatFiles/Formats/EverdriveSmdb.cs b/SabreTools.Metadata.DatFiles/Formats/EverdriveSmdb.cs index 03f88f7a..f6efbec2 100644 --- a/SabreTools.Metadata.DatFiles/Formats/EverdriveSmdb.cs +++ b/SabreTools.Metadata.DatFiles/Formats/EverdriveSmdb.cs @@ -31,7 +31,7 @@ namespace SabreTools.Metadata.DatFiles.Formats // Check item name if (string.IsNullOrEmpty(datItem.GetName())) - missingFields.Add(Data.Models.Metadata.Rom.NameKey); + missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); switch (datItem) { diff --git a/SabreTools.Metadata.DatFiles/Formats/Listrom.cs b/SabreTools.Metadata.DatFiles/Formats/Listrom.cs index 234f9723..bfba39fa 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Listrom.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Listrom.cs @@ -32,7 +32,7 @@ namespace SabreTools.Metadata.DatFiles.Formats // Check item name if (string.IsNullOrEmpty(datItem.GetName())) - missingFields.Add(Data.Models.Metadata.Rom.NameKey); + missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); switch (datItem) { diff --git a/SabreTools.Metadata.DatFiles/Formats/Listxml.cs b/SabreTools.Metadata.DatFiles/Formats/Listxml.cs index da230117..76b6a78b 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Listxml.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Listxml.cs @@ -262,14 +262,14 @@ namespace SabreTools.Metadata.DatFiles.Formats { case BiosSet biosset: if (string.IsNullOrEmpty(biosset.GetName())) - missingFields.Add(Data.Models.Metadata.BiosSet.NameKey); + missingFields.Add(nameof(Data.Models.Metadata.BiosSet.Name)); if (string.IsNullOrEmpty(biosset.ReadString(Data.Models.Metadata.BiosSet.DescriptionKey))) missingFields.Add(Data.Models.Metadata.BiosSet.DescriptionKey); break; case Rom rom: if (string.IsNullOrEmpty(rom.GetName())) - missingFields.Add(Data.Models.Metadata.Rom.NameKey); + missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); if (rom.ReadLong(Data.Models.Metadata.Rom.SizeKey) is null || rom.ReadLong(Data.Models.Metadata.Rom.SizeKey) < 0) missingFields.Add(Data.Models.Metadata.Rom.SizeKey); if (string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.CRCKey)) @@ -282,7 +282,7 @@ namespace SabreTools.Metadata.DatFiles.Formats case Disk disk: if (string.IsNullOrEmpty(disk.GetName())) - missingFields.Add(Data.Models.Metadata.Disk.NameKey); + missingFields.Add(nameof(Data.Models.Metadata.Disk.Name)); if (string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key)) && string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.SHA1Key))) { @@ -293,17 +293,17 @@ namespace SabreTools.Metadata.DatFiles.Formats case DeviceRef deviceref: if (string.IsNullOrEmpty(deviceref.GetName())) - missingFields.Add(Data.Models.Metadata.DeviceRef.NameKey); + missingFields.Add(nameof(Data.Models.Metadata.DeviceRef.Name)); break; case Sample sample: if (string.IsNullOrEmpty(sample.GetName())) - missingFields.Add(Data.Models.Metadata.Sample.NameKey); + missingFields.Add(nameof(Data.Models.Metadata.Sample.Name)); break; case Chip chip: if (string.IsNullOrEmpty(chip.GetName())) - missingFields.Add(Data.Models.Metadata.Chip.NameKey); + missingFields.Add(nameof(Data.Models.Metadata.Chip.Name)); if (chip.ReadString(Data.Models.Metadata.Chip.ChipTypeKey).AsChipType() is null) missingFields.Add(Data.Models.Metadata.Chip.ChipTypeKey); break; @@ -327,14 +327,14 @@ namespace SabreTools.Metadata.DatFiles.Formats case DipSwitch dipswitch: if (string.IsNullOrEmpty(dipswitch.GetName())) - missingFields.Add(Data.Models.Metadata.DipSwitch.NameKey); + missingFields.Add(nameof(Data.Models.Metadata.DipSwitch.Name)); if (string.IsNullOrEmpty(dipswitch.ReadString(Data.Models.Metadata.DipSwitch.TagKey))) missingFields.Add(Data.Models.Metadata.DipSwitch.TagKey); break; case Configuration configuration: if (string.IsNullOrEmpty(configuration.GetName())) - missingFields.Add(Data.Models.Metadata.Configuration.NameKey); + missingFields.Add(nameof(Data.Models.Metadata.Configuration.Name)); if (string.IsNullOrEmpty(configuration.ReadString(Data.Models.Metadata.Configuration.TagKey))) missingFields.Add(Data.Models.Metadata.Configuration.TagKey); break; @@ -346,7 +346,7 @@ namespace SabreTools.Metadata.DatFiles.Formats case Adjuster adjuster: if (string.IsNullOrEmpty(adjuster.GetName())) - missingFields.Add(Data.Models.Metadata.Adjuster.NameKey); + missingFields.Add(nameof(Data.Models.Metadata.Adjuster.Name)); break; case Driver driver: @@ -372,21 +372,21 @@ namespace SabreTools.Metadata.DatFiles.Formats case Slot slot: if (string.IsNullOrEmpty(slot.GetName())) - missingFields.Add(Data.Models.Metadata.Slot.NameKey); + missingFields.Add(nameof(Data.Models.Metadata.Slot.Name)); break; case DatItems.Formats.SoftwareList softwarelist: if (string.IsNullOrEmpty(softwarelist.ReadString(Data.Models.Metadata.SoftwareList.TagKey))) missingFields.Add(Data.Models.Metadata.SoftwareList.TagKey); if (string.IsNullOrEmpty(softwarelist.GetName())) - missingFields.Add(Data.Models.Metadata.SoftwareList.NameKey); + missingFields.Add(nameof(Data.Models.Metadata.SoftwareList.Name)); if (softwarelist.ReadString(Data.Models.Metadata.SoftwareList.StatusKey).AsSoftwareListStatus() == null) missingFields.Add(Data.Models.Metadata.SoftwareList.StatusKey); break; case RamOption ramoption: if (string.IsNullOrEmpty(ramoption.GetName())) - missingFields.Add(Data.Models.Metadata.RamOption.NameKey); + missingFields.Add(nameof(Data.Models.Metadata.RamOption.Name)); break; default: diff --git a/SabreTools.Metadata.DatFiles/Formats/Logiqx.cs b/SabreTools.Metadata.DatFiles/Formats/Logiqx.cs index 59113dbe..48c8b7f5 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Logiqx.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Logiqx.cs @@ -268,21 +268,21 @@ namespace SabreTools.Metadata.DatFiles.Formats { case Release release: if (string.IsNullOrEmpty(release.GetName())) - missingFields.Add(Data.Models.Metadata.Release.NameKey); + missingFields.Add(nameof(Data.Models.Metadata.Release.Name)); if (string.IsNullOrEmpty(release.ReadString(Data.Models.Metadata.Release.RegionKey))) missingFields.Add(Data.Models.Metadata.Release.RegionKey); break; case BiosSet biosset: if (string.IsNullOrEmpty(biosset.GetName())) - missingFields.Add(Data.Models.Metadata.BiosSet.NameKey); + missingFields.Add(nameof(Data.Models.Metadata.BiosSet.Name)); if (string.IsNullOrEmpty(biosset.ReadString(Data.Models.Metadata.BiosSet.DescriptionKey))) missingFields.Add(Data.Models.Metadata.BiosSet.DescriptionKey); break; case Rom rom: if (string.IsNullOrEmpty(rom.GetName())) - missingFields.Add(Data.Models.Metadata.Rom.NameKey); + missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); if (rom.ReadLong(Data.Models.Metadata.Rom.SizeKey) is null || rom.ReadLong(Data.Models.Metadata.Rom.SizeKey) < 0) missingFields.Add(Data.Models.Metadata.Rom.SizeKey); if (string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.CRC16Key)) @@ -306,7 +306,7 @@ namespace SabreTools.Metadata.DatFiles.Formats case Disk disk: if (string.IsNullOrEmpty(disk.GetName())) - missingFields.Add(Data.Models.Metadata.Disk.NameKey); + missingFields.Add(nameof(Data.Models.Metadata.Disk.Name)); if (string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key)) && string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.SHA1Key))) { @@ -317,7 +317,7 @@ namespace SabreTools.Metadata.DatFiles.Formats case Media media: if (string.IsNullOrEmpty(media.GetName())) - missingFields.Add(Data.Models.Metadata.Media.NameKey); + missingFields.Add(nameof(Data.Models.Metadata.Media.Name)); if (string.IsNullOrEmpty(media.ReadString(Data.Models.Metadata.Media.MD5Key)) && string.IsNullOrEmpty(media.ReadString(Data.Models.Metadata.Media.SHA1Key)) && string.IsNullOrEmpty(media.ReadString(Data.Models.Metadata.Media.SHA256Key)) @@ -330,17 +330,17 @@ namespace SabreTools.Metadata.DatFiles.Formats case DeviceRef deviceref: if (string.IsNullOrEmpty(deviceref.GetName())) - missingFields.Add(Data.Models.Metadata.DeviceRef.NameKey); + missingFields.Add(nameof(Data.Models.Metadata.DeviceRef.Name)); break; case Sample sample: if (string.IsNullOrEmpty(sample.GetName())) - missingFields.Add(Data.Models.Metadata.Sample.NameKey); + missingFields.Add(nameof(Data.Models.Metadata.Sample.Name)); break; case Archive archive: if (string.IsNullOrEmpty(archive.GetName())) - missingFields.Add(Data.Models.Metadata.Archive.NameKey); + missingFields.Add(nameof(Data.Models.Metadata.Archive.Name)); break; case Driver driver: @@ -358,7 +358,7 @@ namespace SabreTools.Metadata.DatFiles.Formats if (string.IsNullOrEmpty(softwarelist.ReadString(Data.Models.Metadata.SoftwareList.TagKey))) missingFields.Add(Data.Models.Metadata.SoftwareList.TagKey); if (string.IsNullOrEmpty(softwarelist.GetName())) - missingFields.Add(Data.Models.Metadata.SoftwareList.NameKey); + missingFields.Add(nameof(Data.Models.Metadata.SoftwareList.Name)); if (softwarelist.ReadString(Data.Models.Metadata.SoftwareList.StatusKey).AsSoftwareListStatus() == null) missingFields.Add(Data.Models.Metadata.SoftwareList.StatusKey); break; diff --git a/SabreTools.Metadata.DatFiles/Formats/Md2File.cs b/SabreTools.Metadata.DatFiles/Formats/Md2File.cs index 2ac078f0..10c5d283 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Md2File.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Md2File.cs @@ -33,7 +33,7 @@ namespace SabreTools.Metadata.DatFiles.Formats // Check item name if (string.IsNullOrEmpty(datItem.GetName())) - missingFields.Add(Data.Models.Metadata.Rom.NameKey); + missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); switch (datItem) { diff --git a/SabreTools.Metadata.DatFiles/Formats/Md4File.cs b/SabreTools.Metadata.DatFiles/Formats/Md4File.cs index 344bab1b..3365a09f 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Md4File.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Md4File.cs @@ -33,7 +33,7 @@ namespace SabreTools.Metadata.DatFiles.Formats // Check item name if (string.IsNullOrEmpty(datItem.GetName())) - missingFields.Add(Data.Models.Metadata.Rom.NameKey); + missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); switch (datItem) { diff --git a/SabreTools.Metadata.DatFiles/Formats/Md5File.cs b/SabreTools.Metadata.DatFiles/Formats/Md5File.cs index 81a9e1b5..c72f9502 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Md5File.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Md5File.cs @@ -35,7 +35,7 @@ namespace SabreTools.Metadata.DatFiles.Formats // Check item name if (string.IsNullOrEmpty(datItem.GetName())) - missingFields.Add(Data.Models.Metadata.Rom.NameKey); + missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); switch (datItem) { diff --git a/SabreTools.Metadata.DatFiles/Formats/OpenMSX.cs b/SabreTools.Metadata.DatFiles/Formats/OpenMSX.cs index cc0ed775..c062b863 100644 --- a/SabreTools.Metadata.DatFiles/Formats/OpenMSX.cs +++ b/SabreTools.Metadata.DatFiles/Formats/OpenMSX.cs @@ -70,7 +70,7 @@ The softwaredb.xml file contains information about rom mapper types // Check item name if (string.IsNullOrEmpty(datItem.GetName())) - missingFields.Add(Data.Models.Metadata.Rom.NameKey); + missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); switch (datItem) { diff --git a/SabreTools.Metadata.DatFiles/Formats/RipeMD128File.cs b/SabreTools.Metadata.DatFiles/Formats/RipeMD128File.cs index 3eaa2ac0..4cadad6d 100644 --- a/SabreTools.Metadata.DatFiles/Formats/RipeMD128File.cs +++ b/SabreTools.Metadata.DatFiles/Formats/RipeMD128File.cs @@ -33,7 +33,7 @@ namespace SabreTools.Metadata.DatFiles.Formats // Check item name if (string.IsNullOrEmpty(datItem.GetName())) - missingFields.Add(Data.Models.Metadata.Rom.NameKey); + missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); switch (datItem) { diff --git a/SabreTools.Metadata.DatFiles/Formats/RipeMD160File.cs b/SabreTools.Metadata.DatFiles/Formats/RipeMD160File.cs index 44dcdf7a..641ad2b2 100644 --- a/SabreTools.Metadata.DatFiles/Formats/RipeMD160File.cs +++ b/SabreTools.Metadata.DatFiles/Formats/RipeMD160File.cs @@ -33,7 +33,7 @@ namespace SabreTools.Metadata.DatFiles.Formats // Check item name if (string.IsNullOrEmpty(datItem.GetName())) - missingFields.Add(Data.Models.Metadata.Rom.NameKey); + missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); switch (datItem) { diff --git a/SabreTools.Metadata.DatFiles/Formats/RomCenter.cs b/SabreTools.Metadata.DatFiles/Formats/RomCenter.cs index 06da3fb8..926b409f 100644 --- a/SabreTools.Metadata.DatFiles/Formats/RomCenter.cs +++ b/SabreTools.Metadata.DatFiles/Formats/RomCenter.cs @@ -31,7 +31,7 @@ namespace SabreTools.Metadata.DatFiles.Formats // Check item name if (string.IsNullOrEmpty(datItem.GetName())) - missingFields.Add(Data.Models.Metadata.Rom.NameKey); + missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); switch (datItem) { diff --git a/SabreTools.Metadata.DatFiles/Formats/SeparatedValue.cs b/SabreTools.Metadata.DatFiles/Formats/SeparatedValue.cs index 86ccd46a..4345d918 100644 --- a/SabreTools.Metadata.DatFiles/Formats/SeparatedValue.cs +++ b/SabreTools.Metadata.DatFiles/Formats/SeparatedValue.cs @@ -68,7 +68,7 @@ namespace SabreTools.Metadata.DatFiles.Formats // Check item name if (string.IsNullOrEmpty(datItem.GetName())) - missingFields.Add(Data.Models.Metadata.Rom.NameKey); + missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); switch (datItem) { diff --git a/SabreTools.Metadata.DatFiles/Formats/SfvFile.cs b/SabreTools.Metadata.DatFiles/Formats/SfvFile.cs index 9a16b416..c2c7f122 100644 --- a/SabreTools.Metadata.DatFiles/Formats/SfvFile.cs +++ b/SabreTools.Metadata.DatFiles/Formats/SfvFile.cs @@ -33,7 +33,7 @@ namespace SabreTools.Metadata.DatFiles.Formats // Check item name if (string.IsNullOrEmpty(datItem.GetName())) - missingFields.Add(Data.Models.Metadata.Rom.NameKey); + missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); switch (datItem) { diff --git a/SabreTools.Metadata.DatFiles/Formats/Sha1File.cs b/SabreTools.Metadata.DatFiles/Formats/Sha1File.cs index 00891709..f1fe3be2 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Sha1File.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Sha1File.cs @@ -35,7 +35,7 @@ namespace SabreTools.Metadata.DatFiles.Formats // Check item name if (string.IsNullOrEmpty(datItem.GetName())) - missingFields.Add(Data.Models.Metadata.Rom.NameKey); + missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); switch (datItem) { diff --git a/SabreTools.Metadata.DatFiles/Formats/Sha256File.cs b/SabreTools.Metadata.DatFiles/Formats/Sha256File.cs index a0d90e3a..67bb2468 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Sha256File.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Sha256File.cs @@ -34,7 +34,7 @@ namespace SabreTools.Metadata.DatFiles.Formats // Check item name if (string.IsNullOrEmpty(datItem.GetName())) - missingFields.Add(Data.Models.Metadata.Rom.NameKey); + missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); switch (datItem) { diff --git a/SabreTools.Metadata.DatFiles/Formats/Sha384File.cs b/SabreTools.Metadata.DatFiles/Formats/Sha384File.cs index 1b165af9..9471cdb2 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Sha384File.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Sha384File.cs @@ -33,7 +33,7 @@ namespace SabreTools.Metadata.DatFiles.Formats // Check item name if (string.IsNullOrEmpty(datItem.GetName())) - missingFields.Add(Data.Models.Metadata.Rom.NameKey); + missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); switch (datItem) { diff --git a/SabreTools.Metadata.DatFiles/Formats/Sha512File.cs b/SabreTools.Metadata.DatFiles/Formats/Sha512File.cs index 0428d0d2..cb0fdc92 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Sha512File.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Sha512File.cs @@ -33,7 +33,7 @@ namespace SabreTools.Metadata.DatFiles.Formats // Check item name if (string.IsNullOrEmpty(datItem.GetName())) - missingFields.Add(Data.Models.Metadata.Rom.NameKey); + missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); switch (datItem) { diff --git a/SabreTools.Metadata.DatFiles/Formats/SoftwareList.cs b/SabreTools.Metadata.DatFiles/Formats/SoftwareList.cs index 66db7703..c7488661 100644 --- a/SabreTools.Metadata.DatFiles/Formats/SoftwareList.cs +++ b/SabreTools.Metadata.DatFiles/Formats/SoftwareList.cs @@ -109,19 +109,19 @@ namespace SabreTools.Metadata.DatFiles.Formats case DipSwitch dipSwitch: if (!dipSwitch.PartSpecified) { - missingFields.Add(Data.Models.Metadata.Part.NameKey); + missingFields.Add(nameof(Data.Models.Metadata.Part.Name)); missingFields.Add(Data.Models.Metadata.Part.InterfaceKey); } else { if (string.IsNullOrEmpty(dipSwitch.Read(DipSwitch.PartKey)!.GetName())) - missingFields.Add(Data.Models.Metadata.Part.NameKey); + missingFields.Add(nameof(Data.Models.Metadata.Part.Name)); if (string.IsNullOrEmpty(dipSwitch.Read(DipSwitch.PartKey)!.ReadString(Data.Models.Metadata.Part.InterfaceKey))) missingFields.Add(Data.Models.Metadata.Part.InterfaceKey); } if (string.IsNullOrEmpty(dipSwitch.GetName())) - missingFields.Add(Data.Models.Metadata.DipSwitch.NameKey); + missingFields.Add(nameof(Data.Models.Metadata.DipSwitch.Name)); if (string.IsNullOrEmpty(dipSwitch.ReadString(Data.Models.Metadata.DipSwitch.TagKey))) missingFields.Add(Data.Models.Metadata.DipSwitch.TagKey); if (string.IsNullOrEmpty(dipSwitch.ReadString(Data.Models.Metadata.DipSwitch.MaskKey))) @@ -130,7 +130,7 @@ namespace SabreTools.Metadata.DatFiles.Formats { var dipValues = dipSwitch.Read(Data.Models.Metadata.DipSwitch.DipValueKey); if (Array.Find(dipValues!, dv => string.IsNullOrEmpty(dv.GetName())) is not null) - missingFields.Add(Data.Models.Metadata.DipValue.NameKey); + missingFields.Add(nameof(Data.Models.Metadata.DipValue.Name)); if (Array.Find(dipValues!, dv => string.IsNullOrEmpty(dv.ReadString(Data.Models.Metadata.DipValue.ValueKey))) is not null) missingFields.Add(Data.Models.Metadata.DipValue.ValueKey); } @@ -140,59 +140,59 @@ namespace SabreTools.Metadata.DatFiles.Formats case Disk disk: if (!disk.PartSpecified) { - missingFields.Add(Data.Models.Metadata.Part.NameKey); + missingFields.Add(nameof(Data.Models.Metadata.Part.Name)); missingFields.Add(Data.Models.Metadata.Part.InterfaceKey); } else { if (string.IsNullOrEmpty(disk.Read(Disk.PartKey)!.GetName())) - missingFields.Add(Data.Models.Metadata.Part.NameKey); + missingFields.Add(nameof(Data.Models.Metadata.Part.Name)); if (string.IsNullOrEmpty(disk.Read(Disk.PartKey)!.ReadString(Data.Models.Metadata.Part.InterfaceKey))) missingFields.Add(Data.Models.Metadata.Part.InterfaceKey); } if (!disk.DiskAreaSpecified) { - missingFields.Add(Data.Models.Metadata.DiskArea.NameKey); + missingFields.Add(nameof(Data.Models.Metadata.DiskArea.Name)); } else { if (string.IsNullOrEmpty(disk.Read(Disk.DiskAreaKey)!.GetName())) - missingFields.Add(Data.Models.Metadata.DiskArea.NameKey); + missingFields.Add(nameof(Data.Models.Metadata.DiskArea.Name)); } if (string.IsNullOrEmpty(disk.GetName())) - missingFields.Add(Data.Models.Metadata.Disk.NameKey); + missingFields.Add(nameof(Data.Models.Metadata.Disk.Name)); break; case Info info: if (string.IsNullOrEmpty(info.GetName())) - missingFields.Add(Data.Models.Metadata.Info.NameKey); + missingFields.Add(nameof(Data.Models.Metadata.Info.Name)); break; case Rom rom: if (!rom.PartSpecified) { - missingFields.Add(Data.Models.Metadata.Part.NameKey); + missingFields.Add(nameof(Data.Models.Metadata.Part.Name)); missingFields.Add(Data.Models.Metadata.Part.InterfaceKey); } else { if (string.IsNullOrEmpty(rom.Read(Rom.PartKey)!.GetName())) - missingFields.Add(Data.Models.Metadata.Part.NameKey); + missingFields.Add(nameof(Data.Models.Metadata.Part.Name)); if (string.IsNullOrEmpty(rom.Read(Rom.PartKey)!.ReadString(Data.Models.Metadata.Part.InterfaceKey))) missingFields.Add(Data.Models.Metadata.Part.InterfaceKey); } if (!rom.DataAreaSpecified) { - missingFields.Add(Data.Models.Metadata.DataArea.NameKey); + missingFields.Add(nameof(Data.Models.Metadata.DataArea.Name)); missingFields.Add(Data.Models.Metadata.DataArea.SizeKey); } else { if (string.IsNullOrEmpty(rom.Read(Rom.DataAreaKey)!.GetName())) - missingFields.Add(Data.Models.Metadata.DataArea.NameKey); + missingFields.Add(nameof(Data.Models.Metadata.DataArea.Name)); if (rom.Read(Rom.DataAreaKey)!.ReadLong(Data.Models.Metadata.DataArea.SizeKey) is null) missingFields.Add(Data.Models.Metadata.DataArea.SizeKey); } @@ -201,7 +201,7 @@ namespace SabreTools.Metadata.DatFiles.Formats case SharedFeat sharedFeat: if (string.IsNullOrEmpty(sharedFeat.GetName())) - missingFields.Add(Data.Models.Metadata.SharedFeat.NameKey); + missingFields.Add(nameof(Data.Models.Metadata.SharedFeat.Name)); break; default: diff --git a/SabreTools.Metadata.DatFiles/Formats/SpamSumFile.cs b/SabreTools.Metadata.DatFiles/Formats/SpamSumFile.cs index 1ead5e31..b418d944 100644 --- a/SabreTools.Metadata.DatFiles/Formats/SpamSumFile.cs +++ b/SabreTools.Metadata.DatFiles/Formats/SpamSumFile.cs @@ -34,7 +34,7 @@ namespace SabreTools.Metadata.DatFiles.Formats // Check item name if (string.IsNullOrEmpty(datItem.GetName())) - missingFields.Add(Data.Models.Metadata.Rom.NameKey); + missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); switch (datItem) { diff --git a/SabreTools.Metadata.Filter/FilterKey.cs b/SabreTools.Metadata.Filter/FilterKey.cs index 8419635b..887e5944 100644 --- a/SabreTools.Metadata.Filter/FilterKey.cs +++ b/SabreTools.Metadata.Filter/FilterKey.cs @@ -106,6 +106,14 @@ namespace SabreTools.Metadata.Filter if (constants is null) return false; + // Special cases + if (fieldName.Equals("name", StringComparison.OrdinalIgnoreCase)) + { + itemName = MetadataFile.HeaderKey; + fieldName = "name"; + return true; + } + // Get if there's a match to the constant string localFieldName = fieldName; string? constantMatch = Array.Find(constants, c => string.Equals(c, localFieldName, StringComparison.OrdinalIgnoreCase)); @@ -128,6 +136,14 @@ namespace SabreTools.Metadata.Filter if (constants is null) return false; + // Special cases + if (fieldName.Equals("name", StringComparison.OrdinalIgnoreCase)) + { + itemName = MetadataFile.MachineKey; + fieldName = "name"; + return true; + } + // Get if there's a match to the constant string localFieldName = fieldName; string? constantMatch = Array.Find(constants, c => string.Equals(c, localFieldName, StringComparison.OrdinalIgnoreCase)); @@ -149,6 +165,14 @@ namespace SabreTools.Metadata.Filter if (string.Equals(itemName, "datitem", StringComparison.OrdinalIgnoreCase) || string.Equals(itemName, "item", StringComparison.OrdinalIgnoreCase)) { + // Special cases + if (fieldName.Equals("name", StringComparison.OrdinalIgnoreCase)) + { + itemName = "item"; + fieldName = "name"; + return true; + } + // Get all item types var itemTypes = TypeHelper.GetDatItemTypeNames(); @@ -204,6 +228,10 @@ namespace SabreTools.Metadata.Filter if (constants is null) return null; + // Special cases + if (fieldName.Equals("name", StringComparison.OrdinalIgnoreCase)) + return "name"; + // Get if there's a match to the constant string localFieldName = fieldName; string? constantMatch = Array.Find(constants, c => string.Equals(c, localFieldName, StringComparison.OrdinalIgnoreCase)); From 88d182cfd15c586975134103cd205e4e46fbd725 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Wed, 1 Apr 2026 14:24:43 -0400 Subject: [PATCH 005/142] The map is curiously BLANK --- SabreTools.Metadata.DatItems/Formats/Blank.cs | 81 +++---------------- 1 file changed, 12 insertions(+), 69 deletions(-) diff --git a/SabreTools.Metadata.DatItems/Formats/Blank.cs b/SabreTools.Metadata.DatItems/Formats/Blank.cs index e00521e7..abc7f6b7 100644 --- a/SabreTools.Metadata.DatItems/Formats/Blank.cs +++ b/SabreTools.Metadata.DatItems/Formats/Blank.cs @@ -1,5 +1,6 @@ using System.Xml.Serialization; using Newtonsoft.Json; +using SabreTools.Data.Extensions; namespace SabreTools.Metadata.DatItems.Formats { @@ -7,84 +8,26 @@ namespace SabreTools.Metadata.DatItems.Formats /// Represents a blank set from an input DAT /// [JsonObject("blank"), XmlRoot("blank")] - public sealed class Blank : DatItem + public sealed class Blank : DatItem { - #region Fields - - /// /> - public override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Blank; - - #endregion - #region Constructors - /// - /// Create a default, empty Blank object - /// - public Blank() { } + public Blank() : base() { } + + public Blank(Data.Models.Metadata.Blank item) : base(item) { } + + public Blank(Data.Models.Metadata.Blank item, Machine machine, Source source) : this(item) + { + Write(SourceKey, source); + CopyMachineInformation(machine); + } #endregion #region Cloning Methods /// - public override object Clone() - { - var blank = new Blank(); - blank.Write(MachineKey, GetMachine()); - blank.Write(RemoveKey, ReadBool(RemoveKey)); - blank.Write(SourceKey, Read(SourceKey)); - - return blank; - } - - #endregion - - #region Comparision Methods - - /// - public override bool Equals(ModelBackedItem? other) - { - // If other is null - if (other is null) - return false; - - // If the type is mismatched - if (other is not DatItem otherItem) - return false; - - // Compare internal models - return Equals(otherItem); - } - - /// - public override bool Equals(ModelBackedItem? other) - { - // If other is null - if (other is null) - return false; - - // If the type is mismatched - if (other is not DatItem otherItem) - return false; - - // Compare internal models - return Equals(otherItem); - } - - /// - public override bool Equals(DatItem? other) - { - // If we don't have a blank, return false - if (ItemType != other?.ItemType) - return false; - - // Otherwise, treat it as a Blank - Blank? newOther = other as Blank; - - // If the machine information matches - return GetMachine() == newOther!.GetMachine(); - } + public override object Clone() => new Blank(_internal.Clone() as Data.Models.Metadata.Blank ?? []); #endregion } From dfa39947ce3ad4c5ad0f8585bf13111cb28f4361 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Wed, 1 Apr 2026 15:40:04 -0400 Subject: [PATCH 006/142] Add GetProperties helper method and use it --- SabreTools.Metadata.Filter/FilterKey.cs | 122 ++++++++++++++---------- SabreTools.Metadata/TypeHelper.cs | 16 ++++ 2 files changed, 87 insertions(+), 51 deletions(-) diff --git a/SabreTools.Metadata.Filter/FilterKey.cs b/SabreTools.Metadata.Filter/FilterKey.cs index 887e5944..25555ac3 100644 --- a/SabreTools.Metadata.Filter/FilterKey.cs +++ b/SabreTools.Metadata.Filter/FilterKey.cs @@ -103,27 +103,37 @@ namespace SabreTools.Metadata.Filter { // Get the set of constants var constants = TypeHelper.GetConstants(typeof(Header)); - if (constants is null) - return false; - - // Special cases - if (fieldName.Equals("name", StringComparison.OrdinalIgnoreCase)) + if (constants is not null) { - itemName = MetadataFile.HeaderKey; - fieldName = "name"; - return true; + // Get if there's a match to a constant + string localFieldName = fieldName; + string? constantMatch = Array.Find(constants, c => string.Equals(c, localFieldName, StringComparison.OrdinalIgnoreCase)); + if (constantMatch is not null) + { + // Return the sanitized ID + itemName = MetadataFile.HeaderKey; + fieldName = constantMatch; + return true; + } } - // Get if there's a match to the constant - string localFieldName = fieldName; - string? constantMatch = Array.Find(constants, c => string.Equals(c, localFieldName, StringComparison.OrdinalIgnoreCase)); - if (constantMatch is null) - return false; + // Get the set of properties + var properties = TypeHelper.GetProperties(typeof(Header)); + if (properties is not null) + { + // Get if there's a match to a property + string localFieldName = fieldName; + string? propertyMatch = Array.Find(properties, c => string.Equals(c, localFieldName, StringComparison.OrdinalIgnoreCase)); + if (propertyMatch is not null) + { + // Return the sanitized ID + itemName = MetadataFile.HeaderKey; + fieldName = propertyMatch.ToLowerInvariant(); + return true; + } + } - // Return the sanitized ID - itemName = MetadataFile.HeaderKey; - fieldName = constantMatch; - return true; + return false; } /// @@ -133,27 +143,37 @@ namespace SabreTools.Metadata.Filter { // Get the set of constants var constants = TypeHelper.GetConstants(typeof(Machine)); - if (constants is null) - return false; - - // Special cases - if (fieldName.Equals("name", StringComparison.OrdinalIgnoreCase)) + if (constants is not null) { - itemName = MetadataFile.MachineKey; - fieldName = "name"; - return true; + // Get if there's a match to a constant + string localFieldName = fieldName; + string? constantMatch = Array.Find(constants, c => string.Equals(c, localFieldName, StringComparison.OrdinalIgnoreCase)); + if (constantMatch is not null) + { + // Return the sanitized ID + itemName = MetadataFile.MachineKey; + fieldName = constantMatch; + return true; + } } - // Get if there's a match to the constant - string localFieldName = fieldName; - string? constantMatch = Array.Find(constants, c => string.Equals(c, localFieldName, StringComparison.OrdinalIgnoreCase)); - if (constantMatch is null) - return false; + // Get the set of properties + var properties = TypeHelper.GetProperties(typeof(Machine)); + if (properties is not null) + { + // Get if there's a match to a property + string localFieldName = fieldName; + string? propertyMatch = Array.Find(properties, c => string.Equals(c, localFieldName, StringComparison.OrdinalIgnoreCase)); + if (propertyMatch is not null) + { + // Return the sanitized ID + itemName = MetadataFile.MachineKey; + fieldName = propertyMatch.ToLowerInvariant(); + return true; + } + } - // Return the sanitized ID - itemName = MetadataFile.MachineKey; - fieldName = constantMatch; - return true; + return false; } /// @@ -165,14 +185,6 @@ namespace SabreTools.Metadata.Filter if (string.Equals(itemName, "datitem", StringComparison.OrdinalIgnoreCase) || string.Equals(itemName, "item", StringComparison.OrdinalIgnoreCase)) { - // Special cases - if (fieldName.Equals("name", StringComparison.OrdinalIgnoreCase)) - { - itemName = "item"; - fieldName = "name"; - return true; - } - // Get all item types var itemTypes = TypeHelper.GetDatItemTypeNames(); @@ -225,17 +237,25 @@ namespace SabreTools.Metadata.Filter // Get the set of constants var constants = TypeHelper.GetConstants(itemType); - if (constants is null) - return null; + if (constants is not null) + { + // Get if there's a match to a constant + string? constantMatch = Array.Find(constants, c => string.Equals(c, fieldName, StringComparison.OrdinalIgnoreCase)); + if (constantMatch is not null) + return constantMatch; + } - // Special cases - if (fieldName.Equals("name", StringComparison.OrdinalIgnoreCase)) - return "name"; + // Get the set of properties + var properties = TypeHelper.GetProperties(itemType); + if (properties is not null) + { + // Get if there's a match to a property + string? propertyMatch = Array.Find(properties, c => string.Equals(c, fieldName, StringComparison.OrdinalIgnoreCase)); + if (propertyMatch is not null) + return propertyMatch.ToLowerInvariant(); + } - // Get if there's a match to the constant - string localFieldName = fieldName; - string? constantMatch = Array.Find(constants, c => string.Equals(c, localFieldName, StringComparison.OrdinalIgnoreCase)); - return constantMatch; + return null; } } } diff --git a/SabreTools.Metadata/TypeHelper.cs b/SabreTools.Metadata/TypeHelper.cs index 4c4eac49..10c85ed5 100644 --- a/SabreTools.Metadata/TypeHelper.cs +++ b/SabreTools.Metadata/TypeHelper.cs @@ -123,6 +123,22 @@ namespace SabreTools.Metadata return null; } + /// + /// Get property names for the given type, if possible + /// + public static string[]? GetProperties(Type? type) + { + if (type is null) + return null; + + var properties = type.GetProperties(BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public); + if (properties is null) + return null; + + string[] propertyNames = Array.ConvertAll(properties, f => f.Name); + return Array.FindAll(propertyNames, s => s.Length > 0); + } + /// /// Attempt to get the XmlRootAttribute.ElementName value from a type /// From 826df09a3e1b2d6a0ab3ac5c312bae7e27ad0150 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Wed, 1 Apr 2026 16:52:55 -0400 Subject: [PATCH 007/142] Handle "Default" properties --- SabreTools.Data.Models/ClrMamePro/BiosSet.cs | 2 +- .../ClrMamePro/DipSwitch.cs | 2 +- SabreTools.Data.Models/ClrMamePro/Release.cs | 2 +- SabreTools.Data.Models/Listxml/Adjuster.cs | 2 +- SabreTools.Data.Models/Listxml/BiosSet.cs | 2 +- SabreTools.Data.Models/Listxml/ConfSetting.cs | 2 +- SabreTools.Data.Models/Listxml/DipValue.cs | 2 +- SabreTools.Data.Models/Listxml/RamOption.cs | 2 +- SabreTools.Data.Models/Listxml/SlotOption.cs | 2 +- SabreTools.Data.Models/Logiqx/BiosSet.cs | 2 +- SabreTools.Data.Models/Logiqx/Release.cs | 2 +- SabreTools.Data.Models/Metadata/Adjuster.cs | 5 +- SabreTools.Data.Models/Metadata/BiosSet.cs | 5 +- .../Metadata/ConfSetting.cs | 5 +- SabreTools.Data.Models/Metadata/DipSwitch.cs | 5 +- SabreTools.Data.Models/Metadata/DipValue.cs | 5 +- SabreTools.Data.Models/Metadata/RamOption.cs | 5 +- SabreTools.Data.Models/Metadata/Release.cs | 5 +- SabreTools.Data.Models/Metadata/SlotOption.cs | 5 +- .../OfflineList/InfoBase.cs | 2 +- SabreTools.Data.Models/OfflineList/To.cs | 2 +- .../SoftwareList/DipValue.cs | 2 +- .../DatFileTests.FromMetadata.cs | 32 ++-- .../DatFileTests.ToMetadata.cs | 16 +- .../Formats/Adjuster.cs | 12 +- .../Formats/BiosSet.cs | 19 +- .../Formats/ConfSetting.cs | 12 +- .../Formats/DipSwitch.cs | 12 +- .../Formats/DipValue.cs | 12 +- .../Formats/RamOption.cs | 19 +- .../Formats/Release.cs | 19 +- .../Formats/SlotOption.cs | 19 +- SabreTools.Metadata.Filter/FilterObject.cs | 177 ++++++++---------- .../ClrMameProTests.cs | 12 +- .../ListxmlTests.cs | 24 +-- .../LogiqxTests.cs | 8 +- .../M1Tests.cs | 24 +-- .../MessTests.cs | 24 +-- .../OfflineListTests.cs | 34 ++-- .../SoftwareListTests.cs | 4 +- .../ClrMamePro.Deserializer.cs | 6 +- .../ClrMamePro.Serializer.cs | 6 +- .../Listxml.Deserializer.cs | 12 +- .../Listxml.Serializer.cs | 12 +- .../Logiqx.Deserializer.cs | 4 +- .../Logiqx.Serializer.cs | 4 +- .../SoftwareList.Deserializer.cs | 2 +- .../SoftwareList.Serializer.cs | 2 +- .../ClrMameProTests.cs | 12 +- .../ListxmlTests.cs | 24 +-- .../LogiqxTests.cs | 8 +- .../M1Tests.cs | 24 +-- .../MessTests.cs | 24 +-- .../OfflineListTests.cs | 34 ++-- .../SoftwareListTests.cs | 4 +- .../ClrMamePro.cs | 7 +- SabreTools.Serialization.Readers/Listxml.cs | 13 +- SabreTools.Serialization.Readers/Logiqx.cs | 5 +- SabreTools.Serialization.Readers/M1.cs | 13 +- SabreTools.Serialization.Readers/Mess.cs | 13 +- .../OfflineList.cs | 31 +-- .../SoftwareList.cs | 3 +- .../ClrMamePro.cs | 7 +- SabreTools.Serialization.Writers/Listxml.cs | 13 +- SabreTools.Serialization.Writers/Logiqx.cs | 5 +- SabreTools.Serialization.Writers/M1.cs | 13 +- SabreTools.Serialization.Writers/Mess.cs | 13 +- .../OfflineList.cs | 4 +- .../SabreTools.Serialization.Writers.csproj | 1 + .../SoftwareList.cs | 3 +- 70 files changed, 444 insertions(+), 425 deletions(-) diff --git a/SabreTools.Data.Models/ClrMamePro/BiosSet.cs b/SabreTools.Data.Models/ClrMamePro/BiosSet.cs index 77895d53..c9a79177 100644 --- a/SabreTools.Data.Models/ClrMamePro/BiosSet.cs +++ b/SabreTools.Data.Models/ClrMamePro/BiosSet.cs @@ -12,6 +12,6 @@ namespace SabreTools.Data.Models.ClrMamePro public string? Description { get; set; } /// default - public string? Default { get; set; } + public bool? Default { get; set; } } } diff --git a/SabreTools.Data.Models/ClrMamePro/DipSwitch.cs b/SabreTools.Data.Models/ClrMamePro/DipSwitch.cs index 63370948..b75d2785 100644 --- a/SabreTools.Data.Models/ClrMamePro/DipSwitch.cs +++ b/SabreTools.Data.Models/ClrMamePro/DipSwitch.cs @@ -12,6 +12,6 @@ namespace SabreTools.Data.Models.ClrMamePro public string[]? Entry { get; set; } /// default, (yes|no) "no" - public string? Default { get; set; } + public bool? Default { get; set; } } } diff --git a/SabreTools.Data.Models/ClrMamePro/Release.cs b/SabreTools.Data.Models/ClrMamePro/Release.cs index 7ed56e6d..7c6bf0f7 100644 --- a/SabreTools.Data.Models/ClrMamePro/Release.cs +++ b/SabreTools.Data.Models/ClrMamePro/Release.cs @@ -19,6 +19,6 @@ namespace SabreTools.Data.Models.ClrMamePro public string? Date { get; set; } /// default - public string? Default { get; set; } + public bool? Default { get; set; } } } diff --git a/SabreTools.Data.Models/Listxml/Adjuster.cs b/SabreTools.Data.Models/Listxml/Adjuster.cs index 44417c5d..ea99b1d2 100644 --- a/SabreTools.Data.Models/Listxml/Adjuster.cs +++ b/SabreTools.Data.Models/Listxml/Adjuster.cs @@ -12,7 +12,7 @@ namespace SabreTools.Data.Models.Listxml /// (yes|no) "no" [XmlAttribute("default")] - public string? Default { get; set; } + public bool? Default { get; set; } [XmlElement("condition")] public Condition? Condition { get; set; } diff --git a/SabreTools.Data.Models/Listxml/BiosSet.cs b/SabreTools.Data.Models/Listxml/BiosSet.cs index f62df74a..2ffdb633 100644 --- a/SabreTools.Data.Models/Listxml/BiosSet.cs +++ b/SabreTools.Data.Models/Listxml/BiosSet.cs @@ -16,6 +16,6 @@ namespace SabreTools.Data.Models.Listxml /// (yes|no) "no" [XmlAttribute("default")] - public string? Default { get; set; } + public bool? Default { get; set; } } } diff --git a/SabreTools.Data.Models/Listxml/ConfSetting.cs b/SabreTools.Data.Models/Listxml/ConfSetting.cs index 20f7200b..1d351d0c 100644 --- a/SabreTools.Data.Models/Listxml/ConfSetting.cs +++ b/SabreTools.Data.Models/Listxml/ConfSetting.cs @@ -16,7 +16,7 @@ namespace SabreTools.Data.Models.Listxml /// (yes|no) "no" [XmlAttribute("default")] - public string? Default { get; set; } + public bool? Default { get; set; } [XmlElement("condition")] public Condition? Condition { get; set; } diff --git a/SabreTools.Data.Models/Listxml/DipValue.cs b/SabreTools.Data.Models/Listxml/DipValue.cs index 3f61f7fb..cfd96626 100644 --- a/SabreTools.Data.Models/Listxml/DipValue.cs +++ b/SabreTools.Data.Models/Listxml/DipValue.cs @@ -16,7 +16,7 @@ namespace SabreTools.Data.Models.Listxml /// (yes|no) "no" [XmlAttribute("default")] - public string? Default { get; set; } + public bool? Default { get; set; } [XmlElement("condition")] public Condition? Condition { get; set; } diff --git a/SabreTools.Data.Models/Listxml/RamOption.cs b/SabreTools.Data.Models/Listxml/RamOption.cs index d1d0b5cf..337d60ba 100644 --- a/SabreTools.Data.Models/Listxml/RamOption.cs +++ b/SabreTools.Data.Models/Listxml/RamOption.cs @@ -11,7 +11,7 @@ namespace SabreTools.Data.Models.Listxml public string? Name { get; set; } [XmlAttribute("default")] - public string? Default { get; set; } + public bool? Default { get; set; } [XmlText] public string? Content { get; set; } diff --git a/SabreTools.Data.Models/Listxml/SlotOption.cs b/SabreTools.Data.Models/Listxml/SlotOption.cs index 8f9bb9cf..fbbe9730 100644 --- a/SabreTools.Data.Models/Listxml/SlotOption.cs +++ b/SabreTools.Data.Models/Listxml/SlotOption.cs @@ -16,6 +16,6 @@ namespace SabreTools.Data.Models.Listxml /// (yes|no) "no" [XmlAttribute("default")] - public string? Default { get; set; } + public bool? Default { get; set; } } } diff --git a/SabreTools.Data.Models/Logiqx/BiosSet.cs b/SabreTools.Data.Models/Logiqx/BiosSet.cs index 53c13561..f8be9c31 100644 --- a/SabreTools.Data.Models/Logiqx/BiosSet.cs +++ b/SabreTools.Data.Models/Logiqx/BiosSet.cs @@ -16,6 +16,6 @@ namespace SabreTools.Data.Models.Logiqx /// (yes|no) "no" [XmlAttribute("default")] - public string? Default { get; set; } + public bool? Default { get; set; } } } diff --git a/SabreTools.Data.Models/Logiqx/Release.cs b/SabreTools.Data.Models/Logiqx/Release.cs index e961fcb3..51a442cb 100644 --- a/SabreTools.Data.Models/Logiqx/Release.cs +++ b/SabreTools.Data.Models/Logiqx/Release.cs @@ -22,6 +22,6 @@ namespace SabreTools.Data.Models.Logiqx /// (yes|no) "no" [XmlAttribute("default")] - public string? Default { get; set; } + public bool? Default { get; set; } } } diff --git a/SabreTools.Data.Models/Metadata/Adjuster.cs b/SabreTools.Data.Models/Metadata/Adjuster.cs index b8708904..4e312236 100644 --- a/SabreTools.Data.Models/Metadata/Adjuster.cs +++ b/SabreTools.Data.Models/Metadata/Adjuster.cs @@ -8,6 +8,8 @@ namespace SabreTools.Data.Models.Metadata { #region Properties + public bool? Default { get; set; } + public string? Name { get; set; } #endregion @@ -18,9 +20,6 @@ namespace SabreTools.Data.Models.Metadata [NoFilter] public const string ConditionKey = "condition"; - /// bool - public const string DefaultKey = "default"; - #endregion public Adjuster() => ItemType = ItemType.Adjuster; diff --git a/SabreTools.Data.Models/Metadata/BiosSet.cs b/SabreTools.Data.Models/Metadata/BiosSet.cs index 86dd5efd..19b1c6c7 100644 --- a/SabreTools.Data.Models/Metadata/BiosSet.cs +++ b/SabreTools.Data.Models/Metadata/BiosSet.cs @@ -8,15 +8,14 @@ namespace SabreTools.Data.Models.Metadata { #region Properties + public bool? Default { get; set; } + public string? Name { get; set; } #endregion #region Keys - /// bool - public const string DefaultKey = "default"; - /// string public const string DescriptionKey = "description"; diff --git a/SabreTools.Data.Models/Metadata/ConfSetting.cs b/SabreTools.Data.Models/Metadata/ConfSetting.cs index 996d2b0f..3be87b52 100644 --- a/SabreTools.Data.Models/Metadata/ConfSetting.cs +++ b/SabreTools.Data.Models/Metadata/ConfSetting.cs @@ -8,6 +8,8 @@ namespace SabreTools.Data.Models.Metadata { #region Properties + public bool? Default { get; set; } + public string? Name { get; set; } #endregion @@ -18,9 +20,6 @@ namespace SabreTools.Data.Models.Metadata [NoFilter] public const string ConditionKey = "condition"; - /// (yes|no) "no" - public const string DefaultKey = "default"; - /// string public const string ValueKey = "value"; diff --git a/SabreTools.Data.Models/Metadata/DipSwitch.cs b/SabreTools.Data.Models/Metadata/DipSwitch.cs index fe5127be..58bacdfb 100644 --- a/SabreTools.Data.Models/Metadata/DipSwitch.cs +++ b/SabreTools.Data.Models/Metadata/DipSwitch.cs @@ -8,6 +8,8 @@ namespace SabreTools.Data.Models.Metadata { #region Properties + public bool? Default { get; set; } + public string? Name { get; set; } #endregion @@ -18,9 +20,6 @@ namespace SabreTools.Data.Models.Metadata [NoFilter] public const string ConditionKey = "condition"; - /// (yes|no) "no" - public const string DefaultKey = "default"; - /// DipLocation[] [NoFilter] public const string DipLocationKey = "diplocation"; diff --git a/SabreTools.Data.Models/Metadata/DipValue.cs b/SabreTools.Data.Models/Metadata/DipValue.cs index b8415547..f3906878 100644 --- a/SabreTools.Data.Models/Metadata/DipValue.cs +++ b/SabreTools.Data.Models/Metadata/DipValue.cs @@ -8,6 +8,8 @@ namespace SabreTools.Data.Models.Metadata { #region Properties + public bool? Default { get; set; } + public string? Name { get; set; } #endregion @@ -18,9 +20,6 @@ namespace SabreTools.Data.Models.Metadata [NoFilter] public const string ConditionKey = "condition"; - /// (yes|no) "no" - public const string DefaultKey = "default"; - /// string public const string ValueKey = "value"; diff --git a/SabreTools.Data.Models/Metadata/RamOption.cs b/SabreTools.Data.Models/Metadata/RamOption.cs index b2b82a99..1f7d84ea 100644 --- a/SabreTools.Data.Models/Metadata/RamOption.cs +++ b/SabreTools.Data.Models/Metadata/RamOption.cs @@ -8,6 +8,8 @@ namespace SabreTools.Data.Models.Metadata { #region Properties + public bool? Default { get; set; } + public string? Name { get; set; } #endregion @@ -17,9 +19,6 @@ namespace SabreTools.Data.Models.Metadata /// string public const string ContentKey = "content"; - /// (yes|no) "no" - public const string DefaultKey = "default"; - #endregion public RamOption() => ItemType = ItemType.RamOption; diff --git a/SabreTools.Data.Models/Metadata/Release.cs b/SabreTools.Data.Models/Metadata/Release.cs index ae3ef67a..e76e1d4e 100644 --- a/SabreTools.Data.Models/Metadata/Release.cs +++ b/SabreTools.Data.Models/Metadata/Release.cs @@ -8,6 +8,8 @@ namespace SabreTools.Data.Models.Metadata { #region Properties + public bool? Default { get; set; } + public string? Name { get; set; } #endregion @@ -17,9 +19,6 @@ namespace SabreTools.Data.Models.Metadata /// string public const string DateKey = "date"; - /// (yes|no) "no" - public const string DefaultKey = "default"; - /// string public const string LanguageKey = "language"; diff --git a/SabreTools.Data.Models/Metadata/SlotOption.cs b/SabreTools.Data.Models/Metadata/SlotOption.cs index ff84c17d..a2ec5877 100644 --- a/SabreTools.Data.Models/Metadata/SlotOption.cs +++ b/SabreTools.Data.Models/Metadata/SlotOption.cs @@ -8,15 +8,14 @@ namespace SabreTools.Data.Models.Metadata { #region Properties + public bool? Default { get; set; } + public string? Name { get; set; } #endregion #region Keys - /// (yes|no) "no" - public const string DefaultKey = "default"; - /// string public const string DevNameKey = "devname"; diff --git a/SabreTools.Data.Models/OfflineList/InfoBase.cs b/SabreTools.Data.Models/OfflineList/InfoBase.cs index f5e5a6f5..cb39fc67 100644 --- a/SabreTools.Data.Models/OfflineList/InfoBase.cs +++ b/SabreTools.Data.Models/OfflineList/InfoBase.cs @@ -15,7 +15,7 @@ namespace SabreTools.Data.Models.OfflineList /// Boolean [XmlAttribute("default")] - public string? Default { get; set; } + public bool? Default { get; set; } } [XmlRoot("title")] diff --git a/SabreTools.Data.Models/OfflineList/To.cs b/SabreTools.Data.Models/OfflineList/To.cs index 00de0d99..725b0a49 100644 --- a/SabreTools.Data.Models/OfflineList/To.cs +++ b/SabreTools.Data.Models/OfflineList/To.cs @@ -11,7 +11,7 @@ namespace SabreTools.Data.Models.OfflineList /// Boolean [XmlAttribute("default")] - public string? Default { get; set; } + public bool? Default { get; set; } /// Boolean [XmlAttribute("auto")] diff --git a/SabreTools.Data.Models/SoftwareList/DipValue.cs b/SabreTools.Data.Models/SoftwareList/DipValue.cs index e5a198c5..3b1ed8d8 100644 --- a/SabreTools.Data.Models/SoftwareList/DipValue.cs +++ b/SabreTools.Data.Models/SoftwareList/DipValue.cs @@ -16,6 +16,6 @@ namespace SabreTools.Data.Models.SoftwareList /// (yes|no) "no" [XmlAttribute("default")] - public string? Default { get; set; } + public bool? Default { get; set; } } } diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs index 231e2fab..543aa2b8 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs @@ -337,7 +337,7 @@ namespace SabreTools.Metadata.DatFiles.Test return new Data.Models.Metadata.Adjuster { [Data.Models.Metadata.Adjuster.ConditionKey] = CreateMetadataCondition(), - [Data.Models.Metadata.Adjuster.DefaultKey] = true, + Default = true, Name = "name", }; } @@ -394,7 +394,7 @@ namespace SabreTools.Metadata.DatFiles.Test { return new Data.Models.Metadata.BiosSet { - [Data.Models.Metadata.BiosSet.DefaultKey] = true, + Default = true, [Data.Models.Metadata.BiosSet.DescriptionKey] = "description", Name = "name", }; @@ -452,7 +452,7 @@ namespace SabreTools.Metadata.DatFiles.Test return new Data.Models.Metadata.ConfSetting { [Data.Models.Metadata.ConfSetting.ConditionKey] = CreateMetadataCondition(), - [Data.Models.Metadata.ConfSetting.DefaultKey] = "yes", + Default = true, Name = "name", [Data.Models.Metadata.ConfSetting.ValueKey] = "value", }; @@ -514,7 +514,7 @@ namespace SabreTools.Metadata.DatFiles.Test return new Data.Models.Metadata.DipSwitch { [Data.Models.Metadata.DipSwitch.ConditionKey] = CreateMetadataCondition(), - [Data.Models.Metadata.DipSwitch.DefaultKey] = "yes", + Default = true, [Data.Models.Metadata.DipSwitch.DipLocationKey] = new Data.Models.Metadata.DipLocation[] { CreateMetadataDipLocation() }, [Data.Models.Metadata.DipSwitch.DipValueKey] = new Data.Models.Metadata.DipValue[] { CreateMetadataDipValue() }, [Data.Models.Metadata.DipSwitch.EntryKey] = new string[] { "entry" }, @@ -529,7 +529,7 @@ namespace SabreTools.Metadata.DatFiles.Test return new Data.Models.Metadata.DipValue { [Data.Models.Metadata.DipValue.ConditionKey] = CreateMetadataCondition(), - [Data.Models.Metadata.DipValue.DefaultKey] = "yes", + Default = true, Name = "name", [Data.Models.Metadata.DipValue.ValueKey] = "value", }; @@ -726,7 +726,7 @@ namespace SabreTools.Metadata.DatFiles.Test return new Data.Models.Metadata.RamOption { [Data.Models.Metadata.RamOption.ContentKey] = "content", - [Data.Models.Metadata.RamOption.DefaultKey] = "yes", + Default = true, Name = "name", }; } @@ -736,7 +736,7 @@ namespace SabreTools.Metadata.DatFiles.Test return new Data.Models.Metadata.Release { [Data.Models.Metadata.Release.DateKey] = "date", - [Data.Models.Metadata.Release.DefaultKey] = "yes", + Default = true, [Data.Models.Metadata.Release.LanguageKey] = "language", Name = "name", [Data.Models.Metadata.Release.RegionKey] = "region", @@ -920,7 +920,7 @@ namespace SabreTools.Metadata.DatFiles.Test { return new Data.Models.Metadata.SlotOption { - [Data.Models.Metadata.SlotOption.DefaultKey] = "yes", + Default = true, [Data.Models.Metadata.SlotOption.DevNameKey] = "devname", Name = "name", }; @@ -1144,7 +1144,7 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateAdjuster(Adjuster? adjuster) { Assert.NotNull(adjuster); - Assert.True(adjuster.ReadBool(Data.Models.Metadata.Adjuster.DefaultKey)); + Assert.True(adjuster.Default); Assert.Equal("name", adjuster.GetName()); Condition? condition = adjuster.Read(Data.Models.Metadata.Adjuster.ConditionKey); @@ -1166,7 +1166,7 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateBiosSet(BiosSet? biosSet) { Assert.NotNull(biosSet); - Assert.True(biosSet.ReadBool(Data.Models.Metadata.BiosSet.DefaultKey)); + Assert.True(biosSet.Default); Assert.Equal("description", biosSet.ReadString(Data.Models.Metadata.BiosSet.DescriptionKey)); Assert.Equal("name", biosSet.GetName()); } @@ -1223,7 +1223,7 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateConfSetting(ConfSetting? confSetting) { Assert.NotNull(confSetting); - Assert.True(confSetting.ReadBool(Data.Models.Metadata.ConfSetting.DefaultKey)); + Assert.True(confSetting.Default); Assert.Equal("name", confSetting.GetName()); Assert.Equal("value", confSetting.ReadString(Data.Models.Metadata.ConfSetting.ValueKey)); @@ -1292,7 +1292,7 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateDipSwitch(DipSwitch? dipSwitch) { Assert.NotNull(dipSwitch); - Assert.True(dipSwitch.ReadBool(Data.Models.Metadata.DipSwitch.DefaultKey)); + Assert.True(dipSwitch.Default); Assert.Equal("mask", dipSwitch.ReadString(Data.Models.Metadata.DipSwitch.MaskKey)); Assert.Equal("name", dipSwitch.GetName()); Assert.Equal("tag", dipSwitch.ReadString(Data.Models.Metadata.DipSwitch.TagKey)); @@ -1319,7 +1319,7 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateDipValue(DipValue? dipValue) { Assert.NotNull(dipValue); - Assert.True(dipValue.ReadBool(Data.Models.Metadata.DipValue.DefaultKey)); + Assert.True(dipValue.Default); Assert.Equal("name", dipValue.GetName()); Assert.Equal("value", dipValue.ReadString(Data.Models.Metadata.DipValue.ValueKey)); @@ -1473,7 +1473,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Assert.NotNull(ramOption); Assert.Equal("content", ramOption.ReadString(Data.Models.Metadata.RamOption.ContentKey)); - Assert.True(ramOption.ReadBool(Data.Models.Metadata.RamOption.DefaultKey)); + Assert.True(ramOption.Default); Assert.Equal("name", ramOption.GetName()); } @@ -1481,7 +1481,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Assert.NotNull(release); Assert.Equal("date", release.ReadString(Data.Models.Metadata.Release.DateKey)); - Assert.True(release.ReadBool(Data.Models.Metadata.Release.DefaultKey)); + Assert.True(release.Default); Assert.Equal("language", release.ReadString(Data.Models.Metadata.Release.LanguageKey)); Assert.Equal("name", release.GetName()); Assert.Equal("region", release.ReadString(Data.Models.Metadata.Release.RegionKey)); @@ -1615,7 +1615,7 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateSlotOption(SlotOption? slotOption) { Assert.NotNull(slotOption); - Assert.True(slotOption.ReadBool(Data.Models.Metadata.SlotOption.DefaultKey)); + Assert.True(slotOption.Default); Assert.Equal("devname", slotOption.ReadString(Data.Models.Metadata.SlotOption.DevNameKey)); Assert.Equal("name", slotOption.GetName()); } diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs index 6f762582..4dd4f923 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs @@ -619,7 +619,7 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateMetadataAdjuster(Data.Models.Metadata.Adjuster? adjuster) { Assert.NotNull(adjuster); - Assert.True(adjuster.ReadBool(Data.Models.Metadata.Adjuster.DefaultKey)); + Assert.True(adjuster.Default); Assert.Equal("name", adjuster.Name); Data.Models.Metadata.Condition? condition = adjuster.Read(Data.Models.Metadata.Adjuster.ConditionKey); @@ -673,7 +673,7 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateMetadataBiosSet(Data.Models.Metadata.BiosSet? biosSet) { Assert.NotNull(biosSet); - Assert.True(biosSet.ReadBool(Data.Models.Metadata.BiosSet.DefaultKey)); + Assert.True(biosSet.Default); Assert.Equal("description", biosSet.ReadString(Data.Models.Metadata.BiosSet.DescriptionKey)); Assert.Equal("name", biosSet.Name); } @@ -730,7 +730,7 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateMetadataConfSetting(Data.Models.Metadata.ConfSetting? confSetting) { Assert.NotNull(confSetting); - Assert.True(confSetting.ReadBool(Data.Models.Metadata.ConfSetting.DefaultKey)); + Assert.True(confSetting.Default); Assert.Equal("name", confSetting.Name); Assert.Equal("value", confSetting.ReadString(Data.Models.Metadata.ConfSetting.ValueKey)); @@ -804,7 +804,7 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateMetadataDipSwitch(Data.Models.Metadata.DipSwitch? dipSwitch) { Assert.NotNull(dipSwitch); - Assert.True(dipSwitch.ReadBool(Data.Models.Metadata.DipSwitch.DefaultKey)); + Assert.True(dipSwitch.Default); Assert.Equal("mask", dipSwitch.ReadString(Data.Models.Metadata.DipSwitch.MaskKey)); Assert.Equal("name", dipSwitch.Name); Assert.Equal("tag", dipSwitch.ReadString(Data.Models.Metadata.DipSwitch.TagKey)); @@ -831,7 +831,7 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateMetadataDipValue(Data.Models.Metadata.DipValue? dipValue) { Assert.NotNull(dipValue); - Assert.True(dipValue.ReadBool(Data.Models.Metadata.DipValue.DefaultKey)); + Assert.True(dipValue.Default); Assert.Equal("name", dipValue.Name); Assert.Equal("value", dipValue.ReadString(Data.Models.Metadata.DipValue.ValueKey)); @@ -997,7 +997,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Assert.NotNull(ramOption); Assert.Equal("content", ramOption.ReadString(Data.Models.Metadata.RamOption.ContentKey)); - Assert.True(ramOption.ReadBool(Data.Models.Metadata.RamOption.DefaultKey)); + Assert.True(ramOption.Default); Assert.Equal("name", ramOption.Name); } @@ -1005,7 +1005,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Assert.NotNull(release); Assert.Equal("date", release.ReadString(Data.Models.Metadata.Release.DateKey)); - Assert.True(release.ReadBool(Data.Models.Metadata.Release.DefaultKey)); + Assert.True(release.Default); Assert.Equal("language", release.ReadString(Data.Models.Metadata.Release.LanguageKey)); Assert.Equal("name", release.Name); Assert.Equal("region", release.ReadString(Data.Models.Metadata.Release.RegionKey)); @@ -1179,7 +1179,7 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateMetadataSlotOption(Data.Models.Metadata.SlotOption? slotOption) { Assert.NotNull(slotOption); - Assert.True(slotOption.ReadBool(Data.Models.Metadata.SlotOption.DefaultKey)); + Assert.True(slotOption.Default); Assert.Equal("devname", slotOption.ReadString(Data.Models.Metadata.SlotOption.DevNameKey)); Assert.Equal("name", slotOption.Name); } diff --git a/SabreTools.Metadata.DatItems/Formats/Adjuster.cs b/SabreTools.Metadata.DatItems/Formats/Adjuster.cs index fef67fbb..fd951b5d 100644 --- a/SabreTools.Metadata.DatItems/Formats/Adjuster.cs +++ b/SabreTools.Metadata.DatItems/Formats/Adjuster.cs @@ -22,6 +22,13 @@ namespace SabreTools.Metadata.DatItems.Formats } } + [JsonIgnore] + public bool? Default + { + get => (_internal as Data.Models.Metadata.Adjuster)?.Default; + set => (_internal as Data.Models.Metadata.Adjuster)?.Default = value; + } + #endregion #region Constructors @@ -30,11 +37,6 @@ namespace SabreTools.Metadata.DatItems.Formats public Adjuster(Data.Models.Metadata.Adjuster item) : base(item) { - // Process flag values - bool? defaultValue = ReadBool(Data.Models.Metadata.Adjuster.DefaultKey); - if (defaultValue is not null) - Write(Data.Models.Metadata.Adjuster.DefaultKey, defaultValue.FromYesNo()); - // Handle subitems var condition = item.Read(Data.Models.Metadata.Adjuster.ConditionKey); if (condition is not null) diff --git a/SabreTools.Metadata.DatItems/Formats/BiosSet.cs b/SabreTools.Metadata.DatItems/Formats/BiosSet.cs index 395e59ca..884e5b53 100644 --- a/SabreTools.Metadata.DatItems/Formats/BiosSet.cs +++ b/SabreTools.Metadata.DatItems/Formats/BiosSet.cs @@ -10,17 +10,22 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("biosset"), XmlRoot("biosset")] public sealed class BiosSet : DatItem { + #region Properties + + [JsonIgnore] + public bool? Default + { + get => (_internal as Data.Models.Metadata.BiosSet)?.Default; + set => (_internal as Data.Models.Metadata.BiosSet)?.Default = value; + } + + #endregion + #region Constructors public BiosSet() : base() { } - public BiosSet(Data.Models.Metadata.BiosSet item) : base(item) - { - // Process flag values - bool? defaultValue = ReadBool(Data.Models.Metadata.BiosSet.DefaultKey); - if (defaultValue is not null) - Write(Data.Models.Metadata.BiosSet.DefaultKey, defaultValue.FromYesNo()); - } + public BiosSet(Data.Models.Metadata.BiosSet item) : base(item) { } public BiosSet(Data.Models.Metadata.BiosSet item, Machine machine, Source source) : this(item) { diff --git a/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs b/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs index 4fe81fe4..0e69bb27 100644 --- a/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs +++ b/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs @@ -22,6 +22,13 @@ namespace SabreTools.Metadata.DatItems.Formats } } + [JsonIgnore] + public bool? Default + { + get => (_internal as Data.Models.Metadata.ConfSetting)?.Default; + set => (_internal as Data.Models.Metadata.ConfSetting)?.Default = value; + } + #endregion #region Constructors @@ -30,11 +37,6 @@ namespace SabreTools.Metadata.DatItems.Formats public ConfSetting(Data.Models.Metadata.ConfSetting item) : base(item) { - // Process flag values - bool? defaultValue = ReadBool(Data.Models.Metadata.ConfSetting.DefaultKey); - if (defaultValue is not null) - Write(Data.Models.Metadata.ConfSetting.DefaultKey, defaultValue.FromYesNo()); - // Handle subitems var condition = Read(Data.Models.Metadata.ConfSetting.ConditionKey); if (condition is not null) diff --git a/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs b/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs index db1053ef..48dbe9fb 100644 --- a/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs +++ b/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs @@ -32,6 +32,13 @@ namespace SabreTools.Metadata.DatItems.Formats } } + [JsonIgnore] + public bool? Default + { + get => (_internal as Data.Models.Metadata.DipSwitch)?.Default; + set => (_internal as Data.Models.Metadata.DipSwitch)?.Default = value; + } + [JsonIgnore] public bool LocationsSpecified { @@ -72,11 +79,6 @@ namespace SabreTools.Metadata.DatItems.Formats public DipSwitch(Data.Models.Metadata.DipSwitch item) : base(item) { - // Process flag values - bool? defaultValue = ReadBool(Data.Models.Metadata.DipSwitch.DefaultKey); - if (defaultValue is not null) - Write(Data.Models.Metadata.DipSwitch.DefaultKey, defaultValue.FromYesNo()); - // Handle subitems var condition = item.Read(Data.Models.Metadata.DipSwitch.ConditionKey); if (condition is not null) diff --git a/SabreTools.Metadata.DatItems/Formats/DipValue.cs b/SabreTools.Metadata.DatItems/Formats/DipValue.cs index 94600083..6b47e025 100644 --- a/SabreTools.Metadata.DatItems/Formats/DipValue.cs +++ b/SabreTools.Metadata.DatItems/Formats/DipValue.cs @@ -22,6 +22,13 @@ namespace SabreTools.Metadata.DatItems.Formats } } + [JsonIgnore] + public bool? Default + { + get => (_internal as Data.Models.Metadata.DipValue)?.Default; + set => (_internal as Data.Models.Metadata.DipValue)?.Default = value; + } + #endregion #region Constructors @@ -30,11 +37,6 @@ namespace SabreTools.Metadata.DatItems.Formats public DipValue(Data.Models.Metadata.DipValue item) : base(item) { - // Process flag values - bool? defaultValue = ReadBool(Data.Models.Metadata.DipValue.DefaultKey); - if (defaultValue is not null) - Write(Data.Models.Metadata.DipValue.DefaultKey, defaultValue.FromYesNo()); - // Handle subitems var condition = Read(Data.Models.Metadata.DipValue.ConditionKey); if (condition is not null) diff --git a/SabreTools.Metadata.DatItems/Formats/RamOption.cs b/SabreTools.Metadata.DatItems/Formats/RamOption.cs index 0546dfe2..e2c545e3 100644 --- a/SabreTools.Metadata.DatItems/Formats/RamOption.cs +++ b/SabreTools.Metadata.DatItems/Formats/RamOption.cs @@ -10,17 +10,22 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("ramoption"), XmlRoot("ramoption")] public sealed class RamOption : DatItem { + #region Properties + + [JsonIgnore] + public bool? Default + { + get => (_internal as Data.Models.Metadata.RamOption)?.Default; + set => (_internal as Data.Models.Metadata.RamOption)?.Default = value; + } + + #endregion + #region Constructors public RamOption() : base() { } - public RamOption(Data.Models.Metadata.RamOption item) : base(item) - { - // Process flag values - bool? defaultValue = ReadBool(Data.Models.Metadata.RamOption.DefaultKey); - if (defaultValue is not null) - Write(Data.Models.Metadata.RamOption.DefaultKey, defaultValue.FromYesNo()); - } + public RamOption(Data.Models.Metadata.RamOption item) : base(item) { } public RamOption(Data.Models.Metadata.RamOption item, Machine machine, Source source) : this(item) { diff --git a/SabreTools.Metadata.DatItems/Formats/Release.cs b/SabreTools.Metadata.DatItems/Formats/Release.cs index 8e142259..6a786ec2 100644 --- a/SabreTools.Metadata.DatItems/Formats/Release.cs +++ b/SabreTools.Metadata.DatItems/Formats/Release.cs @@ -10,17 +10,22 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("release"), XmlRoot("release")] public sealed class Release : DatItem { + #region Properties + + [JsonIgnore] + public bool? Default + { + get => (_internal as Data.Models.Metadata.Release)?.Default; + set => (_internal as Data.Models.Metadata.Release)?.Default = value; + } + + #endregion + #region Constructors public Release() : base() { } - public Release(Data.Models.Metadata.Release item) : base(item) - { - // Process flag values - bool? defaultValue = ReadBool(Data.Models.Metadata.Release.DefaultKey); - if (defaultValue is not null) - Write(Data.Models.Metadata.Release.DefaultKey, defaultValue.FromYesNo()); - } + public Release(Data.Models.Metadata.Release item) : base(item) { } public Release(Data.Models.Metadata.Release item, Machine machine, Source source) : this(item) { diff --git a/SabreTools.Metadata.DatItems/Formats/SlotOption.cs b/SabreTools.Metadata.DatItems/Formats/SlotOption.cs index 73f90bd6..375c53d4 100644 --- a/SabreTools.Metadata.DatItems/Formats/SlotOption.cs +++ b/SabreTools.Metadata.DatItems/Formats/SlotOption.cs @@ -10,17 +10,22 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("slotoption"), XmlRoot("slotoption")] public sealed class SlotOption : DatItem { + #region Properties + + [JsonIgnore] + public bool? Default + { + get => (_internal as Data.Models.Metadata.SlotOption)?.Default; + set => (_internal as Data.Models.Metadata.SlotOption)?.Default = value; + } + + #endregion + #region Constructors public SlotOption() : base() { } - public SlotOption(Data.Models.Metadata.SlotOption item) : base(item) - { - // Process flag values - bool? defaultValue = ReadBool(Data.Models.Metadata.SlotOption.DefaultKey); - if (defaultValue is not null) - Write(Data.Models.Metadata.SlotOption.DefaultKey, defaultValue.FromYesNo()); - } + public SlotOption(Data.Models.Metadata.SlotOption item) : base(item) { } public SlotOption(Data.Models.Metadata.SlotOption item, Machine machine, Source source) : this(item) { diff --git a/SabreTools.Metadata.Filter/FilterObject.cs b/SabreTools.Metadata.Filter/FilterObject.cs index dcfca12c..27dcd70c 100644 --- a/SabreTools.Metadata.Filter/FilterObject.cs +++ b/SabreTools.Metadata.Filter/FilterObject.cs @@ -77,22 +77,9 @@ namespace SabreTools.Metadata.Filter /// private bool MatchesEqual(DictionaryBase dictionaryBase) { - // Some fields need unique handling - string? checkValue; - if (Key.FieldName == "name") - { - // TODO: Make this less awkward and hacky - checkValue = dictionaryBase.GetName(); - } - else - { - // If the key doesn't exist, we count it as null - if (!dictionaryBase.ContainsKey(Key.FieldName)) - return string.IsNullOrEmpty(Value); - - // If the value in the dictionary is null - checkValue = dictionaryBase.ReadString(Key.FieldName); - } + // Process the check value + if (!GetCheckValue(dictionaryBase, out string? checkValue)) + return string.IsNullOrEmpty(Value); // If a null value is expected if (checkValue is null) @@ -132,22 +119,9 @@ namespace SabreTools.Metadata.Filter /// private bool MatchesNotEqual(DictionaryBase dictionaryBase) { - // Some fields need unique handling - string? checkValue; - if (Key.FieldName == "name") - { - // TODO: Make this less awkward and hacky - checkValue = dictionaryBase.GetName(); - } - else - { - // If the key doesn't exist, we count it as null - if (!dictionaryBase.ContainsKey(Key.FieldName)) - return string.IsNullOrEmpty(Value); - - // If the value in the dictionary is null - checkValue = dictionaryBase.ReadString(Key.FieldName); - } + // Process the check value + if (!GetCheckValue(dictionaryBase, out string? checkValue)) + return string.IsNullOrEmpty(Value); // If a null value is expected if (checkValue is null) @@ -187,22 +161,9 @@ namespace SabreTools.Metadata.Filter /// private bool MatchesGreaterThan(DictionaryBase dictionaryBase) { - // Some fields need unique handling - string? checkValue; - if (Key.FieldName == "name") - { - // TODO: Make this less awkward and hacky - checkValue = dictionaryBase.GetName(); - } - else - { - // If the key doesn't exist, we count it as null - if (!dictionaryBase.ContainsKey(Key.FieldName)) - return string.IsNullOrEmpty(Value); - - // If the value in the dictionary is null - checkValue = dictionaryBase.ReadString(Key.FieldName); - } + // Process the check value + if (!GetCheckValue(dictionaryBase, out string? checkValue)) + return string.IsNullOrEmpty(Value); // Null is always failure if (checkValue is null) @@ -232,22 +193,9 @@ namespace SabreTools.Metadata.Filter /// private bool MatchesGreaterThanOrEqual(DictionaryBase dictionaryBase) { - // Some fields need unique handling - string? checkValue; - if (Key.FieldName == "name") - { - // TODO: Make this less awkward and hacky - checkValue = dictionaryBase.GetName(); - } - else - { - // If the key doesn't exist, we count it as null - if (!dictionaryBase.ContainsKey(Key.FieldName)) - return string.IsNullOrEmpty(Value); - - // If the value in the dictionary is null - checkValue = dictionaryBase.ReadString(Key.FieldName); - } + // Process the check value + if (!GetCheckValue(dictionaryBase, out string? checkValue)) + return string.IsNullOrEmpty(Value); // Null is always failure if (checkValue is null) @@ -277,22 +225,9 @@ namespace SabreTools.Metadata.Filter /// private bool MatchesLessThan(DictionaryBase dictionaryBase) { - // Some fields need unique handling - string? checkValue; - if (Key.FieldName == "name") - { - // TODO: Make this less awkward and hacky - checkValue = dictionaryBase.GetName(); - } - else - { - // If the key doesn't exist, we count it as null - if (!dictionaryBase.ContainsKey(Key.FieldName)) - return string.IsNullOrEmpty(Value); - - // If the value in the dictionary is null - checkValue = dictionaryBase.ReadString(Key.FieldName); - } + // Process the check value + if (!GetCheckValue(dictionaryBase, out string? checkValue)) + return string.IsNullOrEmpty(Value); // Null is always failure if (checkValue is null) @@ -322,22 +257,9 @@ namespace SabreTools.Metadata.Filter /// private bool MatchesLessThanOrEqual(DictionaryBase dictionaryBase) { - // Some fields need unique handling - string? checkValue; - if (Key.FieldName == "name") - { - // TODO: Make this less awkward and hacky - checkValue = dictionaryBase.GetName(); - } - else - { - // If the key doesn't exist, we count it as null - if (!dictionaryBase.ContainsKey(Key.FieldName)) - return string.IsNullOrEmpty(Value); - - // If the value in the dictionary is null - checkValue = dictionaryBase.ReadString(Key.FieldName); - } + // Process the check value + if (!GetCheckValue(dictionaryBase, out string? checkValue)) + return string.IsNullOrEmpty(Value); // Null is always failure if (checkValue is null) @@ -411,6 +333,69 @@ namespace SabreTools.Metadata.Filter return false; } + /// + /// Get the check value for a field from a DictionaryBase + /// + private bool GetCheckValue(DictionaryBase dictionaryBase, out string? checkValue) + { + // Handle the common name field + if (Key.FieldName == "name") + { + checkValue = dictionaryBase.GetName(); + return true; + } + + // Handle type-specific properties + switch (dictionaryBase) + { + case Adjuster item when Key.FieldName == "default": + checkValue = item.Default.FromYesNo(); + return true; + + case BiosSet item when Key.FieldName == "default": + checkValue = item.Default.FromYesNo(); + return true; + + case ConfSetting item when Key.FieldName == "default": + checkValue = item.Default.FromYesNo(); + return true; + + case DipSwitch item when Key.FieldName == "default": + checkValue = item.Default.FromYesNo(); + return true; + + case DipValue item when Key.FieldName == "default": + checkValue = item.Default.FromYesNo(); + return true; + + case RamOption item when Key.FieldName == "default": + checkValue = item.Default.FromYesNo(); + return true; + + case Release item when Key.FieldName == "default": + checkValue = item.Default.FromYesNo(); + return true; + + case SlotOption item when Key.FieldName == "default": + checkValue = item.Default.FromYesNo(); + return true; + + // Fallthrough to Dictionary-based checking + default: break; + } + + // If the key doesn't exist, we count it as null + if (!dictionaryBase.ContainsKey(Key.FieldName)) + { + checkValue = null; + return false; + } + + // If the value in the dictionary is null + checkValue = dictionaryBase.ReadString(Key.FieldName); + return true; + } + /// /// Derive an operation from the input string, if possible /// diff --git a/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs b/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs index 161fd8e8..f47f1e29 100644 --- a/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs @@ -84,14 +84,14 @@ namespace SabreTools.Serialization.CrossModel.Test Region = "XXXXXX", Language = "XXXXXX", Date = "XXXXXX", - Default = "XXXXXX", + Default = true, }; var biosset = new Data.Models.ClrMamePro.BiosSet { Name = "XXXXXX", Description = "XXXXXX", - Default = "XXXXXX", + Default = true, }; var rom = new Data.Models.ClrMamePro.Rom @@ -192,7 +192,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Name = "XXXXXX", Entry = ["XXXXXX"], - Default = "XXXXXX", + Default = true, }; var driver = new Data.Models.ClrMamePro.Driver @@ -339,7 +339,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", release.Region); Assert.Equal("XXXXXX", release.Language); Assert.Equal("XXXXXX", release.Date); - Assert.Equal("XXXXXX", release.Default); + Assert.Equal(true, release.Default); } /// @@ -350,7 +350,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(biosset); Assert.Equal("XXXXXX", biosset.Name); Assert.Equal("XXXXXX", biosset.Description); - Assert.Equal("XXXXXX", biosset.Default); + Assert.Equal(true, biosset.Default); } /// @@ -495,7 +495,7 @@ namespace SabreTools.Serialization.CrossModel.Test string entry = Assert.Single(dipswitch.Entry); Assert.Equal("XXXXXX", entry); - Assert.Equal("XXXXXX", dipswitch.Default); + Assert.Equal(true, dipswitch.Default); } /// diff --git a/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs b/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs index 8f7cfcbf..60d915a8 100644 --- a/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs @@ -67,7 +67,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Name = "XXXXXX", Description = "XXXXXX", - Default = "XXXXXX", + Default = true, }; var rom = new Data.Models.Listxml.Rom @@ -198,7 +198,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Name = "XXXXXX", Value = "XXXXXX", - Default = "XXXXXX", + Default = true, Condition = condition, }; @@ -223,7 +223,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Name = "XXXXXX", Value = "XXXXXX", - Default = "XXXXXX", + Default = true, Condition = condition, }; @@ -251,7 +251,7 @@ namespace SabreTools.Serialization.CrossModel.Test var adjuster = new Data.Models.Listxml.Adjuster { Name = "XXXXXX", - Default = "XXXXXX", + Default = true, Condition = condition, }; @@ -303,7 +303,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Name = "XXXXXX", DevName = "XXXXXX", - Default = "XXXXXX", + Default = true, }; var slot = new Data.Models.Listxml.Slot @@ -323,7 +323,7 @@ namespace SabreTools.Serialization.CrossModel.Test var ramoption = new Data.Models.Listxml.RamOption { Name = "XXXXXX", - Default = "XXXXXX", + Default = true, Content = "XXXXXX", }; @@ -475,7 +475,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(biosset); Assert.Equal("XXXXXX", biosset.Name); Assert.Equal("XXXXXX", biosset.Description); - Assert.Equal("XXXXXX", biosset.Default); + Assert.Equal(true, biosset.Default); } /// @@ -681,7 +681,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(dipvalue); Assert.Equal("XXXXXX", dipvalue.Name); Assert.Equal("XXXXXX", dipvalue.Value); - Assert.Equal("XXXXXX", dipvalue.Default); + Assert.Equal(true, dipvalue.Default); Validate(dipvalue.Condition); } @@ -724,7 +724,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(confsetting); Assert.Equal("XXXXXX", confsetting.Name); Assert.Equal("XXXXXX", confsetting.Value); - Assert.Equal("XXXXXX", confsetting.Default); + Assert.Equal(true, confsetting.Default); Validate(confsetting.Condition); } @@ -757,7 +757,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(adjuster); Assert.Equal("XXXXXX", adjuster.Name); - Assert.Equal("XXXXXX", adjuster.Default); + Assert.Equal(true, adjuster.Default); Validate(adjuster.Condition); } @@ -849,7 +849,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(slotoption); Assert.Equal("XXXXXX", slotoption.Name); Assert.Equal("XXXXXX", slotoption.DevName); - Assert.Equal("XXXXXX", slotoption.Default); + Assert.Equal(true, slotoption.Default); } /// @@ -871,7 +871,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(ramoption); Assert.Equal("XXXXXX", ramoption.Name); - Assert.Equal("XXXXXX", ramoption.Default); + Assert.Equal(true, ramoption.Default); Assert.Equal("XXXXXX", ramoption.Content); } } diff --git a/SabreTools.Serialization.CrossModel.Test/LogiqxTests.cs b/SabreTools.Serialization.CrossModel.Test/LogiqxTests.cs index 35822e4c..c0ec27c0 100644 --- a/SabreTools.Serialization.CrossModel.Test/LogiqxTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/LogiqxTests.cs @@ -135,14 +135,14 @@ namespace SabreTools.Serialization.CrossModel.Test Region = "XXXXXX", Language = "XXXXXX", Date = "XXXXXX", - Default = "XXXXXX", + Default = true, }; var biosset = new Data.Models.Logiqx.BiosSet { Name = "XXXXXX", Description = "XXXXXX", - Default = "XXXXXX", + Default = true, }; var rom = new Data.Models.Logiqx.Rom @@ -443,7 +443,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", release.Region); Assert.Equal("XXXXXX", release.Language); Assert.Equal("XXXXXX", release.Date); - Assert.Equal("XXXXXX", release.Default); + Assert.Equal(true, release.Default); } /// @@ -454,7 +454,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(biosset); Assert.Equal("XXXXXX", biosset.Name); Assert.Equal("XXXXXX", biosset.Description); - Assert.Equal("XXXXXX", biosset.Default); + Assert.Equal(true, biosset.Default); } /// diff --git a/SabreTools.Serialization.CrossModel.Test/M1Tests.cs b/SabreTools.Serialization.CrossModel.Test/M1Tests.cs index 2ece60d7..9034351c 100644 --- a/SabreTools.Serialization.CrossModel.Test/M1Tests.cs +++ b/SabreTools.Serialization.CrossModel.Test/M1Tests.cs @@ -63,7 +63,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Name = "XXXXXX", Description = "XXXXXX", - Default = "XXXXXX", + Default = true, }; var rom = new Data.Models.Listxml.Rom @@ -194,7 +194,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Name = "XXXXXX", Value = "XXXXXX", - Default = "XXXXXX", + Default = true, Condition = condition, }; @@ -219,7 +219,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Name = "XXXXXX", Value = "XXXXXX", - Default = "XXXXXX", + Default = true, Condition = condition, }; @@ -247,7 +247,7 @@ namespace SabreTools.Serialization.CrossModel.Test var adjuster = new Data.Models.Listxml.Adjuster { Name = "XXXXXX", - Default = "XXXXXX", + Default = true, Condition = condition, }; @@ -299,7 +299,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Name = "XXXXXX", DevName = "XXXXXX", - Default = "XXXXXX", + Default = true, }; var slot = new Data.Models.Listxml.Slot @@ -319,7 +319,7 @@ namespace SabreTools.Serialization.CrossModel.Test var ramoption = new Data.Models.Listxml.RamOption { Name = "XXXXXX", - Default = "XXXXXX", + Default = true, Content = "XXXXXX", }; @@ -469,7 +469,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(biosset); Assert.Equal("XXXXXX", biosset.Name); Assert.Equal("XXXXXX", biosset.Description); - Assert.Equal("XXXXXX", biosset.Default); + Assert.Equal(true, biosset.Default); } /// @@ -675,7 +675,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(dipvalue); Assert.Equal("XXXXXX", dipvalue.Name); Assert.Equal("XXXXXX", dipvalue.Value); - Assert.Equal("XXXXXX", dipvalue.Default); + Assert.Equal(true, dipvalue.Default); Validate(dipvalue.Condition); } @@ -718,7 +718,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(confsetting); Assert.Equal("XXXXXX", confsetting.Name); Assert.Equal("XXXXXX", confsetting.Value); - Assert.Equal("XXXXXX", confsetting.Default); + Assert.Equal(true, confsetting.Default); Validate(confsetting.Condition); } @@ -751,7 +751,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(adjuster); Assert.Equal("XXXXXX", adjuster.Name); - Assert.Equal("XXXXXX", adjuster.Default); + Assert.Equal(true, adjuster.Default); Validate(adjuster.Condition); } @@ -843,7 +843,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(slotoption); Assert.Equal("XXXXXX", slotoption.Name); Assert.Equal("XXXXXX", slotoption.DevName); - Assert.Equal("XXXXXX", slotoption.Default); + Assert.Equal(true, slotoption.Default); } /// @@ -865,7 +865,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(ramoption); Assert.Equal("XXXXXX", ramoption.Name); - Assert.Equal("XXXXXX", ramoption.Default); + Assert.Equal(true, ramoption.Default); Assert.Equal("XXXXXX", ramoption.Content); } } diff --git a/SabreTools.Serialization.CrossModel.Test/MessTests.cs b/SabreTools.Serialization.CrossModel.Test/MessTests.cs index aa584f06..c024874a 100644 --- a/SabreTools.Serialization.CrossModel.Test/MessTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/MessTests.cs @@ -63,7 +63,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Name = "XXXXXX", Description = "XXXXXX", - Default = "XXXXXX", + Default = true, }; var rom = new Data.Models.Listxml.Rom @@ -194,7 +194,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Name = "XXXXXX", Value = "XXXXXX", - Default = "XXXXXX", + Default = true, Condition = condition, }; @@ -219,7 +219,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Name = "XXXXXX", Value = "XXXXXX", - Default = "XXXXXX", + Default = true, Condition = condition, }; @@ -247,7 +247,7 @@ namespace SabreTools.Serialization.CrossModel.Test var adjuster = new Data.Models.Listxml.Adjuster { Name = "XXXXXX", - Default = "XXXXXX", + Default = true, Condition = condition, }; @@ -299,7 +299,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Name = "XXXXXX", DevName = "XXXXXX", - Default = "XXXXXX", + Default = true, }; var slot = new Data.Models.Listxml.Slot @@ -319,7 +319,7 @@ namespace SabreTools.Serialization.CrossModel.Test var ramoption = new Data.Models.Listxml.RamOption { Name = "XXXXXX", - Default = "XXXXXX", + Default = true, Content = "XXXXXX", }; @@ -469,7 +469,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(biosset); Assert.Equal("XXXXXX", biosset.Name); Assert.Equal("XXXXXX", biosset.Description); - Assert.Equal("XXXXXX", biosset.Default); + Assert.Equal(true, biosset.Default); } /// @@ -675,7 +675,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(dipvalue); Assert.Equal("XXXXXX", dipvalue.Name); Assert.Equal("XXXXXX", dipvalue.Value); - Assert.Equal("XXXXXX", dipvalue.Default); + Assert.Equal(true, dipvalue.Default); Validate(dipvalue.Condition); } @@ -718,7 +718,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(confsetting); Assert.Equal("XXXXXX", confsetting.Name); Assert.Equal("XXXXXX", confsetting.Value); - Assert.Equal("XXXXXX", confsetting.Default); + Assert.Equal(true, confsetting.Default); Validate(confsetting.Condition); } @@ -751,7 +751,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(adjuster); Assert.Equal("XXXXXX", adjuster.Name); - Assert.Equal("XXXXXX", adjuster.Default); + Assert.Equal(true, adjuster.Default); Validate(adjuster.Condition); } @@ -843,7 +843,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(slotoption); Assert.Equal("XXXXXX", slotoption.Name); Assert.Equal("XXXXXX", slotoption.DevName); - Assert.Equal("XXXXXX", slotoption.Default); + Assert.Equal(true, slotoption.Default); } /// @@ -865,7 +865,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(ramoption); Assert.Equal("XXXXXX", ramoption.Name); - Assert.Equal("XXXXXX", ramoption.Default); + Assert.Equal(true, ramoption.Default); Assert.Equal("XXXXXX", ramoption.Content); } } diff --git a/SabreTools.Serialization.CrossModel.Test/OfflineListTests.cs b/SabreTools.Serialization.CrossModel.Test/OfflineListTests.cs index 001a2f99..a24d3aac 100644 --- a/SabreTools.Serialization.CrossModel.Test/OfflineListTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/OfflineListTests.cs @@ -39,85 +39,85 @@ namespace SabreTools.Serialization.CrossModel.Test { Visible = "XXXXXX", InNamingOption = "XXXXXX", - Default = "XXXXXX", + Default = true, }, Location = new Data.Models.OfflineList.Location { Visible = "XXXXXX", InNamingOption = "XXXXXX", - Default = "XXXXXX", + Default = true, }, Publisher = new Data.Models.OfflineList.Publisher { Visible = "XXXXXX", InNamingOption = "XXXXXX", - Default = "XXXXXX", + Default = true, }, SourceRom = new Data.Models.OfflineList.SourceRom { Visible = "XXXXXX", InNamingOption = "XXXXXX", - Default = "XXXXXX", + Default = true, }, SaveType = new Data.Models.OfflineList.SaveType { Visible = "XXXXXX", InNamingOption = "XXXXXX", - Default = "XXXXXX", + Default = true, }, RomSize = new Data.Models.OfflineList.RomSize { Visible = "XXXXXX", InNamingOption = "XXXXXX", - Default = "XXXXXX", + Default = true, }, ReleaseNumber = new Data.Models.OfflineList.ReleaseNumber { Visible = "XXXXXX", InNamingOption = "XXXXXX", - Default = "XXXXXX", + Default = true, }, ImageNumber = new Data.Models.OfflineList.ImageNumber { Visible = "XXXXXX", InNamingOption = "XXXXXX", - Default = "XXXXXX", + Default = true, }, LanguageNumber = new Data.Models.OfflineList.LanguageNumber { Visible = "XXXXXX", InNamingOption = "XXXXXX", - Default = "XXXXXX", + Default = true, }, Comment = new Data.Models.OfflineList.Comment { Visible = "XXXXXX", InNamingOption = "XXXXXX", - Default = "XXXXXX", + Default = true, }, RomCRC = new Data.Models.OfflineList.RomCRC { Visible = "XXXXXX", InNamingOption = "XXXXXX", - Default = "XXXXXX", + Default = true, }, Im1CRC = new Data.Models.OfflineList.Im1CRC { Visible = "XXXXXX", InNamingOption = "XXXXXX", - Default = "XXXXXX", + Default = true, }, Im2CRC = new Data.Models.OfflineList.Im2CRC { Visible = "XXXXXX", InNamingOption = "XXXXXX", - Default = "XXXXXX", + Default = true, }, Languages = new Data.Models.OfflineList.Languages { Visible = "XXXXXX", InNamingOption = "XXXXXX", - Default = "XXXXXX", + Default = true, }, }; @@ -149,7 +149,7 @@ namespace SabreTools.Serialization.CrossModel.Test var to = new Data.Models.OfflineList.To { Value = "XXXXXX", - Default = "XXXXXX", + Default = true, Auto = "XXXXXX", Find = [find], }; @@ -286,7 +286,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(info); Assert.Equal("XXXXXX", info.Visible); Assert.Equal("XXXXXX", info.InNamingOption); - Assert.Equal("XXXXXX", info.Default); + Assert.Equal(true, info.Default); } /// @@ -339,7 +339,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(to); Assert.Equal("XXXXXX", to.Value); - Assert.Equal("XXXXXX", to.Default); + Assert.Equal(true, to.Default); Assert.Equal("XXXXXX", to.Auto); Assert.NotNull(to.Find); diff --git a/SabreTools.Serialization.CrossModel.Test/SoftwareListTests.cs b/SabreTools.Serialization.CrossModel.Test/SoftwareListTests.cs index adc77d6d..0f4132a2 100644 --- a/SabreTools.Serialization.CrossModel.Test/SoftwareListTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/SoftwareListTests.cs @@ -95,7 +95,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Name = "XXXXXX", Value = "XXXXXX", - Default = "XXXXXX", + Default = true, }; var dipswitch = new Data.Models.SoftwareList.DipSwitch @@ -304,7 +304,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(dipvalue); Assert.Equal("XXXXXX", dipvalue.Name); Assert.Equal("XXXXXX", dipvalue.Value); - Assert.Equal("XXXXXX", dipvalue.Default); + Assert.Equal(true, dipvalue.Default); } } } diff --git a/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs b/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs index cb198879..decc19fb 100644 --- a/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs @@ -155,7 +155,7 @@ namespace SabreTools.Serialization.CrossModel { Name = item.Name, Description = item.ReadString(Data.Models.Metadata.BiosSet.DescriptionKey), - Default = item.ReadString(Data.Models.Metadata.BiosSet.DefaultKey), + Default = item.Default, }; return biosset; } @@ -184,7 +184,7 @@ namespace SabreTools.Serialization.CrossModel { Name = item.Name, Entry = item[Data.Models.Metadata.DipSwitch.EntryKey] as string[], - Default = item.ReadString(Data.Models.Metadata.DipSwitch.DefaultKey), + Default = item.Default, }; return dipswitch; } @@ -266,7 +266,7 @@ namespace SabreTools.Serialization.CrossModel Region = item.ReadString(Data.Models.Metadata.Release.RegionKey), Language = item.ReadString(Data.Models.Metadata.Release.LanguageKey), Date = item.ReadString(Data.Models.Metadata.Release.DateKey), - Default = item.ReadString(Data.Models.Metadata.Release.DefaultKey), + Default = item.Default, }; return release; } diff --git a/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs b/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs index 0c2f1399..29f6c4e0 100644 --- a/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs @@ -168,7 +168,7 @@ namespace SabreTools.Serialization.CrossModel { Name = item.Name, [Data.Models.Metadata.BiosSet.DescriptionKey] = item.Description, - [Data.Models.Metadata.BiosSet.DefaultKey] = item.Default, + Default = item.Default, }; return biosset; } @@ -197,7 +197,7 @@ namespace SabreTools.Serialization.CrossModel { Name = item.Name, [Data.Models.Metadata.DipSwitch.EntryKey] = item.Entry, - [Data.Models.Metadata.DipSwitch.DefaultKey] = item.Default, + Default = item.Default, }; return dipswitch; } @@ -279,7 +279,7 @@ namespace SabreTools.Serialization.CrossModel [Data.Models.Metadata.Release.RegionKey] = item.Region, [Data.Models.Metadata.Release.LanguageKey] = item.Language, [Data.Models.Metadata.Release.DateKey] = item.Date, - [Data.Models.Metadata.Release.DefaultKey] = item.Default, + Default = item.Default, }; return release; } diff --git a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs index 3064aaa2..f6c89311 100644 --- a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs @@ -149,7 +149,7 @@ namespace SabreTools.Serialization.CrossModel var adjuster = new Adjuster { Name = item.Name, - Default = item.ReadString(Data.Models.Metadata.Adjuster.DefaultKey), + Default = item.Default, }; var condition = item.Read(Data.Models.Metadata.Adjuster.ConditionKey); @@ -180,7 +180,7 @@ namespace SabreTools.Serialization.CrossModel { Name = item.Name, Description = item.ReadString(Data.Models.Metadata.BiosSet.DescriptionKey), - Default = item.ReadString(Data.Models.Metadata.BiosSet.DefaultKey), + Default = item.Default, }; return biosset; } @@ -266,7 +266,7 @@ namespace SabreTools.Serialization.CrossModel { Name = item.Name, Value = item.ReadString(Data.Models.Metadata.ConfSetting.ValueKey), - Default = item.ReadString(Data.Models.Metadata.ConfSetting.DefaultKey), + Default = item.Default, }; var condition = item.Read(Data.Models.Metadata.ConfSetting.ConditionKey); @@ -386,7 +386,7 @@ namespace SabreTools.Serialization.CrossModel { Name = item.Name, Value = item.ReadString(Data.Models.Metadata.DipValue.ValueKey), - Default = item.ReadString(Data.Models.Metadata.DipValue.DefaultKey), + Default = item.Default, }; var condition = item.Read(Data.Models.Metadata.DipValue.ConditionKey); @@ -552,7 +552,7 @@ namespace SabreTools.Serialization.CrossModel var ramOption = new RamOption { Name = item.Name, - Default = item.ReadString(Data.Models.Metadata.RamOption.DefaultKey), + Default = item.Default, Content = item.ReadString(Data.Models.Metadata.RamOption.ContentKey), }; return ramOption; @@ -619,7 +619,7 @@ namespace SabreTools.Serialization.CrossModel { Name = item.Name, DevName = item.ReadString(Data.Models.Metadata.SlotOption.DevNameKey), - Default = item.ReadString(Data.Models.Metadata.SlotOption.DefaultKey), + Default = item.Default, }; return slotOption; } diff --git a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs index 2769f63c..8ffd89eb 100644 --- a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs @@ -183,7 +183,7 @@ namespace SabreTools.Serialization.CrossModel var adjuster = new Data.Models.Metadata.Adjuster { Name = item.Name, - [Data.Models.Metadata.Adjuster.DefaultKey] = item.Default, + Default = item.Default, }; if (item.Condition is not null) @@ -213,7 +213,7 @@ namespace SabreTools.Serialization.CrossModel { Name = item.Name, [Data.Models.Metadata.BiosSet.DescriptionKey] = item.Description, - [Data.Models.Metadata.BiosSet.DefaultKey] = item.Default, + Default = item.Default, }; return biosset; } @@ -302,7 +302,7 @@ namespace SabreTools.Serialization.CrossModel { Name = item.Name, [Data.Models.Metadata.ConfSetting.ValueKey] = item.Value, - [Data.Models.Metadata.ConfSetting.DefaultKey] = item.Default, + Default = item.Default, }; if (item.Condition is not null) @@ -425,7 +425,7 @@ namespace SabreTools.Serialization.CrossModel { Name = item.Name, [Data.Models.Metadata.DipValue.ValueKey] = item.Value, - [Data.Models.Metadata.DipValue.DefaultKey] = item.Default, + Default = item.Default, }; if (item.Condition is not null) @@ -591,7 +591,7 @@ namespace SabreTools.Serialization.CrossModel var ramOption = new Data.Models.Metadata.RamOption { Name = item.Name, - [Data.Models.Metadata.RamOption.DefaultKey] = item.Default, + Default = item.Default, [Data.Models.Metadata.RamOption.ContentKey] = item.Content, }; return ramOption; @@ -660,7 +660,7 @@ namespace SabreTools.Serialization.CrossModel { Name = item.Name, [Data.Models.Metadata.SlotOption.DevNameKey] = item.DevName, - [Data.Models.Metadata.SlotOption.DefaultKey] = item.Default, + Default = item.Default, }; return slotOption; } diff --git a/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs b/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs index 8ded8f42..1cc2a969 100644 --- a/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs @@ -208,7 +208,7 @@ namespace SabreTools.Serialization.CrossModel { Name = item.Name, Description = item.ReadString(Data.Models.Metadata.BiosSet.DescriptionKey), - Default = item.ReadString(Data.Models.Metadata.BiosSet.DefaultKey), + Default = item.Default, }; return biosset; } @@ -288,7 +288,7 @@ namespace SabreTools.Serialization.CrossModel Region = item.ReadString(Data.Models.Metadata.Release.RegionKey), Language = item.ReadString(Data.Models.Metadata.Release.LanguageKey), Date = item.ReadString(Data.Models.Metadata.Release.DateKey), - Default = item.ReadString(Data.Models.Metadata.Release.DefaultKey), + Default = item.Default, }; return release; } diff --git a/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs b/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs index 33ed2d0b..ffefd9f4 100644 --- a/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs @@ -202,7 +202,7 @@ namespace SabreTools.Serialization.CrossModel { Name = item.Name, [Data.Models.Metadata.BiosSet.DescriptionKey] = item.Description, - [Data.Models.Metadata.BiosSet.DefaultKey] = item.Default, + Default = item.Default, }; return biosset; } @@ -282,7 +282,7 @@ namespace SabreTools.Serialization.CrossModel [Data.Models.Metadata.Release.RegionKey] = item.Region, [Data.Models.Metadata.Release.LanguageKey] = item.Language, [Data.Models.Metadata.Release.DateKey] = item.Date, - [Data.Models.Metadata.Release.DefaultKey] = item.Default, + Default = item.Default, }; return release; } diff --git a/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs b/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs index e5bcaf2f..911dd26c 100644 --- a/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs @@ -114,7 +114,7 @@ namespace SabreTools.Serialization.CrossModel { Name = item.Name, Value = item.ReadString(Data.Models.Metadata.DipValue.ValueKey), - Default = item.ReadString(Data.Models.Metadata.DipValue.DefaultKey), + Default = item.Default, }; return dipValue; } diff --git a/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs b/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs index ea3f33e5..73318d52 100644 --- a/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs @@ -113,7 +113,7 @@ namespace SabreTools.Serialization.CrossModel { Name = item.Name, [Data.Models.Metadata.DipValue.ValueKey] = item.Value, - [Data.Models.Metadata.DipValue.DefaultKey] = item.Default, + Default = item.Default, }; return dipValue; } diff --git a/SabreTools.Serialization.Readers.Test/ClrMameProTests.cs b/SabreTools.Serialization.Readers.Test/ClrMameProTests.cs index cd0969e2..8539c4b7 100644 --- a/SabreTools.Serialization.Readers.Test/ClrMameProTests.cs +++ b/SabreTools.Serialization.Readers.Test/ClrMameProTests.cs @@ -201,14 +201,14 @@ namespace SabreTools.Serialization.Readers.Test Region = "XXXXXX", Language = "XXXXXX", Date = "XXXXXX", - Default = "XXXXXX", + Default = true, }; var biosset = new Data.Models.ClrMamePro.BiosSet { Name = "XXXXXX", Description = "XXXXXX", - Default = "XXXXXX", + Default = true, }; var rom = new Data.Models.ClrMamePro.Rom @@ -309,7 +309,7 @@ namespace SabreTools.Serialization.Readers.Test { Name = "XXXXXX", Entry = ["XXXXXX"], - Default = "XXXXXX", + Default = true, }; var driver = new Data.Models.ClrMamePro.Driver @@ -456,7 +456,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", release.Region); Assert.Equal("XXXXXX", release.Language); Assert.Equal("XXXXXX", release.Date); - Assert.Equal("XXXXXX", release.Default); + Assert.Equal(true, release.Default); } /// @@ -467,7 +467,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(biosset); Assert.Equal("XXXXXX", biosset.Name); Assert.Equal("XXXXXX", biosset.Description); - Assert.Equal("XXXXXX", biosset.Default); + Assert.Equal(true, biosset.Default); } /// @@ -612,7 +612,7 @@ namespace SabreTools.Serialization.Readers.Test string entry = Assert.Single(dipswitch.Entry); Assert.Equal("XXXXXX", entry); - Assert.Equal("XXXXXX", dipswitch.Default); + Assert.Equal(true, dipswitch.Default); } /// diff --git a/SabreTools.Serialization.Readers.Test/ListxmlTests.cs b/SabreTools.Serialization.Readers.Test/ListxmlTests.cs index 6405b523..12c75f96 100644 --- a/SabreTools.Serialization.Readers.Test/ListxmlTests.cs +++ b/SabreTools.Serialization.Readers.Test/ListxmlTests.cs @@ -134,7 +134,7 @@ namespace SabreTools.Serialization.Readers.Test { Name = "XXXXXX", Description = "XXXXXX", - Default = "XXXXXX", + Default = true, }; var rom = new Data.Models.Listxml.Rom @@ -265,7 +265,7 @@ namespace SabreTools.Serialization.Readers.Test { Name = "XXXXXX", Value = "XXXXXX", - Default = "XXXXXX", + Default = true, Condition = condition, }; @@ -290,7 +290,7 @@ namespace SabreTools.Serialization.Readers.Test { Name = "XXXXXX", Value = "XXXXXX", - Default = "XXXXXX", + Default = true, Condition = condition, }; @@ -318,7 +318,7 @@ namespace SabreTools.Serialization.Readers.Test var adjuster = new Data.Models.Listxml.Adjuster { Name = "XXXXXX", - Default = "XXXXXX", + Default = true, Condition = condition, }; @@ -370,7 +370,7 @@ namespace SabreTools.Serialization.Readers.Test { Name = "XXXXXX", DevName = "XXXXXX", - Default = "XXXXXX", + Default = true, }; var slot = new Data.Models.Listxml.Slot @@ -390,7 +390,7 @@ namespace SabreTools.Serialization.Readers.Test var ramoption = new Data.Models.Listxml.RamOption { Name = "XXXXXX", - Default = "XXXXXX", + Default = true, Content = "XXXXXX", }; @@ -542,7 +542,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(biosset); Assert.Equal("XXXXXX", biosset.Name); Assert.Equal("XXXXXX", biosset.Description); - Assert.Equal("XXXXXX", biosset.Default); + Assert.Equal(true, biosset.Default); } /// @@ -748,7 +748,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(dipvalue); Assert.Equal("XXXXXX", dipvalue.Name); Assert.Equal("XXXXXX", dipvalue.Value); - Assert.Equal("XXXXXX", dipvalue.Default); + Assert.Equal(true, dipvalue.Default); Validate(dipvalue.Condition); } @@ -791,7 +791,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(confsetting); Assert.Equal("XXXXXX", confsetting.Name); Assert.Equal("XXXXXX", confsetting.Value); - Assert.Equal("XXXXXX", confsetting.Default); + Assert.Equal(true, confsetting.Default); Validate(confsetting.Condition); } @@ -824,7 +824,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(adjuster); Assert.Equal("XXXXXX", adjuster.Name); - Assert.Equal("XXXXXX", adjuster.Default); + Assert.Equal(true, adjuster.Default); Validate(adjuster.Condition); } @@ -916,7 +916,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(slotoption); Assert.Equal("XXXXXX", slotoption.Name); Assert.Equal("XXXXXX", slotoption.DevName); - Assert.Equal("XXXXXX", slotoption.Default); + Assert.Equal(true, slotoption.Default); } /// @@ -938,7 +938,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(ramoption); Assert.Equal("XXXXXX", ramoption.Name); - Assert.Equal("XXXXXX", ramoption.Default); + Assert.Equal(true, ramoption.Default); Assert.Equal("XXXXXX", ramoption.Content); } } diff --git a/SabreTools.Serialization.Readers.Test/LogiqxTests.cs b/SabreTools.Serialization.Readers.Test/LogiqxTests.cs index c7f44a7d..e2918439 100644 --- a/SabreTools.Serialization.Readers.Test/LogiqxTests.cs +++ b/SabreTools.Serialization.Readers.Test/LogiqxTests.cs @@ -200,14 +200,14 @@ namespace SabreTools.Serialization.Readers.Test Region = "XXXXXX", Language = "XXXXXX", Date = "XXXXXX", - Default = "XXXXXX", + Default = true, }; var biosset = new Data.Models.Logiqx.BiosSet { Name = "XXXXXX", Description = "XXXXXX", - Default = "XXXXXX", + Default = true, }; var rom = new Data.Models.Logiqx.Rom @@ -493,7 +493,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", release.Region); Assert.Equal("XXXXXX", release.Language); Assert.Equal("XXXXXX", release.Date); - Assert.Equal("XXXXXX", release.Default); + Assert.Equal(true, release.Default); } /// @@ -504,7 +504,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(biosset); Assert.Equal("XXXXXX", biosset.Name); Assert.Equal("XXXXXX", biosset.Description); - Assert.Equal("XXXXXX", biosset.Default); + Assert.Equal(true, biosset.Default); } /// diff --git a/SabreTools.Serialization.Readers.Test/M1Tests.cs b/SabreTools.Serialization.Readers.Test/M1Tests.cs index a9493600..090d6a64 100644 --- a/SabreTools.Serialization.Readers.Test/M1Tests.cs +++ b/SabreTools.Serialization.Readers.Test/M1Tests.cs @@ -130,7 +130,7 @@ namespace SabreTools.Serialization.Readers.Test { Name = "XXXXXX", Description = "XXXXXX", - Default = "XXXXXX", + Default = true, }; var rom = new Data.Models.Listxml.Rom @@ -261,7 +261,7 @@ namespace SabreTools.Serialization.Readers.Test { Name = "XXXXXX", Value = "XXXXXX", - Default = "XXXXXX", + Default = true, Condition = condition, }; @@ -286,7 +286,7 @@ namespace SabreTools.Serialization.Readers.Test { Name = "XXXXXX", Value = "XXXXXX", - Default = "XXXXXX", + Default = true, Condition = condition, }; @@ -314,7 +314,7 @@ namespace SabreTools.Serialization.Readers.Test var adjuster = new Data.Models.Listxml.Adjuster { Name = "XXXXXX", - Default = "XXXXXX", + Default = true, Condition = condition, }; @@ -366,7 +366,7 @@ namespace SabreTools.Serialization.Readers.Test { Name = "XXXXXX", DevName = "XXXXXX", - Default = "XXXXXX", + Default = true, }; var slot = new Data.Models.Listxml.Slot @@ -386,7 +386,7 @@ namespace SabreTools.Serialization.Readers.Test var ramoption = new Data.Models.Listxml.RamOption { Name = "XXXXXX", - Default = "XXXXXX", + Default = true, Content = "XXXXXX", }; @@ -536,7 +536,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(biosset); Assert.Equal("XXXXXX", biosset.Name); Assert.Equal("XXXXXX", biosset.Description); - Assert.Equal("XXXXXX", biosset.Default); + Assert.Equal(true, biosset.Default); } /// @@ -742,7 +742,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(dipvalue); Assert.Equal("XXXXXX", dipvalue.Name); Assert.Equal("XXXXXX", dipvalue.Value); - Assert.Equal("XXXXXX", dipvalue.Default); + Assert.Equal(true, dipvalue.Default); Validate(dipvalue.Condition); } @@ -785,7 +785,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(confsetting); Assert.Equal("XXXXXX", confsetting.Name); Assert.Equal("XXXXXX", confsetting.Value); - Assert.Equal("XXXXXX", confsetting.Default); + Assert.Equal(true, confsetting.Default); Validate(confsetting.Condition); } @@ -818,7 +818,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(adjuster); Assert.Equal("XXXXXX", adjuster.Name); - Assert.Equal("XXXXXX", adjuster.Default); + Assert.Equal(true, adjuster.Default); Validate(adjuster.Condition); } @@ -910,7 +910,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(slotoption); Assert.Equal("XXXXXX", slotoption.Name); Assert.Equal("XXXXXX", slotoption.DevName); - Assert.Equal("XXXXXX", slotoption.Default); + Assert.Equal(true, slotoption.Default); } /// @@ -932,7 +932,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(ramoption); Assert.Equal("XXXXXX", ramoption.Name); - Assert.Equal("XXXXXX", ramoption.Default); + Assert.Equal(true, ramoption.Default); Assert.Equal("XXXXXX", ramoption.Content); } } diff --git a/SabreTools.Serialization.Readers.Test/MessTests.cs b/SabreTools.Serialization.Readers.Test/MessTests.cs index 4abddd17..d808f559 100644 --- a/SabreTools.Serialization.Readers.Test/MessTests.cs +++ b/SabreTools.Serialization.Readers.Test/MessTests.cs @@ -130,7 +130,7 @@ namespace SabreTools.Serialization.Readers.Test { Name = "XXXXXX", Description = "XXXXXX", - Default = "XXXXXX", + Default = true, }; var rom = new Data.Models.Listxml.Rom @@ -261,7 +261,7 @@ namespace SabreTools.Serialization.Readers.Test { Name = "XXXXXX", Value = "XXXXXX", - Default = "XXXXXX", + Default = true, Condition = condition, }; @@ -286,7 +286,7 @@ namespace SabreTools.Serialization.Readers.Test { Name = "XXXXXX", Value = "XXXXXX", - Default = "XXXXXX", + Default = true, Condition = condition, }; @@ -314,7 +314,7 @@ namespace SabreTools.Serialization.Readers.Test var adjuster = new Data.Models.Listxml.Adjuster { Name = "XXXXXX", - Default = "XXXXXX", + Default = true, Condition = condition, }; @@ -366,7 +366,7 @@ namespace SabreTools.Serialization.Readers.Test { Name = "XXXXXX", DevName = "XXXXXX", - Default = "XXXXXX", + Default = true, }; var slot = new Data.Models.Listxml.Slot @@ -386,7 +386,7 @@ namespace SabreTools.Serialization.Readers.Test var ramoption = new Data.Models.Listxml.RamOption { Name = "XXXXXX", - Default = "XXXXXX", + Default = true, Content = "XXXXXX", }; @@ -536,7 +536,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(biosset); Assert.Equal("XXXXXX", biosset.Name); Assert.Equal("XXXXXX", biosset.Description); - Assert.Equal("XXXXXX", biosset.Default); + Assert.Equal(true, biosset.Default); } /// @@ -742,7 +742,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(dipvalue); Assert.Equal("XXXXXX", dipvalue.Name); Assert.Equal("XXXXXX", dipvalue.Value); - Assert.Equal("XXXXXX", dipvalue.Default); + Assert.Equal(true, dipvalue.Default); Validate(dipvalue.Condition); } @@ -785,7 +785,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(confsetting); Assert.Equal("XXXXXX", confsetting.Name); Assert.Equal("XXXXXX", confsetting.Value); - Assert.Equal("XXXXXX", confsetting.Default); + Assert.Equal(true, confsetting.Default); Validate(confsetting.Condition); } @@ -818,7 +818,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(adjuster); Assert.Equal("XXXXXX", adjuster.Name); - Assert.Equal("XXXXXX", adjuster.Default); + Assert.Equal(true, adjuster.Default); Validate(adjuster.Condition); } @@ -910,7 +910,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(slotoption); Assert.Equal("XXXXXX", slotoption.Name); Assert.Equal("XXXXXX", slotoption.DevName); - Assert.Equal("XXXXXX", slotoption.Default); + Assert.Equal(true, slotoption.Default); } /// @@ -932,7 +932,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(ramoption); Assert.Equal("XXXXXX", ramoption.Name); - Assert.Equal("XXXXXX", ramoption.Default); + Assert.Equal(true, ramoption.Default); Assert.Equal("XXXXXX", ramoption.Content); } } diff --git a/SabreTools.Serialization.Readers.Test/OfflineListTests.cs b/SabreTools.Serialization.Readers.Test/OfflineListTests.cs index f0c821b5..c283bf6e 100644 --- a/SabreTools.Serialization.Readers.Test/OfflineListTests.cs +++ b/SabreTools.Serialization.Readers.Test/OfflineListTests.cs @@ -105,85 +105,85 @@ namespace SabreTools.Serialization.Readers.Test { Visible = "XXXXXX", InNamingOption = "XXXXXX", - Default = "XXXXXX", + Default = true, }, Location = new Data.Models.OfflineList.Location { Visible = "XXXXXX", InNamingOption = "XXXXXX", - Default = "XXXXXX", + Default = true, }, Publisher = new Data.Models.OfflineList.Publisher { Visible = "XXXXXX", InNamingOption = "XXXXXX", - Default = "XXXXXX", + Default = true, }, SourceRom = new Data.Models.OfflineList.SourceRom { Visible = "XXXXXX", InNamingOption = "XXXXXX", - Default = "XXXXXX", + Default = true, }, SaveType = new Data.Models.OfflineList.SaveType { Visible = "XXXXXX", InNamingOption = "XXXXXX", - Default = "XXXXXX", + Default = true, }, RomSize = new Data.Models.OfflineList.RomSize { Visible = "XXXXXX", InNamingOption = "XXXXXX", - Default = "XXXXXX", + Default = true, }, ReleaseNumber = new Data.Models.OfflineList.ReleaseNumber { Visible = "XXXXXX", InNamingOption = "XXXXXX", - Default = "XXXXXX", + Default = true, }, ImageNumber = new Data.Models.OfflineList.ImageNumber { Visible = "XXXXXX", InNamingOption = "XXXXXX", - Default = "XXXXXX", + Default = true, }, LanguageNumber = new Data.Models.OfflineList.LanguageNumber { Visible = "XXXXXX", InNamingOption = "XXXXXX", - Default = "XXXXXX", + Default = true, }, Comment = new Data.Models.OfflineList.Comment { Visible = "XXXXXX", InNamingOption = "XXXXXX", - Default = "XXXXXX", + Default = true, }, RomCRC = new Data.Models.OfflineList.RomCRC { Visible = "XXXXXX", InNamingOption = "XXXXXX", - Default = "XXXXXX", + Default = true, }, Im1CRC = new Data.Models.OfflineList.Im1CRC { Visible = "XXXXXX", InNamingOption = "XXXXXX", - Default = "XXXXXX", + Default = true, }, Im2CRC = new Data.Models.OfflineList.Im2CRC { Visible = "XXXXXX", InNamingOption = "XXXXXX", - Default = "XXXXXX", + Default = true, }, Languages = new Data.Models.OfflineList.Languages { Visible = "XXXXXX", InNamingOption = "XXXXXX", - Default = "XXXXXX", + Default = true, }, }; @@ -215,7 +215,7 @@ namespace SabreTools.Serialization.Readers.Test var to = new Data.Models.OfflineList.To { Value = "XXXXXX", - Default = "XXXXXX", + Default = true, Auto = "XXXXXX", Find = [find], }; @@ -352,7 +352,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(info); Assert.Equal("XXXXXX", info.Visible); Assert.Equal("XXXXXX", info.InNamingOption); - Assert.Equal("XXXXXX", info.Default); + Assert.Equal(true, info.Default); } /// @@ -405,7 +405,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(to); Assert.Equal("XXXXXX", to.Value); - Assert.Equal("XXXXXX", to.Default); + Assert.Equal(true, to.Default); Assert.Equal("XXXXXX", to.Auto); Assert.NotNull(to.Find); diff --git a/SabreTools.Serialization.Readers.Test/SoftwareListTests.cs b/SabreTools.Serialization.Readers.Test/SoftwareListTests.cs index bbe3a738..5b568e52 100644 --- a/SabreTools.Serialization.Readers.Test/SoftwareListTests.cs +++ b/SabreTools.Serialization.Readers.Test/SoftwareListTests.cs @@ -168,7 +168,7 @@ namespace SabreTools.Serialization.Readers.Test { Name = "XXXXXX", Value = "XXXXXX", - Default = "XXXXXX", + Default = true, }; var dipswitch = new Data.Models.SoftwareList.DipSwitch @@ -377,7 +377,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(dipvalue); Assert.Equal("XXXXXX", dipvalue.Name); Assert.Equal("XXXXXX", dipvalue.Value); - Assert.Equal("XXXXXX", dipvalue.Default); + Assert.Equal(true, dipvalue.Default); } } } diff --git a/SabreTools.Serialization.Readers/ClrMamePro.cs b/SabreTools.Serialization.Readers/ClrMamePro.cs index aed9f3ce..e7952b3c 100644 --- a/SabreTools.Serialization.Readers/ClrMamePro.cs +++ b/SabreTools.Serialization.Readers/ClrMamePro.cs @@ -2,6 +2,7 @@ using System; using System.Collections.Generic; using System.IO; using System.Text; +using SabreTools.Data.Extensions; using SabreTools.Data.Models.ClrMamePro; using SabreTools.Text.ClrMamePro; @@ -463,7 +464,7 @@ namespace SabreTools.Serialization.Readers release.Date = kvp.Value; break; case "default": - release.Default = kvp.Value; + release.Default = kvp.Value.AsYesNo(); break; default: itemAdditional.Add($"{kvp.Key}: {kvp.Value}"); @@ -496,7 +497,7 @@ namespace SabreTools.Serialization.Readers biosset.Description = kvp.Value; break; case "default": - biosset.Default = kvp.Value; + biosset.Default = kvp.Value.AsYesNo(); break; default: // TODO: Log invalid values @@ -920,7 +921,7 @@ namespace SabreTools.Serialization.Readers entries.Add(kvp.Value); break; case "default": - dipswitch.Default = kvp.Value; + dipswitch.Default = kvp.Value.AsYesNo(); break; default: // TODO: Log invalid values diff --git a/SabreTools.Serialization.Readers/Listxml.cs b/SabreTools.Serialization.Readers/Listxml.cs index f51cbad5..e497a1f6 100644 --- a/SabreTools.Serialization.Readers/Listxml.cs +++ b/SabreTools.Serialization.Readers/Listxml.cs @@ -2,6 +2,7 @@ using System; using System.Collections.Generic; using System.IO; using System.Xml; +using SabreTools.Data.Extensions; using SabreTools.Data.Models.Listxml; namespace SabreTools.Serialization.Readers @@ -117,7 +118,7 @@ namespace SabreTools.Serialization.Readers var obj = new Adjuster(); obj.Name = reader.GetAttribute("name"); - obj.Default = reader.GetAttribute("default"); + obj.Default = reader.GetAttribute("default").AsYesNo(); while (reader.Read()) { @@ -172,7 +173,7 @@ namespace SabreTools.Serialization.Readers obj.Name = reader.GetAttribute("name"); obj.Description = reader.GetAttribute("description"); - obj.Default = reader.GetAttribute("default"); + obj.Default = reader.GetAttribute("default").AsYesNo(); return obj; } @@ -300,7 +301,7 @@ namespace SabreTools.Serialization.Readers obj.Name = reader.GetAttribute("name"); obj.Value = reader.GetAttribute("value"); - obj.Default = reader.GetAttribute("default"); + obj.Default = reader.GetAttribute("default").AsYesNo(); while (reader.Read()) { @@ -511,7 +512,7 @@ namespace SabreTools.Serialization.Readers obj.Name = reader.GetAttribute("name"); obj.Value = reader.GetAttribute("value"); - obj.Default = reader.GetAttribute("default"); + obj.Default = reader.GetAttribute("default").AsYesNo(); while (reader.Read()) { @@ -1028,7 +1029,7 @@ namespace SabreTools.Serialization.Readers var obj = new RamOption(); obj.Name = reader.GetAttribute("name"); - obj.Default = reader.GetAttribute("default"); + obj.Default = reader.GetAttribute("default").AsYesNo(); obj.Content = reader.ReadElementContentAsString(); return obj; @@ -1128,7 +1129,7 @@ namespace SabreTools.Serialization.Readers obj.Name = reader.GetAttribute("name"); obj.DevName = reader.GetAttribute("devname"); - obj.Default = reader.GetAttribute("default"); + obj.Default = reader.GetAttribute("default").AsYesNo(); return obj; } diff --git a/SabreTools.Serialization.Readers/Logiqx.cs b/SabreTools.Serialization.Readers/Logiqx.cs index 95c71af7..cbead97a 100644 --- a/SabreTools.Serialization.Readers/Logiqx.cs +++ b/SabreTools.Serialization.Readers/Logiqx.cs @@ -2,6 +2,7 @@ using System; using System.Collections.Generic; using System.IO; using System.Xml; +using SabreTools.Data.Extensions; using SabreTools.Data.Models.Logiqx; namespace SabreTools.Serialization.Readers @@ -316,7 +317,7 @@ namespace SabreTools.Serialization.Readers obj.Name = reader.GetAttribute("name"); obj.Description = reader.GetAttribute("description"); - obj.Default = reader.GetAttribute("default"); + obj.Default = reader.GetAttribute("default").AsYesNo(); return obj; } @@ -673,7 +674,7 @@ namespace SabreTools.Serialization.Readers obj.Region = reader.GetAttribute("region"); obj.Language = reader.GetAttribute("language"); obj.Date = reader.GetAttribute("date"); - obj.Default = reader.GetAttribute("default"); + obj.Default = reader.GetAttribute("default").AsYesNo(); return obj; } diff --git a/SabreTools.Serialization.Readers/M1.cs b/SabreTools.Serialization.Readers/M1.cs index 32513c67..8e744ff4 100644 --- a/SabreTools.Serialization.Readers/M1.cs +++ b/SabreTools.Serialization.Readers/M1.cs @@ -2,6 +2,7 @@ using System; using System.Collections.Generic; using System.IO; using System.Xml; +using SabreTools.Data.Extensions; using SabreTools.Data.Models.Listxml; namespace SabreTools.Serialization.Readers @@ -115,7 +116,7 @@ namespace SabreTools.Serialization.Readers var obj = new Adjuster(); obj.Name = reader.GetAttribute("name"); - obj.Default = reader.GetAttribute("default"); + obj.Default = reader.GetAttribute("default").AsYesNo(); while (reader.Read()) { @@ -170,7 +171,7 @@ namespace SabreTools.Serialization.Readers obj.Name = reader.GetAttribute("name"); obj.Description = reader.GetAttribute("description"); - obj.Default = reader.GetAttribute("default"); + obj.Default = reader.GetAttribute("default").AsYesNo(); return obj; } @@ -298,7 +299,7 @@ namespace SabreTools.Serialization.Readers obj.Name = reader.GetAttribute("name"); obj.Value = reader.GetAttribute("value"); - obj.Default = reader.GetAttribute("default"); + obj.Default = reader.GetAttribute("default").AsYesNo(); while (reader.Read()) { @@ -509,7 +510,7 @@ namespace SabreTools.Serialization.Readers obj.Name = reader.GetAttribute("name"); obj.Value = reader.GetAttribute("value"); - obj.Default = reader.GetAttribute("default"); + obj.Default = reader.GetAttribute("default").AsYesNo(); while (reader.Read()) { @@ -1026,7 +1027,7 @@ namespace SabreTools.Serialization.Readers var obj = new RamOption(); obj.Name = reader.GetAttribute("name"); - obj.Default = reader.GetAttribute("default"); + obj.Default = reader.GetAttribute("default").AsYesNo(); obj.Content = reader.ReadElementContentAsString(); return obj; @@ -1126,7 +1127,7 @@ namespace SabreTools.Serialization.Readers obj.Name = reader.GetAttribute("name"); obj.DevName = reader.GetAttribute("devname"); - obj.Default = reader.GetAttribute("default"); + obj.Default = reader.GetAttribute("default").AsYesNo(); return obj; } diff --git a/SabreTools.Serialization.Readers/Mess.cs b/SabreTools.Serialization.Readers/Mess.cs index 6419846c..1a197ff2 100644 --- a/SabreTools.Serialization.Readers/Mess.cs +++ b/SabreTools.Serialization.Readers/Mess.cs @@ -2,6 +2,7 @@ using System; using System.Collections.Generic; using System.IO; using System.Xml; +using SabreTools.Data.Extensions; using SabreTools.Data.Models.Listxml; namespace SabreTools.Serialization.Readers @@ -115,7 +116,7 @@ namespace SabreTools.Serialization.Readers var obj = new Adjuster(); obj.Name = reader.GetAttribute("name"); - obj.Default = reader.GetAttribute("default"); + obj.Default = reader.GetAttribute("default").AsYesNo(); while (reader.Read()) { @@ -170,7 +171,7 @@ namespace SabreTools.Serialization.Readers obj.Name = reader.GetAttribute("name"); obj.Description = reader.GetAttribute("description"); - obj.Default = reader.GetAttribute("default"); + obj.Default = reader.GetAttribute("default").AsYesNo(); return obj; } @@ -298,7 +299,7 @@ namespace SabreTools.Serialization.Readers obj.Name = reader.GetAttribute("name"); obj.Value = reader.GetAttribute("value"); - obj.Default = reader.GetAttribute("default"); + obj.Default = reader.GetAttribute("default").AsYesNo(); while (reader.Read()) { @@ -509,7 +510,7 @@ namespace SabreTools.Serialization.Readers obj.Name = reader.GetAttribute("name"); obj.Value = reader.GetAttribute("value"); - obj.Default = reader.GetAttribute("default"); + obj.Default = reader.GetAttribute("default").AsYesNo(); while (reader.Read()) { @@ -1026,7 +1027,7 @@ namespace SabreTools.Serialization.Readers var obj = new RamOption(); obj.Name = reader.GetAttribute("name"); - obj.Default = reader.GetAttribute("default"); + obj.Default = reader.GetAttribute("default").AsYesNo(); obj.Content = reader.ReadElementContentAsString(); return obj; @@ -1126,7 +1127,7 @@ namespace SabreTools.Serialization.Readers obj.Name = reader.GetAttribute("name"); obj.DevName = reader.GetAttribute("devname"); - obj.Default = reader.GetAttribute("default"); + obj.Default = reader.GetAttribute("default").AsYesNo(); return obj; } diff --git a/SabreTools.Serialization.Readers/OfflineList.cs b/SabreTools.Serialization.Readers/OfflineList.cs index ef32ea0f..2a469d3e 100644 --- a/SabreTools.Serialization.Readers/OfflineList.cs +++ b/SabreTools.Serialization.Readers/OfflineList.cs @@ -2,6 +2,7 @@ using System; using System.Collections.Generic; using System.IO; using System.Xml; +using SabreTools.Data.Extensions; using SabreTools.Data.Models.OfflineList; namespace SabreTools.Serialization.Readers @@ -167,7 +168,7 @@ namespace SabreTools.Serialization.Readers obj.Visible = reader.GetAttribute("visible"); obj.InNamingOption = reader.GetAttribute("inNamingOption"); - obj.Default = reader.GetAttribute("default"); + obj.Default = reader.GetAttribute("default").AsYesNo(); return obj; } @@ -578,7 +579,7 @@ namespace SabreTools.Serialization.Readers obj.Visible = reader.GetAttribute("visible"); obj.InNamingOption = reader.GetAttribute("inNamingOption"); - obj.Default = reader.GetAttribute("default"); + obj.Default = reader.GetAttribute("default").AsYesNo(); return obj; } @@ -594,7 +595,7 @@ namespace SabreTools.Serialization.Readers obj.Visible = reader.GetAttribute("visible"); obj.InNamingOption = reader.GetAttribute("inNamingOption"); - obj.Default = reader.GetAttribute("default"); + obj.Default = reader.GetAttribute("default").AsYesNo(); return obj; } @@ -627,7 +628,7 @@ namespace SabreTools.Serialization.Readers obj.Visible = reader.GetAttribute("visible"); obj.InNamingOption = reader.GetAttribute("inNamingOption"); - obj.Default = reader.GetAttribute("default"); + obj.Default = reader.GetAttribute("default").AsYesNo(); return obj; } @@ -822,7 +823,7 @@ namespace SabreTools.Serialization.Readers obj.Visible = reader.GetAttribute("visible"); obj.InNamingOption = reader.GetAttribute("inNamingOption"); - obj.Default = reader.GetAttribute("default"); + obj.Default = reader.GetAttribute("default").AsYesNo(); return obj; } @@ -838,7 +839,7 @@ namespace SabreTools.Serialization.Readers obj.Visible = reader.GetAttribute("visible"); obj.InNamingOption = reader.GetAttribute("inNamingOption"); - obj.Default = reader.GetAttribute("default"); + obj.Default = reader.GetAttribute("default").AsYesNo(); return obj; } @@ -854,7 +855,7 @@ namespace SabreTools.Serialization.Readers obj.Visible = reader.GetAttribute("visible"); obj.InNamingOption = reader.GetAttribute("inNamingOption"); - obj.Default = reader.GetAttribute("default"); + obj.Default = reader.GetAttribute("default").AsYesNo(); return obj; } @@ -870,7 +871,7 @@ namespace SabreTools.Serialization.Readers obj.Visible = reader.GetAttribute("visible"); obj.InNamingOption = reader.GetAttribute("inNamingOption"); - obj.Default = reader.GetAttribute("default"); + obj.Default = reader.GetAttribute("default").AsYesNo(); return obj; } @@ -886,7 +887,7 @@ namespace SabreTools.Serialization.Readers obj.Visible = reader.GetAttribute("visible"); obj.InNamingOption = reader.GetAttribute("inNamingOption"); - obj.Default = reader.GetAttribute("default"); + obj.Default = reader.GetAttribute("default").AsYesNo(); return obj; } @@ -902,7 +903,7 @@ namespace SabreTools.Serialization.Readers obj.Visible = reader.GetAttribute("visible"); obj.InNamingOption = reader.GetAttribute("inNamingOption"); - obj.Default = reader.GetAttribute("default"); + obj.Default = reader.GetAttribute("default").AsYesNo(); return obj; } @@ -918,7 +919,7 @@ namespace SabreTools.Serialization.Readers obj.Visible = reader.GetAttribute("visible"); obj.InNamingOption = reader.GetAttribute("inNamingOption"); - obj.Default = reader.GetAttribute("default"); + obj.Default = reader.GetAttribute("default").AsYesNo(); return obj; } @@ -934,7 +935,7 @@ namespace SabreTools.Serialization.Readers obj.Visible = reader.GetAttribute("visible"); obj.InNamingOption = reader.GetAttribute("inNamingOption"); - obj.Default = reader.GetAttribute("default"); + obj.Default = reader.GetAttribute("default").AsYesNo(); return obj; } @@ -950,7 +951,7 @@ namespace SabreTools.Serialization.Readers obj.Visible = reader.GetAttribute("visible"); obj.InNamingOption = reader.GetAttribute("inNamingOption"); - obj.Default = reader.GetAttribute("default"); + obj.Default = reader.GetAttribute("default").AsYesNo(); return obj; } @@ -966,7 +967,7 @@ namespace SabreTools.Serialization.Readers obj.Visible = reader.GetAttribute("visible"); obj.InNamingOption = reader.GetAttribute("inNamingOption"); - obj.Default = reader.GetAttribute("default"); + obj.Default = reader.GetAttribute("default").AsYesNo(); return obj; } @@ -1077,7 +1078,7 @@ namespace SabreTools.Serialization.Readers var obj = new To(); obj.Value = reader.GetAttribute("value"); - obj.Default = reader.GetAttribute("default"); + obj.Default = reader.GetAttribute("default").AsYesNo(); obj.Auto = reader.GetAttribute("auto"); List finds = []; diff --git a/SabreTools.Serialization.Readers/SoftwareList.cs b/SabreTools.Serialization.Readers/SoftwareList.cs index 6efdf443..649d0cce 100644 --- a/SabreTools.Serialization.Readers/SoftwareList.cs +++ b/SabreTools.Serialization.Readers/SoftwareList.cs @@ -2,6 +2,7 @@ using System; using System.Collections.Generic; using System.IO; using System.Xml; +using SabreTools.Data.Extensions; using SabreTools.Data.Models.SoftwareList; namespace SabreTools.Serialization.Readers @@ -224,7 +225,7 @@ namespace SabreTools.Serialization.Readers obj.Name = reader.GetAttribute("name"); obj.Value = reader.GetAttribute("value"); - obj.Default = reader.GetAttribute("default"); + obj.Default = reader.GetAttribute("default").AsYesNo(); return obj; } diff --git a/SabreTools.Serialization.Writers/ClrMamePro.cs b/SabreTools.Serialization.Writers/ClrMamePro.cs index 10e1e155..75ea39b9 100644 --- a/SabreTools.Serialization.Writers/ClrMamePro.cs +++ b/SabreTools.Serialization.Writers/ClrMamePro.cs @@ -1,5 +1,6 @@ using System.IO; using System.Text; +using SabreTools.Data.Extensions; using SabreTools.Data.Models.ClrMamePro; using SabreTools.IO.Extensions; using SabreTools.Text.ClrMamePro; @@ -217,7 +218,7 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("region", release.Region, throwOnError: true); writer.WriteOptionalAttributeString("language", release.Language); writer.WriteOptionalAttributeString("date", release.Date); - writer.WriteOptionalAttributeString("default", release.Default); + writer.WriteOptionalAttributeString("default", release.Default.FromYesNo()); writer.WriteEndElement(); // release } } @@ -238,7 +239,7 @@ namespace SabreTools.Serialization.Writers writer.WriteStartElement("biosset"); writer.WriteRequiredAttributeString("name", biosset.Name, throwOnError: true); writer.WriteRequiredAttributeString("description", biosset.Description, throwOnError: true); - writer.WriteOptionalAttributeString("default", biosset.Default); + writer.WriteOptionalAttributeString("default", biosset.Default.FromYesNo()); writer.WriteEndElement(); // release } } @@ -477,7 +478,7 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("entry", entry); } - writer.WriteOptionalAttributeString("default", dipswitch.Default); + writer.WriteOptionalAttributeString("default", dipswitch.Default.FromYesNo()); writer.WriteEndElement(); // dipswitch } } diff --git a/SabreTools.Serialization.Writers/Listxml.cs b/SabreTools.Serialization.Writers/Listxml.cs index 2dfef2c8..b834c5eb 100644 --- a/SabreTools.Serialization.Writers/Listxml.cs +++ b/SabreTools.Serialization.Writers/Listxml.cs @@ -1,6 +1,7 @@ using System.IO; using System.Text; using System.Xml; +using SabreTools.Data.Extensions; using SabreTools.Data.Models.Listxml; using SabreTools.IO.Extensions; using SabreTools.Text.Extensions; @@ -75,7 +76,7 @@ namespace SabreTools.Serialization.Writers writer.WriteStartElement("adjuster"); writer.WriteRequiredAttributeString("name", obj.Name); - writer.WriteOptionalAttributeString("default", obj.Default); + writer.WriteOptionalAttributeString("default", obj.Default.FromYesNo()); if (obj.Condition is not null) WriteCondition(obj.Condition, writer); @@ -108,7 +109,7 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("name", obj.Name); writer.WriteRequiredAttributeString("description", obj.Description); - writer.WriteOptionalAttributeString("default", obj.Default); + writer.WriteOptionalAttributeString("default", obj.Default.FromYesNo()); writer.WriteEndElement(); } @@ -210,7 +211,7 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("name", obj.Name); writer.WriteRequiredAttributeString("value", obj.Value); - writer.WriteOptionalAttributeString("default", obj.Default); + writer.WriteOptionalAttributeString("default", obj.Default.FromYesNo()); if (obj.Condition is not null) WriteCondition(obj.Condition, writer); @@ -348,7 +349,7 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("name", obj.Name); writer.WriteRequiredAttributeString("value", obj.Value); - writer.WriteOptionalAttributeString("default", obj.Default); + writer.WriteOptionalAttributeString("default", obj.Default.FromYesNo()); if (obj.Condition is not null) WriteCondition(obj.Condition, writer); @@ -710,7 +711,7 @@ namespace SabreTools.Serialization.Writers writer.WriteStartElement("ramoption"); writer.WriteRequiredAttributeString("name", obj.Name); - writer.WriteOptionalAttributeString("default", obj.Default); + writer.WriteOptionalAttributeString("default", obj.Default.FromYesNo()); if (obj.Content is not null) writer.WriteValue(obj.Content); @@ -790,7 +791,7 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("name", obj.Name); writer.WriteRequiredAttributeString("devname", obj.DevName); - writer.WriteOptionalAttributeString("default", obj.Default); + writer.WriteOptionalAttributeString("default", obj.Default.FromYesNo()); writer.WriteEndElement(); } diff --git a/SabreTools.Serialization.Writers/Logiqx.cs b/SabreTools.Serialization.Writers/Logiqx.cs index 7fc4030d..ab668ac0 100644 --- a/SabreTools.Serialization.Writers/Logiqx.cs +++ b/SabreTools.Serialization.Writers/Logiqx.cs @@ -1,6 +1,7 @@ using System.IO; using System.Text; using System.Xml; +using SabreTools.Data.Extensions; using SabreTools.Data.Models.Logiqx; using SabreTools.IO.Extensions; using SabreTools.Text.Extensions; @@ -213,7 +214,7 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("name", obj.Name); writer.WriteRequiredAttributeString("description", obj.Description); - writer.WriteOptionalAttributeString("default", obj.Default); + writer.WriteOptionalAttributeString("default", obj.Default.FromYesNo()); writer.WriteEndElement(); } @@ -466,7 +467,7 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("region", obj.Region); writer.WriteOptionalAttributeString("language", obj.Language); writer.WriteOptionalAttributeString("date", obj.Date); - writer.WriteOptionalAttributeString("default", obj.Default); + writer.WriteOptionalAttributeString("default", obj.Default.FromYesNo()); writer.WriteEndElement(); } diff --git a/SabreTools.Serialization.Writers/M1.cs b/SabreTools.Serialization.Writers/M1.cs index 0ebd55cf..cb9c879c 100644 --- a/SabreTools.Serialization.Writers/M1.cs +++ b/SabreTools.Serialization.Writers/M1.cs @@ -1,6 +1,7 @@ using System.IO; using System.Text; using System.Xml; +using SabreTools.Data.Extensions; using SabreTools.Data.Models.Listxml; using SabreTools.IO.Extensions; using SabreTools.Text.Extensions; @@ -73,7 +74,7 @@ namespace SabreTools.Serialization.Writers writer.WriteStartElement("adjuster"); writer.WriteRequiredAttributeString("name", obj.Name); - writer.WriteOptionalAttributeString("default", obj.Default); + writer.WriteOptionalAttributeString("default", obj.Default.FromYesNo()); if (obj.Condition is not null) WriteCondition(obj.Condition, writer); @@ -106,7 +107,7 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("name", obj.Name); writer.WriteRequiredAttributeString("description", obj.Description); - writer.WriteOptionalAttributeString("default", obj.Default); + writer.WriteOptionalAttributeString("default", obj.Default.FromYesNo()); writer.WriteEndElement(); } @@ -208,7 +209,7 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("name", obj.Name); writer.WriteRequiredAttributeString("value", obj.Value); - writer.WriteOptionalAttributeString("default", obj.Default); + writer.WriteOptionalAttributeString("default", obj.Default.FromYesNo()); if (obj.Condition is not null) WriteCondition(obj.Condition, writer); @@ -346,7 +347,7 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("name", obj.Name); writer.WriteRequiredAttributeString("value", obj.Value); - writer.WriteOptionalAttributeString("default", obj.Default); + writer.WriteOptionalAttributeString("default", obj.Default.FromYesNo()); if (obj.Condition is not null) WriteCondition(obj.Condition, writer); @@ -708,7 +709,7 @@ namespace SabreTools.Serialization.Writers writer.WriteStartElement("ramoption"); writer.WriteRequiredAttributeString("name", obj.Name); - writer.WriteOptionalAttributeString("default", obj.Default); + writer.WriteOptionalAttributeString("default", obj.Default.FromYesNo()); if (obj.Content is not null) writer.WriteValue(obj.Content); @@ -788,7 +789,7 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("name", obj.Name); writer.WriteRequiredAttributeString("devname", obj.DevName); - writer.WriteOptionalAttributeString("default", obj.Default); + writer.WriteOptionalAttributeString("default", obj.Default.FromYesNo()); writer.WriteEndElement(); } diff --git a/SabreTools.Serialization.Writers/Mess.cs b/SabreTools.Serialization.Writers/Mess.cs index d37bfa3e..698bd133 100644 --- a/SabreTools.Serialization.Writers/Mess.cs +++ b/SabreTools.Serialization.Writers/Mess.cs @@ -1,6 +1,7 @@ using System.IO; using System.Text; using System.Xml; +using SabreTools.Data.Extensions; using SabreTools.Data.Models.Listxml; using SabreTools.IO.Extensions; using SabreTools.Text.Extensions; @@ -73,7 +74,7 @@ namespace SabreTools.Serialization.Writers writer.WriteStartElement("adjuster"); writer.WriteRequiredAttributeString("name", obj.Name); - writer.WriteOptionalAttributeString("default", obj.Default); + writer.WriteOptionalAttributeString("default", obj.Default.FromYesNo()); if (obj.Condition is not null) WriteCondition(obj.Condition, writer); @@ -106,7 +107,7 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("name", obj.Name); writer.WriteRequiredAttributeString("description", obj.Description); - writer.WriteOptionalAttributeString("default", obj.Default); + writer.WriteOptionalAttributeString("default", obj.Default.FromYesNo()); writer.WriteEndElement(); } @@ -208,7 +209,7 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("name", obj.Name); writer.WriteRequiredAttributeString("value", obj.Value); - writer.WriteOptionalAttributeString("default", obj.Default); + writer.WriteOptionalAttributeString("default", obj.Default.FromYesNo()); if (obj.Condition is not null) WriteCondition(obj.Condition, writer); @@ -346,7 +347,7 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("name", obj.Name); writer.WriteRequiredAttributeString("value", obj.Value); - writer.WriteOptionalAttributeString("default", obj.Default); + writer.WriteOptionalAttributeString("default", obj.Default.FromYesNo()); if (obj.Condition is not null) WriteCondition(obj.Condition, writer); @@ -708,7 +709,7 @@ namespace SabreTools.Serialization.Writers writer.WriteStartElement("ramoption"); writer.WriteRequiredAttributeString("name", obj.Name); - writer.WriteOptionalAttributeString("default", obj.Default); + writer.WriteOptionalAttributeString("default", obj.Default.FromYesNo()); if (obj.Content is not null) writer.WriteValue(obj.Content); @@ -788,7 +789,7 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("name", obj.Name); writer.WriteRequiredAttributeString("devname", obj.DevName); - writer.WriteOptionalAttributeString("default", obj.Default); + writer.WriteOptionalAttributeString("default", obj.Default.FromYesNo()); writer.WriteEndElement(); } diff --git a/SabreTools.Serialization.Writers/OfflineList.cs b/SabreTools.Serialization.Writers/OfflineList.cs index 05e9d9ad..0ff67661 100644 --- a/SabreTools.Serialization.Writers/OfflineList.cs +++ b/SabreTools.Serialization.Writers/OfflineList.cs @@ -333,7 +333,7 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalAttributeString("visible", obj.Visible); writer.WriteOptionalAttributeString("inNamingOption", obj.InNamingOption); - writer.WriteOptionalAttributeString("default", obj.Default); + writer.WriteOptionalAttributeString("default", obj.Default.ToString()?.ToLowerInvariant()); writer.WriteEndElement(); } @@ -441,7 +441,7 @@ namespace SabreTools.Serialization.Writers writer.WriteStartElement("to"); writer.WriteOptionalAttributeString("value", obj.Value); - writer.WriteOptionalAttributeString("default", obj.Default); + writer.WriteOptionalAttributeString("default", obj.Default.ToString()?.ToLowerInvariant()); writer.WriteOptionalAttributeString("auto", obj.Auto); if (obj.Find is not null && obj.Find.Length > 0) diff --git a/SabreTools.Serialization.Writers/SabreTools.Serialization.Writers.csproj b/SabreTools.Serialization.Writers/SabreTools.Serialization.Writers.csproj index da86eb6b..355919c3 100644 --- a/SabreTools.Serialization.Writers/SabreTools.Serialization.Writers.csproj +++ b/SabreTools.Serialization.Writers/SabreTools.Serialization.Writers.csproj @@ -37,6 +37,7 @@ + diff --git a/SabreTools.Serialization.Writers/SoftwareList.cs b/SabreTools.Serialization.Writers/SoftwareList.cs index 64f202a0..e7b316bf 100644 --- a/SabreTools.Serialization.Writers/SoftwareList.cs +++ b/SabreTools.Serialization.Writers/SoftwareList.cs @@ -1,6 +1,7 @@ using System.IO; using System.Text; using System.Xml; +using SabreTools.Data.Extensions; using SabreTools.Data.Models.SoftwareList; using SabreTools.IO.Extensions; using SabreTools.Text.Extensions; @@ -153,7 +154,7 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("name", obj.Name); writer.WriteRequiredAttributeString("value", obj.Value); - writer.WriteOptionalAttributeString("default", obj.Default); + writer.WriteOptionalAttributeString("default", obj.Default.FromYesNo()); writer.WriteEndElement(); } From 451e89afff9dc5b15f196f4bffd1f7a40a78c08c Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Wed, 1 Apr 2026 21:59:16 -0400 Subject: [PATCH 008/142] Boolean stuff convert to property --- .../MetadataExtensionsTests.cs | 10 +- .../MetadataExtensions.cs | 98 ++++++++++++++- SabreTools.Data.Models/AttractMode/Row.cs | 2 +- SabreTools.Data.Models/ClrMamePro/BiosSet.cs | 6 +- .../ClrMamePro/ClrMamePro.cs | 4 +- .../ClrMamePro/DipSwitch.cs | 6 +- SabreTools.Data.Models/ClrMamePro/Input.cs | 16 +-- SabreTools.Data.Models/ClrMamePro/Release.cs | 10 +- SabreTools.Data.Models/ClrMamePro/Rom.cs | 4 +- SabreTools.Data.Models/Listxml/Chip.cs | 2 +- .../Listxml/ConfLocation.cs | 2 +- SabreTools.Data.Models/Listxml/Control.cs | 2 +- SabreTools.Data.Models/Listxml/DipLocation.cs | 2 +- SabreTools.Data.Models/Listxml/Disk.cs | 4 +- SabreTools.Data.Models/Listxml/Display.cs | 2 +- SabreTools.Data.Models/Listxml/Driver.cs | 8 +- SabreTools.Data.Models/Listxml/GameBase.cs | 8 +- SabreTools.Data.Models/Listxml/Input.cs | 4 +- SabreTools.Data.Models/Listxml/Mame.cs | 2 +- SabreTools.Data.Models/Listxml/RamOption.cs | 1 + SabreTools.Data.Models/Listxml/Rom.cs | 6 +- SabreTools.Data.Models/Logiqx/Datafile.cs | 2 +- SabreTools.Data.Models/Logiqx/Driver.cs | 8 +- SabreTools.Data.Models/Logiqx/GameBase.cs | 8 +- SabreTools.Data.Models/Logiqx/Rom.cs | 4 +- SabreTools.Data.Models/Logiqx/RomCenter.cs | 6 +- SabreTools.Data.Models/Metadata/Adjuster.cs | 1 + SabreTools.Data.Models/Metadata/BiosSet.cs | 1 + SabreTools.Data.Models/Metadata/Chip.cs | 6 +- .../Metadata/ConfLocation.cs | 6 +- .../Metadata/ConfSetting.cs | 1 + SabreTools.Data.Models/Metadata/Control.cs | 10 +- .../Metadata/DipLocation.cs | 6 +- SabreTools.Data.Models/Metadata/DipSwitch.cs | 1 + SabreTools.Data.Models/Metadata/DipValue.cs | 1 + SabreTools.Data.Models/Metadata/Disk.cs | 12 +- SabreTools.Data.Models/Metadata/Display.cs | 8 +- SabreTools.Data.Models/Metadata/Driver.cs | 28 +++-- SabreTools.Data.Models/Metadata/Header.cs | 30 ++--- SabreTools.Data.Models/Metadata/Input.cs | 16 ++- SabreTools.Data.Models/Metadata/Machine.cs | 25 ++-- SabreTools.Data.Models/Metadata/RamOption.cs | 1 + SabreTools.Data.Models/Metadata/Release.cs | 1 + SabreTools.Data.Models/Metadata/Rom.cs | 36 +++--- SabreTools.Data.Models/Metadata/SlotOption.cs | 1 + .../OfflineList/InfoBase.cs | 4 +- SabreTools.Data.Models/OfflineList/To.cs | 2 +- SabreTools.Data.Models/SoftwareList/Disk.cs | 2 +- .../DatFileTests.FromMetadata.cs | 116 +++++++++--------- .../DatFileTests.Splitting.cs | 32 ++--- .../DatFileTests.ToMetadata.cs | 58 ++++----- .../DatFile.FromMetadata.cs | 20 +-- .../DatFile.Splitting.cs | 12 +- SabreTools.Metadata.DatFiles/DatHeader.cs | 30 +++++ .../Formats/DiskTests.cs | 4 +- SabreTools.Metadata.DatItems/Formats/Chip.cs | 15 ++- .../Formats/ConfLocation.cs | 18 +-- .../Formats/Control.cs | 14 ++- .../Formats/DipLocation.cs | 18 +-- SabreTools.Metadata.DatItems/Formats/Disk.cs | 20 +-- .../Formats/Display.cs | 14 ++- .../Formats/Driver.cs | 44 ++++--- SabreTools.Metadata.DatItems/Formats/Input.cs | 20 +-- SabreTools.Metadata.DatItems/Formats/Rom.cs | 96 +++++++++------ SabreTools.Metadata.DatItems/Machine.cs | 40 ++++-- SabreTools.Metadata.Filter/FilterObject.cs | 99 +++++++++++++++ SabreTools.Metadata.Filter/FilterRunner.cs | 6 +- .../AttractModeTests.cs | 4 +- .../ClrMameProTests.cs | 20 +-- .../ListxmlTests.cs | 86 ++++++------- .../LogiqxTests.cs | 58 ++++----- .../M1Tests.cs | 80 ++++++------ .../MessTests.cs | 80 ++++++------ .../SoftwareListTests.cs | 4 +- .../AttractMode.Deserializer.cs | 2 +- .../AttractMode.Serializer.cs | 2 +- .../ClrMamePro.Deserializer.cs | 10 +- .../ClrMamePro.Serializer.cs | 10 +- .../Listrom.Deserializer.cs | 2 +- .../Listrom.Serializer.cs | 2 +- .../Listxml.Deserializer.cs | 42 +++---- .../Listxml.Serializer.cs | 42 +++---- .../Logiqx.Deserializer.cs | 28 ++--- .../Logiqx.Serializer.cs | 28 ++--- ...SabreTools.Serialization.CrossModel.csproj | 1 + .../SoftwareList.Deserializer.cs | 2 +- .../SoftwareList.Serializer.cs | 2 +- .../AttractModeTests.cs | 4 +- .../ClrMameProTests.cs | 20 +-- .../ListxmlTests.cs | 86 ++++++------- .../LogiqxTests.cs | 58 ++++----- .../M1Tests.cs | 80 ++++++------ .../MessTests.cs | 80 ++++++------ .../SoftwareListTests.cs | 4 +- .../AttractMode.cs | 3 +- .../ClrMamePro.cs | 10 +- SabreTools.Serialization.Readers/Listxml.cs | 42 +++---- SabreTools.Serialization.Readers/Logiqx.cs | 28 ++--- SabreTools.Serialization.Readers/M1.cs | 40 +++--- SabreTools.Serialization.Readers/Mess.cs | 40 +++--- .../SoftwareList.cs | 2 +- .../AttractMode.cs | 2 +- .../ClrMamePro.cs | 10 +- SabreTools.Serialization.Writers/Listxml.cs | 42 +++---- SabreTools.Serialization.Writers/Logiqx.cs | 28 ++--- SabreTools.Serialization.Writers/M1.cs | 40 +++--- SabreTools.Serialization.Writers/Mess.cs | 40 +++--- .../SoftwareList.cs | 2 +- 108 files changed, 1298 insertions(+), 970 deletions(-) diff --git a/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs b/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs index 05672d49..22501218 100644 --- a/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs +++ b/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs @@ -23,13 +23,13 @@ namespace SabreTools.Data.Extensions.Test Rom? actual = self.ConvertToRom(); Assert.NotNull(actual); - Assert.Equal(6, actual.Count); + Assert.Equal(5, actual.Count); Assert.Equal(ItemType.Rom, actual.ItemType); Assert.Null(actual.Name); Assert.Null(actual[Rom.MergeKey]); Assert.Null(actual[Rom.RegionKey]); Assert.Null(actual[Rom.StatusKey]); - Assert.Null(actual[Rom.OptionalKey]); + Assert.Null(actual.Optional); Assert.Null(actual[Rom.MD5Key]); Assert.Null(actual[Rom.SHA1Key]); } @@ -43,7 +43,7 @@ namespace SabreTools.Data.Extensions.Test [Disk.MergeKey] = "XXXXXX", [Disk.RegionKey] = "XXXXXX", [Disk.StatusKey] = "XXXXXX", - [Disk.OptionalKey] = "XXXXXX", + Optional = true, [Disk.MD5Key] = "XXXXXX", [Disk.SHA1Key] = "XXXXXX", }; @@ -51,13 +51,13 @@ namespace SabreTools.Data.Extensions.Test Rom? actual = self.ConvertToRom(); Assert.NotNull(actual); - Assert.Equal(6, actual.Count); + Assert.Equal(5, actual.Count); Assert.Equal(ItemType.Rom, actual.ItemType); Assert.Equal("XXXXXX.chd", actual.Name); Assert.Equal("XXXXXX", actual[Rom.MergeKey]); Assert.Equal("XXXXXX", actual[Rom.RegionKey]); Assert.Equal("XXXXXX", actual[Rom.StatusKey]); - Assert.Equal("XXXXXX", actual[Rom.OptionalKey]); + Assert.Equal(true, actual.Optional); Assert.Equal("XXXXXX", actual[Rom.MD5Key]); Assert.Equal("XXXXXX", actual[Rom.SHA1Key]); } diff --git a/SabreTools.Data.Extensions/MetadataExtensions.cs b/SabreTools.Data.Extensions/MetadataExtensions.cs index 36d8c2ca..1be262c0 100644 --- a/SabreTools.Data.Extensions/MetadataExtensions.cs +++ b/SabreTools.Data.Extensions/MetadataExtensions.cs @@ -137,12 +137,108 @@ namespace SabreTools.Data.Extensions /// /// Deep clone a DictionaryBase object /// + /// TODO: Move this to Clone methods in each file when keys go away entirely public static DictionaryBase? Clone(this DictionaryBase self) { // If construction failed, we can't do anything if (Activator.CreateInstance(self.GetType()) is not DictionaryBase clone) return null; + // Handle individual type properties + if (self is Adjuster selfAdjuster && clone is Adjuster cloneAdjuster) + { + cloneAdjuster.Default = selfAdjuster.Default; + } + else if (self is BiosSet selfBiosSet && clone is BiosSet cloneBiosSet) + { + cloneBiosSet.Default = selfBiosSet.Default; + } + else if (self is Chip selfChip && clone is Chip cloneChip) + { + cloneChip.SoundOnly = selfChip.SoundOnly; + } + else if (self is ConfLocation selfConfLocation && clone is ConfLocation cloneConfLocation) + { + cloneConfLocation.Inverted = selfConfLocation.Inverted; + } + else if (self is ConfSetting selfConfSetting && clone is ConfSetting cloneConfSetting) + { + cloneConfSetting.Default = selfConfSetting.Default; + } + else if (self is Control selfControl && clone is Control cloneControl) + { + cloneControl.Reverse = selfControl.Reverse; + } + else if (self is DipLocation selfDipLocation && clone is DipLocation cloneDipLocation) + { + cloneDipLocation.Inverted = selfDipLocation.Inverted; + } + else if (self is DipSwitch selfDipSwitch && clone is DipSwitch cloneDipSwitch) + { + cloneDipSwitch.Default = selfDipSwitch.Default; + } + else if (self is DipValue selfDipValue && clone is DipValue cloneDipValue) + { + cloneDipValue.Default = selfDipValue.Default; + } + else if (self is Disk selfDisk && clone is Disk cloneDisk) + { + cloneDisk.Optional = selfDisk.Optional; + cloneDisk.Writable = selfDisk.Writable; + } + else if (self is Display selfDisplay && clone is Display cloneDisplay) + { + cloneDisplay.FlipX = selfDisplay.FlipX; + } + else if (self is Driver selfDriver && clone is Driver cloneDriver) + { + cloneDriver.Incomplete = selfDriver.Incomplete; + cloneDriver.NoSoundHardware = selfDriver.NoSoundHardware; + cloneDriver.RequiresArtwork = selfDriver.RequiresArtwork; + cloneDriver.Unofficial = selfDriver.Unofficial; + } + else if (self is Header selfHeader && clone is Header cloneHeader) + { + cloneHeader.Debug = selfHeader.Debug; + cloneHeader.ForceZipping = selfHeader.ForceZipping; + cloneHeader.LockBiosMode = selfHeader.LockBiosMode; + cloneHeader.LockRomMode = selfHeader.LockRomMode; + cloneHeader.LockSampleMode = selfHeader.LockSampleMode; + } + else if (self is Input selfInput && clone is Input cloneInput) + { + cloneInput.Service = selfInput.Service; + cloneInput.Tilt = selfInput.Tilt; + } + else if (self is Machine selfMachine && clone is Machine cloneMachine) + { + cloneMachine.IsBios = selfMachine.IsBios; + cloneMachine.IsDevice = selfMachine.IsDevice; + cloneMachine.IsMechanical = selfMachine.IsMechanical; + cloneMachine.Runnable = selfMachine.Runnable; + } + else if (self is RamOption selfRamOption && clone is RamOption cloneRamOption) + { + cloneRamOption.Default = selfRamOption.Default; + } + else if (self is Release selfRelease && clone is Release cloneRelease) + { + cloneRelease.Default = selfRelease.Default; + } + else if (self is Rom selfRom && clone is Rom cloneRom) + { + cloneRom.Dispose = selfRom.Dispose; + cloneRom.FileIsAvailable = selfRom.FileIsAvailable; + cloneRom.Inverted = selfRom.Inverted; + cloneRom.MIA = selfRom.MIA; + cloneRom.Optional = selfRom.Optional; + cloneRom.SoundOnly = selfRom.SoundOnly; + } + else if (self is SlotOption selfSlotOption && clone is SlotOption cloneSlotOption) + { + cloneSlotOption.Default = selfSlotOption.Default; + } + // Handle known properties clone.SetName(self.GetName()); @@ -213,7 +309,7 @@ namespace SabreTools.Data.Extensions [Rom.MergeKey] = disk.ReadString(Disk.MergeKey), [Rom.RegionKey] = disk.ReadString(Disk.RegionKey), [Rom.StatusKey] = disk.ReadString(Disk.StatusKey), - [Rom.OptionalKey] = disk.ReadString(Disk.OptionalKey), + Optional = disk.Optional, [Rom.MD5Key] = disk.ReadString(Disk.MD5Key), [Rom.SHA1Key] = disk.ReadString(Disk.SHA1Key), }; diff --git a/SabreTools.Data.Models/AttractMode/Row.cs b/SabreTools.Data.Models/AttractMode/Row.cs index 06867ab5..6f4c648e 100644 --- a/SabreTools.Data.Models/AttractMode/Row.cs +++ b/SabreTools.Data.Models/AttractMode/Row.cs @@ -46,6 +46,6 @@ namespace SabreTools.Data.Models.AttractMode public string? PlayedTime { get; set; } - public string? FileIsAvailable { get; set; } + public bool? FileIsAvailable { get; set; } } } diff --git a/SabreTools.Data.Models/ClrMamePro/BiosSet.cs b/SabreTools.Data.Models/ClrMamePro/BiosSet.cs index c9a79177..a6d069ea 100644 --- a/SabreTools.Data.Models/ClrMamePro/BiosSet.cs +++ b/SabreTools.Data.Models/ClrMamePro/BiosSet.cs @@ -3,15 +3,15 @@ namespace SabreTools.Data.Models.ClrMamePro /// biosset public class BiosSet { - /// name + /// "name" [Required] public string? Name { get; set; } - /// description + /// "description" [Required] public string? Description { get; set; } - /// default + /// "default", (yes|no) "no" public bool? Default { get; set; } } } diff --git a/SabreTools.Data.Models/ClrMamePro/ClrMamePro.cs b/SabreTools.Data.Models/ClrMamePro/ClrMamePro.cs index 4cc061bd..b9255253 100644 --- a/SabreTools.Data.Models/ClrMamePro/ClrMamePro.cs +++ b/SabreTools.Data.Models/ClrMamePro/ClrMamePro.cs @@ -42,8 +42,8 @@ namespace SabreTools.Data.Models.ClrMamePro /// forcemerging public string? ForceMerging { get; set; } - /// forcezipping - public string? ForceZipping { get; set; } + /// forcezipping, (yes|no) "no" + public bool? ForceZipping { get; set; } /// forcepacking public string? ForcePacking { get; set; } diff --git a/SabreTools.Data.Models/ClrMamePro/DipSwitch.cs b/SabreTools.Data.Models/ClrMamePro/DipSwitch.cs index b75d2785..49a970ff 100644 --- a/SabreTools.Data.Models/ClrMamePro/DipSwitch.cs +++ b/SabreTools.Data.Models/ClrMamePro/DipSwitch.cs @@ -4,14 +4,14 @@ namespace SabreTools.Data.Models.ClrMamePro /// dipswitch public class DipSwitch { - /// name + /// "name" [Required] public string? Name { get; set; } - /// entry + /// "entry" public string[]? Entry { get; set; } - /// default, (yes|no) "no" + /// "default", (yes|no) "no" public bool? Default { get; set; } } } diff --git a/SabreTools.Data.Models/ClrMamePro/Input.cs b/SabreTools.Data.Models/ClrMamePro/Input.cs index 3a413113..a956575a 100644 --- a/SabreTools.Data.Models/ClrMamePro/Input.cs +++ b/SabreTools.Data.Models/ClrMamePro/Input.cs @@ -4,24 +4,24 @@ namespace SabreTools.Data.Models.ClrMamePro /// input public class Input { - /// players, Numeric/remarks> + /// "players", Numeric/remarks> [Required] public string? Players { get; set; } - /// control + /// "control" public string? Control { get; set; } - /// buttons, Numeric + /// "buttons", Numeric [Required] public string? Buttons { get; set; } - /// coins, Numeric + /// "coins", Numeric public string? Coins { get; set; } - /// tilt, (yes|no) "no" - public string? Tilt { get; set; } + /// "tilt", (yes|no) "no" + public bool? Tilt { get; set; } - /// service, (yes|no) "no" - public string? Service { get; set; } + /// "service", (yes|no) "no" + public bool? Service { get; set; } } } diff --git a/SabreTools.Data.Models/ClrMamePro/Release.cs b/SabreTools.Data.Models/ClrMamePro/Release.cs index 7c6bf0f7..afb313d8 100644 --- a/SabreTools.Data.Models/ClrMamePro/Release.cs +++ b/SabreTools.Data.Models/ClrMamePro/Release.cs @@ -4,21 +4,21 @@ namespace SabreTools.Data.Models.ClrMamePro /// release public class Release { - /// name + /// "name" [Required] public string? Name { get; set; } - /// region + /// "region" [Required] public string? Region { get; set; } - /// language + /// "language" public string? Language { get; set; } - /// date + /// "date" public string? Date { get; set; } - /// default + /// "default", (yes|no) "no" public bool? Default { get; set; } } } diff --git a/SabreTools.Data.Models/ClrMamePro/Rom.cs b/SabreTools.Data.Models/ClrMamePro/Rom.cs index 4034798e..6e64c274 100644 --- a/SabreTools.Data.Models/ClrMamePro/Rom.cs +++ b/SabreTools.Data.Models/ClrMamePro/Rom.cs @@ -101,10 +101,10 @@ namespace SabreTools.Data.Models.ClrMamePro #region RomVault Extensions /// inverted; Boolean; Appears after Date - public string? Inverted { get; set; } + public bool? Inverted { get; set; } /// mia; Boolean; Appears after Inverted - public string? MIA { get; set; } + public bool? MIA { get; set; } #endregion } diff --git a/SabreTools.Data.Models/Listxml/Chip.cs b/SabreTools.Data.Models/Listxml/Chip.cs index 993a967f..c0d48393 100644 --- a/SabreTools.Data.Models/Listxml/Chip.cs +++ b/SabreTools.Data.Models/Listxml/Chip.cs @@ -20,7 +20,7 @@ namespace SabreTools.Data.Models.Listxml /// Only present in older versions [XmlAttribute("soundonly")] - public string? SoundOnly { get; set; } + public bool? SoundOnly { get; set; } [XmlAttribute("clock")] public string? Clock { get; set; } diff --git a/SabreTools.Data.Models/Listxml/ConfLocation.cs b/SabreTools.Data.Models/Listxml/ConfLocation.cs index dd1da1dc..b6fe99b3 100644 --- a/SabreTools.Data.Models/Listxml/ConfLocation.cs +++ b/SabreTools.Data.Models/Listxml/ConfLocation.cs @@ -17,6 +17,6 @@ namespace SabreTools.Data.Models.Listxml /// (yes|no) "no" [XmlAttribute("inverted")] - public string? Inverted { get; set; } + public bool? Inverted { get; set; } } } diff --git a/SabreTools.Data.Models/Listxml/Control.cs b/SabreTools.Data.Models/Listxml/Control.cs index e5b0f134..3deb7c4e 100644 --- a/SabreTools.Data.Models/Listxml/Control.cs +++ b/SabreTools.Data.Models/Listxml/Control.cs @@ -41,7 +41,7 @@ namespace SabreTools.Data.Models.Listxml /// (yes|no) "no" [XmlAttribute("reverse")] - public string? Reverse { get; set; } + public bool? Reverse { get; set; } /// Numeric? [XmlAttribute("ways")] diff --git a/SabreTools.Data.Models/Listxml/DipLocation.cs b/SabreTools.Data.Models/Listxml/DipLocation.cs index f669f3e5..597ffc4a 100644 --- a/SabreTools.Data.Models/Listxml/DipLocation.cs +++ b/SabreTools.Data.Models/Listxml/DipLocation.cs @@ -17,6 +17,6 @@ namespace SabreTools.Data.Models.Listxml /// (yes|no) "no" [XmlAttribute("inverted")] - public string? Inverted { get; set; } + public bool? Inverted { get; set; } } } diff --git a/SabreTools.Data.Models/Listxml/Disk.cs b/SabreTools.Data.Models/Listxml/Disk.cs index 3b4c6158..79908639 100644 --- a/SabreTools.Data.Models/Listxml/Disk.cs +++ b/SabreTools.Data.Models/Listxml/Disk.cs @@ -29,7 +29,7 @@ namespace SabreTools.Data.Models.Listxml /// (yes|no) "no" [XmlAttribute("writable")] - public string? Writable { get; set; } + public bool? Writable { get; set; } /// (baddump|nodump|good) "good" [XmlAttribute("status")] @@ -37,6 +37,6 @@ namespace SabreTools.Data.Models.Listxml /// (yes|no) "no" [XmlAttribute("optional")] - public string? Optional { get; set; } + public bool? Optional { get; set; } } } diff --git a/SabreTools.Data.Models/Listxml/Display.cs b/SabreTools.Data.Models/Listxml/Display.cs index 885cb5f3..420e5892 100644 --- a/SabreTools.Data.Models/Listxml/Display.cs +++ b/SabreTools.Data.Models/Listxml/Display.cs @@ -20,7 +20,7 @@ namespace SabreTools.Data.Models.Listxml /// (yes|no) "no" [XmlAttribute("flipx")] - public string? FlipX { get; set; } + public bool? FlipX { get; set; } /// Numeric [XmlAttribute("width")] diff --git a/SabreTools.Data.Models/Listxml/Driver.cs b/SabreTools.Data.Models/Listxml/Driver.cs index 56efb119..98f55f50 100644 --- a/SabreTools.Data.Models/Listxml/Driver.cs +++ b/SabreTools.Data.Models/Listxml/Driver.cs @@ -40,18 +40,18 @@ namespace SabreTools.Data.Models.Listxml /// (yes|no) "no" [XmlAttribute("requiresartwork")] - public string? RequiresArtwork { get; set; } + public bool? RequiresArtwork { get; set; } /// (yes|no) "no" [XmlAttribute("unofficial")] - public string? Unofficial { get; set; } + public bool? Unofficial { get; set; } /// (yes|no) "no" [XmlAttribute("nosoundhardware")] - public string? NoSoundHardware { get; set; } + public bool? NoSoundHardware { get; set; } /// (yes|no) "no" [XmlAttribute("incomplete")] - public string? Incomplete { get; set; } + public bool? Incomplete { get; set; } } } diff --git a/SabreTools.Data.Models/Listxml/GameBase.cs b/SabreTools.Data.Models/Listxml/GameBase.cs index bec36fcd..6de1140e 100644 --- a/SabreTools.Data.Models/Listxml/GameBase.cs +++ b/SabreTools.Data.Models/Listxml/GameBase.cs @@ -18,19 +18,19 @@ namespace SabreTools.Data.Models.Listxml /// (yes|no) "no", Machine only [XmlAttribute("isbios")] - public string? IsBios { get; set; } + public bool? IsBios { get; set; } /// (yes|no) "no", Machine only [XmlAttribute("isdevice")] - public string? IsDevice { get; set; } + public bool? IsDevice { get; set; } /// (yes|no) "no", Machine only [XmlAttribute("ismechanical")] - public string? IsMechanical { get; set; } + public bool? IsMechanical { get; set; } /// (yes|no) "no" [XmlAttribute("runnable")] - public string? Runnable { get; set; } + public bool? Runnable { get; set; } [XmlAttribute("cloneof")] public string? CloneOf { get; set; } diff --git a/SabreTools.Data.Models/Listxml/Input.cs b/SabreTools.Data.Models/Listxml/Input.cs index f856df6d..438e7a6c 100644 --- a/SabreTools.Data.Models/Listxml/Input.cs +++ b/SabreTools.Data.Models/Listxml/Input.cs @@ -8,11 +8,11 @@ namespace SabreTools.Data.Models.Listxml { /// (yes|no) "no" [XmlAttribute("service")] - public string? Service { get; set; } + public bool? Service { get; set; } /// (yes|no) "no" [XmlAttribute("tilt")] - public string? Tilt { get; set; } + public bool? Tilt { get; set; } /// Numeric [Required] diff --git a/SabreTools.Data.Models/Listxml/Mame.cs b/SabreTools.Data.Models/Listxml/Mame.cs index 06faa831..a52584c6 100644 --- a/SabreTools.Data.Models/Listxml/Mame.cs +++ b/SabreTools.Data.Models/Listxml/Mame.cs @@ -11,7 +11,7 @@ namespace SabreTools.Data.Models.Listxml /// (yes|no) "no" [XmlAttribute("debug")] - public string? Debug { get; set; } + public bool? Debug { get; set; } [Required] [XmlAttribute("mameconfig")] diff --git a/SabreTools.Data.Models/Listxml/RamOption.cs b/SabreTools.Data.Models/Listxml/RamOption.cs index 337d60ba..78c105cc 100644 --- a/SabreTools.Data.Models/Listxml/RamOption.cs +++ b/SabreTools.Data.Models/Listxml/RamOption.cs @@ -10,6 +10,7 @@ namespace SabreTools.Data.Models.Listxml [XmlAttribute("name")] public string? Name { get; set; } + /// (yes|no) "no" [XmlAttribute("default")] public bool? Default { get; set; } diff --git a/SabreTools.Data.Models/Listxml/Rom.cs b/SabreTools.Data.Models/Listxml/Rom.cs index edaecf51..6448731f 100644 --- a/SabreTools.Data.Models/Listxml/Rom.cs +++ b/SabreTools.Data.Models/Listxml/Rom.cs @@ -40,14 +40,14 @@ namespace SabreTools.Data.Models.Listxml /// (yes|no) "no" [XmlAttribute("optional")] - public string? Optional { get; set; } + public bool? Optional { get; set; } /// (yes|no) "no", Only present in older versions [XmlAttribute("dispose")] - public string? Dispose { get; set; } + public bool? Dispose { get; set; } /// (yes|no) "no", Only present in older versions [XmlAttribute("soundonly")] - public string? SoundOnly { get; set; } + public bool? SoundOnly { get; set; } } } diff --git a/SabreTools.Data.Models/Logiqx/Datafile.cs b/SabreTools.Data.Models/Logiqx/Datafile.cs index 3c0b8eb6..4a9eca43 100644 --- a/SabreTools.Data.Models/Logiqx/Datafile.cs +++ b/SabreTools.Data.Models/Logiqx/Datafile.cs @@ -11,7 +11,7 @@ namespace SabreTools.Data.Models.Logiqx /// (yes|no) "no" [XmlAttribute("debug")] - public string? Debug { get; set; } + public bool? Debug { get; set; } /// No-Intro extension [XmlAttribute(Namespace = "http://www.w3.org/2001/XMLSchema-instance", AttributeName = "schemaLocation")] diff --git a/SabreTools.Data.Models/Logiqx/Driver.cs b/SabreTools.Data.Models/Logiqx/Driver.cs index b58fdd42..72991aea 100644 --- a/SabreTools.Data.Models/Logiqx/Driver.cs +++ b/SabreTools.Data.Models/Logiqx/Driver.cs @@ -28,18 +28,18 @@ namespace SabreTools.Data.Models.Logiqx /// (yes|no) "no" [XmlAttribute("requiresartwork")] - public string? RequiresArtwork { get; set; } + public bool? RequiresArtwork { get; set; } /// (yes|no) "no" [XmlAttribute("unofficial")] - public string? Unofficial { get; set; } + public bool? Unofficial { get; set; } /// (yes|no) "no" [XmlAttribute("nosoundhardware")] - public string? NoSoundHardware { get; set; } + public bool? NoSoundHardware { get; set; } /// (yes|no) "no" [XmlAttribute("incomplete")] - public string? Incomplete { get; set; } + public bool? Incomplete { get; set; } } } diff --git a/SabreTools.Data.Models/Logiqx/GameBase.cs b/SabreTools.Data.Models/Logiqx/GameBase.cs index 28e6d4ab..be9ed2c6 100644 --- a/SabreTools.Data.Models/Logiqx/GameBase.cs +++ b/SabreTools.Data.Models/Logiqx/GameBase.cs @@ -17,15 +17,15 @@ namespace SabreTools.Data.Models.Logiqx /// (yes|no) "no" [XmlAttribute("isbios")] - public string? IsBios { get; set; } + public bool? IsBios { get; set; } /// (yes|no) "no", MAME extension [XmlAttribute("isdevice")] - public string? IsDevice { get; set; } + public bool? IsDevice { get; set; } /// (yes|no) "no", MAME extension [XmlAttribute("ismechanical")] - public string? IsMechanical { get; set; } + public bool? IsMechanical { get; set; } [XmlAttribute("cloneof")] public string? CloneOf { get; set; } @@ -52,7 +52,7 @@ namespace SabreTools.Data.Models.Logiqx /// (no|partial|yes) "no" [XmlAttribute("runnable")] - public string? Runnable { get; set; } + public bool? Runnable { get; set; } [XmlElement("comment")] public string[]? Comment { get; set; } diff --git a/SabreTools.Data.Models/Logiqx/Rom.cs b/SabreTools.Data.Models/Logiqx/Rom.cs index e20d4efb..be687492 100644 --- a/SabreTools.Data.Models/Logiqx/Rom.cs +++ b/SabreTools.Data.Models/Logiqx/Rom.cs @@ -92,10 +92,10 @@ namespace SabreTools.Data.Models.Logiqx /// Boolean; RomVault extension [XmlAttribute("inverted")] - public string? Inverted { get; set; } + public bool? Inverted { get; set; } /// Boolean; RomVault extension [XmlAttribute("mia")] - public string? MIA { get; set; } + public bool? MIA { get; set; } } } diff --git a/SabreTools.Data.Models/Logiqx/RomCenter.cs b/SabreTools.Data.Models/Logiqx/RomCenter.cs index 157776dc..2840f518 100644 --- a/SabreTools.Data.Models/Logiqx/RomCenter.cs +++ b/SabreTools.Data.Models/Logiqx/RomCenter.cs @@ -23,14 +23,14 @@ namespace SabreTools.Data.Models.Logiqx /// (yes|no) "no" [XmlAttribute("lockrommode")] - public string? LockRomMode { get; set; } + public bool? LockRomMode { get; set; } /// (yes|no) "no" [XmlAttribute("lockbiosmode")] - public string? LockBiosMode { get; set; } + public bool? LockBiosMode { get; set; } /// (yes|no) "no" [XmlAttribute("locksamplemode")] - public string? LockSampleMode { get; set; } + public bool? LockSampleMode { get; set; } } } diff --git a/SabreTools.Data.Models/Metadata/Adjuster.cs b/SabreTools.Data.Models/Metadata/Adjuster.cs index 4e312236..c9c8388c 100644 --- a/SabreTools.Data.Models/Metadata/Adjuster.cs +++ b/SabreTools.Data.Models/Metadata/Adjuster.cs @@ -8,6 +8,7 @@ namespace SabreTools.Data.Models.Metadata { #region Properties + /// (yes|no) "no" public bool? Default { get; set; } public string? Name { get; set; } diff --git a/SabreTools.Data.Models/Metadata/BiosSet.cs b/SabreTools.Data.Models/Metadata/BiosSet.cs index 19b1c6c7..d7187d2b 100644 --- a/SabreTools.Data.Models/Metadata/BiosSet.cs +++ b/SabreTools.Data.Models/Metadata/BiosSet.cs @@ -8,6 +8,7 @@ namespace SabreTools.Data.Models.Metadata { #region Properties + /// (yes|no) "no" public bool? Default { get; set; } public string? Name { get; set; } diff --git a/SabreTools.Data.Models/Metadata/Chip.cs b/SabreTools.Data.Models/Metadata/Chip.cs index 0a8860cc..79d6699e 100644 --- a/SabreTools.Data.Models/Metadata/Chip.cs +++ b/SabreTools.Data.Models/Metadata/Chip.cs @@ -10,6 +10,9 @@ namespace SabreTools.Data.Models.Metadata public string? Name { get; set; } + /// (yes|no) "no" + public bool? SoundOnly { get; set; } + #endregion #region Keys @@ -20,9 +23,6 @@ namespace SabreTools.Data.Models.Metadata /// string public const string FlagsKey = "flags"; - /// (yes|no) "no" - public const string SoundOnlyKey = "soundonly"; - /// string public const string TagKey = "tag"; diff --git a/SabreTools.Data.Models/Metadata/ConfLocation.cs b/SabreTools.Data.Models/Metadata/ConfLocation.cs index 9fe02618..211330c0 100644 --- a/SabreTools.Data.Models/Metadata/ConfLocation.cs +++ b/SabreTools.Data.Models/Metadata/ConfLocation.cs @@ -8,15 +8,15 @@ namespace SabreTools.Data.Models.Metadata { #region Properties + /// (yes|no) "no" + public bool? Inverted { get; set; } + public string? Name { get; set; } #endregion #region Keys - /// (yes|no) "no" - public const string InvertedKey = "inverted"; - /// string, possibly long public const string NumberKey = "number"; diff --git a/SabreTools.Data.Models/Metadata/ConfSetting.cs b/SabreTools.Data.Models/Metadata/ConfSetting.cs index 3be87b52..bd91065f 100644 --- a/SabreTools.Data.Models/Metadata/ConfSetting.cs +++ b/SabreTools.Data.Models/Metadata/ConfSetting.cs @@ -8,6 +8,7 @@ namespace SabreTools.Data.Models.Metadata { #region Properties + /// (yes|no) "no" public bool? Default { get; set; } public string? Name { get; set; } diff --git a/SabreTools.Data.Models/Metadata/Control.cs b/SabreTools.Data.Models/Metadata/Control.cs index c14b816d..28222d70 100644 --- a/SabreTools.Data.Models/Metadata/Control.cs +++ b/SabreTools.Data.Models/Metadata/Control.cs @@ -6,6 +6,13 @@ namespace SabreTools.Data.Models.Metadata [JsonObject("control"), XmlRoot("control")] public class Control : DatItem { + #region Properties + + /// (yes|no) "no" + public bool? Reverse { get; set; } + + #endregion + #region Keys /// long @@ -26,9 +33,6 @@ namespace SabreTools.Data.Models.Metadata /// long public const string ReqButtonsKey = "reqbuttons"; - /// (yes|no) "no" - public const string ReverseKey = "reverse"; - /// long public const string SensitivityKey = "sensitivity"; diff --git a/SabreTools.Data.Models/Metadata/DipLocation.cs b/SabreTools.Data.Models/Metadata/DipLocation.cs index 58dde81e..65c36fbc 100644 --- a/SabreTools.Data.Models/Metadata/DipLocation.cs +++ b/SabreTools.Data.Models/Metadata/DipLocation.cs @@ -8,15 +8,15 @@ namespace SabreTools.Data.Models.Metadata { #region Properties + /// (yes|no) "no" + public bool? Inverted { get; set; } + public string? Name { get; set; } #endregion #region Keys - /// (yes|no) "no" - public const string InvertedKey = "inverted"; - /// string, possibly long public const string NumberKey = "number"; diff --git a/SabreTools.Data.Models/Metadata/DipSwitch.cs b/SabreTools.Data.Models/Metadata/DipSwitch.cs index 58bacdfb..7207d926 100644 --- a/SabreTools.Data.Models/Metadata/DipSwitch.cs +++ b/SabreTools.Data.Models/Metadata/DipSwitch.cs @@ -8,6 +8,7 @@ namespace SabreTools.Data.Models.Metadata { #region Properties + /// (yes|no) "no" public bool? Default { get; set; } public string? Name { get; set; } diff --git a/SabreTools.Data.Models/Metadata/DipValue.cs b/SabreTools.Data.Models/Metadata/DipValue.cs index f3906878..99ab2c6b 100644 --- a/SabreTools.Data.Models/Metadata/DipValue.cs +++ b/SabreTools.Data.Models/Metadata/DipValue.cs @@ -8,6 +8,7 @@ namespace SabreTools.Data.Models.Metadata { #region Properties + /// (yes|no) "no" public bool? Default { get; set; } public string? Name { get; set; } diff --git a/SabreTools.Data.Models/Metadata/Disk.cs b/SabreTools.Data.Models/Metadata/Disk.cs index f67a0b8e..17510762 100644 --- a/SabreTools.Data.Models/Metadata/Disk.cs +++ b/SabreTools.Data.Models/Metadata/Disk.cs @@ -10,6 +10,12 @@ namespace SabreTools.Data.Models.Metadata public string? Name { get; set; } + /// (yes|no) "no" + public bool? Optional { get; set; } + + /// (yes|no) "no" + public bool? Writable { get; set; } + #endregion #region Keys @@ -26,9 +32,6 @@ namespace SabreTools.Data.Models.Metadata /// string public const string MergeKey = "merge"; - /// (yes|no) "no" - public const string OptionalKey = "optional"; - /// string public const string RegionKey = "region"; @@ -38,9 +41,6 @@ namespace SabreTools.Data.Models.Metadata /// (baddump|nodump|good|verified) "good" public const string StatusKey = "status"; - /// (yes|no) "no" - public const string WritableKey = "writable"; - #endregion public Disk() => ItemType = ItemType.Disk; diff --git a/SabreTools.Data.Models/Metadata/Display.cs b/SabreTools.Data.Models/Metadata/Display.cs index edbf05dd..e81b6ceb 100644 --- a/SabreTools.Data.Models/Metadata/Display.cs +++ b/SabreTools.Data.Models/Metadata/Display.cs @@ -6,10 +6,14 @@ namespace SabreTools.Data.Models.Metadata [JsonObject("display"), XmlRoot("display")] public class Display : DatItem { - #region Keys + #region Properties /// (yes|no) "no" - public const string FlipXKey = "flipx"; + public bool? FlipX { get; set; } + + #endregion + + #region Keys /// long public const string HBEndKey = "hbend"; diff --git a/SabreTools.Data.Models/Metadata/Driver.cs b/SabreTools.Data.Models/Metadata/Driver.cs index 9860acfc..4060acd5 100644 --- a/SabreTools.Data.Models/Metadata/Driver.cs +++ b/SabreTools.Data.Models/Metadata/Driver.cs @@ -6,6 +6,22 @@ namespace SabreTools.Data.Models.Metadata [JsonObject("driver"), XmlRoot("driver")] public class Driver : DatItem { + #region Properties + + /// (yes|no) "no" + public bool? Incomplete { get; set; } + + /// (yes|no) "no" + public bool? NoSoundHardware { get; set; } + + /// (yes|no) "no" + public bool? RequiresArtwork { get; set; } + + /// (yes|no) "no" + public bool? Unofficial { get; set; } + + #endregion + #region Keys /// (plain|dirty) @@ -20,18 +36,9 @@ namespace SabreTools.Data.Models.Metadata /// (good|imperfect|preliminary) public const string EmulationKey = "emulation"; - /// (yes|no) "no" - public const string IncompleteKey = "incomplete"; - - /// (yes|no) "no" - public const string NoSoundHardwareKey = "nosoundhardware"; - /// string, possibly long public const string PaletteSizeKey = "palettesize"; - /// (yes|no) "no" - public const string RequiresArtworkKey = "requiresartwork"; - /// (supported|unsupported) public const string SaveStateKey = "savestate"; @@ -41,9 +48,6 @@ namespace SabreTools.Data.Models.Metadata /// (good|imperfect|preliminary|test) public const string StatusKey = "status"; - /// (yes|no) "no" - public const string UnofficialKey = "unofficial"; - #endregion public Driver() => ItemType = ItemType.Driver; diff --git a/SabreTools.Data.Models/Metadata/Header.cs b/SabreTools.Data.Models/Metadata/Header.cs index 9ed506ee..f4e98ea4 100644 --- a/SabreTools.Data.Models/Metadata/Header.cs +++ b/SabreTools.Data.Models/Metadata/Header.cs @@ -8,6 +8,21 @@ namespace SabreTools.Data.Models.Metadata { #region Properties + /// (yes|no) "no" + public bool? Debug { get; set; } + + /// (yes|no) "yes" + public bool? ForceZipping { get; set; } + + /// (yes|no) "no" + public bool? LockBiosMode { get; set; } + + /// (yes|no) "no" + public bool? LockRomMode { get; set; } + + /// (yes|no) "no" + public bool? LockSampleMode { get; set; } + public string? Name { get; set; } #endregion @@ -40,9 +55,6 @@ namespace SabreTools.Data.Models.Metadata /// string public const string DatVersionKey = "datversion"; - /// (yes|no) "no" - public const string DebugKey = "debug"; - /// string public const string DescriptionKey = "description"; @@ -61,9 +73,6 @@ namespace SabreTools.Data.Models.Metadata /// (zip|unzip) "zip" public const string ForcePackingKey = "forcepacking"; - /// (yes|no) "yes" - public const string ForceZippingKey = "forcezipping"; - /// string, string[] public const string HeaderKey = "header"; @@ -86,15 +95,6 @@ namespace SabreTools.Data.Models.Metadata [NoFilter] public const string InfosKey = "infos"; - /// (yes|no) "no" - public const string LockBiosModeKey = "lockbiosmode"; - - /// (yes|no) "no" - public const string LockRomModeKey = "lockrommode"; - - /// (yes|no) "no" - public const string LockSampleModeKey = "locksamplemode"; - /// string public const string MameConfigKey = "mameconfig"; diff --git a/SabreTools.Data.Models/Metadata/Input.cs b/SabreTools.Data.Models/Metadata/Input.cs index dba3364e..47d9069b 100644 --- a/SabreTools.Data.Models/Metadata/Input.cs +++ b/SabreTools.Data.Models/Metadata/Input.cs @@ -6,6 +6,16 @@ namespace SabreTools.Data.Models.Metadata [JsonObject("input"), XmlRoot("input")] public class Input : DatItem { + #region Properties + + /// (yes|no) "no" + public bool? Service { get; set; } + + /// (yes|no) "no" + public bool? Tilt { get; set; } + + #endregion + #region Keys /// long @@ -20,12 +30,6 @@ namespace SabreTools.Data.Models.Metadata /// long public const string PlayersKey = "players"; - /// (yes|no) "no" - public const string ServiceKey = "service"; - - /// (yes|no) "no" - public const string TiltKey = "tilt"; - #endregion public Input() => ItemType = ItemType.Input; diff --git a/SabreTools.Data.Models/Metadata/Machine.cs b/SabreTools.Data.Models/Metadata/Machine.cs index 82ccf0e1..e6355b33 100644 --- a/SabreTools.Data.Models/Metadata/Machine.cs +++ b/SabreTools.Data.Models/Metadata/Machine.cs @@ -8,8 +8,21 @@ namespace SabreTools.Data.Models.Metadata { #region Properties + /// (yes|no) "no" + public bool? IsBios { get; set; } + + /// (yes|no) "no" + public bool? IsDevice { get; set; } + + /// (yes|no) "no" + public bool? IsMechanical { get; set; } + public string? Name { get; set; } + /// (yes|partial|no) "no" + /// TODO: Replace with Runnable type + public bool? Runnable { get; set; } + #endregion #region Keys @@ -146,15 +159,6 @@ namespace SabreTools.Data.Models.Metadata [NoFilter] public const string InputKey = "input"; - /// (yes|no) "no" - public const string IsBiosKey = "isbios"; - - /// (yes|no) "no" - public const string IsDeviceKey = "isdevice"; - - /// (yes|no) "no" - public const string IsMechanicalKey = "ismechanical"; - /// string public const string LanguageKey = "language"; @@ -215,9 +219,6 @@ namespace SabreTools.Data.Models.Metadata /// string public const string RotationKey = "rotation"; - /// (yes|no) "no" - public const string RunnableKey = "runnable"; - /// Sample[] [NoFilter] public const string SampleKey = "sample"; diff --git a/SabreTools.Data.Models/Metadata/RamOption.cs b/SabreTools.Data.Models/Metadata/RamOption.cs index 1f7d84ea..a8f2092b 100644 --- a/SabreTools.Data.Models/Metadata/RamOption.cs +++ b/SabreTools.Data.Models/Metadata/RamOption.cs @@ -8,6 +8,7 @@ namespace SabreTools.Data.Models.Metadata { #region Properties + /// (yes|no) "no" public bool? Default { get; set; } public string? Name { get; set; } diff --git a/SabreTools.Data.Models/Metadata/Release.cs b/SabreTools.Data.Models/Metadata/Release.cs index e76e1d4e..c3e64cd5 100644 --- a/SabreTools.Data.Models/Metadata/Release.cs +++ b/SabreTools.Data.Models/Metadata/Release.cs @@ -8,6 +8,7 @@ namespace SabreTools.Data.Models.Metadata { #region Properties + /// (yes|no) "no" public bool? Default { get; set; } public string? Name { get; set; } diff --git a/SabreTools.Data.Models/Metadata/Rom.cs b/SabreTools.Data.Models/Metadata/Rom.cs index 99648714..39195aac 100644 --- a/SabreTools.Data.Models/Metadata/Rom.cs +++ b/SabreTools.Data.Models/Metadata/Rom.cs @@ -8,8 +8,26 @@ namespace SabreTools.Data.Models.Metadata { #region Properties + /// (yes|no) "no" + public bool? Dispose { get; set; } + + /// bool; AttractMode.Row + public bool? FileIsAvailable { get; set; } + + /// (yes|no) "no" + public bool? Inverted { get; set; } + + /// (yes|no) "no" + public bool? MIA { get; set; } + public string? Name { get; set; } + /// (yes|no) "no" + public bool? Optional { get; set; } + + /// (yes|no) "no" + public bool? SoundOnly { get; set; } + #endregion #region Keys @@ -68,18 +86,12 @@ namespace SabreTools.Data.Models.Metadata /// string public const string DateKey = "date"; - /// (yes|no) "no" - public const string DisposeKey = "dispose"; - /// string; OfflineList.FileRomCRC public const string ExtensionKey = "extension"; /// long; ArchiveDotOrg.File public const string FileCountKey = "filecount"; - /// bool; AttractMode.Row - public const string FileIsAvailableKey = "file_is_available"; - /// string public const string FlagsKey = "flags"; @@ -110,9 +122,6 @@ namespace SabreTools.Data.Models.Metadata /// string; ArchiveDotOrg.File public const string hOCRPageIndexModuleVersionKey = "hocr_pageindex_module_version"; - /// (yes|no) "no" - public const string InvertedKey = "inverted"; - /// long; ArchiveDotOrg.File public const string LastModifiedTimeKey = "mtime"; @@ -140,9 +149,6 @@ namespace SabreTools.Data.Models.Metadata /// string public const string MergeKey = "merge"; - /// (yes|no) "no" - public const string MIAKey = "mia"; - /// string; ArchiveDotOrg.File public const string TesseractOCRKey = "ocr"; @@ -170,9 +176,6 @@ namespace SabreTools.Data.Models.Metadata /// string, possibly long; Originally "offs" public const string OffsetKey = "offset"; - /// (yes|no) "no" - public const string OptionalKey = "optional"; - /// string; ArchiveDotOrg.File public const string OriginalKey = "original"; @@ -218,9 +221,6 @@ namespace SabreTools.Data.Models.Metadata /// long public const string SizeKey = "size"; - /// (yes|no) "no" - public const string SoundOnlyKey = "soundonly"; - /// string; ArchiveDotOrg.File public const string SourceKey = "source"; diff --git a/SabreTools.Data.Models/Metadata/SlotOption.cs b/SabreTools.Data.Models/Metadata/SlotOption.cs index a2ec5877..1e205bf6 100644 --- a/SabreTools.Data.Models/Metadata/SlotOption.cs +++ b/SabreTools.Data.Models/Metadata/SlotOption.cs @@ -8,6 +8,7 @@ namespace SabreTools.Data.Models.Metadata { #region Properties + /// (yes|no) "no" public bool? Default { get; set; } public string? Name { get; set; } diff --git a/SabreTools.Data.Models/OfflineList/InfoBase.cs b/SabreTools.Data.Models/OfflineList/InfoBase.cs index cb39fc67..b50a0a24 100644 --- a/SabreTools.Data.Models/OfflineList/InfoBase.cs +++ b/SabreTools.Data.Models/OfflineList/InfoBase.cs @@ -5,7 +5,7 @@ namespace SabreTools.Data.Models.OfflineList { public class InfoBase { - /// Boolean + /// (true|false) "false" [XmlAttribute("visible")] public string? Visible { get; set; } @@ -13,7 +13,7 @@ namespace SabreTools.Data.Models.OfflineList [XmlAttribute("inNamingOption")] public string? InNamingOption { get; set; } - /// Boolean + /// (true|false) "false" [XmlAttribute("default")] public bool? Default { get; set; } } diff --git a/SabreTools.Data.Models/OfflineList/To.cs b/SabreTools.Data.Models/OfflineList/To.cs index 725b0a49..8379e4f7 100644 --- a/SabreTools.Data.Models/OfflineList/To.cs +++ b/SabreTools.Data.Models/OfflineList/To.cs @@ -9,7 +9,7 @@ namespace SabreTools.Data.Models.OfflineList [XmlAttribute("value")] public string? Value { get; set; } - /// Boolean + /// (true|false) "false" [XmlAttribute("default")] public bool? Default { get; set; } diff --git a/SabreTools.Data.Models/SoftwareList/Disk.cs b/SabreTools.Data.Models/SoftwareList/Disk.cs index edc0dd46..9fddd1cb 100644 --- a/SabreTools.Data.Models/SoftwareList/Disk.cs +++ b/SabreTools.Data.Models/SoftwareList/Disk.cs @@ -22,6 +22,6 @@ namespace SabreTools.Data.Models.SoftwareList /// (yes|no) "no" [XmlAttribute("writable")] - public string? Writeable { get; set; } + public bool? Writeable { get; set; } } } diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs index 543aa2b8..9129396f 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs @@ -209,23 +209,23 @@ namespace SabreTools.Metadata.DatFiles.Test [Data.Models.Metadata.Header.CommentKey] = "comment", [Data.Models.Metadata.Header.DateKey] = "date", [Data.Models.Metadata.Header.DatVersionKey] = "datversion", - [Data.Models.Metadata.Header.DebugKey] = "yes", + Debug = true, [Data.Models.Metadata.Header.DescriptionKey] = "description", [Data.Models.Metadata.Header.EmailKey] = "email", [Data.Models.Metadata.Header.EmulatorVersionKey] = "emulatorversion", [Data.Models.Metadata.Header.ForceMergingKey] = "merged", [Data.Models.Metadata.Header.ForceNodumpKey] = "required", [Data.Models.Metadata.Header.ForcePackingKey] = "zip", - [Data.Models.Metadata.Header.ForceZippingKey] = "yes", + ForceZipping = true, [Data.Models.Metadata.Header.HeaderKey] = "header", [Data.Models.Metadata.Header.HomepageKey] = "homepage", [Data.Models.Metadata.Header.IdKey] = "id", [Data.Models.Metadata.Header.ImagesKey] = images, [Data.Models.Metadata.Header.ImFolderKey] = "imfolder", [Data.Models.Metadata.Header.InfosKey] = infos, - [Data.Models.Metadata.Header.LockBiosModeKey] = "yes", - [Data.Models.Metadata.Header.LockRomModeKey] = "yes", - [Data.Models.Metadata.Header.LockSampleModeKey] = "yes", + LockBiosMode = true, + LockRomMode = true, + LockSampleMode = true, [Data.Models.Metadata.Header.MameConfigKey] = "mameconfig", Name = "name", [Data.Models.Metadata.Header.NewDatKey] = newDat, @@ -290,9 +290,9 @@ namespace SabreTools.Metadata.DatFiles.Test [Data.Models.Metadata.Machine.ImageNumberKey] = "imagenumber", [Data.Models.Metadata.Machine.InfoKey] = new Data.Models.Metadata.Info[] { CreateMetadataInfo() }, [Data.Models.Metadata.Machine.InputKey] = CreateMetadataInput(), - [Data.Models.Metadata.Machine.IsBiosKey] = "yes", - [Data.Models.Metadata.Machine.IsDeviceKey] = "yes", - [Data.Models.Metadata.Machine.IsMechanicalKey] = "yes", + IsBios = true, + IsDevice = true, + IsMechanical = true, [Data.Models.Metadata.Machine.LanguageKey] = "language", [Data.Models.Metadata.Machine.LocationKey] = "location", [Data.Models.Metadata.Machine.ManufacturerKey] = "manufacturer", @@ -312,7 +312,7 @@ namespace SabreTools.Metadata.DatFiles.Test [Data.Models.Metadata.Machine.RomKey] = new Data.Models.Metadata.Rom[] { CreateMetadataRom() }, [Data.Models.Metadata.Machine.RomOfKey] = "romof", [Data.Models.Metadata.Machine.RotationKey] = "rotation", - [Data.Models.Metadata.Machine.RunnableKey] = "yes", + Runnable = true, [Data.Models.Metadata.Machine.SampleKey] = new Data.Models.Metadata.Sample[] { CreateMetadataSample() }, [Data.Models.Metadata.Machine.SampleOfKey] = "sampleof", [Data.Models.Metadata.Machine.SaveTypeKey] = "savetype", @@ -407,7 +407,7 @@ namespace SabreTools.Metadata.DatFiles.Test [Data.Models.Metadata.Chip.ClockKey] = 12345L, [Data.Models.Metadata.Chip.FlagsKey] = "flags", Name = "name", - [Data.Models.Metadata.Chip.SoundOnlyKey] = "yes", + SoundOnly = true, [Data.Models.Metadata.Chip.TagKey] = "tag", [Data.Models.Metadata.Chip.ChipTypeKey] = "cpu", }; @@ -441,7 +441,7 @@ namespace SabreTools.Metadata.DatFiles.Test { return new Data.Models.Metadata.ConfLocation { - [Data.Models.Metadata.ConfLocation.InvertedKey] = "yes", + Inverted = true, Name = "name", [Data.Models.Metadata.ConfLocation.NumberKey] = "number", }; @@ -468,7 +468,7 @@ namespace SabreTools.Metadata.DatFiles.Test [Data.Models.Metadata.Control.MinimumKey] = 12345L, [Data.Models.Metadata.Control.PlayerKey] = 12345L, [Data.Models.Metadata.Control.ReqButtonsKey] = 12345L, - [Data.Models.Metadata.Control.ReverseKey] = "yes", + Reverse = true, [Data.Models.Metadata.Control.SensitivityKey] = 12345L, [Data.Models.Metadata.Control.ControlTypeKey] = "lightgun", [Data.Models.Metadata.Control.WaysKey] = "ways", @@ -503,7 +503,7 @@ namespace SabreTools.Metadata.DatFiles.Test { return new Data.Models.Metadata.DipLocation { - [Data.Models.Metadata.DipLocation.InvertedKey] = "yes", + Inverted = true, Name = "name", [Data.Models.Metadata.DipLocation.NumberKey] = "number", }; @@ -556,10 +556,10 @@ namespace SabreTools.Metadata.DatFiles.Test [Data.Models.Metadata.Disk.MD5Key] = HashType.MD5.ZeroString, [Data.Models.Metadata.Disk.MergeKey] = "merge", Name = "name", - [Data.Models.Metadata.Disk.OptionalKey] = "yes", + Optional = true, [Data.Models.Metadata.Disk.RegionKey] = "region", [Data.Models.Metadata.Disk.SHA1Key] = HashType.SHA1.ZeroString, - [Data.Models.Metadata.Disk.WritableKey] = "yes", + Writable = true, }; } @@ -576,7 +576,7 @@ namespace SabreTools.Metadata.DatFiles.Test { return new Data.Models.Metadata.Display { - [Data.Models.Metadata.Display.FlipXKey] = "yes", + FlipX = true, [Data.Models.Metadata.Display.HBEndKey] = 12345L, [Data.Models.Metadata.Display.HBStartKey] = 12345L, [Data.Models.Metadata.Display.HeightKey] = 12345L, @@ -601,14 +601,14 @@ namespace SabreTools.Metadata.DatFiles.Test [Data.Models.Metadata.Driver.CocktailKey] = "good", [Data.Models.Metadata.Driver.ColorKey] = "good", [Data.Models.Metadata.Driver.EmulationKey] = "good", - [Data.Models.Metadata.Driver.IncompleteKey] = "yes", - [Data.Models.Metadata.Driver.NoSoundHardwareKey] = "yes", + Incomplete = true, + NoSoundHardware = true, [Data.Models.Metadata.Driver.PaletteSizeKey] = "pallettesize", - [Data.Models.Metadata.Driver.RequiresArtworkKey] = "yes", + RequiresArtwork = true, [Data.Models.Metadata.Driver.SaveStateKey] = "supported", [Data.Models.Metadata.Driver.SoundKey] = "good", [Data.Models.Metadata.Driver.StatusKey] = "good", - [Data.Models.Metadata.Driver.UnofficialKey] = "yes", + Unofficial = true, }; } @@ -664,8 +664,8 @@ namespace SabreTools.Metadata.DatFiles.Test [Data.Models.Metadata.Input.CoinsKey] = 12345L, [Data.Models.Metadata.Input.ControlKey] = new Data.Models.Metadata.Control[] { CreateMetadataControl() }, [Data.Models.Metadata.Input.PlayersKey] = 12345L, - [Data.Models.Metadata.Input.ServiceKey] = "yes", - [Data.Models.Metadata.Input.TiltKey] = "yes", + Service = true, + Tilt = true, }; } @@ -788,10 +788,10 @@ namespace SabreTools.Metadata.DatFiles.Test [Data.Models.Metadata.Rom.CRC64Key] = HashType.CRC64.ZeroString, [Data.Models.Metadata.Rom.CreatorKey] = "creator", [Data.Models.Metadata.Rom.DateKey] = "date", - [Data.Models.Metadata.Rom.DisposeKey] = "yes", + Dispose = true, [Data.Models.Metadata.Rom.ExtensionKey] = "extension", [Data.Models.Metadata.Rom.FileCountKey] = 12345L, - [Data.Models.Metadata.Rom.FileIsAvailableKey] = true, + FileIsAvailable = true, [Data.Models.Metadata.Rom.FlagsKey] = "flags", [Data.Models.Metadata.Rom.FormatKey] = "format", [Data.Models.Metadata.Rom.HeaderKey] = "header", @@ -802,7 +802,7 @@ namespace SabreTools.Metadata.DatFiles.Test [Data.Models.Metadata.Rom.hOCRFtsTextModuleVersionKey] = "hocr_fts_text_module_version", [Data.Models.Metadata.Rom.hOCRPageIndexhOCRVersionKey] = "hocr_pageindex_hocr_version", [Data.Models.Metadata.Rom.hOCRPageIndexModuleVersionKey] = "hocr_pageindex_module_version", - [Data.Models.Metadata.Rom.InvertedKey] = "yes", + Inverted = true, [Data.Models.Metadata.Rom.LastModifiedTimeKey] = "mtime", [Data.Models.Metadata.Rom.LengthKey] = "length", [Data.Models.Metadata.Rom.LoadFlagKey] = "load16_byte", @@ -812,7 +812,7 @@ namespace SabreTools.Metadata.DatFiles.Test [Data.Models.Metadata.Rom.MD5Key] = HashType.MD5.ZeroString, // [Data.Models.Metadata.Rom.OpenMSXMediaType] = null, // Omit due to other test [Data.Models.Metadata.Rom.MergeKey] = "merge", - [Data.Models.Metadata.Rom.MIAKey] = "yes", + MIA = true, Name = "name", [Data.Models.Metadata.Rom.TesseractOCRKey] = "ocr", [Data.Models.Metadata.Rom.TesseractOCRConvertedKey] = "ocr_converted", @@ -823,7 +823,7 @@ namespace SabreTools.Metadata.DatFiles.Test [Data.Models.Metadata.Rom.TesseractOCRModuleVersionKey] = "ocr_module_version", [Data.Models.Metadata.Rom.TesseractOCRParametersKey] = "ocr_parameters", [Data.Models.Metadata.Rom.OffsetKey] = "offset", - [Data.Models.Metadata.Rom.OptionalKey] = "yes", + Optional = true, [Data.Models.Metadata.Rom.OriginalKey] = "original", [Data.Models.Metadata.Rom.PDFModuleVersionKey] = "pdf_module_version", [Data.Models.Metadata.Rom.PreviewImageKey] = "preview-image", @@ -839,7 +839,7 @@ namespace SabreTools.Metadata.DatFiles.Test [Data.Models.Metadata.Rom.SHA384Key] = HashType.SHA384.ZeroString, [Data.Models.Metadata.Rom.SHA512Key] = HashType.SHA512.ZeroString, [Data.Models.Metadata.Rom.SizeKey] = 12345L, - [Data.Models.Metadata.Rom.SoundOnlyKey] = "yes", + SoundOnly = true, [Data.Models.Metadata.Rom.SourceKey] = "source", [Data.Models.Metadata.Rom.SpamSumKey] = HashType.SpamSum.ZeroString, [Data.Models.Metadata.Rom.StartKey] = "start", @@ -938,7 +938,7 @@ namespace SabreTools.Metadata.DatFiles.Test [Data.Models.Metadata.Software.PartKey] = new Data.Models.Metadata.Part[] { CreateMetadataPart() }, [Data.Models.Metadata.Software.PublisherKey] = "publisher", [Data.Models.Metadata.Software.SharedFeatKey] = new Data.Models.Metadata.SharedFeat[] { CreateMetadataSharedFeat() }, - [Data.Models.Metadata.Software.SupportedKey] = "yes", + [Data.Models.Metadata.Software.SupportedKey] = true, [Data.Models.Metadata.Software.YearKey] = "year", }; } @@ -1010,7 +1010,7 @@ namespace SabreTools.Metadata.DatFiles.Test Score = "score", Players = "players", Enabled = "enabled", - CRC = "true", + CRC = "yes", Source = "source", CloneOf = "cloneof", RelatedTo = "relatedto", @@ -1045,23 +1045,23 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("comment", datHeader.ReadString(Data.Models.Metadata.Header.CommentKey)); Assert.Equal("date", datHeader.ReadString(Data.Models.Metadata.Header.DateKey)); Assert.Equal("datversion", datHeader.ReadString(Data.Models.Metadata.Header.DatVersionKey)); - Assert.True(datHeader.ReadBool(Data.Models.Metadata.Header.DebugKey)); + Assert.True(datHeader.Debug); Assert.Equal("description", datHeader.ReadString(Data.Models.Metadata.Header.DescriptionKey)); Assert.Equal("email", datHeader.ReadString(Data.Models.Metadata.Header.EmailKey)); Assert.Equal("emulatorversion", datHeader.ReadString(Data.Models.Metadata.Header.EmulatorVersionKey)); Assert.Equal("merged", datHeader.ReadString(Data.Models.Metadata.Header.ForceMergingKey)); Assert.Equal("required", datHeader.ReadString(Data.Models.Metadata.Header.ForceNodumpKey)); Assert.Equal("zip", datHeader.ReadString(Data.Models.Metadata.Header.ForcePackingKey)); - Assert.True(datHeader.ReadBool(Data.Models.Metadata.Header.ForceZippingKey)); + Assert.True(datHeader.ForceZipping); Assert.Equal("header", datHeader.ReadString(Data.Models.Metadata.Header.HeaderKey)); Assert.Equal("homepage", datHeader.ReadString(Data.Models.Metadata.Header.HomepageKey)); Assert.Equal("id", datHeader.ReadString(Data.Models.Metadata.Header.IdKey)); Assert.NotNull(datHeader.ReadString(Data.Models.Metadata.Header.ImagesKey)); Assert.Equal("imfolder", datHeader.ReadString(Data.Models.Metadata.Header.ImFolderKey)); Assert.NotNull(datHeader.ReadString(Data.Models.Metadata.Header.InfosKey)); - Assert.True(datHeader.ReadBool(Data.Models.Metadata.Header.LockBiosModeKey)); - Assert.True(datHeader.ReadBool(Data.Models.Metadata.Header.LockRomModeKey)); - Assert.True(datHeader.ReadBool(Data.Models.Metadata.Header.LockSampleModeKey)); + Assert.True(datHeader.LockBiosMode); + Assert.True(datHeader.LockRomMode); + Assert.True(datHeader.LockSampleMode); Assert.Equal("mameconfig", datHeader.ReadString(Data.Models.Metadata.Header.MameConfigKey)); Assert.Equal("name", datHeader.Name); Assert.NotNull(datHeader.ReadString(Data.Models.Metadata.Header.NewDatKey)); @@ -1109,9 +1109,9 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal(HashType.CRC32.ZeroString, machine.ReadString(Data.Models.Metadata.Machine.Im1CRCKey)); Assert.Equal(HashType.CRC32.ZeroString, machine.ReadString(Data.Models.Metadata.Machine.Im2CRCKey)); Assert.Equal("imagenumber", machine.ReadString(Data.Models.Metadata.Machine.ImageNumberKey)); - Assert.Equal("yes", machine.ReadString(Data.Models.Metadata.Machine.IsBiosKey)); - Assert.Equal("yes", machine.ReadString(Data.Models.Metadata.Machine.IsDeviceKey)); - Assert.Equal("yes", machine.ReadString(Data.Models.Metadata.Machine.IsMechanicalKey)); + Assert.Equal(true, machine.IsBios); + Assert.Equal(true, machine.IsDevice); + Assert.Equal(true, machine.IsMechanical); Assert.Equal("language", machine.ReadString(Data.Models.Metadata.Machine.LanguageKey)); Assert.Equal("location", machine.ReadString(Data.Models.Metadata.Machine.LocationKey)); Assert.Equal("manufacturer", machine.ReadString(Data.Models.Metadata.Machine.ManufacturerKey)); @@ -1125,7 +1125,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("releasenumber", machine.ReadString(Data.Models.Metadata.Machine.ReleaseNumberKey)); Assert.Equal("romof", machine.ReadString(Data.Models.Metadata.Machine.RomOfKey)); Assert.Equal("rotation", machine.ReadString(Data.Models.Metadata.Machine.RotationKey)); - Assert.Equal("yes", machine.ReadString(Data.Models.Metadata.Machine.RunnableKey)); + Assert.Equal(true, machine.Runnable); Assert.Equal("sampleof", machine.ReadString(Data.Models.Metadata.Machine.SampleOfKey)); Assert.Equal("savetype", machine.ReadString(Data.Models.Metadata.Machine.SaveTypeKey)); Assert.Equal("sourcefile", machine.ReadString(Data.Models.Metadata.Machine.SourceFileKey)); @@ -1177,7 +1177,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal(12345L, chip.ReadLong(Data.Models.Metadata.Chip.ClockKey)); Assert.Equal("flags", chip.ReadString(Data.Models.Metadata.Chip.FlagsKey)); Assert.Equal("name", chip.GetName()); - Assert.True(chip.ReadBool(Data.Models.Metadata.Chip.SoundOnlyKey)); + Assert.True(chip.SoundOnly); Assert.Equal("tag", chip.ReadString(Data.Models.Metadata.Chip.TagKey)); Assert.Equal("cpu", chip.ReadString(Data.Models.Metadata.Chip.ChipTypeKey)); } @@ -1215,7 +1215,7 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateConfLocation(ConfLocation? confLocation) { Assert.NotNull(confLocation); - Assert.True(confLocation.ReadBool(Data.Models.Metadata.ConfLocation.InvertedKey)); + Assert.True(confLocation.Inverted); Assert.Equal("name", confLocation.GetName()); Assert.Equal("number", confLocation.ReadString(Data.Models.Metadata.ConfLocation.NumberKey)); } @@ -1240,7 +1240,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal(12345L, control.ReadLong(Data.Models.Metadata.Control.MinimumKey)); Assert.Equal(12345L, control.ReadLong(Data.Models.Metadata.Control.PlayerKey)); Assert.Equal(12345L, control.ReadLong(Data.Models.Metadata.Control.ReqButtonsKey)); - Assert.True(control.ReadBool(Data.Models.Metadata.Control.ReverseKey)); + Assert.True(control.Reverse); Assert.Equal(12345L, control.ReadLong(Data.Models.Metadata.Control.SensitivityKey)); Assert.Equal("lightgun", control.ReadString(Data.Models.Metadata.Control.ControlTypeKey)); Assert.Equal("ways", control.ReadString(Data.Models.Metadata.Control.WaysKey)); @@ -1284,7 +1284,7 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateDipLocation(DipLocation? dipLocation) { Assert.NotNull(dipLocation); - Assert.True(dipLocation.ReadBool(Data.Models.Metadata.DipLocation.InvertedKey)); + Assert.True(dipLocation.Inverted); Assert.Equal("name", dipLocation.GetName()); Assert.Equal("number", dipLocation.ReadString(Data.Models.Metadata.DipLocation.NumberKey)); } @@ -1335,10 +1335,10 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal(HashType.MD5.ZeroString, disk.ReadString(Data.Models.Metadata.Disk.MD5Key)); Assert.Equal("merge", disk.ReadString(Data.Models.Metadata.Disk.MergeKey)); Assert.Equal("name", disk.GetName()); - Assert.True(disk.ReadBool(Data.Models.Metadata.Disk.OptionalKey)); + Assert.True(disk.Optional); Assert.Equal("region", disk.ReadString(Data.Models.Metadata.Disk.RegionKey)); Assert.Equal(HashType.SHA1.ZeroString, disk.ReadString(Data.Models.Metadata.Disk.SHA1Key)); - Assert.True(disk.ReadBool(Data.Models.Metadata.Disk.WritableKey)); + Assert.True(disk.Writable); } private static void ValidateDiskArea(DiskArea? diskArea) @@ -1350,7 +1350,7 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateDisplay(Display? display) { Assert.NotNull(display); - Assert.True(display.ReadBool(Data.Models.Metadata.Display.FlipXKey)); + Assert.True(display.FlipX); Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Display.HBEndKey)); Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Display.HBStartKey)); Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Display.HeightKey)); @@ -1373,14 +1373,14 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("good", driver.ReadString(Data.Models.Metadata.Driver.CocktailKey)); Assert.Equal("good", driver.ReadString(Data.Models.Metadata.Driver.ColorKey)); Assert.Equal("good", driver.ReadString(Data.Models.Metadata.Driver.EmulationKey)); - Assert.True(driver.ReadBool(Data.Models.Metadata.Driver.IncompleteKey)); - Assert.True(driver.ReadBool(Data.Models.Metadata.Driver.NoSoundHardwareKey)); + Assert.True(driver.Incomplete); + Assert.True(driver.NoSoundHardware); Assert.Equal("pallettesize", driver.ReadString(Data.Models.Metadata.Driver.PaletteSizeKey)); - Assert.True(driver.ReadBool(Data.Models.Metadata.Driver.RequiresArtworkKey)); + Assert.True(driver.RequiresArtwork); Assert.Equal("supported", driver.ReadString(Data.Models.Metadata.Driver.SaveStateKey)); Assert.Equal("good", driver.ReadString(Data.Models.Metadata.Driver.SoundKey)); Assert.Equal("good", driver.ReadString(Data.Models.Metadata.Driver.StatusKey)); - Assert.True(driver.ReadBool(Data.Models.Metadata.Driver.UnofficialKey)); + Assert.True(driver.Unofficial); } private static void ValidateExtension(Extension? extension) @@ -1412,8 +1412,8 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal(12345L, input.ReadLong(Data.Models.Metadata.Input.ButtonsKey)); Assert.Equal(12345L, input.ReadLong(Data.Models.Metadata.Input.CoinsKey)); Assert.Equal(12345L, input.ReadLong(Data.Models.Metadata.Input.PlayersKey)); - Assert.True(input.ReadBool(Data.Models.Metadata.Input.ServiceKey)); - Assert.True(input.ReadBool(Data.Models.Metadata.Input.TiltKey)); + Assert.True(input.Service); + Assert.True(input.Tilt); Control[]? controls = input.Read(Data.Models.Metadata.Input.ControlKey); Assert.NotNull(controls); @@ -1508,10 +1508,10 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal(HashType.CRC64.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.CRC64Key)); Assert.Equal("creator", rom.ReadString(Data.Models.Metadata.Rom.CreatorKey)); Assert.Equal("date", rom.ReadString(Data.Models.Metadata.Rom.DateKey)); - Assert.True(rom.ReadBool(Data.Models.Metadata.Rom.DisposeKey)); + Assert.True(rom.Dispose); Assert.Equal("extension", rom.ReadString(Data.Models.Metadata.Rom.ExtensionKey)); Assert.Equal(12345L, rom.ReadLong(Data.Models.Metadata.Rom.FileCountKey)); - Assert.True(rom.ReadBool(Data.Models.Metadata.Rom.FileIsAvailableKey)); + Assert.True(rom.FileIsAvailable); Assert.Equal("flags", rom.ReadString(Data.Models.Metadata.Rom.FlagsKey)); Assert.Equal("format", rom.ReadString(Data.Models.Metadata.Rom.FormatKey)); Assert.Equal("header", rom.ReadString(Data.Models.Metadata.Rom.HeaderKey)); @@ -1522,7 +1522,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("hocr_fts_text_module_version", rom.ReadString(Data.Models.Metadata.Rom.hOCRFtsTextModuleVersionKey)); Assert.Equal("hocr_pageindex_hocr_version", rom.ReadString(Data.Models.Metadata.Rom.hOCRPageIndexhOCRVersionKey)); Assert.Equal("hocr_pageindex_module_version", rom.ReadString(Data.Models.Metadata.Rom.hOCRPageIndexModuleVersionKey)); - Assert.True(rom.ReadBool(Data.Models.Metadata.Rom.InvertedKey)); + Assert.True(rom.Inverted); Assert.Equal("mtime", rom.ReadString(Data.Models.Metadata.Rom.LastModifiedTimeKey)); Assert.Equal("length", rom.ReadString(Data.Models.Metadata.Rom.LengthKey)); Assert.Equal("load16_byte", rom.ReadString(Data.Models.Metadata.Rom.LoadFlagKey)); @@ -1532,7 +1532,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal(HashType.MD5.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.MD5Key)); Assert.Null(rom.ReadString(Data.Models.Metadata.Rom.OpenMSXMediaType)); // Omit due to other test Assert.Equal("merge", rom.ReadString(Data.Models.Metadata.Rom.MergeKey)); - Assert.True(rom.ReadBool(Data.Models.Metadata.Rom.MIAKey)); + Assert.True(rom.MIA); Assert.Equal("name", rom.GetName()); Assert.Equal("ocr", rom.ReadString(Data.Models.Metadata.Rom.TesseractOCRKey)); Assert.Equal("ocr_converted", rom.ReadString(Data.Models.Metadata.Rom.TesseractOCRConvertedKey)); @@ -1543,7 +1543,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("ocr_module_version", rom.ReadString(Data.Models.Metadata.Rom.TesseractOCRModuleVersionKey)); Assert.Equal("ocr_parameters", rom.ReadString(Data.Models.Metadata.Rom.TesseractOCRParametersKey)); Assert.Equal("offset", rom.ReadString(Data.Models.Metadata.Rom.OffsetKey)); - Assert.True(rom.ReadBool(Data.Models.Metadata.Rom.OptionalKey)); + Assert.True(rom.Optional); Assert.Equal("original", rom.ReadString(Data.Models.Metadata.Rom.OriginalKey)); Assert.Equal("pdf_module_version", rom.ReadString(Data.Models.Metadata.Rom.PDFModuleVersionKey)); Assert.Equal("preview-image", rom.ReadString(Data.Models.Metadata.Rom.PreviewImageKey)); @@ -1559,7 +1559,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal(HashType.SHA384.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.SHA384Key)); Assert.Equal(HashType.SHA512.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.SHA512Key)); Assert.Equal(12345L, rom.ReadLong(Data.Models.Metadata.Rom.SizeKey)); - Assert.True(rom.ReadBool(Data.Models.Metadata.Rom.SoundOnlyKey)); + Assert.True(rom.SoundOnly); Assert.Equal("source", rom.ReadString(Data.Models.Metadata.Rom.SourceKey)); Assert.Equal(HashType.SpamSum.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.SpamSumKey)); Assert.Equal("start", rom.ReadString(Data.Models.Metadata.Rom.StartKey)); diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.Splitting.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.Splitting.cs index aaa2eaa1..021711fa 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.Splitting.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.Splitting.cs @@ -20,7 +20,7 @@ namespace SabreTools.Metadata.DatFiles.Test Machine childMachine = new Machine(); childMachine.SetName("child"); childMachine.Write(Data.Models.Metadata.Machine.CloneOfKey, "parent"); - childMachine.Write(Data.Models.Metadata.Machine.IsBiosKey, true); + childMachine.IsBios = true; DatItem parentItem = new Rom(); parentItem.SetName("parent_rom"); @@ -65,7 +65,7 @@ namespace SabreTools.Metadata.DatFiles.Test Machine childMachine = new Machine(); childMachine.SetName("child"); childMachine.Write(Data.Models.Metadata.Machine.CloneOfKey, "parent"); - childMachine.Write(Data.Models.Metadata.Machine.IsBiosKey, true); + childMachine.IsBios = true; DatItem parentItem = new Rom(); parentItem.SetName("parent_rom"); @@ -110,7 +110,7 @@ namespace SabreTools.Metadata.DatFiles.Test Machine childMachine = new Machine(); childMachine.SetName("child"); childMachine.Write(Data.Models.Metadata.Machine.CloneOfKey, "parent"); - childMachine.Write(Data.Models.Metadata.Machine.IsBiosKey, true); + childMachine.IsBios = true; DatItem parentItem = new Rom(); parentItem.SetName("parent_rom"); @@ -158,7 +158,7 @@ namespace SabreTools.Metadata.DatFiles.Test Machine childMachine = new Machine(); childMachine.SetName("child"); childMachine.Write(Data.Models.Metadata.Machine.CloneOfKey, "parent"); - childMachine.Write(Data.Models.Metadata.Machine.IsBiosKey, true); + childMachine.IsBios = true; DatItem parentItem = new Rom(); parentItem.SetName("parent_rom"); @@ -210,7 +210,7 @@ namespace SabreTools.Metadata.DatFiles.Test Machine childMachine = new Machine(); childMachine.SetName("child"); childMachine.Write(Data.Models.Metadata.Machine.CloneOfKey, "parent"); - childMachine.Write(Data.Models.Metadata.Machine.IsBiosKey, true); + childMachine.IsBios = true; DatItem parentItem = new Rom(); parentItem.SetName("parent_rom"); @@ -255,7 +255,7 @@ namespace SabreTools.Metadata.DatFiles.Test Machine childMachine = new Machine(); childMachine.SetName("child"); childMachine.Write(Data.Models.Metadata.Machine.CloneOfKey, "parent"); - childMachine.Write(Data.Models.Metadata.Machine.IsBiosKey, true); + childMachine.IsBios = true; DatItem parentItem = new Rom(); parentItem.SetName("parent_rom"); @@ -307,7 +307,7 @@ namespace SabreTools.Metadata.DatFiles.Test Machine deviceMachine = new Machine(); deviceMachine.SetName("device"); - deviceMachine.Write(Data.Models.Metadata.Machine.IsDeviceKey, true); + deviceMachine.IsDevice = true; Machine slotOptionMachine = new Machine(); slotOptionMachine.SetName("slotoption"); @@ -366,7 +366,7 @@ namespace SabreTools.Metadata.DatFiles.Test Machine deviceMachine = new Machine(); deviceMachine.SetName("device"); - deviceMachine.Write(Data.Models.Metadata.Machine.IsDeviceKey, true); + deviceMachine.IsDevice = true; Machine slotOptionMachine = new Machine(); slotOptionMachine.SetName("slotoption"); @@ -423,7 +423,7 @@ namespace SabreTools.Metadata.DatFiles.Test Machine childMachine = new Machine(); childMachine.SetName("child"); childMachine.Write(Data.Models.Metadata.Machine.RomOfKey, "parent"); - childMachine.Write(Data.Models.Metadata.Machine.IsBiosKey, true); + childMachine.IsBios = true; DatItem parentItem = new Rom(); parentItem.SetName("parent_rom"); @@ -468,7 +468,7 @@ namespace SabreTools.Metadata.DatFiles.Test Machine childMachine = new Machine(); childMachine.SetName("child"); childMachine.Write(Data.Models.Metadata.Machine.RomOfKey, "parent"); - childMachine.Write(Data.Models.Metadata.Machine.IsBiosKey, true); + childMachine.IsBios = true; DatItem parentItem = new Rom(); parentItem.SetName("parent_rom"); @@ -516,11 +516,11 @@ namespace SabreTools.Metadata.DatFiles.Test Machine biosMachine = new Machine(); biosMachine.SetName("bios"); - biosMachine.Write(Data.Models.Metadata.Machine.IsBiosKey, true); + biosMachine.IsBios = true; Machine deviceMachine = new Machine(); deviceMachine.SetName("device"); - deviceMachine.Write(Data.Models.Metadata.Machine.IsDeviceKey, true); + deviceMachine.IsDevice = true; DatItem biosItem = new Rom(); biosItem.Write(DatItem.MachineKey, biosMachine); @@ -548,11 +548,11 @@ namespace SabreTools.Metadata.DatFiles.Test Machine biosMachine = new Machine(); biosMachine.SetName("bios"); - biosMachine.Write(Data.Models.Metadata.Machine.IsBiosKey, true); + biosMachine.IsBios = true; Machine deviceMachine = new Machine(); deviceMachine.SetName("device"); - deviceMachine.Write(Data.Models.Metadata.Machine.IsDeviceKey, true); + deviceMachine.IsDevice = true; DatItem biosItem = new Rom(); DatItem deviceItem = new Rom(); @@ -692,7 +692,7 @@ namespace SabreTools.Metadata.DatFiles.Test Machine childMachine = new Machine(); childMachine.SetName("child"); childMachine.Write(Data.Models.Metadata.Machine.RomOfKey, "parent"); - childMachine.Write(Data.Models.Metadata.Machine.IsBiosKey, true); + childMachine.IsBios = true; DatItem parentItem = new Rom(); parentItem.SetName("parent_rom"); @@ -741,7 +741,7 @@ namespace SabreTools.Metadata.DatFiles.Test Machine childMachine = new Machine(); childMachine.SetName("child"); childMachine.Write(Data.Models.Metadata.Machine.RomOfKey, "parent"); - childMachine.Write(Data.Models.Metadata.Machine.IsBiosKey, true); + childMachine.IsBios = true; DatItem parentItem = new Rom(); parentItem.SetName("parent_rom"); diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs index 4dd4f923..21afa4e8 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs @@ -381,23 +381,23 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("comment", header.ReadString(Data.Models.Metadata.Header.CommentKey)); Assert.Equal("date", header.ReadString(Data.Models.Metadata.Header.DateKey)); Assert.Equal("datversion", header.ReadString(Data.Models.Metadata.Header.DatVersionKey)); - Assert.True(header.ReadBool(Data.Models.Metadata.Header.DebugKey)); + Assert.True(header.Debug); Assert.Equal("description", header.ReadString(Data.Models.Metadata.Header.DescriptionKey)); Assert.Equal("email", header.ReadString(Data.Models.Metadata.Header.EmailKey)); Assert.Equal("emulatorversion", header.ReadString(Data.Models.Metadata.Header.EmulatorVersionKey)); Assert.Equal("merged", header.ReadString(Data.Models.Metadata.Header.ForceMergingKey)); Assert.Equal("required", header.ReadString(Data.Models.Metadata.Header.ForceNodumpKey)); Assert.Equal("zip", header.ReadString(Data.Models.Metadata.Header.ForcePackingKey)); - Assert.True(header.ReadBool(Data.Models.Metadata.Header.ForceZippingKey)); + Assert.True(header.ForceZipping); Assert.Equal("header", header.ReadString(Data.Models.Metadata.Header.HeaderKey)); Assert.Equal("homepage", header.ReadString(Data.Models.Metadata.Header.HomepageKey)); Assert.Equal("id", header.ReadString(Data.Models.Metadata.Header.IdKey)); Assert.NotNull(header.Read(Data.Models.Metadata.Header.ImagesKey)); Assert.Equal("imfolder", header.ReadString(Data.Models.Metadata.Header.ImFolderKey)); Assert.NotNull(header.Read(Data.Models.Metadata.Header.InfosKey)); - Assert.True(header.ReadBool(Data.Models.Metadata.Header.LockBiosModeKey)); - Assert.True(header.ReadBool(Data.Models.Metadata.Header.LockRomModeKey)); - Assert.True(header.ReadBool(Data.Models.Metadata.Header.LockSampleModeKey)); + Assert.True(header.LockBiosMode); + Assert.True(header.LockRomMode); + Assert.True(header.LockSampleMode); Assert.Equal("mameconfig", header.ReadString(Data.Models.Metadata.Header.MameConfigKey)); Assert.Equal("name", header.Name); Assert.NotNull(header.Read(Data.Models.Metadata.Header.NewDatKey)); @@ -444,9 +444,9 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal(HashType.CRC32.ZeroString, machine.ReadString(Data.Models.Metadata.Machine.Im1CRCKey)); Assert.Equal(HashType.CRC32.ZeroString, machine.ReadString(Data.Models.Metadata.Machine.Im2CRCKey)); Assert.Equal("imagenumber", machine.ReadString(Data.Models.Metadata.Machine.ImageNumberKey)); - Assert.Equal("yes", machine.ReadString(Data.Models.Metadata.Machine.IsBiosKey)); - Assert.Equal("yes", machine.ReadString(Data.Models.Metadata.Machine.IsDeviceKey)); - Assert.Equal("yes", machine.ReadString(Data.Models.Metadata.Machine.IsMechanicalKey)); + Assert.Equal(true, machine.IsBios); + Assert.Equal(true, machine.IsDevice); + Assert.Equal(true, machine.IsMechanical); Assert.Equal("language", machine.ReadString(Data.Models.Metadata.Machine.LanguageKey)); Assert.Equal("location", machine.ReadString(Data.Models.Metadata.Machine.LocationKey)); Assert.Equal("manufacturer", machine.ReadString(Data.Models.Metadata.Machine.ManufacturerKey)); @@ -460,7 +460,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("releasenumber", machine.ReadString(Data.Models.Metadata.Machine.ReleaseNumberKey)); Assert.Equal("romof", machine.ReadString(Data.Models.Metadata.Machine.RomOfKey)); Assert.Equal("rotation", machine.ReadString(Data.Models.Metadata.Machine.RotationKey)); - Assert.Equal("yes", machine.ReadString(Data.Models.Metadata.Machine.RunnableKey)); + Assert.Equal(true, machine.Runnable); Assert.Equal("sampleof", machine.ReadString(Data.Models.Metadata.Machine.SampleOfKey)); Assert.Equal("savetype", machine.ReadString(Data.Models.Metadata.Machine.SaveTypeKey)); Assert.Equal("sourcefile", machine.ReadString(Data.Models.Metadata.Machine.SourceFileKey)); @@ -684,7 +684,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal(12345, chip.ReadLong(Data.Models.Metadata.Chip.ClockKey)); Assert.Equal("flags", chip.ReadString(Data.Models.Metadata.Chip.FlagsKey)); Assert.Equal("name", chip.Name); - Assert.True(chip.ReadBool(Data.Models.Metadata.Chip.SoundOnlyKey)); + Assert.True(chip.SoundOnly); Assert.Equal("tag", chip.ReadString(Data.Models.Metadata.Chip.TagKey)); Assert.Equal("cpu", chip.ReadString(Data.Models.Metadata.Chip.ChipTypeKey)); } @@ -722,7 +722,7 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateMetadataConfLocation(Data.Models.Metadata.ConfLocation? confLocation) { Assert.NotNull(confLocation); - Assert.True(confLocation.ReadBool(Data.Models.Metadata.ConfLocation.InvertedKey)); + Assert.True(confLocation.Inverted); Assert.Equal("name", confLocation.Name); Assert.Equal("number", confLocation.ReadString(Data.Models.Metadata.ConfLocation.NumberKey)); } @@ -747,7 +747,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal(12345, control.ReadLong(Data.Models.Metadata.Control.MinimumKey)); Assert.Equal(12345, control.ReadLong(Data.Models.Metadata.Control.PlayerKey)); Assert.Equal(12345, control.ReadLong(Data.Models.Metadata.Control.ReqButtonsKey)); - Assert.True(control.ReadBool(Data.Models.Metadata.Control.ReverseKey)); + Assert.True(control.Reverse); Assert.Equal(12345, control.ReadLong(Data.Models.Metadata.Control.SensitivityKey)); Assert.Equal("lightgun", control.ReadString(Data.Models.Metadata.Control.ControlTypeKey)); Assert.Equal("ways", control.ReadString(Data.Models.Metadata.Control.WaysKey)); @@ -796,7 +796,7 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateMetadataDipLocation(Data.Models.Metadata.DipLocation? dipLocation) { Assert.NotNull(dipLocation); - Assert.True(dipLocation.ReadBool(Data.Models.Metadata.DipLocation.InvertedKey)); + Assert.True(dipLocation.Inverted); Assert.Equal("name", dipLocation.Name); Assert.Equal("number", dipLocation.ReadString(Data.Models.Metadata.DipLocation.NumberKey)); } @@ -847,10 +847,10 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal(HashType.MD5.ZeroString, disk.ReadString(Data.Models.Metadata.Disk.MD5Key)); Assert.Equal("merge", disk.ReadString(Data.Models.Metadata.Disk.MergeKey)); Assert.Equal("name", disk.Name); - Assert.True(disk.ReadBool(Data.Models.Metadata.Disk.OptionalKey)); + Assert.True(disk.Optional); Assert.Equal("region", disk.ReadString(Data.Models.Metadata.Disk.RegionKey)); Assert.Equal(HashType.SHA1.ZeroString, disk.ReadString(Data.Models.Metadata.Disk.SHA1Key)); - Assert.True(disk.ReadBool(Data.Models.Metadata.Disk.WritableKey)); + Assert.True(disk.Writable); } private static void ValidateMetadataDiskArea(Data.Models.Metadata.DiskArea? diskArea) @@ -867,7 +867,7 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateMetadataDisplay(Data.Models.Metadata.Display? display) { Assert.NotNull(display); - Assert.True(display.ReadBool(Data.Models.Metadata.Display.FlipXKey)); + Assert.True(display.FlipX); Assert.Equal(12345, display.ReadLong(Data.Models.Metadata.Display.HBEndKey)); Assert.Equal(12345, display.ReadLong(Data.Models.Metadata.Display.HBStartKey)); Assert.Equal(12345, display.ReadLong(Data.Models.Metadata.Display.HeightKey)); @@ -890,14 +890,14 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("good", driver.ReadString(Data.Models.Metadata.Driver.CocktailKey)); Assert.Equal("good", driver.ReadString(Data.Models.Metadata.Driver.ColorKey)); Assert.Equal("good", driver.ReadString(Data.Models.Metadata.Driver.EmulationKey)); - Assert.True(driver.ReadBool(Data.Models.Metadata.Driver.IncompleteKey)); - Assert.True(driver.ReadBool(Data.Models.Metadata.Driver.NoSoundHardwareKey)); + Assert.True(driver.Incomplete); + Assert.True(driver.NoSoundHardware); Assert.Equal("pallettesize", driver.ReadString(Data.Models.Metadata.Driver.PaletteSizeKey)); - Assert.True(driver.ReadBool(Data.Models.Metadata.Driver.RequiresArtworkKey)); + Assert.True(driver.RequiresArtwork); Assert.Equal("supported", driver.ReadString(Data.Models.Metadata.Driver.SaveStateKey)); Assert.Equal("good", driver.ReadString(Data.Models.Metadata.Driver.SoundKey)); Assert.Equal("good", driver.ReadString(Data.Models.Metadata.Driver.StatusKey)); - Assert.True(driver.ReadBool(Data.Models.Metadata.Driver.UnofficialKey)); + Assert.True(driver.Unofficial); } private static void ValidateMetadataExtension(Data.Models.Metadata.Extension? extension) @@ -929,8 +929,8 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal(12345, input.ReadLong(Data.Models.Metadata.Input.ButtonsKey)); Assert.Equal(12345, input.ReadLong(Data.Models.Metadata.Input.CoinsKey)); Assert.Equal(12345, input.ReadLong(Data.Models.Metadata.Input.PlayersKey)); - Assert.True(input.ReadBool(Data.Models.Metadata.Input.ServiceKey)); - Assert.True(input.ReadBool(Data.Models.Metadata.Input.TiltKey)); + Assert.True(input.Service); + Assert.True(input.Tilt); Data.Models.Metadata.Control[]? controls = input.ReadArray(Data.Models.Metadata.Input.ControlKey); Assert.NotNull(controls); @@ -1053,10 +1053,10 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal(HashType.CRC64.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.CRC64Key)); Assert.Equal("creator", rom.ReadString(Data.Models.Metadata.Rom.CreatorKey)); Assert.Equal("date", rom.ReadString(Data.Models.Metadata.Rom.DateKey)); - Assert.True(rom.ReadBool(Data.Models.Metadata.Rom.DisposeKey)); + Assert.True(rom.Dispose); Assert.Equal("extension", rom.ReadString(Data.Models.Metadata.Rom.ExtensionKey)); Assert.Equal(12345, rom.ReadLong(Data.Models.Metadata.Rom.FileCountKey)); - Assert.True(rom.ReadBool(Data.Models.Metadata.Rom.FileIsAvailableKey)); + Assert.True(rom.FileIsAvailable); Assert.Equal("flags", rom.ReadString(Data.Models.Metadata.Rom.FlagsKey)); Assert.Equal("format", rom.ReadString(Data.Models.Metadata.Rom.FormatKey)); Assert.Equal("header", rom.ReadString(Data.Models.Metadata.Rom.HeaderKey)); @@ -1067,7 +1067,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("hocr_fts_text_module_version", rom.ReadString(Data.Models.Metadata.Rom.hOCRFtsTextModuleVersionKey)); Assert.Equal("hocr_pageindex_hocr_version", rom.ReadString(Data.Models.Metadata.Rom.hOCRPageIndexhOCRVersionKey)); Assert.Equal("hocr_pageindex_module_version", rom.ReadString(Data.Models.Metadata.Rom.hOCRPageIndexModuleVersionKey)); - Assert.True(rom.ReadBool(Data.Models.Metadata.Rom.InvertedKey)); + Assert.True(rom.Inverted); Assert.Equal("mtime", rom.ReadString(Data.Models.Metadata.Rom.LastModifiedTimeKey)); Assert.Equal("length", rom.ReadString(Data.Models.Metadata.Rom.LengthKey)); Assert.Equal("load16_byte", rom.ReadString(Data.Models.Metadata.Rom.LoadFlagKey)); @@ -1077,7 +1077,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal(HashType.MD5.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.MD5Key)); Assert.Null(rom.ReadString(Data.Models.Metadata.Rom.OpenMSXMediaType)); // Omit due to other test Assert.Equal("merge", rom.ReadString(Data.Models.Metadata.Rom.MergeKey)); - Assert.True(rom.ReadBool(Data.Models.Metadata.Rom.MIAKey)); + Assert.True(rom.MIA); Assert.Equal("name", rom.Name); Assert.Equal("ocr", rom.ReadString(Data.Models.Metadata.Rom.TesseractOCRKey)); Assert.Equal("ocr_converted", rom.ReadString(Data.Models.Metadata.Rom.TesseractOCRConvertedKey)); @@ -1088,7 +1088,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("ocr_module_version", rom.ReadString(Data.Models.Metadata.Rom.TesseractOCRModuleVersionKey)); Assert.Equal("ocr_parameters", rom.ReadString(Data.Models.Metadata.Rom.TesseractOCRParametersKey)); Assert.Equal("offset", rom.ReadString(Data.Models.Metadata.Rom.OffsetKey)); - Assert.True(rom.ReadBool(Data.Models.Metadata.Rom.OptionalKey)); + Assert.True(rom.Optional); Assert.Equal("original", rom.ReadString(Data.Models.Metadata.Rom.OriginalKey)); Assert.Equal("pdf_module_version", rom.ReadString(Data.Models.Metadata.Rom.PDFModuleVersionKey)); Assert.Equal("preview-image", rom.ReadString(Data.Models.Metadata.Rom.PreviewImageKey)); @@ -1104,7 +1104,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal(HashType.SHA384.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.SHA384Key)); Assert.Equal(HashType.SHA512.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.SHA512Key)); Assert.Equal(12345, rom.ReadLong(Data.Models.Metadata.Rom.SizeKey)); - Assert.True(rom.ReadBool(Data.Models.Metadata.Rom.SoundOnlyKey)); + Assert.True(rom.SoundOnly); Assert.Equal("source", rom.ReadString(Data.Models.Metadata.Rom.SourceKey)); Assert.Equal(HashType.SpamSum.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.SpamSumKey)); Assert.Equal("start", rom.ReadString(Data.Models.Metadata.Rom.StartKey)); @@ -1244,7 +1244,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("ratings", trurip.Ratings); Assert.Equal("score", trurip.Score); Assert.Equal("players", trurip.Players); - Assert.Equal("enabled", trurip.Enabled); + Assert.Equal(expected: "enabled", trurip.Enabled); Assert.Equal("yes", trurip.CRC); Assert.Equal("sourcefile", trurip.Source); Assert.Equal("cloneof", trurip.CloneOf); diff --git a/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs b/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs index 2d30295d..cf262850 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs @@ -105,8 +105,8 @@ namespace SabreTools.Metadata.DatFiles Header.Write(Data.Models.Metadata.Header.DateKey, header.ReadString(Data.Models.Metadata.Header.DateKey)); if (Header.ReadString(Data.Models.Metadata.Header.DatVersionKey) is null) Header.Write(Data.Models.Metadata.Header.DatVersionKey, header.ReadString(Data.Models.Metadata.Header.DatVersionKey)); - if (Header.ReadBool(Data.Models.Metadata.Header.DebugKey) is null) - Header.Write(Data.Models.Metadata.Header.DebugKey, header.ReadBool(Data.Models.Metadata.Header.DebugKey)); + if (Header.Debug is null) + Header.Debug = header.Debug; if (Header.ReadString(Data.Models.Metadata.Header.DescriptionKey) is null) Header.Write(Data.Models.Metadata.Header.DescriptionKey, header.ReadString(Data.Models.Metadata.Header.DescriptionKey)); if (Header.ReadString(Data.Models.Metadata.Header.EmailKey) is null) @@ -119,8 +119,8 @@ namespace SabreTools.Metadata.DatFiles Header.Write(Data.Models.Metadata.Header.ForceNodumpKey, header.ReadString(Data.Models.Metadata.Header.ForceNodumpKey).AsNodumpFlag().AsStringValue()); if (Header.ReadString(Data.Models.Metadata.Header.ForcePackingKey).AsPackingFlag() == PackingFlag.None) Header.Write(Data.Models.Metadata.Header.ForcePackingKey, header.ReadString(Data.Models.Metadata.Header.ForcePackingKey).AsPackingFlag().AsStringValue()); - if (Header.ReadBool(Data.Models.Metadata.Header.ForceZippingKey) is null) - Header.Write(Data.Models.Metadata.Header.ForceZippingKey, header.ReadBool(Data.Models.Metadata.Header.ForceZippingKey)); + if (Header.ForceZipping is null) + Header.ForceZipping = header.ForceZipping; if (Header.ReadString(Data.Models.Metadata.Header.HeaderKey) is null) Header.Write(Data.Models.Metadata.Header.HeaderKey, header.ReadString(Data.Models.Metadata.Header.HeaderKey)); if (Header.ReadString(Data.Models.Metadata.Header.HomepageKey) is null) @@ -129,12 +129,12 @@ namespace SabreTools.Metadata.DatFiles Header.Write(Data.Models.Metadata.Header.IdKey, header.ReadString(Data.Models.Metadata.Header.IdKey)); if (Header.ReadString(Data.Models.Metadata.Header.ImFolderKey) is null) Header.Write(Data.Models.Metadata.Header.ImFolderKey, header.ReadString(Data.Models.Metadata.Header.ImFolderKey)); - if (Header.ReadBool(Data.Models.Metadata.Header.LockBiosModeKey) is null) - Header.Write(Data.Models.Metadata.Header.LockBiosModeKey, header.ReadBool(Data.Models.Metadata.Header.LockBiosModeKey)); - if (Header.ReadBool(Data.Models.Metadata.Header.LockRomModeKey) is null) - Header.Write(Data.Models.Metadata.Header.LockRomModeKey, header.ReadBool(Data.Models.Metadata.Header.LockRomModeKey)); - if (Header.ReadBool(Data.Models.Metadata.Header.LockSampleModeKey) is null) - Header.Write(Data.Models.Metadata.Header.LockSampleModeKey, header.ReadBool(Data.Models.Metadata.Header.LockSampleModeKey)); + if (Header.LockBiosMode is null) + Header.LockBiosMode = header.LockBiosMode; + if (Header.LockRomMode is null) + Header.LockRomMode = header.LockRomMode; + if (Header.LockSampleMode is null) + Header.LockSampleMode = header.LockSampleMode; if (Header.ReadString(Data.Models.Metadata.Header.MameConfigKey) is null) Header.Write(Data.Models.Metadata.Header.MameConfigKey, header.ReadString(Data.Models.Metadata.Header.MameConfigKey)); if (Header.Name is null) diff --git a/SabreTools.Metadata.DatFiles/DatFile.Splitting.cs b/SabreTools.Metadata.DatFiles/DatFile.Splitting.cs index be6c7c63..02f72357 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.Splitting.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.Splitting.cs @@ -660,7 +660,7 @@ namespace SabreTools.Metadata.DatFiles continue; // If the machine (is/is not) a device, we want to continue - if (deviceOnly ^ (datItems[0].GetMachine()!.ReadBool(Data.Models.Metadata.Machine.IsDeviceKey) == true)) + if (deviceOnly ^ (datItems[0].GetMachine()!.IsDevice == true)) continue; // Get the first item from the bucket @@ -820,7 +820,7 @@ namespace SabreTools.Metadata.DatFiles continue; // If the machine (is/is not) a device, we want to continue - if (deviceOnly ^ (machine.Value.ReadBool(Data.Models.Metadata.Machine.IsDeviceKey) == true)) + if (deviceOnly ^ (machine.Value.IsDevice == true)) continue; // Get all device reference names from the current machine @@ -1079,11 +1079,8 @@ namespace SabreTools.Metadata.DatFiles #endif // Remove flagged items - if ((machine.ReadBool(Data.Models.Metadata.Machine.IsBiosKey) == true) - || (machine.ReadBool(Data.Models.Metadata.Machine.IsDeviceKey) == true)) - { + if ((machine.IsBios == true) || (machine.IsDevice == true)) RemoveBucket(bucket); - } #if NET40_OR_GREATER || NETCOREAPP || NETSTANDARD2_0_OR_GREATER }); #else @@ -1127,8 +1124,7 @@ namespace SabreTools.Metadata.DatFiles #endif // Remove flagged items - if ((machine.Value.ReadBool(Data.Models.Metadata.Machine.IsBiosKey) == true) - || (machine.Value.ReadBool(Data.Models.Metadata.Machine.IsDeviceKey) == true)) + if ((machine.Value.IsBios == true) || (machine.Value.IsDevice == true)) { foreach (var key in items.Keys) { diff --git a/SabreTools.Metadata.DatFiles/DatHeader.cs b/SabreTools.Metadata.DatFiles/DatHeader.cs index 197387f6..430fab85 100644 --- a/SabreTools.Metadata.DatFiles/DatHeader.cs +++ b/SabreTools.Metadata.DatFiles/DatHeader.cs @@ -47,6 +47,18 @@ namespace SabreTools.Metadata.DatFiles } } + public bool? Debug + { + get => _internal.Debug; + set => _internal.Debug = value; + } + + public bool? ForceZipping + { + get => _internal.ForceZipping; + set => _internal.ForceZipping = value; + } + [JsonIgnore] public bool ImagesSpecified { @@ -65,6 +77,24 @@ namespace SabreTools.Metadata.DatFiles } } + public bool? LockBiosMode + { + get => _internal.LockBiosMode; + set => _internal.LockBiosMode = value; + } + + public bool? LockRomMode + { + get => _internal.LockRomMode; + set => _internal.LockRomMode = value; + } + + public bool? LockSampleMode + { + get => _internal.LockSampleMode; + set => _internal.LockSampleMode = value; + } + [JsonIgnore] public bool NewDatSpecified { diff --git a/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs b/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs index df8ff31b..643d5ca9 100644 --- a/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs +++ b/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs @@ -27,7 +27,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test disk.Write(Data.Models.Metadata.Disk.MergeKey, "XXXXXX"); disk.Write(Data.Models.Metadata.Disk.RegionKey, "XXXXXX"); disk.Write(Data.Models.Metadata.Disk.StatusKey, "good"); - disk.Write(Data.Models.Metadata.Disk.OptionalKey, "XXXXXX"); + disk.Optional = true; disk.Write(Data.Models.Metadata.Disk.MD5Key, HashType.MD5.ZeroString); disk.Write(Data.Models.Metadata.Disk.SHA1Key, HashType.SHA1.ZeroString); disk.Write(DatItem.DupeTypeKey, DupeType.All | DupeType.External); @@ -42,7 +42,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Assert.Equal("XXXXXX", actual.ReadString(Data.Models.Metadata.Rom.MergeKey)); Assert.Equal("XXXXXX", actual.ReadString(Data.Models.Metadata.Rom.RegionKey)); Assert.Equal("good", actual.ReadString(Data.Models.Metadata.Rom.StatusKey)); - Assert.Equal("XXXXXX", actual.ReadString(Data.Models.Metadata.Rom.OptionalKey)); + Assert.Equal(true, actual.Optional); Assert.Equal(HashType.MD5.ZeroString, actual.ReadString(Data.Models.Metadata.Rom.MD5Key)); Assert.Equal(HashType.SHA1.ZeroString, actual.ReadString(Data.Models.Metadata.Rom.SHA1Key)); Assert.Equal(DupeType.All | DupeType.External, actual.Read(DatItem.DupeTypeKey)); diff --git a/SabreTools.Metadata.DatItems/Formats/Chip.cs b/SabreTools.Metadata.DatItems/Formats/Chip.cs index dd83cf93..753d295f 100644 --- a/SabreTools.Metadata.DatItems/Formats/Chip.cs +++ b/SabreTools.Metadata.DatItems/Formats/Chip.cs @@ -10,6 +10,17 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("chip"), XmlRoot("chip")] public sealed class Chip : DatItem { + #region Fields + + [JsonIgnore] + public bool? SoundOnly + { + get => (_internal as Data.Models.Metadata.Chip)?.SoundOnly; + set => (_internal as Data.Models.Metadata.Chip)?.SoundOnly = value; + } + + #endregion + #region Constructors public Chip() : base() { } @@ -17,10 +28,6 @@ namespace SabreTools.Metadata.DatItems.Formats public Chip(Data.Models.Metadata.Chip item) : base(item) { // Process flag values - bool? soundOnly = ReadBool(Data.Models.Metadata.Chip.SoundOnlyKey); - if (soundOnly is not null) - Write(Data.Models.Metadata.Chip.SoundOnlyKey, soundOnly.FromYesNo()); - string? chipType = ReadString(Data.Models.Metadata.Chip.ChipTypeKey); if (chipType is not null) Write(Data.Models.Metadata.Chip.ChipTypeKey, chipType.AsChipType()?.AsStringValue()); diff --git a/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs b/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs index 34835759..372639a5 100644 --- a/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs +++ b/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs @@ -10,17 +10,21 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("conflocation"), XmlRoot("conflocation")] public sealed class ConfLocation : DatItem { + #region Fields + + public bool? Inverted + { + get => (_internal as Data.Models.Metadata.ConfLocation)?.Inverted; + set => (_internal as Data.Models.Metadata.ConfLocation)?.Inverted = value; + } + + #endregion + #region Constructors public ConfLocation() : base() { } - public ConfLocation(Data.Models.Metadata.ConfLocation item) : base(item) - { - // Process flag values - bool? inverted = ReadBool(Data.Models.Metadata.ConfLocation.InvertedKey); - if (inverted is not null) - Write(Data.Models.Metadata.ConfLocation.InvertedKey, inverted.FromYesNo()); - } + public ConfLocation(Data.Models.Metadata.ConfLocation item) : base(item) { } public ConfLocation(Data.Models.Metadata.ConfLocation item, Machine machine, Source source) : this(item) { diff --git a/SabreTools.Metadata.DatItems/Formats/Control.cs b/SabreTools.Metadata.DatItems/Formats/Control.cs index b8840a00..1c9c611f 100644 --- a/SabreTools.Metadata.DatItems/Formats/Control.cs +++ b/SabreTools.Metadata.DatItems/Formats/Control.cs @@ -10,6 +10,16 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("control"), XmlRoot("control")] public sealed class Control : DatItem { + #region Fields + + public bool? Reverse + { + get => (_internal as Data.Models.Metadata.Control)?.Reverse; + set => (_internal as Data.Models.Metadata.Control)?.Reverse = value; + } + + #endregion + #region Constructors public Control() : base() { } @@ -41,10 +51,6 @@ namespace SabreTools.Metadata.DatItems.Formats if (reqButtons is not null) Write(Data.Models.Metadata.Control.ReqButtonsKey, reqButtons.ToString()); - bool? reverse = ReadBool(Data.Models.Metadata.Control.ReverseKey); - if (reverse is not null) - Write(Data.Models.Metadata.Control.ReverseKey, reverse.FromYesNo()); - long? sensitivity = ReadLong(Data.Models.Metadata.Control.SensitivityKey); if (sensitivity is not null) Write(Data.Models.Metadata.Control.SensitivityKey, sensitivity.ToString()); diff --git a/SabreTools.Metadata.DatItems/Formats/DipLocation.cs b/SabreTools.Metadata.DatItems/Formats/DipLocation.cs index 207e4b14..de5d8b25 100644 --- a/SabreTools.Metadata.DatItems/Formats/DipLocation.cs +++ b/SabreTools.Metadata.DatItems/Formats/DipLocation.cs @@ -10,17 +10,21 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("diplocation"), XmlRoot("diplocation")] public sealed class DipLocation : DatItem { + #region Fields + + public bool? Inverted + { + get => (_internal as Data.Models.Metadata.DipLocation)?.Inverted; + set => (_internal as Data.Models.Metadata.DipLocation)?.Inverted = value; + } + + #endregion + #region Constructors public DipLocation() : base() { } - public DipLocation(Data.Models.Metadata.DipLocation item) : base(item) - { - // Process flag values - bool? inverted = ReadBool(Data.Models.Metadata.DipLocation.InvertedKey); - if (inverted is not null) - Write(Data.Models.Metadata.DipLocation.InvertedKey, inverted.FromYesNo()); - } + public DipLocation(Data.Models.Metadata.DipLocation item) : base(item) { } public DipLocation(Data.Models.Metadata.DipLocation item, Machine machine, Source source) : this(item) { diff --git a/SabreTools.Metadata.DatItems/Formats/Disk.cs b/SabreTools.Metadata.DatItems/Formats/Disk.cs index 82753e3d..b3510c18 100644 --- a/SabreTools.Metadata.DatItems/Formats/Disk.cs +++ b/SabreTools.Metadata.DatItems/Formats/Disk.cs @@ -38,6 +38,12 @@ namespace SabreTools.Metadata.DatItems.Formats } } + public bool? Optional + { + get => (_internal as Data.Models.Metadata.Disk)?.Optional; + set => (_internal as Data.Models.Metadata.Disk)?.Optional = value; + } + [JsonIgnore] public bool PartSpecified { @@ -50,6 +56,12 @@ namespace SabreTools.Metadata.DatItems.Formats } } + public bool? Writable + { + get => (_internal as Data.Models.Metadata.Disk)?.Writable; + set => (_internal as Data.Models.Metadata.Disk)?.Writable = value; + } + #endregion #region Constructors @@ -65,18 +77,10 @@ namespace SabreTools.Metadata.DatItems.Formats Write(DupeTypeKey, 0x00); // Process flag values - bool? optional = ReadBool(Data.Models.Metadata.Disk.OptionalKey); - if (optional is not null) - Write(Data.Models.Metadata.Disk.OptionalKey, optional.FromYesNo()); - string? status = ReadString(Data.Models.Metadata.Disk.StatusKey); if (status is not null) Write(Data.Models.Metadata.Disk.StatusKey, status.AsItemStatus()?.AsStringValue()); - bool? writable = ReadBool(Data.Models.Metadata.Disk.WritableKey); - if (writable is not null) - Write(Data.Models.Metadata.Disk.WritableKey, writable.FromYesNo()); - // Process hash values string? md5 = ReadString(Data.Models.Metadata.Disk.MD5Key); if (md5 is not null) diff --git a/SabreTools.Metadata.DatItems/Formats/Display.cs b/SabreTools.Metadata.DatItems/Formats/Display.cs index 8921a2f6..c3462fa7 100644 --- a/SabreTools.Metadata.DatItems/Formats/Display.cs +++ b/SabreTools.Metadata.DatItems/Formats/Display.cs @@ -11,6 +11,16 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("display"), XmlRoot("display")] public sealed class Display : DatItem { + #region Fields + + public bool? FlipX + { + get => (_internal as Data.Models.Metadata.Display)?.FlipX; + set => (_internal as Data.Models.Metadata.Display)?.FlipX = value; + } + + #endregion + #region Constructors public Display() : base() { } @@ -18,10 +28,6 @@ namespace SabreTools.Metadata.DatItems.Formats public Display(Data.Models.Metadata.Display item) : base(item) { // Process flag values - bool? flipX = ReadBool(Data.Models.Metadata.Display.FlipXKey); - if (flipX is not null) - Write(Data.Models.Metadata.Display.FlipXKey, flipX.FromYesNo()); - long? hbEnd = ReadLong(Data.Models.Metadata.Display.HBEndKey); if (hbEnd is not null) Write(Data.Models.Metadata.Display.HBEndKey, hbEnd.ToString()); diff --git a/SabreTools.Metadata.DatItems/Formats/Driver.cs b/SabreTools.Metadata.DatItems/Formats/Driver.cs index 03a038bf..7d538da3 100644 --- a/SabreTools.Metadata.DatItems/Formats/Driver.cs +++ b/SabreTools.Metadata.DatItems/Formats/Driver.cs @@ -10,6 +10,34 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("driver"), XmlRoot("driver")] public sealed class Driver : DatItem { + #region Fields + + public bool? Incomplete + { + get => (_internal as Data.Models.Metadata.Driver)?.Incomplete; + set => (_internal as Data.Models.Metadata.Driver)?.Incomplete = value; + } + + public bool? NoSoundHardware + { + get => (_internal as Data.Models.Metadata.Driver)?.NoSoundHardware; + set => (_internal as Data.Models.Metadata.Driver)?.NoSoundHardware = value; + } + + public bool? RequiresArtwork + { + get => (_internal as Data.Models.Metadata.Driver)?.RequiresArtwork; + set => (_internal as Data.Models.Metadata.Driver)?.RequiresArtwork = value; + } + + public bool? Unofficial + { + get => (_internal as Data.Models.Metadata.Driver)?.Unofficial; + set => (_internal as Data.Models.Metadata.Driver)?.Unofficial = value; + } + + #endregion + #region Constructors public Driver() : base() { } @@ -29,22 +57,10 @@ namespace SabreTools.Metadata.DatItems.Formats if (emulation is not null) Write(Data.Models.Metadata.Driver.EmulationKey, emulation.AsSupportStatus()?.AsStringValue()); - bool? incomplete = ReadBool(Data.Models.Metadata.Driver.IncompleteKey); - if (incomplete is not null) - Write(Data.Models.Metadata.Driver.IncompleteKey, incomplete.FromYesNo()); - - bool? noSoundHardware = ReadBool(Data.Models.Metadata.Driver.NoSoundHardwareKey); - if (noSoundHardware is not null) - Write(Data.Models.Metadata.Driver.NoSoundHardwareKey, noSoundHardware.FromYesNo()); - long? paletteSize = ReadLong(Data.Models.Metadata.Driver.PaletteSizeKey); if (paletteSize is not null) Write(Data.Models.Metadata.Driver.PaletteSizeKey, paletteSize.ToString()); - bool? requiresArtwork = ReadBool(Data.Models.Metadata.Driver.RequiresArtworkKey); - if (requiresArtwork is not null) - Write(Data.Models.Metadata.Driver.RequiresArtworkKey, requiresArtwork.FromYesNo()); - string? saveState = ReadString(Data.Models.Metadata.Driver.SaveStateKey); if (saveState is not null) Write(Data.Models.Metadata.Driver.SaveStateKey, saveState.AsSupported()?.AsStringValue(useSecond: true)); @@ -56,10 +72,6 @@ namespace SabreTools.Metadata.DatItems.Formats string? status = ReadString(Data.Models.Metadata.Driver.StatusKey); if (status is not null) Write(Data.Models.Metadata.Driver.StatusKey, status.AsSupportStatus()?.AsStringValue()); - - bool? unofficial = ReadBool(Data.Models.Metadata.Driver.UnofficialKey); - if (unofficial is not null) - Write(Data.Models.Metadata.Driver.UnofficialKey, unofficial.FromYesNo()); } public Driver(Data.Models.Metadata.Driver item, Machine machine, Source source) : this(item) diff --git a/SabreTools.Metadata.DatItems/Formats/Input.cs b/SabreTools.Metadata.DatItems/Formats/Input.cs index 2b71950f..de343b4f 100644 --- a/SabreTools.Metadata.DatItems/Formats/Input.cs +++ b/SabreTools.Metadata.DatItems/Formats/Input.cs @@ -23,6 +23,18 @@ namespace SabreTools.Metadata.DatItems.Formats } } + public bool? Service + { + get => (_internal as Data.Models.Metadata.Input)?.Service; + set => (_internal as Data.Models.Metadata.Input)?.Service = value; + } + + public bool? Tilt + { + get => (_internal as Data.Models.Metadata.Input)?.Tilt; + set => (_internal as Data.Models.Metadata.Input)?.Tilt = value; + } + #endregion #region Constructors @@ -44,14 +56,6 @@ namespace SabreTools.Metadata.DatItems.Formats if (players is not null) Write(Data.Models.Metadata.Input.PlayersKey, players.ToString()); - bool? service = ReadBool(Data.Models.Metadata.Input.ServiceKey); - if (service is not null) - Write(Data.Models.Metadata.Input.ServiceKey, service.FromYesNo()); - - bool? tilt = ReadBool(Data.Models.Metadata.Input.TiltKey); - if (tilt is not null) - Write(Data.Models.Metadata.Input.TiltKey, tilt.FromYesNo()); - // Handle subitems var controls = item.ReadArray(Data.Models.Metadata.Input.ControlKey); if (controls is not null) diff --git a/SabreTools.Metadata.DatItems/Formats/Rom.cs b/SabreTools.Metadata.DatItems/Formats/Rom.cs index 005110e7..f3670a55 100644 --- a/SabreTools.Metadata.DatItems/Formats/Rom.cs +++ b/SabreTools.Metadata.DatItems/Formats/Rom.cs @@ -28,26 +28,6 @@ namespace SabreTools.Metadata.DatItems.Formats #region Fields - [JsonIgnore] - public bool ItemStatusSpecified - { - get - { - var status = ReadString(Data.Models.Metadata.Rom.StatusKey).AsItemStatus(); - return status is not null && status != ItemStatus.None; - } - } - - [JsonIgnore] - public bool OriginalSpecified - { - get - { - var original = Read("ORIGINAL"); - return original is not null && original != default; - } - } - [JsonIgnore] public bool DataAreaSpecified { @@ -62,6 +42,56 @@ namespace SabreTools.Metadata.DatItems.Formats } } + public bool? Dispose + { + get => (_internal as Data.Models.Metadata.Rom)?.Dispose; + set => (_internal as Data.Models.Metadata.Rom)?.Dispose = value; + } + + public bool? FileIsAvailable + { + get => (_internal as Data.Models.Metadata.Rom)?.FileIsAvailable; + set => (_internal as Data.Models.Metadata.Rom)?.FileIsAvailable = value; + } + + public bool? Inverted + { + get => (_internal as Data.Models.Metadata.Rom)?.Inverted; + set => (_internal as Data.Models.Metadata.Rom)?.Inverted = value; + } + + [JsonIgnore] + public bool ItemStatusSpecified + { + get + { + var status = ReadString(Data.Models.Metadata.Rom.StatusKey).AsItemStatus(); + return status is not null && status != ItemStatus.None; + } + } + + public bool? MIA + { + get => (_internal as Data.Models.Metadata.Rom)?.MIA; + set => (_internal as Data.Models.Metadata.Rom)?.MIA = value; + } + + public bool? Optional + { + get => (_internal as Data.Models.Metadata.Rom)?.Optional; + set => (_internal as Data.Models.Metadata.Rom)?.Optional = value; + } + + [JsonIgnore] + public bool OriginalSpecified + { + get + { + var original = Read("ORIGINAL"); + return original is not null && original != default; + } + } + [JsonIgnore] public bool PartSpecified { @@ -74,6 +104,12 @@ namespace SabreTools.Metadata.DatItems.Formats } } + public bool? SoundOnly + { + get => (_internal as Data.Models.Metadata.Rom)?.SoundOnly; + set => (_internal as Data.Models.Metadata.Rom)?.SoundOnly = value; + } + #endregion #region Constructors @@ -194,14 +230,6 @@ namespace SabreTools.Metadata.DatItems.Formats Write(DupeTypeKey, 0x00); // Process flag values - bool? dispose = ReadBool(Data.Models.Metadata.Rom.DisposeKey); - if (dispose is not null) - Write(Data.Models.Metadata.Rom.DisposeKey, dispose.FromYesNo()); - - bool? inverted = ReadBool(Data.Models.Metadata.Rom.InvertedKey); - if (inverted is not null) - Write(Data.Models.Metadata.Rom.InvertedKey, inverted.FromYesNo()); - string? loadFlag = ReadString(Data.Models.Metadata.Rom.LoadFlagKey); if (loadFlag is not null) Write(Data.Models.Metadata.Rom.LoadFlagKey, loadFlag.AsLoadFlag()?.AsStringValue()); @@ -210,18 +238,6 @@ namespace SabreTools.Metadata.DatItems.Formats if (openMSXMediaType is not null) Write(Data.Models.Metadata.Rom.OpenMSXMediaType, openMSXMediaType.AsOpenMSXSubType()?.AsStringValue()); - bool? mia = ReadBool(Data.Models.Metadata.Rom.MIAKey); - if (mia is not null) - Write(Data.Models.Metadata.Rom.MIAKey, mia.FromYesNo()); - - bool? optional = ReadBool(Data.Models.Metadata.Rom.OptionalKey); - if (optional is not null) - Write(Data.Models.Metadata.Rom.OptionalKey, optional.FromYesNo()); - - bool? soundOnly = ReadBool(Data.Models.Metadata.Rom.SoundOnlyKey); - if (soundOnly is not null) - Write(Data.Models.Metadata.Rom.SoundOnlyKey, soundOnly.FromYesNo()); - string? status = ReadString(Data.Models.Metadata.Rom.StatusKey); if (status is not null) Write(Data.Models.Metadata.Rom.StatusKey, status.AsItemStatus()?.AsStringValue()); diff --git a/SabreTools.Metadata.DatItems/Machine.cs b/SabreTools.Metadata.DatItems/Machine.cs index 23ca5437..28657240 100644 --- a/SabreTools.Metadata.DatItems/Machine.cs +++ b/SabreTools.Metadata.DatItems/Machine.cs @@ -13,6 +13,34 @@ namespace SabreTools.Metadata.DatItems [JsonObject("machine"), XmlRoot("machine")] public sealed class Machine : ModelBackedItem, ICloneable, IEquatable { + #region Fields + + public bool? IsBios + { + get => _internal.IsBios; + set => _internal.IsBios = value; + } + + public bool? IsDevice + { + get => _internal.IsDevice; + set => _internal.IsDevice = value; + } + + public bool? IsMechanical + { + get => _internal.IsMechanical; + set => _internal.IsMechanical = value; + } + + public bool? Runnable + { + get => _internal.Runnable; + set => _internal.Runnable = value; + } + + #endregion + #region Constructors public Machine() @@ -63,18 +91,6 @@ namespace SabreTools.Metadata.DatItems if (im2Crc is not null) Write(Data.Models.Metadata.Machine.Im2CRCKey, TextHelper.NormalizeCRC32(im2Crc)); - bool? isBios = ReadBool(Data.Models.Metadata.Machine.IsBiosKey); - if (isBios is not null) - Write(Data.Models.Metadata.Machine.IsBiosKey, isBios.FromYesNo()); - - bool? isDevice = ReadBool(Data.Models.Metadata.Machine.IsDeviceKey); - if (isDevice is not null) - Write(Data.Models.Metadata.Machine.IsDeviceKey, isDevice.FromYesNo()); - - bool? isMechanical = ReadBool(Data.Models.Metadata.Machine.IsMechanicalKey); - if (isMechanical is not null) - Write(Data.Models.Metadata.Machine.IsMechanicalKey, isMechanical.FromYesNo()); - string? supported = ReadString(Data.Models.Metadata.Machine.SupportedKey); if (supported is not null) Write(Data.Models.Metadata.Machine.SupportedKey, supported.AsSupported()?.AsStringValue()); diff --git a/SabreTools.Metadata.Filter/FilterObject.cs b/SabreTools.Metadata.Filter/FilterObject.cs index 27dcd70c..f673a530 100644 --- a/SabreTools.Metadata.Filter/FilterObject.cs +++ b/SabreTools.Metadata.Filter/FilterObject.cs @@ -356,10 +356,30 @@ namespace SabreTools.Metadata.Filter checkValue = item.Default.FromYesNo(); return true; + case Chip item when Key.FieldName == "soundonly": + checkValue = item.SoundOnly.FromYesNo(); + return true; + + case ConfLocation item when Key.FieldName == "inverted": + checkValue = item.Inverted.FromYesNo(); + return true; + case ConfSetting item when Key.FieldName == "default": checkValue = item.Default.FromYesNo(); return true; + case Control item when Key.FieldName == "reverse": + checkValue = item.Reverse.FromYesNo(); + return true; + + case DipLocation item when Key.FieldName == "inverted": + checkValue = item.Inverted.FromYesNo(); + return true; + + case DipLocation item when Key.FieldName == "inverted": + checkValue = item.Inverted.FromYesNo(); + return true; + case DipSwitch item when Key.FieldName == "default": checkValue = item.Default.FromYesNo(); return true; @@ -368,6 +388,66 @@ namespace SabreTools.Metadata.Filter checkValue = item.Default.FromYesNo(); return true; + case Disk item when Key.FieldName == "optional": + checkValue = item.Optional.FromYesNo(); + return true; + case Disk item when Key.FieldName == "writable": + checkValue = item.Writable.FromYesNo(); + return true; + + case Display item when Key.FieldName == "flipx": + checkValue = item.FlipX.FromYesNo(); + return true; + + case Driver item when Key.FieldName == "incomplete": + checkValue = item.Incomplete.FromYesNo(); + return true; + case Driver item when Key.FieldName == "nosoundhardware": + checkValue = item.NoSoundHardware.FromYesNo(); + return true; + case Driver item when Key.FieldName == "requiresartwork": + checkValue = item.RequiresArtwork.FromYesNo(); + return true; + case Driver item when Key.FieldName == "unofficial": + checkValue = item.Unofficial.FromYesNo(); + return true; + + case Header item when Key.FieldName == "debug": + checkValue = item.Debug.FromYesNo(); + return true; + case Header item when Key.FieldName == "forcezipping": + checkValue = item.ForceZipping.FromYesNo(); + return true; + case Header item when Key.FieldName == "lockbiosmode": + checkValue = item.LockBiosMode.FromYesNo(); + return true; + case Header item when Key.FieldName == "lockrommode": + checkValue = item.LockRomMode.FromYesNo(); + return true; + case Header item when Key.FieldName == "locksamplemode": + checkValue = item.LockSampleMode.FromYesNo(); + return true; + + case Input item when Key.FieldName == "service": + checkValue = item.Service.FromYesNo(); + return true; + case Input item when Key.FieldName == "tilt": + checkValue = item.Tilt.FromYesNo(); + return true; + + case Machine item when Key.FieldName == "isbios": + checkValue = item.IsBios.FromYesNo(); + return true; + case Machine item when Key.FieldName == "isdevice": + checkValue = item.IsDevice.FromYesNo(); + return true; + case Machine item when Key.FieldName == "ismechanical": + checkValue = item.IsMechanical.FromYesNo(); + return true; + case Machine item when Key.FieldName == "runnable": + checkValue = item.Runnable.FromYesNo(); + return true; + case RamOption item when Key.FieldName == "default": checkValue = item.Default.FromYesNo(); return true; @@ -376,6 +456,25 @@ namespace SabreTools.Metadata.Filter checkValue = item.Default.FromYesNo(); return true; + case Rom item when Key.FieldName == "dispose": + checkValue = item.Dispose.FromYesNo(); + return true; + case Rom item when Key.FieldName == "fileisavailable": + checkValue = item.FileIsAvailable.FromYesNo(); + return true; + case Rom item when Key.FieldName == "inverted": + checkValue = item.Inverted.FromYesNo(); + return true; + case Rom item when Key.FieldName == "mia": + checkValue = item.MIA.FromYesNo(); + return true; + case Rom item when Key.FieldName == "optional": + checkValue = item.Optional.FromYesNo(); + return true; + case Rom item when Key.FieldName == "soundonly": + checkValue = item.SoundOnly.FromYesNo(); + return true; + case SlotOption item when Key.FieldName == "default": checkValue = item.Default.FromYesNo(); return true; diff --git a/SabreTools.Metadata.Filter/FilterRunner.cs b/SabreTools.Metadata.Filter/FilterRunner.cs index 14bf5a83..5c373e94 100644 --- a/SabreTools.Metadata.Filter/FilterRunner.cs +++ b/SabreTools.Metadata.Filter/FilterRunner.cs @@ -73,11 +73,11 @@ namespace SabreTools.Metadata.Filter string key = filter.Key.ToString(); // Special case for machine types - if (filter.Key.ItemName == MetadataFile.MachineKey && filter.Key.FieldName == Machine.IsBiosKey) + if (filter.Key.ItemName == MetadataFile.MachineKey && filter.Key.FieldName == "isbios") key = $"{MetadataFile.MachineKey}.COMBINEDTYPE"; - else if (filter.Key.ItemName == MetadataFile.MachineKey && filter.Key.FieldName == Machine.IsDeviceKey) + else if (filter.Key.ItemName == MetadataFile.MachineKey && filter.Key.FieldName == "isdevice") key = $"{MetadataFile.MachineKey}.COMBINEDTYPE"; - else if (filter.Key.ItemName == MetadataFile.MachineKey && filter.Key.FieldName == Machine.IsMechanicalKey) + else if (filter.Key.ItemName == MetadataFile.MachineKey && filter.Key.FieldName == "ismechanical") key = $"{MetadataFile.MachineKey}.COMBINEDTYPE"; // Set the expected group type diff --git a/SabreTools.Serialization.CrossModel.Test/AttractModeTests.cs b/SabreTools.Serialization.CrossModel.Test/AttractModeTests.cs index b93aaccb..9e0fc4dc 100644 --- a/SabreTools.Serialization.CrossModel.Test/AttractModeTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/AttractModeTests.cs @@ -58,7 +58,7 @@ namespace SabreTools.Serialization.CrossModel.Test Tags = "XXXXXX", PlayedCount = "XXXXXX", PlayedTime = "XXXXXX", - FileIsAvailable = "XXXXXX", + FileIsAvailable = true, }; return new Data.Models.AttractMode.MetadataFile @@ -105,7 +105,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", row.Tags); Assert.Equal("XXXXXX", row.PlayedCount); Assert.Equal("XXXXXX", row.PlayedTime); - Assert.Equal("XXXXXX", row.FileIsAvailable); + Assert.Equal(true, row.FileIsAvailable); } } } diff --git a/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs b/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs index f47f1e29..ba602350 100644 --- a/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs @@ -74,7 +74,7 @@ namespace SabreTools.Serialization.CrossModel.Test Header = "XXXXXX", Type = "XXXXXX", ForceMerging = "XXXXXX", - ForceZipping = "XXXXXX", + ForceZipping = true, ForcePacking = "XXXXXX", }; @@ -121,8 +121,8 @@ namespace SabreTools.Serialization.CrossModel.Test Offs = "XXXXXX", Serial = "XXXXXX", Header = "XXXXXX", - Inverted = "XXXXXX", - MIA = "XXXXXX", + Inverted = true, + MIA = true, }; var disk = new Data.Models.ClrMamePro.Disk @@ -184,8 +184,8 @@ namespace SabreTools.Serialization.CrossModel.Test Control = "XXXXXX", Buttons = "XXXXXX", Coins = "XXXXXX", - Tilt = "XXXXXX", - Service = "XXXXXX", + Tilt = true, + Service = true, }; var dipswitch = new Data.Models.ClrMamePro.DipSwitch @@ -263,7 +263,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", cmp.Header); Assert.Equal("XXXXXX", cmp.Type); Assert.Equal("XXXXXX", cmp.ForceMerging); - Assert.Equal("XXXXXX", cmp.ForceZipping); + Assert.Equal(true, cmp.ForceZipping); Assert.Equal("XXXXXX", cmp.ForcePacking); } @@ -384,8 +384,8 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", rom.Offs); Assert.Equal("XXXXXX", rom.Serial); Assert.Equal("XXXXXX", rom.Header); - Assert.Equal("XXXXXX", rom.Inverted); - Assert.Equal("XXXXXX", rom.MIA); + Assert.Equal(true, rom.Inverted); + Assert.Equal(true, rom.MIA); } /// @@ -479,8 +479,8 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", input.Control); Assert.Equal("XXXXXX", input.Buttons); Assert.Equal("XXXXXX", input.Coins); - Assert.Equal("XXXXXX", input.Tilt); - Assert.Equal("XXXXXX", input.Service); + Assert.Equal(true, input.Tilt); + Assert.Equal(true, input.Service); } /// diff --git a/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs b/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs index 60d915a8..bb92df2d 100644 --- a/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs @@ -23,7 +23,7 @@ namespace SabreTools.Serialization.CrossModel.Test // Validate the data Assert.NotNull(newMame); Assert.Equal("XXXXXX", newMame.Build); - Assert.Equal("XXXXXX", newMame.Debug); + Assert.Equal(true, newMame.Debug); Assert.Equal("XXXXXX", newMame.MameConfig); Assert.NotNull(newMame.Game); @@ -50,7 +50,7 @@ namespace SabreTools.Serialization.CrossModel.Test // Validate the data Assert.NotNull(newMame); Assert.Equal("XXXXXX", newMame.Build); - Assert.Equal("XXXXXX", newMame.Debug); + Assert.Equal(true, newMame.Debug); Assert.Equal("XXXXXX", newMame.MameConfig); Assert.NotNull(newMame.Game); @@ -81,9 +81,9 @@ namespace SabreTools.Serialization.CrossModel.Test Region = "XXXXXX", Offset = "XXXXXX", Status = "XXXXXX", - Optional = "XXXXXX", - Dispose = "XXXXXX", - SoundOnly = "XXXXXX", + Optional = true, + Dispose = true, + SoundOnly = true, }; var disk = new Data.Models.Listxml.Disk @@ -94,9 +94,9 @@ namespace SabreTools.Serialization.CrossModel.Test Merge = "XXXXXX", Region = "XXXXXX", Index = "XXXXXX", - Writable = "XXXXXX", + Writable = true, Status = "XXXXXX", - Optional = "XXXXXX", + Optional = true, }; var deviceref = new Data.Models.Listxml.DeviceRef @@ -114,7 +114,7 @@ namespace SabreTools.Serialization.CrossModel.Test Name = "XXXXXX", Tag = "XXXXXX", Type = "XXXXXX", - SoundOnly = "XXXXXX", + SoundOnly = true, Clock = "XXXXXX", }; @@ -123,7 +123,7 @@ namespace SabreTools.Serialization.CrossModel.Test Tag = "XXXXXX", Type = "XXXXXX", Rotate = "XXXXXX", - FlipX = "XXXXXX", + FlipX = true, Width = "XXXXXX", Height = "XXXXXX", Refresh = "XXXXXX", @@ -162,7 +162,7 @@ namespace SabreTools.Serialization.CrossModel.Test Maximum = "XXXXXX", Sensitivity = "XXXXXX", KeyDelta = "XXXXXX", - Reverse = "XXXXXX", + Reverse = true, Ways = "XXXXXX", Ways2 = "XXXXXX", Ways3 = "XXXXXX", @@ -170,8 +170,8 @@ namespace SabreTools.Serialization.CrossModel.Test var input = new Data.Models.Listxml.Input { - Service = "XXXXXX", - Tilt = "XXXXXX", + Service = true, + Tilt = true, Players = "XXXXXX", //ControlAttr = "XXXXXX", // Mututally exclusive with input.Control Buttons = "XXXXXX", @@ -191,7 +191,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Name = "XXXXXX", Number = "XXXXXX", - Inverted = "XXXXXX", + Inverted = true, }; var dipvalue = new Data.Models.Listxml.DipValue @@ -216,7 +216,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Name = "XXXXXX", Number = "XXXXXX", - Inverted = "XXXXXX", + Inverted = true, }; var confsetting = new Data.Models.Listxml.ConfSetting @@ -264,10 +264,10 @@ namespace SabreTools.Serialization.CrossModel.Test Emulation = "XXXXXX", Cocktail = "XXXXXX", SaveState = "XXXXXX", - RequiresArtwork = "XXXXXX", - Unofficial = "XXXXXX", - NoSoundHardware = "XXXXXX", - Incomplete = "XXXXXX", + RequiresArtwork = true, + Unofficial = true, + NoSoundHardware = true, + Incomplete = true, }; var feature = new Data.Models.Listxml.Feature @@ -332,10 +332,10 @@ namespace SabreTools.Serialization.CrossModel.Test : new Data.Models.Listxml.Machine(); gameBase.Name = "XXXXXX"; gameBase.SourceFile = "XXXXXX"; - gameBase.IsBios = "XXXXXX"; - gameBase.IsDevice = "XXXXXX"; - gameBase.IsMechanical = "XXXXXX"; - gameBase.Runnable = "XXXXXX"; + gameBase.IsBios = true; + gameBase.IsDevice = true; + gameBase.IsMechanical = true; + gameBase.Runnable = true; gameBase.CloneOf = "XXXXXX"; gameBase.RomOf = "XXXXXX"; gameBase.SampleOf = "XXXXXX"; @@ -367,7 +367,7 @@ namespace SabreTools.Serialization.CrossModel.Test return new Data.Models.Listxml.Mame { Build = "XXXXXX", - Debug = "XXXXXX", + Debug = true, MameConfig = "XXXXXX", Game = [gameBase], }; @@ -381,10 +381,10 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(gb); Assert.Equal("XXXXXX", gb.Name); Assert.Equal("XXXXXX", gb.SourceFile); - Assert.Equal("XXXXXX", gb.IsBios); - Assert.Equal("XXXXXX", gb.IsDevice); - Assert.Equal("XXXXXX", gb.IsMechanical); - Assert.Equal("XXXXXX", gb.Runnable); + Assert.Equal(true, gb.IsBios); + Assert.Equal(true, gb.IsDevice); + Assert.Equal(true, gb.IsMechanical); + Assert.Equal(true, gb.Runnable); Assert.Equal("XXXXXX", gb.CloneOf); Assert.Equal("XXXXXX", gb.RomOf); Assert.Equal("XXXXXX", gb.SampleOf); @@ -493,9 +493,9 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", rom.Region); Assert.Equal("XXXXXX", rom.Offset); Assert.Equal("XXXXXX", rom.Status); - Assert.Equal("XXXXXX", rom.Optional); - Assert.Equal("XXXXXX", rom.Dispose); - Assert.Equal("XXXXXX", rom.SoundOnly); + Assert.Equal(true, rom.Optional); + Assert.Equal(true, rom.Dispose); + Assert.Equal(true, rom.SoundOnly); } /// @@ -510,9 +510,9 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", disk.Merge); Assert.Equal("XXXXXX", disk.Region); Assert.Equal("XXXXXX", disk.Index); - Assert.Equal("XXXXXX", disk.Writable); + Assert.Equal(true, disk.Writable); Assert.Equal("XXXXXX", disk.Status); - Assert.Equal("XXXXXX", disk.Optional); + Assert.Equal(true, disk.Optional); } /// @@ -542,7 +542,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", chip.Name); Assert.Equal("XXXXXX", chip.Tag); Assert.Equal("XXXXXX", chip.Type); - Assert.Equal("XXXXXX", chip.SoundOnly); + Assert.Equal(true, chip.SoundOnly); Assert.Equal("XXXXXX", chip.Clock); } @@ -555,7 +555,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", display.Tag); Assert.Equal("XXXXXX", display.Type); Assert.Equal("XXXXXX", display.Rotate); - Assert.Equal("XXXXXX", display.FlipX); + Assert.Equal(true, display.FlipX); Assert.Equal("XXXXXX", display.Width); Assert.Equal("XXXXXX", display.Height); Assert.Equal("XXXXXX", display.Refresh); @@ -598,8 +598,8 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Input? input) { Assert.NotNull(input); - Assert.Equal("XXXXXX", input.Service); - Assert.Equal("XXXXXX", input.Tilt); + Assert.Equal(true, input.Service); + Assert.Equal(true, input.Tilt); Assert.Equal("XXXXXX", input.Players); //Assert.Equal("XXXXXX", input.ControlAttr); // Mututally exclusive with input.Control Assert.Equal("XXXXXX", input.Buttons); @@ -624,7 +624,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", control.Maximum); Assert.Equal("XXXXXX", control.Sensitivity); Assert.Equal("XXXXXX", control.KeyDelta); - Assert.Equal("XXXXXX", control.Reverse); + Assert.Equal(true, control.Reverse); Assert.Equal("XXXXXX", control.Ways); Assert.Equal("XXXXXX", control.Ways2); Assert.Equal("XXXXXX", control.Ways3); @@ -670,7 +670,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(diplocation); Assert.Equal("XXXXXX", diplocation.Name); Assert.Equal("XXXXXX", diplocation.Number); - Assert.Equal("XXXXXX", diplocation.Inverted); + Assert.Equal(true, diplocation.Inverted); } /// @@ -713,7 +713,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(conflocation); Assert.Equal("XXXXXX", conflocation.Name); Assert.Equal("XXXXXX", conflocation.Number); - Assert.Equal("XXXXXX", conflocation.Inverted); + Assert.Equal(true, conflocation.Inverted); } /// @@ -774,10 +774,10 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", driver.Emulation); Assert.Equal("XXXXXX", driver.Cocktail); Assert.Equal("XXXXXX", driver.SaveState); - Assert.Equal("XXXXXX", driver.RequiresArtwork); - Assert.Equal("XXXXXX", driver.Unofficial); - Assert.Equal("XXXXXX", driver.NoSoundHardware); - Assert.Equal("XXXXXX", driver.Incomplete); + Assert.Equal(true, driver.RequiresArtwork); + Assert.Equal(true, driver.Unofficial); + Assert.Equal(true, driver.NoSoundHardware); + Assert.Equal(true, driver.Incomplete); } /// diff --git a/SabreTools.Serialization.CrossModel.Test/LogiqxTests.cs b/SabreTools.Serialization.CrossModel.Test/LogiqxTests.cs index c0ec27c0..10a6e549 100644 --- a/SabreTools.Serialization.CrossModel.Test/LogiqxTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/LogiqxTests.cs @@ -23,7 +23,7 @@ namespace SabreTools.Serialization.CrossModel.Test // Validate the data Assert.NotNull(newDf); Assert.Equal("XXXXXX", newDf.Build); - Assert.Equal("XXXXXX", newDf.Debug); + Assert.Equal(true, newDf.Debug); Assert.Equal("XXXXXX", newDf.SchemaLocation); Validate(newDf.Header); @@ -55,7 +55,7 @@ namespace SabreTools.Serialization.CrossModel.Test // Validate the data Assert.NotNull(newDf); Assert.Equal("XXXXXX", newDf.Build); - Assert.Equal("XXXXXX", newDf.Debug); + Assert.Equal(true, newDf.Debug); Assert.Equal("XXXXXX", newDf.SchemaLocation); Validate(newDf.Header); @@ -87,9 +87,9 @@ namespace SabreTools.Serialization.CrossModel.Test RomMode = "XXXXXX", BiosMode = "XXXXXX", SampleMode = "XXXXXX", - LockRomMode = "XXXXXX", - LockBiosMode = "XXXXXX", - LockSampleMode = "XXXXXX", + LockRomMode = true, + LockBiosMode = true, + LockSampleMode = true, }; var header = new Data.Models.Logiqx.Header @@ -169,8 +169,8 @@ namespace SabreTools.Serialization.CrossModel.Test Serial = "XXXXXX", Header = "XXXXXX", Date = "XXXXXX", - Inverted = "XXXXXX", - MIA = "XXXXXX", + Inverted = true, + MIA = true, }; var disk = new Data.Models.Logiqx.Disk @@ -213,10 +213,10 @@ namespace SabreTools.Serialization.CrossModel.Test Emulation = "XXXXXX", Cocktail = "XXXXXX", SaveState = "XXXXXX", - RequiresArtwork = "XXXXXX", - Unofficial = "XXXXXX", - NoSoundHardware = "XXXXXX", - Incomplete = "XXXXXX", + RequiresArtwork = true, + Unofficial = true, + NoSoundHardware = true, + Incomplete = true, }; var softwarelist = new Data.Models.Logiqx.SoftwareList @@ -232,9 +232,9 @@ namespace SabreTools.Serialization.CrossModel.Test : new Data.Models.Logiqx.Machine(); gameBase.Name = "XXXXXX"; gameBase.SourceFile = "XXXXXX"; - gameBase.IsBios = "XXXXXX"; - gameBase.IsDevice = "XXXXXX"; - gameBase.IsMechanical = "XXXXXX"; + gameBase.IsBios = true; + gameBase.IsDevice = true; + gameBase.IsMechanical = true; gameBase.CloneOf = "XXXXXX"; gameBase.RomOf = "XXXXXX"; gameBase.SampleOf = "XXXXXX"; @@ -242,7 +242,7 @@ namespace SabreTools.Serialization.CrossModel.Test gameBase.RebuildTo = "XXXXXX"; gameBase.Id = "XXXXXX"; gameBase.CloneOfId = "XXXXXX"; - gameBase.Runnable = "XXXXXX"; + gameBase.Runnable = true; gameBase.Comment = ["XXXXXX"]; gameBase.Description = "XXXXXX"; gameBase.Year = "XXXXXX"; @@ -276,7 +276,7 @@ namespace SabreTools.Serialization.CrossModel.Test return new Data.Models.Logiqx.Datafile { Build = "XXXXXX", - Debug = "XXXXXX", + Debug = true, SchemaLocation = "XXXXXX", Header = header, Game = [gameBase], @@ -329,9 +329,9 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", rc.RomMode); Assert.Equal("XXXXXX", rc.BiosMode); Assert.Equal("XXXXXX", rc.SampleMode); - Assert.Equal("XXXXXX", rc.LockRomMode); - Assert.Equal("XXXXXX", rc.LockBiosMode); - Assert.Equal("XXXXXX", rc.LockSampleMode); + Assert.Equal(true, rc.LockRomMode); + Assert.Equal(true, rc.LockBiosMode); + Assert.Equal(true, rc.LockSampleMode); } /// @@ -345,9 +345,9 @@ namespace SabreTools.Serialization.CrossModel.Test else Assert.Equal("XXXXXX", gb.Name); Assert.Equal("XXXXXX", gb.SourceFile); - Assert.Equal("XXXXXX", gb.IsBios); - Assert.Equal("XXXXXX", gb.IsDevice); - Assert.Equal("XXXXXX", gb.IsMechanical); + Assert.Equal(true, gb.IsBios); + Assert.Equal(true, gb.IsDevice); + Assert.Equal(true, gb.IsMechanical); Assert.Equal("XXXXXX", gb.CloneOf); Assert.Equal("XXXXXX", gb.RomOf); Assert.Equal("XXXXXX", gb.SampleOf); @@ -355,7 +355,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", gb.RebuildTo); Assert.Equal("XXXXXX", gb.Id); Assert.Equal("XXXXXX", gb.CloneOfId); - Assert.Equal("XXXXXX", gb.Runnable); + Assert.Equal(true, gb.Runnable); Assert.NotNull(gb.Comment); string comment = Assert.Single(gb.Comment); @@ -485,8 +485,8 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", rom.Serial); Assert.Equal("XXXXXX", rom.Header); Assert.Equal("XXXXXX", rom.Date); - Assert.Equal("XXXXXX", rom.Inverted); - Assert.Equal("XXXXXX", rom.MIA); + Assert.Equal(true, rom.Inverted); + Assert.Equal(true, rom.MIA); } /// @@ -553,10 +553,10 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", driver.Emulation); Assert.Equal("XXXXXX", driver.Cocktail); Assert.Equal("XXXXXX", driver.SaveState); - Assert.Equal("XXXXXX", driver.RequiresArtwork); - Assert.Equal("XXXXXX", driver.Unofficial); - Assert.Equal("XXXXXX", driver.NoSoundHardware); - Assert.Equal("XXXXXX", driver.Incomplete); + Assert.Equal(true, driver.RequiresArtwork); + Assert.Equal(true, driver.Unofficial); + Assert.Equal(true, driver.NoSoundHardware); + Assert.Equal(true, driver.Incomplete); } /// diff --git a/SabreTools.Serialization.CrossModel.Test/M1Tests.cs b/SabreTools.Serialization.CrossModel.Test/M1Tests.cs index 9034351c..f59e6ada 100644 --- a/SabreTools.Serialization.CrossModel.Test/M1Tests.cs +++ b/SabreTools.Serialization.CrossModel.Test/M1Tests.cs @@ -77,9 +77,9 @@ namespace SabreTools.Serialization.CrossModel.Test Region = "XXXXXX", Offset = "XXXXXX", Status = "XXXXXX", - Optional = "XXXXXX", - Dispose = "XXXXXX", - SoundOnly = "XXXXXX", + Optional = true, + Dispose = true, + SoundOnly = true, }; var disk = new Data.Models.Listxml.Disk @@ -90,9 +90,9 @@ namespace SabreTools.Serialization.CrossModel.Test Merge = "XXXXXX", Region = "XXXXXX", Index = "XXXXXX", - Writable = "XXXXXX", + Writable = true, Status = "XXXXXX", - Optional = "XXXXXX", + Optional = true, }; var deviceref = new Data.Models.Listxml.DeviceRef @@ -110,7 +110,7 @@ namespace SabreTools.Serialization.CrossModel.Test Name = "XXXXXX", Tag = "XXXXXX", Type = "XXXXXX", - SoundOnly = "XXXXXX", + SoundOnly = true, Clock = "XXXXXX", }; @@ -119,7 +119,7 @@ namespace SabreTools.Serialization.CrossModel.Test Tag = "XXXXXX", Type = "XXXXXX", Rotate = "XXXXXX", - FlipX = "XXXXXX", + FlipX = true, Width = "XXXXXX", Height = "XXXXXX", Refresh = "XXXXXX", @@ -158,7 +158,7 @@ namespace SabreTools.Serialization.CrossModel.Test Maximum = "XXXXXX", Sensitivity = "XXXXXX", KeyDelta = "XXXXXX", - Reverse = "XXXXXX", + Reverse = true, Ways = "XXXXXX", Ways2 = "XXXXXX", Ways3 = "XXXXXX", @@ -166,8 +166,8 @@ namespace SabreTools.Serialization.CrossModel.Test var input = new Data.Models.Listxml.Input { - Service = "XXXXXX", - Tilt = "XXXXXX", + Service = true, + Tilt = true, Players = "XXXXXX", //ControlAttr = "XXXXXX", // Mututally exclusive with input.Control Buttons = "XXXXXX", @@ -187,7 +187,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Name = "XXXXXX", Number = "XXXXXX", - Inverted = "XXXXXX", + Inverted = true, }; var dipvalue = new Data.Models.Listxml.DipValue @@ -212,7 +212,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Name = "XXXXXX", Number = "XXXXXX", - Inverted = "XXXXXX", + Inverted = true, }; var confsetting = new Data.Models.Listxml.ConfSetting @@ -260,10 +260,10 @@ namespace SabreTools.Serialization.CrossModel.Test Emulation = "XXXXXX", Cocktail = "XXXXXX", SaveState = "XXXXXX", - RequiresArtwork = "XXXXXX", - Unofficial = "XXXXXX", - NoSoundHardware = "XXXXXX", - Incomplete = "XXXXXX", + RequiresArtwork = true, + Unofficial = true, + NoSoundHardware = true, + Incomplete = true, }; var feature = new Data.Models.Listxml.Feature @@ -328,10 +328,10 @@ namespace SabreTools.Serialization.CrossModel.Test : new Data.Models.Listxml.Machine(); gameBase.Name = "XXXXXX"; gameBase.SourceFile = "XXXXXX"; - gameBase.IsBios = "XXXXXX"; - gameBase.IsDevice = "XXXXXX"; - gameBase.IsMechanical = "XXXXXX"; - gameBase.Runnable = "XXXXXX"; + gameBase.IsBios = true; + gameBase.IsDevice = true; + gameBase.IsMechanical = true; + gameBase.Runnable = true; gameBase.CloneOf = "XXXXXX"; gameBase.RomOf = "XXXXXX"; gameBase.SampleOf = "XXXXXX"; @@ -375,10 +375,10 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(gb); Assert.Equal("XXXXXX", gb.Name); Assert.Equal("XXXXXX", gb.SourceFile); - Assert.Equal("XXXXXX", gb.IsBios); - Assert.Equal("XXXXXX", gb.IsDevice); - Assert.Equal("XXXXXX", gb.IsMechanical); - Assert.Equal("XXXXXX", gb.Runnable); + Assert.Equal(true, gb.IsBios); + Assert.Equal(true, gb.IsDevice); + Assert.Equal(true, gb.IsMechanical); + Assert.Equal(true, gb.Runnable); Assert.Equal("XXXXXX", gb.CloneOf); Assert.Equal("XXXXXX", gb.RomOf); Assert.Equal("XXXXXX", gb.SampleOf); @@ -487,9 +487,9 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", rom.Region); Assert.Equal("XXXXXX", rom.Offset); Assert.Equal("XXXXXX", rom.Status); - Assert.Equal("XXXXXX", rom.Optional); - Assert.Equal("XXXXXX", rom.Dispose); - Assert.Equal("XXXXXX", rom.SoundOnly); + Assert.Equal(true, rom.Optional); + Assert.Equal(true, rom.Dispose); + Assert.Equal(true, rom.SoundOnly); } /// @@ -504,9 +504,9 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", disk.Merge); Assert.Equal("XXXXXX", disk.Region); Assert.Equal("XXXXXX", disk.Index); - Assert.Equal("XXXXXX", disk.Writable); + Assert.Equal(true, disk.Writable); Assert.Equal("XXXXXX", disk.Status); - Assert.Equal("XXXXXX", disk.Optional); + Assert.Equal(true, disk.Optional); } /// @@ -536,7 +536,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", chip.Name); Assert.Equal("XXXXXX", chip.Tag); Assert.Equal("XXXXXX", chip.Type); - Assert.Equal("XXXXXX", chip.SoundOnly); + Assert.Equal(true, chip.SoundOnly); Assert.Equal("XXXXXX", chip.Clock); } @@ -549,7 +549,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", display.Tag); Assert.Equal("XXXXXX", display.Type); Assert.Equal("XXXXXX", display.Rotate); - Assert.Equal("XXXXXX", display.FlipX); + Assert.Equal(true, display.FlipX); Assert.Equal("XXXXXX", display.Width); Assert.Equal("XXXXXX", display.Height); Assert.Equal("XXXXXX", display.Refresh); @@ -592,8 +592,8 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Input? input) { Assert.NotNull(input); - Assert.Equal("XXXXXX", input.Service); - Assert.Equal("XXXXXX", input.Tilt); + Assert.Equal(true, input.Service); + Assert.Equal(true, input.Tilt); Assert.Equal("XXXXXX", input.Players); //Assert.Equal("XXXXXX", input.ControlAttr); // Mututally exclusive with input.Control Assert.Equal("XXXXXX", input.Buttons); @@ -618,7 +618,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", control.Maximum); Assert.Equal("XXXXXX", control.Sensitivity); Assert.Equal("XXXXXX", control.KeyDelta); - Assert.Equal("XXXXXX", control.Reverse); + Assert.Equal(true, control.Reverse); Assert.Equal("XXXXXX", control.Ways); Assert.Equal("XXXXXX", control.Ways2); Assert.Equal("XXXXXX", control.Ways3); @@ -664,7 +664,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(diplocation); Assert.Equal("XXXXXX", diplocation.Name); Assert.Equal("XXXXXX", diplocation.Number); - Assert.Equal("XXXXXX", diplocation.Inverted); + Assert.Equal(true, diplocation.Inverted); } /// @@ -707,7 +707,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(conflocation); Assert.Equal("XXXXXX", conflocation.Name); Assert.Equal("XXXXXX", conflocation.Number); - Assert.Equal("XXXXXX", conflocation.Inverted); + Assert.Equal(true, conflocation.Inverted); } /// @@ -768,10 +768,10 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", driver.Emulation); Assert.Equal("XXXXXX", driver.Cocktail); Assert.Equal("XXXXXX", driver.SaveState); - Assert.Equal("XXXXXX", driver.RequiresArtwork); - Assert.Equal("XXXXXX", driver.Unofficial); - Assert.Equal("XXXXXX", driver.NoSoundHardware); - Assert.Equal("XXXXXX", driver.Incomplete); + Assert.Equal(true, driver.RequiresArtwork); + Assert.Equal(true, driver.Unofficial); + Assert.Equal(true, driver.NoSoundHardware); + Assert.Equal(true, driver.Incomplete); } /// diff --git a/SabreTools.Serialization.CrossModel.Test/MessTests.cs b/SabreTools.Serialization.CrossModel.Test/MessTests.cs index c024874a..f4bf8f47 100644 --- a/SabreTools.Serialization.CrossModel.Test/MessTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/MessTests.cs @@ -77,9 +77,9 @@ namespace SabreTools.Serialization.CrossModel.Test Region = "XXXXXX", Offset = "XXXXXX", Status = "XXXXXX", - Optional = "XXXXXX", - Dispose = "XXXXXX", - SoundOnly = "XXXXXX", + Optional = true, + Dispose = true, + SoundOnly = true, }; var disk = new Data.Models.Listxml.Disk @@ -90,9 +90,9 @@ namespace SabreTools.Serialization.CrossModel.Test Merge = "XXXXXX", Region = "XXXXXX", Index = "XXXXXX", - Writable = "XXXXXX", + Writable = true, Status = "XXXXXX", - Optional = "XXXXXX", + Optional = true, }; var deviceref = new Data.Models.Listxml.DeviceRef @@ -110,7 +110,7 @@ namespace SabreTools.Serialization.CrossModel.Test Name = "XXXXXX", Tag = "XXXXXX", Type = "XXXXXX", - SoundOnly = "XXXXXX", + SoundOnly = true, Clock = "XXXXXX", }; @@ -119,7 +119,7 @@ namespace SabreTools.Serialization.CrossModel.Test Tag = "XXXXXX", Type = "XXXXXX", Rotate = "XXXXXX", - FlipX = "XXXXXX", + FlipX = true, Width = "XXXXXX", Height = "XXXXXX", Refresh = "XXXXXX", @@ -158,7 +158,7 @@ namespace SabreTools.Serialization.CrossModel.Test Maximum = "XXXXXX", Sensitivity = "XXXXXX", KeyDelta = "XXXXXX", - Reverse = "XXXXXX", + Reverse = true, Ways = "XXXXXX", Ways2 = "XXXXXX", Ways3 = "XXXXXX", @@ -166,8 +166,8 @@ namespace SabreTools.Serialization.CrossModel.Test var input = new Data.Models.Listxml.Input { - Service = "XXXXXX", - Tilt = "XXXXXX", + Service = true, + Tilt = true, Players = "XXXXXX", //ControlAttr = "XXXXXX", // Mututally exclusive with input.Control Buttons = "XXXXXX", @@ -187,7 +187,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Name = "XXXXXX", Number = "XXXXXX", - Inverted = "XXXXXX", + Inverted = true, }; var dipvalue = new Data.Models.Listxml.DipValue @@ -212,7 +212,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Name = "XXXXXX", Number = "XXXXXX", - Inverted = "XXXXXX", + Inverted = true, }; var confsetting = new Data.Models.Listxml.ConfSetting @@ -260,10 +260,10 @@ namespace SabreTools.Serialization.CrossModel.Test Emulation = "XXXXXX", Cocktail = "XXXXXX", SaveState = "XXXXXX", - RequiresArtwork = "XXXXXX", - Unofficial = "XXXXXX", - NoSoundHardware = "XXXXXX", - Incomplete = "XXXXXX", + RequiresArtwork = true, + Unofficial = true, + NoSoundHardware = true, + Incomplete = true, }; var feature = new Data.Models.Listxml.Feature @@ -328,10 +328,10 @@ namespace SabreTools.Serialization.CrossModel.Test : new Data.Models.Listxml.Machine(); gameBase.Name = "XXXXXX"; gameBase.SourceFile = "XXXXXX"; - gameBase.IsBios = "XXXXXX"; - gameBase.IsDevice = "XXXXXX"; - gameBase.IsMechanical = "XXXXXX"; - gameBase.Runnable = "XXXXXX"; + gameBase.IsBios = true; + gameBase.IsDevice = true; + gameBase.IsMechanical = true; + gameBase.Runnable = true; gameBase.CloneOf = "XXXXXX"; gameBase.RomOf = "XXXXXX"; gameBase.SampleOf = "XXXXXX"; @@ -375,10 +375,10 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(gb); Assert.Equal("XXXXXX", gb.Name); Assert.Equal("XXXXXX", gb.SourceFile); - Assert.Equal("XXXXXX", gb.IsBios); - Assert.Equal("XXXXXX", gb.IsDevice); - Assert.Equal("XXXXXX", gb.IsMechanical); - Assert.Equal("XXXXXX", gb.Runnable); + Assert.Equal(true, gb.IsBios); + Assert.Equal(true, gb.IsDevice); + Assert.Equal(true, gb.IsMechanical); + Assert.Equal(true, gb.Runnable); Assert.Equal("XXXXXX", gb.CloneOf); Assert.Equal("XXXXXX", gb.RomOf); Assert.Equal("XXXXXX", gb.SampleOf); @@ -487,9 +487,9 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", rom.Region); Assert.Equal("XXXXXX", rom.Offset); Assert.Equal("XXXXXX", rom.Status); - Assert.Equal("XXXXXX", rom.Optional); - Assert.Equal("XXXXXX", rom.Dispose); - Assert.Equal("XXXXXX", rom.SoundOnly); + Assert.Equal(true, rom.Optional); + Assert.Equal(true, rom.Dispose); + Assert.Equal(true, rom.SoundOnly); } /// @@ -504,9 +504,9 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", disk.Merge); Assert.Equal("XXXXXX", disk.Region); Assert.Equal("XXXXXX", disk.Index); - Assert.Equal("XXXXXX", disk.Writable); + Assert.Equal(true, disk.Writable); Assert.Equal("XXXXXX", disk.Status); - Assert.Equal("XXXXXX", disk.Optional); + Assert.Equal(true, disk.Optional); } /// @@ -536,7 +536,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", chip.Name); Assert.Equal("XXXXXX", chip.Tag); Assert.Equal("XXXXXX", chip.Type); - Assert.Equal("XXXXXX", chip.SoundOnly); + Assert.Equal(true, chip.SoundOnly); Assert.Equal("XXXXXX", chip.Clock); } @@ -549,7 +549,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", display.Tag); Assert.Equal("XXXXXX", display.Type); Assert.Equal("XXXXXX", display.Rotate); - Assert.Equal("XXXXXX", display.FlipX); + Assert.Equal(true, display.FlipX); Assert.Equal("XXXXXX", display.Width); Assert.Equal("XXXXXX", display.Height); Assert.Equal("XXXXXX", display.Refresh); @@ -592,8 +592,8 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Input? input) { Assert.NotNull(input); - Assert.Equal("XXXXXX", input.Service); - Assert.Equal("XXXXXX", input.Tilt); + Assert.Equal(true, input.Service); + Assert.Equal(true, input.Tilt); Assert.Equal("XXXXXX", input.Players); //Assert.Equal("XXXXXX", input.ControlAttr); // Mututally exclusive with input.Control Assert.Equal("XXXXXX", input.Buttons); @@ -618,7 +618,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", control.Maximum); Assert.Equal("XXXXXX", control.Sensitivity); Assert.Equal("XXXXXX", control.KeyDelta); - Assert.Equal("XXXXXX", control.Reverse); + Assert.Equal(true, control.Reverse); Assert.Equal("XXXXXX", control.Ways); Assert.Equal("XXXXXX", control.Ways2); Assert.Equal("XXXXXX", control.Ways3); @@ -664,7 +664,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(diplocation); Assert.Equal("XXXXXX", diplocation.Name); Assert.Equal("XXXXXX", diplocation.Number); - Assert.Equal("XXXXXX", diplocation.Inverted); + Assert.Equal(true, diplocation.Inverted); } /// @@ -707,7 +707,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(conflocation); Assert.Equal("XXXXXX", conflocation.Name); Assert.Equal("XXXXXX", conflocation.Number); - Assert.Equal("XXXXXX", conflocation.Inverted); + Assert.Equal(true, conflocation.Inverted); } /// @@ -768,10 +768,10 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", driver.Emulation); Assert.Equal("XXXXXX", driver.Cocktail); Assert.Equal("XXXXXX", driver.SaveState); - Assert.Equal("XXXXXX", driver.RequiresArtwork); - Assert.Equal("XXXXXX", driver.Unofficial); - Assert.Equal("XXXXXX", driver.NoSoundHardware); - Assert.Equal("XXXXXX", driver.Incomplete); + Assert.Equal(true, driver.RequiresArtwork); + Assert.Equal(true, driver.Unofficial); + Assert.Equal(true, driver.NoSoundHardware); + Assert.Equal(true, driver.Incomplete); } /// diff --git a/SabreTools.Serialization.CrossModel.Test/SoftwareListTests.cs b/SabreTools.Serialization.CrossModel.Test/SoftwareListTests.cs index 0f4132a2..5624c411 100644 --- a/SabreTools.Serialization.CrossModel.Test/SoftwareListTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/SoftwareListTests.cs @@ -82,7 +82,7 @@ namespace SabreTools.Serialization.CrossModel.Test MD5 = "XXXXXX", SHA1 = "XXXXXX", Status = "XXXXXX", - Writeable = "XXXXXX", + Writeable = true, }; var diskarea = new Data.Models.SoftwareList.DiskArea @@ -278,7 +278,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", disk.MD5); Assert.Equal("XXXXXX", disk.SHA1); Assert.Equal("XXXXXX", disk.Status); - Assert.Equal("XXXXXX", disk.Writeable); + Assert.Equal(true, disk.Writeable); } /// diff --git a/SabreTools.Serialization.CrossModel/AttractMode.Deserializer.cs b/SabreTools.Serialization.CrossModel/AttractMode.Deserializer.cs index 9019ffbf..80af4ed7 100644 --- a/SabreTools.Serialization.CrossModel/AttractMode.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/AttractMode.Deserializer.cs @@ -78,7 +78,7 @@ namespace SabreTools.Serialization.CrossModel Tags = parent.ReadString(Data.Models.Metadata.Machine.TagsKey), PlayedCount = parent.ReadString(Data.Models.Metadata.Machine.PlayedCountKey), PlayedTime = parent.ReadString(Data.Models.Metadata.Machine.PlayedTimeKey), - FileIsAvailable = item.ReadString(Data.Models.Metadata.Rom.FileIsAvailableKey), + FileIsAvailable = item.FileIsAvailable, }; return row; } diff --git a/SabreTools.Serialization.CrossModel/AttractMode.Serializer.cs b/SabreTools.Serialization.CrossModel/AttractMode.Serializer.cs index 1ae5ab1e..ccb23543 100644 --- a/SabreTools.Serialization.CrossModel/AttractMode.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/AttractMode.Serializer.cs @@ -80,7 +80,7 @@ namespace SabreTools.Serialization.CrossModel Name = item.Title, [Data.Models.Metadata.Rom.AltRomnameKey] = item.AltRomname, [Data.Models.Metadata.Rom.AltTitleKey] = item.AltTitle, - [Data.Models.Metadata.Rom.FileIsAvailableKey] = item.FileIsAvailable, + FileIsAvailable = item.FileIsAvailable, }; return rom; } diff --git a/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs b/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs index decc19fb..89ea67f7 100644 --- a/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs @@ -56,7 +56,7 @@ namespace SabreTools.Serialization.CrossModel Header = item.ReadString(Data.Models.Metadata.Header.HeaderKey), Type = item.ReadString(Data.Models.Metadata.Header.TypeKey), ForceMerging = item.ReadString(Data.Models.Metadata.Header.ForceMergingKey), - ForceZipping = item.ReadString(Data.Models.Metadata.Header.ForceZippingKey), + ForceZipping = item.ForceZipping, ForcePacking = item.ReadString(Data.Models.Metadata.Header.ForcePackingKey), }; return clrMamePro; @@ -233,8 +233,8 @@ namespace SabreTools.Serialization.CrossModel Control = item.ReadString(Data.Models.Metadata.Input.ControlKey), Buttons = item.ReadString(Data.Models.Metadata.Input.ButtonsKey), Coins = item.ReadString(Data.Models.Metadata.Input.CoinsKey), - Tilt = item.ReadString(Data.Models.Metadata.Input.TiltKey), - Service = item.ReadString(Data.Models.Metadata.Input.ServiceKey), + Tilt = item.Tilt, + Service = item.Service, }; return input; } @@ -303,8 +303,8 @@ namespace SabreTools.Serialization.CrossModel Serial = item.ReadString(Data.Models.Metadata.Rom.SerialKey), Header = item.ReadString(Data.Models.Metadata.Rom.HeaderKey), Date = item.ReadString(Data.Models.Metadata.Rom.DateKey), - Inverted = item.ReadString(Data.Models.Metadata.Rom.InvertedKey), - MIA = item.ReadString(Data.Models.Metadata.Rom.MIAKey), + Inverted = item.Inverted, + MIA = item.MIA, }; return rom; } diff --git a/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs b/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs index 29f6c4e0..25aff94f 100644 --- a/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs @@ -48,7 +48,7 @@ namespace SabreTools.Serialization.CrossModel [Data.Models.Metadata.Header.HeaderKey] = item.Header, [Data.Models.Metadata.Header.TypeKey] = item.Type, [Data.Models.Metadata.Header.ForceMergingKey] = item.ForceMerging, - [Data.Models.Metadata.Header.ForceZippingKey] = item.ForceZipping, + ForceZipping = item.ForceZipping, [Data.Models.Metadata.Header.ForcePackingKey] = item.ForcePacking, }; return header; @@ -246,8 +246,8 @@ namespace SabreTools.Serialization.CrossModel [Data.Models.Metadata.Input.ControlKey] = item.Control, [Data.Models.Metadata.Input.ButtonsKey] = item.Buttons, [Data.Models.Metadata.Input.CoinsKey] = item.Coins, - [Data.Models.Metadata.Input.TiltKey] = item.Tilt, - [Data.Models.Metadata.Input.ServiceKey] = item.Service, + Tilt = item.Tilt, + Service = item.Service, }; return input; } @@ -316,8 +316,8 @@ namespace SabreTools.Serialization.CrossModel [Data.Models.Metadata.Rom.SerialKey] = item.Serial, [Data.Models.Metadata.Rom.HeaderKey] = item.Header, [Data.Models.Metadata.Rom.DateKey] = item.Date, - [Data.Models.Metadata.Rom.InvertedKey] = item.Inverted, - [Data.Models.Metadata.Rom.MIAKey] = item.MIA, + Inverted = item.Inverted, + MIA = item.MIA, }; return rom; } diff --git a/SabreTools.Serialization.CrossModel/Listrom.Deserializer.cs b/SabreTools.Serialization.CrossModel/Listrom.Deserializer.cs index ac5806ef..20d48a95 100644 --- a/SabreTools.Serialization.CrossModel/Listrom.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Listrom.Deserializer.cs @@ -27,7 +27,7 @@ namespace SabreTools.Serialization.CrossModel private static Set ConvertMachineFromInternalModel(Data.Models.Metadata.Machine item) { var set = new Set(); - if (item.ReadString(Data.Models.Metadata.Machine.IsDeviceKey) == "yes") + if (item.IsDevice == true) set.Device = item.Name; else set.Driver = item.Name; diff --git a/SabreTools.Serialization.CrossModel/Listrom.Serializer.cs b/SabreTools.Serialization.CrossModel/Listrom.Serializer.cs index 86844857..c167fc22 100644 --- a/SabreTools.Serialization.CrossModel/Listrom.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Listrom.Serializer.cs @@ -47,7 +47,7 @@ namespace SabreTools.Serialization.CrossModel if (!string.IsNullOrEmpty(item.Device)) { machine.Name = item.Device; - machine[Data.Models.Metadata.Machine.IsDeviceKey] = "yes"; + machine.IsDevice = true; } else { diff --git a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs index f6c89311..5a828b7b 100644 --- a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs @@ -29,7 +29,7 @@ namespace SabreTools.Serialization.CrossModel var mame = new Mame { Build = item.ReadString(Data.Models.Metadata.Header.BuildKey), - Debug = item.ReadString(Data.Models.Metadata.Header.DebugKey), + Debug = item.Debug, MameConfig = item.ReadString(Data.Models.Metadata.Header.MameConfigKey), }; @@ -45,10 +45,10 @@ namespace SabreTools.Serialization.CrossModel { Name = item.Name, SourceFile = item.ReadString(Data.Models.Metadata.Machine.SourceFileKey), - IsBios = item.ReadString(Data.Models.Metadata.Machine.IsBiosKey), - IsDevice = item.ReadString(Data.Models.Metadata.Machine.IsDeviceKey), - IsMechanical = item.ReadString(Data.Models.Metadata.Machine.IsMechanicalKey), - Runnable = item.ReadString(Data.Models.Metadata.Machine.RunnableKey), + IsBios = item.IsBios, + IsDevice = item.IsDevice, + IsMechanical = item.IsMechanical, + Runnable = item.Runnable, CloneOf = item.ReadString(Data.Models.Metadata.Machine.CloneOfKey), RomOf = item.ReadString(Data.Models.Metadata.Machine.RomOfKey), SampleOf = item.ReadString(Data.Models.Metadata.Machine.SampleOfKey), @@ -195,7 +195,7 @@ namespace SabreTools.Serialization.CrossModel Name = item.Name, Tag = item.ReadString(Data.Models.Metadata.Chip.TagKey), Type = item.ReadString(Data.Models.Metadata.Chip.ChipTypeKey), - SoundOnly = item.ReadString(Data.Models.Metadata.Chip.SoundOnlyKey), + SoundOnly = item.SoundOnly, Clock = item.ReadString(Data.Models.Metadata.Chip.ClockKey), }; return chip; @@ -252,7 +252,7 @@ namespace SabreTools.Serialization.CrossModel { Name = item.Name, Number = item.ReadString(Data.Models.Metadata.ConfLocation.NumberKey), - Inverted = item.ReadString(Data.Models.Metadata.ConfLocation.InvertedKey), + Inverted = item.Inverted, }; return confLocation; } @@ -291,7 +291,7 @@ namespace SabreTools.Serialization.CrossModel Maximum = item.ReadString(Data.Models.Metadata.Control.MaximumKey), Sensitivity = item.ReadString(Data.Models.Metadata.Control.SensitivityKey), KeyDelta = item.ReadString(Data.Models.Metadata.Control.KeyDeltaKey), - Reverse = item.ReadString(Data.Models.Metadata.Control.ReverseKey), + Reverse = item.Reverse, Ways = item.ReadString(Data.Models.Metadata.Control.WaysKey), Ways2 = item.ReadString(Data.Models.Metadata.Control.Ways2Key), Ways3 = item.ReadString(Data.Models.Metadata.Control.Ways3Key), @@ -345,7 +345,7 @@ namespace SabreTools.Serialization.CrossModel { Name = item.Name, Number = item.ReadString(Data.Models.Metadata.DipLocation.NumberKey), - Inverted = item.ReadString(Data.Models.Metadata.DipLocation.InvertedKey), + Inverted = item.Inverted, }; return dipLocation; } @@ -409,9 +409,9 @@ namespace SabreTools.Serialization.CrossModel Merge = item.ReadString(Data.Models.Metadata.Disk.MergeKey), Region = item.ReadString(Data.Models.Metadata.Disk.RegionKey), Index = item.ReadString(Data.Models.Metadata.Disk.IndexKey), - Writable = item.ReadString(Data.Models.Metadata.Disk.WritableKey), + Writable = item.Writable, Status = item.ReadString(Data.Models.Metadata.Disk.StatusKey), - Optional = item.ReadString(Data.Models.Metadata.Disk.OptionalKey), + Optional = item.Optional, }; return disk; } @@ -426,7 +426,7 @@ namespace SabreTools.Serialization.CrossModel Tag = item.ReadString(Data.Models.Metadata.Display.TagKey), Type = item.ReadString(Data.Models.Metadata.Display.DisplayTypeKey), Rotate = item.ReadString(Data.Models.Metadata.Display.RotateKey), - FlipX = item.ReadString(Data.Models.Metadata.Display.FlipXKey), + FlipX = item.FlipX, Width = item.ReadString(Data.Models.Metadata.Display.WidthKey), Height = item.ReadString(Data.Models.Metadata.Display.HeightKey), Refresh = item.ReadString(Data.Models.Metadata.Display.RefreshKey), @@ -455,10 +455,10 @@ namespace SabreTools.Serialization.CrossModel Emulation = item.ReadString(Data.Models.Metadata.Driver.EmulationKey), Cocktail = item.ReadString(Data.Models.Metadata.Driver.CocktailKey), SaveState = item.ReadString(Data.Models.Metadata.Driver.SaveStateKey), - RequiresArtwork = item.ReadString(Data.Models.Metadata.Driver.RequiresArtworkKey), - Unofficial = item.ReadString(Data.Models.Metadata.Driver.UnofficialKey), - NoSoundHardware = item.ReadString(Data.Models.Metadata.Driver.NoSoundHardwareKey), - Incomplete = item.ReadString(Data.Models.Metadata.Driver.IncompleteKey), + RequiresArtwork = item.RequiresArtwork, + Unofficial = item.Unofficial, + NoSoundHardware = item.NoSoundHardware, + Incomplete = item.Incomplete, }; return driver; } @@ -496,8 +496,8 @@ namespace SabreTools.Serialization.CrossModel { var input = new Input { - Service = item.ReadString(Data.Models.Metadata.Input.ServiceKey), - Tilt = item.ReadString(Data.Models.Metadata.Input.TiltKey), + Service = item.Service, + Tilt = item.Tilt, Players = item.ReadString(Data.Models.Metadata.Input.PlayersKey), Buttons = item.ReadString(Data.Models.Metadata.Input.ButtonsKey), Coins = item.ReadString(Data.Models.Metadata.Input.CoinsKey), @@ -574,9 +574,9 @@ namespace SabreTools.Serialization.CrossModel Region = item.ReadString(Data.Models.Metadata.Rom.RegionKey), Offset = item.ReadString(Data.Models.Metadata.Rom.OffsetKey), Status = item.ReadString(Data.Models.Metadata.Rom.StatusKey), - Optional = item.ReadString(Data.Models.Metadata.Rom.OptionalKey), - Dispose = item.ReadString(Data.Models.Metadata.Rom.DisposeKey), - SoundOnly = item.ReadString(Data.Models.Metadata.Rom.SoundOnlyKey), + Optional = item.Optional, + Dispose = item.Dispose, + SoundOnly = item.SoundOnly, }; return rom; } diff --git a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs index 8ffd89eb..335a5866 100644 --- a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs @@ -33,7 +33,7 @@ namespace SabreTools.Serialization.CrossModel var header = new Data.Models.Metadata.Header { [Data.Models.Metadata.Header.BuildKey] = item.Build, - [Data.Models.Metadata.Header.DebugKey] = item.Debug, + Debug = item.Debug, [Data.Models.Metadata.Header.MameConfigKey] = item.MameConfig, }; return header; @@ -48,10 +48,10 @@ namespace SabreTools.Serialization.CrossModel { Name = item.Name, [Data.Models.Metadata.Machine.SourceFileKey] = item.SourceFile, - [Data.Models.Metadata.Machine.IsBiosKey] = item.IsBios, - [Data.Models.Metadata.Machine.IsDeviceKey] = item.IsDevice, - [Data.Models.Metadata.Machine.IsMechanicalKey] = item.IsMechanical, - [Data.Models.Metadata.Machine.RunnableKey] = item.Runnable, + IsBios = item.IsBios, + IsDevice = item.IsDevice, + IsMechanical = item.IsMechanical, + Runnable = item.Runnable, [Data.Models.Metadata.Machine.CloneOfKey] = item.CloneOf, [Data.Models.Metadata.Machine.RomOfKey] = item.RomOf, [Data.Models.Metadata.Machine.SampleOfKey] = item.SampleOf, @@ -228,7 +228,7 @@ namespace SabreTools.Serialization.CrossModel Name = item.Name, [Data.Models.Metadata.Chip.TagKey] = item.Tag, [Data.Models.Metadata.Chip.ChipTypeKey] = item.Type, - [Data.Models.Metadata.Chip.SoundOnlyKey] = item.SoundOnly, + SoundOnly = item.SoundOnly, [Data.Models.Metadata.Chip.ClockKey] = item.Clock, }; return chip; @@ -288,7 +288,7 @@ namespace SabreTools.Serialization.CrossModel { Name = item.Name, [Data.Models.Metadata.ConfLocation.NumberKey] = item.Number, - [Data.Models.Metadata.ConfLocation.InvertedKey] = item.Inverted, + Inverted = item.Inverted, }; return confLocation; } @@ -326,7 +326,7 @@ namespace SabreTools.Serialization.CrossModel [Data.Models.Metadata.Control.MaximumKey] = item.Maximum, [Data.Models.Metadata.Control.SensitivityKey] = item.Sensitivity, [Data.Models.Metadata.Control.KeyDeltaKey] = item.KeyDelta, - [Data.Models.Metadata.Control.ReverseKey] = item.Reverse, + Reverse = item.Reverse, [Data.Models.Metadata.Control.WaysKey] = item.Ways, [Data.Models.Metadata.Control.Ways2Key] = item.Ways2, [Data.Models.Metadata.Control.Ways3Key] = item.Ways3, @@ -381,7 +381,7 @@ namespace SabreTools.Serialization.CrossModel { Name = item.Name, [Data.Models.Metadata.DipLocation.NumberKey] = item.Number, - [Data.Models.Metadata.DipLocation.InvertedKey] = item.Inverted, + Inverted = item.Inverted, }; return dipLocation; } @@ -447,9 +447,9 @@ namespace SabreTools.Serialization.CrossModel [Data.Models.Metadata.Disk.MergeKey] = item.Merge, [Data.Models.Metadata.Disk.RegionKey] = item.Region, [Data.Models.Metadata.Disk.IndexKey] = item.Index, - [Data.Models.Metadata.Disk.WritableKey] = item.Writable, + Writable = item.Writable, [Data.Models.Metadata.Disk.StatusKey] = item.Status, - [Data.Models.Metadata.Disk.OptionalKey] = item.Optional, + Optional = item.Optional, }; return disk; } @@ -464,7 +464,7 @@ namespace SabreTools.Serialization.CrossModel [Data.Models.Metadata.Display.TagKey] = item.Tag, [Data.Models.Metadata.Display.DisplayTypeKey] = item.Type, [Data.Models.Metadata.Display.RotateKey] = item.Rotate, - [Data.Models.Metadata.Display.FlipXKey] = item.FlipX, + FlipX = item.FlipX, [Data.Models.Metadata.Display.WidthKey] = item.Width, [Data.Models.Metadata.Display.HeightKey] = item.Height, [Data.Models.Metadata.Display.RefreshKey] = item.Refresh, @@ -493,10 +493,10 @@ namespace SabreTools.Serialization.CrossModel [Data.Models.Metadata.Driver.EmulationKey] = item.Emulation, [Data.Models.Metadata.Driver.CocktailKey] = item.Cocktail, [Data.Models.Metadata.Driver.SaveStateKey] = item.SaveState, - [Data.Models.Metadata.Driver.RequiresArtworkKey] = item.RequiresArtwork, - [Data.Models.Metadata.Driver.UnofficialKey] = item.Unofficial, - [Data.Models.Metadata.Driver.NoSoundHardwareKey] = item.NoSoundHardware, - [Data.Models.Metadata.Driver.IncompleteKey] = item.Incomplete, + RequiresArtwork = item.RequiresArtwork, + Unofficial = item.Unofficial, + NoSoundHardware = item.NoSoundHardware, + Incomplete = item.Incomplete, }; return driver; } @@ -534,8 +534,8 @@ namespace SabreTools.Serialization.CrossModel { var input = new Data.Models.Metadata.Input { - [Data.Models.Metadata.Input.ServiceKey] = item.Service, - [Data.Models.Metadata.Input.TiltKey] = item.Tilt, + Service = item.Service, + Tilt = item.Tilt, [Data.Models.Metadata.Input.PlayersKey] = item.Players, [Data.Models.Metadata.Input.ControlKey] = item.ControlAttr, [Data.Models.Metadata.Input.ButtonsKey] = item.Buttons, @@ -613,9 +613,9 @@ namespace SabreTools.Serialization.CrossModel [Data.Models.Metadata.Rom.RegionKey] = item.Region, [Data.Models.Metadata.Rom.OffsetKey] = item.Offset, [Data.Models.Metadata.Rom.StatusKey] = item.Status, - [Data.Models.Metadata.Rom.OptionalKey] = item.Optional, - [Data.Models.Metadata.Rom.DisposeKey] = item.Dispose, - [Data.Models.Metadata.Rom.SoundOnlyKey] = item.SoundOnly, + Optional = item.Optional, + Dispose = item.Dispose, + SoundOnly = item.SoundOnly, }; return rom; } diff --git a/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs b/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs index 1cc2a969..06946884 100644 --- a/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs @@ -22,7 +22,7 @@ namespace SabreTools.Serialization.CrossModel if (header is not null) { datafile.Build = header.ReadString(Data.Models.Metadata.Header.BuildKey); - datafile.Debug = header.ReadString(Data.Models.Metadata.Header.DebugKey); + datafile.Debug = header.Debug; datafile.SchemaLocation = header.ReadString(Data.Models.Metadata.Header.SchemaLocationKey); datafile.Header = ConvertHeaderFromInternalModel(header); } @@ -81,9 +81,9 @@ namespace SabreTools.Serialization.CrossModel string? romMode = item.ReadString(Data.Models.Metadata.Header.RomModeKey); string? biosMode = item.ReadString(Data.Models.Metadata.Header.BiosModeKey); string? sampleMode = item.ReadString(Data.Models.Metadata.Header.SampleModeKey); - string? lockRomMode = item.ReadString(Data.Models.Metadata.Header.LockRomModeKey); - string? lockBiosMode = item.ReadString(Data.Models.Metadata.Header.LockBiosModeKey); - string? lockSampleMode = item.ReadString(Data.Models.Metadata.Header.LockSampleModeKey); + bool? lockRomMode = item.LockRomMode; + bool? lockBiosMode = item.LockBiosMode; + bool? lockSampleMode = item.LockSampleMode; if (plugin is not null || romMode is not null @@ -122,9 +122,9 @@ namespace SabreTools.Serialization.CrossModel gameBase.Name = item.Name; gameBase.SourceFile = item.ReadString(Data.Models.Metadata.Machine.SourceFileKey); - gameBase.IsBios = item.ReadString(Data.Models.Metadata.Machine.IsBiosKey); - gameBase.IsDevice = item.ReadString(Data.Models.Metadata.Machine.IsDeviceKey); - gameBase.IsMechanical = item.ReadString(Data.Models.Metadata.Machine.IsMechanicalKey); + gameBase.IsBios = item.IsBios; + gameBase.IsDevice = item.IsDevice; + gameBase.IsMechanical = item.IsMechanical; gameBase.CloneOf = item.ReadString(Data.Models.Metadata.Machine.CloneOfKey); gameBase.RomOf = item.ReadString(Data.Models.Metadata.Machine.RomOfKey); gameBase.SampleOf = item.ReadString(Data.Models.Metadata.Machine.SampleOfKey); @@ -132,7 +132,7 @@ namespace SabreTools.Serialization.CrossModel gameBase.RebuildTo = item.ReadString(Data.Models.Metadata.Machine.RebuildToKey); gameBase.Id = item.ReadString(Data.Models.Metadata.Machine.IdKey); gameBase.CloneOfId = item.ReadString(Data.Models.Metadata.Machine.CloneOfIdKey); - gameBase.Runnable = item.ReadString(Data.Models.Metadata.Machine.RunnableKey); + gameBase.Runnable = item.Runnable; gameBase.Comment = item.ReadStringArray(Data.Models.Metadata.Machine.CommentKey); gameBase.Description = item.ReadString(Data.Models.Metadata.Machine.DescriptionKey); gameBase.Year = item.ReadString(Data.Models.Metadata.Machine.YearKey); @@ -253,10 +253,10 @@ namespace SabreTools.Serialization.CrossModel Emulation = item.ReadString(Data.Models.Metadata.Driver.EmulationKey), Cocktail = item.ReadString(Data.Models.Metadata.Driver.CocktailKey), SaveState = item.ReadString(Data.Models.Metadata.Driver.SaveStateKey), - RequiresArtwork = item.ReadString(Data.Models.Metadata.Driver.RequiresArtworkKey), - Unofficial = item.ReadString(Data.Models.Metadata.Driver.UnofficialKey), - NoSoundHardware = item.ReadString(Data.Models.Metadata.Driver.NoSoundHardwareKey), - Incomplete = item.ReadString(Data.Models.Metadata.Driver.IncompleteKey), + RequiresArtwork = item.RequiresArtwork, + Unofficial = item.Unofficial, + NoSoundHardware = item.NoSoundHardware, + Incomplete = item.Incomplete, }; return driver; } @@ -322,8 +322,8 @@ namespace SabreTools.Serialization.CrossModel Serial = item.ReadString(Data.Models.Metadata.Rom.SerialKey), Header = item.ReadString(Data.Models.Metadata.Rom.HeaderKey), Date = item.ReadString(Data.Models.Metadata.Rom.DateKey), - Inverted = item.ReadString(Data.Models.Metadata.Rom.InvertedKey), - MIA = item.ReadString(Data.Models.Metadata.Rom.MIAKey), + Inverted = item.Inverted, + MIA = item.MIA, }; return rom; } diff --git a/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs b/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs index ffefd9f4..b2d21245 100644 --- a/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs @@ -40,7 +40,7 @@ namespace SabreTools.Serialization.CrossModel var header = item.Header is not null ? ConvertHeaderToInternalModel(item.Header) : []; header[Data.Models.Metadata.Header.BuildKey] = item.Build; - header[Data.Models.Metadata.Header.DebugKey] = item.Debug; + header.Debug = item.Debug; header[Data.Models.Metadata.Header.SchemaLocationKey] = item.SchemaLocation; return header; @@ -82,9 +82,9 @@ namespace SabreTools.Serialization.CrossModel header[Data.Models.Metadata.Header.RomModeKey] = item.RomCenter.RomMode; header[Data.Models.Metadata.Header.BiosModeKey] = item.RomCenter.BiosMode; header[Data.Models.Metadata.Header.SampleModeKey] = item.RomCenter.SampleMode; - header[Data.Models.Metadata.Header.LockRomModeKey] = item.RomCenter.LockRomMode; - header[Data.Models.Metadata.Header.LockBiosModeKey] = item.RomCenter.LockBiosMode; - header[Data.Models.Metadata.Header.LockSampleModeKey] = item.RomCenter.LockSampleMode; + header.LockRomMode = item.RomCenter.LockRomMode; + header.LockBiosMode = item.RomCenter.LockBiosMode; + header.LockSampleMode = item.RomCenter.LockSampleMode; } return header; @@ -128,9 +128,9 @@ namespace SabreTools.Serialization.CrossModel { Name = machineName, [Data.Models.Metadata.Machine.SourceFileKey] = item.SourceFile, - [Data.Models.Metadata.Machine.IsBiosKey] = item.IsBios, - [Data.Models.Metadata.Machine.IsDeviceKey] = item.IsDevice, - [Data.Models.Metadata.Machine.IsMechanicalKey] = item.IsMechanical, + IsBios = item.IsBios, + IsDevice = item.IsDevice, + IsMechanical = item.IsMechanical, [Data.Models.Metadata.Machine.CloneOfKey] = item.CloneOf, [Data.Models.Metadata.Machine.RomOfKey] = item.RomOf, [Data.Models.Metadata.Machine.SampleOfKey] = item.SampleOf, @@ -138,7 +138,7 @@ namespace SabreTools.Serialization.CrossModel [Data.Models.Metadata.Machine.RebuildToKey] = item.RebuildTo, [Data.Models.Metadata.Machine.IdKey] = item.Id, [Data.Models.Metadata.Machine.CloneOfIdKey] = item.CloneOfId, - [Data.Models.Metadata.Machine.RunnableKey] = item.Runnable, + Runnable = item.Runnable, [Data.Models.Metadata.Machine.CommentKey] = item.Comment, [Data.Models.Metadata.Machine.DescriptionKey] = item.Description, [Data.Models.Metadata.Machine.YearKey] = item.Year, @@ -247,10 +247,10 @@ namespace SabreTools.Serialization.CrossModel [Data.Models.Metadata.Driver.EmulationKey] = item.Emulation, [Data.Models.Metadata.Driver.CocktailKey] = item.Cocktail, [Data.Models.Metadata.Driver.SaveStateKey] = item.SaveState, - [Data.Models.Metadata.Driver.RequiresArtworkKey] = item.RequiresArtwork, - [Data.Models.Metadata.Driver.UnofficialKey] = item.Unofficial, - [Data.Models.Metadata.Driver.NoSoundHardwareKey] = item.NoSoundHardware, - [Data.Models.Metadata.Driver.IncompleteKey] = item.Incomplete, + RequiresArtwork = item.RequiresArtwork, + Unofficial = item.Unofficial, + NoSoundHardware = item.NoSoundHardware, + Incomplete = item.Incomplete, }; return driver; } @@ -316,8 +316,8 @@ namespace SabreTools.Serialization.CrossModel [Data.Models.Metadata.Rom.SerialKey] = item.Serial, [Data.Models.Metadata.Rom.HeaderKey] = item.Header, [Data.Models.Metadata.Rom.DateKey] = item.Date, - [Data.Models.Metadata.Rom.InvertedKey] = item.Inverted, - [Data.Models.Metadata.Rom.MIAKey] = item.MIA, + Inverted = item.Inverted, + MIA = item.MIA, }; return rom; } diff --git a/SabreTools.Serialization.CrossModel/SabreTools.Serialization.CrossModel.csproj b/SabreTools.Serialization.CrossModel/SabreTools.Serialization.CrossModel.csproj index ed57e9a1..d1ee4aa5 100644 --- a/SabreTools.Serialization.CrossModel/SabreTools.Serialization.CrossModel.csproj +++ b/SabreTools.Serialization.CrossModel/SabreTools.Serialization.CrossModel.csproj @@ -35,6 +35,7 @@ + diff --git a/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs b/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs index 911dd26c..987962da 100644 --- a/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs @@ -130,7 +130,7 @@ namespace SabreTools.Serialization.CrossModel MD5 = item.ReadString(Data.Models.Metadata.Disk.MD5Key), SHA1 = item.ReadString(Data.Models.Metadata.Disk.SHA1Key), Status = item.ReadString(Data.Models.Metadata.Disk.StatusKey), - Writeable = item.ReadString(Data.Models.Metadata.Disk.WritableKey), + Writeable = item.Writable, }; return disk; } diff --git a/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs b/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs index 73318d52..7fcdeee8 100644 --- a/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs @@ -129,7 +129,7 @@ namespace SabreTools.Serialization.CrossModel [Data.Models.Metadata.Disk.MD5Key] = item.MD5, [Data.Models.Metadata.Disk.SHA1Key] = item.SHA1, [Data.Models.Metadata.Disk.StatusKey] = item.Status, - [Data.Models.Metadata.Disk.WritableKey] = item.Writeable, + Writable = item.Writeable, }; return disk; } diff --git a/SabreTools.Serialization.Readers.Test/AttractModeTests.cs b/SabreTools.Serialization.Readers.Test/AttractModeTests.cs index 6134ee51..70bd264d 100644 --- a/SabreTools.Serialization.Readers.Test/AttractModeTests.cs +++ b/SabreTools.Serialization.Readers.Test/AttractModeTests.cs @@ -150,7 +150,7 @@ namespace SabreTools.Serialization.Readers.Test Tags = "XXXXXX", PlayedCount = "XXXXXX", PlayedTime = "XXXXXX", - FileIsAvailable = "XXXXXX", + FileIsAvailable = true, }; return new Data.Models.AttractMode.MetadataFile @@ -201,7 +201,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", row.Tags); Assert.Equal("XXXXXX", row.PlayedCount); Assert.Equal("XXXXXX", row.PlayedTime); - Assert.Equal("XXXXXX", row.FileIsAvailable); + Assert.Equal(true, row.FileIsAvailable); } else { diff --git a/SabreTools.Serialization.Readers.Test/ClrMameProTests.cs b/SabreTools.Serialization.Readers.Test/ClrMameProTests.cs index 8539c4b7..e2d4abb2 100644 --- a/SabreTools.Serialization.Readers.Test/ClrMameProTests.cs +++ b/SabreTools.Serialization.Readers.Test/ClrMameProTests.cs @@ -191,7 +191,7 @@ namespace SabreTools.Serialization.Readers.Test Header = "XXXXXX", Type = "XXXXXX", ForceMerging = "XXXXXX", - ForceZipping = "XXXXXX", + ForceZipping = true, ForcePacking = "XXXXXX", }; @@ -238,8 +238,8 @@ namespace SabreTools.Serialization.Readers.Test Offs = "XXXXXX", Serial = "XXXXXX", Header = "XXXXXX", - Inverted = "XXXXXX", - MIA = "XXXXXX", + Inverted = true, + MIA = true, }; var disk = new Data.Models.ClrMamePro.Disk @@ -301,8 +301,8 @@ namespace SabreTools.Serialization.Readers.Test Control = "XXXXXX", Buttons = "XXXXXX", Coins = "XXXXXX", - Tilt = "XXXXXX", - Service = "XXXXXX", + Tilt = true, + Service = true, }; var dipswitch = new Data.Models.ClrMamePro.DipSwitch @@ -380,7 +380,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", cmp.Header); Assert.Equal("XXXXXX", cmp.Type); Assert.Equal("XXXXXX", cmp.ForceMerging); - Assert.Equal("XXXXXX", cmp.ForceZipping); + Assert.Equal(true, cmp.ForceZipping); Assert.Equal("XXXXXX", cmp.ForcePacking); } @@ -501,8 +501,8 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", rom.Offs); Assert.Equal("XXXXXX", rom.Serial); Assert.Equal("XXXXXX", rom.Header); - Assert.Equal("XXXXXX", rom.Inverted); - Assert.Equal("XXXXXX", rom.MIA); + Assert.Equal(true, rom.Inverted); + Assert.Equal(true, rom.MIA); } /// @@ -596,8 +596,8 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", input.Control); Assert.Equal("XXXXXX", input.Buttons); Assert.Equal("XXXXXX", input.Coins); - Assert.Equal("XXXXXX", input.Tilt); - Assert.Equal("XXXXXX", input.Service); + Assert.Equal(true, input.Tilt); + Assert.Equal(true, input.Service); } /// diff --git a/SabreTools.Serialization.Readers.Test/ListxmlTests.cs b/SabreTools.Serialization.Readers.Test/ListxmlTests.cs index 12c75f96..0b58b6b7 100644 --- a/SabreTools.Serialization.Readers.Test/ListxmlTests.cs +++ b/SabreTools.Serialization.Readers.Test/ListxmlTests.cs @@ -89,7 +89,7 @@ namespace SabreTools.Serialization.Readers.Test // Validate the data Assert.NotNull(newMame); Assert.Equal("XXXXXX", newMame.Build); - Assert.Equal("XXXXXX", newMame.Debug); + Assert.Equal(true, newMame.Debug); Assert.Equal("XXXXXX", newMame.MameConfig); Assert.NotNull(newMame.Game); @@ -117,7 +117,7 @@ namespace SabreTools.Serialization.Readers.Test // Validate the data Assert.NotNull(newMame); Assert.Equal("XXXXXX", newMame.Build); - Assert.Equal("XXXXXX", newMame.Debug); + Assert.Equal(true, newMame.Debug); Assert.Equal("XXXXXX", newMame.MameConfig); Assert.NotNull(newMame.Game); @@ -148,9 +148,9 @@ namespace SabreTools.Serialization.Readers.Test Region = "XXXXXX", Offset = "XXXXXX", Status = "XXXXXX", - Optional = "XXXXXX", - Dispose = "XXXXXX", - SoundOnly = "XXXXXX", + Optional = true, + Dispose = true, + SoundOnly = true, }; var disk = new Data.Models.Listxml.Disk @@ -161,9 +161,9 @@ namespace SabreTools.Serialization.Readers.Test Merge = "XXXXXX", Region = "XXXXXX", Index = "XXXXXX", - Writable = "XXXXXX", + Writable = true, Status = "XXXXXX", - Optional = "XXXXXX", + Optional = true, }; var deviceref = new Data.Models.Listxml.DeviceRef @@ -181,7 +181,7 @@ namespace SabreTools.Serialization.Readers.Test Name = "XXXXXX", Tag = "XXXXXX", Type = "XXXXXX", - SoundOnly = "XXXXXX", + SoundOnly = true, Clock = "XXXXXX", }; @@ -190,7 +190,7 @@ namespace SabreTools.Serialization.Readers.Test Tag = "XXXXXX", Type = "XXXXXX", Rotate = "XXXXXX", - FlipX = "XXXXXX", + FlipX = true, Width = "XXXXXX", Height = "XXXXXX", Refresh = "XXXXXX", @@ -229,7 +229,7 @@ namespace SabreTools.Serialization.Readers.Test Maximum = "XXXXXX", Sensitivity = "XXXXXX", KeyDelta = "XXXXXX", - Reverse = "XXXXXX", + Reverse = true, Ways = "XXXXXX", Ways2 = "XXXXXX", Ways3 = "XXXXXX", @@ -237,8 +237,8 @@ namespace SabreTools.Serialization.Readers.Test var input = new Data.Models.Listxml.Input { - Service = "XXXXXX", - Tilt = "XXXXXX", + Service = true, + Tilt = true, Players = "XXXXXX", ControlAttr = "XXXXXX", Buttons = "XXXXXX", @@ -258,7 +258,7 @@ namespace SabreTools.Serialization.Readers.Test { Name = "XXXXXX", Number = "XXXXXX", - Inverted = "XXXXXX", + Inverted = true, }; var dipvalue = new Data.Models.Listxml.DipValue @@ -283,7 +283,7 @@ namespace SabreTools.Serialization.Readers.Test { Name = "XXXXXX", Number = "XXXXXX", - Inverted = "XXXXXX", + Inverted = true, }; var confsetting = new Data.Models.Listxml.ConfSetting @@ -331,10 +331,10 @@ namespace SabreTools.Serialization.Readers.Test Emulation = "XXXXXX", Cocktail = "XXXXXX", SaveState = "XXXXXX", - RequiresArtwork = "XXXXXX", - Unofficial = "XXXXXX", - NoSoundHardware = "XXXXXX", - Incomplete = "XXXXXX", + RequiresArtwork = true, + Unofficial = true, + NoSoundHardware = true, + Incomplete = true, }; var feature = new Data.Models.Listxml.Feature @@ -399,10 +399,10 @@ namespace SabreTools.Serialization.Readers.Test : new Data.Models.Listxml.Machine(); gameBase.Name = "XXXXXX"; gameBase.SourceFile = "XXXXXX"; - gameBase.IsBios = "XXXXXX"; - gameBase.IsDevice = "XXXXXX"; - gameBase.IsMechanical = "XXXXXX"; - gameBase.Runnable = "XXXXXX"; + gameBase.IsBios = true; + gameBase.IsDevice = true; + gameBase.IsMechanical = true; + gameBase.Runnable = true; gameBase.CloneOf = "XXXXXX"; gameBase.RomOf = "XXXXXX"; gameBase.SampleOf = "XXXXXX"; @@ -434,7 +434,7 @@ namespace SabreTools.Serialization.Readers.Test return new Data.Models.Listxml.Mame { Build = "XXXXXX", - Debug = "XXXXXX", + Debug = true, MameConfig = "XXXXXX", Game = [gameBase], }; @@ -448,10 +448,10 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(gb); Assert.Equal("XXXXXX", gb.Name); Assert.Equal("XXXXXX", gb.SourceFile); - Assert.Equal("XXXXXX", gb.IsBios); - Assert.Equal("XXXXXX", gb.IsDevice); - Assert.Equal("XXXXXX", gb.IsMechanical); - Assert.Equal("XXXXXX", gb.Runnable); + Assert.Equal(true, gb.IsBios); + Assert.Equal(true, gb.IsDevice); + Assert.Equal(true, gb.IsMechanical); + Assert.Equal(true, gb.Runnable); Assert.Equal("XXXXXX", gb.CloneOf); Assert.Equal("XXXXXX", gb.RomOf); Assert.Equal("XXXXXX", gb.SampleOf); @@ -560,9 +560,9 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", rom.Region); Assert.Equal("XXXXXX", rom.Offset); Assert.Equal("XXXXXX", rom.Status); - Assert.Equal("XXXXXX", rom.Optional); - Assert.Equal("XXXXXX", rom.Dispose); - Assert.Equal("XXXXXX", rom.SoundOnly); + Assert.Equal(true, rom.Optional); + Assert.Equal(true, rom.Dispose); + Assert.Equal(true, rom.SoundOnly); } /// @@ -577,9 +577,9 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", disk.Merge); Assert.Equal("XXXXXX", disk.Region); Assert.Equal("XXXXXX", disk.Index); - Assert.Equal("XXXXXX", disk.Writable); + Assert.Equal(true, disk.Writable); Assert.Equal("XXXXXX", disk.Status); - Assert.Equal("XXXXXX", disk.Optional); + Assert.Equal(true, disk.Optional); } /// @@ -609,7 +609,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", chip.Name); Assert.Equal("XXXXXX", chip.Tag); Assert.Equal("XXXXXX", chip.Type); - Assert.Equal("XXXXXX", chip.SoundOnly); + Assert.Equal(true, chip.SoundOnly); Assert.Equal("XXXXXX", chip.Clock); } @@ -622,7 +622,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", display.Tag); Assert.Equal("XXXXXX", display.Type); Assert.Equal("XXXXXX", display.Rotate); - Assert.Equal("XXXXXX", display.FlipX); + Assert.Equal(true, display.FlipX); Assert.Equal("XXXXXX", display.Width); Assert.Equal("XXXXXX", display.Height); Assert.Equal("XXXXXX", display.Refresh); @@ -665,8 +665,8 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Input? input) { Assert.NotNull(input); - Assert.Equal("XXXXXX", input.Service); - Assert.Equal("XXXXXX", input.Tilt); + Assert.Equal(true, input.Service); + Assert.Equal(true, input.Tilt); Assert.Equal("XXXXXX", input.Players); Assert.Equal("XXXXXX", input.ControlAttr); // Mututally exclusive with input.Control Assert.Equal("XXXXXX", input.Buttons); @@ -691,7 +691,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", control.Maximum); Assert.Equal("XXXXXX", control.Sensitivity); Assert.Equal("XXXXXX", control.KeyDelta); - Assert.Equal("XXXXXX", control.Reverse); + Assert.Equal(true, control.Reverse); Assert.Equal("XXXXXX", control.Ways); Assert.Equal("XXXXXX", control.Ways2); Assert.Equal("XXXXXX", control.Ways3); @@ -737,7 +737,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(diplocation); Assert.Equal("XXXXXX", diplocation.Name); Assert.Equal("XXXXXX", diplocation.Number); - Assert.Equal("XXXXXX", diplocation.Inverted); + Assert.Equal(true, diplocation.Inverted); } /// @@ -780,7 +780,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(conflocation); Assert.Equal("XXXXXX", conflocation.Name); Assert.Equal("XXXXXX", conflocation.Number); - Assert.Equal("XXXXXX", conflocation.Inverted); + Assert.Equal(true, conflocation.Inverted); } /// @@ -841,10 +841,10 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", driver.Emulation); Assert.Equal("XXXXXX", driver.Cocktail); Assert.Equal("XXXXXX", driver.SaveState); - Assert.Equal("XXXXXX", driver.RequiresArtwork); - Assert.Equal("XXXXXX", driver.Unofficial); - Assert.Equal("XXXXXX", driver.NoSoundHardware); - Assert.Equal("XXXXXX", driver.Incomplete); + Assert.Equal(true, driver.RequiresArtwork); + Assert.Equal(true, driver.Unofficial); + Assert.Equal(true, driver.NoSoundHardware); + Assert.Equal(true, driver.Incomplete); } /// diff --git a/SabreTools.Serialization.Readers.Test/LogiqxTests.cs b/SabreTools.Serialization.Readers.Test/LogiqxTests.cs index e2918439..4cf70aed 100644 --- a/SabreTools.Serialization.Readers.Test/LogiqxTests.cs +++ b/SabreTools.Serialization.Readers.Test/LogiqxTests.cs @@ -89,7 +89,7 @@ namespace SabreTools.Serialization.Readers.Test // Validate the data Assert.NotNull(newDf); Assert.Equal("XXXXXX", newDf.Build); - Assert.Equal("XXXXXX", newDf.Debug); + Assert.Equal(true, newDf.Debug); // Assert.Equal("XXXXXX", newDf.SchemaLocation); // TODO: Fix this based on No-Intro DATs Validate(newDf.Header); @@ -121,7 +121,7 @@ namespace SabreTools.Serialization.Readers.Test // Validate the data Assert.NotNull(newDf); Assert.Equal("XXXXXX", newDf.Build); - Assert.Equal("XXXXXX", newDf.Debug); + Assert.Equal(true, newDf.Debug); // Assert.Equal("XXXXXX", newDf.SchemaLocation); // TODO: Fix this based on No-Intro DATs Validate(newDf.Header); @@ -152,9 +152,9 @@ namespace SabreTools.Serialization.Readers.Test RomMode = "XXXXXX", BiosMode = "XXXXXX", SampleMode = "XXXXXX", - LockRomMode = "XXXXXX", - LockBiosMode = "XXXXXX", - LockSampleMode = "XXXXXX", + LockRomMode = true, + LockBiosMode = true, + LockSampleMode = true, }; var header = new Data.Models.Logiqx.Header @@ -234,8 +234,8 @@ namespace SabreTools.Serialization.Readers.Test Serial = "XXXXXX", Header = "XXXXXX", Date = "XXXXXX", - Inverted = "XXXXXX", - MIA = "XXXXXX", + Inverted = true, + MIA = true, }; var disk = new Data.Models.Logiqx.Disk @@ -278,10 +278,10 @@ namespace SabreTools.Serialization.Readers.Test Emulation = "XXXXXX", Cocktail = "XXXXXX", SaveState = "XXXXXX", - RequiresArtwork = "XXXXXX", - Unofficial = "XXXXXX", - NoSoundHardware = "XXXXXX", - Incomplete = "XXXXXX", + RequiresArtwork = true, + Unofficial = true, + NoSoundHardware = true, + Incomplete = true, }; var softwarelist = new Data.Models.Logiqx.SoftwareList @@ -297,9 +297,9 @@ namespace SabreTools.Serialization.Readers.Test : new Data.Models.Logiqx.Machine(); gameBase.Name = "XXXXXX"; gameBase.SourceFile = "XXXXXX"; - gameBase.IsBios = "XXXXXX"; - gameBase.IsDevice = "XXXXXX"; - gameBase.IsMechanical = "XXXXXX"; + gameBase.IsBios = true; + gameBase.IsDevice = true; + gameBase.IsMechanical = true; gameBase.CloneOf = "XXXXXX"; gameBase.RomOf = "XXXXXX"; gameBase.SampleOf = "XXXXXX"; @@ -307,7 +307,7 @@ namespace SabreTools.Serialization.Readers.Test gameBase.RebuildTo = "XXXXXX"; gameBase.Id = "XXXXXX"; gameBase.CloneOfId = "XXXXXX"; - gameBase.Runnable = "XXXXXX"; + gameBase.Runnable = true; gameBase.Comment = ["XXXXXX"]; gameBase.Description = "XXXXXX"; gameBase.Year = "XXXXXX"; @@ -329,7 +329,7 @@ namespace SabreTools.Serialization.Readers.Test return new Data.Models.Logiqx.Datafile { Build = "XXXXXX", - Debug = "XXXXXX", + Debug = true, SchemaLocation = "XXXXXX", Header = header, Game = [gameBase], @@ -382,9 +382,9 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", rc.RomMode); Assert.Equal("XXXXXX", rc.BiosMode); Assert.Equal("XXXXXX", rc.SampleMode); - Assert.Equal("XXXXXX", rc.LockRomMode); - Assert.Equal("XXXXXX", rc.LockBiosMode); - Assert.Equal("XXXXXX", rc.LockSampleMode); + Assert.Equal(true, rc.LockRomMode); + Assert.Equal(true, rc.LockBiosMode); + Assert.Equal(true, rc.LockSampleMode); } /// @@ -395,9 +395,9 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(gb); Assert.Equal("XXXXXX", gb.Name); Assert.Equal("XXXXXX", gb.SourceFile); - Assert.Equal("XXXXXX", gb.IsBios); - Assert.Equal("XXXXXX", gb.IsDevice); - Assert.Equal("XXXXXX", gb.IsMechanical); + Assert.Equal(true, gb.IsBios); + Assert.Equal(true, gb.IsDevice); + Assert.Equal(true, gb.IsMechanical); Assert.Equal("XXXXXX", gb.CloneOf); Assert.Equal("XXXXXX", gb.RomOf); Assert.Equal("XXXXXX", gb.SampleOf); @@ -405,7 +405,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", gb.RebuildTo); Assert.Equal("XXXXXX", gb.Id); Assert.Equal("XXXXXX", gb.CloneOfId); - Assert.Equal("XXXXXX", gb.Runnable); + Assert.Equal(true, gb.Runnable); Assert.NotNull(gb.Comment); string comment = Assert.Single(gb.Comment); @@ -533,8 +533,8 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", rom.Serial); Assert.Equal("XXXXXX", rom.Header); Assert.Equal("XXXXXX", rom.Date); - Assert.Equal("XXXXXX", rom.Inverted); - Assert.Equal("XXXXXX", rom.MIA); + Assert.Equal(true, rom.Inverted); + Assert.Equal(true, rom.MIA); } /// @@ -601,10 +601,10 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", driver.Emulation); Assert.Equal("XXXXXX", driver.Cocktail); Assert.Equal("XXXXXX", driver.SaveState); - Assert.Equal("XXXXXX", driver.RequiresArtwork); - Assert.Equal("XXXXXX", driver.Unofficial); - Assert.Equal("XXXXXX", driver.NoSoundHardware); - Assert.Equal("XXXXXX", driver.Incomplete); + Assert.Equal(true, driver.RequiresArtwork); + Assert.Equal(true, driver.Unofficial); + Assert.Equal(true, driver.NoSoundHardware); + Assert.Equal(true, driver.Incomplete); } /// diff --git a/SabreTools.Serialization.Readers.Test/M1Tests.cs b/SabreTools.Serialization.Readers.Test/M1Tests.cs index 090d6a64..5f955026 100644 --- a/SabreTools.Serialization.Readers.Test/M1Tests.cs +++ b/SabreTools.Serialization.Readers.Test/M1Tests.cs @@ -144,9 +144,9 @@ namespace SabreTools.Serialization.Readers.Test Region = "XXXXXX", Offset = "XXXXXX", Status = "XXXXXX", - Optional = "XXXXXX", - Dispose = "XXXXXX", - SoundOnly = "XXXXXX", + Optional = true, + Dispose = true, + SoundOnly = true, }; var disk = new Data.Models.Listxml.Disk @@ -157,9 +157,9 @@ namespace SabreTools.Serialization.Readers.Test Merge = "XXXXXX", Region = "XXXXXX", Index = "XXXXXX", - Writable = "XXXXXX", + Writable = true, Status = "XXXXXX", - Optional = "XXXXXX", + Optional = true, }; var deviceref = new Data.Models.Listxml.DeviceRef @@ -177,7 +177,7 @@ namespace SabreTools.Serialization.Readers.Test Name = "XXXXXX", Tag = "XXXXXX", Type = "XXXXXX", - SoundOnly = "XXXXXX", + SoundOnly = true, Clock = "XXXXXX", }; @@ -186,7 +186,7 @@ namespace SabreTools.Serialization.Readers.Test Tag = "XXXXXX", Type = "XXXXXX", Rotate = "XXXXXX", - FlipX = "XXXXXX", + FlipX = true, Width = "XXXXXX", Height = "XXXXXX", Refresh = "XXXXXX", @@ -225,7 +225,7 @@ namespace SabreTools.Serialization.Readers.Test Maximum = "XXXXXX", Sensitivity = "XXXXXX", KeyDelta = "XXXXXX", - Reverse = "XXXXXX", + Reverse = true, Ways = "XXXXXX", Ways2 = "XXXXXX", Ways3 = "XXXXXX", @@ -233,8 +233,8 @@ namespace SabreTools.Serialization.Readers.Test var input = new Data.Models.Listxml.Input { - Service = "XXXXXX", - Tilt = "XXXXXX", + Service = true, + Tilt = true, Players = "XXXXXX", //ControlAttr = "XXXXXX", // Mututally exclusive with input.Control Buttons = "XXXXXX", @@ -254,7 +254,7 @@ namespace SabreTools.Serialization.Readers.Test { Name = "XXXXXX", Number = "XXXXXX", - Inverted = "XXXXXX", + Inverted = true, }; var dipvalue = new Data.Models.Listxml.DipValue @@ -279,7 +279,7 @@ namespace SabreTools.Serialization.Readers.Test { Name = "XXXXXX", Number = "XXXXXX", - Inverted = "XXXXXX", + Inverted = true, }; var confsetting = new Data.Models.Listxml.ConfSetting @@ -327,10 +327,10 @@ namespace SabreTools.Serialization.Readers.Test Emulation = "XXXXXX", Cocktail = "XXXXXX", SaveState = "XXXXXX", - RequiresArtwork = "XXXXXX", - Unofficial = "XXXXXX", - NoSoundHardware = "XXXXXX", - Incomplete = "XXXXXX", + RequiresArtwork = true, + Unofficial = true, + NoSoundHardware = true, + Incomplete = true, }; var feature = new Data.Models.Listxml.Feature @@ -395,10 +395,10 @@ namespace SabreTools.Serialization.Readers.Test : new Data.Models.Listxml.Machine(); gameBase.Name = "XXXXXX"; gameBase.SourceFile = "XXXXXX"; - gameBase.IsBios = "XXXXXX"; - gameBase.IsDevice = "XXXXXX"; - gameBase.IsMechanical = "XXXXXX"; - gameBase.Runnable = "XXXXXX"; + gameBase.IsBios = true; + gameBase.IsDevice = true; + gameBase.IsMechanical = true; + gameBase.Runnable = true; gameBase.CloneOf = "XXXXXX"; gameBase.RomOf = "XXXXXX"; gameBase.SampleOf = "XXXXXX"; @@ -442,10 +442,10 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(gb); Assert.Equal("XXXXXX", gb.Name); Assert.Equal("XXXXXX", gb.SourceFile); - Assert.Equal("XXXXXX", gb.IsBios); - Assert.Equal("XXXXXX", gb.IsDevice); - Assert.Equal("XXXXXX", gb.IsMechanical); - Assert.Equal("XXXXXX", gb.Runnable); + Assert.Equal(true, gb.IsBios); + Assert.Equal(true, gb.IsDevice); + Assert.Equal(true, gb.IsMechanical); + Assert.Equal(true, gb.Runnable); Assert.Equal("XXXXXX", gb.CloneOf); Assert.Equal("XXXXXX", gb.RomOf); Assert.Equal("XXXXXX", gb.SampleOf); @@ -554,9 +554,9 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", rom.Region); Assert.Equal("XXXXXX", rom.Offset); Assert.Equal("XXXXXX", rom.Status); - Assert.Equal("XXXXXX", rom.Optional); - Assert.Equal("XXXXXX", rom.Dispose); - Assert.Equal("XXXXXX", rom.SoundOnly); + Assert.Equal(true, rom.Optional); + Assert.Equal(true, rom.Dispose); + Assert.Equal(true, rom.SoundOnly); } /// @@ -571,9 +571,9 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", disk.Merge); Assert.Equal("XXXXXX", disk.Region); Assert.Equal("XXXXXX", disk.Index); - Assert.Equal("XXXXXX", disk.Writable); + Assert.Equal(true, disk.Writable); Assert.Equal("XXXXXX", disk.Status); - Assert.Equal("XXXXXX", disk.Optional); + Assert.Equal(true, disk.Optional); } /// @@ -603,7 +603,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", chip.Name); Assert.Equal("XXXXXX", chip.Tag); Assert.Equal("XXXXXX", chip.Type); - Assert.Equal("XXXXXX", chip.SoundOnly); + Assert.Equal(true, chip.SoundOnly); Assert.Equal("XXXXXX", chip.Clock); } @@ -616,7 +616,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", display.Tag); Assert.Equal("XXXXXX", display.Type); Assert.Equal("XXXXXX", display.Rotate); - Assert.Equal("XXXXXX", display.FlipX); + Assert.Equal(true, display.FlipX); Assert.Equal("XXXXXX", display.Width); Assert.Equal("XXXXXX", display.Height); Assert.Equal("XXXXXX", display.Refresh); @@ -659,8 +659,8 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Input? input) { Assert.NotNull(input); - Assert.Equal("XXXXXX", input.Service); - Assert.Equal("XXXXXX", input.Tilt); + Assert.Equal(true, input.Service); + Assert.Equal(true, input.Tilt); Assert.Equal("XXXXXX", input.Players); //Assert.Equal("XXXXXX", input.ControlAttr); // Mututally exclusive with input.Control Assert.Equal("XXXXXX", input.Buttons); @@ -685,7 +685,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", control.Maximum); Assert.Equal("XXXXXX", control.Sensitivity); Assert.Equal("XXXXXX", control.KeyDelta); - Assert.Equal("XXXXXX", control.Reverse); + Assert.Equal(true, control.Reverse); Assert.Equal("XXXXXX", control.Ways); Assert.Equal("XXXXXX", control.Ways2); Assert.Equal("XXXXXX", control.Ways3); @@ -731,7 +731,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(diplocation); Assert.Equal("XXXXXX", diplocation.Name); Assert.Equal("XXXXXX", diplocation.Number); - Assert.Equal("XXXXXX", diplocation.Inverted); + Assert.Equal(true, diplocation.Inverted); } /// @@ -774,7 +774,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(conflocation); Assert.Equal("XXXXXX", conflocation.Name); Assert.Equal("XXXXXX", conflocation.Number); - Assert.Equal("XXXXXX", conflocation.Inverted); + Assert.Equal(true, conflocation.Inverted); } /// @@ -835,10 +835,10 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", driver.Emulation); Assert.Equal("XXXXXX", driver.Cocktail); Assert.Equal("XXXXXX", driver.SaveState); - Assert.Equal("XXXXXX", driver.RequiresArtwork); - Assert.Equal("XXXXXX", driver.Unofficial); - Assert.Equal("XXXXXX", driver.NoSoundHardware); - Assert.Equal("XXXXXX", driver.Incomplete); + Assert.Equal(true, driver.RequiresArtwork); + Assert.Equal(true, driver.Unofficial); + Assert.Equal(true, driver.NoSoundHardware); + Assert.Equal(true, driver.Incomplete); } /// diff --git a/SabreTools.Serialization.Readers.Test/MessTests.cs b/SabreTools.Serialization.Readers.Test/MessTests.cs index d808f559..710ee7ea 100644 --- a/SabreTools.Serialization.Readers.Test/MessTests.cs +++ b/SabreTools.Serialization.Readers.Test/MessTests.cs @@ -144,9 +144,9 @@ namespace SabreTools.Serialization.Readers.Test Region = "XXXXXX", Offset = "XXXXXX", Status = "XXXXXX", - Optional = "XXXXXX", - Dispose = "XXXXXX", - SoundOnly = "XXXXXX", + Optional = true, + Dispose = true, + SoundOnly = true, }; var disk = new Data.Models.Listxml.Disk @@ -157,9 +157,9 @@ namespace SabreTools.Serialization.Readers.Test Merge = "XXXXXX", Region = "XXXXXX", Index = "XXXXXX", - Writable = "XXXXXX", + Writable = true, Status = "XXXXXX", - Optional = "XXXXXX", + Optional = true, }; var deviceref = new Data.Models.Listxml.DeviceRef @@ -177,7 +177,7 @@ namespace SabreTools.Serialization.Readers.Test Name = "XXXXXX", Tag = "XXXXXX", Type = "XXXXXX", - SoundOnly = "XXXXXX", + SoundOnly = true, Clock = "XXXXXX", }; @@ -186,7 +186,7 @@ namespace SabreTools.Serialization.Readers.Test Tag = "XXXXXX", Type = "XXXXXX", Rotate = "XXXXXX", - FlipX = "XXXXXX", + FlipX = true, Width = "XXXXXX", Height = "XXXXXX", Refresh = "XXXXXX", @@ -225,7 +225,7 @@ namespace SabreTools.Serialization.Readers.Test Maximum = "XXXXXX", Sensitivity = "XXXXXX", KeyDelta = "XXXXXX", - Reverse = "XXXXXX", + Reverse = true, Ways = "XXXXXX", Ways2 = "XXXXXX", Ways3 = "XXXXXX", @@ -233,8 +233,8 @@ namespace SabreTools.Serialization.Readers.Test var input = new Data.Models.Listxml.Input { - Service = "XXXXXX", - Tilt = "XXXXXX", + Service = true, + Tilt = true, Players = "XXXXXX", //ControlAttr = "XXXXXX", // Mututally exclusive with input.Control Buttons = "XXXXXX", @@ -254,7 +254,7 @@ namespace SabreTools.Serialization.Readers.Test { Name = "XXXXXX", Number = "XXXXXX", - Inverted = "XXXXXX", + Inverted = true, }; var dipvalue = new Data.Models.Listxml.DipValue @@ -279,7 +279,7 @@ namespace SabreTools.Serialization.Readers.Test { Name = "XXXXXX", Number = "XXXXXX", - Inverted = "XXXXXX", + Inverted = true, }; var confsetting = new Data.Models.Listxml.ConfSetting @@ -327,10 +327,10 @@ namespace SabreTools.Serialization.Readers.Test Emulation = "XXXXXX", Cocktail = "XXXXXX", SaveState = "XXXXXX", - RequiresArtwork = "XXXXXX", - Unofficial = "XXXXXX", - NoSoundHardware = "XXXXXX", - Incomplete = "XXXXXX", + RequiresArtwork = true, + Unofficial = true, + NoSoundHardware = true, + Incomplete = true, }; var feature = new Data.Models.Listxml.Feature @@ -395,10 +395,10 @@ namespace SabreTools.Serialization.Readers.Test : new Data.Models.Listxml.Machine(); gameBase.Name = "XXXXXX"; gameBase.SourceFile = "XXXXXX"; - gameBase.IsBios = "XXXXXX"; - gameBase.IsDevice = "XXXXXX"; - gameBase.IsMechanical = "XXXXXX"; - gameBase.Runnable = "XXXXXX"; + gameBase.IsBios = true; + gameBase.IsDevice = true; + gameBase.IsMechanical = true; + gameBase.Runnable = true; gameBase.CloneOf = "XXXXXX"; gameBase.RomOf = "XXXXXX"; gameBase.SampleOf = "XXXXXX"; @@ -442,10 +442,10 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(gb); Assert.Equal("XXXXXX", gb.Name); Assert.Equal("XXXXXX", gb.SourceFile); - Assert.Equal("XXXXXX", gb.IsBios); - Assert.Equal("XXXXXX", gb.IsDevice); - Assert.Equal("XXXXXX", gb.IsMechanical); - Assert.Equal("XXXXXX", gb.Runnable); + Assert.Equal(true, gb.IsBios); + Assert.Equal(true, gb.IsDevice); + Assert.Equal(true, gb.IsMechanical); + Assert.Equal(true, gb.Runnable); Assert.Equal("XXXXXX", gb.CloneOf); Assert.Equal("XXXXXX", gb.RomOf); Assert.Equal("XXXXXX", gb.SampleOf); @@ -554,9 +554,9 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", rom.Region); Assert.Equal("XXXXXX", rom.Offset); Assert.Equal("XXXXXX", rom.Status); - Assert.Equal("XXXXXX", rom.Optional); - Assert.Equal("XXXXXX", rom.Dispose); - Assert.Equal("XXXXXX", rom.SoundOnly); + Assert.Equal(true, rom.Optional); + Assert.Equal(true, rom.Dispose); + Assert.Equal(true, rom.SoundOnly); } /// @@ -571,9 +571,9 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", disk.Merge); Assert.Equal("XXXXXX", disk.Region); Assert.Equal("XXXXXX", disk.Index); - Assert.Equal("XXXXXX", disk.Writable); + Assert.Equal(true, disk.Writable); Assert.Equal("XXXXXX", disk.Status); - Assert.Equal("XXXXXX", disk.Optional); + Assert.Equal(true, disk.Optional); } /// @@ -603,7 +603,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", chip.Name); Assert.Equal("XXXXXX", chip.Tag); Assert.Equal("XXXXXX", chip.Type); - Assert.Equal("XXXXXX", chip.SoundOnly); + Assert.Equal(true, chip.SoundOnly); Assert.Equal("XXXXXX", chip.Clock); } @@ -616,7 +616,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", display.Tag); Assert.Equal("XXXXXX", display.Type); Assert.Equal("XXXXXX", display.Rotate); - Assert.Equal("XXXXXX", display.FlipX); + Assert.Equal(true, display.FlipX); Assert.Equal("XXXXXX", display.Width); Assert.Equal("XXXXXX", display.Height); Assert.Equal("XXXXXX", display.Refresh); @@ -659,8 +659,8 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Input? input) { Assert.NotNull(input); - Assert.Equal("XXXXXX", input.Service); - Assert.Equal("XXXXXX", input.Tilt); + Assert.Equal(true, input.Service); + Assert.Equal(true, input.Tilt); Assert.Equal("XXXXXX", input.Players); //Assert.Equal("XXXXXX", input.ControlAttr); // Mututally exclusive with input.Control Assert.Equal("XXXXXX", input.Buttons); @@ -685,7 +685,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", control.Maximum); Assert.Equal("XXXXXX", control.Sensitivity); Assert.Equal("XXXXXX", control.KeyDelta); - Assert.Equal("XXXXXX", control.Reverse); + Assert.Equal(true, control.Reverse); Assert.Equal("XXXXXX", control.Ways); Assert.Equal("XXXXXX", control.Ways2); Assert.Equal("XXXXXX", control.Ways3); @@ -731,7 +731,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(diplocation); Assert.Equal("XXXXXX", diplocation.Name); Assert.Equal("XXXXXX", diplocation.Number); - Assert.Equal("XXXXXX", diplocation.Inverted); + Assert.Equal(true, diplocation.Inverted); } /// @@ -774,7 +774,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(conflocation); Assert.Equal("XXXXXX", conflocation.Name); Assert.Equal("XXXXXX", conflocation.Number); - Assert.Equal("XXXXXX", conflocation.Inverted); + Assert.Equal(true, conflocation.Inverted); } /// @@ -835,10 +835,10 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", driver.Emulation); Assert.Equal("XXXXXX", driver.Cocktail); Assert.Equal("XXXXXX", driver.SaveState); - Assert.Equal("XXXXXX", driver.RequiresArtwork); - Assert.Equal("XXXXXX", driver.Unofficial); - Assert.Equal("XXXXXX", driver.NoSoundHardware); - Assert.Equal("XXXXXX", driver.Incomplete); + Assert.Equal(true, driver.RequiresArtwork); + Assert.Equal(true, driver.Unofficial); + Assert.Equal(true, driver.NoSoundHardware); + Assert.Equal(true, driver.Incomplete); } /// diff --git a/SabreTools.Serialization.Readers.Test/SoftwareListTests.cs b/SabreTools.Serialization.Readers.Test/SoftwareListTests.cs index 5b568e52..d90e1ded 100644 --- a/SabreTools.Serialization.Readers.Test/SoftwareListTests.cs +++ b/SabreTools.Serialization.Readers.Test/SoftwareListTests.cs @@ -155,7 +155,7 @@ namespace SabreTools.Serialization.Readers.Test MD5 = "XXXXXX", SHA1 = "XXXXXX", Status = "XXXXXX", - Writeable = "XXXXXX", + Writeable = true, }; var diskarea = new Data.Models.SoftwareList.DiskArea @@ -351,7 +351,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", disk.MD5); Assert.Equal("XXXXXX", disk.SHA1); Assert.Equal("XXXXXX", disk.Status); - Assert.Equal("XXXXXX", disk.Writeable); + Assert.Equal(true, disk.Writeable); } /// diff --git a/SabreTools.Serialization.Readers/AttractMode.cs b/SabreTools.Serialization.Readers/AttractMode.cs index 8bbd00ab..69b22426 100644 --- a/SabreTools.Serialization.Readers/AttractMode.cs +++ b/SabreTools.Serialization.Readers/AttractMode.cs @@ -1,6 +1,7 @@ using System.Collections.Generic; using System.IO; using System.Text; +using SabreTools.Data.Extensions; using SabreTools.Data.Models.AttractMode; using SabreTools.Text.SeparatedValue; @@ -99,7 +100,7 @@ namespace SabreTools.Serialization.Readers Tags = reader.Line[18], PlayedCount = reader.Line[19], PlayedTime = reader.Line[20], - FileIsAvailable = reader.Line[21], + FileIsAvailable = reader.Line[21].AsYesNo(), }; } diff --git a/SabreTools.Serialization.Readers/ClrMamePro.cs b/SabreTools.Serialization.Readers/ClrMamePro.cs index e7952b3c..75e973e1 100644 --- a/SabreTools.Serialization.Readers/ClrMamePro.cs +++ b/SabreTools.Serialization.Readers/ClrMamePro.cs @@ -248,7 +248,7 @@ namespace SabreTools.Serialization.Readers dat.ClrMamePro.ForceMerging = reader.Standalone?.Value; break; case "forcezipping": - dat.ClrMamePro.ForceZipping = reader.Standalone?.Value; + dat.ClrMamePro.ForceZipping = reader.Standalone?.Value?.AsYesNo(); break; case "forcepacking": dat.ClrMamePro.ForcePacking = reader.Standalone?.Value; @@ -599,10 +599,10 @@ namespace SabreTools.Serialization.Readers rom.Date = kvp.Value; break; case "inverted": - rom.Inverted = kvp.Value; + rom.Inverted = kvp.Value.AsYesNo(); break; case "mia": - rom.MIA = kvp.Value; + rom.MIA = kvp.Value.AsYesNo(); break; default: // TODO: Log invalid values @@ -884,10 +884,10 @@ namespace SabreTools.Serialization.Readers input.Coins = kvp.Value; break; case "tilt": - input.Tilt = kvp.Value; + input.Tilt = kvp.Value.AsYesNo(); break; case "service": - input.Service = kvp.Value; + input.Service = kvp.Value.AsYesNo(); break; default: // TODO: Log invalid values diff --git a/SabreTools.Serialization.Readers/Listxml.cs b/SabreTools.Serialization.Readers/Listxml.cs index e497a1f6..9c9570f3 100644 --- a/SabreTools.Serialization.Readers/Listxml.cs +++ b/SabreTools.Serialization.Readers/Listxml.cs @@ -71,7 +71,7 @@ namespace SabreTools.Serialization.Readers var obj = new Mame(); obj.Build = reader.GetAttribute("build"); - obj.Debug = reader.GetAttribute("debug"); + obj.Debug = reader.GetAttribute("debug").AsYesNo(); obj.MameConfig = reader.GetAttribute("mameconfig"); List games = []; @@ -190,7 +190,7 @@ namespace SabreTools.Serialization.Readers obj.Name = reader.GetAttribute("name"); obj.Tag = reader.GetAttribute("tag"); obj.Type = reader.GetAttribute("type"); - obj.SoundOnly = reader.GetAttribute("soundonly"); + obj.SoundOnly = reader.GetAttribute("soundonly").AsYesNo(); obj.Clock = reader.GetAttribute("clock"); return obj; @@ -285,7 +285,7 @@ namespace SabreTools.Serialization.Readers obj.Name = reader.GetAttribute("name"); obj.Number = reader.GetAttribute("number"); - obj.Inverted = reader.GetAttribute("inverted"); + obj.Inverted = reader.GetAttribute("inverted").AsYesNo(); return obj; } @@ -348,7 +348,7 @@ namespace SabreTools.Serialization.Readers obj.Maximum = reader.GetAttribute("maximum"); obj.Sensitivity = reader.GetAttribute("sensitivity"); obj.KeyDelta = reader.GetAttribute("keydelta"); - obj.Reverse = reader.GetAttribute("reverse"); + obj.Reverse = reader.GetAttribute("reverse").AsYesNo(); obj.Ways = reader.GetAttribute("ways"); obj.Ways2 = reader.GetAttribute("ways2"); obj.Ways3 = reader.GetAttribute("ways3"); @@ -435,7 +435,7 @@ namespace SabreTools.Serialization.Readers obj.Name = reader.GetAttribute("name"); obj.Number = reader.GetAttribute("number"); - obj.Inverted = reader.GetAttribute("inverted"); + obj.Inverted = reader.GetAttribute("inverted").AsYesNo(); return obj; } @@ -557,9 +557,9 @@ namespace SabreTools.Serialization.Readers obj.Merge = reader.GetAttribute("merge"); obj.Region = reader.GetAttribute("region"); obj.Index = reader.GetAttribute("index"); - obj.Writable = reader.GetAttribute("writable"); + obj.Writable = reader.GetAttribute("writable").AsYesNo(); obj.Status = reader.GetAttribute("status"); - obj.Optional = reader.GetAttribute("optional"); + obj.Optional = reader.GetAttribute("optional").AsYesNo(); return obj; } @@ -576,7 +576,7 @@ namespace SabreTools.Serialization.Readers obj.Tag = reader.GetAttribute("tag"); obj.Type = reader.GetAttribute("type"); obj.Rotate = reader.GetAttribute("rotate"); - obj.FlipX = reader.GetAttribute("flipx"); + obj.FlipX = reader.GetAttribute("flipx").AsYesNo(); obj.Width = reader.GetAttribute("width"); obj.Height = reader.GetAttribute("height"); obj.Refresh = reader.GetAttribute("refresh"); @@ -607,10 +607,10 @@ namespace SabreTools.Serialization.Readers obj.Emulation = reader.GetAttribute("emulation"); obj.Cocktail = reader.GetAttribute("cocktail"); obj.SaveState = reader.GetAttribute("savestate"); - obj.RequiresArtwork = reader.GetAttribute("requiresartwork"); - obj.Unofficial = reader.GetAttribute("unofficial"); - obj.NoSoundHardware = reader.GetAttribute("nosoundhardware"); - obj.Incomplete = reader.GetAttribute("incomplete"); + obj.RequiresArtwork = reader.GetAttribute("requiresartwork").AsYesNo(); + obj.Unofficial = reader.GetAttribute("unofficial").AsYesNo(); + obj.NoSoundHardware = reader.GetAttribute("nosoundhardware").AsYesNo(); + obj.Incomplete = reader.GetAttribute("incomplete").AsYesNo(); return obj; } @@ -662,10 +662,10 @@ namespace SabreTools.Serialization.Readers obj.Name = reader.GetAttribute("name"); obj.SourceFile = reader.GetAttribute("sourcefile"); - obj.IsBios = reader.GetAttribute("isbios"); - obj.IsDevice = reader.GetAttribute("isdevice"); - obj.IsMechanical = reader.GetAttribute("ismechanical"); - obj.Runnable = reader.GetAttribute("runnable"); + obj.IsBios = reader.GetAttribute("isbios").AsYesNo(); + obj.IsDevice = reader.GetAttribute("isdevice").AsYesNo(); + obj.IsMechanical = reader.GetAttribute("ismechanical").AsYesNo(); + obj.Runnable = reader.GetAttribute("runnable").AsYesNo(); obj.CloneOf = reader.GetAttribute("cloneof"); obj.RomOf = reader.GetAttribute("romof"); obj.SampleOf = reader.GetAttribute("sampleof"); @@ -920,8 +920,8 @@ namespace SabreTools.Serialization.Readers { var obj = new Input(); - obj.Service = reader.GetAttribute("service"); - obj.Tilt = reader.GetAttribute("tilt"); + obj.Service = reader.GetAttribute("service").AsYesNo(); + obj.Tilt = reader.GetAttribute("tilt").AsYesNo(); obj.Players = reader.GetAttribute("players"); obj.ControlAttr = reader.GetAttribute("control"); obj.Buttons = reader.GetAttribute("buttons"); @@ -1053,9 +1053,9 @@ namespace SabreTools.Serialization.Readers obj.Region = reader.GetAttribute("region"); obj.Offset = reader.GetAttribute("offset"); obj.Status = reader.GetAttribute("status"); - obj.Optional = reader.GetAttribute("optional"); - obj.Dispose = reader.GetAttribute("dispose"); - obj.SoundOnly = reader.GetAttribute("soundonly"); + obj.Optional = reader.GetAttribute("optional").AsYesNo(); + obj.Dispose = reader.GetAttribute("dispose").AsYesNo(); + obj.SoundOnly = reader.GetAttribute("soundonly").AsYesNo(); return obj; } diff --git a/SabreTools.Serialization.Readers/Logiqx.cs b/SabreTools.Serialization.Readers/Logiqx.cs index cbead97a..603b21ee 100644 --- a/SabreTools.Serialization.Readers/Logiqx.cs +++ b/SabreTools.Serialization.Readers/Logiqx.cs @@ -71,7 +71,7 @@ namespace SabreTools.Serialization.Readers var obj = new Datafile(); obj.Build = reader.GetAttribute("build"); - obj.Debug = reader.GetAttribute("debug"); + obj.Debug = reader.GetAttribute("debug").AsYesNo(); // TODO: Fix this based on No-Intro DATs // obj.SchemaLocation = reader.GetAttribute("schemaLocation"); @@ -281,9 +281,9 @@ namespace SabreTools.Serialization.Readers obj.RomMode = reader.GetAttribute("rommode"); obj.BiosMode = reader.GetAttribute("biosmode"); obj.SampleMode = reader.GetAttribute("samplemode"); - obj.LockRomMode = reader.GetAttribute("lockrommode"); - obj.LockBiosMode = reader.GetAttribute("lockbiosmode"); - obj.LockSampleMode = reader.GetAttribute("locksamplemode"); + obj.LockRomMode = reader.GetAttribute("lockrommode").AsYesNo(); + obj.LockBiosMode = reader.GetAttribute("lockbiosmode").AsYesNo(); + obj.LockSampleMode = reader.GetAttribute("locksamplemode").AsYesNo(); return obj; } @@ -422,10 +422,10 @@ namespace SabreTools.Serialization.Readers obj.Emulation = reader.GetAttribute("emulation"); obj.Cocktail = reader.GetAttribute("cocktail"); obj.SaveState = reader.GetAttribute("savestate"); - obj.RequiresArtwork = reader.GetAttribute("requiresartwork"); - obj.Unofficial = reader.GetAttribute("unofficial"); - obj.NoSoundHardware = reader.GetAttribute("nosoundhardware"); - obj.Incomplete = reader.GetAttribute("incomplete"); + obj.RequiresArtwork = reader.GetAttribute("requiresartwork").AsYesNo(); + obj.Unofficial = reader.GetAttribute("unofficial").AsYesNo(); + obj.NoSoundHardware = reader.GetAttribute("nosoundhardware").AsYesNo(); + obj.Incomplete = reader.GetAttribute("incomplete").AsYesNo(); return obj; } @@ -447,9 +447,9 @@ namespace SabreTools.Serialization.Readers obj.Name = reader.GetAttribute("name"); obj.SourceFile = reader.GetAttribute("sourcefile"); - obj.IsBios = reader.GetAttribute("isbios"); - obj.IsDevice = reader.GetAttribute("isdevice"); - obj.IsMechanical = reader.GetAttribute("ismechanical"); + obj.IsBios = reader.GetAttribute("isbios").AsYesNo(); + obj.IsDevice = reader.GetAttribute("isdevice").AsYesNo(); + obj.IsMechanical = reader.GetAttribute("ismechanical").AsYesNo(); obj.CloneOf = reader.GetAttribute("cloneof"); obj.RomOf = reader.GetAttribute("romof"); obj.SampleOf = reader.GetAttribute("sampleof"); @@ -457,7 +457,7 @@ namespace SabreTools.Serialization.Readers obj.RebuildTo = reader.GetAttribute("rebuildto"); obj.Id = reader.GetAttribute("id"); obj.CloneOfId = reader.GetAttribute("cloneofid"); - obj.Runnable = reader.GetAttribute("runnable"); + obj.Runnable = reader.GetAttribute("runnable").AsYesNo(); List comments = []; List categories = []; @@ -710,8 +710,8 @@ namespace SabreTools.Serialization.Readers obj.Serial = reader.GetAttribute("serial"); obj.Header = reader.GetAttribute("header"); obj.Date = reader.GetAttribute("date"); - obj.Inverted = reader.GetAttribute("inverted"); - obj.MIA = reader.GetAttribute("mia"); + obj.Inverted = reader.GetAttribute("inverted").AsYesNo(); + obj.MIA = reader.GetAttribute("mia").AsYesNo(); return obj; } diff --git a/SabreTools.Serialization.Readers/M1.cs b/SabreTools.Serialization.Readers/M1.cs index 8e744ff4..961b6c6b 100644 --- a/SabreTools.Serialization.Readers/M1.cs +++ b/SabreTools.Serialization.Readers/M1.cs @@ -188,7 +188,7 @@ namespace SabreTools.Serialization.Readers obj.Name = reader.GetAttribute("name"); obj.Tag = reader.GetAttribute("tag"); obj.Type = reader.GetAttribute("type"); - obj.SoundOnly = reader.GetAttribute("soundonly"); + obj.SoundOnly = reader.GetAttribute("soundonly").AsYesNo(); obj.Clock = reader.GetAttribute("clock"); return obj; @@ -283,7 +283,7 @@ namespace SabreTools.Serialization.Readers obj.Name = reader.GetAttribute("name"); obj.Number = reader.GetAttribute("number"); - obj.Inverted = reader.GetAttribute("inverted"); + obj.Inverted = reader.GetAttribute("inverted").AsYesNo(); return obj; } @@ -346,7 +346,7 @@ namespace SabreTools.Serialization.Readers obj.Maximum = reader.GetAttribute("maximum"); obj.Sensitivity = reader.GetAttribute("sensitivity"); obj.KeyDelta = reader.GetAttribute("keydelta"); - obj.Reverse = reader.GetAttribute("reverse"); + obj.Reverse = reader.GetAttribute("reverse").AsYesNo(); obj.Ways = reader.GetAttribute("ways"); obj.Ways2 = reader.GetAttribute("ways2"); obj.Ways3 = reader.GetAttribute("ways3"); @@ -433,7 +433,7 @@ namespace SabreTools.Serialization.Readers obj.Name = reader.GetAttribute("name"); obj.Number = reader.GetAttribute("number"); - obj.Inverted = reader.GetAttribute("inverted"); + obj.Inverted = reader.GetAttribute("inverted").AsYesNo(); return obj; } @@ -555,9 +555,9 @@ namespace SabreTools.Serialization.Readers obj.Merge = reader.GetAttribute("merge"); obj.Region = reader.GetAttribute("region"); obj.Index = reader.GetAttribute("index"); - obj.Writable = reader.GetAttribute("writable"); + obj.Writable = reader.GetAttribute("writable").AsYesNo(); obj.Status = reader.GetAttribute("status"); - obj.Optional = reader.GetAttribute("optional"); + obj.Optional = reader.GetAttribute("optional").AsYesNo(); return obj; } @@ -574,7 +574,7 @@ namespace SabreTools.Serialization.Readers obj.Tag = reader.GetAttribute("tag"); obj.Type = reader.GetAttribute("type"); obj.Rotate = reader.GetAttribute("rotate"); - obj.FlipX = reader.GetAttribute("flipx"); + obj.FlipX = reader.GetAttribute("flipx").AsYesNo(); obj.Width = reader.GetAttribute("width"); obj.Height = reader.GetAttribute("height"); obj.Refresh = reader.GetAttribute("refresh"); @@ -605,10 +605,10 @@ namespace SabreTools.Serialization.Readers obj.Emulation = reader.GetAttribute("emulation"); obj.Cocktail = reader.GetAttribute("cocktail"); obj.SaveState = reader.GetAttribute("savestate"); - obj.RequiresArtwork = reader.GetAttribute("requiresartwork"); - obj.Unofficial = reader.GetAttribute("unofficial"); - obj.NoSoundHardware = reader.GetAttribute("nosoundhardware"); - obj.Incomplete = reader.GetAttribute("incomplete"); + obj.RequiresArtwork = reader.GetAttribute("requiresartwork").AsYesNo(); + obj.Unofficial = reader.GetAttribute("unofficial").AsYesNo(); + obj.NoSoundHardware = reader.GetAttribute("nosoundhardware").AsYesNo(); + obj.Incomplete = reader.GetAttribute("incomplete").AsYesNo(); return obj; } @@ -660,10 +660,10 @@ namespace SabreTools.Serialization.Readers obj.Name = reader.GetAttribute("name"); obj.SourceFile = reader.GetAttribute("sourcefile"); - obj.IsBios = reader.GetAttribute("isbios"); - obj.IsDevice = reader.GetAttribute("isdevice"); - obj.IsMechanical = reader.GetAttribute("ismechanical"); - obj.Runnable = reader.GetAttribute("runnable"); + obj.IsBios = reader.GetAttribute("isbios").AsYesNo(); + obj.IsDevice = reader.GetAttribute("isdevice").AsYesNo(); + obj.IsMechanical = reader.GetAttribute("ismechanical").AsYesNo(); + obj.Runnable = reader.GetAttribute("runnable").AsYesNo(); obj.CloneOf = reader.GetAttribute("cloneof"); obj.RomOf = reader.GetAttribute("romof"); obj.SampleOf = reader.GetAttribute("sampleof"); @@ -918,8 +918,8 @@ namespace SabreTools.Serialization.Readers { var obj = new Input(); - obj.Service = reader.GetAttribute("service"); - obj.Tilt = reader.GetAttribute("tilt"); + obj.Service = reader.GetAttribute("service").AsYesNo(); + obj.Tilt = reader.GetAttribute("tilt").AsYesNo(); obj.Players = reader.GetAttribute("players"); obj.ControlAttr = reader.GetAttribute("control"); obj.Buttons = reader.GetAttribute("buttons"); @@ -1051,9 +1051,9 @@ namespace SabreTools.Serialization.Readers obj.Region = reader.GetAttribute("region"); obj.Offset = reader.GetAttribute("offset"); obj.Status = reader.GetAttribute("status"); - obj.Optional = reader.GetAttribute("optional"); - obj.Dispose = reader.GetAttribute("dispose"); - obj.SoundOnly = reader.GetAttribute("soundonly"); + obj.Optional = reader.GetAttribute("optional").AsYesNo(); + obj.Dispose = reader.GetAttribute("dispose").AsYesNo(); + obj.SoundOnly = reader.GetAttribute("soundonly").AsYesNo(); return obj; } diff --git a/SabreTools.Serialization.Readers/Mess.cs b/SabreTools.Serialization.Readers/Mess.cs index 1a197ff2..c555b12e 100644 --- a/SabreTools.Serialization.Readers/Mess.cs +++ b/SabreTools.Serialization.Readers/Mess.cs @@ -188,7 +188,7 @@ namespace SabreTools.Serialization.Readers obj.Name = reader.GetAttribute("name"); obj.Tag = reader.GetAttribute("tag"); obj.Type = reader.GetAttribute("type"); - obj.SoundOnly = reader.GetAttribute("soundonly"); + obj.SoundOnly = reader.GetAttribute("soundonly").AsYesNo(); obj.Clock = reader.GetAttribute("clock"); return obj; @@ -283,7 +283,7 @@ namespace SabreTools.Serialization.Readers obj.Name = reader.GetAttribute("name"); obj.Number = reader.GetAttribute("number"); - obj.Inverted = reader.GetAttribute("inverted"); + obj.Inverted = reader.GetAttribute("inverted").AsYesNo(); return obj; } @@ -346,7 +346,7 @@ namespace SabreTools.Serialization.Readers obj.Maximum = reader.GetAttribute("maximum"); obj.Sensitivity = reader.GetAttribute("sensitivity"); obj.KeyDelta = reader.GetAttribute("keydelta"); - obj.Reverse = reader.GetAttribute("reverse"); + obj.Reverse = reader.GetAttribute("reverse").AsYesNo(); obj.Ways = reader.GetAttribute("ways"); obj.Ways2 = reader.GetAttribute("ways2"); obj.Ways3 = reader.GetAttribute("ways3"); @@ -433,7 +433,7 @@ namespace SabreTools.Serialization.Readers obj.Name = reader.GetAttribute("name"); obj.Number = reader.GetAttribute("number"); - obj.Inverted = reader.GetAttribute("inverted"); + obj.Inverted = reader.GetAttribute("inverted").AsYesNo(); return obj; } @@ -555,9 +555,9 @@ namespace SabreTools.Serialization.Readers obj.Merge = reader.GetAttribute("merge"); obj.Region = reader.GetAttribute("region"); obj.Index = reader.GetAttribute("index"); - obj.Writable = reader.GetAttribute("writable"); + obj.Writable = reader.GetAttribute("writable").AsYesNo(); obj.Status = reader.GetAttribute("status"); - obj.Optional = reader.GetAttribute("optional"); + obj.Optional = reader.GetAttribute("optional").AsYesNo(); return obj; } @@ -574,7 +574,7 @@ namespace SabreTools.Serialization.Readers obj.Tag = reader.GetAttribute("tag"); obj.Type = reader.GetAttribute("type"); obj.Rotate = reader.GetAttribute("rotate"); - obj.FlipX = reader.GetAttribute("flipx"); + obj.FlipX = reader.GetAttribute("flipx").AsYesNo(); obj.Width = reader.GetAttribute("width"); obj.Height = reader.GetAttribute("height"); obj.Refresh = reader.GetAttribute("refresh"); @@ -605,10 +605,10 @@ namespace SabreTools.Serialization.Readers obj.Emulation = reader.GetAttribute("emulation"); obj.Cocktail = reader.GetAttribute("cocktail"); obj.SaveState = reader.GetAttribute("savestate"); - obj.RequiresArtwork = reader.GetAttribute("requiresartwork"); - obj.Unofficial = reader.GetAttribute("unofficial"); - obj.NoSoundHardware = reader.GetAttribute("nosoundhardware"); - obj.Incomplete = reader.GetAttribute("incomplete"); + obj.RequiresArtwork = reader.GetAttribute("requiresartwork").AsYesNo(); + obj.Unofficial = reader.GetAttribute("unofficial").AsYesNo(); + obj.NoSoundHardware = reader.GetAttribute("nosoundhardware").AsYesNo(); + obj.Incomplete = reader.GetAttribute("incomplete").AsYesNo(); return obj; } @@ -660,10 +660,10 @@ namespace SabreTools.Serialization.Readers obj.Name = reader.GetAttribute("name"); obj.SourceFile = reader.GetAttribute("sourcefile"); - obj.IsBios = reader.GetAttribute("isbios"); - obj.IsDevice = reader.GetAttribute("isdevice"); - obj.IsMechanical = reader.GetAttribute("ismechanical"); - obj.Runnable = reader.GetAttribute("runnable"); + obj.IsBios = reader.GetAttribute("isbios").AsYesNo(); + obj.IsDevice = reader.GetAttribute("isdevice").AsYesNo(); + obj.IsMechanical = reader.GetAttribute("ismechanical").AsYesNo(); + obj.Runnable = reader.GetAttribute("runnable").AsYesNo(); obj.CloneOf = reader.GetAttribute("cloneof"); obj.RomOf = reader.GetAttribute("romof"); obj.SampleOf = reader.GetAttribute("sampleof"); @@ -918,8 +918,8 @@ namespace SabreTools.Serialization.Readers { var obj = new Input(); - obj.Service = reader.GetAttribute("service"); - obj.Tilt = reader.GetAttribute("tilt"); + obj.Service = reader.GetAttribute("service").AsYesNo(); + obj.Tilt = reader.GetAttribute("tilt").AsYesNo(); obj.Players = reader.GetAttribute("players"); obj.ControlAttr = reader.GetAttribute("control"); obj.Buttons = reader.GetAttribute("buttons"); @@ -1051,9 +1051,9 @@ namespace SabreTools.Serialization.Readers obj.Region = reader.GetAttribute("region"); obj.Offset = reader.GetAttribute("offset"); obj.Status = reader.GetAttribute("status"); - obj.Optional = reader.GetAttribute("optional"); - obj.Dispose = reader.GetAttribute("dispose"); - obj.SoundOnly = reader.GetAttribute("soundonly"); + obj.Optional = reader.GetAttribute("optional").AsYesNo(); + obj.Dispose = reader.GetAttribute("dispose").AsYesNo(); + obj.SoundOnly = reader.GetAttribute("soundonly").AsYesNo(); return obj; } diff --git a/SabreTools.Serialization.Readers/SoftwareList.cs b/SabreTools.Serialization.Readers/SoftwareList.cs index 649d0cce..5a2fe176 100644 --- a/SabreTools.Serialization.Readers/SoftwareList.cs +++ b/SabreTools.Serialization.Readers/SoftwareList.cs @@ -243,7 +243,7 @@ namespace SabreTools.Serialization.Readers obj.MD5 = reader.GetAttribute("md5"); obj.SHA1 = reader.GetAttribute("sha1"); obj.Status = reader.GetAttribute("status"); - obj.Writeable = reader.GetAttribute("writable"); + obj.Writeable = reader.GetAttribute("writable").AsYesNo(); return obj; } diff --git a/SabreTools.Serialization.Writers/AttractMode.cs b/SabreTools.Serialization.Writers/AttractMode.cs index 29898453..35b2be3d 100644 --- a/SabreTools.Serialization.Writers/AttractMode.cs +++ b/SabreTools.Serialization.Writers/AttractMode.cs @@ -186,7 +186,7 @@ namespace SabreTools.Serialization.Writers row.Tags, row.PlayedCount, row.PlayedTime, - row.FileIsAvailable, + row.FileIsAvailable.ToString()?.ToLowerInvariant(), ]; } else diff --git a/SabreTools.Serialization.Writers/ClrMamePro.cs b/SabreTools.Serialization.Writers/ClrMamePro.cs index 75ea39b9..8f3341d3 100644 --- a/SabreTools.Serialization.Writers/ClrMamePro.cs +++ b/SabreTools.Serialization.Writers/ClrMamePro.cs @@ -112,7 +112,7 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalStandalone("header", header.Header); writer.WriteOptionalStandalone("type", header.Type); writer.WriteOptionalStandalone("forcemerging", header.ForceMerging); - writer.WriteOptionalStandalone("forcezipping", header.ForceZipping); + writer.WriteOptionalStandalone("forcezipping", header.ForceZipping.FromYesNo()); writer.WriteOptionalStandalone("forcepacking", header.ForcePacking); writer.WriteEndElement(); // clrmamepro @@ -283,8 +283,8 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalAttributeString("serial", rom.Serial); writer.WriteOptionalAttributeString("header", rom.Header); writer.WriteOptionalAttributeString("date", rom.Date); - writer.WriteOptionalAttributeString("inverted", rom.Inverted); - writer.WriteOptionalAttributeString("mia", rom.MIA); + writer.WriteOptionalAttributeString("inverted", rom.Inverted.FromYesNo()); + writer.WriteOptionalAttributeString("mia", rom.MIA.FromYesNo()); writer.WriteEndElement(); // rom } } @@ -453,8 +453,8 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalAttributeString("control", input.Control); writer.WriteRequiredAttributeString("buttons", input.Buttons, throwOnError: true); writer.WriteOptionalAttributeString("coins", input.Coins); - writer.WriteOptionalAttributeString("tilt", input.Tilt); - writer.WriteOptionalAttributeString("service", input.Service); + writer.WriteOptionalAttributeString("tilt", input.Tilt.FromYesNo()); + writer.WriteOptionalAttributeString("service", input.Service.FromYesNo()); writer.WriteEndElement(); // input } diff --git a/SabreTools.Serialization.Writers/Listxml.cs b/SabreTools.Serialization.Writers/Listxml.cs index b834c5eb..c2960be4 100644 --- a/SabreTools.Serialization.Writers/Listxml.cs +++ b/SabreTools.Serialization.Writers/Listxml.cs @@ -50,7 +50,7 @@ namespace SabreTools.Serialization.Writers writer.WriteStartElement("mame"); writer.WriteOptionalAttributeString("build", obj.Build); - writer.WriteOptionalAttributeString("debug", obj.Debug); + writer.WriteOptionalAttributeString("debug", obj.Debug.FromYesNo()); writer.WriteRequiredAttributeString("mameconfig", obj.MameConfig); if (obj.Game is not null && obj.Game.Length > 0) @@ -126,7 +126,7 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("name", obj.Name); writer.WriteOptionalAttributeString("tag", obj.Tag); writer.WriteRequiredAttributeString("type", obj.Type); - writer.WriteOptionalAttributeString("soundonly", obj.SoundOnly); + writer.WriteOptionalAttributeString("soundonly", obj.SoundOnly.FromYesNo()); writer.WriteOptionalAttributeString("clock", obj.Clock); writer.WriteEndElement(); @@ -195,7 +195,7 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("name", obj.Name); writer.WriteRequiredAttributeString("number", obj.Number); - writer.WriteOptionalAttributeString("inverted", obj.Inverted); + writer.WriteOptionalAttributeString("inverted", obj.Inverted.FromYesNo()); writer.WriteEndElement(); } @@ -236,7 +236,7 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalAttributeString("maximum", obj.Maximum); writer.WriteOptionalAttributeString("sensitivity", obj.Sensitivity); writer.WriteOptionalAttributeString("keydelta", obj.KeyDelta); - writer.WriteOptionalAttributeString("reverse", obj.Reverse); + writer.WriteOptionalAttributeString("reverse", obj.Reverse.FromYesNo()); writer.WriteOptionalAttributeString("ways", obj.Ways); writer.WriteOptionalAttributeString("ways2", obj.Ways2); writer.WriteOptionalAttributeString("ways3", obj.Ways3); @@ -298,7 +298,7 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("name", obj.Name); writer.WriteRequiredAttributeString("number", obj.Number); - writer.WriteOptionalAttributeString("inverted", obj.Inverted); + writer.WriteOptionalAttributeString("inverted", obj.Inverted.FromYesNo()); writer.WriteEndElement(); } @@ -372,9 +372,9 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalAttributeString("merge", obj.Merge); writer.WriteOptionalAttributeString("region", obj.Region); writer.WriteOptionalAttributeString("index", obj.Index); - writer.WriteOptionalAttributeString("writable", obj.Writable); + writer.WriteOptionalAttributeString("writable", obj.Writable.FromYesNo()); writer.WriteOptionalAttributeString("status", obj.Status); - writer.WriteOptionalAttributeString("optional", obj.Optional); + writer.WriteOptionalAttributeString("optional", obj.Optional.FromYesNo()); writer.WriteEndElement(); } @@ -391,7 +391,7 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalAttributeString("tag", obj.Tag); writer.WriteRequiredAttributeString("type", obj.Type); writer.WriteOptionalAttributeString("rotate", obj.Rotate); - writer.WriteOptionalAttributeString("flipx", obj.FlipX); + writer.WriteOptionalAttributeString("flipx", obj.FlipX.FromYesNo()); writer.WriteOptionalAttributeString("width", obj.Width); writer.WriteOptionalAttributeString("height", obj.Height); writer.WriteRequiredAttributeString("refresh", obj.Refresh); @@ -422,10 +422,10 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("emulation", obj.Emulation); writer.WriteRequiredAttributeString("cocktail", obj.Cocktail); writer.WriteRequiredAttributeString("savestate", obj.SaveState); - writer.WriteOptionalAttributeString("requiresartwork", obj.RequiresArtwork); - writer.WriteOptionalAttributeString("unofficial", obj.Unofficial); - writer.WriteOptionalAttributeString("nosoundhardware", obj.NoSoundHardware); - writer.WriteOptionalAttributeString("incomplete", obj.Incomplete); + writer.WriteOptionalAttributeString("requiresartwork", obj.RequiresArtwork.FromYesNo()); + writer.WriteOptionalAttributeString("unofficial", obj.Unofficial.FromYesNo()); + writer.WriteOptionalAttributeString("nosoundhardware", obj.NoSoundHardware.FromYesNo()); + writer.WriteOptionalAttributeString("incomplete", obj.Incomplete.FromYesNo()); writer.WriteEndElement(); } @@ -476,10 +476,10 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("name", obj.Name); writer.WriteOptionalAttributeString("sourcefile", obj.SourceFile); - writer.WriteOptionalAttributeString("isbios", obj.IsBios); - writer.WriteOptionalAttributeString("isdevice", obj.IsDevice); - writer.WriteOptionalAttributeString("ismechanical", obj.IsMechanical); - writer.WriteOptionalAttributeString("runnable", obj.Runnable); + writer.WriteOptionalAttributeString("isbios", obj.IsBios.FromYesNo()); + writer.WriteOptionalAttributeString("isdevice", obj.IsDevice.FromYesNo()); + writer.WriteOptionalAttributeString("ismechanical", obj.IsMechanical.FromYesNo()); + writer.WriteOptionalAttributeString("runnable", obj.Runnable.FromYesNo()); writer.WriteOptionalAttributeString("cloneof", obj.CloneOf); writer.WriteOptionalAttributeString("romof", obj.RomOf); writer.WriteOptionalAttributeString("sampleof", obj.SampleOf); @@ -646,8 +646,8 @@ namespace SabreTools.Serialization.Writers { writer.WriteStartElement("input"); - writer.WriteOptionalAttributeString("service", obj.Service); - writer.WriteOptionalAttributeString("tilt", obj.Tilt); + writer.WriteOptionalAttributeString("service", obj.Service.FromYesNo()); + writer.WriteOptionalAttributeString("tilt", obj.Tilt.FromYesNo()); writer.WriteRequiredAttributeString("players", obj.Players); writer.WriteOptionalAttributeString("control", obj.ControlAttr); writer.WriteOptionalAttributeString("buttons", obj.Buttons); @@ -737,9 +737,9 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalAttributeString("region", obj.Region); writer.WriteOptionalAttributeString("offset", obj.Offset); writer.WriteOptionalAttributeString("status", obj.Status); - writer.WriteOptionalAttributeString("optional", obj.Optional); - writer.WriteOptionalAttributeString("dispose", obj.Dispose); - writer.WriteOptionalAttributeString("soundonly", obj.SoundOnly); + writer.WriteOptionalAttributeString("optional", obj.Optional.FromYesNo()); + writer.WriteOptionalAttributeString("dispose", obj.Dispose.FromYesNo()); + writer.WriteOptionalAttributeString("soundonly", obj.SoundOnly.FromYesNo()); writer.WriteEndElement(); } diff --git a/SabreTools.Serialization.Writers/Logiqx.cs b/SabreTools.Serialization.Writers/Logiqx.cs index ab668ac0..5b834f74 100644 --- a/SabreTools.Serialization.Writers/Logiqx.cs +++ b/SabreTools.Serialization.Writers/Logiqx.cs @@ -87,7 +87,7 @@ namespace SabreTools.Serialization.Writers writer.WriteStartElement("datafile"); writer.WriteOptionalAttributeString("build", obj.Build); - writer.WriteOptionalAttributeString("debug", obj.Debug); + writer.WriteOptionalAttributeString("debug", obj.Debug.FromYesNo()); // TODO: Fix schema location writing // writer.WriteOptionalAttributeString("schemaLocation", obj.SchemaLocation); @@ -178,9 +178,9 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalAttributeString("rommode", obj.RomMode); writer.WriteOptionalAttributeString("biosmode", obj.BiosMode); writer.WriteOptionalAttributeString("samplemode", obj.SampleMode); - writer.WriteOptionalAttributeString("lockrommode", obj.LockRomMode); - writer.WriteOptionalAttributeString("lockbiosmode", obj.LockBiosMode); - writer.WriteOptionalAttributeString("locksamplemode", obj.LockSampleMode); + writer.WriteOptionalAttributeString("lockrommode", obj.LockRomMode.FromYesNo()); + writer.WriteOptionalAttributeString("lockbiosmode", obj.LockBiosMode.FromYesNo()); + writer.WriteOptionalAttributeString("locksamplemode", obj.LockSampleMode.FromYesNo()); writer.WriteEndElement(); } @@ -295,10 +295,10 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("emulation", obj.Emulation); writer.WriteRequiredAttributeString("cocktail", obj.Cocktail); writer.WriteRequiredAttributeString("savestate", obj.SaveState); - writer.WriteOptionalAttributeString("requiresartwork", obj.RequiresArtwork); - writer.WriteOptionalAttributeString("unofficial", obj.Unofficial); - writer.WriteOptionalAttributeString("nosoundhardware", obj.NoSoundHardware); - writer.WriteOptionalAttributeString("incomplete", obj.Incomplete); + writer.WriteOptionalAttributeString("requiresartwork", obj.RequiresArtwork.FromYesNo()); + writer.WriteOptionalAttributeString("unofficial", obj.Unofficial.FromYesNo()); + writer.WriteOptionalAttributeString("nosoundhardware", obj.NoSoundHardware.FromYesNo()); + writer.WriteOptionalAttributeString("incomplete", obj.Incomplete.FromYesNo()); writer.WriteEndElement(); } @@ -319,9 +319,9 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("name", obj.Name); writer.WriteOptionalAttributeString("sourcefile", obj.SourceFile); - writer.WriteOptionalAttributeString("isbios", obj.IsBios); - writer.WriteOptionalAttributeString("isdevice", obj.IsDevice); - writer.WriteOptionalAttributeString("ismechanical", obj.IsMechanical); + writer.WriteOptionalAttributeString("isbios", obj.IsBios.FromYesNo()); + writer.WriteOptionalAttributeString("isdevice", obj.IsDevice.FromYesNo()); + writer.WriteOptionalAttributeString("ismechanical", obj.IsMechanical.FromYesNo()); writer.WriteOptionalAttributeString("cloneof", obj.CloneOf); writer.WriteOptionalAttributeString("romof", obj.RomOf); writer.WriteOptionalAttributeString("sampleof", obj.SampleOf); @@ -329,7 +329,7 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalAttributeString("rebuildto", obj.RebuildTo); writer.WriteOptionalAttributeString("id", obj.Id); writer.WriteOptionalAttributeString("cloneofid", obj.CloneOfId); - writer.WriteOptionalAttributeString("runnable", obj.Runnable); + writer.WriteOptionalAttributeString("runnable", obj.Runnable.FromYesNo()); if (obj.Comment is not null && obj.Comment.Length > 0) { @@ -503,8 +503,8 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalAttributeString("serial", obj.Serial); writer.WriteOptionalAttributeString("header", obj.Header); writer.WriteOptionalAttributeString("date", obj.Date); - writer.WriteOptionalAttributeString("inverted", obj.Inverted); - writer.WriteOptionalAttributeString("mia", obj.MIA); + writer.WriteOptionalAttributeString("inverted", obj.Inverted.FromYesNo()); + writer.WriteOptionalAttributeString("mia", obj.MIA.FromYesNo()); writer.WriteEndElement(); } diff --git a/SabreTools.Serialization.Writers/M1.cs b/SabreTools.Serialization.Writers/M1.cs index cb9c879c..ea04975f 100644 --- a/SabreTools.Serialization.Writers/M1.cs +++ b/SabreTools.Serialization.Writers/M1.cs @@ -124,7 +124,7 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("name", obj.Name); writer.WriteOptionalAttributeString("tag", obj.Tag); writer.WriteRequiredAttributeString("type", obj.Type); - writer.WriteOptionalAttributeString("soundonly", obj.SoundOnly); + writer.WriteOptionalAttributeString("soundonly", obj.SoundOnly.FromYesNo()); writer.WriteOptionalAttributeString("clock", obj.Clock); writer.WriteEndElement(); @@ -193,7 +193,7 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("name", obj.Name); writer.WriteRequiredAttributeString("number", obj.Number); - writer.WriteOptionalAttributeString("inverted", obj.Inverted); + writer.WriteOptionalAttributeString("inverted", obj.Inverted.FromYesNo()); writer.WriteEndElement(); } @@ -234,7 +234,7 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalAttributeString("maximum", obj.Maximum); writer.WriteOptionalAttributeString("sensitivity", obj.Sensitivity); writer.WriteOptionalAttributeString("keydelta", obj.KeyDelta); - writer.WriteOptionalAttributeString("reverse", obj.Reverse); + writer.WriteOptionalAttributeString("reverse", obj.Reverse.FromYesNo()); writer.WriteOptionalAttributeString("ways", obj.Ways); writer.WriteOptionalAttributeString("ways2", obj.Ways2); writer.WriteOptionalAttributeString("ways3", obj.Ways3); @@ -296,7 +296,7 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("name", obj.Name); writer.WriteRequiredAttributeString("number", obj.Number); - writer.WriteOptionalAttributeString("inverted", obj.Inverted); + writer.WriteOptionalAttributeString("inverted", obj.Inverted.FromYesNo()); writer.WriteEndElement(); } @@ -370,9 +370,9 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalAttributeString("merge", obj.Merge); writer.WriteOptionalAttributeString("region", obj.Region); writer.WriteOptionalAttributeString("index", obj.Index); - writer.WriteOptionalAttributeString("writable", obj.Writable); + writer.WriteOptionalAttributeString("writable", obj.Writable.FromYesNo()); writer.WriteOptionalAttributeString("status", obj.Status); - writer.WriteOptionalAttributeString("optional", obj.Optional); + writer.WriteOptionalAttributeString("optional", obj.Optional.FromYesNo()); writer.WriteEndElement(); } @@ -389,7 +389,7 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalAttributeString("tag", obj.Tag); writer.WriteRequiredAttributeString("type", obj.Type); writer.WriteOptionalAttributeString("rotate", obj.Rotate); - writer.WriteOptionalAttributeString("flipx", obj.FlipX); + writer.WriteOptionalAttributeString("flipx", obj.FlipX.FromYesNo()); writer.WriteOptionalAttributeString("width", obj.Width); writer.WriteOptionalAttributeString("height", obj.Height); writer.WriteRequiredAttributeString("refresh", obj.Refresh); @@ -420,10 +420,10 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("emulation", obj.Emulation); writer.WriteRequiredAttributeString("cocktail", obj.Cocktail); writer.WriteRequiredAttributeString("savestate", obj.SaveState); - writer.WriteOptionalAttributeString("requiresartwork", obj.RequiresArtwork); - writer.WriteOptionalAttributeString("unofficial", obj.Unofficial); - writer.WriteOptionalAttributeString("nosoundhardware", obj.NoSoundHardware); - writer.WriteOptionalAttributeString("incomplete", obj.Incomplete); + writer.WriteOptionalAttributeString("requiresartwork", obj.RequiresArtwork.FromYesNo()); + writer.WriteOptionalAttributeString("unofficial", obj.Unofficial.FromYesNo()); + writer.WriteOptionalAttributeString("nosoundhardware", obj.NoSoundHardware.FromYesNo()); + writer.WriteOptionalAttributeString("incomplete", obj.Incomplete.FromYesNo()); writer.WriteEndElement(); } @@ -474,10 +474,10 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("name", obj.Name); writer.WriteOptionalAttributeString("sourcefile", obj.SourceFile); - writer.WriteOptionalAttributeString("isbios", obj.IsBios); - writer.WriteOptionalAttributeString("isdevice", obj.IsDevice); - writer.WriteOptionalAttributeString("ismechanical", obj.IsMechanical); - writer.WriteOptionalAttributeString("runnable", obj.Runnable); + writer.WriteOptionalAttributeString("isbios", obj.IsBios.FromYesNo()); + writer.WriteOptionalAttributeString("isdevice", obj.IsDevice.FromYesNo()); + writer.WriteOptionalAttributeString("ismechanical", obj.IsMechanical.FromYesNo()); + writer.WriteOptionalAttributeString("runnable", obj.Runnable.FromYesNo()); writer.WriteOptionalAttributeString("cloneof", obj.CloneOf); writer.WriteOptionalAttributeString("romof", obj.RomOf); writer.WriteOptionalAttributeString("sampleof", obj.SampleOf); @@ -644,8 +644,8 @@ namespace SabreTools.Serialization.Writers { writer.WriteStartElement("input"); - writer.WriteOptionalAttributeString("service", obj.Service); - writer.WriteOptionalAttributeString("tilt", obj.Tilt); + writer.WriteOptionalAttributeString("service", obj.Service.FromYesNo()); + writer.WriteOptionalAttributeString("tilt", obj.Tilt.FromYesNo()); writer.WriteRequiredAttributeString("players", obj.Players); writer.WriteOptionalAttributeString("control", obj.ControlAttr); writer.WriteOptionalAttributeString("buttons", obj.Buttons); @@ -735,9 +735,9 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalAttributeString("region", obj.Region); writer.WriteOptionalAttributeString("offset", obj.Offset); writer.WriteOptionalAttributeString("status", obj.Status); - writer.WriteOptionalAttributeString("optional", obj.Optional); - writer.WriteOptionalAttributeString("dispose", obj.Dispose); - writer.WriteOptionalAttributeString("soundonly", obj.SoundOnly); + writer.WriteOptionalAttributeString("optional", obj.Optional.FromYesNo()); + writer.WriteOptionalAttributeString("dispose", obj.Dispose.FromYesNo()); + writer.WriteOptionalAttributeString("soundonly", obj.SoundOnly.FromYesNo()); writer.WriteEndElement(); } diff --git a/SabreTools.Serialization.Writers/Mess.cs b/SabreTools.Serialization.Writers/Mess.cs index 698bd133..df019522 100644 --- a/SabreTools.Serialization.Writers/Mess.cs +++ b/SabreTools.Serialization.Writers/Mess.cs @@ -124,7 +124,7 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("name", obj.Name); writer.WriteOptionalAttributeString("tag", obj.Tag); writer.WriteRequiredAttributeString("type", obj.Type); - writer.WriteOptionalAttributeString("soundonly", obj.SoundOnly); + writer.WriteOptionalAttributeString("soundonly", obj.SoundOnly.FromYesNo()); writer.WriteOptionalAttributeString("clock", obj.Clock); writer.WriteEndElement(); @@ -193,7 +193,7 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("name", obj.Name); writer.WriteRequiredAttributeString("number", obj.Number); - writer.WriteOptionalAttributeString("inverted", obj.Inverted); + writer.WriteOptionalAttributeString("inverted", obj.Inverted.FromYesNo()); writer.WriteEndElement(); } @@ -234,7 +234,7 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalAttributeString("maximum", obj.Maximum); writer.WriteOptionalAttributeString("sensitivity", obj.Sensitivity); writer.WriteOptionalAttributeString("keydelta", obj.KeyDelta); - writer.WriteOptionalAttributeString("reverse", obj.Reverse); + writer.WriteOptionalAttributeString("reverse", obj.Reverse.FromYesNo()); writer.WriteOptionalAttributeString("ways", obj.Ways); writer.WriteOptionalAttributeString("ways2", obj.Ways2); writer.WriteOptionalAttributeString("ways3", obj.Ways3); @@ -296,7 +296,7 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("name", obj.Name); writer.WriteRequiredAttributeString("number", obj.Number); - writer.WriteOptionalAttributeString("inverted", obj.Inverted); + writer.WriteOptionalAttributeString("inverted", obj.Inverted.FromYesNo()); writer.WriteEndElement(); } @@ -370,9 +370,9 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalAttributeString("merge", obj.Merge); writer.WriteOptionalAttributeString("region", obj.Region); writer.WriteOptionalAttributeString("index", obj.Index); - writer.WriteOptionalAttributeString("writable", obj.Writable); + writer.WriteOptionalAttributeString("writable", obj.Writable.FromYesNo()); writer.WriteOptionalAttributeString("status", obj.Status); - writer.WriteOptionalAttributeString("optional", obj.Optional); + writer.WriteOptionalAttributeString("optional", obj.Optional.FromYesNo()); writer.WriteEndElement(); } @@ -389,7 +389,7 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalAttributeString("tag", obj.Tag); writer.WriteRequiredAttributeString("type", obj.Type); writer.WriteOptionalAttributeString("rotate", obj.Rotate); - writer.WriteOptionalAttributeString("flipx", obj.FlipX); + writer.WriteOptionalAttributeString("flipx", obj.FlipX.FromYesNo()); writer.WriteOptionalAttributeString("width", obj.Width); writer.WriteOptionalAttributeString("height", obj.Height); writer.WriteRequiredAttributeString("refresh", obj.Refresh); @@ -420,10 +420,10 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("emulation", obj.Emulation); writer.WriteRequiredAttributeString("cocktail", obj.Cocktail); writer.WriteRequiredAttributeString("savestate", obj.SaveState); - writer.WriteOptionalAttributeString("requiresartwork", obj.RequiresArtwork); - writer.WriteOptionalAttributeString("unofficial", obj.Unofficial); - writer.WriteOptionalAttributeString("nosoundhardware", obj.NoSoundHardware); - writer.WriteOptionalAttributeString("incomplete", obj.Incomplete); + writer.WriteOptionalAttributeString("requiresartwork", obj.RequiresArtwork.FromYesNo()); + writer.WriteOptionalAttributeString("unofficial", obj.Unofficial.FromYesNo()); + writer.WriteOptionalAttributeString("nosoundhardware", obj.NoSoundHardware.FromYesNo()); + writer.WriteOptionalAttributeString("incomplete", obj.Incomplete.FromYesNo()); writer.WriteEndElement(); } @@ -474,10 +474,10 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("name", obj.Name); writer.WriteOptionalAttributeString("sourcefile", obj.SourceFile); - writer.WriteOptionalAttributeString("isbios", obj.IsBios); - writer.WriteOptionalAttributeString("isdevice", obj.IsDevice); - writer.WriteOptionalAttributeString("ismechanical", obj.IsMechanical); - writer.WriteOptionalAttributeString("runnable", obj.Runnable); + writer.WriteOptionalAttributeString("isbios", obj.IsBios.FromYesNo()); + writer.WriteOptionalAttributeString("isdevice", obj.IsDevice.FromYesNo()); + writer.WriteOptionalAttributeString("ismechanical", obj.IsMechanical.FromYesNo()); + writer.WriteOptionalAttributeString("runnable", obj.Runnable.FromYesNo()); writer.WriteOptionalAttributeString("cloneof", obj.CloneOf); writer.WriteOptionalAttributeString("romof", obj.RomOf); writer.WriteOptionalAttributeString("sampleof", obj.SampleOf); @@ -644,8 +644,8 @@ namespace SabreTools.Serialization.Writers { writer.WriteStartElement("input"); - writer.WriteOptionalAttributeString("service", obj.Service); - writer.WriteOptionalAttributeString("tilt", obj.Tilt); + writer.WriteOptionalAttributeString("service", obj.Service.FromYesNo()); + writer.WriteOptionalAttributeString("tilt", obj.Tilt.FromYesNo()); writer.WriteRequiredAttributeString("players", obj.Players); writer.WriteOptionalAttributeString("control", obj.ControlAttr); writer.WriteOptionalAttributeString("buttons", obj.Buttons); @@ -735,9 +735,9 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalAttributeString("region", obj.Region); writer.WriteOptionalAttributeString("offset", obj.Offset); writer.WriteOptionalAttributeString("status", obj.Status); - writer.WriteOptionalAttributeString("optional", obj.Optional); - writer.WriteOptionalAttributeString("dispose", obj.Dispose); - writer.WriteOptionalAttributeString("soundonly", obj.SoundOnly); + writer.WriteOptionalAttributeString("optional", obj.Optional.FromYesNo()); + writer.WriteOptionalAttributeString("dispose", obj.Dispose.FromYesNo()); + writer.WriteOptionalAttributeString("soundonly", obj.SoundOnly.FromYesNo()); writer.WriteEndElement(); } diff --git a/SabreTools.Serialization.Writers/SoftwareList.cs b/SabreTools.Serialization.Writers/SoftwareList.cs index e7b316bf..9cd31522 100644 --- a/SabreTools.Serialization.Writers/SoftwareList.cs +++ b/SabreTools.Serialization.Writers/SoftwareList.cs @@ -172,7 +172,7 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalAttributeString("md5", obj.MD5); writer.WriteOptionalAttributeString("sha1", obj.SHA1); writer.WriteOptionalAttributeString("status", obj.Status); - writer.WriteOptionalAttributeString("writable", obj.Writeable); + writer.WriteOptionalAttributeString("writable", obj.Writeable.FromYesNo()); writer.WriteEndElement(); } From 4c9ff19cf379f6b52e4f223f1b97c82c79075823 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Wed, 1 Apr 2026 22:06:24 -0400 Subject: [PATCH 009/142] Runnable is Runnable --- SabreTools.Data.Models/Listxml/GameBase.cs | 3 ++- SabreTools.Data.Models/Logiqx/GameBase.cs | 3 ++- SabreTools.Data.Models/Metadata/Machine.cs | 3 +-- .../DatFileTests.FromMetadata.cs | 4 ++-- SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs | 2 +- SabreTools.Metadata.DatItems/Machine.cs | 2 +- SabreTools.Metadata.Filter/FilterObject.cs | 2 +- SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs | 4 ++-- SabreTools.Serialization.CrossModel.Test/LogiqxTests.cs | 4 ++-- SabreTools.Serialization.CrossModel.Test/M1Tests.cs | 4 ++-- SabreTools.Serialization.CrossModel.Test/MessTests.cs | 4 ++-- SabreTools.Serialization.Readers.Test/ListxmlTests.cs | 4 ++-- SabreTools.Serialization.Readers.Test/LogiqxTests.cs | 4 ++-- SabreTools.Serialization.Readers.Test/M1Tests.cs | 4 ++-- SabreTools.Serialization.Readers.Test/MessTests.cs | 4 ++-- SabreTools.Serialization.Readers/Listxml.cs | 2 +- SabreTools.Serialization.Readers/Logiqx.cs | 2 +- SabreTools.Serialization.Readers/M1.cs | 2 +- SabreTools.Serialization.Readers/Mess.cs | 2 +- SabreTools.Serialization.Writers/Listxml.cs | 2 +- SabreTools.Serialization.Writers/Logiqx.cs | 2 +- SabreTools.Serialization.Writers/M1.cs | 2 +- SabreTools.Serialization.Writers/Mess.cs | 2 +- 23 files changed, 34 insertions(+), 33 deletions(-) diff --git a/SabreTools.Data.Models/Listxml/GameBase.cs b/SabreTools.Data.Models/Listxml/GameBase.cs index 6de1140e..de08a58b 100644 --- a/SabreTools.Data.Models/Listxml/GameBase.cs +++ b/SabreTools.Data.Models/Listxml/GameBase.cs @@ -1,5 +1,6 @@ using System.Xml; using System.Xml.Serialization; +using SabreTools.Data.Models.Metadata; namespace SabreTools.Data.Models.Listxml { @@ -30,7 +31,7 @@ namespace SabreTools.Data.Models.Listxml /// (yes|no) "no" [XmlAttribute("runnable")] - public bool? Runnable { get; set; } + public Runnable? Runnable { get; set; } [XmlAttribute("cloneof")] public string? CloneOf { get; set; } diff --git a/SabreTools.Data.Models/Logiqx/GameBase.cs b/SabreTools.Data.Models/Logiqx/GameBase.cs index be9ed2c6..49fb6d26 100644 --- a/SabreTools.Data.Models/Logiqx/GameBase.cs +++ b/SabreTools.Data.Models/Logiqx/GameBase.cs @@ -1,5 +1,6 @@ using System.Xml; using System.Xml.Serialization; +using SabreTools.Data.Models.Metadata; namespace SabreTools.Data.Models.Logiqx { @@ -52,7 +53,7 @@ namespace SabreTools.Data.Models.Logiqx /// (no|partial|yes) "no" [XmlAttribute("runnable")] - public bool? Runnable { get; set; } + public Runnable? Runnable { get; set; } [XmlElement("comment")] public string[]? Comment { get; set; } diff --git a/SabreTools.Data.Models/Metadata/Machine.cs b/SabreTools.Data.Models/Metadata/Machine.cs index e6355b33..ab98564c 100644 --- a/SabreTools.Data.Models/Metadata/Machine.cs +++ b/SabreTools.Data.Models/Metadata/Machine.cs @@ -20,8 +20,7 @@ namespace SabreTools.Data.Models.Metadata public string? Name { get; set; } /// (yes|partial|no) "no" - /// TODO: Replace with Runnable type - public bool? Runnable { get; set; } + public Runnable? Runnable { get; set; } #endregion diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs index 9129396f..9bdc43cd 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs @@ -312,7 +312,7 @@ namespace SabreTools.Metadata.DatFiles.Test [Data.Models.Metadata.Machine.RomKey] = new Data.Models.Metadata.Rom[] { CreateMetadataRom() }, [Data.Models.Metadata.Machine.RomOfKey] = "romof", [Data.Models.Metadata.Machine.RotationKey] = "rotation", - Runnable = true, + Runnable = Data.Models.Metadata.Runnable.Yes, [Data.Models.Metadata.Machine.SampleKey] = new Data.Models.Metadata.Sample[] { CreateMetadataSample() }, [Data.Models.Metadata.Machine.SampleOfKey] = "sampleof", [Data.Models.Metadata.Machine.SaveTypeKey] = "savetype", @@ -1125,7 +1125,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("releasenumber", machine.ReadString(Data.Models.Metadata.Machine.ReleaseNumberKey)); Assert.Equal("romof", machine.ReadString(Data.Models.Metadata.Machine.RomOfKey)); Assert.Equal("rotation", machine.ReadString(Data.Models.Metadata.Machine.RotationKey)); - Assert.Equal(true, machine.Runnable); + Assert.Equal(Data.Models.Metadata.Runnable.Yes, machine.Runnable); Assert.Equal("sampleof", machine.ReadString(Data.Models.Metadata.Machine.SampleOfKey)); Assert.Equal("savetype", machine.ReadString(Data.Models.Metadata.Machine.SaveTypeKey)); Assert.Equal("sourcefile", machine.ReadString(Data.Models.Metadata.Machine.SourceFileKey)); diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs index 21afa4e8..bb8b379e 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs @@ -460,7 +460,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("releasenumber", machine.ReadString(Data.Models.Metadata.Machine.ReleaseNumberKey)); Assert.Equal("romof", machine.ReadString(Data.Models.Metadata.Machine.RomOfKey)); Assert.Equal("rotation", machine.ReadString(Data.Models.Metadata.Machine.RotationKey)); - Assert.Equal(true, machine.Runnable); + Assert.Equal(Data.Models.Metadata.Runnable.Yes, machine.Runnable); Assert.Equal("sampleof", machine.ReadString(Data.Models.Metadata.Machine.SampleOfKey)); Assert.Equal("savetype", machine.ReadString(Data.Models.Metadata.Machine.SaveTypeKey)); Assert.Equal("sourcefile", machine.ReadString(Data.Models.Metadata.Machine.SourceFileKey)); diff --git a/SabreTools.Metadata.DatItems/Machine.cs b/SabreTools.Metadata.DatItems/Machine.cs index 28657240..8f032c47 100644 --- a/SabreTools.Metadata.DatItems/Machine.cs +++ b/SabreTools.Metadata.DatItems/Machine.cs @@ -33,7 +33,7 @@ namespace SabreTools.Metadata.DatItems set => _internal.IsMechanical = value; } - public bool? Runnable + public Data.Models.Metadata.Runnable? Runnable { get => _internal.Runnable; set => _internal.Runnable = value; diff --git a/SabreTools.Metadata.Filter/FilterObject.cs b/SabreTools.Metadata.Filter/FilterObject.cs index f673a530..958c73dc 100644 --- a/SabreTools.Metadata.Filter/FilterObject.cs +++ b/SabreTools.Metadata.Filter/FilterObject.cs @@ -445,7 +445,7 @@ namespace SabreTools.Metadata.Filter checkValue = item.IsMechanical.FromYesNo(); return true; case Machine item when Key.FieldName == "runnable": - checkValue = item.Runnable.FromYesNo(); + checkValue = item.Runnable?.AsStringValue(); return true; case RamOption item when Key.FieldName == "default": diff --git a/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs b/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs index bb92df2d..624dc8fb 100644 --- a/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs @@ -335,7 +335,7 @@ namespace SabreTools.Serialization.CrossModel.Test gameBase.IsBios = true; gameBase.IsDevice = true; gameBase.IsMechanical = true; - gameBase.Runnable = true; + gameBase.Runnable = Data.Models.Metadata.Runnable.Yes; gameBase.CloneOf = "XXXXXX"; gameBase.RomOf = "XXXXXX"; gameBase.SampleOf = "XXXXXX"; @@ -384,7 +384,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal(true, gb.IsBios); Assert.Equal(true, gb.IsDevice); Assert.Equal(true, gb.IsMechanical); - Assert.Equal(true, gb.Runnable); + Assert.Equal(Data.Models.Metadata.Runnable.Yes, gb.Runnable); Assert.Equal("XXXXXX", gb.CloneOf); Assert.Equal("XXXXXX", gb.RomOf); Assert.Equal("XXXXXX", gb.SampleOf); diff --git a/SabreTools.Serialization.CrossModel.Test/LogiqxTests.cs b/SabreTools.Serialization.CrossModel.Test/LogiqxTests.cs index 10a6e549..c4c50094 100644 --- a/SabreTools.Serialization.CrossModel.Test/LogiqxTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/LogiqxTests.cs @@ -242,7 +242,7 @@ namespace SabreTools.Serialization.CrossModel.Test gameBase.RebuildTo = "XXXXXX"; gameBase.Id = "XXXXXX"; gameBase.CloneOfId = "XXXXXX"; - gameBase.Runnable = true; + gameBase.Runnable = Data.Models.Metadata.Runnable.Yes; gameBase.Comment = ["XXXXXX"]; gameBase.Description = "XXXXXX"; gameBase.Year = "XXXXXX"; @@ -355,7 +355,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", gb.RebuildTo); Assert.Equal("XXXXXX", gb.Id); Assert.Equal("XXXXXX", gb.CloneOfId); - Assert.Equal(true, gb.Runnable); + Assert.Equal(Data.Models.Metadata.Runnable.Yes, gb.Runnable); Assert.NotNull(gb.Comment); string comment = Assert.Single(gb.Comment); diff --git a/SabreTools.Serialization.CrossModel.Test/M1Tests.cs b/SabreTools.Serialization.CrossModel.Test/M1Tests.cs index f59e6ada..8d2be43f 100644 --- a/SabreTools.Serialization.CrossModel.Test/M1Tests.cs +++ b/SabreTools.Serialization.CrossModel.Test/M1Tests.cs @@ -331,7 +331,7 @@ namespace SabreTools.Serialization.CrossModel.Test gameBase.IsBios = true; gameBase.IsDevice = true; gameBase.IsMechanical = true; - gameBase.Runnable = true; + gameBase.Runnable = Data.Models.Metadata.Runnable.Yes; gameBase.CloneOf = "XXXXXX"; gameBase.RomOf = "XXXXXX"; gameBase.SampleOf = "XXXXXX"; @@ -378,7 +378,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal(true, gb.IsBios); Assert.Equal(true, gb.IsDevice); Assert.Equal(true, gb.IsMechanical); - Assert.Equal(true, gb.Runnable); + Assert.Equal(Data.Models.Metadata.Runnable.Yes, gb.Runnable); Assert.Equal("XXXXXX", gb.CloneOf); Assert.Equal("XXXXXX", gb.RomOf); Assert.Equal("XXXXXX", gb.SampleOf); diff --git a/SabreTools.Serialization.CrossModel.Test/MessTests.cs b/SabreTools.Serialization.CrossModel.Test/MessTests.cs index f4bf8f47..1088d26f 100644 --- a/SabreTools.Serialization.CrossModel.Test/MessTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/MessTests.cs @@ -331,7 +331,7 @@ namespace SabreTools.Serialization.CrossModel.Test gameBase.IsBios = true; gameBase.IsDevice = true; gameBase.IsMechanical = true; - gameBase.Runnable = true; + gameBase.Runnable = Data.Models.Metadata.Runnable.Yes; gameBase.CloneOf = "XXXXXX"; gameBase.RomOf = "XXXXXX"; gameBase.SampleOf = "XXXXXX"; @@ -378,7 +378,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal(true, gb.IsBios); Assert.Equal(true, gb.IsDevice); Assert.Equal(true, gb.IsMechanical); - Assert.Equal(true, gb.Runnable); + Assert.Equal(Data.Models.Metadata.Runnable.Yes, gb.Runnable); Assert.Equal("XXXXXX", gb.CloneOf); Assert.Equal("XXXXXX", gb.RomOf); Assert.Equal("XXXXXX", gb.SampleOf); diff --git a/SabreTools.Serialization.Readers.Test/ListxmlTests.cs b/SabreTools.Serialization.Readers.Test/ListxmlTests.cs index 0b58b6b7..835a4db2 100644 --- a/SabreTools.Serialization.Readers.Test/ListxmlTests.cs +++ b/SabreTools.Serialization.Readers.Test/ListxmlTests.cs @@ -402,7 +402,7 @@ namespace SabreTools.Serialization.Readers.Test gameBase.IsBios = true; gameBase.IsDevice = true; gameBase.IsMechanical = true; - gameBase.Runnable = true; + gameBase.Runnable = Data.Models.Metadata.Runnable.Yes; gameBase.CloneOf = "XXXXXX"; gameBase.RomOf = "XXXXXX"; gameBase.SampleOf = "XXXXXX"; @@ -451,7 +451,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal(true, gb.IsBios); Assert.Equal(true, gb.IsDevice); Assert.Equal(true, gb.IsMechanical); - Assert.Equal(true, gb.Runnable); + Assert.Equal(Data.Models.Metadata.Runnable.Yes, gb.Runnable); Assert.Equal("XXXXXX", gb.CloneOf); Assert.Equal("XXXXXX", gb.RomOf); Assert.Equal("XXXXXX", gb.SampleOf); diff --git a/SabreTools.Serialization.Readers.Test/LogiqxTests.cs b/SabreTools.Serialization.Readers.Test/LogiqxTests.cs index 4cf70aed..0b461d03 100644 --- a/SabreTools.Serialization.Readers.Test/LogiqxTests.cs +++ b/SabreTools.Serialization.Readers.Test/LogiqxTests.cs @@ -307,7 +307,7 @@ namespace SabreTools.Serialization.Readers.Test gameBase.RebuildTo = "XXXXXX"; gameBase.Id = "XXXXXX"; gameBase.CloneOfId = "XXXXXX"; - gameBase.Runnable = true; + gameBase.Runnable = Data.Models.Metadata.Runnable.Yes; gameBase.Comment = ["XXXXXX"]; gameBase.Description = "XXXXXX"; gameBase.Year = "XXXXXX"; @@ -405,7 +405,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", gb.RebuildTo); Assert.Equal("XXXXXX", gb.Id); Assert.Equal("XXXXXX", gb.CloneOfId); - Assert.Equal(true, gb.Runnable); + Assert.Equal(Data.Models.Metadata.Runnable.Yes, gb.Runnable); Assert.NotNull(gb.Comment); string comment = Assert.Single(gb.Comment); diff --git a/SabreTools.Serialization.Readers.Test/M1Tests.cs b/SabreTools.Serialization.Readers.Test/M1Tests.cs index 5f955026..aa00abaf 100644 --- a/SabreTools.Serialization.Readers.Test/M1Tests.cs +++ b/SabreTools.Serialization.Readers.Test/M1Tests.cs @@ -398,7 +398,7 @@ namespace SabreTools.Serialization.Readers.Test gameBase.IsBios = true; gameBase.IsDevice = true; gameBase.IsMechanical = true; - gameBase.Runnable = true; + gameBase.Runnable = Data.Models.Metadata.Runnable.Yes; gameBase.CloneOf = "XXXXXX"; gameBase.RomOf = "XXXXXX"; gameBase.SampleOf = "XXXXXX"; @@ -445,7 +445,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal(true, gb.IsBios); Assert.Equal(true, gb.IsDevice); Assert.Equal(true, gb.IsMechanical); - Assert.Equal(true, gb.Runnable); + Assert.Equal(Data.Models.Metadata.Runnable.Yes, gb.Runnable); Assert.Equal("XXXXXX", gb.CloneOf); Assert.Equal("XXXXXX", gb.RomOf); Assert.Equal("XXXXXX", gb.SampleOf); diff --git a/SabreTools.Serialization.Readers.Test/MessTests.cs b/SabreTools.Serialization.Readers.Test/MessTests.cs index 710ee7ea..1b4d77dd 100644 --- a/SabreTools.Serialization.Readers.Test/MessTests.cs +++ b/SabreTools.Serialization.Readers.Test/MessTests.cs @@ -398,7 +398,7 @@ namespace SabreTools.Serialization.Readers.Test gameBase.IsBios = true; gameBase.IsDevice = true; gameBase.IsMechanical = true; - gameBase.Runnable = true; + gameBase.Runnable = Data.Models.Metadata.Runnable.Yes; gameBase.CloneOf = "XXXXXX"; gameBase.RomOf = "XXXXXX"; gameBase.SampleOf = "XXXXXX"; @@ -445,7 +445,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal(true, gb.IsBios); Assert.Equal(true, gb.IsDevice); Assert.Equal(true, gb.IsMechanical); - Assert.Equal(true, gb.Runnable); + Assert.Equal(Data.Models.Metadata.Runnable.Yes, gb.Runnable); Assert.Equal("XXXXXX", gb.CloneOf); Assert.Equal("XXXXXX", gb.RomOf); Assert.Equal("XXXXXX", gb.SampleOf); diff --git a/SabreTools.Serialization.Readers/Listxml.cs b/SabreTools.Serialization.Readers/Listxml.cs index 9c9570f3..11167434 100644 --- a/SabreTools.Serialization.Readers/Listxml.cs +++ b/SabreTools.Serialization.Readers/Listxml.cs @@ -665,7 +665,7 @@ namespace SabreTools.Serialization.Readers obj.IsBios = reader.GetAttribute("isbios").AsYesNo(); obj.IsDevice = reader.GetAttribute("isdevice").AsYesNo(); obj.IsMechanical = reader.GetAttribute("ismechanical").AsYesNo(); - obj.Runnable = reader.GetAttribute("runnable").AsYesNo(); + obj.Runnable = reader.GetAttribute("runnable").AsRunnable(); obj.CloneOf = reader.GetAttribute("cloneof"); obj.RomOf = reader.GetAttribute("romof"); obj.SampleOf = reader.GetAttribute("sampleof"); diff --git a/SabreTools.Serialization.Readers/Logiqx.cs b/SabreTools.Serialization.Readers/Logiqx.cs index 603b21ee..07ac5fae 100644 --- a/SabreTools.Serialization.Readers/Logiqx.cs +++ b/SabreTools.Serialization.Readers/Logiqx.cs @@ -457,7 +457,7 @@ namespace SabreTools.Serialization.Readers obj.RebuildTo = reader.GetAttribute("rebuildto"); obj.Id = reader.GetAttribute("id"); obj.CloneOfId = reader.GetAttribute("cloneofid"); - obj.Runnable = reader.GetAttribute("runnable").AsYesNo(); + obj.Runnable = reader.GetAttribute("runnable").AsRunnable(); List comments = []; List categories = []; diff --git a/SabreTools.Serialization.Readers/M1.cs b/SabreTools.Serialization.Readers/M1.cs index 961b6c6b..d578edcd 100644 --- a/SabreTools.Serialization.Readers/M1.cs +++ b/SabreTools.Serialization.Readers/M1.cs @@ -663,7 +663,7 @@ namespace SabreTools.Serialization.Readers obj.IsBios = reader.GetAttribute("isbios").AsYesNo(); obj.IsDevice = reader.GetAttribute("isdevice").AsYesNo(); obj.IsMechanical = reader.GetAttribute("ismechanical").AsYesNo(); - obj.Runnable = reader.GetAttribute("runnable").AsYesNo(); + obj.Runnable = reader.GetAttribute("runnable").AsRunnable(); obj.CloneOf = reader.GetAttribute("cloneof"); obj.RomOf = reader.GetAttribute("romof"); obj.SampleOf = reader.GetAttribute("sampleof"); diff --git a/SabreTools.Serialization.Readers/Mess.cs b/SabreTools.Serialization.Readers/Mess.cs index c555b12e..3549b4b3 100644 --- a/SabreTools.Serialization.Readers/Mess.cs +++ b/SabreTools.Serialization.Readers/Mess.cs @@ -663,7 +663,7 @@ namespace SabreTools.Serialization.Readers obj.IsBios = reader.GetAttribute("isbios").AsYesNo(); obj.IsDevice = reader.GetAttribute("isdevice").AsYesNo(); obj.IsMechanical = reader.GetAttribute("ismechanical").AsYesNo(); - obj.Runnable = reader.GetAttribute("runnable").AsYesNo(); + obj.Runnable = reader.GetAttribute("runnable").AsRunnable(); obj.CloneOf = reader.GetAttribute("cloneof"); obj.RomOf = reader.GetAttribute("romof"); obj.SampleOf = reader.GetAttribute("sampleof"); diff --git a/SabreTools.Serialization.Writers/Listxml.cs b/SabreTools.Serialization.Writers/Listxml.cs index c2960be4..9d7792f8 100644 --- a/SabreTools.Serialization.Writers/Listxml.cs +++ b/SabreTools.Serialization.Writers/Listxml.cs @@ -479,7 +479,7 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalAttributeString("isbios", obj.IsBios.FromYesNo()); writer.WriteOptionalAttributeString("isdevice", obj.IsDevice.FromYesNo()); writer.WriteOptionalAttributeString("ismechanical", obj.IsMechanical.FromYesNo()); - writer.WriteOptionalAttributeString("runnable", obj.Runnable.FromYesNo()); + writer.WriteOptionalAttributeString("runnable", obj.Runnable?.AsStringValue()); writer.WriteOptionalAttributeString("cloneof", obj.CloneOf); writer.WriteOptionalAttributeString("romof", obj.RomOf); writer.WriteOptionalAttributeString("sampleof", obj.SampleOf); diff --git a/SabreTools.Serialization.Writers/Logiqx.cs b/SabreTools.Serialization.Writers/Logiqx.cs index 5b834f74..3211c35e 100644 --- a/SabreTools.Serialization.Writers/Logiqx.cs +++ b/SabreTools.Serialization.Writers/Logiqx.cs @@ -329,7 +329,7 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalAttributeString("rebuildto", obj.RebuildTo); writer.WriteOptionalAttributeString("id", obj.Id); writer.WriteOptionalAttributeString("cloneofid", obj.CloneOfId); - writer.WriteOptionalAttributeString("runnable", obj.Runnable.FromYesNo()); + writer.WriteOptionalAttributeString("runnable", obj.Runnable?.AsStringValue()); if (obj.Comment is not null && obj.Comment.Length > 0) { diff --git a/SabreTools.Serialization.Writers/M1.cs b/SabreTools.Serialization.Writers/M1.cs index ea04975f..d427f936 100644 --- a/SabreTools.Serialization.Writers/M1.cs +++ b/SabreTools.Serialization.Writers/M1.cs @@ -477,7 +477,7 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalAttributeString("isbios", obj.IsBios.FromYesNo()); writer.WriteOptionalAttributeString("isdevice", obj.IsDevice.FromYesNo()); writer.WriteOptionalAttributeString("ismechanical", obj.IsMechanical.FromYesNo()); - writer.WriteOptionalAttributeString("runnable", obj.Runnable.FromYesNo()); + writer.WriteOptionalAttributeString("runnable", obj.Runnable?.AsStringValue()); writer.WriteOptionalAttributeString("cloneof", obj.CloneOf); writer.WriteOptionalAttributeString("romof", obj.RomOf); writer.WriteOptionalAttributeString("sampleof", obj.SampleOf); diff --git a/SabreTools.Serialization.Writers/Mess.cs b/SabreTools.Serialization.Writers/Mess.cs index df019522..dd4e6955 100644 --- a/SabreTools.Serialization.Writers/Mess.cs +++ b/SabreTools.Serialization.Writers/Mess.cs @@ -477,7 +477,7 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalAttributeString("isbios", obj.IsBios.FromYesNo()); writer.WriteOptionalAttributeString("isdevice", obj.IsDevice.FromYesNo()); writer.WriteOptionalAttributeString("ismechanical", obj.IsMechanical.FromYesNo()); - writer.WriteOptionalAttributeString("runnable", obj.Runnable.FromYesNo()); + writer.WriteOptionalAttributeString("runnable", obj.Runnable?.AsStringValue()); writer.WriteOptionalAttributeString("cloneof", obj.CloneOf); writer.WriteOptionalAttributeString("romof", obj.RomOf); writer.WriteOptionalAttributeString("sampleof", obj.SampleOf); From c4524d20f0b2cf39ae62cacbedd2b756bedc5e31 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Thu, 2 Apr 2026 02:18:08 -0400 Subject: [PATCH 010/142] Enum type conversion to property --- README.MD | 2 +- .../MetadataExtensionsTests.cs | 30 ++++- .../MetadataExtensions.cs | 86 +++++++++++- SabreTools.Data.Models/ClrMamePro/Chip.cs | 4 +- .../ClrMamePro/ClrMamePro.cs | 6 +- SabreTools.Data.Models/ClrMamePro/Disk.cs | 4 +- SabreTools.Data.Models/ClrMamePro/Driver.cs | 10 +- SabreTools.Data.Models/ClrMamePro/Rom.cs | 4 +- SabreTools.Data.Models/ClrMamePro/Video.cs | 4 +- SabreTools.Data.Models/Listxml/Chip.cs | 3 +- SabreTools.Data.Models/Listxml/Condition.cs | 3 +- SabreTools.Data.Models/Listxml/Control.cs | 3 +- SabreTools.Data.Models/Listxml/Device.cs | 4 +- SabreTools.Data.Models/Listxml/Disk.cs | 3 +- SabreTools.Data.Models/Listxml/Display.cs | 3 +- SabreTools.Data.Models/Listxml/Driver.cs | 13 +- SabreTools.Data.Models/Listxml/Feature.cs | 7 +- SabreTools.Data.Models/Listxml/Rom.cs | 3 +- .../Listxml/SoftwareList.cs | 3 +- SabreTools.Data.Models/Listxml/Video.cs | 3 +- SabreTools.Data.Models/Logiqx/ClrMamePro.cs | 7 +- SabreTools.Data.Models/Logiqx/Disk.cs | 3 +- SabreTools.Data.Models/Logiqx/Driver.cs | 9 +- SabreTools.Data.Models/Logiqx/Rom.cs | 3 +- SabreTools.Data.Models/Logiqx/RomCenter.cs | 7 +- SabreTools.Data.Models/Logiqx/SoftwareList.cs | 3 +- SabreTools.Data.Models/Metadata/Chip.cs | 6 +- SabreTools.Data.Models/Metadata/Condition.cs | 10 +- SabreTools.Data.Models/Metadata/Control.cs | 6 +- SabreTools.Data.Models/Metadata/DataArea.cs | 7 +- SabreTools.Data.Models/Metadata/Device.cs | 11 +- SabreTools.Data.Models/Metadata/Disk.cs | 6 +- SabreTools.Data.Models/Metadata/Display.cs | 7 +- SabreTools.Data.Models/Metadata/Driver.cs | 42 +++--- SabreTools.Data.Models/Metadata/Enums.cs | 15 +++ SabreTools.Data.Models/Metadata/Feature.cs | 18 +-- SabreTools.Data.Models/Metadata/Header.cs | 36 ++--- SabreTools.Data.Models/Metadata/Machine.cs | 6 +- SabreTools.Data.Models/Metadata/Rom.cs | 18 +-- SabreTools.Data.Models/Metadata/Software.cs | 6 +- .../Metadata/SoftwareList.cs | 6 +- SabreTools.Data.Models/Metadata/Video.cs | 10 +- SabreTools.Data.Models/SeparatedValue/Row.cs | 4 +- .../SoftwareList/DataArea.cs | 3 +- SabreTools.Data.Models/SoftwareList/Disk.cs | 3 +- SabreTools.Data.Models/SoftwareList/Rom.cs | 5 +- .../SoftwareList/Software.cs | 3 +- .../DatFileTests.FromMetadata.cs | 124 +++++++++--------- .../DatFileTests.ToMetadata.cs | 56 ++++---- .../DatStatisticsTests.cs | 6 +- .../FormatsTests.cs | 36 ++--- .../ItemDictionaryDBTests.cs | 30 +++-- .../ItemDictionaryTests.cs | 38 +++--- .../DatFile.FromMetadata.cs | 31 +++-- .../DatFile.ToMetadata.cs | 8 +- SabreTools.Metadata.DatFiles/DatHeader.cs | 50 +++++-- SabreTools.Metadata.DatFiles/DatStatistics.cs | 17 ++- .../Formats/ClrMamePro.cs | 19 ++- .../Formats/Listxml.cs | 37 +++--- .../Formats/Logiqx.cs | 21 ++- .../ItemDictionary.cs | 17 ++- .../ItemDictionaryDB.cs | 17 ++- .../Formats/DiskTests.cs | 4 +- SabreTools.Metadata.DatItems/Formats/Chip.cs | 15 +-- .../Formats/Condition.cs | 18 ++- .../Formats/Control.cs | 10 +- .../Formats/DataArea.cs | 14 +- .../Formats/Device.cs | 10 +- SabreTools.Metadata.DatItems/Formats/Disk.cs | 15 ++- .../Formats/Display.cs | 16 +-- .../Formats/Driver.cs | 66 ++++++---- .../Formats/Feature.cs | 38 +++--- .../Formats/PartFeature.cs | 34 ++--- SabreTools.Metadata.DatItems/Formats/Rom.cs | 41 +++--- .../Formats/SoftwareList.cs | 15 ++- SabreTools.Metadata.DatItems/Machine.cs | 10 +- SabreTools.Metadata.Filter/FilterObject.cs | 97 ++++++++++++++ .../DictionaryBaseExtensionsTests.cs | 8 +- .../DictionaryBaseExtensions.cs | 16 +-- .../ClrMameProTests.cs | 40 +++--- .../ListxmlTests.cs | 72 +++++----- .../LogiqxTests.cs | 52 ++++---- .../M1Tests.cs | 72 +++++----- .../MessTests.cs | 72 +++++----- .../SeparatedValueTests.cs | 8 +- .../SoftwareListTests.cs | 20 +-- .../ClrMamePro.Deserializer.cs | 20 +-- .../ClrMamePro.Serializer.cs | 22 ++-- .../Listrom.Deserializer.cs | 8 +- .../Listrom.Serializer.cs | 8 +- .../Listxml.Deserializer.cs | 36 ++--- .../Listxml.Serializer.cs | 36 ++--- .../Logiqx.Deserializer.cs | 52 ++++---- .../Logiqx.Serializer.cs | 28 ++-- .../RomCenter.Deserializer.cs | 6 +- .../RomCenter.Serializer.cs | 4 +- .../SeparatedValue.Deserializer.cs | 4 +- .../SeparatedValue.Serializer.cs | 4 +- .../SoftwareList.Deserializer.cs | 10 +- .../SoftwareList.Serializer.cs | 10 +- .../ClrMameProTests.cs | 40 +++--- .../ListxmlTests.cs | 72 +++++----- .../LogiqxTests.cs | 52 ++++---- .../M1Tests.cs | 72 +++++----- .../MessTests.cs | 72 +++++----- .../SeparatedValueTests.cs | 10 +- .../SoftwareListTests.cs | 20 +-- .../ClrMamePro.cs | 22 ++-- SabreTools.Serialization.Readers/Listxml.cs | 36 ++--- SabreTools.Serialization.Readers/Logiqx.cs | 26 ++-- SabreTools.Serialization.Readers/M1.cs | 36 ++--- SabreTools.Serialization.Readers/Mess.cs | 36 ++--- .../SeparatedValue.cs | 5 +- .../SoftwareList.cs | 10 +- .../ClrMamePro.cs | 22 ++-- SabreTools.Serialization.Writers/Listxml.cs | 36 ++--- SabreTools.Serialization.Writers/Logiqx.cs | 35 +++-- SabreTools.Serialization.Writers/M1.cs | 36 ++--- SabreTools.Serialization.Writers/Mess.cs | 36 ++--- .../SeparatedValue.cs | 5 +- .../SoftwareList.cs | 10 +- 121 files changed, 1507 insertions(+), 1158 deletions(-) diff --git a/README.MD b/README.MD index b5edf963..5bdad96b 100644 --- a/README.MD +++ b/README.MD @@ -8,7 +8,7 @@ Find the link to the Nuget package [here](https://www.nuget.org/packages/SabreTo ## Releases -For the most recent stable build, download the latest release where: [Releases Page](https://github.com/SabreTools/SabreTools.Serialization/releases) +For the most recent stable build, download the latest release here: [Releases Page](https://github.com/SabreTools/SabreTools.Serialization/releases) For the latest WIP build here: [Rolling Release](https://github.com/SabreTools/SabreTools.Serialization/releases/tag/rolling) diff --git a/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs b/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs index 22501218..f4bc8b55 100644 --- a/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs +++ b/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs @@ -23,12 +23,12 @@ namespace SabreTools.Data.Extensions.Test Rom? actual = self.ConvertToRom(); Assert.NotNull(actual); - Assert.Equal(5, actual.Count); + Assert.Equal(4, actual.Count); Assert.Equal(ItemType.Rom, actual.ItemType); Assert.Null(actual.Name); Assert.Null(actual[Rom.MergeKey]); Assert.Null(actual[Rom.RegionKey]); - Assert.Null(actual[Rom.StatusKey]); + Assert.Null(actual.Status); Assert.Null(actual.Optional); Assert.Null(actual[Rom.MD5Key]); Assert.Null(actual[Rom.SHA1Key]); @@ -42,7 +42,7 @@ namespace SabreTools.Data.Extensions.Test Name = "XXXXXX", [Disk.MergeKey] = "XXXXXX", [Disk.RegionKey] = "XXXXXX", - [Disk.StatusKey] = "XXXXXX", + Status = ItemStatus.Good, Optional = true, [Disk.MD5Key] = "XXXXXX", [Disk.SHA1Key] = "XXXXXX", @@ -51,12 +51,12 @@ namespace SabreTools.Data.Extensions.Test Rom? actual = self.ConvertToRom(); Assert.NotNull(actual); - Assert.Equal(5, actual.Count); + Assert.Equal(4, actual.Count); Assert.Equal(ItemType.Rom, actual.ItemType); Assert.Equal("XXXXXX.chd", actual.Name); Assert.Equal("XXXXXX", actual[Rom.MergeKey]); Assert.Equal("XXXXXX", actual[Rom.RegionKey]); - Assert.Equal("XXXXXX", actual[Rom.StatusKey]); + Assert.Equal(ItemStatus.Good, actual.Status); Assert.Equal(true, actual.Optional); Assert.Equal("XXXXXX", actual[Rom.MD5Key]); Assert.Equal("XXXXXX", actual[Rom.SHA1Key]); @@ -1578,6 +1578,16 @@ namespace SabreTools.Data.Extensions.Test #region String to Enum + [Theory] + [InlineData(null, null)] + [InlineData("plain", Blit.Plain)] + [InlineData("dirty", Blit.Dirty)] + public void AsBlitTest(string? field, Blit? expected) + { + Blit? actual = field.AsBlit(); + Assert.Equal(expected, actual); + } + [Theory] [InlineData(null, null)] [InlineData("cpu", ChipType.CPU)] @@ -1868,6 +1878,16 @@ namespace SabreTools.Data.Extensions.Test #region Enum to String + [Theory] + [InlineData((Blit)int.MaxValue, null)] + [InlineData(Blit.Plain, "plain")] + [InlineData(Blit.Dirty, "dirty")] + public void FromBlitTest(Blit field, string? expected) + { + string? actual = field.AsStringValue(); + Assert.Equal(expected, actual); + } + [Theory] [InlineData((ChipType)int.MaxValue, null)] [InlineData(ChipType.CPU, "cpu")] diff --git a/SabreTools.Data.Extensions/MetadataExtensions.cs b/SabreTools.Data.Extensions/MetadataExtensions.cs index 1be262c0..f1700a2a 100644 --- a/SabreTools.Data.Extensions/MetadataExtensions.cs +++ b/SabreTools.Data.Extensions/MetadataExtensions.cs @@ -6,6 +6,8 @@ using SabreTools.Matching; namespace SabreTools.Data.Extensions { + // TODO: Add proper enum for YesNo + // TODO: Combine yes/partial/no enums public static class MetadataExtensions { #region Accessors @@ -155,8 +157,13 @@ namespace SabreTools.Data.Extensions } else if (self is Chip selfChip && clone is Chip cloneChip) { + cloneChip.ChipType = selfChip.ChipType; cloneChip.SoundOnly = selfChip.SoundOnly; } + else if (self is Condition selfCondition && clone is Condition cloneCondition) + { + cloneCondition.Relation = selfCondition.Relation; + } else if (self is ConfLocation selfConfLocation && clone is ConfLocation cloneConfLocation) { cloneConfLocation.Inverted = selfConfLocation.Inverted; @@ -167,8 +174,17 @@ namespace SabreTools.Data.Extensions } else if (self is Control selfControl && clone is Control cloneControl) { + cloneControl.ControlType = selfControl.ControlType; cloneControl.Reverse = selfControl.Reverse; } + else if (self is DataArea selfDataArea && clone is DataArea cloneDataArea) + { + cloneDataArea.Endianness = selfDataArea.Endianness; + } + else if (self is Device selfDevice && clone is Device cloneDevice) + { + cloneDevice.DeviceType = selfDevice.DeviceType; + } else if (self is DipLocation selfDipLocation && clone is DipLocation cloneDipLocation) { cloneDipLocation.Inverted = selfDipLocation.Inverted; @@ -184,26 +200,47 @@ namespace SabreTools.Data.Extensions else if (self is Disk selfDisk && clone is Disk cloneDisk) { cloneDisk.Optional = selfDisk.Optional; + cloneDisk.Status = selfDisk.Status; cloneDisk.Writable = selfDisk.Writable; } else if (self is Display selfDisplay && clone is Display cloneDisplay) { + cloneDisplay.DisplayType = selfDisplay.DisplayType; cloneDisplay.FlipX = selfDisplay.FlipX; } else if (self is Driver selfDriver && clone is Driver cloneDriver) { + cloneDriver.Blit = selfDriver.Blit; + cloneDriver.Cocktail = selfDriver.Cocktail; + cloneDriver.Color = selfDriver.Color; + cloneDriver.Emulation = selfDriver.Emulation; cloneDriver.Incomplete = selfDriver.Incomplete; cloneDriver.NoSoundHardware = selfDriver.NoSoundHardware; cloneDriver.RequiresArtwork = selfDriver.RequiresArtwork; + cloneDriver.SaveState = selfDriver.SaveState; + cloneDriver.Sound = selfDriver.Sound; + cloneDriver.Status = selfDriver.Status; cloneDriver.Unofficial = selfDriver.Unofficial; } + else if (self is Feature selfFeature && clone is Feature cloneFeature) + { + cloneFeature.FeatureType = selfFeature.FeatureType; + cloneFeature.Overall = selfFeature.Overall; + cloneFeature.Status = selfFeature.Status; + } else if (self is Header selfHeader && clone is Header cloneHeader) { + cloneHeader.BiosMode = selfHeader.BiosMode; cloneHeader.Debug = selfHeader.Debug; + cloneHeader.ForceMerging = selfHeader.ForceMerging; + cloneHeader.ForceNodump = selfHeader.ForceNodump; + cloneHeader.ForcePacking = selfHeader.ForcePacking; cloneHeader.ForceZipping = selfHeader.ForceZipping; cloneHeader.LockBiosMode = selfHeader.LockBiosMode; cloneHeader.LockRomMode = selfHeader.LockRomMode; cloneHeader.LockSampleMode = selfHeader.LockSampleMode; + cloneHeader.RomMode = selfHeader.RomMode; + cloneHeader.SampleMode = selfHeader.SampleMode; } else if (self is Input selfInput && clone is Input cloneInput) { @@ -216,6 +253,7 @@ namespace SabreTools.Data.Extensions cloneMachine.IsDevice = selfMachine.IsDevice; cloneMachine.IsMechanical = selfMachine.IsMechanical; cloneMachine.Runnable = selfMachine.Runnable; + cloneMachine.Supported = selfMachine.Supported; } else if (self is RamOption selfRamOption && clone is RamOption cloneRamOption) { @@ -230,14 +268,29 @@ namespace SabreTools.Data.Extensions cloneRom.Dispose = selfRom.Dispose; cloneRom.FileIsAvailable = selfRom.FileIsAvailable; cloneRom.Inverted = selfRom.Inverted; + cloneRom.LoadFlag = selfRom.LoadFlag; cloneRom.MIA = selfRom.MIA; + cloneRom.OpenMSXMediaType = selfRom.OpenMSXMediaType; cloneRom.Optional = selfRom.Optional; cloneRom.SoundOnly = selfRom.SoundOnly; + cloneRom.Status = selfRom.Status; } else if (self is SlotOption selfSlotOption && clone is SlotOption cloneSlotOption) { cloneSlotOption.Default = selfSlotOption.Default; } + else if (self is Software selfSoftware && clone is Software cloneSoftware) + { + cloneSoftware.Supported = selfSoftware.Supported; + } + else if (self is SoftwareList selfSoftwareList && clone is SoftwareList cloneSoftwareList) + { + cloneSoftwareList.Status = selfSoftwareList.Status; + } + else if (self is Video selfVideo && clone is Video cloneVideo) + { + cloneVideo.Screen = selfVideo.Screen; + } // Handle known properties clone.SetName(self.GetName()); @@ -308,7 +361,7 @@ namespace SabreTools.Data.Extensions Name = name, [Rom.MergeKey] = disk.ReadString(Disk.MergeKey), [Rom.RegionKey] = disk.ReadString(Disk.RegionKey), - [Rom.StatusKey] = disk.ReadString(Disk.StatusKey), + Status = disk.Status, Optional = disk.Optional, [Rom.MD5Key] = disk.ReadString(Disk.MD5Key), [Rom.SHA1Key] = disk.ReadString(Disk.SHA1Key), @@ -973,6 +1026,21 @@ namespace SabreTools.Data.Extensions #region String to Enum + /// + /// Get the enum value for an input string, if possible + /// + /// String value to parse/param> + /// Enum value representing the input, null on error + public static Blit? AsBlit(this string? value) + { + return value?.ToLowerInvariant() switch + { + "plain" => Blit.Plain, + "dirty" => Blit.Dirty, + _ => null, + }; + } + /// /// Get the enum value for an input string, if possible /// @@ -1344,6 +1412,21 @@ namespace SabreTools.Data.Extensions #region Enum to String + /// + /// Get the string value for an input enum, if possible + /// + /// Enum value to parse/param> + /// String value representing the input, null on error + public static string? AsStringValue(this Blit value) + { + return value switch + { + Blit.Plain => "plain", + Blit.Dirty => "dirty", + _ => null, + }; + } + /// /// Get the string value for an input enum, if possible /// @@ -1696,6 +1779,7 @@ namespace SabreTools.Data.Extensions SupportStatus.Good => "good", SupportStatus.Imperfect => "imperfect", SupportStatus.Preliminary => "preliminary", + SupportStatus.Test => "test", _ => null, }; } diff --git a/SabreTools.Data.Models/ClrMamePro/Chip.cs b/SabreTools.Data.Models/ClrMamePro/Chip.cs index 5d9fd30b..4c9c603b 100644 --- a/SabreTools.Data.Models/ClrMamePro/Chip.cs +++ b/SabreTools.Data.Models/ClrMamePro/Chip.cs @@ -1,4 +1,6 @@ +using SabreTools.Data.Models.Metadata; + namespace SabreTools.Data.Models.ClrMamePro { /// chip @@ -6,7 +8,7 @@ namespace SabreTools.Data.Models.ClrMamePro { /// type, (cpu|audio) [Required] - public string? Type { get; set; } + public ChipType? Type { get; set; } /// name [Required] diff --git a/SabreTools.Data.Models/ClrMamePro/ClrMamePro.cs b/SabreTools.Data.Models/ClrMamePro/ClrMamePro.cs index b9255253..772d6664 100644 --- a/SabreTools.Data.Models/ClrMamePro/ClrMamePro.cs +++ b/SabreTools.Data.Models/ClrMamePro/ClrMamePro.cs @@ -1,3 +1,5 @@ +using SabreTools.Data.Models.Metadata; + namespace SabreTools.Data.Models.ClrMamePro { /// clrmamepro @@ -40,12 +42,12 @@ namespace SabreTools.Data.Models.ClrMamePro public string? Type { get; set; } /// forcemerging - public string? ForceMerging { get; set; } + public MergingFlag ForceMerging { get; set; } /// forcezipping, (yes|no) "no" public bool? ForceZipping { get; set; } /// forcepacking - public string? ForcePacking { get; set; } + public PackingFlag ForcePacking { get; set; } } } diff --git a/SabreTools.Data.Models/ClrMamePro/Disk.cs b/SabreTools.Data.Models/ClrMamePro/Disk.cs index af2493ba..34d9d4b9 100644 --- a/SabreTools.Data.Models/ClrMamePro/Disk.cs +++ b/SabreTools.Data.Models/ClrMamePro/Disk.cs @@ -1,4 +1,6 @@ +using SabreTools.Data.Models.Metadata; + namespace SabreTools.Data.Models.ClrMamePro { /// disk @@ -18,7 +20,7 @@ namespace SabreTools.Data.Models.ClrMamePro public string? Merge { get; set; } /// status - public string? Status { get; set; } + public ItemStatus? Status { get; set; } /// flags public string? Flags { get; set; } diff --git a/SabreTools.Data.Models/ClrMamePro/Driver.cs b/SabreTools.Data.Models/ClrMamePro/Driver.cs index cddc19b9..07abe4a2 100644 --- a/SabreTools.Data.Models/ClrMamePro/Driver.cs +++ b/SabreTools.Data.Models/ClrMamePro/Driver.cs @@ -1,4 +1,6 @@ +using SabreTools.Data.Models.Metadata; + namespace SabreTools.Data.Models.ClrMamePro { /// driver @@ -6,18 +8,18 @@ namespace SabreTools.Data.Models.ClrMamePro { /// status, (good|imperfect|preliminary) [Required] - public string? Status { get; set; } + public SupportStatus? Status { get; set; } /// color, (good|imperfect|preliminary) - public string? Color { get; set; } + public SupportStatus? Color { get; set; } /// sound, (good|imperfect|preliminary) - public string? Sound { get; set; } + public SupportStatus? Sound { get; set; } /// palettesize, Numeric? public string? PaletteSize { get; set; } /// blit, (plain|dirty) - public string? Blit { get; set; } + public Blit? Blit { get; set; } } } diff --git a/SabreTools.Data.Models/ClrMamePro/Rom.cs b/SabreTools.Data.Models/ClrMamePro/Rom.cs index 6e64c274..b84d1b68 100644 --- a/SabreTools.Data.Models/ClrMamePro/Rom.cs +++ b/SabreTools.Data.Models/ClrMamePro/Rom.cs @@ -1,5 +1,7 @@ #pragma warning disable IDE1006 // Naming Styles +using SabreTools.Data.Models.Metadata; + namespace SabreTools.Data.Models.ClrMamePro { /// rom @@ -26,7 +28,7 @@ namespace SabreTools.Data.Models.ClrMamePro public string? Merge { get; set; } /// status - public string? Status { get; set; } + public ItemStatus? Status { get; set; } /// flags public string? Flags { get; set; } diff --git a/SabreTools.Data.Models/ClrMamePro/Video.cs b/SabreTools.Data.Models/ClrMamePro/Video.cs index e8c801ca..2fd3fe5a 100644 --- a/SabreTools.Data.Models/ClrMamePro/Video.cs +++ b/SabreTools.Data.Models/ClrMamePro/Video.cs @@ -1,4 +1,6 @@ +using SabreTools.Data.Models.Metadata; + namespace SabreTools.Data.Models.ClrMamePro { /// video @@ -6,7 +8,7 @@ namespace SabreTools.Data.Models.ClrMamePro { /// screen, (raster|vector) [Required] - public string? Screen { get; set; } + public DisplayType? Screen { get; set; } /// orientation, (vertical|horizontal) [Required] diff --git a/SabreTools.Data.Models/Listxml/Chip.cs b/SabreTools.Data.Models/Listxml/Chip.cs index c0d48393..1b19195b 100644 --- a/SabreTools.Data.Models/Listxml/Chip.cs +++ b/SabreTools.Data.Models/Listxml/Chip.cs @@ -1,5 +1,6 @@ using System.Xml; using System.Xml.Serialization; +using SabreTools.Data.Models.Metadata; namespace SabreTools.Data.Models.Listxml { @@ -16,7 +17,7 @@ namespace SabreTools.Data.Models.Listxml /// (cpu|audio) [Required] [XmlAttribute("type")] - public string? Type { get; set; } + public ChipType? Type { get; set; } /// Only present in older versions [XmlAttribute("soundonly")] diff --git a/SabreTools.Data.Models/Listxml/Condition.cs b/SabreTools.Data.Models/Listxml/Condition.cs index 73f4908b..5e4858a4 100644 --- a/SabreTools.Data.Models/Listxml/Condition.cs +++ b/SabreTools.Data.Models/Listxml/Condition.cs @@ -1,5 +1,6 @@ using System.Xml; using System.Xml.Serialization; +using SabreTools.Data.Models.Metadata; namespace SabreTools.Data.Models.Listxml { @@ -17,7 +18,7 @@ namespace SabreTools.Data.Models.Listxml /// (eq|ne|gt|le|lt|ge) [Required] [XmlAttribute("relation")] - public string? Relation { get; set; } + public Relation? Relation { get; set; } [Required] [XmlAttribute("value")] diff --git a/SabreTools.Data.Models/Listxml/Control.cs b/SabreTools.Data.Models/Listxml/Control.cs index 3deb7c4e..24d2c29e 100644 --- a/SabreTools.Data.Models/Listxml/Control.cs +++ b/SabreTools.Data.Models/Listxml/Control.cs @@ -1,5 +1,6 @@ using System.Xml; using System.Xml.Serialization; +using SabreTools.Data.Models.Metadata; namespace SabreTools.Data.Models.Listxml { @@ -9,7 +10,7 @@ namespace SabreTools.Data.Models.Listxml /// (joy|stick|paddle|pedal|lightgun|positional|dial|trackball|mouse|only_buttons|keypad|keyboard|mahjong|hanafuda|gambling) [Required] [XmlAttribute("type")] - public string? Type { get; set; } + public ControlType? Type { get; set; } /// Numeric [XmlAttribute("player")] diff --git a/SabreTools.Data.Models/Listxml/Device.cs b/SabreTools.Data.Models/Listxml/Device.cs index a6790474..45a26277 100644 --- a/SabreTools.Data.Models/Listxml/Device.cs +++ b/SabreTools.Data.Models/Listxml/Device.cs @@ -1,14 +1,16 @@ using System.Xml; using System.Xml.Serialization; +using SabreTools.Data.Models.Metadata; namespace SabreTools.Data.Models.Listxml { [XmlRoot("device")] public class Device { + /// (unknown|cartridge|floppydisk|harddisk|cylinder|cassette|punchcard|punchtape|printout|serial|parallel|snapshot|quickload|memcard|cdrom|magtape|romimage|midiin|midiout|picture|vidfile) [Required] [XmlAttribute("type")] - public string? Type { get; set; } + public DeviceType? Type { get; set; } [XmlAttribute("tag")] public string? Tag { get; set; } diff --git a/SabreTools.Data.Models/Listxml/Disk.cs b/SabreTools.Data.Models/Listxml/Disk.cs index 79908639..b5bf0d57 100644 --- a/SabreTools.Data.Models/Listxml/Disk.cs +++ b/SabreTools.Data.Models/Listxml/Disk.cs @@ -1,5 +1,6 @@ using System.Xml; using System.Xml.Serialization; +using SabreTools.Data.Models.Metadata; namespace SabreTools.Data.Models.Listxml { @@ -33,7 +34,7 @@ namespace SabreTools.Data.Models.Listxml /// (baddump|nodump|good) "good" [XmlAttribute("status")] - public string? Status { get; set; } + public ItemStatus? Status { get; set; } /// (yes|no) "no" [XmlAttribute("optional")] diff --git a/SabreTools.Data.Models/Listxml/Display.cs b/SabreTools.Data.Models/Listxml/Display.cs index 420e5892..5f873dcd 100644 --- a/SabreTools.Data.Models/Listxml/Display.cs +++ b/SabreTools.Data.Models/Listxml/Display.cs @@ -1,5 +1,6 @@ using System.Xml; using System.Xml.Serialization; +using SabreTools.Data.Models.Metadata; namespace SabreTools.Data.Models.Listxml { @@ -12,7 +13,7 @@ namespace SabreTools.Data.Models.Listxml /// (raster|vector|lcd|svg|unknown) [Required] [XmlAttribute("type")] - public string? Type { get; set; } + public DisplayType? Type { get; set; } /// (0|90|180|270) [XmlAttribute("rotate")] diff --git a/SabreTools.Data.Models/Listxml/Driver.cs b/SabreTools.Data.Models/Listxml/Driver.cs index 98f55f50..c03b7baf 100644 --- a/SabreTools.Data.Models/Listxml/Driver.cs +++ b/SabreTools.Data.Models/Listxml/Driver.cs @@ -1,5 +1,6 @@ using System.Xml; using System.Xml.Serialization; +using SabreTools.Data.Models.Metadata; namespace SabreTools.Data.Models.Listxml { @@ -9,15 +10,15 @@ namespace SabreTools.Data.Models.Listxml /// (good|imperfect|preliminary), (good|preliminary|test) in older versions [Required] [XmlAttribute("status")] - public string? Status { get; set; } + public SupportStatus? Status { get; set; } /// (good|imperfect|preliminary), Only present in older versions [XmlAttribute("color")] - public string? Color { get; set; } + public SupportStatus? Color { get; set; } /// (good|imperfect|preliminary), Only present in older versions [XmlAttribute("sound")] - public string? Sound { get; set; } + public SupportStatus? Sound { get; set; } /// Only present in older versions [XmlAttribute("palettesize")] @@ -26,17 +27,17 @@ namespace SabreTools.Data.Models.Listxml /// (good|imperfect|preliminary) [Required] [XmlAttribute("emulation")] - public string? Emulation { get; set; } + public SupportStatus? Emulation { get; set; } /// (good|imperfect|preliminary) [Required] [XmlAttribute("cocktail")] - public string? Cocktail { get; set; } + public SupportStatus? Cocktail { get; set; } /// (supported|unsupported) [Required] [XmlAttribute("savestate")] - public string? SaveState { get; set; } + public Supported? SaveState { get; set; } /// (yes|no) "no" [XmlAttribute("requiresartwork")] diff --git a/SabreTools.Data.Models/Listxml/Feature.cs b/SabreTools.Data.Models/Listxml/Feature.cs index b4897e4c..b1a29119 100644 --- a/SabreTools.Data.Models/Listxml/Feature.cs +++ b/SabreTools.Data.Models/Listxml/Feature.cs @@ -1,5 +1,6 @@ using System.Xml; using System.Xml.Serialization; +using SabreTools.Data.Models.Metadata; namespace SabreTools.Data.Models.Listxml { @@ -9,14 +10,14 @@ namespace SabreTools.Data.Models.Listxml /// (protection|timing|graphics|palette|sound|capture|camera|microphone|controls|keyboard|mouse|media|disk|printer|tape|punch|drum|rom|comms|lan|wan) [Required] [XmlAttribute("type")] - public string? Type { get; set; } + public FeatureType? Type { get; set; } /// (unemulated|imperfect) [XmlAttribute("status")] - public string? Status { get; set; } + public FeatureStatus? Status { get; set; } /// (unemulated|imperfect) [XmlAttribute("overall")] - public string? Overall { get; set; } + public FeatureStatus? Overall { get; set; } } } diff --git a/SabreTools.Data.Models/Listxml/Rom.cs b/SabreTools.Data.Models/Listxml/Rom.cs index 6448731f..a2f60acc 100644 --- a/SabreTools.Data.Models/Listxml/Rom.cs +++ b/SabreTools.Data.Models/Listxml/Rom.cs @@ -1,5 +1,6 @@ using System.Xml; using System.Xml.Serialization; +using SabreTools.Data.Models.Metadata; namespace SabreTools.Data.Models.Listxml { @@ -36,7 +37,7 @@ namespace SabreTools.Data.Models.Listxml /// (baddump|nodump|good) "good" [XmlAttribute("status")] - public string? Status { get; set; } + public ItemStatus? Status { get; set; } /// (yes|no) "no" [XmlAttribute("optional")] diff --git a/SabreTools.Data.Models/Listxml/SoftwareList.cs b/SabreTools.Data.Models/Listxml/SoftwareList.cs index 31f7ed3c..b440b12d 100644 --- a/SabreTools.Data.Models/Listxml/SoftwareList.cs +++ b/SabreTools.Data.Models/Listxml/SoftwareList.cs @@ -1,5 +1,6 @@ using System.Xml; using System.Xml.Serialization; +using SabreTools.Data.Models.Metadata; namespace SabreTools.Data.Models.Listxml { @@ -17,7 +18,7 @@ namespace SabreTools.Data.Models.Listxml /// (original|compatible) [Required] [XmlAttribute("status")] - public string? Status { get; set; } + public SoftwareListStatus? Status { get; set; } [XmlAttribute("filter")] public string? Filter { get; set; } diff --git a/SabreTools.Data.Models/Listxml/Video.cs b/SabreTools.Data.Models/Listxml/Video.cs index 7568ea9f..8db62b97 100644 --- a/SabreTools.Data.Models/Listxml/Video.cs +++ b/SabreTools.Data.Models/Listxml/Video.cs @@ -1,5 +1,6 @@ using System.Xml; using System.Xml.Serialization; +using SabreTools.Data.Models.Metadata; namespace SabreTools.Data.Models.Listxml { @@ -9,7 +10,7 @@ namespace SabreTools.Data.Models.Listxml /// (raster|vector) [Required] [XmlAttribute("screen")] - public string? Screen { get; set; } + public DisplayType? Screen { get; set; } /// (vertical|horizontal) [Required] diff --git a/SabreTools.Data.Models/Logiqx/ClrMamePro.cs b/SabreTools.Data.Models/Logiqx/ClrMamePro.cs index f66596a6..ba9bf306 100644 --- a/SabreTools.Data.Models/Logiqx/ClrMamePro.cs +++ b/SabreTools.Data.Models/Logiqx/ClrMamePro.cs @@ -1,5 +1,6 @@ using System.Xml; using System.Xml.Serialization; +using SabreTools.Data.Models.Metadata; namespace SabreTools.Data.Models.Logiqx { @@ -11,14 +12,14 @@ namespace SabreTools.Data.Models.Logiqx /// (none|split|merged|nonmerged|fullmerged|device|full) "split" [XmlAttribute("forcemerging")] - public string? ForceMerging { get; set; } + public MergingFlag ForceMerging { get; set; } /// (obsolete|required|ignore) "obsolete" [XmlAttribute("forcenodump")] - public string? ForceNodump { get; set; } + public NodumpFlag ForceNodump { get; set; } /// (zip|unzip) "zip" [XmlAttribute("forcepacking")] - public string? ForcePacking { get; set; } + public PackingFlag ForcePacking { get; set; } } } diff --git a/SabreTools.Data.Models/Logiqx/Disk.cs b/SabreTools.Data.Models/Logiqx/Disk.cs index c36ef5d1..2b080f8d 100644 --- a/SabreTools.Data.Models/Logiqx/Disk.cs +++ b/SabreTools.Data.Models/Logiqx/Disk.cs @@ -1,5 +1,6 @@ using System.Xml; using System.Xml.Serialization; +using SabreTools.Data.Models.Metadata; namespace SabreTools.Data.Models.Logiqx { @@ -21,7 +22,7 @@ namespace SabreTools.Data.Models.Logiqx /// (baddump|nodump|good|verified) "good" [XmlAttribute("status")] - public string? Status { get; set; } + public ItemStatus? Status { get; set; } /// MAME extension [XmlAttribute("region")] diff --git a/SabreTools.Data.Models/Logiqx/Driver.cs b/SabreTools.Data.Models/Logiqx/Driver.cs index 72991aea..bb1f752c 100644 --- a/SabreTools.Data.Models/Logiqx/Driver.cs +++ b/SabreTools.Data.Models/Logiqx/Driver.cs @@ -1,5 +1,6 @@ using System.Xml; using System.Xml.Serialization; +using SabreTools.Data.Models.Metadata; namespace SabreTools.Data.Models.Logiqx { @@ -9,22 +10,22 @@ namespace SabreTools.Data.Models.Logiqx /// (good|imperfect|preliminary) [Required] [XmlAttribute("status")] - public string? Status { get; set; } + public SupportStatus? Status { get; set; } /// (good|imperfect|preliminary) [Required] [XmlAttribute("emulation")] - public string? Emulation { get; set; } + public SupportStatus? Emulation { get; set; } /// (good|imperfect|preliminary) [Required] [XmlAttribute("cocktail")] - public string? Cocktail { get; set; } + public SupportStatus? Cocktail { get; set; } /// (supported|unsupported) [Required] [XmlAttribute("savestate")] - public string? SaveState { get; set; } + public Supported? SaveState { get; set; } /// (yes|no) "no" [XmlAttribute("requiresartwork")] diff --git a/SabreTools.Data.Models/Logiqx/Rom.cs b/SabreTools.Data.Models/Logiqx/Rom.cs index be687492..ea05a3a8 100644 --- a/SabreTools.Data.Models/Logiqx/Rom.cs +++ b/SabreTools.Data.Models/Logiqx/Rom.cs @@ -1,5 +1,6 @@ using System.Xml; using System.Xml.Serialization; +using SabreTools.Data.Models.Metadata; #pragma warning disable IDE1006 // Naming Styles namespace SabreTools.Data.Models.Logiqx @@ -77,7 +78,7 @@ namespace SabreTools.Data.Models.Logiqx /// (baddump|nodump|good|verified) "good" [XmlAttribute("status")] - public string? Status { get; set; } + public ItemStatus? Status { get; set; } /// No-Intro extension [XmlAttribute("serial")] diff --git a/SabreTools.Data.Models/Logiqx/RomCenter.cs b/SabreTools.Data.Models/Logiqx/RomCenter.cs index 2840f518..84e4554b 100644 --- a/SabreTools.Data.Models/Logiqx/RomCenter.cs +++ b/SabreTools.Data.Models/Logiqx/RomCenter.cs @@ -1,5 +1,6 @@ using System.Xml; using System.Xml.Serialization; +using SabreTools.Data.Models.Metadata; namespace SabreTools.Data.Models.Logiqx { @@ -11,15 +12,15 @@ namespace SabreTools.Data.Models.Logiqx /// (none|split|merged|unmerged|fullmerged|device|full) "split" [XmlAttribute("rommode")] - public string? RomMode { get; set; } + public MergingFlag RomMode { get; set; } /// (none|split|merged|unmerged|fullmerged|device|full) "split" [XmlAttribute("biosmode")] - public string? BiosMode { get; set; } + public MergingFlag BiosMode { get; set; } /// (none|split|merged|unmerged|fullmerged|device|full) "merged" [XmlAttribute("samplemode")] - public string? SampleMode { get; set; } + public MergingFlag SampleMode { get; set; } /// (yes|no) "no" [XmlAttribute("lockrommode")] diff --git a/SabreTools.Data.Models/Logiqx/SoftwareList.cs b/SabreTools.Data.Models/Logiqx/SoftwareList.cs index fb06ff48..69d23183 100644 --- a/SabreTools.Data.Models/Logiqx/SoftwareList.cs +++ b/SabreTools.Data.Models/Logiqx/SoftwareList.cs @@ -1,5 +1,6 @@ using System.Xml; using System.Xml.Serialization; +using SabreTools.Data.Models.Metadata; namespace SabreTools.Data.Models.Logiqx { @@ -17,7 +18,7 @@ namespace SabreTools.Data.Models.Logiqx /// (original|compatible) [Required] [XmlAttribute("status")] - public string? Status { get; set; } + public SoftwareListStatus? Status { get; set; } [XmlAttribute("filter")] public string? Filter { get; set; } diff --git a/SabreTools.Data.Models/Metadata/Chip.cs b/SabreTools.Data.Models/Metadata/Chip.cs index 79d6699e..155ed6d3 100644 --- a/SabreTools.Data.Models/Metadata/Chip.cs +++ b/SabreTools.Data.Models/Metadata/Chip.cs @@ -8,6 +8,9 @@ namespace SabreTools.Data.Models.Metadata { #region Properties + /// (cpu|audio) + public ChipType? ChipType { get; set; } + public string? Name { get; set; } /// (yes|no) "no" @@ -26,9 +29,6 @@ namespace SabreTools.Data.Models.Metadata /// string public const string TagKey = "tag"; - /// (cpu|audio) - public const string ChipTypeKey = "type"; - #endregion public Chip() => ItemType = ItemType.Chip; diff --git a/SabreTools.Data.Models/Metadata/Condition.cs b/SabreTools.Data.Models/Metadata/Condition.cs index d2a257cc..8875796b 100644 --- a/SabreTools.Data.Models/Metadata/Condition.cs +++ b/SabreTools.Data.Models/Metadata/Condition.cs @@ -6,6 +6,13 @@ namespace SabreTools.Data.Models.Metadata [JsonObject("condition"), XmlRoot("condition")] public class Condition : DatItem { + #region Properties + + /// (eq|ne|gt|le|lt|ge) + public Relation? Relation { get; set; } + + #endregion + #region Keys /// string @@ -14,9 +21,6 @@ namespace SabreTools.Data.Models.Metadata /// string public const string MaskKey = "mask"; - /// (eq|ne|gt|le|lt|ge) - public const string RelationKey = "relation"; - /// string public const string TagKey = "tag"; diff --git a/SabreTools.Data.Models/Metadata/Control.cs b/SabreTools.Data.Models/Metadata/Control.cs index 28222d70..98c0fd58 100644 --- a/SabreTools.Data.Models/Metadata/Control.cs +++ b/SabreTools.Data.Models/Metadata/Control.cs @@ -8,6 +8,9 @@ namespace SabreTools.Data.Models.Metadata { #region Properties + /// (joy|stick|paddle|pedal|lightgun|positional|dial|trackball|mouse|only_buttons|keypad|keyboard|mahjong|hanafuda|gambling) + public ControlType? ControlType { get; set; } + /// (yes|no) "no" public bool? Reverse { get; set; } @@ -36,9 +39,6 @@ namespace SabreTools.Data.Models.Metadata /// long public const string SensitivityKey = "sensitivity"; - /// (joy|stick|paddle|pedal|lightgun|positional|dial|trackball|mouse|only_buttons|keypad|keyboard|mahjong|hanafuda|gambling) - public const string ControlTypeKey = "type"; - /// string, possibly long public const string WaysKey = "ways"; diff --git a/SabreTools.Data.Models/Metadata/DataArea.cs b/SabreTools.Data.Models/Metadata/DataArea.cs index 5bc474cf..07fe7cc1 100644 --- a/SabreTools.Data.Models/Metadata/DataArea.cs +++ b/SabreTools.Data.Models/Metadata/DataArea.cs @@ -8,15 +8,15 @@ namespace SabreTools.Data.Models.Metadata { #region Properties + /// (big|little) "little" + public Endianness? Endianness { get; set; } + public string? Name { get; set; } #endregion #region Keys - /// (big|little) "little" - public const string EndiannessKey = "endianness"; - /// Rom[] [NoFilter] public const string RomKey = "rom"; @@ -25,6 +25,7 @@ namespace SabreTools.Data.Models.Metadata public const string SizeKey = "size"; /// (8|16|32|64) "8" + /// TODO: Convert to enum public const string WidthKey = "width"; #endregion diff --git a/SabreTools.Data.Models/Metadata/Device.cs b/SabreTools.Data.Models/Metadata/Device.cs index 17b2076c..3d17f455 100644 --- a/SabreTools.Data.Models/Metadata/Device.cs +++ b/SabreTools.Data.Models/Metadata/Device.cs @@ -6,6 +6,13 @@ namespace SabreTools.Data.Models.Metadata [JsonObject("device"), XmlRoot("device")] public class Device : DatItem { + #region Properties + + /// (unknown|cartridge|floppydisk|harddisk|cylinder|cassette|punchcard|punchtape|printout|serial|parallel|snapshot|quickload|memcard|cdrom|magtape|romimage|midiin|midiout|picture|vidfile) + public DeviceType? DeviceType { get; set; } + + #endregion + #region Keys /// Extension[] @@ -23,14 +30,12 @@ namespace SabreTools.Data.Models.Metadata public const string InterfaceKey = "interface"; /// (0|1) "0" + /// TODO: Convert to bool? public const string MandatoryKey = "mandatory"; /// string public const string TagKey = "tag"; - /// (unknown|cartridge|floppydisk|harddisk|cylinder|cassette|punchcard|punchtape|printout|serial|parallel|snapshot|quickload|memcard|cdrom|magtape|romimage|midiin|midiout|picture|vidfile) - public const string DeviceTypeKey = "type"; - #endregion public Device() => ItemType = ItemType.Device; diff --git a/SabreTools.Data.Models/Metadata/Disk.cs b/SabreTools.Data.Models/Metadata/Disk.cs index 17510762..b1c77800 100644 --- a/SabreTools.Data.Models/Metadata/Disk.cs +++ b/SabreTools.Data.Models/Metadata/Disk.cs @@ -13,6 +13,9 @@ namespace SabreTools.Data.Models.Metadata /// (yes|no) "no" public bool? Optional { get; set; } + /// (baddump|nodump|good|verified) "good" + public ItemStatus? Status { get; set; } + /// (yes|no) "no" public bool? Writable { get; set; } @@ -38,9 +41,6 @@ namespace SabreTools.Data.Models.Metadata /// string public const string SHA1Key = "sha1"; - /// (baddump|nodump|good|verified) "good" - public const string StatusKey = "status"; - #endregion public Disk() => ItemType = ItemType.Disk; diff --git a/SabreTools.Data.Models/Metadata/Display.cs b/SabreTools.Data.Models/Metadata/Display.cs index e81b6ceb..71dee49e 100644 --- a/SabreTools.Data.Models/Metadata/Display.cs +++ b/SabreTools.Data.Models/Metadata/Display.cs @@ -8,6 +8,9 @@ namespace SabreTools.Data.Models.Metadata { #region Properties + /// (raster|vector|lcd|svg|unknown) + public DisplayType? DisplayType { get; set; } + /// (yes|no) "no" public bool? FlipX { get; set; } @@ -34,14 +37,12 @@ namespace SabreTools.Data.Models.Metadata public const string RefreshKey = "refresh"; /// (0|90|180|270) + /// TODO: Convert to enum public const string RotateKey = "rotate"; /// string public const string TagKey = "tag"; - /// (raster|vector|lcd|svg|unknown) - public const string DisplayTypeKey = "type"; - /// long public const string VBEndKey = "vbend"; diff --git a/SabreTools.Data.Models/Metadata/Driver.cs b/SabreTools.Data.Models/Metadata/Driver.cs index 4060acd5..8c2353e7 100644 --- a/SabreTools.Data.Models/Metadata/Driver.cs +++ b/SabreTools.Data.Models/Metadata/Driver.cs @@ -8,6 +8,18 @@ namespace SabreTools.Data.Models.Metadata { #region Properties + /// (plain|dirty) + public Blit? Blit { get; set; } + + /// (good|imperfect|preliminary) + public SupportStatus? Cocktail { get; set; } + + /// (good|imperfect|preliminary) + public SupportStatus? Color { get; set; } + + /// (good|imperfect|preliminary) + public SupportStatus? Emulation { get; set; } + /// (yes|no) "no" public bool? Incomplete { get; set; } @@ -17,6 +29,15 @@ namespace SabreTools.Data.Models.Metadata /// (yes|no) "no" public bool? RequiresArtwork { get; set; } + /// (supported|unsupported) + public Supported? SaveState { get; set; } + + /// (good|imperfect|preliminary) + public SupportStatus? Sound { get; set; } + + /// (good|imperfect|preliminary|test) + public SupportStatus? Status { get; set; } + /// (yes|no) "no" public bool? Unofficial { get; set; } @@ -24,30 +45,9 @@ namespace SabreTools.Data.Models.Metadata #region Keys - /// (plain|dirty) - public const string BlitKey = "blit"; - - /// (good|imperfect|preliminary) - public const string CocktailKey = "cocktail"; - - /// (good|imperfect|preliminary) - public const string ColorKey = "color"; - - /// (good|imperfect|preliminary) - public const string EmulationKey = "emulation"; - /// string, possibly long public const string PaletteSizeKey = "palettesize"; - /// (supported|unsupported) - public const string SaveStateKey = "savestate"; - - /// (good|imperfect|preliminary) - public const string SoundKey = "sound"; - - /// (good|imperfect|preliminary|test) - public const string StatusKey = "status"; - #endregion public Driver() => ItemType = ItemType.Driver; diff --git a/SabreTools.Data.Models/Metadata/Enums.cs b/SabreTools.Data.Models/Metadata/Enums.cs index cca49b14..35382d95 100644 --- a/SabreTools.Data.Models/Metadata/Enums.cs +++ b/SabreTools.Data.Models/Metadata/Enums.cs @@ -1,5 +1,17 @@ namespace SabreTools.Data.Models.Metadata { + /// + /// Determine the blit type + /// + public enum Blit + { + /// "plain" + Plain, + + /// "dirty" + Dirty, + } + /// /// Determine the chip type /// @@ -541,5 +553,8 @@ namespace SabreTools.Data.Models.Metadata /// "preliminary" Preliminary, + + /// "test" + Test, } } diff --git a/SabreTools.Data.Models/Metadata/Feature.cs b/SabreTools.Data.Models/Metadata/Feature.cs index 2195c262..0193ad78 100644 --- a/SabreTools.Data.Models/Metadata/Feature.cs +++ b/SabreTools.Data.Models/Metadata/Feature.cs @@ -8,21 +8,21 @@ namespace SabreTools.Data.Models.Metadata { #region Properties + /// (protection|timing|graphics|palette|sound|capture|camera|microphone|controls|keyboard|mouse|media|disk|printer|tape|punch|drum|rom|comms|lan|wan) + public FeatureType? FeatureType { get; set; } + public string? Name { get; set; } + /// (unemulated|imperfect) + public FeatureStatus? Overall { get; set; } + + /// (unemulated|imperfect) + public FeatureStatus? Status { get; set; } + #endregion #region Keys - /// (unemulated|imperfect) - public const string OverallKey = "overall"; - - /// (unemulated|imperfect) - public const string StatusKey = "status"; - - /// (protection|timing|graphics|palette|sound|capture|camera|microphone|controls|keyboard|mouse|media|disk|printer|tape|punch|drum|rom|comms|lan|wan) - public const string FeatureTypeKey = "type"; - /// string public const string ValueKey = "value"; diff --git a/SabreTools.Data.Models/Metadata/Header.cs b/SabreTools.Data.Models/Metadata/Header.cs index f4e98ea4..b1a6ca6a 100644 --- a/SabreTools.Data.Models/Metadata/Header.cs +++ b/SabreTools.Data.Models/Metadata/Header.cs @@ -8,9 +8,21 @@ namespace SabreTools.Data.Models.Metadata { #region Properties + /// (none|split|merged|nonmerged|fullmerged|device|full) "split" + public MergingFlag BiosMode { get; set; } + /// (yes|no) "no" public bool? Debug { get; set; } + /// (none|split|merged|nonmerged|fullmerged|device|full) "split" + public MergingFlag ForceMerging { get; set; } + + /// (obsolete|required|ignore) "obsolete" + public NodumpFlag ForceNodump { get; set; } + + /// (zip|unzip) "zip" + public PackingFlag ForcePacking { get; set; } + /// (yes|no) "yes" public bool? ForceZipping { get; set; } @@ -25,6 +37,12 @@ namespace SabreTools.Data.Models.Metadata public string? Name { get; set; } + /// (none|split|merged|nonmerged|fullmerged|device|full) "split" + public MergingFlag RomMode { get; set; } + + /// (none|split|merged|nonmerged|fullmerged|device|full) "split" + public MergingFlag SampleMode { get; set; } + #endregion #region Keys @@ -32,9 +50,6 @@ namespace SabreTools.Data.Models.Metadata /// string public const string AuthorKey = "author"; - /// (none|split|merged|nonmerged|fullmerged|device|full) "split" - public const string BiosModeKey = "biosmode"; - /// string public const string BuildKey = "build"; @@ -64,15 +79,6 @@ namespace SabreTools.Data.Models.Metadata /// string public const string EmulatorVersionKey = "emulatorversion"; - /// (none|split|merged|nonmerged|fullmerged|device|full) "split" - public const string ForceMergingKey = "forcemerging"; - - /// (obsolete|required|ignore) "obsolete" - public const string ForceNodumpKey = "forcenodump"; - - /// (zip|unzip) "zip" - public const string ForcePackingKey = "forcepacking"; - /// string, string[] public const string HeaderKey = "header"; @@ -112,18 +118,12 @@ namespace SabreTools.Data.Models.Metadata /// string public const string RefNameKey = "refname"; - /// (none|split|merged|nonmerged|fullmerged|device|full) "split" - public const string RomModeKey = "rommode"; - /// string public const string RomTitleKey = "romTitle"; /// string public const string RootDirKey = "rootdir"; - /// (none|split|merged|nonmerged|fullmerged|device|full) "split" - public const string SampleModeKey = "samplemode"; - /// string public const string SchemaLocationKey = "schemaLocation"; diff --git a/SabreTools.Data.Models/Metadata/Machine.cs b/SabreTools.Data.Models/Metadata/Machine.cs index ab98564c..2bdb8872 100644 --- a/SabreTools.Data.Models/Metadata/Machine.cs +++ b/SabreTools.Data.Models/Metadata/Machine.cs @@ -22,6 +22,9 @@ namespace SabreTools.Data.Models.Metadata /// (yes|partial|no) "no" public Runnable? Runnable { get; set; } + /// (yes|partial|no) "yes" + public Supported? Supported { get; set; } + #endregion #region Keys @@ -253,9 +256,6 @@ namespace SabreTools.Data.Models.Metadata /// string public const string StatusKey = "status"; - /// (yes|partial|no) "yes" - public const string SupportedKey = "supported"; - /// string public const string SystemKey = "system"; diff --git a/SabreTools.Data.Models/Metadata/Rom.cs b/SabreTools.Data.Models/Metadata/Rom.cs index 39195aac..d021dcc6 100644 --- a/SabreTools.Data.Models/Metadata/Rom.cs +++ b/SabreTools.Data.Models/Metadata/Rom.cs @@ -17,17 +17,26 @@ namespace SabreTools.Data.Models.Metadata /// (yes|no) "no" public bool? Inverted { get; set; } + /// (load16_byte|load16_word|load16_word_swap|load32_byte|load32_word|load32_word_swap|load32_dword|load64_word|load64_word_swap|reload|fill|continue|reload_plain|ignore) + public LoadFlag? LoadFlag { get; set; } + /// (yes|no) "no" public bool? MIA { get; set; } public string? Name { get; set; } + /// string; OpenMSX.RomBase + public OpenMSXSubType? OpenMSXMediaType { get; set; } + /// (yes|no) "no" public bool? Optional { get; set; } /// (yes|no) "no" public bool? SoundOnly { get; set; } + /// (baddump|nodump|good|verified) "good" + public ItemStatus? Status { get; set; } + #endregion #region Keys @@ -128,9 +137,6 @@ namespace SabreTools.Data.Models.Metadata /// string, possibly long; Also in ArchiveDotOrg.File public const string LengthKey = "length"; - /// (load16_byte|load16_word|load16_word_swap|load32_byte|load32_word|load32_word_swap|load32_dword|load64_word|load64_word_swap|reload|fill|continue|reload_plain|ignore) - public const string LoadFlagKey = "loadflag"; - /// string; ArchiveDotOrg.File public const string MatrixNumberKey = "matrix_number"; @@ -143,9 +149,6 @@ namespace SabreTools.Data.Models.Metadata /// string public const string MD5Key = "md5"; - /// string; OpenMSX.RomBase - public const string OpenMSXMediaType = "mediatype"; - /// string public const string MergeKey = "merge"; @@ -230,9 +233,6 @@ namespace SabreTools.Data.Models.Metadata /// string, possibly long; OpenMSX.RomBase public const string StartKey = "start"; - /// (baddump|nodump|good|verified) "good" - public const string StatusKey = "status"; - /// string; ArchiveDotOrg.File public const string SummationKey = "summation"; diff --git a/SabreTools.Data.Models/Metadata/Software.cs b/SabreTools.Data.Models/Metadata/Software.cs index 18e67e4d..6819bc82 100644 --- a/SabreTools.Data.Models/Metadata/Software.cs +++ b/SabreTools.Data.Models/Metadata/Software.cs @@ -10,6 +10,9 @@ namespace SabreTools.Data.Models.Metadata public string? Name { get; set; } + /// (yes|partial|no) "yes" + public Supported? Supported { get; set; } + #endregion #region Keys @@ -38,9 +41,6 @@ namespace SabreTools.Data.Models.Metadata [NoFilter] public const string SharedFeatKey = "sharedfeat"; - /// (yes|partial|no) "yes" - public const string SupportedKey = "supported"; - /// string public const string YearKey = "year"; diff --git a/SabreTools.Data.Models/Metadata/SoftwareList.cs b/SabreTools.Data.Models/Metadata/SoftwareList.cs index 8b51bb32..9486f3d4 100644 --- a/SabreTools.Data.Models/Metadata/SoftwareList.cs +++ b/SabreTools.Data.Models/Metadata/SoftwareList.cs @@ -10,6 +10,9 @@ namespace SabreTools.Data.Models.Metadata public string? Name { get; set; } + /// (original|compatible) + public SoftwareListStatus? Status { get; set; } + #endregion #region Keys @@ -27,9 +30,6 @@ namespace SabreTools.Data.Models.Metadata [NoFilter] public const string SoftwareKey = "software"; - /// (original|compatible) - public const string StatusKey = "status"; - /// string public const string TagKey = "tag"; diff --git a/SabreTools.Data.Models/Metadata/Video.cs b/SabreTools.Data.Models/Metadata/Video.cs index 406cb218..39754186 100644 --- a/SabreTools.Data.Models/Metadata/Video.cs +++ b/SabreTools.Data.Models/Metadata/Video.cs @@ -6,6 +6,13 @@ namespace SabreTools.Data.Models.Metadata [JsonObject("video"), XmlRoot("video")] public class Video : DatItem { + #region Properties + + /// (raster|vector) + public DisplayType? Screen { get; set; } + + #endregion + #region Keys /// long @@ -23,9 +30,6 @@ namespace SabreTools.Data.Models.Metadata /// double; Originally "freq" public const string RefreshKey = "refresh"; - /// (raster|vector) - public const string ScreenKey = "screen"; - /// long; Originally "x" public const string WidthKey = "width"; diff --git a/SabreTools.Data.Models/SeparatedValue/Row.cs b/SabreTools.Data.Models/SeparatedValue/Row.cs index 15f42fca..5fed32c0 100644 --- a/SabreTools.Data.Models/SeparatedValue/Row.cs +++ b/SabreTools.Data.Models/SeparatedValue/Row.cs @@ -1,4 +1,6 @@ +using SabreTools.Data.Models.Metadata; + namespace SabreTools.Data.Models.SeparatedValue { /// @@ -57,6 +59,6 @@ namespace SabreTools.Data.Models.SeparatedValue public string? SpamSum { get; set; } /// Status, Nodump - public string? Status { get; set; } + public ItemStatus? Status { get; set; } } } diff --git a/SabreTools.Data.Models/SoftwareList/DataArea.cs b/SabreTools.Data.Models/SoftwareList/DataArea.cs index 2ce98c0a..dfe7dfee 100644 --- a/SabreTools.Data.Models/SoftwareList/DataArea.cs +++ b/SabreTools.Data.Models/SoftwareList/DataArea.cs @@ -1,5 +1,6 @@ using System.Xml; using System.Xml.Serialization; +using SabreTools.Data.Models.Metadata; namespace SabreTools.Data.Models.SoftwareList { @@ -20,7 +21,7 @@ namespace SabreTools.Data.Models.SoftwareList /// (big|little) "little" [XmlAttribute("endianness")] - public string? Endianness { get; set; } + public Endianness? Endianness { get; set; } [XmlElement("rom")] public Rom[]? Rom { get; set; } diff --git a/SabreTools.Data.Models/SoftwareList/Disk.cs b/SabreTools.Data.Models/SoftwareList/Disk.cs index 9fddd1cb..642c8ab5 100644 --- a/SabreTools.Data.Models/SoftwareList/Disk.cs +++ b/SabreTools.Data.Models/SoftwareList/Disk.cs @@ -1,5 +1,6 @@ using System.Xml; using System.Xml.Serialization; +using SabreTools.Data.Models.Metadata; namespace SabreTools.Data.Models.SoftwareList { @@ -18,7 +19,7 @@ namespace SabreTools.Data.Models.SoftwareList /// (baddump|nodump|good) "good" [XmlAttribute("status")] - public string? Status { get; set; } + public ItemStatus? Status { get; set; } /// (yes|no) "no" [XmlAttribute("writable")] diff --git a/SabreTools.Data.Models/SoftwareList/Rom.cs b/SabreTools.Data.Models/SoftwareList/Rom.cs index 7044ebcf..265f8127 100644 --- a/SabreTools.Data.Models/SoftwareList/Rom.cs +++ b/SabreTools.Data.Models/SoftwareList/Rom.cs @@ -1,5 +1,6 @@ using System.Xml; using System.Xml.Serialization; +using SabreTools.Data.Models.Metadata; namespace SabreTools.Data.Models.SoftwareList { @@ -31,10 +32,10 @@ namespace SabreTools.Data.Models.SoftwareList /// (baddump|nodump|good) "good" [XmlAttribute("status")] - public string? Status { get; set; } + public ItemStatus? Status { get; set; } /// (load16_byte|load16_word|load16_word_swap|load32_byte|load32_word|load32_word_swap|load32_dword|load64_word|load64_word_swap|reload|fill|continue|reload_plain|ignore) [XmlAttribute("loadflag")] - public string? LoadFlag { get; set; } + public LoadFlag? LoadFlag { get; set; } } } diff --git a/SabreTools.Data.Models/SoftwareList/Software.cs b/SabreTools.Data.Models/SoftwareList/Software.cs index d7baaf09..74acbd35 100644 --- a/SabreTools.Data.Models/SoftwareList/Software.cs +++ b/SabreTools.Data.Models/SoftwareList/Software.cs @@ -1,5 +1,6 @@ using System.Xml; using System.Xml.Serialization; +using SabreTools.Data.Models.Metadata; namespace SabreTools.Data.Models.SoftwareList { @@ -15,7 +16,7 @@ namespace SabreTools.Data.Models.SoftwareList /// (yes|partial|no) "yes" [XmlAttribute("supported")] - public string? Supported { get; set; } + public Supported? Supported { get; set; } [Required] [XmlElement("description")] diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs index 9bdc43cd..dcdc1daf 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs @@ -108,9 +108,9 @@ namespace SabreTools.Metadata.DatFiles.Test ValidateDriver(driver); // All other fields are tested separately - Rom? dump = Array.Find(datItems, item => item is Rom rom && rom.ReadString(Data.Models.Metadata.Rom.OpenMSXMediaType) is not null) as Rom; + Rom? dump = Array.Find(datItems, item => item is Rom rom && rom.OpenMSXMediaType is not null) as Rom; Assert.NotNull(dump); - Assert.Equal("rom", dump.ReadString(Data.Models.Metadata.Rom.OpenMSXMediaType)); + Assert.Equal(Data.Models.Metadata.OpenMSXSubType.Rom, dump.OpenMSXMediaType); Feature? feature = Array.Find(datItems, item => item is Feature) as Feature; ValidateFeature(feature); @@ -158,7 +158,7 @@ namespace SabreTools.Metadata.DatFiles.Test Release? release = Array.Find(datItems, item => item is Release) as Release; ValidateRelease(release); - Rom? rom = Array.Find(datItems, item => item is Rom rom && !rom.DataAreaSpecified && !rom.PartSpecified && rom.ReadString(Data.Models.Metadata.Rom.OpenMSXMediaType) is null) as Rom; + Rom? rom = Array.Find(datItems, item => item is Rom rom && !rom.DataAreaSpecified && !rom.PartSpecified && rom.OpenMSXMediaType is null) as Rom; ValidateRom(rom); Sample? sample = Array.Find(datItems, item => item is Sample) as Sample; @@ -202,7 +202,7 @@ namespace SabreTools.Metadata.DatFiles.Test return new Data.Models.Metadata.Header { [Data.Models.Metadata.Header.AuthorKey] = "author", - [Data.Models.Metadata.Header.BiosModeKey] = "merged", + BiosMode = Data.Models.Metadata.MergingFlag.Merged, [Data.Models.Metadata.Header.BuildKey] = "build", [Data.Models.Metadata.Header.CanOpenKey] = canOpen, [Data.Models.Metadata.Header.CategoryKey] = "category", @@ -213,9 +213,9 @@ namespace SabreTools.Metadata.DatFiles.Test [Data.Models.Metadata.Header.DescriptionKey] = "description", [Data.Models.Metadata.Header.EmailKey] = "email", [Data.Models.Metadata.Header.EmulatorVersionKey] = "emulatorversion", - [Data.Models.Metadata.Header.ForceMergingKey] = "merged", - [Data.Models.Metadata.Header.ForceNodumpKey] = "required", - [Data.Models.Metadata.Header.ForcePackingKey] = "zip", + ForceMerging = Data.Models.Metadata.MergingFlag.Merged, + ForceNodump = Data.Models.Metadata.NodumpFlag.Required, + ForcePacking = Data.Models.Metadata.PackingFlag.Zip, ForceZipping = true, [Data.Models.Metadata.Header.HeaderKey] = "header", [Data.Models.Metadata.Header.HomepageKey] = "homepage", @@ -232,10 +232,10 @@ namespace SabreTools.Metadata.DatFiles.Test [Data.Models.Metadata.Header.NotesKey] = "notes", [Data.Models.Metadata.Header.PluginKey] = "plugin", [Data.Models.Metadata.Header.RefNameKey] = "refname", - [Data.Models.Metadata.Header.RomModeKey] = "merged", + RomMode = Data.Models.Metadata.MergingFlag.Merged, [Data.Models.Metadata.Header.RomTitleKey] = "romtitle", [Data.Models.Metadata.Header.RootDirKey] = "rootdir", - [Data.Models.Metadata.Header.SampleModeKey] = "merged", + SampleMode = Data.Models.Metadata.MergingFlag.Merged, [Data.Models.Metadata.Header.SchemaLocationKey] = "schemalocation", [Data.Models.Metadata.Header.ScreenshotsHeightKey] = "screenshotsheight", [Data.Models.Metadata.Header.ScreenshotsWidthKey] = "screenshotsWidth", @@ -323,7 +323,7 @@ namespace SabreTools.Metadata.DatFiles.Test [Data.Models.Metadata.Machine.SourceFileKey] = "sourcefile", [Data.Models.Metadata.Machine.SourceRomKey] = "sourcerom", [Data.Models.Metadata.Machine.StatusKey] = "status", - [Data.Models.Metadata.Machine.SupportedKey] = "yes", + Supported = Data.Models.Metadata.Supported.Yes, [Data.Models.Metadata.Machine.SystemKey] = "system", [Data.Models.Metadata.Machine.TagsKey] = "tags", [Data.Models.Metadata.Machine.TruripKey] = CreateMetadataTrurip(), @@ -409,7 +409,7 @@ namespace SabreTools.Metadata.DatFiles.Test Name = "name", SoundOnly = true, [Data.Models.Metadata.Chip.TagKey] = "tag", - [Data.Models.Metadata.Chip.ChipTypeKey] = "cpu", + ChipType = Data.Models.Metadata.ChipType.CPU, }; } @@ -432,7 +432,7 @@ namespace SabreTools.Metadata.DatFiles.Test { [Data.Models.Metadata.Condition.ValueKey] = "value", [Data.Models.Metadata.Condition.MaskKey] = "mask", - [Data.Models.Metadata.Condition.RelationKey] = "eq", + Relation = Data.Models.Metadata.Relation.Equal, [Data.Models.Metadata.Condition.TagKey] = "tag", }; } @@ -470,7 +470,7 @@ namespace SabreTools.Metadata.DatFiles.Test [Data.Models.Metadata.Control.ReqButtonsKey] = 12345L, Reverse = true, [Data.Models.Metadata.Control.SensitivityKey] = 12345L, - [Data.Models.Metadata.Control.ControlTypeKey] = "lightgun", + ControlType = Data.Models.Metadata.ControlType.Lightgun, [Data.Models.Metadata.Control.WaysKey] = "ways", [Data.Models.Metadata.Control.Ways2Key] = "ways2", [Data.Models.Metadata.Control.Ways3Key] = "ways3", @@ -487,7 +487,7 @@ namespace SabreTools.Metadata.DatFiles.Test [Data.Models.Metadata.Device.InterfaceKey] = "interface", [Data.Models.Metadata.Device.MandatoryKey] = 1L, [Data.Models.Metadata.Device.TagKey] = "tag", - [Data.Models.Metadata.Device.DeviceTypeKey] = "punchtape", + DeviceType = Data.Models.Metadata.DeviceType.PunchTape, }; } @@ -539,7 +539,7 @@ namespace SabreTools.Metadata.DatFiles.Test { return new Data.Models.Metadata.DataArea { - [Data.Models.Metadata.DataArea.EndiannessKey] = "big", + Endianness = Data.Models.Metadata.Endianness.Big, Name = "name", [Data.Models.Metadata.DataArea.RomKey] = new Data.Models.Metadata.Rom[] { [] }, [Data.Models.Metadata.DataArea.SizeKey] = 12345L, @@ -585,7 +585,7 @@ namespace SabreTools.Metadata.DatFiles.Test [Data.Models.Metadata.Display.RefreshKey] = 12345L, [Data.Models.Metadata.Display.RotateKey] = 90, [Data.Models.Metadata.Display.TagKey] = "tag", - [Data.Models.Metadata.Display.DisplayTypeKey] = "vector", + DisplayType = Data.Models.Metadata.DisplayType.Vector, [Data.Models.Metadata.Display.VBEndKey] = 12345L, [Data.Models.Metadata.Display.VBStartKey] = 12345L, [Data.Models.Metadata.Display.VTotalKey] = 12345L, @@ -597,17 +597,17 @@ namespace SabreTools.Metadata.DatFiles.Test { return new Data.Models.Metadata.Driver { - [Data.Models.Metadata.Driver.BlitKey] = "plain", - [Data.Models.Metadata.Driver.CocktailKey] = "good", - [Data.Models.Metadata.Driver.ColorKey] = "good", - [Data.Models.Metadata.Driver.EmulationKey] = "good", + Blit = Data.Models.Metadata.Blit.Plain, + Cocktail = Data.Models.Metadata.SupportStatus.Good, + Color = Data.Models.Metadata.SupportStatus.Good, + Emulation = Data.Models.Metadata.SupportStatus.Good, Incomplete = true, NoSoundHardware = true, [Data.Models.Metadata.Driver.PaletteSizeKey] = "pallettesize", RequiresArtwork = true, - [Data.Models.Metadata.Driver.SaveStateKey] = "supported", - [Data.Models.Metadata.Driver.SoundKey] = "good", - [Data.Models.Metadata.Driver.StatusKey] = "good", + SaveState = Data.Models.Metadata.Supported.Yes, + Sound = Data.Models.Metadata.SupportStatus.Good, + Status = Data.Models.Metadata.SupportStatus.Good, Unofficial = true, }; } @@ -640,9 +640,9 @@ namespace SabreTools.Metadata.DatFiles.Test return new Data.Models.Metadata.Feature { Name = "name", - [Data.Models.Metadata.Feature.OverallKey] = "imperfect", - [Data.Models.Metadata.Feature.StatusKey] = "imperfect", - [Data.Models.Metadata.Feature.FeatureTypeKey] = "protection", + Overall = Data.Models.Metadata.FeatureStatus.Imperfect, + Status = Data.Models.Metadata.FeatureStatus.Imperfect, + FeatureType = Data.Models.Metadata.FeatureType.Protection, [Data.Models.Metadata.Feature.ValueKey] = "value", }; } @@ -805,7 +805,7 @@ namespace SabreTools.Metadata.DatFiles.Test Inverted = true, [Data.Models.Metadata.Rom.LastModifiedTimeKey] = "mtime", [Data.Models.Metadata.Rom.LengthKey] = "length", - [Data.Models.Metadata.Rom.LoadFlagKey] = "load16_byte", + LoadFlag = Data.Models.Metadata.LoadFlag.Load16Byte, [Data.Models.Metadata.Rom.MatrixNumberKey] = "matrix_number", [Data.Models.Metadata.Rom.MD2Key] = HashType.MD2.ZeroString, [Data.Models.Metadata.Rom.MD4Key] = HashType.MD4.ZeroString, @@ -843,7 +843,7 @@ namespace SabreTools.Metadata.DatFiles.Test [Data.Models.Metadata.Rom.SourceKey] = "source", [Data.Models.Metadata.Rom.SpamSumKey] = HashType.SpamSum.ZeroString, [Data.Models.Metadata.Rom.StartKey] = "start", - [Data.Models.Metadata.Rom.StatusKey] = "good", + Status = Data.Models.Metadata.ItemStatus.Good, [Data.Models.Metadata.Rom.SummationKey] = "summation", [Data.Models.Metadata.Rom.TitleKey] = "title", [Data.Models.Metadata.Rom.TrackKey] = "track", @@ -938,7 +938,7 @@ namespace SabreTools.Metadata.DatFiles.Test [Data.Models.Metadata.Software.PartKey] = new Data.Models.Metadata.Part[] { CreateMetadataPart() }, [Data.Models.Metadata.Software.PublisherKey] = "publisher", [Data.Models.Metadata.Software.SharedFeatKey] = new Data.Models.Metadata.SharedFeat[] { CreateMetadataSharedFeat() }, - [Data.Models.Metadata.Software.SupportedKey] = true, + Supported = Data.Models.Metadata.Supported.Yes, [Data.Models.Metadata.Software.YearKey] = "year", }; } @@ -952,7 +952,7 @@ namespace SabreTools.Metadata.DatFiles.Test Name = "name", [Data.Models.Metadata.SoftwareList.NotesKey] = "notes", [Data.Models.Metadata.SoftwareList.SoftwareKey] = new Data.Models.Metadata.Software[] { CreateMetadataSoftware() }, - [Data.Models.Metadata.SoftwareList.StatusKey] = "original", + Status = Data.Models.Metadata.SoftwareListStatus.Original, [Data.Models.Metadata.SoftwareList.TagKey] = "tag", }; } @@ -1026,7 +1026,7 @@ namespace SabreTools.Metadata.DatFiles.Test [Data.Models.Metadata.Video.HeightKey] = 12345L, [Data.Models.Metadata.Video.OrientationKey] = "vertical", [Data.Models.Metadata.Video.RefreshKey] = 12345L, - [Data.Models.Metadata.Video.ScreenKey] = "vector", + Screen = Data.Models.Metadata.DisplayType.Vector, [Data.Models.Metadata.Video.WidthKey] = 12345L, }; } @@ -1038,7 +1038,7 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateHeader(DatHeader datHeader) { Assert.Equal("author", datHeader.ReadString(Data.Models.Metadata.Header.AuthorKey)); - Assert.Equal("merged", datHeader.ReadString(Data.Models.Metadata.Header.BiosModeKey)); + Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, datHeader.BiosMode); Assert.Equal("build", datHeader.ReadString(Data.Models.Metadata.Header.BuildKey)); Assert.Equal("ext", datHeader.ReadString(Data.Models.Metadata.Header.CanOpenKey)); Assert.Equal("category", datHeader.ReadString(Data.Models.Metadata.Header.CategoryKey)); @@ -1049,9 +1049,9 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("description", datHeader.ReadString(Data.Models.Metadata.Header.DescriptionKey)); Assert.Equal("email", datHeader.ReadString(Data.Models.Metadata.Header.EmailKey)); Assert.Equal("emulatorversion", datHeader.ReadString(Data.Models.Metadata.Header.EmulatorVersionKey)); - Assert.Equal("merged", datHeader.ReadString(Data.Models.Metadata.Header.ForceMergingKey)); - Assert.Equal("required", datHeader.ReadString(Data.Models.Metadata.Header.ForceNodumpKey)); - Assert.Equal("zip", datHeader.ReadString(Data.Models.Metadata.Header.ForcePackingKey)); + Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, datHeader.ForceMerging); + Assert.Equal(Data.Models.Metadata.NodumpFlag.Required, datHeader.ForceNodump); + Assert.Equal(Data.Models.Metadata.PackingFlag.Zip, datHeader.ForcePacking); Assert.True(datHeader.ForceZipping); Assert.Equal("header", datHeader.ReadString(Data.Models.Metadata.Header.HeaderKey)); Assert.Equal("homepage", datHeader.ReadString(Data.Models.Metadata.Header.HomepageKey)); @@ -1068,10 +1068,10 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("notes", datHeader.ReadString(Data.Models.Metadata.Header.NotesKey)); Assert.Equal("plugin", datHeader.ReadString(Data.Models.Metadata.Header.PluginKey)); Assert.Equal("refname", datHeader.ReadString(Data.Models.Metadata.Header.RefNameKey)); - Assert.Equal("merged", datHeader.ReadString(Data.Models.Metadata.Header.RomModeKey)); + Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, datHeader.RomMode); Assert.Equal("romtitle", datHeader.ReadString(Data.Models.Metadata.Header.RomTitleKey)); Assert.Equal("rootdir", datHeader.ReadString(Data.Models.Metadata.Header.RootDirKey)); - Assert.Equal("merged", datHeader.ReadString(Data.Models.Metadata.Header.SampleModeKey)); + Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, datHeader.SampleMode); Assert.Equal("schemalocation", datHeader.ReadString(Data.Models.Metadata.Header.SchemaLocationKey)); Assert.Equal("screenshotsheight", datHeader.ReadString(Data.Models.Metadata.Header.ScreenshotsHeightKey)); Assert.Equal("screenshotsWidth", datHeader.ReadString(Data.Models.Metadata.Header.ScreenshotsWidthKey)); @@ -1131,7 +1131,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("sourcefile", machine.ReadString(Data.Models.Metadata.Machine.SourceFileKey)); Assert.Equal("sourcerom", machine.ReadString(Data.Models.Metadata.Machine.SourceRomKey)); Assert.Equal("status", machine.ReadString(Data.Models.Metadata.Machine.StatusKey)); - Assert.Equal("yes", machine.ReadString(Data.Models.Metadata.Machine.SupportedKey)); + Assert.Equal(Data.Models.Metadata.Supported.Yes, machine.Supported); Assert.Equal("system", machine.ReadString(Data.Models.Metadata.Machine.SystemKey)); Assert.Equal("tags", machine.ReadString(Data.Models.Metadata.Machine.TagsKey)); Assert.Equal("year", machine.ReadString(Data.Models.Metadata.Machine.YearKey)); @@ -1179,7 +1179,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("name", chip.GetName()); Assert.True(chip.SoundOnly); Assert.Equal("tag", chip.ReadString(Data.Models.Metadata.Chip.TagKey)); - Assert.Equal("cpu", chip.ReadString(Data.Models.Metadata.Chip.ChipTypeKey)); + Assert.Equal(Data.Models.Metadata.ChipType.CPU, chip.ChipType); } private static void ValidateCondition(Condition? condition) @@ -1187,7 +1187,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(condition); Assert.Equal("value", condition.ReadString(Data.Models.Metadata.Condition.ValueKey)); Assert.Equal("mask", condition.ReadString(Data.Models.Metadata.Condition.MaskKey)); - Assert.Equal("eq", condition.ReadString(Data.Models.Metadata.Condition.RelationKey)); + Assert.Equal(Data.Models.Metadata.Relation.Equal, condition.Relation); Assert.Equal("tag", condition.ReadString(Data.Models.Metadata.Condition.TagKey)); } @@ -1242,7 +1242,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal(12345L, control.ReadLong(Data.Models.Metadata.Control.ReqButtonsKey)); Assert.True(control.Reverse); Assert.Equal(12345L, control.ReadLong(Data.Models.Metadata.Control.SensitivityKey)); - Assert.Equal("lightgun", control.ReadString(Data.Models.Metadata.Control.ControlTypeKey)); + Assert.Equal(Data.Models.Metadata.ControlType.Lightgun, control.ControlType); Assert.Equal("ways", control.ReadString(Data.Models.Metadata.Control.WaysKey)); Assert.Equal("ways2", control.ReadString(Data.Models.Metadata.Control.Ways2Key)); Assert.Equal("ways3", control.ReadString(Data.Models.Metadata.Control.Ways3Key)); @@ -1251,7 +1251,7 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateDataArea(DataArea? dataArea) { Assert.NotNull(dataArea); - Assert.Equal("big", dataArea.ReadString(Data.Models.Metadata.DataArea.EndiannessKey)); + Assert.Equal(Data.Models.Metadata.Endianness.Big, dataArea.Endianness); Assert.Equal("name", dataArea.GetName()); Assert.Equal(12345L, dataArea.ReadLong(Data.Models.Metadata.DataArea.SizeKey)); Assert.Equal(64, dataArea.ReadLong(Data.Models.Metadata.DataArea.WidthKey)); @@ -1264,7 +1264,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("interface", device.ReadString(Data.Models.Metadata.Device.InterfaceKey)); Assert.Equal(1, device.ReadLong(Data.Models.Metadata.Device.MandatoryKey)); Assert.Equal("tag", device.ReadString(Data.Models.Metadata.Device.TagKey)); - Assert.Equal("punchtape", device.ReadString(Data.Models.Metadata.Device.DeviceTypeKey)); + Assert.Equal(Data.Models.Metadata.DeviceType.PunchTape, device.DeviceType); Extension[]? extensions = device.Read(Data.Models.Metadata.Device.ExtensionKey); Assert.NotNull(extensions); @@ -1359,7 +1359,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Display.RefreshKey)); Assert.Equal(90, display.ReadLong(Data.Models.Metadata.Display.RotateKey)); Assert.Equal("tag", display.ReadString(Data.Models.Metadata.Display.TagKey)); - Assert.Equal("vector", display.ReadString(Data.Models.Metadata.Display.DisplayTypeKey)); + Assert.Equal(Data.Models.Metadata.DisplayType.Vector, display.DisplayType); Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Display.VBEndKey)); Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Display.VBStartKey)); Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Display.VTotalKey)); @@ -1369,17 +1369,17 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateDriver(Driver? driver) { Assert.NotNull(driver); - Assert.Equal("plain", driver.ReadString(Data.Models.Metadata.Driver.BlitKey)); - Assert.Equal("good", driver.ReadString(Data.Models.Metadata.Driver.CocktailKey)); - Assert.Equal("good", driver.ReadString(Data.Models.Metadata.Driver.ColorKey)); - Assert.Equal("good", driver.ReadString(Data.Models.Metadata.Driver.EmulationKey)); + Assert.Equal(Data.Models.Metadata.Blit.Plain, driver.Blit); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Cocktail); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Color); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Emulation); Assert.True(driver.Incomplete); Assert.True(driver.NoSoundHardware); Assert.Equal("pallettesize", driver.ReadString(Data.Models.Metadata.Driver.PaletteSizeKey)); Assert.True(driver.RequiresArtwork); - Assert.Equal("supported", driver.ReadString(Data.Models.Metadata.Driver.SaveStateKey)); - Assert.Equal("good", driver.ReadString(Data.Models.Metadata.Driver.SoundKey)); - Assert.Equal("good", driver.ReadString(Data.Models.Metadata.Driver.StatusKey)); + Assert.Equal(Data.Models.Metadata.Supported.Yes, driver.SaveState); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Sound); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Status); Assert.True(driver.Unofficial); } @@ -1393,9 +1393,9 @@ namespace SabreTools.Metadata.DatFiles.Test { Assert.NotNull(feature); Assert.Equal("name", feature.GetName()); - Assert.Equal("imperfect", feature.ReadString(Data.Models.Metadata.Feature.OverallKey)); - Assert.Equal("imperfect", feature.ReadString(Data.Models.Metadata.Feature.StatusKey)); - Assert.Equal("protection", feature.ReadString(Data.Models.Metadata.Feature.FeatureTypeKey)); + Assert.Equal(Data.Models.Metadata.FeatureStatus.Imperfect, feature.Overall); + Assert.Equal(Data.Models.Metadata.FeatureStatus.Imperfect, feature.Status); + Assert.Equal(Data.Models.Metadata.FeatureType.Protection, feature.FeatureType); Assert.Equal("value", feature.ReadString(Data.Models.Metadata.Feature.ValueKey)); } @@ -1449,9 +1449,9 @@ namespace SabreTools.Metadata.DatFiles.Test { Assert.NotNull(partFeature); Assert.Equal("name", partFeature.GetName()); - Assert.Equal("imperfect", partFeature.ReadString(Data.Models.Metadata.Feature.OverallKey)); - Assert.Equal("imperfect", partFeature.ReadString(Data.Models.Metadata.Feature.StatusKey)); - Assert.Equal("protection", partFeature.ReadString(Data.Models.Metadata.Feature.FeatureTypeKey)); + Assert.Equal(Data.Models.Metadata.FeatureStatus.Imperfect, partFeature.Overall); + Assert.Equal(Data.Models.Metadata.FeatureStatus.Imperfect, partFeature.Status); + Assert.Equal(Data.Models.Metadata.FeatureType.Protection, partFeature.FeatureType); Assert.Equal("value", partFeature.ReadString(Data.Models.Metadata.Feature.ValueKey)); Part? part = partFeature.Read(PartFeature.PartKey); @@ -1525,12 +1525,12 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.True(rom.Inverted); Assert.Equal("mtime", rom.ReadString(Data.Models.Metadata.Rom.LastModifiedTimeKey)); Assert.Equal("length", rom.ReadString(Data.Models.Metadata.Rom.LengthKey)); - Assert.Equal("load16_byte", rom.ReadString(Data.Models.Metadata.Rom.LoadFlagKey)); + Assert.Equal(Data.Models.Metadata.LoadFlag.Load16Byte, rom.LoadFlag); Assert.Equal("matrix_number", rom.ReadString(Data.Models.Metadata.Rom.MatrixNumberKey)); Assert.Equal(HashType.MD2.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.MD2Key)); Assert.Equal(HashType.MD4.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.MD4Key)); Assert.Equal(HashType.MD5.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.MD5Key)); - Assert.Null(rom.ReadString(Data.Models.Metadata.Rom.OpenMSXMediaType)); // Omit due to other test + Assert.Null(rom.OpenMSXMediaType); // Omit due to other test Assert.Equal("merge", rom.ReadString(Data.Models.Metadata.Rom.MergeKey)); Assert.True(rom.MIA); Assert.Equal("name", rom.GetName()); @@ -1563,7 +1563,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("source", rom.ReadString(Data.Models.Metadata.Rom.SourceKey)); Assert.Equal(HashType.SpamSum.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.SpamSumKey)); Assert.Equal("start", rom.ReadString(Data.Models.Metadata.Rom.StartKey)); - Assert.Equal("good", rom.ReadString(Data.Models.Metadata.Rom.StatusKey)); + Assert.Equal(Data.Models.Metadata.ItemStatus.Good, rom.Status); Assert.Equal("summation", rom.ReadString(Data.Models.Metadata.Rom.SummationKey)); Assert.Equal("title", rom.ReadString(Data.Models.Metadata.Rom.TitleKey)); Assert.Equal("track", rom.ReadString(Data.Models.Metadata.Rom.TrackKey)); @@ -1628,7 +1628,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("name", softwareList.GetName()); 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("original", softwareList.ReadString(Data.Models.Metadata.SoftwareList.StatusKey)); + Assert.Equal(Data.Models.Metadata.SoftwareListStatus.Original, softwareList.Status); Assert.Equal("tag", softwareList.ReadString(Data.Models.Metadata.SoftwareList.TagKey)); } @@ -1663,7 +1663,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(display); Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Video.AspectXKey)); Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Video.AspectYKey)); - Assert.Equal("vector", display.ReadString(Data.Models.Metadata.Display.DisplayTypeKey)); + Assert.Equal(Data.Models.Metadata.DisplayType.Vector, display.DisplayType); Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Display.HeightKey)); Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Display.RefreshKey)); Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Display.WidthKey)); diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs index bb8b379e..2bfb50e0 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs @@ -374,7 +374,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Assert.NotNull(header); Assert.Equal("author", header.ReadString(Data.Models.Metadata.Header.AuthorKey)); - Assert.Equal("merged", header.ReadString(Data.Models.Metadata.Header.BiosModeKey)); + Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, header.BiosMode); Assert.Equal("build", header.ReadString(Data.Models.Metadata.Header.BuildKey)); Assert.NotNull(header.Read(Data.Models.Metadata.Header.CanOpenKey)); Assert.Equal("category", header.ReadString(Data.Models.Metadata.Header.CategoryKey)); @@ -385,9 +385,9 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("description", header.ReadString(Data.Models.Metadata.Header.DescriptionKey)); Assert.Equal("email", header.ReadString(Data.Models.Metadata.Header.EmailKey)); Assert.Equal("emulatorversion", header.ReadString(Data.Models.Metadata.Header.EmulatorVersionKey)); - Assert.Equal("merged", header.ReadString(Data.Models.Metadata.Header.ForceMergingKey)); - Assert.Equal("required", header.ReadString(Data.Models.Metadata.Header.ForceNodumpKey)); - Assert.Equal("zip", header.ReadString(Data.Models.Metadata.Header.ForcePackingKey)); + Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, header.ForceMerging); + Assert.Equal(Data.Models.Metadata.NodumpFlag.Required, header.ForceNodump); + Assert.Equal(Data.Models.Metadata.PackingFlag.Zip, header.ForcePacking); Assert.True(header.ForceZipping); Assert.Equal("header", header.ReadString(Data.Models.Metadata.Header.HeaderKey)); Assert.Equal("homepage", header.ReadString(Data.Models.Metadata.Header.HomepageKey)); @@ -404,10 +404,10 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("notes", header.ReadString(Data.Models.Metadata.Header.NotesKey)); Assert.Equal("plugin", header.ReadString(Data.Models.Metadata.Header.PluginKey)); Assert.Equal("refname", header.ReadString(Data.Models.Metadata.Header.RefNameKey)); - Assert.Equal("merged", header.ReadString(Data.Models.Metadata.Header.RomModeKey)); + Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, header.RomMode); Assert.Equal("romtitle", header.ReadString(Data.Models.Metadata.Header.RomTitleKey)); Assert.Equal("rootdir", header.ReadString(Data.Models.Metadata.Header.RootDirKey)); - Assert.Equal("merged", header.ReadString(Data.Models.Metadata.Header.SampleModeKey)); + Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, header.SampleMode); Assert.Equal("schemalocation", header.ReadString(Data.Models.Metadata.Header.SchemaLocationKey)); Assert.Equal("screenshotsheight", header.ReadString(Data.Models.Metadata.Header.ScreenshotsHeightKey)); Assert.Equal("screenshotsWidth", header.ReadString(Data.Models.Metadata.Header.ScreenshotsWidthKey)); @@ -466,7 +466,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("sourcefile", machine.ReadString(Data.Models.Metadata.Machine.SourceFileKey)); Assert.Equal("sourcerom", machine.ReadString(Data.Models.Metadata.Machine.SourceRomKey)); Assert.Equal("status", machine.ReadString(Data.Models.Metadata.Machine.StatusKey)); - Assert.Equal("yes", machine.ReadString(Data.Models.Metadata.Machine.SupportedKey)); + Assert.Equal(Data.Models.Metadata.Supported.Yes, machine.Supported); Assert.Equal("system", machine.ReadString(Data.Models.Metadata.Machine.SystemKey)); Assert.Equal("tags", machine.ReadString(Data.Models.Metadata.Machine.TagsKey)); Assert.Equal("year", machine.ReadString(Data.Models.Metadata.Machine.YearKey)); @@ -686,7 +686,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("name", chip.Name); Assert.True(chip.SoundOnly); Assert.Equal("tag", chip.ReadString(Data.Models.Metadata.Chip.TagKey)); - Assert.Equal("cpu", chip.ReadString(Data.Models.Metadata.Chip.ChipTypeKey)); + Assert.Equal(Data.Models.Metadata.ChipType.CPU, chip.ChipType); } private static void ValidateMetadataCondition(Data.Models.Metadata.Condition? condition) @@ -694,7 +694,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(condition); Assert.Equal("value", condition.ReadString(Data.Models.Metadata.Condition.ValueKey)); Assert.Equal("mask", condition.ReadString(Data.Models.Metadata.Condition.MaskKey)); - Assert.Equal("eq", condition.ReadString(Data.Models.Metadata.Condition.RelationKey)); + Assert.Equal(Data.Models.Metadata.Relation.Equal, condition.Relation); Assert.Equal("tag", condition.ReadString(Data.Models.Metadata.Condition.TagKey)); } @@ -749,7 +749,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal(12345, control.ReadLong(Data.Models.Metadata.Control.ReqButtonsKey)); Assert.True(control.Reverse); Assert.Equal(12345, control.ReadLong(Data.Models.Metadata.Control.SensitivityKey)); - Assert.Equal("lightgun", control.ReadString(Data.Models.Metadata.Control.ControlTypeKey)); + Assert.Equal(Data.Models.Metadata.ControlType.Lightgun, control.ControlType); Assert.Equal("ways", control.ReadString(Data.Models.Metadata.Control.WaysKey)); Assert.Equal("ways2", control.ReadString(Data.Models.Metadata.Control.Ways2Key)); Assert.Equal("ways3", control.ReadString(Data.Models.Metadata.Control.Ways3Key)); @@ -758,7 +758,7 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateMetadataDataArea(Data.Models.Metadata.DataArea? dataArea) { Assert.NotNull(dataArea); - Assert.Equal("big", dataArea.ReadString(Data.Models.Metadata.DataArea.EndiannessKey)); + Assert.Equal(Data.Models.Metadata.Endianness.Big, dataArea.Endianness); Assert.Equal("name", dataArea.Name); Assert.Equal(12345, dataArea.ReadLong(Data.Models.Metadata.DataArea.SizeKey)); Assert.Equal(64, dataArea.ReadLong(Data.Models.Metadata.DataArea.WidthKey)); @@ -776,7 +776,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("interface", device.ReadString(Data.Models.Metadata.Device.InterfaceKey)); Assert.Equal(1, device.ReadLong(Data.Models.Metadata.Device.MandatoryKey)); Assert.Equal("tag", device.ReadString(Data.Models.Metadata.Device.TagKey)); - Assert.Equal("punchtape", device.ReadString(Data.Models.Metadata.Device.DeviceTypeKey)); + Assert.Equal(Data.Models.Metadata.DeviceType.PunchTape, device.DeviceType); Data.Models.Metadata.Extension[]? extensions = device.ReadArray(Data.Models.Metadata.Device.ExtensionKey); Assert.NotNull(extensions); @@ -876,7 +876,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal(12345, display.ReadLong(Data.Models.Metadata.Display.RefreshKey)); Assert.Equal(90, display.ReadLong(Data.Models.Metadata.Display.RotateKey)); Assert.Equal("tag", display.ReadString(Data.Models.Metadata.Display.TagKey)); - Assert.Equal("vector", display.ReadString(Data.Models.Metadata.Display.DisplayTypeKey)); + Assert.Equal(Data.Models.Metadata.DisplayType.Vector, display.DisplayType); Assert.Equal(12345, display.ReadLong(Data.Models.Metadata.Display.VBEndKey)); Assert.Equal(12345, display.ReadLong(Data.Models.Metadata.Display.VBStartKey)); Assert.Equal(12345, display.ReadLong(Data.Models.Metadata.Display.VTotalKey)); @@ -886,17 +886,17 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateMetadataDriver(Data.Models.Metadata.Driver? driver) { Assert.NotNull(driver); - Assert.Equal("plain", driver.ReadString(Data.Models.Metadata.Driver.BlitKey)); - Assert.Equal("good", driver.ReadString(Data.Models.Metadata.Driver.CocktailKey)); - Assert.Equal("good", driver.ReadString(Data.Models.Metadata.Driver.ColorKey)); - Assert.Equal("good", driver.ReadString(Data.Models.Metadata.Driver.EmulationKey)); + Assert.Equal(Data.Models.Metadata.Blit.Plain, driver.Blit); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Cocktail); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Color); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Emulation); Assert.True(driver.Incomplete); Assert.True(driver.NoSoundHardware); Assert.Equal("pallettesize", driver.ReadString(Data.Models.Metadata.Driver.PaletteSizeKey)); Assert.True(driver.RequiresArtwork); - Assert.Equal("supported", driver.ReadString(Data.Models.Metadata.Driver.SaveStateKey)); - Assert.Equal("good", driver.ReadString(Data.Models.Metadata.Driver.SoundKey)); - Assert.Equal("good", driver.ReadString(Data.Models.Metadata.Driver.StatusKey)); + Assert.Equal(Data.Models.Metadata.Supported.Yes, driver.SaveState); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Sound); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Status); Assert.True(driver.Unofficial); } @@ -910,9 +910,9 @@ namespace SabreTools.Metadata.DatFiles.Test { Assert.NotNull(feature); Assert.Equal("name", feature.Name); - Assert.Equal("imperfect", feature.ReadString(Data.Models.Metadata.Feature.OverallKey)); - Assert.Equal("imperfect", feature.ReadString(Data.Models.Metadata.Feature.StatusKey)); - Assert.Equal("protection", feature.ReadString(Data.Models.Metadata.Feature.FeatureTypeKey)); + Assert.Equal(Data.Models.Metadata.FeatureStatus.Imperfect, feature.Overall); + Assert.Equal(Data.Models.Metadata.FeatureStatus.Imperfect, feature.Status); + Assert.Equal(Data.Models.Metadata.FeatureType.Protection, feature.FeatureType); Assert.Equal("value", feature.ReadString(Data.Models.Metadata.Feature.ValueKey)); } @@ -1070,12 +1070,12 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.True(rom.Inverted); Assert.Equal("mtime", rom.ReadString(Data.Models.Metadata.Rom.LastModifiedTimeKey)); Assert.Equal("length", rom.ReadString(Data.Models.Metadata.Rom.LengthKey)); - Assert.Equal("load16_byte", rom.ReadString(Data.Models.Metadata.Rom.LoadFlagKey)); + Assert.Equal(Data.Models.Metadata.LoadFlag.Load16Byte, rom.LoadFlag); Assert.Equal("matrix_number", rom.ReadString(Data.Models.Metadata.Rom.MatrixNumberKey)); Assert.Equal(HashType.MD2.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.MD2Key)); Assert.Equal(HashType.MD4.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.MD4Key)); Assert.Equal(HashType.MD5.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.MD5Key)); - Assert.Null(rom.ReadString(Data.Models.Metadata.Rom.OpenMSXMediaType)); // Omit due to other test + Assert.Null(rom.OpenMSXMediaType); // Omit due to other test Assert.Equal("merge", rom.ReadString(Data.Models.Metadata.Rom.MergeKey)); Assert.True(rom.MIA); Assert.Equal("name", rom.Name); @@ -1108,7 +1108,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("source", rom.ReadString(Data.Models.Metadata.Rom.SourceKey)); Assert.Equal(HashType.SpamSum.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.SpamSumKey)); Assert.Equal("start", rom.ReadString(Data.Models.Metadata.Rom.StartKey)); - Assert.Equal("good", rom.ReadString(Data.Models.Metadata.Rom.StatusKey)); + Assert.Equal(Data.Models.Metadata.ItemStatus.Good, rom.Status); Assert.Equal("summation", rom.ReadString(Data.Models.Metadata.Rom.SummationKey)); Assert.Equal("title", rom.ReadString(Data.Models.Metadata.Rom.TitleKey)); Assert.Equal("track", rom.ReadString(Data.Models.Metadata.Rom.TrackKey)); @@ -1191,7 +1191,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("filter", softwareList.ReadString(Data.Models.Metadata.SoftwareList.FilterKey)); Assert.Equal("name", softwareList.Name); Assert.Equal("notes", softwareList.ReadString(Data.Models.Metadata.SoftwareList.NotesKey)); - Assert.Equal("original", softwareList.ReadString(Data.Models.Metadata.SoftwareList.StatusKey)); + Assert.Equal(Data.Models.Metadata.SoftwareListStatus.Original, softwareList.Status); Assert.Equal("tag", softwareList.ReadString(Data.Models.Metadata.SoftwareList.TagKey)); // TODO: Figure out why Data.Models.Metadata.SoftwareList.SoftwareKey doesn't get processed @@ -1259,7 +1259,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal(12345, video.ReadLong(Data.Models.Metadata.Video.HeightKey)); Assert.Equal("vertical", video.ReadString(Data.Models.Metadata.Video.OrientationKey)); Assert.Equal(12345, video.ReadLong(Data.Models.Metadata.Video.RefreshKey)); - Assert.Equal("vector", video.ReadString(Data.Models.Metadata.Video.ScreenKey)); + Assert.Equal(Data.Models.Metadata.DisplayType.Vector, video.Screen); Assert.Equal(12345, video.ReadLong(Data.Models.Metadata.Video.WidthKey)); } diff --git a/SabreTools.Metadata.DatFiles.Test/DatStatisticsTests.cs b/SabreTools.Metadata.DatFiles.Test/DatStatisticsTests.cs index f5cef637..cfb8ead3 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatStatisticsTests.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatStatisticsTests.cs @@ -1,6 +1,4 @@ -using SabreTools.Data.Extensions; using SabreTools.Hashing; -using SabreTools.Metadata.DatItems; using SabreTools.Metadata.DatItems.Formats; using Xunit; using ItemStatus = SabreTools.Data.Models.Metadata.ItemStatus; @@ -255,7 +253,7 @@ namespace SabreTools.Metadata.DatFiles.Test { var disk = new Disk(); - disk.Write(Data.Models.Metadata.Disk.StatusKey, ItemStatus.Good.AsStringValue()); + disk.Status = ItemStatus.Good; disk.Write(Data.Models.Metadata.Disk.MD5Key, HashType.MD5.ZeroString); disk.Write(Data.Models.Metadata.Disk.SHA1Key, HashType.SHA1.ZeroString); @@ -301,7 +299,7 @@ namespace SabreTools.Metadata.DatFiles.Test { var rom = new Rom(); - rom.Write(Data.Models.Metadata.Rom.StatusKey, ItemStatus.Good.AsStringValue()); + rom.Status = ItemStatus.Good; rom.Write(Data.Models.Metadata.Rom.SizeKey, 1); rom.Write(Data.Models.Metadata.Rom.CRC16Key, HashType.CRC16.ZeroString); rom.Write(Data.Models.Metadata.Rom.CRCKey, HashType.CRC32.ZeroString); diff --git a/SabreTools.Metadata.DatFiles.Test/FormatsTests.cs b/SabreTools.Metadata.DatFiles.Test/FormatsTests.cs index 5981ecc4..2e64dcb6 100644 --- a/SabreTools.Metadata.DatFiles.Test/FormatsTests.cs +++ b/SabreTools.Metadata.DatFiles.Test/FormatsTests.cs @@ -185,7 +185,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Chip.ChipTypeKey, + nameof(Data.Models.Metadata.Chip.ChipType), nameof(Data.Models.Metadata.Chip.Name), ])); } @@ -200,7 +200,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Display.DisplayTypeKey, + nameof(Data.Models.Metadata.Display.DisplayType), Data.Models.Metadata.Display.RotateKey, ])); } @@ -258,8 +258,8 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Driver.StatusKey, - Data.Models.Metadata.Driver.EmulationKey, + nameof(Data.Models.Metadata.Driver.Status), + nameof(Data.Models.Metadata.Driver.Emulation), ])); } @@ -865,7 +865,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ nameof(Data.Models.Metadata.Chip.Name), - Data.Models.Metadata.Chip.ChipTypeKey, + nameof(Data.Models.Metadata.Chip.ChipType), ])); } @@ -879,7 +879,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Display.DisplayTypeKey, + nameof(Data.Models.Metadata.Display.DisplayType), Data.Models.Metadata.Display.RefreshKey, ])); } @@ -980,10 +980,10 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Driver.StatusKey, - Data.Models.Metadata.Driver.EmulationKey, - Data.Models.Metadata.Driver.CocktailKey, - Data.Models.Metadata.Driver.SaveStateKey, + nameof(Data.Models.Metadata.Driver.Status), + nameof(Data.Models.Metadata.Driver.Emulation), + nameof(Data.Models.Metadata.Driver.Cocktail), + nameof(Data.Models.Metadata.Driver.SaveState), ])); } @@ -997,7 +997,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Feature.FeatureTypeKey, + nameof(Data.Models.Metadata.Feature.FeatureType), ])); } @@ -1011,7 +1011,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Device.DeviceTypeKey, + nameof(Data.Models.Metadata.Device.DeviceType), ])); } @@ -1041,7 +1041,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.True(actual.SequenceEqual([ Data.Models.Metadata.SoftwareList.TagKey, nameof(Data.Models.Metadata.SoftwareList.Name), - Data.Models.Metadata.SoftwareList.StatusKey, + nameof(Data.Models.Metadata.SoftwareList.Status), ])); } @@ -1210,10 +1210,10 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Driver.StatusKey, - Data.Models.Metadata.Driver.EmulationKey, - Data.Models.Metadata.Driver.CocktailKey, - Data.Models.Metadata.Driver.SaveStateKey, + nameof(Data.Models.Metadata.Driver.Status), + nameof(Data.Models.Metadata.Driver.Emulation), + nameof(Data.Models.Metadata.Driver.Cocktail), + nameof(Data.Models.Metadata.Driver.SaveState), ])); } @@ -1229,7 +1229,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.True(actual.SequenceEqual([ Data.Models.Metadata.SoftwareList.TagKey, nameof(Data.Models.Metadata.SoftwareList.Name), - Data.Models.Metadata.SoftwareList.StatusKey, + nameof(Data.Models.Metadata.SoftwareList.Status), ])); } diff --git a/SabreTools.Metadata.DatFiles.Test/ItemDictionaryDBTests.cs b/SabreTools.Metadata.DatFiles.Test/ItemDictionaryDBTests.cs index 03f630f9..a0881d41 100644 --- a/SabreTools.Metadata.DatFiles.Test/ItemDictionaryDBTests.cs +++ b/SabreTools.Metadata.DatFiles.Test/ItemDictionaryDBTests.cs @@ -26,8 +26,9 @@ namespace SabreTools.Metadata.DatFiles.Test _ = dict.AddItem(disk, machineIndex, sourceIndex, statsOnly: false); DatItem actual = Assert.Single(dict.GetItemsForBucket("default")).Value; - Assert.True(actual is Disk); - Assert.Equal("none", actual.ReadString(Data.Models.Metadata.Disk.StatusKey)); + Disk? actualDisk = actual as Disk; + Assert.NotNull(actualDisk); + Assert.Equal(Data.Models.Metadata.ItemStatus.None, actualDisk.Status); } [Fact] @@ -45,8 +46,9 @@ namespace SabreTools.Metadata.DatFiles.Test _ = dict.AddItem(disk, machineIndex, sourceIndex, statsOnly: false); DatItem actual = Assert.Single(dict.GetItemsForBucket("default")).Value; - Assert.True(actual is Disk); - Assert.Equal("nodump", actual.ReadString(Data.Models.Metadata.Disk.StatusKey)); + Disk? actualDisk = actual as Disk; + Assert.NotNull(actualDisk); + Assert.Equal(Data.Models.Metadata.ItemStatus.Nodump, actualDisk.Status); } [Fact] @@ -144,10 +146,11 @@ namespace SabreTools.Metadata.DatFiles.Test _ = dict.AddItem(rom, machineIndex, sourceIndex, statsOnly: false); DatItem actual = Assert.Single(dict.GetItemsForBucket("default")).Value; - Assert.True(actual is Rom); + Rom? actualRom = actual as Rom; + Assert.NotNull(actualRom); Assert.Equal(12345, actual.ReadLong(Data.Models.Metadata.Rom.SizeKey)); Assert.Equal("deadbeef", actual.ReadString(Data.Models.Metadata.Rom.SHA1Key)); - Assert.Equal("none", actual.ReadString(Data.Models.Metadata.Rom.StatusKey)); + Assert.Equal(Data.Models.Metadata.ItemStatus.None, actualRom.Status); } [Fact] @@ -166,10 +169,11 @@ namespace SabreTools.Metadata.DatFiles.Test _ = dict.AddItem(rom, machineIndex, sourceIndex, statsOnly: false); DatItem actual = Assert.Single(dict.GetItemsForBucket("default")).Value; - Assert.True(actual is Rom); + Rom? actualRom = actual as Rom; + Assert.NotNull(actualRom); Assert.Equal(12345, actual.ReadLong(Data.Models.Metadata.Rom.SizeKey)); Assert.Null(actual.ReadString(Data.Models.Metadata.Rom.SHA1Key)); - Assert.Equal("nodump", actual.ReadString(Data.Models.Metadata.Rom.StatusKey)); + Assert.Equal(Data.Models.Metadata.ItemStatus.Nodump, actualRom.Status); } [Fact] @@ -188,10 +192,11 @@ namespace SabreTools.Metadata.DatFiles.Test _ = dict.AddItem(rom, machineIndex, sourceIndex, statsOnly: false); DatItem actual = Assert.Single(dict.GetItemsForBucket("default")).Value; - Assert.True(actual is Rom); + Rom? actualRom = actual as Rom; + Assert.NotNull(actualRom); Assert.Null(actual.ReadLong(Data.Models.Metadata.Rom.SizeKey)); Assert.Equal("deadbeef", actual.ReadString(Data.Models.Metadata.Rom.SHA1Key)); - Assert.Equal("none", actual.ReadString(Data.Models.Metadata.Rom.StatusKey)); + Assert.Equal(Data.Models.Metadata.ItemStatus.None, actualRom.Status); } [Fact] @@ -209,10 +214,11 @@ namespace SabreTools.Metadata.DatFiles.Test _ = dict.AddItem(rom, machineIndex, sourceIndex, statsOnly: false); DatItem actual = Assert.Single(dict.GetItemsForBucket("default")).Value; - Assert.True(actual is Rom); + Rom? actualRom = actual as Rom; + Assert.NotNull(actualRom); Assert.Equal(0, actual.ReadLong(Data.Models.Metadata.Rom.SizeKey)); Assert.Equal(HashType.SHA1.ZeroString, actual.ReadString(Data.Models.Metadata.Rom.SHA1Key)); - Assert.Equal("none", actual.ReadString(Data.Models.Metadata.Rom.StatusKey)); + Assert.Equal(Data.Models.Metadata.ItemStatus.None, actualRom.Status); } [Fact] diff --git a/SabreTools.Metadata.DatFiles.Test/ItemDictionaryTests.cs b/SabreTools.Metadata.DatFiles.Test/ItemDictionaryTests.cs index 6b6bbd25..5df8f9c2 100644 --- a/SabreTools.Metadata.DatFiles.Test/ItemDictionaryTests.cs +++ b/SabreTools.Metadata.DatFiles.Test/ItemDictionaryTests.cs @@ -26,8 +26,9 @@ namespace SabreTools.Metadata.DatFiles.Test _ = dict.AddItem(disk, statsOnly: false); DatItem actual = Assert.Single(dict.GetItemsForBucket("default")); - Assert.True(actual is Disk); - Assert.Equal("none", actual.ReadString(Data.Models.Metadata.Disk.StatusKey)); + Disk? actualDisk = actual as Disk; + Assert.NotNull(actualDisk); + Assert.Equal(Data.Models.Metadata.ItemStatus.None, actualDisk.Status); } [Fact] @@ -45,8 +46,9 @@ namespace SabreTools.Metadata.DatFiles.Test _ = dict.AddItem(disk, statsOnly: false); DatItem actual = Assert.Single(dict.GetItemsForBucket("default")); - Assert.True(actual is Disk); - Assert.Equal("nodump", actual.ReadString(Data.Models.Metadata.Disk.StatusKey)); + Disk? actualDisk = actual as Disk; + Assert.NotNull(actualDisk); + Assert.Equal(Data.Models.Metadata.ItemStatus.Nodump, actualDisk.Status); } [Fact] @@ -66,7 +68,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem actual = Assert.Single(dict.GetItemsForBucket("default")); Assert.True(actual is File); - //Assert.Equal("none", actual.GetStringFieldValue(File.StatusKey)); + //Assert.Equal(ItemStatus.None, actual.GetStringFieldValue(File.StatusKey)); } [Fact] @@ -85,7 +87,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem actual = Assert.Single(dict.GetItemsForBucket("default")); Assert.True(actual is File); - //Assert.Equal("nodump", actual.GetStringFieldValue(File.StatusKey)); + //Assert.Equal(Data.Models.Metadata.ItemStatus.Nodump, actual.GetStringFieldValue(File.StatusKey)); } [Fact] @@ -105,7 +107,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem actual = Assert.Single(dict.GetItemsForBucket("default")); Assert.True(actual is Media); - //Assert.Equal("none", actual.GetStringFieldValue(Data.Models.Metadata.Media.StatusKey)); + //Assert.Equal(ItemStatus.None, actual.GetStringFieldValue(Data.Models.Metadata.Media.StatusKey)); } [Fact] @@ -124,7 +126,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem actual = Assert.Single(dict.GetItemsForBucket("default")); Assert.True(actual is Media); - //Assert.Equal("nodump", actual.GetStringFieldValue(Data.Models.Metadata.Media.StatusKey)); + //Assert.Equal(Data.Models.Metadata.ItemStatus.Nodump, actual.GetStringFieldValue(Data.Models.Metadata.Media.StatusKey)); } [Fact] @@ -144,10 +146,11 @@ namespace SabreTools.Metadata.DatFiles.Test _ = dict.AddItem(rom, statsOnly: false); DatItem actual = Assert.Single(dict.GetItemsForBucket("default")); - Assert.True(actual is Rom); + Rom? actualRom = actual as Rom; + Assert.NotNull(actualRom); Assert.Equal(12345, actual.ReadLong(Data.Models.Metadata.Rom.SizeKey)); Assert.Equal("deadbeef", actual.ReadString(Data.Models.Metadata.Rom.SHA1Key)); - Assert.Equal("none", actual.ReadString(Data.Models.Metadata.Rom.StatusKey)); + Assert.Equal(Data.Models.Metadata.ItemStatus.None, actualRom.Status); } [Fact] @@ -166,10 +169,11 @@ namespace SabreTools.Metadata.DatFiles.Test _ = dict.AddItem(rom, statsOnly: false); DatItem actual = Assert.Single(dict.GetItemsForBucket("default")); - Assert.True(actual is Rom); + Rom? actualRom = actual as Rom; + Assert.NotNull(actualRom); Assert.Equal(12345, actual.ReadLong(Data.Models.Metadata.Rom.SizeKey)); Assert.Null(actual.ReadString(Data.Models.Metadata.Rom.SHA1Key)); - Assert.Equal("nodump", actual.ReadString(Data.Models.Metadata.Rom.StatusKey)); + Assert.Equal(Data.Models.Metadata.ItemStatus.Nodump, actualRom.Status); } [Fact] @@ -188,10 +192,11 @@ namespace SabreTools.Metadata.DatFiles.Test _ = dict.AddItem(rom, statsOnly: false); DatItem actual = Assert.Single(dict.GetItemsForBucket("default")); - Assert.True(actual is Rom); + Rom? actualRom = actual as Rom; + Assert.NotNull(actualRom); Assert.Null(actual.ReadLong(Data.Models.Metadata.Rom.SizeKey)); Assert.Equal("deadbeef", actual.ReadString(Data.Models.Metadata.Rom.SHA1Key)); - Assert.Equal("none", actual.ReadString(Data.Models.Metadata.Rom.StatusKey)); + Assert.Equal(Data.Models.Metadata.ItemStatus.None, actualRom.Status); } [Fact] @@ -209,10 +214,11 @@ namespace SabreTools.Metadata.DatFiles.Test _ = dict.AddItem(rom, statsOnly: false); DatItem actual = Assert.Single(dict.GetItemsForBucket("default")); - Assert.True(actual is Rom); + Rom? actualRom = actual as Rom; + Assert.NotNull(actualRom); Assert.Equal(0, actual.ReadLong(Data.Models.Metadata.Rom.SizeKey)); Assert.Equal(HashType.SHA1.ZeroString, actual.ReadString(Data.Models.Metadata.Rom.SHA1Key)); - Assert.Equal("none", actual.ReadString(Data.Models.Metadata.Rom.StatusKey)); + Assert.Equal(Data.Models.Metadata.ItemStatus.None, actualRom.Status); } [Fact] diff --git a/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs b/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs index cf262850..25c241ac 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs @@ -6,7 +6,6 @@ using System.Threading.Tasks; using SabreTools.Metadata.Filter; using SabreTools.Metadata.DatItems; using SabreTools.Metadata.DatItems.Formats; -using SabreTools.Data.Extensions; using MergingFlag = SabreTools.Data.Models.Metadata.MergingFlag; using NodumpFlag = SabreTools.Data.Models.Metadata.NodumpFlag; using PackingFlag = SabreTools.Data.Models.Metadata.PackingFlag; @@ -93,8 +92,8 @@ namespace SabreTools.Metadata.DatFiles // Selectively set all possible fields -- TODO: Figure out how to make this less manual if (Header.ReadString(Data.Models.Metadata.Header.AuthorKey) is null) Header.Write(Data.Models.Metadata.Header.AuthorKey, header.ReadString(Data.Models.Metadata.Header.AuthorKey)); - if (Header.ReadString(Data.Models.Metadata.Header.BiosModeKey).AsMergingFlag() == MergingFlag.None) - Header.Write(Data.Models.Metadata.Header.BiosModeKey, header.ReadString(Data.Models.Metadata.Header.BiosModeKey).AsMergingFlag().AsStringValue()); + if (Header.BiosMode == MergingFlag.None) + Header.BiosMode = header.BiosMode; if (Header.ReadString(Data.Models.Metadata.Header.BuildKey) is null) Header.Write(Data.Models.Metadata.Header.BuildKey, header.ReadString(Data.Models.Metadata.Header.BuildKey)); if (Header.ReadString(Data.Models.Metadata.Header.CategoryKey) is null) @@ -113,12 +112,12 @@ namespace SabreTools.Metadata.DatFiles Header.Write(Data.Models.Metadata.Header.EmailKey, header.ReadString(Data.Models.Metadata.Header.EmailKey)); if (Header.ReadString(Data.Models.Metadata.Header.EmulatorVersionKey) is null) Header.Write(Data.Models.Metadata.Header.EmulatorVersionKey, header.ReadString(Data.Models.Metadata.Header.EmulatorVersionKey)); - if (Header.ReadString(Data.Models.Metadata.Header.ForceMergingKey).AsMergingFlag() == MergingFlag.None) - Header.Write(Data.Models.Metadata.Header.ForceMergingKey, header.ReadString(Data.Models.Metadata.Header.ForceMergingKey).AsMergingFlag().AsStringValue()); - if (Header.ReadString(Data.Models.Metadata.Header.ForceNodumpKey).AsNodumpFlag() == NodumpFlag.None) - Header.Write(Data.Models.Metadata.Header.ForceNodumpKey, header.ReadString(Data.Models.Metadata.Header.ForceNodumpKey).AsNodumpFlag().AsStringValue()); - if (Header.ReadString(Data.Models.Metadata.Header.ForcePackingKey).AsPackingFlag() == PackingFlag.None) - Header.Write(Data.Models.Metadata.Header.ForcePackingKey, header.ReadString(Data.Models.Metadata.Header.ForcePackingKey).AsPackingFlag().AsStringValue()); + if (Header.ForceMerging == MergingFlag.None) + Header.ForceMerging = header.ForceMerging; + if (Header.ForceNodump == NodumpFlag.None) + Header.ForceNodump = header.ForceNodump; + if (Header.ForcePacking == PackingFlag.None) + Header.ForcePacking = header.ForcePacking; if (Header.ForceZipping is null) Header.ForceZipping = header.ForceZipping; if (Header.ReadString(Data.Models.Metadata.Header.HeaderKey) is null) @@ -145,14 +144,14 @@ namespace SabreTools.Metadata.DatFiles Header.Write(Data.Models.Metadata.Header.PluginKey, header.ReadString(Data.Models.Metadata.Header.PluginKey)); if (Header.ReadString(Data.Models.Metadata.Header.RefNameKey) is null) Header.Write(Data.Models.Metadata.Header.RefNameKey, header.ReadString(Data.Models.Metadata.Header.RefNameKey)); - if (Header.ReadString(Data.Models.Metadata.Header.RomModeKey).AsMergingFlag() == MergingFlag.None) - Header.Write(Data.Models.Metadata.Header.RomModeKey, header.ReadString(Data.Models.Metadata.Header.RomModeKey).AsMergingFlag().AsStringValue()); + if (Header.RomMode == MergingFlag.None) + Header.RomMode = header.RomMode; if (Header.ReadString(Data.Models.Metadata.Header.RomTitleKey) is null) Header.Write(Data.Models.Metadata.Header.RomTitleKey, header.ReadString(Data.Models.Metadata.Header.RomTitleKey)); if (Header.ReadString(Data.Models.Metadata.Header.RootDirKey) is null) Header.Write(Data.Models.Metadata.Header.RootDirKey, header.ReadString(Data.Models.Metadata.Header.RootDirKey)); - if (Header.ReadString(Data.Models.Metadata.Header.SampleModeKey).AsMergingFlag() == MergingFlag.None) - Header.Write(Data.Models.Metadata.Header.SampleModeKey, header.ReadString(Data.Models.Metadata.Header.SampleModeKey).AsMergingFlag().AsStringValue()); + if (Header.SampleMode == MergingFlag.None) + Header.SampleMode = header.SampleMode; if (Header.ReadString(Data.Models.Metadata.Header.SchemaLocationKey) is null) Header.Write(Data.Models.Metadata.Header.SchemaLocationKey, header.ReadString(Data.Models.Metadata.Header.SchemaLocationKey)); if (Header.ReadString(Data.Models.Metadata.Header.ScreenshotsHeightKey) is null) @@ -613,10 +612,10 @@ namespace SabreTools.Metadata.DatFiles long? size = romItem.ReadLong(Data.Models.Metadata.Rom.SizeKey); // If the rom is a continue or ignore - string? loadFlag = rom.ReadString(Data.Models.Metadata.Rom.LoadFlagKey); + Data.Models.Metadata.LoadFlag? loadFlag = rom.LoadFlag; if (loadFlag is not null - && (loadFlag.Equals("continue", StringComparison.OrdinalIgnoreCase) - || loadFlag.Equals("ignore", StringComparison.OrdinalIgnoreCase))) + && (loadFlag == Data.Models.Metadata.LoadFlag.Continue + || loadFlag == Data.Models.Metadata.LoadFlag.Ignore)) { var lastRom = addRoms[addRoms.Count - 1]; long? lastSize = lastRom.ReadLong(Data.Models.Metadata.Rom.SizeKey); diff --git a/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs b/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs index 27ebcece..723739b0 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs @@ -358,7 +358,7 @@ namespace SabreTools.Metadata.DatFiles else { aggregateDataArea = []; - aggregateDataArea[Data.Models.Metadata.DataArea.EndiannessKey] = dataArea.ReadString(Data.Models.Metadata.DataArea.EndiannessKey); + aggregateDataArea.Endianness = dataArea.Endianness; aggregateDataArea.Name = dataArea.Name; aggregateDataArea[Data.Models.Metadata.DataArea.SizeKey] = dataArea.ReadString(Data.Models.Metadata.DataArea.SizeKey); aggregateDataArea[Data.Models.Metadata.DataArea.WidthKey] = dataArea.ReadString(Data.Models.Metadata.DataArea.WidthKey); @@ -784,7 +784,7 @@ namespace SabreTools.Metadata.DatFiles else { aggregateDataArea = []; - aggregateDataArea[Data.Models.Metadata.DataArea.EndiannessKey] = dataArea.ReadString(Data.Models.Metadata.DataArea.EndiannessKey); + aggregateDataArea.Endianness = dataArea.Endianness; aggregateDataArea.Name = dataArea.Name; aggregateDataArea[Data.Models.Metadata.DataArea.SizeKey] = dataArea.ReadString(Data.Models.Metadata.DataArea.SizeKey); aggregateDataArea[Data.Models.Metadata.DataArea.WidthKey] = dataArea.ReadString(Data.Models.Metadata.DataArea.WidthKey); @@ -937,7 +937,7 @@ namespace SabreTools.Metadata.DatFiles [Data.Models.Metadata.Video.AspectYKey] = displayItem.ReadLong(Data.Models.Metadata.Video.AspectYKey).ToString(), [Data.Models.Metadata.Video.HeightKey] = displayItem.ReadLong(Data.Models.Metadata.Display.HeightKey).ToString(), [Data.Models.Metadata.Video.RefreshKey] = displayItem.ReadDouble(Data.Models.Metadata.Display.RefreshKey).ToString(), - [Data.Models.Metadata.Video.ScreenKey] = displayItem.ReadString(Data.Models.Metadata.Display.DisplayTypeKey).AsDisplayType()?.AsStringValue(), + Screen = displayItem.DisplayType, [Data.Models.Metadata.Video.WidthKey] = displayItem.ReadLong(Data.Models.Metadata.Display.WidthKey).ToString() }; @@ -977,7 +977,7 @@ namespace SabreTools.Metadata.DatFiles var romItem = item.GetInternalClone(); // Create a Dump for every Rom that has a subtype - switch (romItem.ReadString(Data.Models.Metadata.Rom.OpenMSXMediaType).AsOpenMSXSubType()) + switch (romItem.OpenMSXMediaType) { case OpenMSXSubType.Rom: var dumpRom = new Data.Models.Metadata.Dump(); diff --git a/SabreTools.Metadata.DatFiles/DatHeader.cs b/SabreTools.Metadata.DatFiles/DatHeader.cs index 430fab85..da81e620 100644 --- a/SabreTools.Metadata.DatFiles/DatHeader.cs +++ b/SabreTools.Metadata.DatFiles/DatHeader.cs @@ -37,6 +37,12 @@ namespace SabreTools.Metadata.DatFiles set => _internal.Name = value; } + public MergingFlag BiosMode + { + get => _internal.BiosMode; + set => _internal.BiosMode = value; + } + [JsonIgnore] public bool CanOpenSpecified { @@ -53,6 +59,24 @@ namespace SabreTools.Metadata.DatFiles set => _internal.Debug = value; } + public MergingFlag ForceMerging + { + get => _internal.ForceMerging; + set => _internal.ForceMerging = value; + } + + public NodumpFlag ForceNodump + { + get => _internal.ForceNodump; + set => _internal.ForceNodump = value; + } + + public PackingFlag ForcePacking + { + get => _internal.ForcePacking; + set => _internal.ForcePacking = value; + } + public bool? ForceZipping { get => _internal.ForceZipping; @@ -104,6 +128,18 @@ namespace SabreTools.Metadata.DatFiles } } + public MergingFlag RomMode + { + get => _internal.RomMode; + set => _internal.RomMode = value; + } + + public MergingFlag SampleMode + { + get => _internal.SampleMode; + set => _internal.SampleMode = value; + } + [JsonIgnore] public bool SearchSpecified { @@ -152,20 +188,6 @@ namespace SabreTools.Metadata.DatFiles { var header = (_internal.Clone() as Data.Models.Metadata.Header)!; - // Remove fields with default values - if (header.ReadString(Data.Models.Metadata.Header.ForceMergingKey).AsMergingFlag() == MergingFlag.None) - header.Remove(Data.Models.Metadata.Header.ForceMergingKey); - if (header.ReadString(Data.Models.Metadata.Header.ForceNodumpKey).AsNodumpFlag() == NodumpFlag.None) - header.Remove(Data.Models.Metadata.Header.ForceNodumpKey); - if (header.ReadString(Data.Models.Metadata.Header.ForcePackingKey).AsPackingFlag() == PackingFlag.None) - header.Remove(Data.Models.Metadata.Header.ForcePackingKey); - if (header.ReadString(Data.Models.Metadata.Header.BiosModeKey).AsMergingFlag() == MergingFlag.None) - header.Remove(Data.Models.Metadata.Header.BiosModeKey); - if (header.ReadString(Data.Models.Metadata.Header.RomModeKey).AsMergingFlag() == MergingFlag.None) - header.Remove(Data.Models.Metadata.Header.RomModeKey); - if (header.ReadString(Data.Models.Metadata.Header.SampleModeKey).AsMergingFlag() == MergingFlag.None) - header.Remove(Data.Models.Metadata.Header.SampleModeKey); - // Convert subheader values if (CanOpenSpecified) header[Data.Models.Metadata.Header.CanOpenKey] = new Data.Models.OfflineList.CanOpen { Extension = ReadStringArray(Data.Models.Metadata.Header.CanOpenKey) }; diff --git a/SabreTools.Metadata.DatFiles/DatStatistics.cs b/SabreTools.Metadata.DatFiles/DatStatistics.cs index ec010b03..496ea3ec 100644 --- a/SabreTools.Metadata.DatFiles/DatStatistics.cs +++ b/SabreTools.Metadata.DatFiles/DatStatistics.cs @@ -1,5 +1,4 @@ using System.Collections.Generic; -using SabreTools.Data.Extensions; using SabreTools.Hashing; using SabreTools.Metadata.DatItems; using SabreTools.Metadata.DatItems.Formats; @@ -408,7 +407,7 @@ namespace SabreTools.Metadata.DatFiles /// Item to add info from private void AddItemStatistics(Disk disk) { - ItemStatus? status = disk.ReadString(Data.Models.Metadata.Disk.StatusKey).AsItemStatus(); + ItemStatus? status = disk.Status; if (status != ItemStatus.Nodump) { AddHashCount(HashType.MD5, string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key)) ? 0 : 1); @@ -427,7 +426,7 @@ namespace SabreTools.Metadata.DatFiles /// Item to add info from private void AddItemStatistics(Data.Models.Metadata.Disk disk) { - ItemStatus? status = disk.ReadString(Data.Models.Metadata.Disk.StatusKey).AsItemStatus(); + ItemStatus? status = disk.Status; if (status != ItemStatus.Nodump) { AddHashCount(HashType.MD5, string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key)) ? 0 : 1); @@ -483,7 +482,7 @@ namespace SabreTools.Metadata.DatFiles /// Item to add info from private void AddItemStatistics(Rom rom) { - ItemStatus? status = rom.ReadString(Data.Models.Metadata.Rom.StatusKey).AsItemStatus(); + ItemStatus? status = rom.Status; if (status != ItemStatus.Nodump) { TotalSize += rom.ReadLong(Data.Models.Metadata.Rom.SizeKey) ?? 0; @@ -514,7 +513,7 @@ namespace SabreTools.Metadata.DatFiles /// Item to add info from private void AddItemStatistics(Data.Models.Metadata.Rom rom) { - ItemStatus? status = rom.ReadString(Data.Models.Metadata.Rom.StatusKey).AsItemStatus(); + ItemStatus? status = rom.Status; if (status != ItemStatus.Nodump) { TotalSize += rom.ReadLong(Data.Models.Metadata.Rom.SizeKey) ?? 0; @@ -599,7 +598,7 @@ namespace SabreTools.Metadata.DatFiles /// Item to remove info for private void RemoveItemStatistics(Disk disk) { - ItemStatus? status = disk.ReadString(Data.Models.Metadata.Disk.StatusKey).AsItemStatus(); + ItemStatus? status = disk.Status; if (status != ItemStatus.Nodump) { RemoveHashCount(HashType.MD5, string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key)) ? 0 : 1); @@ -618,7 +617,7 @@ namespace SabreTools.Metadata.DatFiles /// Item to remove info for private void RemoveItemStatistics(Data.Models.Metadata.Disk disk) { - ItemStatus? status = disk.ReadString(Data.Models.Metadata.Disk.StatusKey).AsItemStatus(); + ItemStatus? status = disk.Status; if (status != ItemStatus.Nodump) { RemoveHashCount(HashType.MD5, string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key)) ? 0 : 1); @@ -674,7 +673,7 @@ namespace SabreTools.Metadata.DatFiles /// Item to remove info for private void RemoveItemStatistics(Rom rom) { - ItemStatus? status = rom.ReadString(Data.Models.Metadata.Rom.StatusKey).AsItemStatus(); + ItemStatus? status = rom.Status; if (status != ItemStatus.Nodump) { TotalSize -= rom.ReadLong(Data.Models.Metadata.Rom.SizeKey) ?? 0; @@ -705,7 +704,7 @@ namespace SabreTools.Metadata.DatFiles /// Item to remove info for private void RemoveItemStatistics(Data.Models.Metadata.Rom rom) { - ItemStatus? status = rom.ReadString(Data.Models.Metadata.Rom.StatusKey).AsItemStatus(); + ItemStatus? status = rom.Status; if (status != ItemStatus.Nodump) { TotalSize -= rom.ReadLong(Data.Models.Metadata.Rom.SizeKey) ?? 0; diff --git a/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs b/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs index 7c644f29..1da9a687 100644 --- a/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs +++ b/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs @@ -1,6 +1,5 @@ -using System; +using System; using System.Collections.Generic; -using SabreTools.Data.Extensions; using SabreTools.Metadata.DatItems; using SabreTools.Metadata.DatItems.Formats; using SabreTools.Metadata.Filter; @@ -134,15 +133,15 @@ namespace SabreTools.Metadata.DatFiles.Formats break; case Chip chip: - if (chip.ReadString(Data.Models.Metadata.Chip.ChipTypeKey).AsChipType() is null) - missingFields.Add(Data.Models.Metadata.Chip.ChipTypeKey); + if (chip.ChipType is null) + missingFields.Add(nameof(Data.Models.Metadata.Chip.ChipType)); if (string.IsNullOrEmpty(chip.GetName())) missingFields.Add(nameof(Data.Models.Metadata.Chip.Name)); break; case Display display: - if (display.ReadString(Data.Models.Metadata.Display.DisplayTypeKey).AsDisplayType() is null) - missingFields.Add(Data.Models.Metadata.Display.DisplayTypeKey); + if (display.DisplayType is null) + missingFields.Add(nameof(Data.Models.Metadata.Display.DisplayType)); if (display.ReadLong(Data.Models.Metadata.Display.RotateKey) is null) missingFields.Add(Data.Models.Metadata.Display.RotateKey); break; @@ -165,10 +164,10 @@ namespace SabreTools.Metadata.DatFiles.Formats break; case Driver driver: - if (driver.ReadString(Data.Models.Metadata.Driver.StatusKey).AsSupportStatus() is null) - missingFields.Add(Data.Models.Metadata.Driver.StatusKey); - if (driver.ReadString(Data.Models.Metadata.Driver.EmulationKey).AsSupportStatus() is null) - missingFields.Add(Data.Models.Metadata.Driver.EmulationKey); + if (driver.Status is null) + missingFields.Add(nameof(Data.Models.Metadata.Driver.Status)); + if (driver.Emulation is null) + missingFields.Add(nameof(Data.Models.Metadata.Driver.Emulation)); break; default: diff --git a/SabreTools.Metadata.DatFiles/Formats/Listxml.cs b/SabreTools.Metadata.DatFiles/Formats/Listxml.cs index 76b6a78b..57f61836 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Listxml.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Listxml.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using SabreTools.Data.Extensions; using SabreTools.Metadata.DatItems; using SabreTools.Metadata.DatItems.Formats; using SabreTools.Metadata.Filter; @@ -304,13 +303,13 @@ namespace SabreTools.Metadata.DatFiles.Formats case Chip chip: if (string.IsNullOrEmpty(chip.GetName())) missingFields.Add(nameof(Data.Models.Metadata.Chip.Name)); - if (chip.ReadString(Data.Models.Metadata.Chip.ChipTypeKey).AsChipType() is null) - missingFields.Add(Data.Models.Metadata.Chip.ChipTypeKey); + if (chip.ChipType is null) + missingFields.Add(nameof(Data.Models.Metadata.Chip.ChipType)); break; case Display display: - if (display.ReadString(Data.Models.Metadata.Display.DisplayTypeKey).AsDisplayType() is null) - missingFields.Add(Data.Models.Metadata.Display.DisplayTypeKey); + if (display.DisplayType is null) + missingFields.Add(nameof(Data.Models.Metadata.Display.DisplayType)); if (display.ReadDouble(Data.Models.Metadata.Display.RefreshKey) is null) missingFields.Add(Data.Models.Metadata.Display.RefreshKey); break; @@ -350,24 +349,24 @@ namespace SabreTools.Metadata.DatFiles.Formats break; case Driver driver: - if (driver.ReadString(Data.Models.Metadata.Driver.StatusKey).AsSupportStatus() is null) - missingFields.Add(Data.Models.Metadata.Driver.StatusKey); - if (driver.ReadString(Data.Models.Metadata.Driver.EmulationKey).AsSupportStatus() is null) - missingFields.Add(Data.Models.Metadata.Driver.EmulationKey); - if (driver.ReadString(Data.Models.Metadata.Driver.CocktailKey).AsSupportStatus() is null) - missingFields.Add(Data.Models.Metadata.Driver.CocktailKey); - if (driver.ReadString(Data.Models.Metadata.Driver.SaveStateKey).AsSupportStatus() is null) - missingFields.Add(Data.Models.Metadata.Driver.SaveStateKey); + if (driver.Status is null) + missingFields.Add(nameof(Data.Models.Metadata.Driver.Status)); + if (driver.Emulation is null) + missingFields.Add(nameof(Data.Models.Metadata.Driver.Emulation)); + if (driver.Cocktail is null) + missingFields.Add(nameof(Data.Models.Metadata.Driver.Cocktail)); + if (driver.SaveState is null) + missingFields.Add(nameof(Data.Models.Metadata.Driver.SaveState)); break; case Feature feature: - if (feature.ReadString(Data.Models.Metadata.Feature.FeatureTypeKey).AsFeatureType() is null) - missingFields.Add(Data.Models.Metadata.Feature.FeatureTypeKey); + if (feature.FeatureType is null) + missingFields.Add(nameof(Data.Models.Metadata.Feature.FeatureType)); break; case Device device: - if (device.ReadString(Data.Models.Metadata.Device.DeviceTypeKey).AsDeviceType() is null) - missingFields.Add(Data.Models.Metadata.Device.DeviceTypeKey); + if (device.DeviceType is null) + missingFields.Add(nameof(Data.Models.Metadata.Device.DeviceType)); break; case Slot slot: @@ -380,8 +379,8 @@ namespace SabreTools.Metadata.DatFiles.Formats missingFields.Add(Data.Models.Metadata.SoftwareList.TagKey); if (string.IsNullOrEmpty(softwarelist.GetName())) missingFields.Add(nameof(Data.Models.Metadata.SoftwareList.Name)); - if (softwarelist.ReadString(Data.Models.Metadata.SoftwareList.StatusKey).AsSoftwareListStatus() == null) - missingFields.Add(Data.Models.Metadata.SoftwareList.StatusKey); + if (softwarelist.Status == null) + missingFields.Add(nameof(Data.Models.Metadata.SoftwareList.Status)); break; case RamOption ramoption: diff --git a/SabreTools.Metadata.DatFiles/Formats/Logiqx.cs b/SabreTools.Metadata.DatFiles/Formats/Logiqx.cs index 48c8b7f5..6282e4b3 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Logiqx.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Logiqx.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using SabreTools.Data.Extensions; using SabreTools.Metadata.DatItems; using SabreTools.Metadata.DatItems.Formats; @@ -344,14 +343,14 @@ namespace SabreTools.Metadata.DatFiles.Formats break; case Driver driver: - if (driver.ReadString(Data.Models.Metadata.Driver.StatusKey).AsSupportStatus() is null) - missingFields.Add(Data.Models.Metadata.Driver.StatusKey); - if (driver.ReadString(Data.Models.Metadata.Driver.EmulationKey).AsSupportStatus() is null) - missingFields.Add(Data.Models.Metadata.Driver.EmulationKey); - if (driver.ReadString(Data.Models.Metadata.Driver.CocktailKey).AsSupportStatus() is null) - missingFields.Add(Data.Models.Metadata.Driver.CocktailKey); - if (driver.ReadString(Data.Models.Metadata.Driver.SaveStateKey).AsSupportStatus() is null) - missingFields.Add(Data.Models.Metadata.Driver.SaveStateKey); + if (driver.Status is null) + missingFields.Add(nameof(Data.Models.Metadata.Driver.Status)); + if (driver.Emulation is null) + missingFields.Add(nameof(Data.Models.Metadata.Driver.Emulation)); + if (driver.Cocktail is null) + missingFields.Add(nameof(Data.Models.Metadata.Driver.Cocktail)); + if (driver.SaveState is null) + missingFields.Add(nameof(Data.Models.Metadata.Driver.SaveState)); break; case DatItems.Formats.SoftwareList softwarelist: @@ -359,8 +358,8 @@ namespace SabreTools.Metadata.DatFiles.Formats missingFields.Add(Data.Models.Metadata.SoftwareList.TagKey); if (string.IsNullOrEmpty(softwarelist.GetName())) missingFields.Add(nameof(Data.Models.Metadata.SoftwareList.Name)); - if (softwarelist.ReadString(Data.Models.Metadata.SoftwareList.StatusKey).AsSoftwareListStatus() == null) - missingFields.Add(Data.Models.Metadata.SoftwareList.StatusKey); + if (softwarelist.Status == null) + missingFields.Add(nameof(Data.Models.Metadata.SoftwareList.Status)); break; default: diff --git a/SabreTools.Metadata.DatFiles/ItemDictionary.cs b/SabreTools.Metadata.DatFiles/ItemDictionary.cs index 4ab04d2e..2f023446 100644 --- a/SabreTools.Metadata.DatFiles/ItemDictionary.cs +++ b/SabreTools.Metadata.DatFiles/ItemDictionary.cs @@ -14,7 +14,6 @@ using SabreTools.Hashing; using SabreTools.Logging; using SabreTools.Text.Compare; using SabreTools.Text.Extensions; -using SabreTools.Data.Extensions; using ItemStatus = SabreTools.Data.Models.Metadata.ItemStatus; namespace SabreTools.Metadata.DatFiles @@ -99,12 +98,12 @@ namespace SabreTools.Metadata.DatFiles if (item is Disk disk) { // If the file has aboslutely no hashes, skip and log - if (disk.ReadString(Data.Models.Metadata.Disk.StatusKey).AsItemStatus() != ItemStatus.Nodump + if (disk.Status != ItemStatus.Nodump && string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key)) && string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.SHA1Key))) { _logger.Verbose($"Incomplete entry for '{disk.GetName()}' will be output as nodump"); - disk.Write(Data.Models.Metadata.Disk.StatusKey, ItemStatus.Nodump.AsStringValue()); + disk.Status = ItemStatus.Nodump; } item = disk; @@ -167,19 +166,19 @@ namespace SabreTools.Metadata.DatFiles } // If the file has no size and it's not the above case, skip and log - else if (rom.ReadString(Data.Models.Metadata.Rom.StatusKey).AsItemStatus() != ItemStatus.Nodump && (size == 0 || size is null)) + else if (rom.Status != ItemStatus.Nodump && (size == 0 || size is null)) { //logger.Verbose($"{Header.GetStringFieldValue(DatHeader.FileNameKey)}: Incomplete entry for '{rom.GetName()}' will be output as nodump"); - rom.Write(Data.Models.Metadata.Rom.StatusKey, ItemStatus.Nodump.AsStringValue()); + rom.Status = ItemStatus.Nodump; } // If the file has a size but aboslutely no hashes, skip and log - else if (rom.ReadString(Data.Models.Metadata.Rom.StatusKey).AsItemStatus() != ItemStatus.Nodump + else if (rom.Status != ItemStatus.Nodump && size is not null && size > 0 && !rom.HasHashes()) { //logger.Verbose($"{Header.GetStringFieldValue(DatHeader.FileNameKey)}: Incomplete entry for '{rom.GetName()}' will be output as nodump"); - rom.Write(Data.Models.Metadata.Rom.StatusKey, ItemStatus.Nodump.AsStringValue()); + rom.Status = ItemStatus.Nodump; } item = rom; @@ -497,13 +496,13 @@ namespace SabreTools.Metadata.DatFiles continue; // If it's a nodump, add and skip - if (datItem is Rom rom && rom.ReadString(Data.Models.Metadata.Rom.StatusKey).AsItemStatus() == ItemStatus.Nodump) + if (datItem is Rom rom && rom.Status == ItemStatus.Nodump) { output.Add(datItem); nodumpCount++; continue; } - else if (datItem is Disk disk && disk.ReadString(Data.Models.Metadata.Disk.StatusKey).AsItemStatus() == ItemStatus.Nodump) + else if (datItem is Disk disk && disk.Status == ItemStatus.Nodump) { output.Add(datItem); nodumpCount++; diff --git a/SabreTools.Metadata.DatFiles/ItemDictionaryDB.cs b/SabreTools.Metadata.DatFiles/ItemDictionaryDB.cs index 91813283..83080589 100644 --- a/SabreTools.Metadata.DatFiles/ItemDictionaryDB.cs +++ b/SabreTools.Metadata.DatFiles/ItemDictionaryDB.cs @@ -16,7 +16,6 @@ using SabreTools.Hashing; using SabreTools.Logging; using SabreTools.Text.Compare; using SabreTools.Text.Extensions; -using SabreTools.Data.Extensions; using ItemStatus = SabreTools.Data.Models.Metadata.ItemStatus; /* @@ -188,12 +187,12 @@ namespace SabreTools.Metadata.DatFiles if (item is Disk disk) { // If the file has aboslutely no hashes, skip and log - if (disk.ReadString(Data.Models.Metadata.Disk.StatusKey).AsItemStatus() != ItemStatus.Nodump + if (disk.Status != ItemStatus.Nodump && string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key)) && string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.SHA1Key))) { _logger.Verbose($"Incomplete entry for '{disk.GetName()}' will be output as nodump"); - disk.Write(Data.Models.Metadata.Disk.StatusKey, ItemStatus.Nodump.AsStringValue()); + disk.Status = ItemStatus.Nodump; } item = disk; @@ -256,19 +255,19 @@ namespace SabreTools.Metadata.DatFiles } // If the file has no size and it's not the above case, skip and log - else if (rom.ReadString(Data.Models.Metadata.Rom.StatusKey).AsItemStatus() != ItemStatus.Nodump && (size == 0 || size is null)) + else if (rom.Status != ItemStatus.Nodump && (size == 0 || size is null)) { //logger.Verbose($"{Header.GetStringFieldValue(DatHeader.FileNameKey)}: Incomplete entry for '{rom.GetName()}' will be output as nodump"); - rom.Write(Data.Models.Metadata.Rom.StatusKey, ItemStatus.Nodump.AsStringValue()); + rom.Status = ItemStatus.Nodump; } // If the file has a size but aboslutely no hashes, skip and log - else if (rom.ReadString(Data.Models.Metadata.Rom.StatusKey).AsItemStatus() != ItemStatus.Nodump + else if (rom.Status != ItemStatus.Nodump && size is not null && size > 0 && !rom.HasHashes()) { //logger.Verbose($"{Header.GetStringFieldValue(DatHeader.FileNameKey)}: Incomplete entry for '{rom.GetName()}' will be output as nodump"); - rom.Write(Data.Models.Metadata.Rom.StatusKey, ItemStatus.Nodump.AsStringValue()); + rom.Status = ItemStatus.Nodump; } item = rom; @@ -873,13 +872,13 @@ namespace SabreTools.Metadata.DatFiles continue; // If it's a nodump, add and skip - if (datItem is Rom rom && rom.ReadString(Data.Models.Metadata.Rom.StatusKey).AsItemStatus() == ItemStatus.Nodump) + if (datItem is Rom rom && rom.Status == ItemStatus.Nodump) { output.Add(new KeyValuePair(itemIndex, datItem)); nodumpCount++; continue; } - else if (datItem is Disk disk && disk.ReadString(Data.Models.Metadata.Disk.StatusKey).AsItemStatus() == ItemStatus.Nodump) + else if (datItem is Disk disk && disk.Status == ItemStatus.Nodump) { output.Add(new KeyValuePair(itemIndex, datItem)); nodumpCount++; diff --git a/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs b/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs index 643d5ca9..ba31f655 100644 --- a/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs +++ b/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs @@ -26,7 +26,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test disk.Write(Disk.DiskAreaKey, diskArea); disk.Write(Data.Models.Metadata.Disk.MergeKey, "XXXXXX"); disk.Write(Data.Models.Metadata.Disk.RegionKey, "XXXXXX"); - disk.Write(Data.Models.Metadata.Disk.StatusKey, "good"); + disk.Status = Data.Models.Metadata.ItemStatus.Good; disk.Optional = true; disk.Write(Data.Models.Metadata.Disk.MD5Key, HashType.MD5.ZeroString); disk.Write(Data.Models.Metadata.Disk.SHA1Key, HashType.SHA1.ZeroString); @@ -41,7 +41,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Assert.Equal("XXXXXX.chd", actual.GetName()); Assert.Equal("XXXXXX", actual.ReadString(Data.Models.Metadata.Rom.MergeKey)); Assert.Equal("XXXXXX", actual.ReadString(Data.Models.Metadata.Rom.RegionKey)); - Assert.Equal("good", actual.ReadString(Data.Models.Metadata.Rom.StatusKey)); + Assert.Equal(Data.Models.Metadata.ItemStatus.Good, actual.Status); Assert.Equal(true, actual.Optional); Assert.Equal(HashType.MD5.ZeroString, actual.ReadString(Data.Models.Metadata.Rom.MD5Key)); Assert.Equal(HashType.SHA1.ZeroString, actual.ReadString(Data.Models.Metadata.Rom.SHA1Key)); diff --git a/SabreTools.Metadata.DatItems/Formats/Chip.cs b/SabreTools.Metadata.DatItems/Formats/Chip.cs index 753d295f..4546ef29 100644 --- a/SabreTools.Metadata.DatItems/Formats/Chip.cs +++ b/SabreTools.Metadata.DatItems/Formats/Chip.cs @@ -12,7 +12,12 @@ namespace SabreTools.Metadata.DatItems.Formats { #region Fields - [JsonIgnore] + public Data.Models.Metadata.ChipType? ChipType + { + get => (_internal as Data.Models.Metadata.Chip)?.ChipType; + set => (_internal as Data.Models.Metadata.Chip)?.ChipType = value; + } + public bool? SoundOnly { get => (_internal as Data.Models.Metadata.Chip)?.SoundOnly; @@ -25,13 +30,7 @@ namespace SabreTools.Metadata.DatItems.Formats public Chip() : base() { } - public Chip(Data.Models.Metadata.Chip item) : base(item) - { - // Process flag values - string? chipType = ReadString(Data.Models.Metadata.Chip.ChipTypeKey); - if (chipType is not null) - Write(Data.Models.Metadata.Chip.ChipTypeKey, chipType.AsChipType()?.AsStringValue()); - } + public Chip(Data.Models.Metadata.Chip item) : base(item) { } public Chip(Data.Models.Metadata.Chip item, Machine machine, Source source) : this(item) { diff --git a/SabreTools.Metadata.DatItems/Formats/Condition.cs b/SabreTools.Metadata.DatItems/Formats/Condition.cs index 93157cc2..d0d0da55 100644 --- a/SabreTools.Metadata.DatItems/Formats/Condition.cs +++ b/SabreTools.Metadata.DatItems/Formats/Condition.cs @@ -10,17 +10,21 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("condition"), XmlRoot("condition")] public sealed class Condition : DatItem { + #region Fields + + public Data.Models.Metadata.Relation? Relation + { + get => (_internal as Data.Models.Metadata.Condition)?.Relation; + set => (_internal as Data.Models.Metadata.Condition)?.Relation = value; + } + + #endregion + #region Constructors public Condition() : base() { } - public Condition(Data.Models.Metadata.Condition item) : base(item) - { - // Process flag values - string? condition = ReadString(Data.Models.Metadata.Condition.RelationKey); - if (condition is not null) - Write(Data.Models.Metadata.Condition.RelationKey, condition.AsRelation()?.AsStringValue()); - } + public Condition(Data.Models.Metadata.Condition item) : base(item) { } public Condition(Data.Models.Metadata.Condition item, Machine machine, Source source) : this(item) { diff --git a/SabreTools.Metadata.DatItems/Formats/Control.cs b/SabreTools.Metadata.DatItems/Formats/Control.cs index 1c9c611f..b4eb740e 100644 --- a/SabreTools.Metadata.DatItems/Formats/Control.cs +++ b/SabreTools.Metadata.DatItems/Formats/Control.cs @@ -12,6 +12,12 @@ namespace SabreTools.Metadata.DatItems.Formats { #region Fields + public Data.Models.Metadata.ControlType? ControlType + { + get => (_internal as Data.Models.Metadata.Control)?.ControlType; + set => (_internal as Data.Models.Metadata.Control)?.ControlType = value; + } + public bool? Reverse { get => (_internal as Data.Models.Metadata.Control)?.Reverse; @@ -54,10 +60,6 @@ namespace SabreTools.Metadata.DatItems.Formats long? sensitivity = ReadLong(Data.Models.Metadata.Control.SensitivityKey); if (sensitivity is not null) Write(Data.Models.Metadata.Control.SensitivityKey, sensitivity.ToString()); - - string? controlType = ReadString(Data.Models.Metadata.Control.ControlTypeKey); - if (controlType is not null) - Write(Data.Models.Metadata.Control.ControlTypeKey, controlType.AsControlType()?.AsStringValue()); } public Control(Data.Models.Metadata.Control item, Machine machine, Source source) : this(item) diff --git a/SabreTools.Metadata.DatItems/Formats/DataArea.cs b/SabreTools.Metadata.DatItems/Formats/DataArea.cs index 1dd9191e..ef25cc90 100644 --- a/SabreTools.Metadata.DatItems/Formats/DataArea.cs +++ b/SabreTools.Metadata.DatItems/Formats/DataArea.cs @@ -11,6 +11,16 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("dataarea"), XmlRoot("dataarea")] public sealed class DataArea : DatItem { + #region Fields + + public Data.Models.Metadata.Endianness? Endianness + { + get => (_internal as Data.Models.Metadata.DataArea)?.Endianness; + set => (_internal as Data.Models.Metadata.DataArea)?.Endianness = value; + } + + #endregion + #region Constructors public DataArea() : base() { } @@ -18,10 +28,6 @@ namespace SabreTools.Metadata.DatItems.Formats public DataArea(Data.Models.Metadata.DataArea item) : base(item) { // Process flag values - string? endianness = ReadString(Data.Models.Metadata.DataArea.EndiannessKey); - if (endianness is not null) - Write(Data.Models.Metadata.DataArea.EndiannessKey, endianness.AsEndianness()?.AsStringValue()); - long? size = ReadLong(Data.Models.Metadata.DataArea.SizeKey); if (size is not null) Write(Data.Models.Metadata.DataArea.SizeKey, size.ToString()); diff --git a/SabreTools.Metadata.DatItems/Formats/Device.cs b/SabreTools.Metadata.DatItems/Formats/Device.cs index 3c95b8d8..57ce5981 100644 --- a/SabreTools.Metadata.DatItems/Formats/Device.cs +++ b/SabreTools.Metadata.DatItems/Formats/Device.cs @@ -13,6 +13,12 @@ namespace SabreTools.Metadata.DatItems.Formats { #region Fields + public Data.Models.Metadata.DeviceType? DeviceType + { + get => (_internal as Data.Models.Metadata.Device)?.DeviceType; + set => (_internal as Data.Models.Metadata.Device)?.DeviceType = value; + } + [JsonIgnore] public bool InstancesSpecified { @@ -46,10 +52,6 @@ namespace SabreTools.Metadata.DatItems.Formats if (mandatory is not null) Write(Data.Models.Metadata.Device.MandatoryKey, mandatory.FromYesNo()); - string? deviceType = ReadString(Data.Models.Metadata.Device.DeviceTypeKey); - if (deviceType is not null) - Write(Data.Models.Metadata.Device.DeviceTypeKey, deviceType.AsDeviceType()?.AsStringValue()); - // Handle subitems var instance = item.Read(Data.Models.Metadata.Device.InstanceKey); if (instance is not null) diff --git a/SabreTools.Metadata.DatItems/Formats/Disk.cs b/SabreTools.Metadata.DatItems/Formats/Disk.cs index b3510c18..7a2e3d81 100644 --- a/SabreTools.Metadata.DatItems/Formats/Disk.cs +++ b/SabreTools.Metadata.DatItems/Formats/Disk.cs @@ -1,4 +1,4 @@ -using System.Xml.Serialization; +using System.Xml.Serialization; using Newtonsoft.Json; using SabreTools.Data.Extensions; using SabreTools.Data.Models.Metadata; @@ -56,6 +56,12 @@ namespace SabreTools.Metadata.DatItems.Formats } } + public ItemStatus? Status + { + get => (_internal as Data.Models.Metadata.Disk)?.Status; + set => (_internal as Data.Models.Metadata.Disk)?.Status = value; + } + public bool? Writable { get => (_internal as Data.Models.Metadata.Disk)?.Writable; @@ -69,18 +75,13 @@ namespace SabreTools.Metadata.DatItems.Formats public Disk() : base() { Write(DupeTypeKey, 0x00); - Write(Data.Models.Metadata.Disk.StatusKey, ItemStatus.None.AsStringValue()); + Status = ItemStatus.None; } public Disk(Data.Models.Metadata.Disk item) : base(item) { Write(DupeTypeKey, 0x00); - // Process flag values - string? status = ReadString(Data.Models.Metadata.Disk.StatusKey); - if (status is not null) - Write(Data.Models.Metadata.Disk.StatusKey, status.AsItemStatus()?.AsStringValue()); - // Process hash values string? md5 = ReadString(Data.Models.Metadata.Disk.MD5Key); if (md5 is not null) diff --git a/SabreTools.Metadata.DatItems/Formats/Display.cs b/SabreTools.Metadata.DatItems/Formats/Display.cs index c3462fa7..3cf87591 100644 --- a/SabreTools.Metadata.DatItems/Formats/Display.cs +++ b/SabreTools.Metadata.DatItems/Formats/Display.cs @@ -13,6 +13,12 @@ namespace SabreTools.Metadata.DatItems.Formats { #region Fields + public Data.Models.Metadata.DisplayType? DisplayType + { + get => (_internal as Data.Models.Metadata.Display)?.DisplayType; + set => (_internal as Data.Models.Metadata.Display)?.DisplayType = value; + } + public bool? FlipX { get => (_internal as Data.Models.Metadata.Display)?.FlipX; @@ -56,10 +62,6 @@ namespace SabreTools.Metadata.DatItems.Formats if (rotate is not null) Write(Data.Models.Metadata.Display.RotateKey, rotate.ToString()); - string? displayType = ReadString(Data.Models.Metadata.Display.DisplayTypeKey); - if (displayType is not null) - Write(Data.Models.Metadata.Display.DisplayTypeKey, displayType.AsDisplayType()?.AsStringValue()); - long? vbEnd = ReadLong(Data.Models.Metadata.Display.VBEndKey); if (vbEnd is not null) Write(Data.Models.Metadata.Display.VBEndKey, vbEnd.ToString()); @@ -88,7 +90,7 @@ namespace SabreTools.Metadata.DatItems.Formats // TODO: Convert this block to more traditional set of if/then Write(Data.Models.Metadata.Video.AspectXKey, NumberHelper.ConvertToInt64(item.ReadString(Data.Models.Metadata.Video.AspectXKey))); Write(Data.Models.Metadata.Video.AspectYKey, NumberHelper.ConvertToInt64(item.ReadString(Data.Models.Metadata.Video.AspectYKey))); - Write(Data.Models.Metadata.Display.DisplayTypeKey, item.ReadString(Data.Models.Metadata.Video.ScreenKey).AsDisplayType()?.AsStringValue()); + DisplayType = item.Screen; Write(Data.Models.Metadata.Display.HeightKey, NumberHelper.ConvertToInt64(item.ReadString(Data.Models.Metadata.Video.HeightKey))); Write(Data.Models.Metadata.Display.RefreshKey, NumberHelper.ConvertToDouble(item.ReadString(Data.Models.Metadata.Video.RefreshKey))); Write(Data.Models.Metadata.Display.WidthKey, NumberHelper.ConvertToInt64(item.ReadString(Data.Models.Metadata.Video.WidthKey))); @@ -123,10 +125,6 @@ namespace SabreTools.Metadata.DatItems.Formats if (refresh is not null) Write(Data.Models.Metadata.Display.RefreshKey, refresh.ToString()); - string? screen = ReadString(Data.Models.Metadata.Video.ScreenKey); - if (screen is not null) - Write(Data.Models.Metadata.Display.DisplayTypeKey, screen.AsDisplayType()?.AsStringValue()); - long? width = ReadLong(Data.Models.Metadata.Video.WidthKey); if (width is not null) Write(Data.Models.Metadata.Display.WidthKey, width.ToString()); diff --git a/SabreTools.Metadata.DatItems/Formats/Driver.cs b/SabreTools.Metadata.DatItems/Formats/Driver.cs index 7d538da3..1756da86 100644 --- a/SabreTools.Metadata.DatItems/Formats/Driver.cs +++ b/SabreTools.Metadata.DatItems/Formats/Driver.cs @@ -12,6 +12,30 @@ namespace SabreTools.Metadata.DatItems.Formats { #region Fields + public Data.Models.Metadata.Blit? Blit + { + get => (_internal as Data.Models.Metadata.Driver)?.Blit; + set => (_internal as Data.Models.Metadata.Driver)?.Blit = value; + } + + public Data.Models.Metadata.SupportStatus? Cocktail + { + get => (_internal as Data.Models.Metadata.Driver)?.Cocktail; + set => (_internal as Data.Models.Metadata.Driver)?.Cocktail = value; + } + + public Data.Models.Metadata.SupportStatus? Color + { + get => (_internal as Data.Models.Metadata.Driver)?.Color; + set => (_internal as Data.Models.Metadata.Driver)?.Color = value; + } + + public Data.Models.Metadata.SupportStatus? Emulation + { + get => (_internal as Data.Models.Metadata.Driver)?.Emulation; + set => (_internal as Data.Models.Metadata.Driver)?.Emulation = value; + } + public bool? Incomplete { get => (_internal as Data.Models.Metadata.Driver)?.Incomplete; @@ -30,6 +54,24 @@ namespace SabreTools.Metadata.DatItems.Formats set => (_internal as Data.Models.Metadata.Driver)?.RequiresArtwork = value; } + public Data.Models.Metadata.Supported? SaveState + { + get => (_internal as Data.Models.Metadata.Driver)?.SaveState; + set => (_internal as Data.Models.Metadata.Driver)?.SaveState = value; + } + + public Data.Models.Metadata.SupportStatus? Sound + { + get => (_internal as Data.Models.Metadata.Driver)?.Sound; + set => (_internal as Data.Models.Metadata.Driver)?.Sound = value; + } + + public Data.Models.Metadata.SupportStatus? Status + { + get => (_internal as Data.Models.Metadata.Driver)?.Status; + set => (_internal as Data.Models.Metadata.Driver)?.Status = value; + } + public bool? Unofficial { get => (_internal as Data.Models.Metadata.Driver)?.Unofficial; @@ -45,33 +87,9 @@ namespace SabreTools.Metadata.DatItems.Formats public Driver(Data.Models.Metadata.Driver item) : base(item) { // Process flag values - string? cocktail = ReadString(Data.Models.Metadata.Driver.CocktailKey); - if (cocktail is not null) - Write(Data.Models.Metadata.Driver.CocktailKey, cocktail.AsSupportStatus()?.AsStringValue()); - - string? color = ReadString(Data.Models.Metadata.Driver.ColorKey); - if (color is not null) - Write(Data.Models.Metadata.Driver.ColorKey, color.AsSupportStatus()?.AsStringValue()); - - string? emulation = ReadString(Data.Models.Metadata.Driver.EmulationKey); - if (emulation is not null) - Write(Data.Models.Metadata.Driver.EmulationKey, emulation.AsSupportStatus()?.AsStringValue()); - long? paletteSize = ReadLong(Data.Models.Metadata.Driver.PaletteSizeKey); if (paletteSize is not null) Write(Data.Models.Metadata.Driver.PaletteSizeKey, paletteSize.ToString()); - - string? saveState = ReadString(Data.Models.Metadata.Driver.SaveStateKey); - if (saveState is not null) - Write(Data.Models.Metadata.Driver.SaveStateKey, saveState.AsSupported()?.AsStringValue(useSecond: true)); - - string? sound = ReadString(Data.Models.Metadata.Driver.SoundKey); - if (sound is not null) - Write(Data.Models.Metadata.Driver.SoundKey, sound.AsSupportStatus()?.AsStringValue()); - - string? status = ReadString(Data.Models.Metadata.Driver.StatusKey); - if (status is not null) - Write(Data.Models.Metadata.Driver.StatusKey, status.AsSupportStatus()?.AsStringValue()); } public Driver(Data.Models.Metadata.Driver item, Machine machine, Source source) : this(item) diff --git a/SabreTools.Metadata.DatItems/Formats/Feature.cs b/SabreTools.Metadata.DatItems/Formats/Feature.cs index dea27133..7f8cf288 100644 --- a/SabreTools.Metadata.DatItems/Formats/Feature.cs +++ b/SabreTools.Metadata.DatItems/Formats/Feature.cs @@ -10,25 +10,33 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("feature"), XmlRoot("feature")] public sealed class Feature : DatItem { + #region Fields + + public Data.Models.Metadata.FeatureType? FeatureType + { + get => (_internal as Data.Models.Metadata.Feature)?.FeatureType; + set => (_internal as Data.Models.Metadata.Feature)?.FeatureType = value; + } + + public Data.Models.Metadata.FeatureStatus? Overall + { + get => (_internal as Data.Models.Metadata.Feature)?.Overall; + set => (_internal as Data.Models.Metadata.Feature)?.Overall = value; + } + + public Data.Models.Metadata.FeatureStatus? Status + { + get => (_internal as Data.Models.Metadata.Feature)?.Status; + set => (_internal as Data.Models.Metadata.Feature)?.Status = value; + } + + #endregion + #region Constructors public Feature() : base() { } - public Feature(Data.Models.Metadata.Feature item) : base(item) - { - // Process flag values - string? overall = ReadString(Data.Models.Metadata.Feature.OverallKey); - if (overall is not null) - Write(Data.Models.Metadata.Feature.OverallKey, overall.AsFeatureStatus()?.AsStringValue()); - - string? status = ReadString(Data.Models.Metadata.Feature.StatusKey); - if (status is not null) - Write(Data.Models.Metadata.Feature.StatusKey, status.AsFeatureStatus()?.AsStringValue()); - - string? featureType = ReadString(Data.Models.Metadata.Feature.FeatureTypeKey); - if (featureType is not null) - Write(Data.Models.Metadata.Feature.FeatureTypeKey, featureType.AsFeatureType()?.AsStringValue()); - } + public Feature(Data.Models.Metadata.Feature item) : base(item) { } public Feature(Data.Models.Metadata.Feature item, Machine machine, Source source) : this(item) { diff --git a/SabreTools.Metadata.DatItems/Formats/PartFeature.cs b/SabreTools.Metadata.DatItems/Formats/PartFeature.cs index a2be2f3c..efe4f9f0 100644 --- a/SabreTools.Metadata.DatItems/Formats/PartFeature.cs +++ b/SabreTools.Metadata.DatItems/Formats/PartFeature.cs @@ -21,6 +21,24 @@ namespace SabreTools.Metadata.DatItems.Formats #region Fields + public Data.Models.Metadata.FeatureType? FeatureType + { + get => (_internal as Data.Models.Metadata.Feature)?.FeatureType; + set => (_internal as Data.Models.Metadata.Feature)?.FeatureType = value; + } + + public Data.Models.Metadata.FeatureStatus? Overall + { + get => (_internal as Data.Models.Metadata.Feature)?.Overall; + set => (_internal as Data.Models.Metadata.Feature)?.Overall = value; + } + + public Data.Models.Metadata.FeatureStatus? Status + { + get => (_internal as Data.Models.Metadata.Feature)?.Status; + set => (_internal as Data.Models.Metadata.Feature)?.Status = value; + } + /// /> /// This needs to be set to PartFeature because internally it uses Feature public override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.PartFeature; @@ -31,21 +49,7 @@ namespace SabreTools.Metadata.DatItems.Formats public PartFeature() : base() { } - public PartFeature(Data.Models.Metadata.Feature item) : base(item) - { - // Process flag values - string? overall = ReadString(Data.Models.Metadata.Feature.OverallKey); - if (overall is not null) - Write(Data.Models.Metadata.Feature.OverallKey, overall.AsFeatureStatus()?.AsStringValue()); - - string? status = ReadString(Data.Models.Metadata.Feature.StatusKey); - if (status is not null) - Write(Data.Models.Metadata.Feature.StatusKey, status.AsFeatureStatus()?.AsStringValue()); - - string? featureType = ReadString(Data.Models.Metadata.Feature.FeatureTypeKey); - if (featureType is not null) - Write(Data.Models.Metadata.Feature.FeatureTypeKey, featureType.AsFeatureType()?.AsStringValue()); - } + public PartFeature(Data.Models.Metadata.Feature item) : base(item) { } public PartFeature(Data.Models.Metadata.Feature item, Machine machine, Source source) : this(item) { diff --git a/SabreTools.Metadata.DatItems/Formats/Rom.cs b/SabreTools.Metadata.DatItems/Formats/Rom.cs index f3670a55..c791986d 100644 --- a/SabreTools.Metadata.DatItems/Formats/Rom.cs +++ b/SabreTools.Metadata.DatItems/Formats/Rom.cs @@ -38,7 +38,7 @@ namespace SabreTools.Metadata.DatItems.Formats && (!string.IsNullOrEmpty(dataArea.GetName()) || dataArea.ReadLong(Data.Models.Metadata.DataArea.SizeKey) is not null || dataArea.ReadLong(Data.Models.Metadata.DataArea.WidthKey) is not null - || dataArea.ReadString(Data.Models.Metadata.DataArea.EndiannessKey).AsEndianness() is not null); + || dataArea.Endianness is not null); } } @@ -60,14 +60,10 @@ namespace SabreTools.Metadata.DatItems.Formats set => (_internal as Data.Models.Metadata.Rom)?.Inverted = value; } - [JsonIgnore] - public bool ItemStatusSpecified + public LoadFlag? LoadFlag { - get - { - var status = ReadString(Data.Models.Metadata.Rom.StatusKey).AsItemStatus(); - return status is not null && status != ItemStatus.None; - } + get => (_internal as Data.Models.Metadata.Rom)?.LoadFlag; + set => (_internal as Data.Models.Metadata.Rom)?.LoadFlag = value; } public bool? MIA @@ -76,6 +72,12 @@ namespace SabreTools.Metadata.DatItems.Formats set => (_internal as Data.Models.Metadata.Rom)?.MIA = value; } + public OpenMSXSubType? OpenMSXMediaType + { + get => (_internal as Data.Models.Metadata.Rom)?.OpenMSXMediaType; + set => (_internal as Data.Models.Metadata.Rom)?.OpenMSXMediaType = value; + } + public bool? Optional { get => (_internal as Data.Models.Metadata.Rom)?.Optional; @@ -110,6 +112,12 @@ namespace SabreTools.Metadata.DatItems.Formats set => (_internal as Data.Models.Metadata.Rom)?.SoundOnly = value; } + public ItemStatus? Status + { + get => (_internal as Data.Models.Metadata.Rom)?.Status; + set => (_internal as Data.Models.Metadata.Rom)?.Status = value; + } + #endregion #region Constructors @@ -117,7 +125,7 @@ namespace SabreTools.Metadata.DatItems.Formats public Rom() : base() { Write(DupeTypeKey, 0x00); - Write(Data.Models.Metadata.Rom.StatusKey, ItemStatus.None.AsStringValue()); + Status = ItemStatus.None; } public Rom(Dump item, Machine machine, Source source, int index) @@ -150,7 +158,7 @@ namespace SabreTools.Metadata.DatItems.Formats SetName(name); Write(Data.Models.Metadata.Rom.OffsetKey, rom.ReadString(Data.Models.Metadata.Rom.StartKey)); - Write(Data.Models.Metadata.Rom.OpenMSXMediaType, subType?.AsStringValue()); + OpenMSXMediaType = subType; Write(Data.Models.Metadata.Rom.OpenMSXType, rom.ReadString(Data.Models.Metadata.Rom.OpenMSXType) ?? rom.ItemType.ToString()); Write(Data.Models.Metadata.Rom.RemarkKey, rom.ReadString(Data.Models.Metadata.Rom.RemarkKey)); Write(Data.Models.Metadata.Rom.SHA1Key, rom.ReadString(Data.Models.Metadata.Rom.SHA1Key)); @@ -229,19 +237,6 @@ namespace SabreTools.Metadata.DatItems.Formats { Write(DupeTypeKey, 0x00); - // Process flag values - string? loadFlag = ReadString(Data.Models.Metadata.Rom.LoadFlagKey); - if (loadFlag is not null) - Write(Data.Models.Metadata.Rom.LoadFlagKey, loadFlag.AsLoadFlag()?.AsStringValue()); - - string? openMSXMediaType = ReadString(Data.Models.Metadata.Rom.OpenMSXMediaType); - if (openMSXMediaType is not null) - Write(Data.Models.Metadata.Rom.OpenMSXMediaType, openMSXMediaType.AsOpenMSXSubType()?.AsStringValue()); - - string? status = ReadString(Data.Models.Metadata.Rom.StatusKey); - if (status is not null) - Write(Data.Models.Metadata.Rom.StatusKey, status.AsItemStatus()?.AsStringValue()); - // Process hash values long? size = ReadLong(Data.Models.Metadata.Rom.SizeKey); if (size is not null) diff --git a/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs b/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs index c6516287..ac3bedbe 100644 --- a/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs +++ b/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs @@ -10,17 +10,22 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("softwarelist"), XmlRoot("softwarelist")] public sealed class SoftwareList : DatItem { + #region Fields + + public Data.Models.Metadata.SoftwareListStatus? Status + { + get => (_internal as Data.Models.Metadata.SoftwareList)?.Status; + set => (_internal as Data.Models.Metadata.SoftwareList)?.Status = value; + } + + #endregion + #region Constructors public SoftwareList() : base() { } public SoftwareList(Data.Models.Metadata.SoftwareList item) : base(item) { - // Process flag values - string? status = ReadString(Data.Models.Metadata.SoftwareList.StatusKey); - if (status is not null) - Write(Data.Models.Metadata.SoftwareList.StatusKey, status.AsSoftwareListStatus()?.AsStringValue()); - // Handle subitems // TODO: Handle the Software subitem } diff --git a/SabreTools.Metadata.DatItems/Machine.cs b/SabreTools.Metadata.DatItems/Machine.cs index 8f032c47..115a492b 100644 --- a/SabreTools.Metadata.DatItems/Machine.cs +++ b/SabreTools.Metadata.DatItems/Machine.cs @@ -39,6 +39,12 @@ namespace SabreTools.Metadata.DatItems set => _internal.Runnable = value; } + public Data.Models.Metadata.Supported? Supported + { + get => _internal.Supported; + set => _internal.Supported = value; + } + #endregion #region Constructors @@ -91,10 +97,6 @@ namespace SabreTools.Metadata.DatItems if (im2Crc is not null) Write(Data.Models.Metadata.Machine.Im2CRCKey, TextHelper.NormalizeCRC32(im2Crc)); - string? supported = ReadString(Data.Models.Metadata.Machine.SupportedKey); - if (supported is not null) - Write(Data.Models.Metadata.Machine.SupportedKey, supported.AsSupported()?.AsStringValue()); - // Handle Trurip object, if it exists var truripItem = machine.Read(Data.Models.Metadata.Machine.TruripKey); if (truripItem is not null) diff --git a/SabreTools.Metadata.Filter/FilterObject.cs b/SabreTools.Metadata.Filter/FilterObject.cs index 958c73dc..0c799bbc 100644 --- a/SabreTools.Metadata.Filter/FilterObject.cs +++ b/SabreTools.Metadata.Filter/FilterObject.cs @@ -356,10 +356,17 @@ namespace SabreTools.Metadata.Filter checkValue = item.Default.FromYesNo(); return true; + case Chip item when Key.FieldName == "type": + checkValue = item.ChipType?.AsStringValue(); + return true; case Chip item when Key.FieldName == "soundonly": checkValue = item.SoundOnly.FromYesNo(); return true; + case Condition item when Key.FieldName == "relation": + checkValue = item.Relation?.AsStringValue(); + return true; + case ConfLocation item when Key.FieldName == "inverted": checkValue = item.Inverted.FromYesNo(); return true; @@ -368,10 +375,21 @@ namespace SabreTools.Metadata.Filter checkValue = item.Default.FromYesNo(); return true; + case Control item when Key.FieldName == "type": + checkValue = item.ControlType?.AsStringValue(); + return true; case Control item when Key.FieldName == "reverse": checkValue = item.Reverse.FromYesNo(); return true; + case DataArea item when Key.FieldName == "endianness": + checkValue = item.Endianness?.AsStringValue(); + return true; + + case Device item when Key.FieldName == "type": + checkValue = item.DeviceType?.AsStringValue(); + return true; + case DipLocation item when Key.FieldName == "inverted": checkValue = item.Inverted.FromYesNo(); return true; @@ -391,6 +409,9 @@ namespace SabreTools.Metadata.Filter case Disk item when Key.FieldName == "optional": checkValue = item.Optional.FromYesNo(); return true; + case Disk item when Key.FieldName == "status": + checkValue = item.Status?.AsStringValue(); + return true; case Disk item when Key.FieldName == "writable": checkValue = item.Writable.FromYesNo(); return true; @@ -398,7 +419,22 @@ namespace SabreTools.Metadata.Filter case Display item when Key.FieldName == "flipx": checkValue = item.FlipX.FromYesNo(); return true; + case Display item when Key.FieldName == "type": + checkValue = item.DisplayType?.AsStringValue(); + return true; + case Driver item when Key.FieldName == "blit": + checkValue = item.Blit?.AsStringValue(); + return true; + case Driver item when Key.FieldName == "cocktail": + checkValue = item.Cocktail?.AsStringValue(); + return true; + case Driver item when Key.FieldName == "color": + checkValue = item.Color?.AsStringValue(); + return true; + case Driver item when Key.FieldName == "emulation": + checkValue = item.Emulation?.AsStringValue(); + return true; case Driver item when Key.FieldName == "incomplete": checkValue = item.Incomplete.FromYesNo(); return true; @@ -408,13 +444,44 @@ namespace SabreTools.Metadata.Filter case Driver item when Key.FieldName == "requiresartwork": checkValue = item.RequiresArtwork.FromYesNo(); return true; + case Driver item when Key.FieldName == "savestate": + checkValue = item.SaveState?.AsStringValue(); + return true; + case Driver item when Key.FieldName == "sound": + checkValue = item.Sound?.AsStringValue(); + return true; + case Driver item when Key.FieldName == "status": + checkValue = item.Status?.AsStringValue(); + return true; case Driver item when Key.FieldName == "unofficial": checkValue = item.Unofficial.FromYesNo(); return true; + case Feature item when Key.FieldName == "overall": + checkValue = item.Overall?.AsStringValue(); + return true; + case Feature item when Key.FieldName == "status": + checkValue = item.Status?.AsStringValue(); + return true; + case Feature item when Key.FieldName == "type": + checkValue = item.FeatureType?.AsStringValue(); + return true; + + case Header item when Key.FieldName == "biosmode": + checkValue = item.BiosMode.AsStringValue(); + return true; case Header item when Key.FieldName == "debug": checkValue = item.Debug.FromYesNo(); return true; + case Header item when Key.FieldName == "forcemerging": + checkValue = item.ForceMerging.AsStringValue(); + return true; + case Header item when Key.FieldName == "forcenodump": + checkValue = item.ForceNodump.AsStringValue(); + return true; + case Header item when Key.FieldName == "forcepacking": + checkValue = item.ForcePacking.AsStringValue(); + return true; case Header item when Key.FieldName == "forcezipping": checkValue = item.ForceZipping.FromYesNo(); return true; @@ -427,6 +494,12 @@ namespace SabreTools.Metadata.Filter case Header item when Key.FieldName == "locksamplemode": checkValue = item.LockSampleMode.FromYesNo(); return true; + case Header item when Key.FieldName == "rommode": + checkValue = item.RomMode.AsStringValue(); + return true; + case Header item when Key.FieldName == "samplemode": + checkValue = item.SampleMode.AsStringValue(); + return true; case Input item when Key.FieldName == "service": checkValue = item.Service.FromYesNo(); @@ -447,6 +520,9 @@ namespace SabreTools.Metadata.Filter case Machine item when Key.FieldName == "runnable": checkValue = item.Runnable?.AsStringValue(); return true; + case Machine item when Key.FieldName == "supported": + checkValue = item.Supported?.AsStringValue(); + return true; case RamOption item when Key.FieldName == "default": checkValue = item.Default.FromYesNo(); @@ -465,6 +541,12 @@ namespace SabreTools.Metadata.Filter case Rom item when Key.FieldName == "inverted": checkValue = item.Inverted.FromYesNo(); return true; + case Rom item when Key.FieldName == "loadflag": + checkValue = item.LoadFlag?.AsStringValue(); + return true; + case Rom item when Key.FieldName == "mediatype": + checkValue = item.OpenMSXMediaType?.AsStringValue(); + return true; case Rom item when Key.FieldName == "mia": checkValue = item.MIA.FromYesNo(); return true; @@ -474,11 +556,26 @@ namespace SabreTools.Metadata.Filter case Rom item when Key.FieldName == "soundonly": checkValue = item.SoundOnly.FromYesNo(); return true; + case Rom item when Key.FieldName == "status": + checkValue = item.Status?.AsStringValue(); + return true; case SlotOption item when Key.FieldName == "default": checkValue = item.Default.FromYesNo(); return true; + case Software item when Key.FieldName == "supported": + checkValue = item.Supported?.AsStringValue(); + return true; + + case SoftwareList item when Key.FieldName == "status": + checkValue = item.Status?.AsStringValue(); + return true; + + case Video item when Key.FieldName == "screen": + checkValue = item.Screen?.AsStringValue(); + return true; + // Fallthrough to Dictionary-based checking default: break; } diff --git a/SabreTools.Metadata.Test/DictionaryBaseExtensionsTests.cs b/SabreTools.Metadata.Test/DictionaryBaseExtensionsTests.cs index e6905167..5cd18192 100644 --- a/SabreTools.Metadata.Test/DictionaryBaseExtensionsTests.cs +++ b/SabreTools.Metadata.Test/DictionaryBaseExtensionsTests.cs @@ -22,14 +22,14 @@ namespace SabreTools.Metadata.Test { DictionaryBase self = new Disk { - [Disk.StatusKey] = "nodump", + Status = ItemStatus.Nodump, Name = "XXXXXX", [Disk.MD5Key] = string.Empty, [Disk.SHA1Key] = string.Empty, }; DictionaryBase other = new Disk { - [Disk.StatusKey] = "NODUMP", + Status = ItemStatus.Nodump, Name = "XXXXXX", [Disk.MD5Key] = string.Empty, [Disk.SHA1Key] = string.Empty, @@ -268,7 +268,7 @@ namespace SabreTools.Metadata.Test { DictionaryBase self = new Rom { - [Rom.StatusKey] = "nodump", + Status = ItemStatus.Nodump, Name = "XXXXXX", [Rom.SizeKey] = 12345, [Rom.CRC16Key] = string.Empty, @@ -287,7 +287,7 @@ namespace SabreTools.Metadata.Test }; DictionaryBase other = new Rom { - [Rom.StatusKey] = "NODUMP", + Status = ItemStatus.Nodump, Name = "XXXXXX", [Rom.SizeKey] = 12345, [Rom.CRC16Key] = string.Empty, diff --git a/SabreTools.Metadata/DictionaryBaseExtensions.cs b/SabreTools.Metadata/DictionaryBaseExtensions.cs index 04466666..f8b0a28e 100644 --- a/SabreTools.Metadata/DictionaryBaseExtensions.cs +++ b/SabreTools.Metadata/DictionaryBaseExtensions.cs @@ -176,15 +176,15 @@ namespace SabreTools.Metadata /// private static bool EqualsImpl(this Disk self, Disk other) { - string? selfStatus = self.ReadString(Disk.StatusKey); - string? otherStatus = other.ReadString(Disk.StatusKey); + ItemStatus? selfStatus = self.Status; + ItemStatus? otherStatus = other.Status; string? selfName = self.Name; string? otherName = other.Name; // If all hashes are empty but they're both nodump and the names match, then they're dupes - if (string.Equals(selfStatus, "nodump", StringComparison.OrdinalIgnoreCase) - && string.Equals(otherStatus, "nodump", StringComparison.OrdinalIgnoreCase) + if (selfStatus == ItemStatus.Nodump + && otherStatus == ItemStatus.Nodump && string.Equals(selfName, otherName, StringComparison.OrdinalIgnoreCase) && !self.HasHashes() && !other.HasHashes()) @@ -218,8 +218,8 @@ namespace SabreTools.Metadata /// private static bool EqualsImpl(this Rom self, Rom other) { - string? selfStatus = self.ReadString(Rom.StatusKey); - string? otherStatus = other.ReadString(Rom.StatusKey); + ItemStatus? selfStatus = self.Status; + ItemStatus? otherStatus = other.Status; string? selfName = self.Name; string? otherName = other.Name; @@ -228,8 +228,8 @@ namespace SabreTools.Metadata long? otherSize = other.ReadLong(Rom.SizeKey); // If all hashes are empty but they're both nodump and the names match, then they're dupes - if (string.Equals(selfStatus, "nodump", StringComparison.OrdinalIgnoreCase) - && string.Equals(otherStatus, "nodump", StringComparison.OrdinalIgnoreCase) + if (selfStatus == ItemStatus.Nodump + && otherStatus == ItemStatus.Nodump && string.Equals(selfName, otherName, StringComparison.OrdinalIgnoreCase) && !self.HasHashes() && !other.HasHashes()) diff --git a/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs b/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs index ba602350..7949b0c6 100644 --- a/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs @@ -73,9 +73,9 @@ namespace SabreTools.Serialization.CrossModel.Test Comment = "XXXXXX", Header = "XXXXXX", Type = "XXXXXX", - ForceMerging = "XXXXXX", + ForceMerging = Data.Models.Metadata.MergingFlag.Merged, ForceZipping = true, - ForcePacking = "XXXXXX", + ForcePacking = Data.Models.Metadata.PackingFlag.Zip, }; var release = new Data.Models.ClrMamePro.Release @@ -108,7 +108,7 @@ namespace SabreTools.Serialization.CrossModel.Test RIPEMD160 = "XXXXXX", SHA1 = "XXXXXX", Merge = "XXXXXX", - Status = "XXXXXX", + Status = Data.Models.Metadata.ItemStatus.Good, Flags = "XXXXXX", Date = "XXXXXX", SHA256 = "XXXXXX", @@ -131,7 +131,7 @@ namespace SabreTools.Serialization.CrossModel.Test MD5 = "XXXXXX", SHA1 = "XXXXXX", Merge = "XXXXXX", - Status = "XXXXXX", + Status = Data.Models.Metadata.ItemStatus.Good, Flags = "XXXXXX", }; @@ -156,7 +156,7 @@ namespace SabreTools.Serialization.CrossModel.Test var chip = new Data.Models.ClrMamePro.Chip { - Type = "XXXXXX", + Type = Data.Models.Metadata.ChipType.CPU, Name = "XXXXXX", Flags = "XXXXXX", Clock = "XXXXXX", @@ -164,7 +164,7 @@ namespace SabreTools.Serialization.CrossModel.Test var video = new Data.Models.ClrMamePro.Video { - Screen = "XXXXXX", + Screen = Data.Models.Metadata.DisplayType.Vector, Orientation = "XXXXXX", X = "XXXXXX", Y = "XXXXXX", @@ -197,11 +197,11 @@ namespace SabreTools.Serialization.CrossModel.Test var driver = new Data.Models.ClrMamePro.Driver { - Status = "XXXXXX", - Color = "XXXXXX", - Sound = "XXXXXX", + Status = Data.Models.Metadata.SupportStatus.Good, + Color = Data.Models.Metadata.SupportStatus.Good, + Sound = Data.Models.Metadata.SupportStatus.Good, PaletteSize = "XXXXXX", - Blit = "XXXXXX", + Blit = Data.Models.Metadata.Blit.Plain, }; // TODO: This omits Set, should that have a separate case? @@ -262,9 +262,9 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", cmp.Comment); Assert.Equal("XXXXXX", cmp.Header); Assert.Equal("XXXXXX", cmp.Type); - Assert.Equal("XXXXXX", cmp.ForceMerging); + Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, cmp.ForceMerging); Assert.Equal(true, cmp.ForceZipping); - Assert.Equal("XXXXXX", cmp.ForcePacking); + Assert.Equal(Data.Models.Metadata.PackingFlag.Zip, cmp.ForcePacking); } /// @@ -371,7 +371,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", rom.RIPEMD160); Assert.Equal("XXXXXX", rom.SHA1); Assert.Equal("XXXXXX", rom.Merge); - Assert.Equal("XXXXXX", rom.Status); + Assert.Equal(Data.Models.Metadata.ItemStatus.Good, rom.Status); Assert.Equal("XXXXXX", rom.Flags); Assert.Equal("XXXXXX", rom.Date); Assert.Equal("XXXXXX", rom.SHA256); @@ -398,7 +398,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", disk.MD5); Assert.Equal("XXXXXX", disk.SHA1); Assert.Equal("XXXXXX", disk.Merge); - Assert.Equal("XXXXXX", disk.Status); + Assert.Equal(Data.Models.Metadata.ItemStatus.Good, disk.Status); Assert.Equal("XXXXXX", disk.Flags); } @@ -439,7 +439,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.ClrMamePro.Chip? chip) { Assert.NotNull(chip); - Assert.Equal("XXXXXX", chip.Type); + Assert.Equal(Data.Models.Metadata.ChipType.CPU, chip.Type); Assert.Equal("XXXXXX", chip.Name); Assert.Equal("XXXXXX", chip.Flags); Assert.Equal("XXXXXX", chip.Clock); @@ -451,7 +451,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.ClrMamePro.Video? video) { Assert.NotNull(video); - Assert.Equal("XXXXXX", video.Screen); + Assert.Equal(Data.Models.Metadata.DisplayType.Vector, video.Screen); Assert.Equal("XXXXXX", video.Orientation); Assert.Equal("XXXXXX", video.X); Assert.Equal("XXXXXX", video.Y); @@ -504,11 +504,11 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.ClrMamePro.Driver? driver) { Assert.NotNull(driver); - Assert.Equal("XXXXXX", driver.Status); - Assert.Equal("XXXXXX", driver.Color); - Assert.Equal("XXXXXX", driver.Sound); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Status); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Color); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Sound); Assert.Equal("XXXXXX", driver.PaletteSize); - Assert.Equal("XXXXXX", driver.Blit); + Assert.Equal(Data.Models.Metadata.Blit.Plain, driver.Blit); } /// diff --git a/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs b/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs index 624dc8fb..fdfca515 100644 --- a/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs @@ -80,7 +80,7 @@ namespace SabreTools.Serialization.CrossModel.Test Merge = "XXXXXX", Region = "XXXXXX", Offset = "XXXXXX", - Status = "XXXXXX", + Status = Data.Models.Metadata.ItemStatus.Good, Optional = true, Dispose = true, SoundOnly = true, @@ -95,7 +95,7 @@ namespace SabreTools.Serialization.CrossModel.Test Region = "XXXXXX", Index = "XXXXXX", Writable = true, - Status = "XXXXXX", + Status = Data.Models.Metadata.ItemStatus.Good, Optional = true, }; @@ -113,7 +113,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Name = "XXXXXX", Tag = "XXXXXX", - Type = "XXXXXX", + Type = Data.Models.Metadata.ChipType.CPU, SoundOnly = true, Clock = "XXXXXX", }; @@ -121,7 +121,7 @@ namespace SabreTools.Serialization.CrossModel.Test var display = new Data.Models.Listxml.Display { Tag = "XXXXXX", - Type = "XXXXXX", + Type = Data.Models.Metadata.DisplayType.Vector, Rotate = "XXXXXX", FlipX = true, Width = "XXXXXX", @@ -138,7 +138,7 @@ namespace SabreTools.Serialization.CrossModel.Test var video = new Data.Models.Listxml.Video { - Screen = "XXXXXX", + Screen = Data.Models.Metadata.DisplayType.Vector, Orientation = "XXXXXX", Width = "XXXXXX", Height = "XXXXXX", @@ -154,7 +154,7 @@ namespace SabreTools.Serialization.CrossModel.Test var control = new Data.Models.Listxml.Control { - Type = "XXXXXX", + Type = Data.Models.Metadata.ControlType.Lightgun, Player = "XXXXXX", Buttons = "XXXXXX", ReqButtons = "XXXXXX", @@ -183,7 +183,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Tag = "XXXXXX", Mask = "XXXXXX", - Relation = "XXXXXX", + Relation = Data.Models.Metadata.Relation.Equal, Value = "XXXXXX", }; @@ -257,13 +257,13 @@ namespace SabreTools.Serialization.CrossModel.Test var driver = new Data.Models.Listxml.Driver { - Status = "XXXXXX", - Color = "XXXXXX", - Sound = "XXXXXX", + Status = Data.Models.Metadata.SupportStatus.Good, + Color = Data.Models.Metadata.SupportStatus.Good, + Sound = Data.Models.Metadata.SupportStatus.Good, PaletteSize = "XXXXXX", - Emulation = "XXXXXX", - Cocktail = "XXXXXX", - SaveState = "XXXXXX", + Emulation = Data.Models.Metadata.SupportStatus.Good, + Cocktail = Data.Models.Metadata.SupportStatus.Good, + SaveState = Data.Models.Metadata.Supported.Yes, RequiresArtwork = true, Unofficial = true, NoSoundHardware = true, @@ -272,9 +272,9 @@ namespace SabreTools.Serialization.CrossModel.Test var feature = new Data.Models.Listxml.Feature { - Type = "XXXXXX", - Status = "XXXXXX", - Overall = "XXXXXX", + Type = Data.Models.Metadata.FeatureType.Protection, + Status = Data.Models.Metadata.FeatureStatus.Imperfect, + Overall = Data.Models.Metadata.FeatureStatus.Imperfect, }; var instance = new Data.Models.Listxml.Instance @@ -290,7 +290,7 @@ namespace SabreTools.Serialization.CrossModel.Test var device = new Data.Models.Listxml.Device { - Type = "XXXXXX", + Type = Data.Models.Metadata.DeviceType.PunchTape, Tag = "XXXXXX", FixedImage = "XXXXXX", Mandatory = "XXXXXX", @@ -316,7 +316,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Tag = "XXXXXX", Name = "XXXXXX", - Status = "XXXXXX", + Status = Data.Models.Metadata.SoftwareListStatus.Original, Filter = "XXXXXX", }; @@ -492,7 +492,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", rom.Merge); Assert.Equal("XXXXXX", rom.Region); Assert.Equal("XXXXXX", rom.Offset); - Assert.Equal("XXXXXX", rom.Status); + Assert.Equal(Data.Models.Metadata.ItemStatus.Good, rom.Status); Assert.Equal(true, rom.Optional); Assert.Equal(true, rom.Dispose); Assert.Equal(true, rom.SoundOnly); @@ -511,7 +511,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", disk.Region); Assert.Equal("XXXXXX", disk.Index); Assert.Equal(true, disk.Writable); - Assert.Equal("XXXXXX", disk.Status); + Assert.Equal(Data.Models.Metadata.ItemStatus.Good, disk.Status); Assert.Equal(true, disk.Optional); } @@ -541,7 +541,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(chip); Assert.Equal("XXXXXX", chip.Name); Assert.Equal("XXXXXX", chip.Tag); - Assert.Equal("XXXXXX", chip.Type); + Assert.Equal(Data.Models.Metadata.ChipType.CPU, chip.Type); Assert.Equal(true, chip.SoundOnly); Assert.Equal("XXXXXX", chip.Clock); } @@ -553,7 +553,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(display); Assert.Equal("XXXXXX", display.Tag); - Assert.Equal("XXXXXX", display.Type); + Assert.Equal(Data.Models.Metadata.DisplayType.Vector, display.Type); Assert.Equal("XXXXXX", display.Rotate); Assert.Equal(true, display.FlipX); Assert.Equal("XXXXXX", display.Width); @@ -574,7 +574,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Video? video) { Assert.NotNull(video); - Assert.Equal("XXXXXX", video.Screen); + Assert.Equal(Data.Models.Metadata.DisplayType.Vector, video.Screen); Assert.Equal("XXXXXX", video.Orientation); Assert.Equal("XXXXXX", video.Width); Assert.Equal("XXXXXX", video.Height); @@ -616,7 +616,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Control? control) { Assert.NotNull(control); - Assert.Equal("XXXXXX", control.Type); + Assert.Equal(Data.Models.Metadata.ControlType.Lightgun, control.Type); Assert.Equal("XXXXXX", control.Player); Assert.Equal("XXXXXX", control.Buttons); Assert.Equal("XXXXXX", control.ReqButtons); @@ -658,7 +658,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(condition); Assert.Equal("XXXXXX", condition.Tag); Assert.Equal("XXXXXX", condition.Mask); - Assert.Equal("XXXXXX", condition.Relation); + Assert.Equal(Data.Models.Metadata.Relation.Equal, condition.Relation); Assert.Equal("XXXXXX", condition.Value); } @@ -767,13 +767,13 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Driver? driver) { Assert.NotNull(driver); - Assert.Equal("XXXXXX", driver.Status); - Assert.Equal("XXXXXX", driver.Color); - Assert.Equal("XXXXXX", driver.Sound); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Status); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Color); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Sound); Assert.Equal("XXXXXX", driver.PaletteSize); - Assert.Equal("XXXXXX", driver.Emulation); - Assert.Equal("XXXXXX", driver.Cocktail); - Assert.Equal("XXXXXX", driver.SaveState); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Emulation); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Cocktail); + Assert.Equal(Data.Models.Metadata.Supported.Yes, driver.SaveState); Assert.Equal(true, driver.RequiresArtwork); Assert.Equal(true, driver.Unofficial); Assert.Equal(true, driver.NoSoundHardware); @@ -786,9 +786,9 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Feature? feature) { Assert.NotNull(feature); - Assert.Equal("XXXXXX", feature.Type); - Assert.Equal("XXXXXX", feature.Status); - Assert.Equal("XXXXXX", feature.Overall); + Assert.Equal(Data.Models.Metadata.FeatureType.Protection, feature.Type); + Assert.Equal(Data.Models.Metadata.FeatureStatus.Imperfect, feature.Status); + Assert.Equal(Data.Models.Metadata.FeatureStatus.Imperfect, feature.Overall); } /// @@ -797,7 +797,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Device? device) { Assert.NotNull(device); - Assert.Equal("XXXXXX", device.Type); + Assert.Equal(Data.Models.Metadata.DeviceType.PunchTape, device.Type); Assert.Equal("XXXXXX", device.Tag); Assert.Equal("XXXXXX", device.FixedImage); Assert.Equal("XXXXXX", device.Mandatory); @@ -860,7 +860,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(softwarelist); Assert.Equal("XXXXXX", softwarelist.Tag); Assert.Equal("XXXXXX", softwarelist.Name); - Assert.Equal("XXXXXX", softwarelist.Status); + Assert.Equal(Data.Models.Metadata.SoftwareListStatus.Original, softwarelist.Status); Assert.Equal("XXXXXX", softwarelist.Filter); } diff --git a/SabreTools.Serialization.CrossModel.Test/LogiqxTests.cs b/SabreTools.Serialization.CrossModel.Test/LogiqxTests.cs index c4c50094..d375ac28 100644 --- a/SabreTools.Serialization.CrossModel.Test/LogiqxTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/LogiqxTests.cs @@ -76,17 +76,17 @@ namespace SabreTools.Serialization.CrossModel.Test var clrmamepro = new Data.Models.Logiqx.ClrMamePro { Header = "XXXXXX", - ForceMerging = "XXXXXX", - ForceNodump = "XXXXXX", - ForcePacking = "XXXXXX", + ForceMerging = Data.Models.Metadata.MergingFlag.Merged, + ForceNodump = Data.Models.Metadata.NodumpFlag.Required, + ForcePacking = Data.Models.Metadata.PackingFlag.Zip, }; var romcenter = new Data.Models.Logiqx.RomCenter { Plugin = "XXXXXX", - RomMode = "XXXXXX", - BiosMode = "XXXXXX", - SampleMode = "XXXXXX", + RomMode = Data.Models.Metadata.MergingFlag.Merged, + BiosMode = Data.Models.Metadata.MergingFlag.Merged, + SampleMode = Data.Models.Metadata.MergingFlag.Merged, LockRomMode = true, LockBiosMode = true, LockSampleMode = true, @@ -165,7 +165,7 @@ namespace SabreTools.Serialization.CrossModel.Test xxHash364 = "XXXXXX", xxHash3128 = "XXXXXX", Merge = "XXXXXX", - Status = "XXXXXX", + Status = Data.Models.Metadata.ItemStatus.Good, Serial = "XXXXXX", Header = "XXXXXX", Date = "XXXXXX", @@ -179,7 +179,7 @@ namespace SabreTools.Serialization.CrossModel.Test MD5 = "XXXXXX", SHA1 = "XXXXXX", Merge = "XXXXXX", - Status = "XXXXXX", + Status = Data.Models.Metadata.ItemStatus.Good, Region = "XXXXXX", }; @@ -209,10 +209,10 @@ namespace SabreTools.Serialization.CrossModel.Test var driver = new Data.Models.Logiqx.Driver { - Status = "XXXXXX", - Emulation = "XXXXXX", - Cocktail = "XXXXXX", - SaveState = "XXXXXX", + Status = Data.Models.Metadata.SupportStatus.Good, + Emulation = Data.Models.Metadata.SupportStatus.Good, + Cocktail = Data.Models.Metadata.SupportStatus.Good, + SaveState = Data.Models.Metadata.Supported.Yes, RequiresArtwork = true, Unofficial = true, NoSoundHardware = true, @@ -223,7 +223,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Tag = "XXXXXX", Name = "XXXXXX", - Status = "XXXXXX", + Status = Data.Models.Metadata.SoftwareListStatus.Original, Filter = "XXXXXX", }; @@ -314,9 +314,9 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(cmp); Assert.Equal("XXXXXX", cmp.Header); - Assert.Equal("XXXXXX", cmp.ForceMerging); - Assert.Equal("XXXXXX", cmp.ForceNodump); - Assert.Equal("XXXXXX", cmp.ForcePacking); + Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, cmp.ForceMerging); + Assert.Equal(Data.Models.Metadata.NodumpFlag.Required, cmp.ForceNodump); + Assert.Equal(Data.Models.Metadata.PackingFlag.Zip, cmp.ForcePacking); } /// @@ -326,9 +326,9 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(rc); Assert.Equal("XXXXXX", rc.Plugin); - Assert.Equal("XXXXXX", rc.RomMode); - Assert.Equal("XXXXXX", rc.BiosMode); - Assert.Equal("XXXXXX", rc.SampleMode); + Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, rc.RomMode); + Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, rc.BiosMode); + Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, rc.SampleMode); Assert.Equal(true, rc.LockRomMode); Assert.Equal(true, rc.LockBiosMode); Assert.Equal(true, rc.LockSampleMode); @@ -481,7 +481,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", rom.xxHash364); Assert.Equal("XXXXXX", rom.xxHash3128); Assert.Equal("XXXXXX", rom.Merge); - Assert.Equal("XXXXXX", rom.Status); + Assert.Equal(Data.Models.Metadata.ItemStatus.Good, rom.Status); Assert.Equal("XXXXXX", rom.Serial); Assert.Equal("XXXXXX", rom.Header); Assert.Equal("XXXXXX", rom.Date); @@ -499,7 +499,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", disk.MD5); Assert.Equal("XXXXXX", disk.SHA1); Assert.Equal("XXXXXX", disk.Merge); - Assert.Equal("XXXXXX", disk.Status); + Assert.Equal(Data.Models.Metadata.ItemStatus.Good, disk.Status); Assert.Equal("XXXXXX", disk.Region); } @@ -549,10 +549,10 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Logiqx.Driver? driver) { Assert.NotNull(driver); - Assert.Equal("XXXXXX", driver.Status); - Assert.Equal("XXXXXX", driver.Emulation); - Assert.Equal("XXXXXX", driver.Cocktail); - Assert.Equal("XXXXXX", driver.SaveState); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Status); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Emulation); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Cocktail); + Assert.Equal(Data.Models.Metadata.Supported.Yes, driver.SaveState); Assert.Equal(true, driver.RequiresArtwork); Assert.Equal(true, driver.Unofficial); Assert.Equal(true, driver.NoSoundHardware); @@ -567,7 +567,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(softwarelist); Assert.Equal("XXXXXX", softwarelist.Tag); Assert.Equal("XXXXXX", softwarelist.Name); - Assert.Equal("XXXXXX", softwarelist.Status); + Assert.Equal(Data.Models.Metadata.SoftwareListStatus.Original, softwarelist.Status); Assert.Equal("XXXXXX", softwarelist.Filter); } } diff --git a/SabreTools.Serialization.CrossModel.Test/M1Tests.cs b/SabreTools.Serialization.CrossModel.Test/M1Tests.cs index 8d2be43f..16e28c35 100644 --- a/SabreTools.Serialization.CrossModel.Test/M1Tests.cs +++ b/SabreTools.Serialization.CrossModel.Test/M1Tests.cs @@ -76,7 +76,7 @@ namespace SabreTools.Serialization.CrossModel.Test Merge = "XXXXXX", Region = "XXXXXX", Offset = "XXXXXX", - Status = "XXXXXX", + Status = Data.Models.Metadata.ItemStatus.Good, Optional = true, Dispose = true, SoundOnly = true, @@ -91,7 +91,7 @@ namespace SabreTools.Serialization.CrossModel.Test Region = "XXXXXX", Index = "XXXXXX", Writable = true, - Status = "XXXXXX", + Status = Data.Models.Metadata.ItemStatus.Good, Optional = true, }; @@ -109,7 +109,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Name = "XXXXXX", Tag = "XXXXXX", - Type = "XXXXXX", + Type = Data.Models.Metadata.ChipType.CPU, SoundOnly = true, Clock = "XXXXXX", }; @@ -117,7 +117,7 @@ namespace SabreTools.Serialization.CrossModel.Test var display = new Data.Models.Listxml.Display { Tag = "XXXXXX", - Type = "XXXXXX", + Type = Data.Models.Metadata.DisplayType.Vector, Rotate = "XXXXXX", FlipX = true, Width = "XXXXXX", @@ -134,7 +134,7 @@ namespace SabreTools.Serialization.CrossModel.Test var video = new Data.Models.Listxml.Video { - Screen = "XXXXXX", + Screen = Data.Models.Metadata.DisplayType.Vector, Orientation = "XXXXXX", Width = "XXXXXX", Height = "XXXXXX", @@ -150,7 +150,7 @@ namespace SabreTools.Serialization.CrossModel.Test var control = new Data.Models.Listxml.Control { - Type = "XXXXXX", + Type = Data.Models.Metadata.ControlType.Lightgun, Player = "XXXXXX", Buttons = "XXXXXX", ReqButtons = "XXXXXX", @@ -179,7 +179,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Tag = "XXXXXX", Mask = "XXXXXX", - Relation = "XXXXXX", + Relation = Data.Models.Metadata.Relation.Equal, Value = "XXXXXX", }; @@ -253,13 +253,13 @@ namespace SabreTools.Serialization.CrossModel.Test var driver = new Data.Models.Listxml.Driver { - Status = "XXXXXX", - Color = "XXXXXX", - Sound = "XXXXXX", + Status = Data.Models.Metadata.SupportStatus.Good, + Color = Data.Models.Metadata.SupportStatus.Good, + Sound = Data.Models.Metadata.SupportStatus.Good, PaletteSize = "XXXXXX", - Emulation = "XXXXXX", - Cocktail = "XXXXXX", - SaveState = "XXXXXX", + Emulation = Data.Models.Metadata.SupportStatus.Good, + Cocktail = Data.Models.Metadata.SupportStatus.Good, + SaveState = Data.Models.Metadata.Supported.Yes, RequiresArtwork = true, Unofficial = true, NoSoundHardware = true, @@ -268,9 +268,9 @@ namespace SabreTools.Serialization.CrossModel.Test var feature = new Data.Models.Listxml.Feature { - Type = "XXXXXX", - Status = "XXXXXX", - Overall = "XXXXXX", + Type = Data.Models.Metadata.FeatureType.Protection, + Status = Data.Models.Metadata.FeatureStatus.Imperfect, + Overall = Data.Models.Metadata.FeatureStatus.Imperfect, }; var instance = new Data.Models.Listxml.Instance @@ -286,7 +286,7 @@ namespace SabreTools.Serialization.CrossModel.Test var device = new Data.Models.Listxml.Device { - Type = "XXXXXX", + Type = Data.Models.Metadata.DeviceType.PunchTape, Tag = "XXXXXX", FixedImage = "XXXXXX", Mandatory = "XXXXXX", @@ -312,7 +312,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Tag = "XXXXXX", Name = "XXXXXX", - Status = "XXXXXX", + Status = Data.Models.Metadata.SoftwareListStatus.Original, Filter = "XXXXXX", }; @@ -486,7 +486,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", rom.Merge); Assert.Equal("XXXXXX", rom.Region); Assert.Equal("XXXXXX", rom.Offset); - Assert.Equal("XXXXXX", rom.Status); + Assert.Equal(Data.Models.Metadata.ItemStatus.Good, rom.Status); Assert.Equal(true, rom.Optional); Assert.Equal(true, rom.Dispose); Assert.Equal(true, rom.SoundOnly); @@ -505,7 +505,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", disk.Region); Assert.Equal("XXXXXX", disk.Index); Assert.Equal(true, disk.Writable); - Assert.Equal("XXXXXX", disk.Status); + Assert.Equal(Data.Models.Metadata.ItemStatus.Good, disk.Status); Assert.Equal(true, disk.Optional); } @@ -535,7 +535,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(chip); Assert.Equal("XXXXXX", chip.Name); Assert.Equal("XXXXXX", chip.Tag); - Assert.Equal("XXXXXX", chip.Type); + Assert.Equal(Data.Models.Metadata.ChipType.CPU, chip.Type); Assert.Equal(true, chip.SoundOnly); Assert.Equal("XXXXXX", chip.Clock); } @@ -547,7 +547,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(display); Assert.Equal("XXXXXX", display.Tag); - Assert.Equal("XXXXXX", display.Type); + Assert.Equal(Data.Models.Metadata.DisplayType.Vector, display.Type); Assert.Equal("XXXXXX", display.Rotate); Assert.Equal(true, display.FlipX); Assert.Equal("XXXXXX", display.Width); @@ -568,7 +568,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Video? video) { Assert.NotNull(video); - Assert.Equal("XXXXXX", video.Screen); + Assert.Equal(Data.Models.Metadata.DisplayType.Vector, video.Screen); Assert.Equal("XXXXXX", video.Orientation); Assert.Equal("XXXXXX", video.Width); Assert.Equal("XXXXXX", video.Height); @@ -610,7 +610,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Control? control) { Assert.NotNull(control); - Assert.Equal("XXXXXX", control.Type); + Assert.Equal(Data.Models.Metadata.ControlType.Lightgun, control.Type); Assert.Equal("XXXXXX", control.Player); Assert.Equal("XXXXXX", control.Buttons); Assert.Equal("XXXXXX", control.ReqButtons); @@ -652,7 +652,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(condition); Assert.Equal("XXXXXX", condition.Tag); Assert.Equal("XXXXXX", condition.Mask); - Assert.Equal("XXXXXX", condition.Relation); + Assert.Equal(Data.Models.Metadata.Relation.Equal, condition.Relation); Assert.Equal("XXXXXX", condition.Value); } @@ -761,13 +761,13 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Driver? driver) { Assert.NotNull(driver); - Assert.Equal("XXXXXX", driver.Status); - Assert.Equal("XXXXXX", driver.Color); - Assert.Equal("XXXXXX", driver.Sound); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Status); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Color); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Sound); Assert.Equal("XXXXXX", driver.PaletteSize); - Assert.Equal("XXXXXX", driver.Emulation); - Assert.Equal("XXXXXX", driver.Cocktail); - Assert.Equal("XXXXXX", driver.SaveState); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Emulation); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Cocktail); + Assert.Equal(Data.Models.Metadata.Supported.Yes, driver.SaveState); Assert.Equal(true, driver.RequiresArtwork); Assert.Equal(true, driver.Unofficial); Assert.Equal(true, driver.NoSoundHardware); @@ -780,9 +780,9 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Feature? feature) { Assert.NotNull(feature); - Assert.Equal("XXXXXX", feature.Type); - Assert.Equal("XXXXXX", feature.Status); - Assert.Equal("XXXXXX", feature.Overall); + Assert.Equal(Data.Models.Metadata.FeatureType.Protection, feature.Type); + Assert.Equal(Data.Models.Metadata.FeatureStatus.Imperfect, feature.Status); + Assert.Equal(Data.Models.Metadata.FeatureStatus.Imperfect, feature.Overall); } /// @@ -791,7 +791,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Device? device) { Assert.NotNull(device); - Assert.Equal("XXXXXX", device.Type); + Assert.Equal(Data.Models.Metadata.DeviceType.PunchTape, device.Type); Assert.Equal("XXXXXX", device.Tag); Assert.Equal("XXXXXX", device.FixedImage); Assert.Equal("XXXXXX", device.Mandatory); @@ -854,7 +854,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(softwarelist); Assert.Equal("XXXXXX", softwarelist.Tag); Assert.Equal("XXXXXX", softwarelist.Name); - Assert.Equal("XXXXXX", softwarelist.Status); + Assert.Equal(Data.Models.Metadata.SoftwareListStatus.Original, softwarelist.Status); Assert.Equal("XXXXXX", softwarelist.Filter); } diff --git a/SabreTools.Serialization.CrossModel.Test/MessTests.cs b/SabreTools.Serialization.CrossModel.Test/MessTests.cs index 1088d26f..96911cf5 100644 --- a/SabreTools.Serialization.CrossModel.Test/MessTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/MessTests.cs @@ -76,7 +76,7 @@ namespace SabreTools.Serialization.CrossModel.Test Merge = "XXXXXX", Region = "XXXXXX", Offset = "XXXXXX", - Status = "XXXXXX", + Status = Data.Models.Metadata.ItemStatus.Good, Optional = true, Dispose = true, SoundOnly = true, @@ -91,7 +91,7 @@ namespace SabreTools.Serialization.CrossModel.Test Region = "XXXXXX", Index = "XXXXXX", Writable = true, - Status = "XXXXXX", + Status = Data.Models.Metadata.ItemStatus.Good, Optional = true, }; @@ -109,7 +109,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Name = "XXXXXX", Tag = "XXXXXX", - Type = "XXXXXX", + Type = Data.Models.Metadata.ChipType.CPU, SoundOnly = true, Clock = "XXXXXX", }; @@ -117,7 +117,7 @@ namespace SabreTools.Serialization.CrossModel.Test var display = new Data.Models.Listxml.Display { Tag = "XXXXXX", - Type = "XXXXXX", + Type = Data.Models.Metadata.DisplayType.Vector, Rotate = "XXXXXX", FlipX = true, Width = "XXXXXX", @@ -134,7 +134,7 @@ namespace SabreTools.Serialization.CrossModel.Test var video = new Data.Models.Listxml.Video { - Screen = "XXXXXX", + Screen = Data.Models.Metadata.DisplayType.Vector, Orientation = "XXXXXX", Width = "XXXXXX", Height = "XXXXXX", @@ -150,7 +150,7 @@ namespace SabreTools.Serialization.CrossModel.Test var control = new Data.Models.Listxml.Control { - Type = "XXXXXX", + Type = Data.Models.Metadata.ControlType.Lightgun, Player = "XXXXXX", Buttons = "XXXXXX", ReqButtons = "XXXXXX", @@ -179,7 +179,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Tag = "XXXXXX", Mask = "XXXXXX", - Relation = "XXXXXX", + Relation = Data.Models.Metadata.Relation.Equal, Value = "XXXXXX", }; @@ -253,13 +253,13 @@ namespace SabreTools.Serialization.CrossModel.Test var driver = new Data.Models.Listxml.Driver { - Status = "XXXXXX", - Color = "XXXXXX", - Sound = "XXXXXX", + Status = Data.Models.Metadata.SupportStatus.Good, + Color = Data.Models.Metadata.SupportStatus.Good, + Sound = Data.Models.Metadata.SupportStatus.Good, PaletteSize = "XXXXXX", - Emulation = "XXXXXX", - Cocktail = "XXXXXX", - SaveState = "XXXXXX", + Emulation = Data.Models.Metadata.SupportStatus.Good, + Cocktail = Data.Models.Metadata.SupportStatus.Good, + SaveState = Data.Models.Metadata.Supported.Yes, RequiresArtwork = true, Unofficial = true, NoSoundHardware = true, @@ -268,9 +268,9 @@ namespace SabreTools.Serialization.CrossModel.Test var feature = new Data.Models.Listxml.Feature { - Type = "XXXXXX", - Status = "XXXXXX", - Overall = "XXXXXX", + Type = Data.Models.Metadata.FeatureType.Protection, + Status = Data.Models.Metadata.FeatureStatus.Imperfect, + Overall = Data.Models.Metadata.FeatureStatus.Imperfect, }; var instance = new Data.Models.Listxml.Instance @@ -286,7 +286,7 @@ namespace SabreTools.Serialization.CrossModel.Test var device = new Data.Models.Listxml.Device { - Type = "XXXXXX", + Type = Data.Models.Metadata.DeviceType.PunchTape, Tag = "XXXXXX", FixedImage = "XXXXXX", Mandatory = "XXXXXX", @@ -312,7 +312,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Tag = "XXXXXX", Name = "XXXXXX", - Status = "XXXXXX", + Status = Data.Models.Metadata.SoftwareListStatus.Original, Filter = "XXXXXX", }; @@ -486,7 +486,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", rom.Merge); Assert.Equal("XXXXXX", rom.Region); Assert.Equal("XXXXXX", rom.Offset); - Assert.Equal("XXXXXX", rom.Status); + Assert.Equal(Data.Models.Metadata.ItemStatus.Good, rom.Status); Assert.Equal(true, rom.Optional); Assert.Equal(true, rom.Dispose); Assert.Equal(true, rom.SoundOnly); @@ -505,7 +505,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", disk.Region); Assert.Equal("XXXXXX", disk.Index); Assert.Equal(true, disk.Writable); - Assert.Equal("XXXXXX", disk.Status); + Assert.Equal(Data.Models.Metadata.ItemStatus.Good, disk.Status); Assert.Equal(true, disk.Optional); } @@ -535,7 +535,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(chip); Assert.Equal("XXXXXX", chip.Name); Assert.Equal("XXXXXX", chip.Tag); - Assert.Equal("XXXXXX", chip.Type); + Assert.Equal(Data.Models.Metadata.ChipType.CPU, chip.Type); Assert.Equal(true, chip.SoundOnly); Assert.Equal("XXXXXX", chip.Clock); } @@ -547,7 +547,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(display); Assert.Equal("XXXXXX", display.Tag); - Assert.Equal("XXXXXX", display.Type); + Assert.Equal(Data.Models.Metadata.DisplayType.Vector, display.Type); Assert.Equal("XXXXXX", display.Rotate); Assert.Equal(true, display.FlipX); Assert.Equal("XXXXXX", display.Width); @@ -568,7 +568,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Video? video) { Assert.NotNull(video); - Assert.Equal("XXXXXX", video.Screen); + Assert.Equal(Data.Models.Metadata.DisplayType.Vector, video.Screen); Assert.Equal("XXXXXX", video.Orientation); Assert.Equal("XXXXXX", video.Width); Assert.Equal("XXXXXX", video.Height); @@ -610,7 +610,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Control? control) { Assert.NotNull(control); - Assert.Equal("XXXXXX", control.Type); + Assert.Equal(Data.Models.Metadata.ControlType.Lightgun, control.Type); Assert.Equal("XXXXXX", control.Player); Assert.Equal("XXXXXX", control.Buttons); Assert.Equal("XXXXXX", control.ReqButtons); @@ -652,7 +652,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(condition); Assert.Equal("XXXXXX", condition.Tag); Assert.Equal("XXXXXX", condition.Mask); - Assert.Equal("XXXXXX", condition.Relation); + Assert.Equal(Data.Models.Metadata.Relation.Equal, condition.Relation); Assert.Equal("XXXXXX", condition.Value); } @@ -761,13 +761,13 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Driver? driver) { Assert.NotNull(driver); - Assert.Equal("XXXXXX", driver.Status); - Assert.Equal("XXXXXX", driver.Color); - Assert.Equal("XXXXXX", driver.Sound); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Status); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Color); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Sound); Assert.Equal("XXXXXX", driver.PaletteSize); - Assert.Equal("XXXXXX", driver.Emulation); - Assert.Equal("XXXXXX", driver.Cocktail); - Assert.Equal("XXXXXX", driver.SaveState); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Emulation); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Cocktail); + Assert.Equal(Data.Models.Metadata.Supported.Yes, driver.SaveState); Assert.Equal(true, driver.RequiresArtwork); Assert.Equal(true, driver.Unofficial); Assert.Equal(true, driver.NoSoundHardware); @@ -780,9 +780,9 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Feature? feature) { Assert.NotNull(feature); - Assert.Equal("XXXXXX", feature.Type); - Assert.Equal("XXXXXX", feature.Status); - Assert.Equal("XXXXXX", feature.Overall); + Assert.Equal(Data.Models.Metadata.FeatureType.Protection, feature.Type); + Assert.Equal(Data.Models.Metadata.FeatureStatus.Imperfect, feature.Status); + Assert.Equal(Data.Models.Metadata.FeatureStatus.Imperfect, feature.Overall); } /// @@ -791,7 +791,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Device? device) { Assert.NotNull(device); - Assert.Equal("XXXXXX", device.Type); + Assert.Equal(Data.Models.Metadata.DeviceType.PunchTape, device.Type); Assert.Equal("XXXXXX", device.Tag); Assert.Equal("XXXXXX", device.FixedImage); Assert.Equal("XXXXXX", device.Mandatory); @@ -854,7 +854,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(softwarelist); Assert.Equal("XXXXXX", softwarelist.Tag); Assert.Equal("XXXXXX", softwarelist.Name); - Assert.Equal("XXXXXX", softwarelist.Status); + Assert.Equal(Data.Models.Metadata.SoftwareListStatus.Original, softwarelist.Status); Assert.Equal("XXXXXX", softwarelist.Filter); } diff --git a/SabreTools.Serialization.CrossModel.Test/SeparatedValueTests.cs b/SabreTools.Serialization.CrossModel.Test/SeparatedValueTests.cs index 0725f0e3..8b1da955 100644 --- a/SabreTools.Serialization.CrossModel.Test/SeparatedValueTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/SeparatedValueTests.cs @@ -49,7 +49,7 @@ namespace SabreTools.Serialization.CrossModel.Test DiskName = "XXXXXX", MD5 = "XXXXXX", SHA1 = "XXXXXX", - Status = "XXXXXX", + Status = Data.Models.Metadata.ItemStatus.Good, }; var media = new Data.Models.SeparatedValue.Row @@ -84,7 +84,7 @@ namespace SabreTools.Serialization.CrossModel.Test SHA384 = "XXXXXX", SHA512 = "XXXXXX", SpamSum = "XXXXXX", - Status = "XXXXXX", + Status = Data.Models.Metadata.ItemStatus.Good, }; return new Data.Models.SeparatedValue.MetadataFile @@ -126,7 +126,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Null(row.SHA384); Assert.Null(row.SHA512); Assert.Null(row.SpamSum); - Assert.Equal("XXXXXX", row.Status); + Assert.Equal(Data.Models.Metadata.ItemStatus.Good, row.Status); } /// @@ -176,7 +176,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", row.SHA384); Assert.Equal("XXXXXX", row.SHA512); Assert.Equal("XXXXXX", row.SpamSum); - Assert.Equal("XXXXXX", row.Status); + Assert.Equal(Data.Models.Metadata.ItemStatus.Good, row.Status); } } } diff --git a/SabreTools.Serialization.CrossModel.Test/SoftwareListTests.cs b/SabreTools.Serialization.CrossModel.Test/SoftwareListTests.cs index 5624c411..d6130c52 100644 --- a/SabreTools.Serialization.CrossModel.Test/SoftwareListTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/SoftwareListTests.cs @@ -63,8 +63,8 @@ namespace SabreTools.Serialization.CrossModel.Test SHA1 = "XXXXXX", Offset = "XXXXXX", Value = "XXXXXX", - Status = "XXXXXX", - LoadFlag = "XXXXXX", + Status = Data.Models.Metadata.ItemStatus.Good, + LoadFlag = Data.Models.Metadata.LoadFlag.Load16Byte, }; var dataarea = new Data.Models.SoftwareList.DataArea @@ -72,7 +72,7 @@ namespace SabreTools.Serialization.CrossModel.Test Name = "XXXXXX", Size = "XXXXXX", Width = "XXXXXX", - Endianness = "XXXXXX", + Endianness = Data.Models.Metadata.Endianness.Big, Rom = [rom], }; @@ -81,7 +81,7 @@ namespace SabreTools.Serialization.CrossModel.Test Name = "XXXXXX", MD5 = "XXXXXX", SHA1 = "XXXXXX", - Status = "XXXXXX", + Status = Data.Models.Metadata.ItemStatus.Good, Writeable = true, }; @@ -120,7 +120,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Name = "XXXXXX", CloneOf = "XXXXXX", - Supported = "XXXXXX", + Supported = Data.Models.Metadata.Supported.Yes, Description = "XXXXXX", Year = "XXXXXX", Publisher = "XXXXXX", @@ -147,7 +147,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(software); Assert.Equal("XXXXXX", software.Name); Assert.Equal("XXXXXX", software.CloneOf); - Assert.Equal("XXXXXX", software.Supported); + Assert.Equal(Data.Models.Metadata.Supported.Yes, software.Supported); Assert.Equal("XXXXXX", software.Description); Assert.Equal("XXXXXX", software.Year); Assert.Equal("XXXXXX", software.Publisher); @@ -231,7 +231,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", dataarea.Name); Assert.Equal("XXXXXX", dataarea.Size); Assert.Equal("XXXXXX", dataarea.Width); - Assert.Equal("XXXXXX", dataarea.Endianness); + Assert.Equal(Data.Models.Metadata.Endianness.Big, dataarea.Endianness); Assert.NotNull(dataarea.Rom); var rom = Assert.Single(dataarea.Rom); @@ -251,8 +251,8 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", rom.SHA1); Assert.Equal("XXXXXX", rom.Offset); Assert.Equal("XXXXXX", rom.Value); - Assert.Equal("XXXXXX", rom.Status); - Assert.Equal("XXXXXX", rom.LoadFlag); + Assert.Equal(Data.Models.Metadata.ItemStatus.Good, rom.Status); + Assert.Equal(Data.Models.Metadata.LoadFlag.Load16Byte, rom.LoadFlag); } /// @@ -277,7 +277,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", disk.Name); Assert.Equal("XXXXXX", disk.MD5); Assert.Equal("XXXXXX", disk.SHA1); - Assert.Equal("XXXXXX", disk.Status); + Assert.Equal(Data.Models.Metadata.ItemStatus.Good, disk.Status); Assert.Equal(true, disk.Writeable); } diff --git a/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs b/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs index 89ea67f7..6ceb389c 100644 --- a/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs @@ -55,9 +55,9 @@ namespace SabreTools.Serialization.CrossModel Comment = item.ReadString(Data.Models.Metadata.Header.CommentKey), Header = item.ReadString(Data.Models.Metadata.Header.HeaderKey), Type = item.ReadString(Data.Models.Metadata.Header.TypeKey), - ForceMerging = item.ReadString(Data.Models.Metadata.Header.ForceMergingKey), + ForceMerging = item.ForceMerging, ForceZipping = item.ForceZipping, - ForcePacking = item.ReadString(Data.Models.Metadata.Header.ForcePackingKey), + ForcePacking = item.ForcePacking, }; return clrMamePro; } @@ -167,7 +167,7 @@ namespace SabreTools.Serialization.CrossModel { var chip = new Chip { - Type = item.ReadString(Data.Models.Metadata.Chip.ChipTypeKey), + Type = item.ChipType, Name = item.Name, Flags = item.ReadString(Data.Models.Metadata.Chip.FlagsKey), Clock = item.ReadString(Data.Models.Metadata.Chip.ClockKey), @@ -200,7 +200,7 @@ namespace SabreTools.Serialization.CrossModel MD5 = item.ReadString(Data.Models.Metadata.Disk.MD5Key), SHA1 = item.ReadString(Data.Models.Metadata.Disk.SHA1Key), Merge = item.ReadString(Data.Models.Metadata.Disk.MergeKey), - Status = item.ReadString(Data.Models.Metadata.Disk.StatusKey), + Status = item.Status, Flags = item.ReadString(Data.Models.Metadata.Disk.FlagsKey), }; return disk; @@ -213,11 +213,11 @@ namespace SabreTools.Serialization.CrossModel { var driver = new Driver { - Status = item.ReadString(Data.Models.Metadata.Driver.StatusKey), - Color = item.ReadString(Data.Models.Metadata.Driver.ColorKey), - Sound = item.ReadString(Data.Models.Metadata.Driver.SoundKey), + Status = item.Status, + Color = item.Color, + Sound = item.Sound, PaletteSize = item.ReadString(Data.Models.Metadata.Driver.PaletteSizeKey), - Blit = item.ReadString(Data.Models.Metadata.Driver.BlitKey), + Blit = item.Blit, }; return driver; } @@ -296,7 +296,7 @@ namespace SabreTools.Serialization.CrossModel xxHash364 = item.ReadString(Data.Models.Metadata.Rom.xxHash364Key), xxHash3128 = item.ReadString(Data.Models.Metadata.Rom.xxHash3128Key), Merge = item.ReadString(Data.Models.Metadata.Rom.MergeKey), - Status = item.ReadString(Data.Models.Metadata.Rom.StatusKey), + Status = item.Status, Region = item.ReadString(Data.Models.Metadata.Rom.RegionKey), Flags = item.ReadString(Data.Models.Metadata.Rom.FlagsKey), Offs = item.ReadString(Data.Models.Metadata.Rom.OffsetKey), @@ -340,7 +340,7 @@ namespace SabreTools.Serialization.CrossModel { var video = new Video { - Screen = item.ReadString(Data.Models.Metadata.Video.ScreenKey), + Screen = item.Screen, Orientation = item.ReadString(Data.Models.Metadata.Video.OrientationKey), X = item.ReadString(Data.Models.Metadata.Video.WidthKey), Y = item.ReadString(Data.Models.Metadata.Video.HeightKey), diff --git a/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs b/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs index 25aff94f..a4291784 100644 --- a/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs @@ -35,7 +35,7 @@ namespace SabreTools.Serialization.CrossModel { var header = new Data.Models.Metadata.Header { - Name = item.Name, + Name = item.Name, [Data.Models.Metadata.Header.DescriptionKey] = item.Description, [Data.Models.Metadata.Header.RootDirKey] = item.RootDir, [Data.Models.Metadata.Header.CategoryKey] = item.Category, @@ -47,9 +47,9 @@ namespace SabreTools.Serialization.CrossModel [Data.Models.Metadata.Header.CommentKey] = item.Comment, [Data.Models.Metadata.Header.HeaderKey] = item.Header, [Data.Models.Metadata.Header.TypeKey] = item.Type, - [Data.Models.Metadata.Header.ForceMergingKey] = item.ForceMerging, + ForceMerging = item.ForceMerging, ForceZipping = item.ForceZipping, - [Data.Models.Metadata.Header.ForcePackingKey] = item.ForcePacking, + ForcePacking = item.ForcePacking, }; return header; } @@ -180,7 +180,7 @@ namespace SabreTools.Serialization.CrossModel { var chip = new Data.Models.Metadata.Chip { - [Data.Models.Metadata.Chip.ChipTypeKey] = item.Type, + ChipType = item.Type, Name = item.Name, [Data.Models.Metadata.Chip.FlagsKey] = item.Flags, [Data.Models.Metadata.Chip.ClockKey] = item.Clock, @@ -213,7 +213,7 @@ namespace SabreTools.Serialization.CrossModel [Data.Models.Metadata.Disk.MD5Key] = item.MD5, [Data.Models.Metadata.Disk.SHA1Key] = item.SHA1, [Data.Models.Metadata.Disk.MergeKey] = item.Merge, - [Data.Models.Metadata.Disk.StatusKey] = item.Status, + Status = item.Status, [Data.Models.Metadata.Disk.FlagsKey] = item.Flags, }; return disk; @@ -226,11 +226,11 @@ namespace SabreTools.Serialization.CrossModel { var driver = new Data.Models.Metadata.Driver { - [Data.Models.Metadata.Driver.StatusKey] = item.Status, - [Data.Models.Metadata.Driver.ColorKey] = item.Color, - [Data.Models.Metadata.Driver.SoundKey] = item.Sound, + Status = item.Status, + Color = item.Color, + Sound = item.Sound, [Data.Models.Metadata.Driver.PaletteSizeKey] = item.PaletteSize, - [Data.Models.Metadata.Driver.BlitKey] = item.Blit, + Blit = item.Blit, }; return driver; } @@ -309,7 +309,7 @@ namespace SabreTools.Serialization.CrossModel [Data.Models.Metadata.Rom.xxHash364Key] = item.xxHash364, [Data.Models.Metadata.Rom.xxHash3128Key] = item.xxHash3128, [Data.Models.Metadata.Rom.MergeKey] = item.Merge, - [Data.Models.Metadata.Rom.StatusKey] = item.Status, + Status = item.Status, [Data.Models.Metadata.Rom.RegionKey] = item.Region, [Data.Models.Metadata.Rom.FlagsKey] = item.Flags, [Data.Models.Metadata.Rom.OffsetKey] = item.Offs, @@ -353,7 +353,7 @@ namespace SabreTools.Serialization.CrossModel { var video = new Data.Models.Metadata.Video { - [Data.Models.Metadata.Video.ScreenKey] = item.Screen, + Screen = item.Screen, [Data.Models.Metadata.Video.OrientationKey] = item.Orientation, [Data.Models.Metadata.Video.WidthKey] = item.X, [Data.Models.Metadata.Video.HeightKey] = item.Y, diff --git a/SabreTools.Serialization.CrossModel/Listrom.Deserializer.cs b/SabreTools.Serialization.CrossModel/Listrom.Deserializer.cs index 20d48a95..5e7d0428 100644 --- a/SabreTools.Serialization.CrossModel/Listrom.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Listrom.Deserializer.cs @@ -60,9 +60,9 @@ namespace SabreTools.Serialization.CrossModel SHA1 = item.ReadString(Data.Models.Metadata.Disk.SHA1Key), }; - if ((item[Data.Models.Metadata.Disk.StatusKey] as string) == "nodump") + if (item.Status == Data.Models.Metadata.ItemStatus.Nodump) row.NoGoodDumpKnown = true; - else if ((item[Data.Models.Metadata.Disk.StatusKey] as string) == "baddump") + else if (item.Status == Data.Models.Metadata.ItemStatus.BadDump) row.Bad = true; return row; @@ -81,9 +81,9 @@ namespace SabreTools.Serialization.CrossModel SHA1 = item.ReadString(Data.Models.Metadata.Rom.SHA1Key), }; - if ((item[Data.Models.Metadata.Rom.StatusKey] as string) == "nodump") + if (item.Status == Data.Models.Metadata.ItemStatus.Nodump) row.NoGoodDumpKnown = true; - else if ((item[Data.Models.Metadata.Rom.StatusKey] as string) == "baddump") + else if (item.Status == Data.Models.Metadata.ItemStatus.BadDump) row.Bad = true; return row; diff --git a/SabreTools.Serialization.CrossModel/Listrom.Serializer.cs b/SabreTools.Serialization.CrossModel/Listrom.Serializer.cs index c167fc22..d696ad0a 100644 --- a/SabreTools.Serialization.CrossModel/Listrom.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Listrom.Serializer.cs @@ -89,9 +89,9 @@ namespace SabreTools.Serialization.CrossModel }; if (item.NoGoodDumpKnown) - disk[Data.Models.Metadata.Disk.StatusKey] = "nodump"; + disk.Status = Data.Models.Metadata.ItemStatus.Nodump; else if (item.Bad) - disk[Data.Models.Metadata.Disk.StatusKey] = "baddump"; + disk.Status = Data.Models.Metadata.ItemStatus.BadDump; return disk; } @@ -106,9 +106,9 @@ namespace SabreTools.Serialization.CrossModel }; if (item.NoGoodDumpKnown) - rom[Data.Models.Metadata.Rom.StatusKey] = "nodump"; + rom.Status = Data.Models.Metadata.ItemStatus.Nodump; else if (item.Bad) - rom[Data.Models.Metadata.Rom.StatusKey] = "baddump"; + rom.Status = Data.Models.Metadata.ItemStatus.BadDump; return rom; } diff --git a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs index 5a828b7b..02a38a83 100644 --- a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs @@ -194,7 +194,7 @@ namespace SabreTools.Serialization.CrossModel { Name = item.Name, Tag = item.ReadString(Data.Models.Metadata.Chip.TagKey), - Type = item.ReadString(Data.Models.Metadata.Chip.ChipTypeKey), + Type = item.ChipType, SoundOnly = item.SoundOnly, Clock = item.ReadString(Data.Models.Metadata.Chip.ClockKey), }; @@ -210,7 +210,7 @@ namespace SabreTools.Serialization.CrossModel { Tag = item.ReadString(Data.Models.Metadata.Condition.TagKey), Mask = item.ReadString(Data.Models.Metadata.Condition.MaskKey), - Relation = item.ReadString(Data.Models.Metadata.Condition.RelationKey), + Relation = item.Relation, Value = item.ReadString(Data.Models.Metadata.Condition.ValueKey), }; return condition; @@ -283,7 +283,7 @@ namespace SabreTools.Serialization.CrossModel { var control = new Control { - Type = item.ReadString(Data.Models.Metadata.Control.ControlTypeKey), + Type = item.ControlType, Player = item.ReadString(Data.Models.Metadata.Control.PlayerKey), Buttons = item.ReadString(Data.Models.Metadata.Control.ButtonsKey), ReqButtons = item.ReadString(Data.Models.Metadata.Control.ReqButtonsKey), @@ -306,7 +306,7 @@ namespace SabreTools.Serialization.CrossModel { var device = new Device { - Type = item.ReadString(Data.Models.Metadata.Device.DeviceTypeKey), + Type = item.DeviceType, Tag = item.ReadString(Data.Models.Metadata.Device.TagKey), FixedImage = item.ReadString(Data.Models.Metadata.Device.FixedImageKey), Mandatory = item.ReadString(Data.Models.Metadata.Device.MandatoryKey), @@ -410,7 +410,7 @@ namespace SabreTools.Serialization.CrossModel Region = item.ReadString(Data.Models.Metadata.Disk.RegionKey), Index = item.ReadString(Data.Models.Metadata.Disk.IndexKey), Writable = item.Writable, - Status = item.ReadString(Data.Models.Metadata.Disk.StatusKey), + Status = item.Status, Optional = item.Optional, }; return disk; @@ -424,7 +424,7 @@ namespace SabreTools.Serialization.CrossModel var display = new Display { Tag = item.ReadString(Data.Models.Metadata.Display.TagKey), - Type = item.ReadString(Data.Models.Metadata.Display.DisplayTypeKey), + Type = item.DisplayType, Rotate = item.ReadString(Data.Models.Metadata.Display.RotateKey), FlipX = item.FlipX, Width = item.ReadString(Data.Models.Metadata.Display.WidthKey), @@ -448,13 +448,13 @@ namespace SabreTools.Serialization.CrossModel { var driver = new Driver { - Status = item.ReadString(Data.Models.Metadata.Driver.StatusKey), - Color = item.ReadString(Data.Models.Metadata.Driver.ColorKey), - Sound = item.ReadString(Data.Models.Metadata.Driver.SoundKey), + Status = item.Status, + Color = item.Color, + Sound = item.Sound, PaletteSize = item.ReadString(Data.Models.Metadata.Driver.PaletteSizeKey), - Emulation = item.ReadString(Data.Models.Metadata.Driver.EmulationKey), - Cocktail = item.ReadString(Data.Models.Metadata.Driver.CocktailKey), - SaveState = item.ReadString(Data.Models.Metadata.Driver.SaveStateKey), + Emulation = item.Emulation, + Cocktail = item.Cocktail, + SaveState = item.SaveState, RequiresArtwork = item.RequiresArtwork, Unofficial = item.Unofficial, NoSoundHardware = item.NoSoundHardware, @@ -482,9 +482,9 @@ namespace SabreTools.Serialization.CrossModel { var feature = new Feature { - Type = item.ReadString(Data.Models.Metadata.Feature.FeatureTypeKey), - Status = item.ReadString(Data.Models.Metadata.Feature.StatusKey), - Overall = item.ReadString(Data.Models.Metadata.Feature.OverallKey), + Type = item.FeatureType, + Status = item.Status, + Overall = item.Overall, }; return feature; } @@ -573,7 +573,7 @@ namespace SabreTools.Serialization.CrossModel Merge = item.ReadString(Data.Models.Metadata.Rom.MergeKey), Region = item.ReadString(Data.Models.Metadata.Rom.RegionKey), Offset = item.ReadString(Data.Models.Metadata.Rom.OffsetKey), - Status = item.ReadString(Data.Models.Metadata.Rom.StatusKey), + Status = item.Status, Optional = item.Optional, Dispose = item.Dispose, SoundOnly = item.SoundOnly, @@ -633,7 +633,7 @@ namespace SabreTools.Serialization.CrossModel { Tag = item.ReadString(Data.Models.Metadata.SoftwareList.TagKey), Name = item.Name, - Status = item.ReadString(Data.Models.Metadata.SoftwareList.StatusKey), + Status = item.Status, Filter = item.ReadString(Data.Models.Metadata.SoftwareList.FilterKey), }; return softwareList; @@ -658,7 +658,7 @@ namespace SabreTools.Serialization.CrossModel { var video = new Video { - Screen = item.ReadString(Data.Models.Metadata.Video.ScreenKey), + Screen = item.Screen, Orientation = item.ReadString(Data.Models.Metadata.Video.OrientationKey), Width = item.ReadString(Data.Models.Metadata.Video.WidthKey), Height = item.ReadString(Data.Models.Metadata.Video.HeightKey), diff --git a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs index 335a5866..10c5e034 100644 --- a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs @@ -227,7 +227,7 @@ namespace SabreTools.Serialization.CrossModel { Name = item.Name, [Data.Models.Metadata.Chip.TagKey] = item.Tag, - [Data.Models.Metadata.Chip.ChipTypeKey] = item.Type, + ChipType = item.Type, SoundOnly = item.SoundOnly, [Data.Models.Metadata.Chip.ClockKey] = item.Clock, }; @@ -243,7 +243,7 @@ namespace SabreTools.Serialization.CrossModel { [Data.Models.Metadata.Condition.TagKey] = item.Tag, [Data.Models.Metadata.Condition.MaskKey] = item.Mask, - [Data.Models.Metadata.Condition.RelationKey] = item.Relation, + Relation = item.Relation, [Data.Models.Metadata.Condition.ValueKey] = item.Value, }; return condition; @@ -318,7 +318,7 @@ namespace SabreTools.Serialization.CrossModel { var control = new Data.Models.Metadata.Control { - [Data.Models.Metadata.Control.ControlTypeKey] = item.Type, + ControlType = item.Type, [Data.Models.Metadata.Control.PlayerKey] = item.Player, [Data.Models.Metadata.Control.ButtonsKey] = item.Buttons, [Data.Models.Metadata.Control.ReqButtonsKey] = item.ReqButtons, @@ -341,7 +341,7 @@ namespace SabreTools.Serialization.CrossModel { var device = new Data.Models.Metadata.Device { - [Data.Models.Metadata.Device.DeviceTypeKey] = item.Type, + DeviceType = item.Type, [Data.Models.Metadata.Device.TagKey] = item.Tag, [Data.Models.Metadata.Device.FixedImageKey] = item.FixedImage, [Data.Models.Metadata.Device.MandatoryKey] = item.Mandatory, @@ -448,7 +448,7 @@ namespace SabreTools.Serialization.CrossModel [Data.Models.Metadata.Disk.RegionKey] = item.Region, [Data.Models.Metadata.Disk.IndexKey] = item.Index, Writable = item.Writable, - [Data.Models.Metadata.Disk.StatusKey] = item.Status, + Status = item.Status, Optional = item.Optional, }; return disk; @@ -462,7 +462,7 @@ namespace SabreTools.Serialization.CrossModel var display = new Data.Models.Metadata.Display { [Data.Models.Metadata.Display.TagKey] = item.Tag, - [Data.Models.Metadata.Display.DisplayTypeKey] = item.Type, + DisplayType = item.Type, [Data.Models.Metadata.Display.RotateKey] = item.Rotate, FlipX = item.FlipX, [Data.Models.Metadata.Display.WidthKey] = item.Width, @@ -486,13 +486,13 @@ namespace SabreTools.Serialization.CrossModel { var driver = new Data.Models.Metadata.Driver { - [Data.Models.Metadata.Driver.StatusKey] = item.Status, - [Data.Models.Metadata.Driver.ColorKey] = item.Color, - [Data.Models.Metadata.Driver.SoundKey] = item.Sound, + Status = item.Status, + Color = item.Color, + Sound = item.Sound, [Data.Models.Metadata.Driver.PaletteSizeKey] = item.PaletteSize, - [Data.Models.Metadata.Driver.EmulationKey] = item.Emulation, - [Data.Models.Metadata.Driver.CocktailKey] = item.Cocktail, - [Data.Models.Metadata.Driver.SaveStateKey] = item.SaveState, + Emulation = item.Emulation, + Cocktail = item.Cocktail, + SaveState = item.SaveState, RequiresArtwork = item.RequiresArtwork, Unofficial = item.Unofficial, NoSoundHardware = item.NoSoundHardware, @@ -520,9 +520,9 @@ namespace SabreTools.Serialization.CrossModel { var feature = new Data.Models.Metadata.Feature { - [Data.Models.Metadata.Feature.FeatureTypeKey] = item.Type, - [Data.Models.Metadata.Feature.StatusKey] = item.Status, - [Data.Models.Metadata.Feature.OverallKey] = item.Overall, + FeatureType = item.Type, + Status = item.Status, + Overall = item.Overall, }; return feature; } @@ -612,7 +612,7 @@ namespace SabreTools.Serialization.CrossModel [Data.Models.Metadata.Rom.MergeKey] = item.Merge, [Data.Models.Metadata.Rom.RegionKey] = item.Region, [Data.Models.Metadata.Rom.OffsetKey] = item.Offset, - [Data.Models.Metadata.Rom.StatusKey] = item.Status, + Status = item.Status, Optional = item.Optional, Dispose = item.Dispose, SoundOnly = item.SoundOnly, @@ -674,7 +674,7 @@ namespace SabreTools.Serialization.CrossModel { [Data.Models.Metadata.SoftwareList.TagKey] = item.Tag, Name = item.Name, - [Data.Models.Metadata.SoftwareList.StatusKey] = item.Status, + Status = item.Status, [Data.Models.Metadata.SoftwareList.FilterKey] = item.Filter, }; return softwareList; @@ -699,7 +699,7 @@ namespace SabreTools.Serialization.CrossModel { var video = new Data.Models.Metadata.Video { - [Data.Models.Metadata.Video.ScreenKey] = item.Screen, + Screen = item.Screen, [Data.Models.Metadata.Video.OrientationKey] = item.Orientation, [Data.Models.Metadata.Video.WidthKey] = item.Width, [Data.Models.Metadata.Video.HeightKey] = item.Height, diff --git a/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs b/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs index 06946884..dbead2e5 100644 --- a/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs @@ -57,38 +57,38 @@ namespace SabreTools.Serialization.CrossModel }; string? headerVal = item.ReadString(Data.Models.Metadata.Header.HeaderKey); - string? forceMerging = item.ReadString(Data.Models.Metadata.Header.ForceMergingKey); - string? forceNodump = item.ReadString(Data.Models.Metadata.Header.ForceNodumpKey); - string? forceUnpacking = item.ReadString(Data.Models.Metadata.Header.ForcePackingKey); + Data.Models.Metadata.MergingFlag forceMerging = item.ForceMerging; + Data.Models.Metadata.NodumpFlag forceNodump = item.ForceNodump; + Data.Models.Metadata.PackingFlag forcePacking = item.ForcePacking; if (headerVal is not null - || forceMerging is not null - || forceNodump is not null - || forceUnpacking is not null) + || forceMerging is not Data.Models.Metadata.MergingFlag.None + || forceNodump is not Data.Models.Metadata.NodumpFlag.None + || forcePacking is not Data.Models.Metadata.PackingFlag.None) { header.ClrMamePro = new Data.Models.Logiqx.ClrMamePro(); if (headerVal is not null) header.ClrMamePro.Header = headerVal; - if (forceMerging is not null) + if (forceMerging is not Data.Models.Metadata.MergingFlag.None) header.ClrMamePro.ForceMerging = forceMerging; - if (forceNodump is not null) + if (forceNodump is not Data.Models.Metadata.NodumpFlag.None) header.ClrMamePro.ForceNodump = forceNodump; - if (forceUnpacking is not null) - header.ClrMamePro.ForcePacking = forceUnpacking; + if (forcePacking is not Data.Models.Metadata.PackingFlag.None) + header.ClrMamePro.ForcePacking = forcePacking; } string? plugin = item.ReadString(Data.Models.Metadata.Header.PluginKey); - string? romMode = item.ReadString(Data.Models.Metadata.Header.RomModeKey); - string? biosMode = item.ReadString(Data.Models.Metadata.Header.BiosModeKey); - string? sampleMode = item.ReadString(Data.Models.Metadata.Header.SampleModeKey); + Data.Models.Metadata.MergingFlag romMode = item.RomMode; + Data.Models.Metadata.MergingFlag biosMode = item.BiosMode; + Data.Models.Metadata.MergingFlag sampleMode = item.SampleMode; bool? lockRomMode = item.LockRomMode; bool? lockBiosMode = item.LockBiosMode; bool? lockSampleMode = item.LockSampleMode; if (plugin is not null - || romMode is not null - || biosMode is not null - || sampleMode is not null + || romMode is not Data.Models.Metadata.MergingFlag.None + || biosMode is not Data.Models.Metadata.MergingFlag.None + || sampleMode is not Data.Models.Metadata.MergingFlag.None || lockRomMode is not null || lockBiosMode is not null || lockSampleMode is not null) @@ -96,11 +96,11 @@ namespace SabreTools.Serialization.CrossModel header.RomCenter = new Data.Models.Logiqx.RomCenter(); if (plugin is not null) header.RomCenter.Plugin = plugin; - if (romMode is not null) + if (romMode is not Data.Models.Metadata.MergingFlag.None) header.RomCenter.RomMode = romMode; - if (biosMode is not null) + if (biosMode is not Data.Models.Metadata.MergingFlag.None) header.RomCenter.BiosMode = biosMode; - if (sampleMode is not null) + if (sampleMode is not Data.Models.Metadata.MergingFlag.None) header.RomCenter.SampleMode = sampleMode; if (lockRomMode is not null) header.RomCenter.LockRomMode = lockRomMode; @@ -236,7 +236,7 @@ namespace SabreTools.Serialization.CrossModel MD5 = item.ReadString(Data.Models.Metadata.Disk.MD5Key), SHA1 = item.ReadString(Data.Models.Metadata.Disk.SHA1Key), Merge = item.ReadString(Data.Models.Metadata.Disk.MergeKey), - Status = item.ReadString(Data.Models.Metadata.Disk.StatusKey), + Status = item.Status, Region = item.ReadString(Data.Models.Metadata.Disk.RegionKey), }; return disk; @@ -249,10 +249,10 @@ namespace SabreTools.Serialization.CrossModel { var driver = new Driver { - Status = item.ReadString(Data.Models.Metadata.Driver.StatusKey), - Emulation = item.ReadString(Data.Models.Metadata.Driver.EmulationKey), - Cocktail = item.ReadString(Data.Models.Metadata.Driver.CocktailKey), - SaveState = item.ReadString(Data.Models.Metadata.Driver.SaveStateKey), + Status = item.Status, + Emulation = item.Emulation, + Cocktail = item.Cocktail, + SaveState = item.SaveState, RequiresArtwork = item.RequiresArtwork, Unofficial = item.Unofficial, NoSoundHardware = item.NoSoundHardware, @@ -318,7 +318,7 @@ namespace SabreTools.Serialization.CrossModel xxHash364 = item.ReadString(Data.Models.Metadata.Rom.xxHash364Key), xxHash3128 = item.ReadString(Data.Models.Metadata.Rom.xxHash3128Key), Merge = item.ReadString(Data.Models.Metadata.Rom.MergeKey), - Status = item.ReadString(Data.Models.Metadata.Rom.StatusKey), + Status = item.Status, Serial = item.ReadString(Data.Models.Metadata.Rom.SerialKey), Header = item.ReadString(Data.Models.Metadata.Rom.HeaderKey), Date = item.ReadString(Data.Models.Metadata.Rom.DateKey), @@ -349,7 +349,7 @@ namespace SabreTools.Serialization.CrossModel { Tag = item.ReadString(Data.Models.Metadata.SoftwareList.TagKey), Name = item.Name, - Status = item.ReadString(Data.Models.Metadata.SoftwareList.StatusKey), + Status = item.Status, Filter = item.ReadString(Data.Models.Metadata.SoftwareList.FilterKey), }; return softwareList; diff --git a/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs b/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs index b2d21245..631990fd 100644 --- a/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs @@ -54,7 +54,7 @@ namespace SabreTools.Serialization.CrossModel var header = new Data.Models.Metadata.Header { [Data.Models.Metadata.Header.IdKey] = item.Id, - Name = item.Name, + Name = item.Name, [Data.Models.Metadata.Header.DescriptionKey] = item.Description, [Data.Models.Metadata.Header.RootDirKey] = item.RootDir, [Data.Models.Metadata.Header.CategoryKey] = item.Category, @@ -71,17 +71,17 @@ namespace SabreTools.Serialization.CrossModel if (item.ClrMamePro is not null) { header[Data.Models.Metadata.Header.HeaderKey] = item.ClrMamePro.Header; - header[Data.Models.Metadata.Header.ForceMergingKey] = item.ClrMamePro.ForceMerging; - header[Data.Models.Metadata.Header.ForceNodumpKey] = item.ClrMamePro.ForceNodump; - header[Data.Models.Metadata.Header.ForcePackingKey] = item.ClrMamePro.ForcePacking; + header.ForceMerging = item.ClrMamePro.ForceMerging; + header.ForceNodump = item.ClrMamePro.ForceNodump; + header.ForcePacking = item.ClrMamePro.ForcePacking; } if (item.RomCenter is not null) { header[Data.Models.Metadata.Header.PluginKey] = item.RomCenter.Plugin; - header[Data.Models.Metadata.Header.RomModeKey] = item.RomCenter.RomMode; - header[Data.Models.Metadata.Header.BiosModeKey] = item.RomCenter.BiosMode; - header[Data.Models.Metadata.Header.SampleModeKey] = item.RomCenter.SampleMode; + header.RomMode = item.RomCenter.RomMode; + header.BiosMode = item.RomCenter.BiosMode; + header.SampleMode = item.RomCenter.SampleMode; header.LockRomMode = item.RomCenter.LockRomMode; header.LockBiosMode = item.RomCenter.LockBiosMode; header.LockSampleMode = item.RomCenter.LockSampleMode; @@ -230,7 +230,7 @@ namespace SabreTools.Serialization.CrossModel [Data.Models.Metadata.Disk.MD5Key] = item.MD5, [Data.Models.Metadata.Disk.SHA1Key] = item.SHA1, [Data.Models.Metadata.Disk.MergeKey] = item.Merge, - [Data.Models.Metadata.Disk.StatusKey] = item.Status, + Status = item.Status, [Data.Models.Metadata.Disk.RegionKey] = item.Region, }; return disk; @@ -243,10 +243,10 @@ namespace SabreTools.Serialization.CrossModel { var driver = new Data.Models.Metadata.Driver { - [Data.Models.Metadata.Driver.StatusKey] = item.Status, - [Data.Models.Metadata.Driver.EmulationKey] = item.Emulation, - [Data.Models.Metadata.Driver.CocktailKey] = item.Cocktail, - [Data.Models.Metadata.Driver.SaveStateKey] = item.SaveState, + Status = item.Status, + Emulation = item.Emulation, + Cocktail = item.Cocktail, + SaveState = item.SaveState, RequiresArtwork = item.RequiresArtwork, Unofficial = item.Unofficial, NoSoundHardware = item.NoSoundHardware, @@ -312,7 +312,7 @@ namespace SabreTools.Serialization.CrossModel [Data.Models.Metadata.Rom.xxHash364Key] = item.xxHash364, [Data.Models.Metadata.Rom.xxHash3128Key] = item.xxHash3128, [Data.Models.Metadata.Rom.MergeKey] = item.Merge, - [Data.Models.Metadata.Rom.StatusKey] = item.Status, + Status = item.Status, [Data.Models.Metadata.Rom.SerialKey] = item.Serial, [Data.Models.Metadata.Rom.HeaderKey] = item.Header, [Data.Models.Metadata.Rom.DateKey] = item.Date, @@ -343,7 +343,7 @@ namespace SabreTools.Serialization.CrossModel { [Data.Models.Metadata.SoftwareList.TagKey] = item.Tag, Name = item.Name, - [Data.Models.Metadata.SoftwareList.StatusKey] = item.Status, + Status = item.Status, [Data.Models.Metadata.SoftwareList.FilterKey] = item.Filter, }; return softwareList; diff --git a/SabreTools.Serialization.CrossModel/RomCenter.Deserializer.cs b/SabreTools.Serialization.CrossModel/RomCenter.Deserializer.cs index 35121c7e..cf6ff86a 100644 --- a/SabreTools.Serialization.CrossModel/RomCenter.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/RomCenter.Deserializer.cs @@ -55,14 +55,14 @@ namespace SabreTools.Serialization.CrossModel if (item.ContainsKey(Data.Models.Metadata.Header.DatVersionKey) || item.ContainsKey(Data.Models.Metadata.Header.PluginKey) - || item.ContainsKey(Data.Models.Metadata.Header.ForceMergingKey)) + || item.ForceMerging != Data.Models.Metadata.MergingFlag.None) { metadataFile.Dat = new Dat { Version = item.ReadString(Data.Models.Metadata.Header.DatVersionKey), Plugin = item.ReadString(Data.Models.Metadata.Header.PluginKey), - Split = item.ReadString(Data.Models.Metadata.Header.ForceMergingKey) == "split" ? "yes" : "no", - Merge = item.ReadString(Data.Models.Metadata.Header.ForceMergingKey) == "merge" ? "yes" : "no", + Split = item.ForceMerging == Data.Models.Metadata.MergingFlag.Split ? "yes" : "no", + Merge = item.ForceMerging == Data.Models.Metadata.MergingFlag.Merged ? "yes" : "no", }; } diff --git a/SabreTools.Serialization.CrossModel/RomCenter.Serializer.cs b/SabreTools.Serialization.CrossModel/RomCenter.Serializer.cs index 7e77deec..ef281c82 100644 --- a/SabreTools.Serialization.CrossModel/RomCenter.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/RomCenter.Serializer.cs @@ -49,9 +49,9 @@ namespace SabreTools.Serialization.CrossModel header[Data.Models.Metadata.Header.PluginKey] = item.Dat.Plugin; if (item.Dat.Split == "yes" || item.Dat.Split == "1") - header[Data.Models.Metadata.Header.ForceMergingKey] = "split"; + header.ForceMerging = Data.Models.Metadata.MergingFlag.Split; else if (item.Dat.Merge == "yes" || item.Dat.Merge == "1") - header[Data.Models.Metadata.Header.ForceMergingKey] = "merge"; + header.ForceMerging = Data.Models.Metadata.MergingFlag.Merged; } if (item.Emulator is not null) diff --git a/SabreTools.Serialization.CrossModel/SeparatedValue.Deserializer.cs b/SabreTools.Serialization.CrossModel/SeparatedValue.Deserializer.cs index 38ac7b00..a5467b35 100644 --- a/SabreTools.Serialization.CrossModel/SeparatedValue.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/SeparatedValue.Deserializer.cs @@ -92,7 +92,7 @@ namespace SabreTools.Serialization.CrossModel SHA384 = null, SHA512 = null, SpamSum = null, - Status = item.ReadString(Data.Models.Metadata.Disk.StatusKey), + Status = item.Status, }; return row; } @@ -147,7 +147,7 @@ namespace SabreTools.Serialization.CrossModel SHA384 = item.ReadString(Data.Models.Metadata.Rom.SHA384Key), SHA512 = item.ReadString(Data.Models.Metadata.Rom.SHA512Key), SpamSum = item.ReadString(Data.Models.Metadata.Rom.SpamSumKey), - Status = item.ReadString(Data.Models.Metadata.Rom.StatusKey), + Status = item.Status, }; return row; } diff --git a/SabreTools.Serialization.CrossModel/SeparatedValue.Serializer.cs b/SabreTools.Serialization.CrossModel/SeparatedValue.Serializer.cs index 5b98e28f..04b4c421 100644 --- a/SabreTools.Serialization.CrossModel/SeparatedValue.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/SeparatedValue.Serializer.cs @@ -92,7 +92,7 @@ namespace SabreTools.Serialization.CrossModel Name = item.DiskName, [Data.Models.Metadata.Disk.MD5Key] = item.MD5, [Data.Models.Metadata.Disk.SHA1Key] = item.SHA1, - [Data.Models.Metadata.Disk.StatusKey] = item.Status, + Status = item.Status, }, "media" => new Data.Models.Metadata.Media { @@ -113,7 +113,7 @@ namespace SabreTools.Serialization.CrossModel [Data.Models.Metadata.Rom.SHA384Key] = item.SHA384, [Data.Models.Metadata.Rom.SHA512Key] = item.SHA512, [Data.Models.Metadata.Rom.SpamSumKey] = item.SpamSum, - [Data.Models.Metadata.Rom.StatusKey] = item.Status, + Status = item.Status, }, _ => null, }; diff --git a/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs b/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs index 987962da..4d0cc5b2 100644 --- a/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs @@ -44,7 +44,7 @@ namespace SabreTools.Serialization.CrossModel { Name = item.Name, CloneOf = item.ReadString(Data.Models.Metadata.Machine.CloneOfKey), - Supported = item.ReadString(Data.Models.Metadata.Machine.SupportedKey), + Supported = item.Supported, Description = item.ReadString(Data.Models.Metadata.Machine.DescriptionKey), Year = item.ReadString(Data.Models.Metadata.Machine.YearKey), Publisher = item.ReadString(Data.Models.Metadata.Machine.PublisherKey), @@ -76,7 +76,7 @@ namespace SabreTools.Serialization.CrossModel Name = item.Name, Size = item.ReadString(Data.Models.Metadata.DataArea.SizeKey), Width = item.ReadString(Data.Models.Metadata.DataArea.WidthKey), - Endianness = item.ReadString(Data.Models.Metadata.DataArea.EndiannessKey), + Endianness = item.Endianness, }; var roms = item.Read(Data.Models.Metadata.DataArea.RomKey); @@ -129,7 +129,7 @@ namespace SabreTools.Serialization.CrossModel Name = item.Name, MD5 = item.ReadString(Data.Models.Metadata.Disk.MD5Key), SHA1 = item.ReadString(Data.Models.Metadata.Disk.SHA1Key), - Status = item.ReadString(Data.Models.Metadata.Disk.StatusKey), + Status = item.Status, Writeable = item.Writable, }; return disk; @@ -222,8 +222,8 @@ namespace SabreTools.Serialization.CrossModel SHA1 = item.ReadString(Data.Models.Metadata.Rom.SHA1Key), Offset = item.ReadString(Data.Models.Metadata.Rom.OffsetKey), Value = item.ReadString(Data.Models.Metadata.Rom.ValueKey), - Status = item.ReadString(Data.Models.Metadata.Rom.StatusKey), - LoadFlag = item.ReadString(Data.Models.Metadata.Rom.LoadFlagKey), + Status = item.Status, + LoadFlag = item.LoadFlag, }; return rom; } diff --git a/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs b/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs index 7fcdeee8..ec6a69f3 100644 --- a/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs @@ -48,7 +48,7 @@ namespace SabreTools.Serialization.CrossModel { Name = item.Name, [Data.Models.Metadata.Machine.CloneOfKey] = item.CloneOf, - [Data.Models.Metadata.Machine.SupportedKey] = item.Supported, + Supported = item.Supported, [Data.Models.Metadata.Machine.DescriptionKey] = item.Description, [Data.Models.Metadata.Machine.YearKey] = item.Year, [Data.Models.Metadata.Machine.PublisherKey] = item.Publisher, @@ -77,7 +77,7 @@ namespace SabreTools.Serialization.CrossModel Name = item.Name, [Data.Models.Metadata.DataArea.SizeKey] = item.Size, [Data.Models.Metadata.DataArea.WidthKey] = item.Width, - [Data.Models.Metadata.DataArea.EndiannessKey] = item.Endianness, + Endianness = item.Endianness, }; if (item.Rom is not null && item.Rom.Length > 0) @@ -128,7 +128,7 @@ namespace SabreTools.Serialization.CrossModel Name = item.Name, [Data.Models.Metadata.Disk.MD5Key] = item.MD5, [Data.Models.Metadata.Disk.SHA1Key] = item.SHA1, - [Data.Models.Metadata.Disk.StatusKey] = item.Status, + Status = item.Status, Writable = item.Writeable, }; return disk; @@ -216,8 +216,8 @@ namespace SabreTools.Serialization.CrossModel [Data.Models.Metadata.Rom.SHA1Key] = item.SHA1, [Data.Models.Metadata.Rom.OffsetKey] = item.Offset, [Data.Models.Metadata.Rom.ValueKey] = item.Value, - [Data.Models.Metadata.Rom.StatusKey] = item.Status, - [Data.Models.Metadata.Rom.LoadFlagKey] = item.LoadFlag, + Status = item.Status, + LoadFlag = item.LoadFlag, }; return rom; } diff --git a/SabreTools.Serialization.Readers.Test/ClrMameProTests.cs b/SabreTools.Serialization.Readers.Test/ClrMameProTests.cs index e2d4abb2..d73828d0 100644 --- a/SabreTools.Serialization.Readers.Test/ClrMameProTests.cs +++ b/SabreTools.Serialization.Readers.Test/ClrMameProTests.cs @@ -190,9 +190,9 @@ namespace SabreTools.Serialization.Readers.Test Comment = "XXXXXX", Header = "XXXXXX", Type = "XXXXXX", - ForceMerging = "XXXXXX", + ForceMerging = Data.Models.Metadata.MergingFlag.Merged, ForceZipping = true, - ForcePacking = "XXXXXX", + ForcePacking = Data.Models.Metadata.PackingFlag.Zip, }; var release = new Data.Models.ClrMamePro.Release @@ -225,7 +225,7 @@ namespace SabreTools.Serialization.Readers.Test RIPEMD160 = "XXXXXX", SHA1 = "XXXXXX", Merge = "XXXXXX", - Status = "XXXXXX", + Status = Data.Models.Metadata.ItemStatus.Good, Flags = "XXXXXX", Date = "XXXXXX", SHA256 = "XXXXXX", @@ -248,7 +248,7 @@ namespace SabreTools.Serialization.Readers.Test MD5 = "XXXXXX", SHA1 = "XXXXXX", Merge = "XXXXXX", - Status = "XXXXXX", + Status = Data.Models.Metadata.ItemStatus.Good, Flags = "XXXXXX", }; @@ -273,7 +273,7 @@ namespace SabreTools.Serialization.Readers.Test var chip = new Data.Models.ClrMamePro.Chip { - Type = "XXXXXX", + Type = Data.Models.Metadata.ChipType.CPU, Name = "XXXXXX", Flags = "XXXXXX", Clock = "XXXXXX", @@ -281,7 +281,7 @@ namespace SabreTools.Serialization.Readers.Test var video = new Data.Models.ClrMamePro.Video { - Screen = "XXXXXX", + Screen = Data.Models.Metadata.DisplayType.Vector, Orientation = "XXXXXX", X = "XXXXXX", Y = "XXXXXX", @@ -314,11 +314,11 @@ namespace SabreTools.Serialization.Readers.Test var driver = new Data.Models.ClrMamePro.Driver { - Status = "XXXXXX", - Color = "XXXXXX", - Sound = "XXXXXX", + Status = Data.Models.Metadata.SupportStatus.Good, + Color = Data.Models.Metadata.SupportStatus.Good, + Sound = Data.Models.Metadata.SupportStatus.Good, PaletteSize = "XXXXXX", - Blit = "XXXXXX", + Blit = Data.Models.Metadata.Blit.Plain, }; // TODO: This omits Set, should that have a separate case? @@ -379,9 +379,9 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", cmp.Comment); Assert.Equal("XXXXXX", cmp.Header); Assert.Equal("XXXXXX", cmp.Type); - Assert.Equal("XXXXXX", cmp.ForceMerging); + Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, cmp.ForceMerging); Assert.Equal(true, cmp.ForceZipping); - Assert.Equal("XXXXXX", cmp.ForcePacking); + Assert.Equal(Data.Models.Metadata.PackingFlag.Zip, cmp.ForcePacking); } /// @@ -488,7 +488,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", rom.RIPEMD160); Assert.Equal("XXXXXX", rom.SHA1); Assert.Equal("XXXXXX", rom.Merge); - Assert.Equal("XXXXXX", rom.Status); + Assert.Equal(Data.Models.Metadata.ItemStatus.Good, rom.Status); Assert.Equal("XXXXXX", rom.Flags); Assert.Equal("XXXXXX", rom.Date); Assert.Equal("XXXXXX", rom.SHA256); @@ -515,7 +515,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", disk.MD5); Assert.Equal("XXXXXX", disk.SHA1); Assert.Equal("XXXXXX", disk.Merge); - Assert.Equal("XXXXXX", disk.Status); + Assert.Equal(Data.Models.Metadata.ItemStatus.Good, disk.Status); Assert.Equal("XXXXXX", disk.Flags); } @@ -556,7 +556,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.ClrMamePro.Chip? chip) { Assert.NotNull(chip); - Assert.Equal("XXXXXX", chip.Type); + Assert.Equal(Data.Models.Metadata.ChipType.CPU, chip.Type); Assert.Equal("XXXXXX", chip.Name); Assert.Equal("XXXXXX", chip.Flags); Assert.Equal("XXXXXX", chip.Clock); @@ -568,7 +568,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.ClrMamePro.Video? video) { Assert.NotNull(video); - Assert.Equal("XXXXXX", video.Screen); + Assert.Equal(Data.Models.Metadata.DisplayType.Vector, video.Screen); Assert.Equal("XXXXXX", video.Orientation); Assert.Equal("XXXXXX", video.X); Assert.Equal("XXXXXX", video.Y); @@ -621,11 +621,11 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.ClrMamePro.Driver? driver) { Assert.NotNull(driver); - Assert.Equal("XXXXXX", driver.Status); - Assert.Equal("XXXXXX", driver.Color); - Assert.Equal("XXXXXX", driver.Sound); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Status); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Color); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Sound); Assert.Equal("XXXXXX", driver.PaletteSize); - Assert.Equal("XXXXXX", driver.Blit); + Assert.Equal(Data.Models.Metadata.Blit.Plain, driver.Blit); } /// diff --git a/SabreTools.Serialization.Readers.Test/ListxmlTests.cs b/SabreTools.Serialization.Readers.Test/ListxmlTests.cs index 835a4db2..6cfd1795 100644 --- a/SabreTools.Serialization.Readers.Test/ListxmlTests.cs +++ b/SabreTools.Serialization.Readers.Test/ListxmlTests.cs @@ -147,7 +147,7 @@ namespace SabreTools.Serialization.Readers.Test Merge = "XXXXXX", Region = "XXXXXX", Offset = "XXXXXX", - Status = "XXXXXX", + Status = Data.Models.Metadata.ItemStatus.Good, Optional = true, Dispose = true, SoundOnly = true, @@ -162,7 +162,7 @@ namespace SabreTools.Serialization.Readers.Test Region = "XXXXXX", Index = "XXXXXX", Writable = true, - Status = "XXXXXX", + Status = Data.Models.Metadata.ItemStatus.Good, Optional = true, }; @@ -180,7 +180,7 @@ namespace SabreTools.Serialization.Readers.Test { Name = "XXXXXX", Tag = "XXXXXX", - Type = "XXXXXX", + Type = Data.Models.Metadata.ChipType.CPU, SoundOnly = true, Clock = "XXXXXX", }; @@ -188,7 +188,7 @@ namespace SabreTools.Serialization.Readers.Test var display = new Data.Models.Listxml.Display { Tag = "XXXXXX", - Type = "XXXXXX", + Type = Data.Models.Metadata.DisplayType.Vector, Rotate = "XXXXXX", FlipX = true, Width = "XXXXXX", @@ -205,7 +205,7 @@ namespace SabreTools.Serialization.Readers.Test var video = new Data.Models.Listxml.Video { - Screen = "XXXXXX", + Screen = Data.Models.Metadata.DisplayType.Vector, Orientation = "XXXXXX", Width = "XXXXXX", Height = "XXXXXX", @@ -221,7 +221,7 @@ namespace SabreTools.Serialization.Readers.Test var control = new Data.Models.Listxml.Control { - Type = "XXXXXX", + Type = Data.Models.Metadata.ControlType.Lightgun, Player = "XXXXXX", Buttons = "XXXXXX", ReqButtons = "XXXXXX", @@ -250,7 +250,7 @@ namespace SabreTools.Serialization.Readers.Test { Tag = "XXXXXX", Mask = "XXXXXX", - Relation = "XXXXXX", + Relation = Data.Models.Metadata.Relation.Equal, Value = "XXXXXX", }; @@ -324,13 +324,13 @@ namespace SabreTools.Serialization.Readers.Test var driver = new Data.Models.Listxml.Driver { - Status = "XXXXXX", - Color = "XXXXXX", - Sound = "XXXXXX", + Status = Data.Models.Metadata.SupportStatus.Good, + Color = Data.Models.Metadata.SupportStatus.Good, + Sound = Data.Models.Metadata.SupportStatus.Good, PaletteSize = "XXXXXX", - Emulation = "XXXXXX", - Cocktail = "XXXXXX", - SaveState = "XXXXXX", + Emulation = Data.Models.Metadata.SupportStatus.Good, + Cocktail = Data.Models.Metadata.SupportStatus.Good, + SaveState = Data.Models.Metadata.Supported.Yes, RequiresArtwork = true, Unofficial = true, NoSoundHardware = true, @@ -339,9 +339,9 @@ namespace SabreTools.Serialization.Readers.Test var feature = new Data.Models.Listxml.Feature { - Type = "XXXXXX", - Status = "XXXXXX", - Overall = "XXXXXX", + Type = Data.Models.Metadata.FeatureType.Protection, + Status = Data.Models.Metadata.FeatureStatus.Imperfect, + Overall = Data.Models.Metadata.FeatureStatus.Imperfect, }; var instance = new Data.Models.Listxml.Instance @@ -357,7 +357,7 @@ namespace SabreTools.Serialization.Readers.Test var device = new Data.Models.Listxml.Device { - Type = "XXXXXX", + Type = Data.Models.Metadata.DeviceType.PunchTape, Tag = "XXXXXX", FixedImage = "XXXXXX", Mandatory = "XXXXXX", @@ -383,7 +383,7 @@ namespace SabreTools.Serialization.Readers.Test { Tag = "XXXXXX", Name = "XXXXXX", - Status = "XXXXXX", + Status = Data.Models.Metadata.SoftwareListStatus.Original, Filter = "XXXXXX", }; @@ -559,7 +559,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", rom.Merge); Assert.Equal("XXXXXX", rom.Region); Assert.Equal("XXXXXX", rom.Offset); - Assert.Equal("XXXXXX", rom.Status); + Assert.Equal(Data.Models.Metadata.ItemStatus.Good, rom.Status); Assert.Equal(true, rom.Optional); Assert.Equal(true, rom.Dispose); Assert.Equal(true, rom.SoundOnly); @@ -578,7 +578,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", disk.Region); Assert.Equal("XXXXXX", disk.Index); Assert.Equal(true, disk.Writable); - Assert.Equal("XXXXXX", disk.Status); + Assert.Equal(Data.Models.Metadata.ItemStatus.Good, disk.Status); Assert.Equal(true, disk.Optional); } @@ -608,7 +608,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(chip); Assert.Equal("XXXXXX", chip.Name); Assert.Equal("XXXXXX", chip.Tag); - Assert.Equal("XXXXXX", chip.Type); + Assert.Equal(Data.Models.Metadata.ChipType.CPU, chip.Type); Assert.Equal(true, chip.SoundOnly); Assert.Equal("XXXXXX", chip.Clock); } @@ -620,7 +620,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(display); Assert.Equal("XXXXXX", display.Tag); - Assert.Equal("XXXXXX", display.Type); + Assert.Equal(Data.Models.Metadata.DisplayType.Vector, display.Type); Assert.Equal("XXXXXX", display.Rotate); Assert.Equal(true, display.FlipX); Assert.Equal("XXXXXX", display.Width); @@ -641,7 +641,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Video? video) { Assert.NotNull(video); - Assert.Equal("XXXXXX", video.Screen); + Assert.Equal(Data.Models.Metadata.DisplayType.Vector, video.Screen); Assert.Equal("XXXXXX", video.Orientation); Assert.Equal("XXXXXX", video.Width); Assert.Equal("XXXXXX", video.Height); @@ -683,7 +683,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Control? control) { Assert.NotNull(control); - Assert.Equal("XXXXXX", control.Type); + Assert.Equal(Data.Models.Metadata.ControlType.Lightgun, control.Type); Assert.Equal("XXXXXX", control.Player); Assert.Equal("XXXXXX", control.Buttons); Assert.Equal("XXXXXX", control.ReqButtons); @@ -725,7 +725,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(condition); Assert.Equal("XXXXXX", condition.Tag); Assert.Equal("XXXXXX", condition.Mask); - Assert.Equal("XXXXXX", condition.Relation); + Assert.Equal(Data.Models.Metadata.Relation.Equal, condition.Relation); Assert.Equal("XXXXXX", condition.Value); } @@ -834,13 +834,13 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Driver? driver) { Assert.NotNull(driver); - Assert.Equal("XXXXXX", driver.Status); - Assert.Equal("XXXXXX", driver.Color); - Assert.Equal("XXXXXX", driver.Sound); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Status); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Color); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Sound); Assert.Equal("XXXXXX", driver.PaletteSize); - Assert.Equal("XXXXXX", driver.Emulation); - Assert.Equal("XXXXXX", driver.Cocktail); - Assert.Equal("XXXXXX", driver.SaveState); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Emulation); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Cocktail); + Assert.Equal(Data.Models.Metadata.Supported.Yes, driver.SaveState); Assert.Equal(true, driver.RequiresArtwork); Assert.Equal(true, driver.Unofficial); Assert.Equal(true, driver.NoSoundHardware); @@ -853,9 +853,9 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Feature? feature) { Assert.NotNull(feature); - Assert.Equal("XXXXXX", feature.Type); - Assert.Equal("XXXXXX", feature.Status); - Assert.Equal("XXXXXX", feature.Overall); + Assert.Equal(Data.Models.Metadata.FeatureType.Protection, feature.Type); + Assert.Equal(Data.Models.Metadata.FeatureStatus.Imperfect, feature.Status); + Assert.Equal(Data.Models.Metadata.FeatureStatus.Imperfect, feature.Overall); } /// @@ -864,7 +864,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Device? device) { Assert.NotNull(device); - Assert.Equal("XXXXXX", device.Type); + Assert.Equal(Data.Models.Metadata.DeviceType.PunchTape, device.Type); Assert.Equal("XXXXXX", device.Tag); Assert.Equal("XXXXXX", device.FixedImage); Assert.Equal("XXXXXX", device.Mandatory); @@ -927,7 +927,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(softwarelist); Assert.Equal("XXXXXX", softwarelist.Tag); Assert.Equal("XXXXXX", softwarelist.Name); - Assert.Equal("XXXXXX", softwarelist.Status); + Assert.Equal(Data.Models.Metadata.SoftwareListStatus.Original, softwarelist.Status); Assert.Equal("XXXXXX", softwarelist.Filter); } diff --git a/SabreTools.Serialization.Readers.Test/LogiqxTests.cs b/SabreTools.Serialization.Readers.Test/LogiqxTests.cs index 0b461d03..1182957d 100644 --- a/SabreTools.Serialization.Readers.Test/LogiqxTests.cs +++ b/SabreTools.Serialization.Readers.Test/LogiqxTests.cs @@ -141,17 +141,17 @@ namespace SabreTools.Serialization.Readers.Test var clrmamepro = new Data.Models.Logiqx.ClrMamePro { Header = "XXXXXX", - ForceMerging = "XXXXXX", - ForceNodump = "XXXXXX", - ForcePacking = "XXXXXX", + ForceMerging = Data.Models.Metadata.MergingFlag.Merged, + ForceNodump = Data.Models.Metadata.NodumpFlag.Required, + ForcePacking = Data.Models.Metadata.PackingFlag.Zip, }; var romcenter = new Data.Models.Logiqx.RomCenter { Plugin = "XXXXXX", - RomMode = "XXXXXX", - BiosMode = "XXXXXX", - SampleMode = "XXXXXX", + RomMode = Data.Models.Metadata.MergingFlag.Merged, + BiosMode = Data.Models.Metadata.MergingFlag.Merged, + SampleMode = Data.Models.Metadata.MergingFlag.Merged, LockRomMode = true, LockBiosMode = true, LockSampleMode = true, @@ -230,7 +230,7 @@ namespace SabreTools.Serialization.Readers.Test xxHash364 = "XXXXXX", xxHash3128 = "XXXXXX", Merge = "XXXXXX", - Status = "XXXXXX", + Status = Data.Models.Metadata.ItemStatus.Good, Serial = "XXXXXX", Header = "XXXXXX", Date = "XXXXXX", @@ -244,7 +244,7 @@ namespace SabreTools.Serialization.Readers.Test MD5 = "XXXXXX", SHA1 = "XXXXXX", Merge = "XXXXXX", - Status = "XXXXXX", + Status = Data.Models.Metadata.ItemStatus.Good, Region = "XXXXXX", }; @@ -274,10 +274,10 @@ namespace SabreTools.Serialization.Readers.Test var driver = new Data.Models.Logiqx.Driver { - Status = "XXXXXX", - Emulation = "XXXXXX", - Cocktail = "XXXXXX", - SaveState = "XXXXXX", + Status = Data.Models.Metadata.SupportStatus.Good, + Emulation = Data.Models.Metadata.SupportStatus.Good, + Cocktail = Data.Models.Metadata.SupportStatus.Good, + SaveState = Data.Models.Metadata.Supported.Yes, RequiresArtwork = true, Unofficial = true, NoSoundHardware = true, @@ -288,7 +288,7 @@ namespace SabreTools.Serialization.Readers.Test { Tag = "XXXXXX", Name = "XXXXXX", - Status = "XXXXXX", + Status = Data.Models.Metadata.SoftwareListStatus.Original, Filter = "XXXXXX", }; @@ -367,9 +367,9 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(cmp); Assert.Equal("XXXXXX", cmp.Header); - Assert.Equal("XXXXXX", cmp.ForceMerging); - Assert.Equal("XXXXXX", cmp.ForceNodump); - Assert.Equal("XXXXXX", cmp.ForcePacking); + Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, cmp.ForceMerging); + Assert.Equal(Data.Models.Metadata.NodumpFlag.Required, cmp.ForceNodump); + Assert.Equal(Data.Models.Metadata.PackingFlag.Zip, cmp.ForcePacking); } /// @@ -379,9 +379,9 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(rc); Assert.Equal("XXXXXX", rc.Plugin); - Assert.Equal("XXXXXX", rc.RomMode); - Assert.Equal("XXXXXX", rc.BiosMode); - Assert.Equal("XXXXXX", rc.SampleMode); + Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, rc.RomMode); + Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, rc.BiosMode); + Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, rc.SampleMode); Assert.Equal(true, rc.LockRomMode); Assert.Equal(true, rc.LockBiosMode); Assert.Equal(true, rc.LockSampleMode); @@ -529,7 +529,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", rom.xxHash364); Assert.Equal("XXXXXX", rom.xxHash3128); Assert.Equal("XXXXXX", rom.Merge); - Assert.Equal("XXXXXX", rom.Status); + Assert.Equal(Data.Models.Metadata.ItemStatus.Good, rom.Status); Assert.Equal("XXXXXX", rom.Serial); Assert.Equal("XXXXXX", rom.Header); Assert.Equal("XXXXXX", rom.Date); @@ -547,7 +547,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", disk.MD5); Assert.Equal("XXXXXX", disk.SHA1); Assert.Equal("XXXXXX", disk.Merge); - Assert.Equal("XXXXXX", disk.Status); + Assert.Equal(Data.Models.Metadata.ItemStatus.Good, disk.Status); Assert.Equal("XXXXXX", disk.Region); } @@ -597,10 +597,10 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Logiqx.Driver? driver) { Assert.NotNull(driver); - Assert.Equal("XXXXXX", driver.Status); - Assert.Equal("XXXXXX", driver.Emulation); - Assert.Equal("XXXXXX", driver.Cocktail); - Assert.Equal("XXXXXX", driver.SaveState); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Status); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Emulation); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Cocktail); + Assert.Equal(Data.Models.Metadata.Supported.Yes, driver.SaveState); Assert.Equal(true, driver.RequiresArtwork); Assert.Equal(true, driver.Unofficial); Assert.Equal(true, driver.NoSoundHardware); @@ -615,7 +615,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(softwarelist); Assert.Equal("XXXXXX", softwarelist.Tag); Assert.Equal("XXXXXX", softwarelist.Name); - Assert.Equal("XXXXXX", softwarelist.Status); + Assert.Equal(Data.Models.Metadata.SoftwareListStatus.Original, softwarelist.Status); Assert.Equal("XXXXXX", softwarelist.Filter); } } diff --git a/SabreTools.Serialization.Readers.Test/M1Tests.cs b/SabreTools.Serialization.Readers.Test/M1Tests.cs index aa00abaf..cbff6514 100644 --- a/SabreTools.Serialization.Readers.Test/M1Tests.cs +++ b/SabreTools.Serialization.Readers.Test/M1Tests.cs @@ -143,7 +143,7 @@ namespace SabreTools.Serialization.Readers.Test Merge = "XXXXXX", Region = "XXXXXX", Offset = "XXXXXX", - Status = "XXXXXX", + Status = Data.Models.Metadata.ItemStatus.Good, Optional = true, Dispose = true, SoundOnly = true, @@ -158,7 +158,7 @@ namespace SabreTools.Serialization.Readers.Test Region = "XXXXXX", Index = "XXXXXX", Writable = true, - Status = "XXXXXX", + Status = Data.Models.Metadata.ItemStatus.Good, Optional = true, }; @@ -176,7 +176,7 @@ namespace SabreTools.Serialization.Readers.Test { Name = "XXXXXX", Tag = "XXXXXX", - Type = "XXXXXX", + Type = Data.Models.Metadata.ChipType.CPU, SoundOnly = true, Clock = "XXXXXX", }; @@ -184,7 +184,7 @@ namespace SabreTools.Serialization.Readers.Test var display = new Data.Models.Listxml.Display { Tag = "XXXXXX", - Type = "XXXXXX", + Type = Data.Models.Metadata.DisplayType.Vector, Rotate = "XXXXXX", FlipX = true, Width = "XXXXXX", @@ -201,7 +201,7 @@ namespace SabreTools.Serialization.Readers.Test var video = new Data.Models.Listxml.Video { - Screen = "XXXXXX", + Screen = Data.Models.Metadata.DisplayType.Vector, Orientation = "XXXXXX", Width = "XXXXXX", Height = "XXXXXX", @@ -217,7 +217,7 @@ namespace SabreTools.Serialization.Readers.Test var control = new Data.Models.Listxml.Control { - Type = "XXXXXX", + Type = Data.Models.Metadata.ControlType.Lightgun, Player = "XXXXXX", Buttons = "XXXXXX", ReqButtons = "XXXXXX", @@ -246,7 +246,7 @@ namespace SabreTools.Serialization.Readers.Test { Tag = "XXXXXX", Mask = "XXXXXX", - Relation = "XXXXXX", + Relation = Data.Models.Metadata.Relation.Equal, Value = "XXXXXX", }; @@ -320,13 +320,13 @@ namespace SabreTools.Serialization.Readers.Test var driver = new Data.Models.Listxml.Driver { - Status = "XXXXXX", - Color = "XXXXXX", - Sound = "XXXXXX", + Status = Data.Models.Metadata.SupportStatus.Good, + Color = Data.Models.Metadata.SupportStatus.Good, + Sound = Data.Models.Metadata.SupportStatus.Good, PaletteSize = "XXXXXX", - Emulation = "XXXXXX", - Cocktail = "XXXXXX", - SaveState = "XXXXXX", + Emulation = Data.Models.Metadata.SupportStatus.Good, + Cocktail = Data.Models.Metadata.SupportStatus.Good, + SaveState = Data.Models.Metadata.Supported.Yes, RequiresArtwork = true, Unofficial = true, NoSoundHardware = true, @@ -335,9 +335,9 @@ namespace SabreTools.Serialization.Readers.Test var feature = new Data.Models.Listxml.Feature { - Type = "XXXXXX", - Status = "XXXXXX", - Overall = "XXXXXX", + Type = Data.Models.Metadata.FeatureType.Protection, + Status = Data.Models.Metadata.FeatureStatus.Imperfect, + Overall = Data.Models.Metadata.FeatureStatus.Imperfect, }; var instance = new Data.Models.Listxml.Instance @@ -353,7 +353,7 @@ namespace SabreTools.Serialization.Readers.Test var device = new Data.Models.Listxml.Device { - Type = "XXXXXX", + Type = Data.Models.Metadata.DeviceType.PunchTape, Tag = "XXXXXX", FixedImage = "XXXXXX", Mandatory = "XXXXXX", @@ -379,7 +379,7 @@ namespace SabreTools.Serialization.Readers.Test { Tag = "XXXXXX", Name = "XXXXXX", - Status = "XXXXXX", + Status = Data.Models.Metadata.SoftwareListStatus.Original, Filter = "XXXXXX", }; @@ -553,7 +553,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", rom.Merge); Assert.Equal("XXXXXX", rom.Region); Assert.Equal("XXXXXX", rom.Offset); - Assert.Equal("XXXXXX", rom.Status); + Assert.Equal(Data.Models.Metadata.ItemStatus.Good, rom.Status); Assert.Equal(true, rom.Optional); Assert.Equal(true, rom.Dispose); Assert.Equal(true, rom.SoundOnly); @@ -572,7 +572,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", disk.Region); Assert.Equal("XXXXXX", disk.Index); Assert.Equal(true, disk.Writable); - Assert.Equal("XXXXXX", disk.Status); + Assert.Equal(Data.Models.Metadata.ItemStatus.Good, disk.Status); Assert.Equal(true, disk.Optional); } @@ -602,7 +602,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(chip); Assert.Equal("XXXXXX", chip.Name); Assert.Equal("XXXXXX", chip.Tag); - Assert.Equal("XXXXXX", chip.Type); + Assert.Equal(Data.Models.Metadata.ChipType.CPU, chip.Type); Assert.Equal(true, chip.SoundOnly); Assert.Equal("XXXXXX", chip.Clock); } @@ -614,7 +614,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(display); Assert.Equal("XXXXXX", display.Tag); - Assert.Equal("XXXXXX", display.Type); + Assert.Equal(Data.Models.Metadata.DisplayType.Vector, display.Type); Assert.Equal("XXXXXX", display.Rotate); Assert.Equal(true, display.FlipX); Assert.Equal("XXXXXX", display.Width); @@ -635,7 +635,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Video? video) { Assert.NotNull(video); - Assert.Equal("XXXXXX", video.Screen); + Assert.Equal(Data.Models.Metadata.DisplayType.Vector, video.Screen); Assert.Equal("XXXXXX", video.Orientation); Assert.Equal("XXXXXX", video.Width); Assert.Equal("XXXXXX", video.Height); @@ -677,7 +677,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Control? control) { Assert.NotNull(control); - Assert.Equal("XXXXXX", control.Type); + Assert.Equal(Data.Models.Metadata.ControlType.Lightgun, control.Type); Assert.Equal("XXXXXX", control.Player); Assert.Equal("XXXXXX", control.Buttons); Assert.Equal("XXXXXX", control.ReqButtons); @@ -719,7 +719,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(condition); Assert.Equal("XXXXXX", condition.Tag); Assert.Equal("XXXXXX", condition.Mask); - Assert.Equal("XXXXXX", condition.Relation); + Assert.Equal(Data.Models.Metadata.Relation.Equal, condition.Relation); Assert.Equal("XXXXXX", condition.Value); } @@ -828,13 +828,13 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Driver? driver) { Assert.NotNull(driver); - Assert.Equal("XXXXXX", driver.Status); - Assert.Equal("XXXXXX", driver.Color); - Assert.Equal("XXXXXX", driver.Sound); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Status); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Color); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Sound); Assert.Equal("XXXXXX", driver.PaletteSize); - Assert.Equal("XXXXXX", driver.Emulation); - Assert.Equal("XXXXXX", driver.Cocktail); - Assert.Equal("XXXXXX", driver.SaveState); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Emulation); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Cocktail); + Assert.Equal(Data.Models.Metadata.Supported.Yes, driver.SaveState); Assert.Equal(true, driver.RequiresArtwork); Assert.Equal(true, driver.Unofficial); Assert.Equal(true, driver.NoSoundHardware); @@ -847,9 +847,9 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Feature? feature) { Assert.NotNull(feature); - Assert.Equal("XXXXXX", feature.Type); - Assert.Equal("XXXXXX", feature.Status); - Assert.Equal("XXXXXX", feature.Overall); + Assert.Equal(Data.Models.Metadata.FeatureType.Protection, feature.Type); + Assert.Equal(Data.Models.Metadata.FeatureStatus.Imperfect, feature.Status); + Assert.Equal(Data.Models.Metadata.FeatureStatus.Imperfect, feature.Overall); } /// @@ -858,7 +858,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Device? device) { Assert.NotNull(device); - Assert.Equal("XXXXXX", device.Type); + Assert.Equal(Data.Models.Metadata.DeviceType.PunchTape, device.Type); Assert.Equal("XXXXXX", device.Tag); Assert.Equal("XXXXXX", device.FixedImage); Assert.Equal("XXXXXX", device.Mandatory); @@ -921,7 +921,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(softwarelist); Assert.Equal("XXXXXX", softwarelist.Tag); Assert.Equal("XXXXXX", softwarelist.Name); - Assert.Equal("XXXXXX", softwarelist.Status); + Assert.Equal(Data.Models.Metadata.SoftwareListStatus.Original, softwarelist.Status); Assert.Equal("XXXXXX", softwarelist.Filter); } diff --git a/SabreTools.Serialization.Readers.Test/MessTests.cs b/SabreTools.Serialization.Readers.Test/MessTests.cs index 1b4d77dd..4b798855 100644 --- a/SabreTools.Serialization.Readers.Test/MessTests.cs +++ b/SabreTools.Serialization.Readers.Test/MessTests.cs @@ -143,7 +143,7 @@ namespace SabreTools.Serialization.Readers.Test Merge = "XXXXXX", Region = "XXXXXX", Offset = "XXXXXX", - Status = "XXXXXX", + Status = Data.Models.Metadata.ItemStatus.Good, Optional = true, Dispose = true, SoundOnly = true, @@ -158,7 +158,7 @@ namespace SabreTools.Serialization.Readers.Test Region = "XXXXXX", Index = "XXXXXX", Writable = true, - Status = "XXXXXX", + Status = Data.Models.Metadata.ItemStatus.Good, Optional = true, }; @@ -176,7 +176,7 @@ namespace SabreTools.Serialization.Readers.Test { Name = "XXXXXX", Tag = "XXXXXX", - Type = "XXXXXX", + Type = Data.Models.Metadata.ChipType.CPU, SoundOnly = true, Clock = "XXXXXX", }; @@ -184,7 +184,7 @@ namespace SabreTools.Serialization.Readers.Test var display = new Data.Models.Listxml.Display { Tag = "XXXXXX", - Type = "XXXXXX", + Type = Data.Models.Metadata.DisplayType.Vector, Rotate = "XXXXXX", FlipX = true, Width = "XXXXXX", @@ -201,7 +201,7 @@ namespace SabreTools.Serialization.Readers.Test var video = new Data.Models.Listxml.Video { - Screen = "XXXXXX", + Screen = Data.Models.Metadata.DisplayType.Vector, Orientation = "XXXXXX", Width = "XXXXXX", Height = "XXXXXX", @@ -217,7 +217,7 @@ namespace SabreTools.Serialization.Readers.Test var control = new Data.Models.Listxml.Control { - Type = "XXXXXX", + Type = Data.Models.Metadata.ControlType.Lightgun, Player = "XXXXXX", Buttons = "XXXXXX", ReqButtons = "XXXXXX", @@ -246,7 +246,7 @@ namespace SabreTools.Serialization.Readers.Test { Tag = "XXXXXX", Mask = "XXXXXX", - Relation = "XXXXXX", + Relation = Data.Models.Metadata.Relation.Equal, Value = "XXXXXX", }; @@ -320,13 +320,13 @@ namespace SabreTools.Serialization.Readers.Test var driver = new Data.Models.Listxml.Driver { - Status = "XXXXXX", - Color = "XXXXXX", - Sound = "XXXXXX", + Status = Data.Models.Metadata.SupportStatus.Good, + Color = Data.Models.Metadata.SupportStatus.Good, + Sound = Data.Models.Metadata.SupportStatus.Good, PaletteSize = "XXXXXX", - Emulation = "XXXXXX", - Cocktail = "XXXXXX", - SaveState = "XXXXXX", + Emulation = Data.Models.Metadata.SupportStatus.Good, + Cocktail = Data.Models.Metadata.SupportStatus.Good, + SaveState = Data.Models.Metadata.Supported.Yes, RequiresArtwork = true, Unofficial = true, NoSoundHardware = true, @@ -335,9 +335,9 @@ namespace SabreTools.Serialization.Readers.Test var feature = new Data.Models.Listxml.Feature { - Type = "XXXXXX", - Status = "XXXXXX", - Overall = "XXXXXX", + Type = Data.Models.Metadata.FeatureType.Protection, + Status = Data.Models.Metadata.FeatureStatus.Imperfect, + Overall = Data.Models.Metadata.FeatureStatus.Imperfect, }; var instance = new Data.Models.Listxml.Instance @@ -353,7 +353,7 @@ namespace SabreTools.Serialization.Readers.Test var device = new Data.Models.Listxml.Device { - Type = "XXXXXX", + Type = Data.Models.Metadata.DeviceType.PunchTape, Tag = "XXXXXX", FixedImage = "XXXXXX", Mandatory = "XXXXXX", @@ -379,7 +379,7 @@ namespace SabreTools.Serialization.Readers.Test { Tag = "XXXXXX", Name = "XXXXXX", - Status = "XXXXXX", + Status = Data.Models.Metadata.SoftwareListStatus.Original, Filter = "XXXXXX", }; @@ -553,7 +553,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", rom.Merge); Assert.Equal("XXXXXX", rom.Region); Assert.Equal("XXXXXX", rom.Offset); - Assert.Equal("XXXXXX", rom.Status); + Assert.Equal(Data.Models.Metadata.ItemStatus.Good, rom.Status); Assert.Equal(true, rom.Optional); Assert.Equal(true, rom.Dispose); Assert.Equal(true, rom.SoundOnly); @@ -572,7 +572,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", disk.Region); Assert.Equal("XXXXXX", disk.Index); Assert.Equal(true, disk.Writable); - Assert.Equal("XXXXXX", disk.Status); + Assert.Equal(Data.Models.Metadata.ItemStatus.Good, disk.Status); Assert.Equal(true, disk.Optional); } @@ -602,7 +602,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(chip); Assert.Equal("XXXXXX", chip.Name); Assert.Equal("XXXXXX", chip.Tag); - Assert.Equal("XXXXXX", chip.Type); + Assert.Equal(Data.Models.Metadata.ChipType.CPU, chip.Type); Assert.Equal(true, chip.SoundOnly); Assert.Equal("XXXXXX", chip.Clock); } @@ -614,7 +614,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(display); Assert.Equal("XXXXXX", display.Tag); - Assert.Equal("XXXXXX", display.Type); + Assert.Equal(Data.Models.Metadata.DisplayType.Vector, display.Type); Assert.Equal("XXXXXX", display.Rotate); Assert.Equal(true, display.FlipX); Assert.Equal("XXXXXX", display.Width); @@ -635,7 +635,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Video? video) { Assert.NotNull(video); - Assert.Equal("XXXXXX", video.Screen); + Assert.Equal(Data.Models.Metadata.DisplayType.Vector, video.Screen); Assert.Equal("XXXXXX", video.Orientation); Assert.Equal("XXXXXX", video.Width); Assert.Equal("XXXXXX", video.Height); @@ -677,7 +677,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Control? control) { Assert.NotNull(control); - Assert.Equal("XXXXXX", control.Type); + Assert.Equal(Data.Models.Metadata.ControlType.Lightgun, control.Type); Assert.Equal("XXXXXX", control.Player); Assert.Equal("XXXXXX", control.Buttons); Assert.Equal("XXXXXX", control.ReqButtons); @@ -719,7 +719,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(condition); Assert.Equal("XXXXXX", condition.Tag); Assert.Equal("XXXXXX", condition.Mask); - Assert.Equal("XXXXXX", condition.Relation); + Assert.Equal(Data.Models.Metadata.Relation.Equal, condition.Relation); Assert.Equal("XXXXXX", condition.Value); } @@ -828,13 +828,13 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Driver? driver) { Assert.NotNull(driver); - Assert.Equal("XXXXXX", driver.Status); - Assert.Equal("XXXXXX", driver.Color); - Assert.Equal("XXXXXX", driver.Sound); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Status); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Color); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Sound); Assert.Equal("XXXXXX", driver.PaletteSize); - Assert.Equal("XXXXXX", driver.Emulation); - Assert.Equal("XXXXXX", driver.Cocktail); - Assert.Equal("XXXXXX", driver.SaveState); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Emulation); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Cocktail); + Assert.Equal(Data.Models.Metadata.Supported.Yes, driver.SaveState); Assert.Equal(true, driver.RequiresArtwork); Assert.Equal(true, driver.Unofficial); Assert.Equal(true, driver.NoSoundHardware); @@ -847,9 +847,9 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Feature? feature) { Assert.NotNull(feature); - Assert.Equal("XXXXXX", feature.Type); - Assert.Equal("XXXXXX", feature.Status); - Assert.Equal("XXXXXX", feature.Overall); + Assert.Equal(Data.Models.Metadata.FeatureType.Protection, feature.Type); + Assert.Equal(Data.Models.Metadata.FeatureStatus.Imperfect, feature.Status); + Assert.Equal(Data.Models.Metadata.FeatureStatus.Imperfect, feature.Overall); } /// @@ -858,7 +858,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Device? device) { Assert.NotNull(device); - Assert.Equal("XXXXXX", device.Type); + Assert.Equal(Data.Models.Metadata.DeviceType.PunchTape, device.Type); Assert.Equal("XXXXXX", device.Tag); Assert.Equal("XXXXXX", device.FixedImage); Assert.Equal("XXXXXX", device.Mandatory); @@ -921,7 +921,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(softwarelist); Assert.Equal("XXXXXX", softwarelist.Tag); Assert.Equal("XXXXXX", softwarelist.Name); - Assert.Equal("XXXXXX", softwarelist.Status); + Assert.Equal(Data.Models.Metadata.SoftwareListStatus.Original, softwarelist.Status); Assert.Equal("XXXXXX", softwarelist.Filter); } diff --git a/SabreTools.Serialization.Readers.Test/SeparatedValueTests.cs b/SabreTools.Serialization.Readers.Test/SeparatedValueTests.cs index 1d7d5c4f..0c4711bd 100644 --- a/SabreTools.Serialization.Readers.Test/SeparatedValueTests.cs +++ b/SabreTools.Serialization.Readers.Test/SeparatedValueTests.cs @@ -144,7 +144,7 @@ namespace SabreTools.Serialization.Readers.Test DiskName = "XXXXXX", MD5 = "XXXXXX", SHA1 = "XXXXXX", - Status = "XXXXXX", + Status = Data.Models.Metadata.ItemStatus.Good, }; var media = new Data.Models.SeparatedValue.Row @@ -179,7 +179,7 @@ namespace SabreTools.Serialization.Readers.Test SHA384 = "XXXXXX", SHA512 = "XXXXXX", SpamSum = "XXXXXX", - Status = "XXXXXX", + Status = Data.Models.Metadata.ItemStatus.Good, }; return new Data.Models.SeparatedValue.MetadataFile @@ -233,7 +233,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Null(row.SpamSum); } - Assert.Equal("XXXXXX", row.Status); + Assert.Equal(Data.Models.Metadata.ItemStatus.Good, row.Status); } /// @@ -268,7 +268,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Null(row.SpamSum); } - Assert.NotNull(row.Status); Assert.Empty(row.Status); + Assert.Null(row.Status); } /// @@ -304,7 +304,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Null(row.SpamSum); } - Assert.Equal("XXXXXX", row.Status); + Assert.Equal(Data.Models.Metadata.ItemStatus.Good, row.Status); } } } diff --git a/SabreTools.Serialization.Readers.Test/SoftwareListTests.cs b/SabreTools.Serialization.Readers.Test/SoftwareListTests.cs index d90e1ded..f3ccbab4 100644 --- a/SabreTools.Serialization.Readers.Test/SoftwareListTests.cs +++ b/SabreTools.Serialization.Readers.Test/SoftwareListTests.cs @@ -136,8 +136,8 @@ namespace SabreTools.Serialization.Readers.Test SHA1 = "XXXXXX", Offset = "XXXXXX", Value = "XXXXXX", - Status = "XXXXXX", - LoadFlag = "XXXXXX", + Status = Data.Models.Metadata.ItemStatus.Good, + LoadFlag = Data.Models.Metadata.LoadFlag.Load16Byte, }; var dataarea = new Data.Models.SoftwareList.DataArea @@ -145,7 +145,7 @@ namespace SabreTools.Serialization.Readers.Test Name = "XXXXXX", Size = "XXXXXX", Width = "XXXXXX", - Endianness = "XXXXXX", + Endianness = Data.Models.Metadata.Endianness.Big, Rom = [rom], }; @@ -154,7 +154,7 @@ namespace SabreTools.Serialization.Readers.Test Name = "XXXXXX", MD5 = "XXXXXX", SHA1 = "XXXXXX", - Status = "XXXXXX", + Status = Data.Models.Metadata.ItemStatus.Good, Writeable = true, }; @@ -193,7 +193,7 @@ namespace SabreTools.Serialization.Readers.Test { Name = "XXXXXX", CloneOf = "XXXXXX", - Supported = "XXXXXX", + Supported = Data.Models.Metadata.Supported.Yes, Description = "XXXXXX", Year = "XXXXXX", Publisher = "XXXXXX", @@ -220,7 +220,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(software); Assert.Equal("XXXXXX", software.Name); Assert.Equal("XXXXXX", software.CloneOf); - Assert.Equal("XXXXXX", software.Supported); + Assert.Equal(Data.Models.Metadata.Supported.Yes, software.Supported); Assert.Equal("XXXXXX", software.Description); Assert.Equal("XXXXXX", software.Year); Assert.Equal("XXXXXX", software.Publisher); @@ -304,7 +304,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", dataarea.Name); Assert.Equal("XXXXXX", dataarea.Size); Assert.Equal("XXXXXX", dataarea.Width); - Assert.Equal("XXXXXX", dataarea.Endianness); + Assert.Equal(Data.Models.Metadata.Endianness.Big, dataarea.Endianness); Assert.NotNull(dataarea.Rom); var rom = Assert.Single(dataarea.Rom); @@ -324,8 +324,8 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", rom.SHA1); Assert.Equal("XXXXXX", rom.Offset); Assert.Equal("XXXXXX", rom.Value); - Assert.Equal("XXXXXX", rom.Status); - Assert.Equal("XXXXXX", rom.LoadFlag); + Assert.Equal(Data.Models.Metadata.ItemStatus.Good, rom.Status); + Assert.Equal(Data.Models.Metadata.LoadFlag.Load16Byte, rom.LoadFlag); } /// @@ -350,7 +350,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", disk.Name); Assert.Equal("XXXXXX", disk.MD5); Assert.Equal("XXXXXX", disk.SHA1); - Assert.Equal("XXXXXX", disk.Status); + Assert.Equal(Data.Models.Metadata.ItemStatus.Good, disk.Status); Assert.Equal(true, disk.Writeable); } diff --git a/SabreTools.Serialization.Readers/ClrMamePro.cs b/SabreTools.Serialization.Readers/ClrMamePro.cs index 75e973e1..0ce08e58 100644 --- a/SabreTools.Serialization.Readers/ClrMamePro.cs +++ b/SabreTools.Serialization.Readers/ClrMamePro.cs @@ -245,13 +245,15 @@ namespace SabreTools.Serialization.Readers dat.ClrMamePro.Type = reader.Standalone?.Value; break; case "forcemerging": - dat.ClrMamePro.ForceMerging = reader.Standalone?.Value; + dat.ClrMamePro.ForceMerging = reader.Standalone?.Value?.AsMergingFlag() + ?? Data.Models.Metadata.MergingFlag.None; break; case "forcezipping": dat.ClrMamePro.ForceZipping = reader.Standalone?.Value?.AsYesNo(); break; case "forcepacking": - dat.ClrMamePro.ForcePacking = reader.Standalone?.Value; + dat.ClrMamePro.ForcePacking = reader.Standalone?.Value?.AsPackingFlag() + ?? Data.Models.Metadata.PackingFlag.None; break; default: // TODO: Log invalid values @@ -578,7 +580,7 @@ namespace SabreTools.Serialization.Readers rom.Merge = kvp.Value; break; case "status": - rom.Status = kvp.Value; + rom.Status = kvp.Value.AsItemStatus(); break; case "region": rom.Region = kvp.Value; @@ -641,7 +643,7 @@ namespace SabreTools.Serialization.Readers disk.Merge = kvp.Value; break; case "status": - disk.Status = kvp.Value; + disk.Status = kvp.Value.AsItemStatus(); break; case "flags": disk.Flags = kvp.Value; @@ -764,7 +766,7 @@ namespace SabreTools.Serialization.Readers switch (kvp.Key?.ToLowerInvariant()) { case "type": - chip.Type = kvp.Value; + chip.Type = kvp.Value.AsChipType(); break; case "name": chip.Name = kvp.Value; @@ -800,7 +802,7 @@ namespace SabreTools.Serialization.Readers switch (kvp.Key?.ToLowerInvariant()) { case "screen": - video.Screen = kvp.Value; + video.Screen = kvp.Value.AsDisplayType(); break; case "orientation": video.Orientation = kvp.Value; @@ -949,19 +951,19 @@ namespace SabreTools.Serialization.Readers switch (kvp.Key?.ToLowerInvariant()) { case "status": - driver.Status = kvp.Value; + driver.Status = kvp.Value.AsSupportStatus(); break; case "color": - driver.Color = kvp.Value; + driver.Color = kvp.Value.AsSupportStatus(); break; case "sound": - driver.Sound = kvp.Value; + driver.Sound = kvp.Value.AsSupportStatus(); break; case "palettesize": driver.PaletteSize = kvp.Value; break; case "blit": - driver.Blit = kvp.Value; + driver.Blit = kvp.Value.AsBlit(); break; default: // TODO: Log invalid values diff --git a/SabreTools.Serialization.Readers/Listxml.cs b/SabreTools.Serialization.Readers/Listxml.cs index 11167434..2b868c56 100644 --- a/SabreTools.Serialization.Readers/Listxml.cs +++ b/SabreTools.Serialization.Readers/Listxml.cs @@ -189,7 +189,7 @@ namespace SabreTools.Serialization.Readers obj.Name = reader.GetAttribute("name"); obj.Tag = reader.GetAttribute("tag"); - obj.Type = reader.GetAttribute("type"); + obj.Type = reader.GetAttribute("type").AsChipType(); obj.SoundOnly = reader.GetAttribute("soundonly").AsYesNo(); obj.Clock = reader.GetAttribute("clock"); @@ -207,7 +207,7 @@ namespace SabreTools.Serialization.Readers obj.Tag = reader.GetAttribute("tag"); obj.Mask = reader.GetAttribute("mask"); - obj.Relation = reader.GetAttribute("relation"); + obj.Relation = reader.GetAttribute("relation").AsRelation(); obj.Value = reader.GetAttribute("value"); return obj; @@ -340,7 +340,7 @@ namespace SabreTools.Serialization.Readers { var obj = new Control(); - obj.Type = reader.GetAttribute("type"); + obj.Type = reader.GetAttribute("type").AsControlType(); obj.Player = reader.GetAttribute("player"); obj.Buttons = reader.GetAttribute("buttons"); obj.ReqButtons = reader.GetAttribute("reqbuttons"); @@ -365,7 +365,7 @@ namespace SabreTools.Serialization.Readers { var obj = new Device(); - obj.Type = reader.GetAttribute("type"); + obj.Type = reader.GetAttribute("type").AsDeviceType(); obj.Tag = reader.GetAttribute("tag"); obj.FixedImage = reader.GetAttribute("fixed_image"); obj.Mandatory = reader.GetAttribute("mandatory"); @@ -558,7 +558,7 @@ namespace SabreTools.Serialization.Readers obj.Region = reader.GetAttribute("region"); obj.Index = reader.GetAttribute("index"); obj.Writable = reader.GetAttribute("writable").AsYesNo(); - obj.Status = reader.GetAttribute("status"); + obj.Status = reader.GetAttribute("status").AsItemStatus(); obj.Optional = reader.GetAttribute("optional").AsYesNo(); return obj; @@ -574,7 +574,7 @@ namespace SabreTools.Serialization.Readers var obj = new Display(); obj.Tag = reader.GetAttribute("tag"); - obj.Type = reader.GetAttribute("type"); + obj.Type = reader.GetAttribute("type").AsDisplayType(); obj.Rotate = reader.GetAttribute("rotate"); obj.FlipX = reader.GetAttribute("flipx").AsYesNo(); obj.Width = reader.GetAttribute("width"); @@ -600,13 +600,13 @@ namespace SabreTools.Serialization.Readers { var obj = new Driver(); - obj.Status = reader.GetAttribute("status"); - obj.Color = reader.GetAttribute("color"); - obj.Sound = reader.GetAttribute("sound"); + obj.Status = reader.GetAttribute("status").AsSupportStatus(); + obj.Color = reader.GetAttribute("color").AsSupportStatus(); + obj.Sound = reader.GetAttribute("sound").AsSupportStatus(); obj.PaletteSize = reader.GetAttribute("palettesize"); - obj.Emulation = reader.GetAttribute("emulation"); - obj.Cocktail = reader.GetAttribute("cocktail"); - obj.SaveState = reader.GetAttribute("savestate"); + obj.Emulation = reader.GetAttribute("emulation").AsSupportStatus(); + obj.Cocktail = reader.GetAttribute("cocktail").AsSupportStatus(); + obj.SaveState = reader.GetAttribute("savestate").AsSupported(); obj.RequiresArtwork = reader.GetAttribute("requiresartwork").AsYesNo(); obj.Unofficial = reader.GetAttribute("unofficial").AsYesNo(); obj.NoSoundHardware = reader.GetAttribute("nosoundhardware").AsYesNo(); @@ -638,9 +638,9 @@ namespace SabreTools.Serialization.Readers { var obj = new Feature(); - obj.Type = reader.GetAttribute("type"); - obj.Status = reader.GetAttribute("status"); - obj.Overall = reader.GetAttribute("overall"); + obj.Type = reader.GetAttribute("type").AsFeatureType(); + obj.Status = reader.GetAttribute("status").AsFeatureStatus(); + obj.Overall = reader.GetAttribute("overall").AsFeatureStatus(); return obj; } @@ -1052,7 +1052,7 @@ namespace SabreTools.Serialization.Readers obj.Merge = reader.GetAttribute("merge"); obj.Region = reader.GetAttribute("region"); obj.Offset = reader.GetAttribute("offset"); - obj.Status = reader.GetAttribute("status"); + obj.Status = reader.GetAttribute("status").AsItemStatus(); obj.Optional = reader.GetAttribute("optional").AsYesNo(); obj.Dispose = reader.GetAttribute("dispose").AsYesNo(); obj.SoundOnly = reader.GetAttribute("soundonly").AsYesNo(); @@ -1145,7 +1145,7 @@ namespace SabreTools.Serialization.Readers obj.Tag = reader.GetAttribute("tag"); obj.Name = reader.GetAttribute("name"); - obj.Status = reader.GetAttribute("status"); + obj.Status = reader.GetAttribute("status").AsSoftwareListStatus(); obj.Filter = reader.GetAttribute("filter"); return obj; @@ -1174,7 +1174,7 @@ namespace SabreTools.Serialization.Readers { var obj = new Video(); - obj.Screen = reader.GetAttribute("screen"); + obj.Screen = reader.GetAttribute("screen").AsDisplayType(); obj.Orientation = reader.GetAttribute("orientation"); obj.Width = reader.GetAttribute("width"); obj.Height = reader.GetAttribute("height"); diff --git a/SabreTools.Serialization.Readers/Logiqx.cs b/SabreTools.Serialization.Readers/Logiqx.cs index 07ac5fae..37c05445 100644 --- a/SabreTools.Serialization.Readers/Logiqx.cs +++ b/SabreTools.Serialization.Readers/Logiqx.cs @@ -136,9 +136,9 @@ namespace SabreTools.Serialization.Readers var obj = new Data.Models.Logiqx.ClrMamePro(); obj.Header = reader.GetAttribute("header"); - obj.ForceMerging = reader.GetAttribute("forcemerging"); - obj.ForceNodump = reader.GetAttribute("forcenodump"); - obj.ForcePacking = reader.GetAttribute("forcepacking"); + obj.ForceMerging = reader.GetAttribute("forcemerging").AsMergingFlag(); + obj.ForceNodump = reader.GetAttribute("forcenodump").AsNodumpFlag(); + obj.ForcePacking = reader.GetAttribute("forcepacking").AsPackingFlag(); return obj; } @@ -278,9 +278,9 @@ namespace SabreTools.Serialization.Readers var obj = new Data.Models.Logiqx.RomCenter(); obj.Plugin = reader.GetAttribute("plugin"); - obj.RomMode = reader.GetAttribute("rommode"); - obj.BiosMode = reader.GetAttribute("biosmode"); - obj.SampleMode = reader.GetAttribute("samplemode"); + obj.RomMode = reader.GetAttribute("rommode").AsMergingFlag(); + obj.BiosMode = reader.GetAttribute("biosmode").AsMergingFlag(); + obj.SampleMode = reader.GetAttribute("samplemode").AsMergingFlag(); obj.LockRomMode = reader.GetAttribute("lockrommode").AsYesNo(); obj.LockBiosMode = reader.GetAttribute("lockbiosmode").AsYesNo(); obj.LockSampleMode = reader.GetAttribute("locksamplemode").AsYesNo(); @@ -403,7 +403,7 @@ namespace SabreTools.Serialization.Readers obj.MD5 = reader.GetAttribute("md5"); obj.SHA1 = reader.GetAttribute("sha1"); obj.Merge = reader.GetAttribute("merge"); - obj.Status = reader.GetAttribute("status"); + obj.Status = reader.GetAttribute("status").AsItemStatus(); obj.Region = reader.GetAttribute("region"); return obj; @@ -418,10 +418,10 @@ namespace SabreTools.Serialization.Readers { var obj = new Driver(); - obj.Status = reader.GetAttribute("status"); - obj.Emulation = reader.GetAttribute("emulation"); - obj.Cocktail = reader.GetAttribute("cocktail"); - obj.SaveState = reader.GetAttribute("savestate"); + obj.Status = reader.GetAttribute("status").AsSupportStatus(); + obj.Emulation = reader.GetAttribute("emulation").AsSupportStatus(); + obj.Cocktail = reader.GetAttribute("cocktail").AsSupportStatus(); + obj.SaveState = reader.GetAttribute("savestate").AsSupported(); obj.RequiresArtwork = reader.GetAttribute("requiresartwork").AsYesNo(); obj.Unofficial = reader.GetAttribute("unofficial").AsYesNo(); obj.NoSoundHardware = reader.GetAttribute("nosoundhardware").AsYesNo(); @@ -706,7 +706,7 @@ namespace SabreTools.Serialization.Readers obj.xxHash364 = reader.GetAttribute("xxh3_64"); obj.xxHash3128 = reader.GetAttribute("xxh3_128"); obj.Merge = reader.GetAttribute("merge"); - obj.Status = reader.GetAttribute("status"); + obj.Status = reader.GetAttribute("status").AsItemStatus(); obj.Serial = reader.GetAttribute("serial"); obj.Header = reader.GetAttribute("header"); obj.Date = reader.GetAttribute("date"); @@ -741,7 +741,7 @@ namespace SabreTools.Serialization.Readers obj.Tag = reader.GetAttribute("tag"); obj.Name = reader.GetAttribute("name"); - obj.Status = reader.GetAttribute("status"); + obj.Status = reader.GetAttribute("status").AsSoftwareListStatus(); obj.Filter = reader.GetAttribute("filter"); return obj; diff --git a/SabreTools.Serialization.Readers/M1.cs b/SabreTools.Serialization.Readers/M1.cs index d578edcd..efc59aed 100644 --- a/SabreTools.Serialization.Readers/M1.cs +++ b/SabreTools.Serialization.Readers/M1.cs @@ -187,7 +187,7 @@ namespace SabreTools.Serialization.Readers obj.Name = reader.GetAttribute("name"); obj.Tag = reader.GetAttribute("tag"); - obj.Type = reader.GetAttribute("type"); + obj.Type = reader.GetAttribute("type").AsChipType(); obj.SoundOnly = reader.GetAttribute("soundonly").AsYesNo(); obj.Clock = reader.GetAttribute("clock"); @@ -205,7 +205,7 @@ namespace SabreTools.Serialization.Readers obj.Tag = reader.GetAttribute("tag"); obj.Mask = reader.GetAttribute("mask"); - obj.Relation = reader.GetAttribute("relation"); + obj.Relation = reader.GetAttribute("relation").AsRelation(); obj.Value = reader.GetAttribute("value"); return obj; @@ -338,7 +338,7 @@ namespace SabreTools.Serialization.Readers { var obj = new Control(); - obj.Type = reader.GetAttribute("type"); + obj.Type = reader.GetAttribute("type").AsControlType(); obj.Player = reader.GetAttribute("player"); obj.Buttons = reader.GetAttribute("buttons"); obj.ReqButtons = reader.GetAttribute("reqbuttons"); @@ -363,7 +363,7 @@ namespace SabreTools.Serialization.Readers { var obj = new Device(); - obj.Type = reader.GetAttribute("type"); + obj.Type = reader.GetAttribute("type").AsDeviceType(); obj.Tag = reader.GetAttribute("tag"); obj.FixedImage = reader.GetAttribute("fixed_image"); obj.Mandatory = reader.GetAttribute("mandatory"); @@ -556,7 +556,7 @@ namespace SabreTools.Serialization.Readers obj.Region = reader.GetAttribute("region"); obj.Index = reader.GetAttribute("index"); obj.Writable = reader.GetAttribute("writable").AsYesNo(); - obj.Status = reader.GetAttribute("status"); + obj.Status = reader.GetAttribute("status").AsItemStatus(); obj.Optional = reader.GetAttribute("optional").AsYesNo(); return obj; @@ -572,7 +572,7 @@ namespace SabreTools.Serialization.Readers var obj = new Display(); obj.Tag = reader.GetAttribute("tag"); - obj.Type = reader.GetAttribute("type"); + obj.Type = reader.GetAttribute("type").AsDisplayType(); obj.Rotate = reader.GetAttribute("rotate"); obj.FlipX = reader.GetAttribute("flipx").AsYesNo(); obj.Width = reader.GetAttribute("width"); @@ -598,13 +598,13 @@ namespace SabreTools.Serialization.Readers { var obj = new Driver(); - obj.Status = reader.GetAttribute("status"); - obj.Color = reader.GetAttribute("color"); - obj.Sound = reader.GetAttribute("sound"); + obj.Status = reader.GetAttribute("status").AsSupportStatus(); + obj.Color = reader.GetAttribute("color").AsSupportStatus(); + obj.Sound = reader.GetAttribute("sound").AsSupportStatus(); obj.PaletteSize = reader.GetAttribute("palettesize"); - obj.Emulation = reader.GetAttribute("emulation"); - obj.Cocktail = reader.GetAttribute("cocktail"); - obj.SaveState = reader.GetAttribute("savestate"); + obj.Emulation = reader.GetAttribute("emulation").AsSupportStatus(); + obj.Cocktail = reader.GetAttribute("cocktail").AsSupportStatus(); + obj.SaveState = reader.GetAttribute("savestate").AsSupported(); obj.RequiresArtwork = reader.GetAttribute("requiresartwork").AsYesNo(); obj.Unofficial = reader.GetAttribute("unofficial").AsYesNo(); obj.NoSoundHardware = reader.GetAttribute("nosoundhardware").AsYesNo(); @@ -636,9 +636,9 @@ namespace SabreTools.Serialization.Readers { var obj = new Feature(); - obj.Type = reader.GetAttribute("type"); - obj.Status = reader.GetAttribute("status"); - obj.Overall = reader.GetAttribute("overall"); + obj.Type = reader.GetAttribute("type").AsFeatureType(); + obj.Status = reader.GetAttribute("status").AsFeatureStatus(); + obj.Overall = reader.GetAttribute("overall").AsFeatureStatus(); return obj; } @@ -1050,7 +1050,7 @@ namespace SabreTools.Serialization.Readers obj.Merge = reader.GetAttribute("merge"); obj.Region = reader.GetAttribute("region"); obj.Offset = reader.GetAttribute("offset"); - obj.Status = reader.GetAttribute("status"); + obj.Status = reader.GetAttribute("status").AsItemStatus(); obj.Optional = reader.GetAttribute("optional").AsYesNo(); obj.Dispose = reader.GetAttribute("dispose").AsYesNo(); obj.SoundOnly = reader.GetAttribute("soundonly").AsYesNo(); @@ -1143,7 +1143,7 @@ namespace SabreTools.Serialization.Readers obj.Tag = reader.GetAttribute("tag"); obj.Name = reader.GetAttribute("name"); - obj.Status = reader.GetAttribute("status"); + obj.Status = reader.GetAttribute("status").AsSoftwareListStatus(); obj.Filter = reader.GetAttribute("filter"); return obj; @@ -1172,7 +1172,7 @@ namespace SabreTools.Serialization.Readers { var obj = new Video(); - obj.Screen = reader.GetAttribute("screen"); + obj.Screen = reader.GetAttribute("screen").AsDisplayType(); obj.Orientation = reader.GetAttribute("orientation"); obj.Width = reader.GetAttribute("width"); obj.Height = reader.GetAttribute("height"); diff --git a/SabreTools.Serialization.Readers/Mess.cs b/SabreTools.Serialization.Readers/Mess.cs index 3549b4b3..bf568a0e 100644 --- a/SabreTools.Serialization.Readers/Mess.cs +++ b/SabreTools.Serialization.Readers/Mess.cs @@ -187,7 +187,7 @@ namespace SabreTools.Serialization.Readers obj.Name = reader.GetAttribute("name"); obj.Tag = reader.GetAttribute("tag"); - obj.Type = reader.GetAttribute("type"); + obj.Type = reader.GetAttribute("type").AsChipType(); obj.SoundOnly = reader.GetAttribute("soundonly").AsYesNo(); obj.Clock = reader.GetAttribute("clock"); @@ -205,7 +205,7 @@ namespace SabreTools.Serialization.Readers obj.Tag = reader.GetAttribute("tag"); obj.Mask = reader.GetAttribute("mask"); - obj.Relation = reader.GetAttribute("relation"); + obj.Relation = reader.GetAttribute("relation").AsRelation(); obj.Value = reader.GetAttribute("value"); return obj; @@ -338,7 +338,7 @@ namespace SabreTools.Serialization.Readers { var obj = new Control(); - obj.Type = reader.GetAttribute("type"); + obj.Type = reader.GetAttribute("type").AsControlType(); obj.Player = reader.GetAttribute("player"); obj.Buttons = reader.GetAttribute("buttons"); obj.ReqButtons = reader.GetAttribute("reqbuttons"); @@ -363,7 +363,7 @@ namespace SabreTools.Serialization.Readers { var obj = new Device(); - obj.Type = reader.GetAttribute("type"); + obj.Type = reader.GetAttribute("type").AsDeviceType(); obj.Tag = reader.GetAttribute("tag"); obj.FixedImage = reader.GetAttribute("fixed_image"); obj.Mandatory = reader.GetAttribute("mandatory"); @@ -556,7 +556,7 @@ namespace SabreTools.Serialization.Readers obj.Region = reader.GetAttribute("region"); obj.Index = reader.GetAttribute("index"); obj.Writable = reader.GetAttribute("writable").AsYesNo(); - obj.Status = reader.GetAttribute("status"); + obj.Status = reader.GetAttribute("status").AsItemStatus(); obj.Optional = reader.GetAttribute("optional").AsYesNo(); return obj; @@ -572,7 +572,7 @@ namespace SabreTools.Serialization.Readers var obj = new Display(); obj.Tag = reader.GetAttribute("tag"); - obj.Type = reader.GetAttribute("type"); + obj.Type = reader.GetAttribute("type").AsDisplayType(); obj.Rotate = reader.GetAttribute("rotate"); obj.FlipX = reader.GetAttribute("flipx").AsYesNo(); obj.Width = reader.GetAttribute("width"); @@ -598,13 +598,13 @@ namespace SabreTools.Serialization.Readers { var obj = new Driver(); - obj.Status = reader.GetAttribute("status"); - obj.Color = reader.GetAttribute("color"); - obj.Sound = reader.GetAttribute("sound"); + obj.Status = reader.GetAttribute("status").AsSupportStatus(); + obj.Color = reader.GetAttribute("color").AsSupportStatus(); + obj.Sound = reader.GetAttribute("sound").AsSupportStatus(); obj.PaletteSize = reader.GetAttribute("palettesize"); - obj.Emulation = reader.GetAttribute("emulation"); - obj.Cocktail = reader.GetAttribute("cocktail"); - obj.SaveState = reader.GetAttribute("savestate"); + obj.Emulation = reader.GetAttribute("emulation").AsSupportStatus(); + obj.Cocktail = reader.GetAttribute("cocktail").AsSupportStatus(); + obj.SaveState = reader.GetAttribute("savestate").AsSupported(); obj.RequiresArtwork = reader.GetAttribute("requiresartwork").AsYesNo(); obj.Unofficial = reader.GetAttribute("unofficial").AsYesNo(); obj.NoSoundHardware = reader.GetAttribute("nosoundhardware").AsYesNo(); @@ -636,9 +636,9 @@ namespace SabreTools.Serialization.Readers { var obj = new Feature(); - obj.Type = reader.GetAttribute("type"); - obj.Status = reader.GetAttribute("status"); - obj.Overall = reader.GetAttribute("overall"); + obj.Type = reader.GetAttribute("type").AsFeatureType(); + obj.Status = reader.GetAttribute("status").AsFeatureStatus(); + obj.Overall = reader.GetAttribute("overall").AsFeatureStatus(); return obj; } @@ -1050,7 +1050,7 @@ namespace SabreTools.Serialization.Readers obj.Merge = reader.GetAttribute("merge"); obj.Region = reader.GetAttribute("region"); obj.Offset = reader.GetAttribute("offset"); - obj.Status = reader.GetAttribute("status"); + obj.Status = reader.GetAttribute("status").AsItemStatus(); obj.Optional = reader.GetAttribute("optional").AsYesNo(); obj.Dispose = reader.GetAttribute("dispose").AsYesNo(); obj.SoundOnly = reader.GetAttribute("soundonly").AsYesNo(); @@ -1143,7 +1143,7 @@ namespace SabreTools.Serialization.Readers obj.Tag = reader.GetAttribute("tag"); obj.Name = reader.GetAttribute("name"); - obj.Status = reader.GetAttribute("status"); + obj.Status = reader.GetAttribute("status").AsSoftwareListStatus(); obj.Filter = reader.GetAttribute("filter"); return obj; @@ -1172,7 +1172,7 @@ namespace SabreTools.Serialization.Readers { var obj = new Video(); - obj.Screen = reader.GetAttribute("screen"); + obj.Screen = reader.GetAttribute("screen").AsDisplayType(); obj.Orientation = reader.GetAttribute("orientation"); obj.Width = reader.GetAttribute("width"); obj.Height = reader.GetAttribute("height"); diff --git a/SabreTools.Serialization.Readers/SeparatedValue.cs b/SabreTools.Serialization.Readers/SeparatedValue.cs index 7f97de47..a4b27ce8 100644 --- a/SabreTools.Serialization.Readers/SeparatedValue.cs +++ b/SabreTools.Serialization.Readers/SeparatedValue.cs @@ -1,6 +1,7 @@ using System.Collections.Generic; using System.IO; using System.Text; +using SabreTools.Data.Extensions; using SabreTools.Data.Models.SeparatedValue; using SabreTools.Text.SeparatedValue; @@ -126,7 +127,7 @@ namespace SabreTools.Serialization.Readers MD5 = reader.Line[10], SHA1 = reader.Line[11], SHA256 = reader.Line[12], - Status = reader.Line[13], + Status = reader.Line[13].AsItemStatus(), }; } else @@ -149,7 +150,7 @@ namespace SabreTools.Serialization.Readers SHA384 = reader.Line[13], SHA512 = reader.Line[14], SpamSum = reader.Line[15], - Status = reader.Line[16], + Status = reader.Line[16].AsItemStatus(), }; } diff --git a/SabreTools.Serialization.Readers/SoftwareList.cs b/SabreTools.Serialization.Readers/SoftwareList.cs index 5a2fe176..cf3db223 100644 --- a/SabreTools.Serialization.Readers/SoftwareList.cs +++ b/SabreTools.Serialization.Readers/SoftwareList.cs @@ -127,7 +127,7 @@ namespace SabreTools.Serialization.Readers obj.Name = reader.GetAttribute("name"); obj.Size = reader.GetAttribute("size"); obj.Width = reader.GetAttribute("width"); - obj.Endianness = reader.GetAttribute("endianness"); + obj.Endianness = reader.GetAttribute("endianness").AsEndianness(); List roms = []; @@ -242,7 +242,7 @@ namespace SabreTools.Serialization.Readers obj.Name = reader.GetAttribute("name"); obj.MD5 = reader.GetAttribute("md5"); obj.SHA1 = reader.GetAttribute("sha1"); - obj.Status = reader.GetAttribute("status"); + obj.Status = reader.GetAttribute("status").AsItemStatus(); obj.Writeable = reader.GetAttribute("writable").AsYesNo(); return obj; @@ -419,8 +419,8 @@ namespace SabreTools.Serialization.Readers obj.SHA1 = reader.GetAttribute("sha1"); obj.Offset = reader.GetAttribute("offset"); obj.Value = reader.GetAttribute("value"); - obj.Status = reader.GetAttribute("status"); - obj.LoadFlag = reader.GetAttribute("loadflag"); + obj.Status = reader.GetAttribute("status").AsItemStatus(); + obj.LoadFlag = reader.GetAttribute("loadflag").AsLoadFlag(); return obj; } @@ -451,7 +451,7 @@ namespace SabreTools.Serialization.Readers obj.Name = reader.GetAttribute("name"); obj.CloneOf = reader.GetAttribute("cloneof"); - obj.Supported = reader.GetAttribute("supported"); + obj.Supported = reader.GetAttribute("supported")?.AsSupported(); List infos = []; List sharedFeats = []; diff --git a/SabreTools.Serialization.Writers/ClrMamePro.cs b/SabreTools.Serialization.Writers/ClrMamePro.cs index 8f3341d3..f56bddbc 100644 --- a/SabreTools.Serialization.Writers/ClrMamePro.cs +++ b/SabreTools.Serialization.Writers/ClrMamePro.cs @@ -111,9 +111,11 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalStandalone("comment", header.Comment); writer.WriteOptionalStandalone("header", header.Header); writer.WriteOptionalStandalone("type", header.Type); - writer.WriteOptionalStandalone("forcemerging", header.ForceMerging); + if (header.ForceMerging != Data.Models.Metadata.MergingFlag.None) + writer.WriteOptionalStandalone("forcemerging", header.ForceMerging.AsStringValue()); writer.WriteOptionalStandalone("forcezipping", header.ForceZipping.FromYesNo()); - writer.WriteOptionalStandalone("forcepacking", header.ForcePacking); + if (header.ForcePacking != Data.Models.Metadata.PackingFlag.None) + writer.WriteOptionalStandalone("forcepacking", header.ForcePacking.AsStringValue()); writer.WriteEndElement(); // clrmamepro writer.Flush(); @@ -276,7 +278,7 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalAttributeString("xxh3_64", rom.xxHash364); writer.WriteOptionalAttributeString("xxh3_128", rom.xxHash3128); writer.WriteOptionalAttributeString("merge", rom.Merge); - writer.WriteOptionalAttributeString("status", rom.Status); + writer.WriteOptionalAttributeString("status", rom.Status?.AsStringValue()); writer.WriteOptionalAttributeString("region", rom.Region); writer.WriteOptionalAttributeString("flags", rom.Flags); writer.WriteOptionalAttributeString("offs", rom.Offs); @@ -307,7 +309,7 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalAttributeString("md5", disk.MD5); writer.WriteOptionalAttributeString("sha1", disk.SHA1); writer.WriteOptionalAttributeString("merge", disk.Merge); - writer.WriteOptionalAttributeString("status", disk.Status); + writer.WriteOptionalAttributeString("status", disk.Status?.AsStringValue()); writer.WriteOptionalAttributeString("flags", disk.Flags); writer.WriteEndElement(); // disk } @@ -388,7 +390,7 @@ namespace SabreTools.Serialization.Writers foreach (var chip in chips) { writer.WriteStartElement("chip"); - writer.WriteRequiredAttributeString("type", chip.Type, throwOnError: true); + writer.WriteRequiredAttributeString("type", chip.Type?.AsStringValue(), throwOnError: true); writer.WriteRequiredAttributeString("name", chip.Name, throwOnError: true); writer.WriteOptionalAttributeString("flags", chip.Flags); writer.WriteOptionalAttributeString("clock", chip.Clock); @@ -410,7 +412,7 @@ namespace SabreTools.Serialization.Writers foreach (var video in videos) { writer.WriteStartElement("video"); - writer.WriteRequiredAttributeString("screen", video.Screen, throwOnError: true); + writer.WriteRequiredAttributeString("screen", video.Screen?.AsStringValue(), throwOnError: true); writer.WriteRequiredAttributeString("orientation", video.Orientation, throwOnError: true); writer.WriteOptionalAttributeString("x", video.X); writer.WriteOptionalAttributeString("y", video.Y); @@ -495,11 +497,11 @@ namespace SabreTools.Serialization.Writers return; writer.WriteStartElement("driver"); - writer.WriteRequiredAttributeString("status", driver.Status, throwOnError: true); - writer.WriteOptionalAttributeString("color", driver.Color); // TODO: Probably actually required - writer.WriteOptionalAttributeString("sound", driver.Sound); // TODO: Probably actually required + writer.WriteRequiredAttributeString("status", driver.Status?.AsStringValue(), throwOnError: true); + writer.WriteOptionalAttributeString("color", driver.Color?.AsStringValue()); // TODO: Probably actually required + writer.WriteOptionalAttributeString("sound", driver.Sound?.AsStringValue()); // TODO: Probably actually required writer.WriteOptionalAttributeString("palettesize", driver.PaletteSize); - writer.WriteOptionalAttributeString("blit", driver.Blit); + writer.WriteOptionalAttributeString("blit", driver.Blit?.AsStringValue()); writer.WriteEndElement(); // driver } diff --git a/SabreTools.Serialization.Writers/Listxml.cs b/SabreTools.Serialization.Writers/Listxml.cs index 9d7792f8..01c8313e 100644 --- a/SabreTools.Serialization.Writers/Listxml.cs +++ b/SabreTools.Serialization.Writers/Listxml.cs @@ -125,7 +125,7 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("name", obj.Name); writer.WriteOptionalAttributeString("tag", obj.Tag); - writer.WriteRequiredAttributeString("type", obj.Type); + writer.WriteRequiredAttributeString("type", obj.Type?.AsStringValue()); writer.WriteOptionalAttributeString("soundonly", obj.SoundOnly.FromYesNo()); writer.WriteOptionalAttributeString("clock", obj.Clock); @@ -143,7 +143,7 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("tag", obj.Tag); writer.WriteRequiredAttributeString("mask", obj.Mask); - writer.WriteRequiredAttributeString("relation", obj.Relation); + writer.WriteRequiredAttributeString("relation", obj.Relation?.AsStringValue()); writer.WriteRequiredAttributeString("value", obj.Value); writer.WriteEndElement(); @@ -228,7 +228,7 @@ namespace SabreTools.Serialization.Writers { writer.WriteStartElement("control"); - writer.WriteRequiredAttributeString("type", obj.Type); + writer.WriteRequiredAttributeString("type", obj.Type?.AsStringValue()); writer.WriteOptionalAttributeString("player", obj.Player); writer.WriteOptionalAttributeString("buttons", obj.Buttons); writer.WriteOptionalAttributeString("reqbuttons", obj.ReqButtons); @@ -253,7 +253,7 @@ namespace SabreTools.Serialization.Writers { writer.WriteStartElement("device"); - writer.WriteRequiredAttributeString("type", obj.Type); + writer.WriteRequiredAttributeString("type", obj.Type?.AsStringValue()); writer.WriteOptionalAttributeString("tag", obj.Tag); writer.WriteOptionalAttributeString("fixed_image", obj.FixedImage); writer.WriteOptionalAttributeString("mandatory", obj.Mandatory); @@ -373,7 +373,7 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalAttributeString("region", obj.Region); writer.WriteOptionalAttributeString("index", obj.Index); writer.WriteOptionalAttributeString("writable", obj.Writable.FromYesNo()); - writer.WriteOptionalAttributeString("status", obj.Status); + writer.WriteOptionalAttributeString("status", obj.Status?.AsStringValue()); writer.WriteOptionalAttributeString("optional", obj.Optional.FromYesNo()); writer.WriteEndElement(); @@ -389,7 +389,7 @@ namespace SabreTools.Serialization.Writers writer.WriteStartElement("display"); writer.WriteOptionalAttributeString("tag", obj.Tag); - writer.WriteRequiredAttributeString("type", obj.Type); + writer.WriteRequiredAttributeString("type", obj.Type?.AsStringValue()); writer.WriteOptionalAttributeString("rotate", obj.Rotate); writer.WriteOptionalAttributeString("flipx", obj.FlipX.FromYesNo()); writer.WriteOptionalAttributeString("width", obj.Width); @@ -415,13 +415,13 @@ namespace SabreTools.Serialization.Writers { writer.WriteStartElement("driver"); - writer.WriteRequiredAttributeString("status", obj.Status); - writer.WriteOptionalAttributeString("color", obj.Color); - writer.WriteOptionalAttributeString("sound", obj.Sound); + writer.WriteRequiredAttributeString("status", obj.Status?.AsStringValue()); + writer.WriteOptionalAttributeString("color", obj.Color?.AsStringValue()); + writer.WriteOptionalAttributeString("sound", obj.Sound?.AsStringValue()); writer.WriteOptionalAttributeString("palettesize", obj.PaletteSize); - writer.WriteRequiredAttributeString("emulation", obj.Emulation); - writer.WriteRequiredAttributeString("cocktail", obj.Cocktail); - writer.WriteRequiredAttributeString("savestate", obj.SaveState); + writer.WriteRequiredAttributeString("emulation", obj.Emulation?.AsStringValue()); + writer.WriteRequiredAttributeString("cocktail", obj.Cocktail?.AsStringValue()); + writer.WriteRequiredAttributeString("savestate", obj.SaveState?.AsStringValue()); writer.WriteOptionalAttributeString("requiresartwork", obj.RequiresArtwork.FromYesNo()); writer.WriteOptionalAttributeString("unofficial", obj.Unofficial.FromYesNo()); writer.WriteOptionalAttributeString("nosoundhardware", obj.NoSoundHardware.FromYesNo()); @@ -453,9 +453,9 @@ namespace SabreTools.Serialization.Writers { writer.WriteStartElement("feature"); - writer.WriteRequiredAttributeString("type", obj.Type); - writer.WriteOptionalAttributeString("status", obj.Status); - writer.WriteOptionalAttributeString("overall", obj.Overall); + writer.WriteRequiredAttributeString("type", obj.Type?.AsStringValue()); + writer.WriteOptionalAttributeString("status", obj.Status?.AsStringValue()); + writer.WriteOptionalAttributeString("overall", obj.Overall?.AsStringValue()); writer.WriteEndElement(); } @@ -736,7 +736,7 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalAttributeString("merge", obj.Merge); writer.WriteOptionalAttributeString("region", obj.Region); writer.WriteOptionalAttributeString("offset", obj.Offset); - writer.WriteOptionalAttributeString("status", obj.Status); + writer.WriteOptionalAttributeString("status", obj.Status?.AsStringValue()); writer.WriteOptionalAttributeString("optional", obj.Optional.FromYesNo()); writer.WriteOptionalAttributeString("dispose", obj.Dispose.FromYesNo()); writer.WriteOptionalAttributeString("soundonly", obj.SoundOnly.FromYesNo()); @@ -807,7 +807,7 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("tag", obj.Tag); writer.WriteRequiredAttributeString("name", obj.Name); - writer.WriteRequiredAttributeString("status", obj.Status); + writer.WriteRequiredAttributeString("status", obj.Status?.AsStringValue()); writer.WriteOptionalAttributeString("filter", obj.Filter); writer.WriteEndElement(); @@ -836,7 +836,7 @@ namespace SabreTools.Serialization.Writers { writer.WriteStartElement("video"); - writer.WriteRequiredAttributeString("screen", obj.Screen); + writer.WriteRequiredAttributeString("screen", obj.Screen?.AsStringValue()); writer.WriteRequiredAttributeString("orientation", obj.Orientation); writer.WriteOptionalAttributeString("width", obj.Width); writer.WriteOptionalAttributeString("height", obj.Height); diff --git a/SabreTools.Serialization.Writers/Logiqx.cs b/SabreTools.Serialization.Writers/Logiqx.cs index 3211c35e..c02d18a5 100644 --- a/SabreTools.Serialization.Writers/Logiqx.cs +++ b/SabreTools.Serialization.Writers/Logiqx.cs @@ -77,7 +77,7 @@ namespace SabreTools.Serialization.Writers return stream; } - /// + /// /// Write a Datafile to an XmlTextWriter /// /// Datafile to write @@ -126,9 +126,12 @@ namespace SabreTools.Serialization.Writers writer.WriteStartElement("clrmamepro"); writer.WriteOptionalAttributeString("header", obj.Header); - writer.WriteOptionalAttributeString("forcemerging", obj.ForceMerging); - writer.WriteOptionalAttributeString("forcenodump", obj.ForceNodump); - writer.WriteOptionalAttributeString("forcepacking", obj.ForcePacking); + if (obj.ForceMerging != Data.Models.Metadata.MergingFlag.None) + writer.WriteOptionalAttributeString("forcemerging", obj.ForceMerging.AsStringValue()); + if (obj.ForceNodump != Data.Models.Metadata.NodumpFlag.None) + writer.WriteOptionalAttributeString("forcenodump", obj.ForceNodump.AsStringValue()); + if (obj.ForcePacking != Data.Models.Metadata.PackingFlag.None) + writer.WriteOptionalAttributeString("forcepacking", obj.ForcePacking.AsStringValue()); writer.WriteEndElement(); } @@ -175,9 +178,13 @@ namespace SabreTools.Serialization.Writers writer.WriteStartElement("romcenter"); writer.WriteOptionalAttributeString("plugin", obj.Plugin); - writer.WriteOptionalAttributeString("rommode", obj.RomMode); - writer.WriteOptionalAttributeString("biosmode", obj.BiosMode); - writer.WriteOptionalAttributeString("samplemode", obj.SampleMode); + + if (obj.RomMode != Data.Models.Metadata.MergingFlag.None) + writer.WriteOptionalAttributeString("rommode", obj.RomMode.AsStringValue()); + if (obj.BiosMode != Data.Models.Metadata.MergingFlag.None) + writer.WriteOptionalAttributeString("biosmode", obj.BiosMode.AsStringValue()); + if (obj.SampleMode != Data.Models.Metadata.MergingFlag.None) + writer.WriteOptionalAttributeString("samplemode", obj.SampleMode.AsStringValue()); writer.WriteOptionalAttributeString("lockrommode", obj.LockRomMode.FromYesNo()); writer.WriteOptionalAttributeString("lockbiosmode", obj.LockBiosMode.FromYesNo()); writer.WriteOptionalAttributeString("locksamplemode", obj.LockSampleMode.FromYesNo()); @@ -276,7 +283,7 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalAttributeString("md5", obj.MD5); writer.WriteOptionalAttributeString("sha1", obj.SHA1); writer.WriteOptionalAttributeString("merge", obj.Merge); - writer.WriteOptionalAttributeString("status", obj.Status); + writer.WriteOptionalAttributeString("status", obj.Status?.AsStringValue()); writer.WriteOptionalAttributeString("region", obj.Region); writer.WriteEndElement(); @@ -291,10 +298,10 @@ namespace SabreTools.Serialization.Writers { writer.WriteStartElement("driver"); - writer.WriteRequiredAttributeString("status", obj.Status); - writer.WriteRequiredAttributeString("emulation", obj.Emulation); - writer.WriteRequiredAttributeString("cocktail", obj.Cocktail); - writer.WriteRequiredAttributeString("savestate", obj.SaveState); + writer.WriteRequiredAttributeString("status", obj.Status?.AsStringValue()); + writer.WriteRequiredAttributeString("emulation", obj.Emulation?.AsStringValue()); + writer.WriteRequiredAttributeString("cocktail", obj.Cocktail?.AsStringValue()); + writer.WriteRequiredAttributeString("savestate", obj.SaveState?.AsStringValue()); writer.WriteOptionalAttributeString("requiresartwork", obj.RequiresArtwork.FromYesNo()); writer.WriteOptionalAttributeString("unofficial", obj.Unofficial.FromYesNo()); writer.WriteOptionalAttributeString("nosoundhardware", obj.NoSoundHardware.FromYesNo()); @@ -499,7 +506,7 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalAttributeString("xxh3_64", obj.xxHash364); writer.WriteOptionalAttributeString("xxh3_128", obj.xxHash3128); writer.WriteOptionalAttributeString("merge", obj.Merge); - writer.WriteOptionalAttributeString("status", obj.Status); + writer.WriteOptionalAttributeString("status", obj.Status?.AsStringValue()); writer.WriteOptionalAttributeString("serial", obj.Serial); writer.WriteOptionalAttributeString("header", obj.Header); writer.WriteOptionalAttributeString("date", obj.Date); @@ -534,7 +541,7 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("tag", obj.Tag); writer.WriteRequiredAttributeString("name", obj.Name); - writer.WriteRequiredAttributeString("status", obj.Status); + writer.WriteRequiredAttributeString("status", obj.Status?.AsStringValue()); writer.WriteOptionalAttributeString("filter", obj.Filter); writer.WriteEndElement(); diff --git a/SabreTools.Serialization.Writers/M1.cs b/SabreTools.Serialization.Writers/M1.cs index d427f936..b9fcdb21 100644 --- a/SabreTools.Serialization.Writers/M1.cs +++ b/SabreTools.Serialization.Writers/M1.cs @@ -123,7 +123,7 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("name", obj.Name); writer.WriteOptionalAttributeString("tag", obj.Tag); - writer.WriteRequiredAttributeString("type", obj.Type); + writer.WriteRequiredAttributeString("type", obj.Type?.AsStringValue()); writer.WriteOptionalAttributeString("soundonly", obj.SoundOnly.FromYesNo()); writer.WriteOptionalAttributeString("clock", obj.Clock); @@ -141,7 +141,7 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("tag", obj.Tag); writer.WriteRequiredAttributeString("mask", obj.Mask); - writer.WriteRequiredAttributeString("relation", obj.Relation); + writer.WriteRequiredAttributeString("relation", obj.Relation?.AsStringValue()); writer.WriteRequiredAttributeString("value", obj.Value); writer.WriteEndElement(); @@ -226,7 +226,7 @@ namespace SabreTools.Serialization.Writers { writer.WriteStartElement("control"); - writer.WriteRequiredAttributeString("type", obj.Type); + writer.WriteRequiredAttributeString("type", obj.Type?.AsStringValue()); writer.WriteOptionalAttributeString("player", obj.Player); writer.WriteOptionalAttributeString("buttons", obj.Buttons); writer.WriteOptionalAttributeString("reqbuttons", obj.ReqButtons); @@ -251,7 +251,7 @@ namespace SabreTools.Serialization.Writers { writer.WriteStartElement("device"); - writer.WriteRequiredAttributeString("type", obj.Type); + writer.WriteRequiredAttributeString("type", obj.Type?.AsStringValue()); writer.WriteOptionalAttributeString("tag", obj.Tag); writer.WriteOptionalAttributeString("fixed_image", obj.FixedImage); writer.WriteOptionalAttributeString("mandatory", obj.Mandatory); @@ -371,7 +371,7 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalAttributeString("region", obj.Region); writer.WriteOptionalAttributeString("index", obj.Index); writer.WriteOptionalAttributeString("writable", obj.Writable.FromYesNo()); - writer.WriteOptionalAttributeString("status", obj.Status); + writer.WriteOptionalAttributeString("status", obj.Status?.AsStringValue()); writer.WriteOptionalAttributeString("optional", obj.Optional.FromYesNo()); writer.WriteEndElement(); @@ -387,7 +387,7 @@ namespace SabreTools.Serialization.Writers writer.WriteStartElement("display"); writer.WriteOptionalAttributeString("tag", obj.Tag); - writer.WriteRequiredAttributeString("type", obj.Type); + writer.WriteRequiredAttributeString("type", obj.Type?.AsStringValue()); writer.WriteOptionalAttributeString("rotate", obj.Rotate); writer.WriteOptionalAttributeString("flipx", obj.FlipX.FromYesNo()); writer.WriteOptionalAttributeString("width", obj.Width); @@ -413,13 +413,13 @@ namespace SabreTools.Serialization.Writers { writer.WriteStartElement("driver"); - writer.WriteRequiredAttributeString("status", obj.Status); - writer.WriteOptionalAttributeString("color", obj.Color); - writer.WriteOptionalAttributeString("sound", obj.Sound); + writer.WriteRequiredAttributeString("status", obj.Status?.AsStringValue()); + writer.WriteOptionalAttributeString("color", obj.Color?.AsStringValue()); + writer.WriteOptionalAttributeString("sound", obj.Sound?.AsStringValue()); writer.WriteOptionalAttributeString("palettesize", obj.PaletteSize); - writer.WriteRequiredAttributeString("emulation", obj.Emulation); - writer.WriteRequiredAttributeString("cocktail", obj.Cocktail); - writer.WriteRequiredAttributeString("savestate", obj.SaveState); + writer.WriteRequiredAttributeString("emulation", obj.Emulation?.AsStringValue()); + writer.WriteRequiredAttributeString("cocktail", obj.Cocktail?.AsStringValue()); + writer.WriteRequiredAttributeString("savestate", obj.SaveState?.AsStringValue()); writer.WriteOptionalAttributeString("requiresartwork", obj.RequiresArtwork.FromYesNo()); writer.WriteOptionalAttributeString("unofficial", obj.Unofficial.FromYesNo()); writer.WriteOptionalAttributeString("nosoundhardware", obj.NoSoundHardware.FromYesNo()); @@ -451,9 +451,9 @@ namespace SabreTools.Serialization.Writers { writer.WriteStartElement("feature"); - writer.WriteRequiredAttributeString("type", obj.Type); - writer.WriteOptionalAttributeString("status", obj.Status); - writer.WriteOptionalAttributeString("overall", obj.Overall); + writer.WriteRequiredAttributeString("type", obj.Type?.AsStringValue()); + writer.WriteOptionalAttributeString("status", obj.Status?.AsStringValue()); + writer.WriteOptionalAttributeString("overall", obj.Overall?.AsStringValue()); writer.WriteEndElement(); } @@ -734,7 +734,7 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalAttributeString("merge", obj.Merge); writer.WriteOptionalAttributeString("region", obj.Region); writer.WriteOptionalAttributeString("offset", obj.Offset); - writer.WriteOptionalAttributeString("status", obj.Status); + writer.WriteOptionalAttributeString("status", obj.Status?.AsStringValue()); writer.WriteOptionalAttributeString("optional", obj.Optional.FromYesNo()); writer.WriteOptionalAttributeString("dispose", obj.Dispose.FromYesNo()); writer.WriteOptionalAttributeString("soundonly", obj.SoundOnly.FromYesNo()); @@ -805,7 +805,7 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("tag", obj.Tag); writer.WriteRequiredAttributeString("name", obj.Name); - writer.WriteRequiredAttributeString("status", obj.Status); + writer.WriteRequiredAttributeString("status", obj.Status?.AsStringValue()); writer.WriteOptionalAttributeString("filter", obj.Filter); writer.WriteEndElement(); @@ -834,7 +834,7 @@ namespace SabreTools.Serialization.Writers { writer.WriteStartElement("video"); - writer.WriteRequiredAttributeString("screen", obj.Screen); + writer.WriteRequiredAttributeString("screen", obj.Screen?.AsStringValue()); writer.WriteRequiredAttributeString("orientation", obj.Orientation); writer.WriteOptionalAttributeString("width", obj.Width); writer.WriteOptionalAttributeString("height", obj.Height); diff --git a/SabreTools.Serialization.Writers/Mess.cs b/SabreTools.Serialization.Writers/Mess.cs index dd4e6955..0a2e83c9 100644 --- a/SabreTools.Serialization.Writers/Mess.cs +++ b/SabreTools.Serialization.Writers/Mess.cs @@ -123,7 +123,7 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("name", obj.Name); writer.WriteOptionalAttributeString("tag", obj.Tag); - writer.WriteRequiredAttributeString("type", obj.Type); + writer.WriteRequiredAttributeString("type", obj.Type?.AsStringValue()); writer.WriteOptionalAttributeString("soundonly", obj.SoundOnly.FromYesNo()); writer.WriteOptionalAttributeString("clock", obj.Clock); @@ -141,7 +141,7 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("tag", obj.Tag); writer.WriteRequiredAttributeString("mask", obj.Mask); - writer.WriteRequiredAttributeString("relation", obj.Relation); + writer.WriteRequiredAttributeString("relation", obj.Relation?.AsStringValue()); writer.WriteRequiredAttributeString("value", obj.Value); writer.WriteEndElement(); @@ -226,7 +226,7 @@ namespace SabreTools.Serialization.Writers { writer.WriteStartElement("control"); - writer.WriteRequiredAttributeString("type", obj.Type); + writer.WriteRequiredAttributeString("type", obj.Type?.AsStringValue()); writer.WriteOptionalAttributeString("player", obj.Player); writer.WriteOptionalAttributeString("buttons", obj.Buttons); writer.WriteOptionalAttributeString("reqbuttons", obj.ReqButtons); @@ -251,7 +251,7 @@ namespace SabreTools.Serialization.Writers { writer.WriteStartElement("device"); - writer.WriteRequiredAttributeString("type", obj.Type); + writer.WriteRequiredAttributeString("type", obj.Type?.AsStringValue()); writer.WriteOptionalAttributeString("tag", obj.Tag); writer.WriteOptionalAttributeString("fixed_image", obj.FixedImage); writer.WriteOptionalAttributeString("mandatory", obj.Mandatory); @@ -371,7 +371,7 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalAttributeString("region", obj.Region); writer.WriteOptionalAttributeString("index", obj.Index); writer.WriteOptionalAttributeString("writable", obj.Writable.FromYesNo()); - writer.WriteOptionalAttributeString("status", obj.Status); + writer.WriteOptionalAttributeString("status", obj.Status?.AsStringValue()); writer.WriteOptionalAttributeString("optional", obj.Optional.FromYesNo()); writer.WriteEndElement(); @@ -387,7 +387,7 @@ namespace SabreTools.Serialization.Writers writer.WriteStartElement("display"); writer.WriteOptionalAttributeString("tag", obj.Tag); - writer.WriteRequiredAttributeString("type", obj.Type); + writer.WriteRequiredAttributeString("type", obj.Type?.AsStringValue()); writer.WriteOptionalAttributeString("rotate", obj.Rotate); writer.WriteOptionalAttributeString("flipx", obj.FlipX.FromYesNo()); writer.WriteOptionalAttributeString("width", obj.Width); @@ -413,13 +413,13 @@ namespace SabreTools.Serialization.Writers { writer.WriteStartElement("driver"); - writer.WriteRequiredAttributeString("status", obj.Status); - writer.WriteOptionalAttributeString("color", obj.Color); - writer.WriteOptionalAttributeString("sound", obj.Sound); + writer.WriteRequiredAttributeString("status", obj.Status?.AsStringValue()); + writer.WriteOptionalAttributeString("color", obj.Color?.AsStringValue()); + writer.WriteOptionalAttributeString("sound", obj.Sound?.AsStringValue()); writer.WriteOptionalAttributeString("palettesize", obj.PaletteSize); - writer.WriteRequiredAttributeString("emulation", obj.Emulation); - writer.WriteRequiredAttributeString("cocktail", obj.Cocktail); - writer.WriteRequiredAttributeString("savestate", obj.SaveState); + writer.WriteRequiredAttributeString("emulation", obj.Emulation?.AsStringValue()); + writer.WriteRequiredAttributeString("cocktail", obj.Cocktail?.AsStringValue()); + writer.WriteRequiredAttributeString("savestate", obj.SaveState?.AsStringValue()); writer.WriteOptionalAttributeString("requiresartwork", obj.RequiresArtwork.FromYesNo()); writer.WriteOptionalAttributeString("unofficial", obj.Unofficial.FromYesNo()); writer.WriteOptionalAttributeString("nosoundhardware", obj.NoSoundHardware.FromYesNo()); @@ -451,9 +451,9 @@ namespace SabreTools.Serialization.Writers { writer.WriteStartElement("feature"); - writer.WriteRequiredAttributeString("type", obj.Type); - writer.WriteOptionalAttributeString("status", obj.Status); - writer.WriteOptionalAttributeString("overall", obj.Overall); + writer.WriteRequiredAttributeString("type", obj.Type?.AsStringValue()); + writer.WriteOptionalAttributeString("status", obj.Status?.AsStringValue()); + writer.WriteOptionalAttributeString("overall", obj.Overall?.AsStringValue()); writer.WriteEndElement(); } @@ -734,7 +734,7 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalAttributeString("merge", obj.Merge); writer.WriteOptionalAttributeString("region", obj.Region); writer.WriteOptionalAttributeString("offset", obj.Offset); - writer.WriteOptionalAttributeString("status", obj.Status); + writer.WriteOptionalAttributeString("status", obj.Status?.AsStringValue()); writer.WriteOptionalAttributeString("optional", obj.Optional.FromYesNo()); writer.WriteOptionalAttributeString("dispose", obj.Dispose.FromYesNo()); writer.WriteOptionalAttributeString("soundonly", obj.SoundOnly.FromYesNo()); @@ -805,7 +805,7 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("tag", obj.Tag); writer.WriteRequiredAttributeString("name", obj.Name); - writer.WriteRequiredAttributeString("status", obj.Status); + writer.WriteRequiredAttributeString("status", obj.Status?.AsStringValue()); writer.WriteOptionalAttributeString("filter", obj.Filter); writer.WriteEndElement(); @@ -834,7 +834,7 @@ namespace SabreTools.Serialization.Writers { writer.WriteStartElement("video"); - writer.WriteRequiredAttributeString("screen", obj.Screen); + writer.WriteRequiredAttributeString("screen", obj.Screen?.AsStringValue()); writer.WriteRequiredAttributeString("orientation", obj.Orientation); writer.WriteOptionalAttributeString("width", obj.Width); writer.WriteOptionalAttributeString("height", obj.Height); diff --git a/SabreTools.Serialization.Writers/SeparatedValue.cs b/SabreTools.Serialization.Writers/SeparatedValue.cs index f4a96fc8..2f7a90b2 100644 --- a/SabreTools.Serialization.Writers/SeparatedValue.cs +++ b/SabreTools.Serialization.Writers/SeparatedValue.cs @@ -1,5 +1,6 @@ using System.IO; using System.Text; +using SabreTools.Data.Extensions; using SabreTools.Data.Models.SeparatedValue; using SabreTools.IO.Extensions; using SabreTools.Text.SeparatedValue; @@ -177,7 +178,7 @@ namespace SabreTools.Serialization.Writers row.SHA384, row.SHA512, row.SpamSum, - row.Status, + row.Status?.AsStringValue(), ]; } else @@ -197,7 +198,7 @@ namespace SabreTools.Serialization.Writers row.MD5, row.SHA1, row.SHA256, - row.Status, + row.Status?.AsStringValue(), ]; } diff --git a/SabreTools.Serialization.Writers/SoftwareList.cs b/SabreTools.Serialization.Writers/SoftwareList.cs index 9cd31522..57ef70c0 100644 --- a/SabreTools.Serialization.Writers/SoftwareList.cs +++ b/SabreTools.Serialization.Writers/SoftwareList.cs @@ -106,7 +106,7 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("name", obj.Name); writer.WriteRequiredAttributeString("size", obj.Size); writer.WriteOptionalAttributeString("width", obj.Width); - writer.WriteOptionalAttributeString("endianness", obj.Endianness); + writer.WriteOptionalAttributeString("endianness", obj.Endianness?.AsStringValue()); if (obj.Rom is not null && obj.Rom.Length > 0) { @@ -171,7 +171,7 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("name", obj.Name); writer.WriteOptionalAttributeString("md5", obj.MD5); writer.WriteOptionalAttributeString("sha1", obj.SHA1); - writer.WriteOptionalAttributeString("status", obj.Status); + writer.WriteOptionalAttributeString("status", obj.Status?.AsStringValue()); writer.WriteOptionalAttributeString("writable", obj.Writeable.FromYesNo()); writer.WriteEndElement(); @@ -292,8 +292,8 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalAttributeString("sha1", obj.SHA1); writer.WriteOptionalAttributeString("offset", obj.Offset); writer.WriteOptionalAttributeString("value", obj.Value); - writer.WriteOptionalAttributeString("status", obj.Status); - writer.WriteOptionalAttributeString("loadflag", obj.LoadFlag); + writer.WriteOptionalAttributeString("status", obj.Status?.AsStringValue()); + writer.WriteOptionalAttributeString("loadflag", obj.LoadFlag?.AsStringValue()); writer.WriteEndElement(); } @@ -324,7 +324,7 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("name", obj.Name); writer.WriteOptionalAttributeString("cloneof", obj.CloneOf); - writer.WriteOptionalAttributeString("supported", obj.Supported); + writer.WriteOptionalAttributeString("supported", obj.Supported?.AsStringValue()); writer.WriteRequiredElementString("description", obj.Description); writer.WriteRequiredElementString("year", obj.Year); From 3ef7b5860d0947bcc6af559edff416b80b807054 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Thu, 2 Apr 2026 02:28:00 -0400 Subject: [PATCH 011/142] Make large filter helper static --- SabreTools.Metadata.Filter/FilterObject.cs | 154 ++++++++++----------- 1 file changed, 77 insertions(+), 77 deletions(-) diff --git a/SabreTools.Metadata.Filter/FilterObject.cs b/SabreTools.Metadata.Filter/FilterObject.cs index 0c799bbc..3c742bb3 100644 --- a/SabreTools.Metadata.Filter/FilterObject.cs +++ b/SabreTools.Metadata.Filter/FilterObject.cs @@ -78,7 +78,7 @@ namespace SabreTools.Metadata.Filter private bool MatchesEqual(DictionaryBase dictionaryBase) { // Process the check value - if (!GetCheckValue(dictionaryBase, out string? checkValue)) + if (!GetCheckValue(dictionaryBase, Key.FieldName, out string? checkValue)) return string.IsNullOrEmpty(Value); // If a null value is expected @@ -120,7 +120,7 @@ namespace SabreTools.Metadata.Filter private bool MatchesNotEqual(DictionaryBase dictionaryBase) { // Process the check value - if (!GetCheckValue(dictionaryBase, out string? checkValue)) + if (!GetCheckValue(dictionaryBase, Key.FieldName, out string? checkValue)) return string.IsNullOrEmpty(Value); // If a null value is expected @@ -162,7 +162,7 @@ namespace SabreTools.Metadata.Filter private bool MatchesGreaterThan(DictionaryBase dictionaryBase) { // Process the check value - if (!GetCheckValue(dictionaryBase, out string? checkValue)) + if (!GetCheckValue(dictionaryBase, Key.FieldName, out string? checkValue)) return string.IsNullOrEmpty(Value); // Null is always failure @@ -194,7 +194,7 @@ namespace SabreTools.Metadata.Filter private bool MatchesGreaterThanOrEqual(DictionaryBase dictionaryBase) { // Process the check value - if (!GetCheckValue(dictionaryBase, out string? checkValue)) + if (!GetCheckValue(dictionaryBase, Key.FieldName, out string? checkValue)) return string.IsNullOrEmpty(Value); // Null is always failure @@ -226,7 +226,7 @@ namespace SabreTools.Metadata.Filter private bool MatchesLessThan(DictionaryBase dictionaryBase) { // Process the check value - if (!GetCheckValue(dictionaryBase, out string? checkValue)) + if (!GetCheckValue(dictionaryBase, Key.FieldName, out string? checkValue)) return string.IsNullOrEmpty(Value); // Null is always failure @@ -258,7 +258,7 @@ namespace SabreTools.Metadata.Filter private bool MatchesLessThanOrEqual(DictionaryBase dictionaryBase) { // Process the check value - if (!GetCheckValue(dictionaryBase, out string? checkValue)) + if (!GetCheckValue(dictionaryBase, Key.FieldName, out string? checkValue)) return string.IsNullOrEmpty(Value); // Null is always failure @@ -336,10 +336,10 @@ namespace SabreTools.Metadata.Filter /// /// Get the check value for a field from a DictionaryBase /// - private bool GetCheckValue(DictionaryBase dictionaryBase, out string? checkValue) + private static bool GetCheckValue(DictionaryBase dictionaryBase, string fieldName, out string? checkValue) { // Handle the common name field - if (Key.FieldName == "name") + if (fieldName == "name") { checkValue = dictionaryBase.GetName(); return true; @@ -348,231 +348,231 @@ namespace SabreTools.Metadata.Filter // Handle type-specific properties switch (dictionaryBase) { - case Adjuster item when Key.FieldName == "default": + case Adjuster item when fieldName == "default": checkValue = item.Default.FromYesNo(); return true; - case BiosSet item when Key.FieldName == "default": + case BiosSet item when fieldName == "default": checkValue = item.Default.FromYesNo(); return true; - case Chip item when Key.FieldName == "type": + case Chip item when fieldName == "type": checkValue = item.ChipType?.AsStringValue(); return true; - case Chip item when Key.FieldName == "soundonly": + case Chip item when fieldName == "soundonly": checkValue = item.SoundOnly.FromYesNo(); return true; - case Condition item when Key.FieldName == "relation": + case Condition item when fieldName == "relation": checkValue = item.Relation?.AsStringValue(); return true; - case ConfLocation item when Key.FieldName == "inverted": + case ConfLocation item when fieldName == "inverted": checkValue = item.Inverted.FromYesNo(); return true; - case ConfSetting item when Key.FieldName == "default": + case ConfSetting item when fieldName == "default": checkValue = item.Default.FromYesNo(); return true; - case Control item when Key.FieldName == "type": + case Control item when fieldName == "type": checkValue = item.ControlType?.AsStringValue(); return true; - case Control item when Key.FieldName == "reverse": + case Control item when fieldName == "reverse": checkValue = item.Reverse.FromYesNo(); return true; - case DataArea item when Key.FieldName == "endianness": + case DataArea item when fieldName == "endianness": checkValue = item.Endianness?.AsStringValue(); return true; - case Device item when Key.FieldName == "type": + case Device item when fieldName == "type": checkValue = item.DeviceType?.AsStringValue(); return true; - case DipLocation item when Key.FieldName == "inverted": + case DipLocation item when fieldName == "inverted": checkValue = item.Inverted.FromYesNo(); return true; - case DipLocation item when Key.FieldName == "inverted": + case DipLocation item when fieldName == "inverted": checkValue = item.Inverted.FromYesNo(); return true; - case DipSwitch item when Key.FieldName == "default": + case DipSwitch item when fieldName == "default": checkValue = item.Default.FromYesNo(); return true; - case DipValue item when Key.FieldName == "default": + case DipValue item when fieldName == "default": checkValue = item.Default.FromYesNo(); return true; - case Disk item when Key.FieldName == "optional": + case Disk item when fieldName == "optional": checkValue = item.Optional.FromYesNo(); return true; - case Disk item when Key.FieldName == "status": + case Disk item when fieldName == "status": checkValue = item.Status?.AsStringValue(); return true; - case Disk item when Key.FieldName == "writable": + case Disk item when fieldName == "writable": checkValue = item.Writable.FromYesNo(); return true; - case Display item when Key.FieldName == "flipx": + case Display item when fieldName == "flipx": checkValue = item.FlipX.FromYesNo(); return true; - case Display item when Key.FieldName == "type": + case Display item when fieldName == "type": checkValue = item.DisplayType?.AsStringValue(); return true; - case Driver item when Key.FieldName == "blit": + case Driver item when fieldName == "blit": checkValue = item.Blit?.AsStringValue(); return true; - case Driver item when Key.FieldName == "cocktail": + case Driver item when fieldName == "cocktail": checkValue = item.Cocktail?.AsStringValue(); return true; - case Driver item when Key.FieldName == "color": + case Driver item when fieldName == "color": checkValue = item.Color?.AsStringValue(); return true; - case Driver item when Key.FieldName == "emulation": + case Driver item when fieldName == "emulation": checkValue = item.Emulation?.AsStringValue(); return true; - case Driver item when Key.FieldName == "incomplete": + case Driver item when fieldName == "incomplete": checkValue = item.Incomplete.FromYesNo(); return true; - case Driver item when Key.FieldName == "nosoundhardware": + case Driver item when fieldName == "nosoundhardware": checkValue = item.NoSoundHardware.FromYesNo(); return true; - case Driver item when Key.FieldName == "requiresartwork": + case Driver item when fieldName == "requiresartwork": checkValue = item.RequiresArtwork.FromYesNo(); return true; - case Driver item when Key.FieldName == "savestate": + case Driver item when fieldName == "savestate": checkValue = item.SaveState?.AsStringValue(); return true; - case Driver item when Key.FieldName == "sound": + case Driver item when fieldName == "sound": checkValue = item.Sound?.AsStringValue(); return true; - case Driver item when Key.FieldName == "status": + case Driver item when fieldName == "status": checkValue = item.Status?.AsStringValue(); return true; - case Driver item when Key.FieldName == "unofficial": + case Driver item when fieldName == "unofficial": checkValue = item.Unofficial.FromYesNo(); return true; - case Feature item when Key.FieldName == "overall": + case Feature item when fieldName == "overall": checkValue = item.Overall?.AsStringValue(); return true; - case Feature item when Key.FieldName == "status": + case Feature item when fieldName == "status": checkValue = item.Status?.AsStringValue(); return true; - case Feature item when Key.FieldName == "type": + case Feature item when fieldName == "type": checkValue = item.FeatureType?.AsStringValue(); return true; - case Header item when Key.FieldName == "biosmode": + case Header item when fieldName == "biosmode": checkValue = item.BiosMode.AsStringValue(); return true; - case Header item when Key.FieldName == "debug": + case Header item when fieldName == "debug": checkValue = item.Debug.FromYesNo(); return true; - case Header item when Key.FieldName == "forcemerging": + case Header item when fieldName == "forcemerging": checkValue = item.ForceMerging.AsStringValue(); return true; - case Header item when Key.FieldName == "forcenodump": + case Header item when fieldName == "forcenodump": checkValue = item.ForceNodump.AsStringValue(); return true; - case Header item when Key.FieldName == "forcepacking": + case Header item when fieldName == "forcepacking": checkValue = item.ForcePacking.AsStringValue(); return true; - case Header item when Key.FieldName == "forcezipping": + case Header item when fieldName == "forcezipping": checkValue = item.ForceZipping.FromYesNo(); return true; - case Header item when Key.FieldName == "lockbiosmode": + case Header item when fieldName == "lockbiosmode": checkValue = item.LockBiosMode.FromYesNo(); return true; - case Header item when Key.FieldName == "lockrommode": + case Header item when fieldName == "lockrommode": checkValue = item.LockRomMode.FromYesNo(); return true; - case Header item when Key.FieldName == "locksamplemode": + case Header item when fieldName == "locksamplemode": checkValue = item.LockSampleMode.FromYesNo(); return true; - case Header item when Key.FieldName == "rommode": + case Header item when fieldName == "rommode": checkValue = item.RomMode.AsStringValue(); return true; - case Header item when Key.FieldName == "samplemode": + case Header item when fieldName == "samplemode": checkValue = item.SampleMode.AsStringValue(); return true; - case Input item when Key.FieldName == "service": + case Input item when fieldName == "service": checkValue = item.Service.FromYesNo(); return true; - case Input item when Key.FieldName == "tilt": + case Input item when fieldName == "tilt": checkValue = item.Tilt.FromYesNo(); return true; - case Machine item when Key.FieldName == "isbios": + case Machine item when fieldName == "isbios": checkValue = item.IsBios.FromYesNo(); return true; - case Machine item when Key.FieldName == "isdevice": + case Machine item when fieldName == "isdevice": checkValue = item.IsDevice.FromYesNo(); return true; - case Machine item when Key.FieldName == "ismechanical": + case Machine item when fieldName == "ismechanical": checkValue = item.IsMechanical.FromYesNo(); return true; - case Machine item when Key.FieldName == "runnable": + case Machine item when fieldName == "runnable": checkValue = item.Runnable?.AsStringValue(); return true; - case Machine item when Key.FieldName == "supported": + case Machine item when fieldName == "supported": checkValue = item.Supported?.AsStringValue(); return true; - case RamOption item when Key.FieldName == "default": + case RamOption item when fieldName == "default": checkValue = item.Default.FromYesNo(); return true; - case Release item when Key.FieldName == "default": + case Release item when fieldName == "default": checkValue = item.Default.FromYesNo(); return true; - case Rom item when Key.FieldName == "dispose": + case Rom item when fieldName == "dispose": checkValue = item.Dispose.FromYesNo(); return true; - case Rom item when Key.FieldName == "fileisavailable": + case Rom item when fieldName == "fileisavailable": checkValue = item.FileIsAvailable.FromYesNo(); return true; - case Rom item when Key.FieldName == "inverted": + case Rom item when fieldName == "inverted": checkValue = item.Inverted.FromYesNo(); return true; - case Rom item when Key.FieldName == "loadflag": + case Rom item when fieldName == "loadflag": checkValue = item.LoadFlag?.AsStringValue(); return true; - case Rom item when Key.FieldName == "mediatype": + case Rom item when fieldName == "mediatype": checkValue = item.OpenMSXMediaType?.AsStringValue(); return true; - case Rom item when Key.FieldName == "mia": + case Rom item when fieldName == "mia": checkValue = item.MIA.FromYesNo(); return true; - case Rom item when Key.FieldName == "optional": + case Rom item when fieldName == "optional": checkValue = item.Optional.FromYesNo(); return true; - case Rom item when Key.FieldName == "soundonly": + case Rom item when fieldName == "soundonly": checkValue = item.SoundOnly.FromYesNo(); return true; - case Rom item when Key.FieldName == "status": + case Rom item when fieldName == "status": checkValue = item.Status?.AsStringValue(); return true; - case SlotOption item when Key.FieldName == "default": + case SlotOption item when fieldName == "default": checkValue = item.Default.FromYesNo(); return true; - case Software item when Key.FieldName == "supported": + case Software item when fieldName == "supported": checkValue = item.Supported?.AsStringValue(); return true; - case SoftwareList item when Key.FieldName == "status": + case SoftwareList item when fieldName == "status": checkValue = item.Status?.AsStringValue(); return true; - case Video item when Key.FieldName == "screen": + case Video item when fieldName == "screen": checkValue = item.Screen?.AsStringValue(); return true; @@ -581,14 +581,14 @@ namespace SabreTools.Metadata.Filter } // If the key doesn't exist, we count it as null - if (!dictionaryBase.ContainsKey(Key.FieldName)) + if (!dictionaryBase.ContainsKey(fieldName)) { checkValue = null; return false; } // If the value in the dictionary is null - checkValue = dictionaryBase.ReadString(Key.FieldName); + checkValue = dictionaryBase.ReadString(fieldName); return true; } From 8356aed5b02cb6c783147672dcfe09117716c947 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Thu, 2 Apr 2026 02:43:29 -0400 Subject: [PATCH 012/142] Device.Manadatory converted to property --- .../MetadataExtensionsTests.cs | 2 ++ SabreTools.Data.Extensions/MetadataExtensions.cs | 5 +++-- SabreTools.Data.Models/Listxml/Device.cs | 4 ++-- SabreTools.Data.Models/Metadata/Device.cs | 7 +++---- .../DatFileTests.FromMetadata.cs | 4 ++-- .../DatFileTests.ToMetadata.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Device.cs | 11 ++++++----- SabreTools.Metadata.Filter/FilterObject.cs | 3 +++ .../ListxmlTests.cs | 4 ++-- SabreTools.Serialization.CrossModel.Test/M1Tests.cs | 4 ++-- SabreTools.Serialization.CrossModel.Test/MessTests.cs | 4 ++-- .../Listxml.Deserializer.cs | 2 +- .../Listxml.Serializer.cs | 2 +- SabreTools.Serialization.Readers.Test/ListxmlTests.cs | 4 ++-- SabreTools.Serialization.Readers.Test/M1Tests.cs | 4 ++-- SabreTools.Serialization.Readers.Test/MessTests.cs | 4 ++-- SabreTools.Serialization.Readers/Listxml.cs | 2 +- SabreTools.Serialization.Readers/M1.cs | 2 +- SabreTools.Serialization.Readers/Mess.cs | 2 +- SabreTools.Serialization.Writers/Listxml.cs | 3 ++- SabreTools.Serialization.Writers/M1.cs | 3 ++- SabreTools.Serialization.Writers/Mess.cs | 3 ++- 22 files changed, 45 insertions(+), 36 deletions(-) diff --git a/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs b/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs index f4bc8b55..cf97ee9d 100644 --- a/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs +++ b/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs @@ -1864,8 +1864,10 @@ namespace SabreTools.Data.Extensions.Test [Theory] [InlineData(null, null)] [InlineData("INVALID", null)] + [InlineData("1", true)] [InlineData("yes", true)] [InlineData("True", true)] + [InlineData("0", false)] [InlineData("no", false)] [InlineData("False", false)] public void AsYesNoTest(string? field, bool? expected) diff --git a/SabreTools.Data.Extensions/MetadataExtensions.cs b/SabreTools.Data.Extensions/MetadataExtensions.cs index f1700a2a..794373df 100644 --- a/SabreTools.Data.Extensions/MetadataExtensions.cs +++ b/SabreTools.Data.Extensions/MetadataExtensions.cs @@ -184,6 +184,7 @@ namespace SabreTools.Data.Extensions else if (self is Device selfDevice && clone is Device cloneDevice) { cloneDevice.DeviceType = selfDevice.DeviceType; + cloneDevice.Mandatory = selfDevice.Mandatory; } else if (self is DipLocation selfDipLocation && clone is DipLocation cloneDipLocation) { @@ -1402,8 +1403,8 @@ namespace SabreTools.Data.Extensions { return yesno?.ToLowerInvariant() switch { - "yes" or "true" => true, - "no" or "false" => false, + "1" or "yes" or "true" => true, + "0" or "no" or "false" => false, _ => null, }; } diff --git a/SabreTools.Data.Models/Listxml/Device.cs b/SabreTools.Data.Models/Listxml/Device.cs index 45a26277..ef377197 100644 --- a/SabreTools.Data.Models/Listxml/Device.cs +++ b/SabreTools.Data.Models/Listxml/Device.cs @@ -18,9 +18,9 @@ namespace SabreTools.Data.Models.Listxml [XmlAttribute("fixed_image")] public string? FixedImage { get; set; } - /// Numeric boolean + /// (0|1) "0" [XmlAttribute("mandatory")] - public string? Mandatory { get; set; } + public bool? Mandatory { get; set; } [XmlAttribute("interface")] public string? Interface { get; set; } diff --git a/SabreTools.Data.Models/Metadata/Device.cs b/SabreTools.Data.Models/Metadata/Device.cs index 3d17f455..6165eb4b 100644 --- a/SabreTools.Data.Models/Metadata/Device.cs +++ b/SabreTools.Data.Models/Metadata/Device.cs @@ -11,6 +11,9 @@ namespace SabreTools.Data.Models.Metadata /// (unknown|cartridge|floppydisk|harddisk|cylinder|cassette|punchcard|punchtape|printout|serial|parallel|snapshot|quickload|memcard|cdrom|magtape|romimage|midiin|midiout|picture|vidfile) public DeviceType? DeviceType { get; set; } + /// (0|1) "0" + public bool? Mandatory { get; set; } + #endregion #region Keys @@ -29,10 +32,6 @@ namespace SabreTools.Data.Models.Metadata /// string public const string InterfaceKey = "interface"; - /// (0|1) "0" - /// TODO: Convert to bool? - public const string MandatoryKey = "mandatory"; - /// string public const string TagKey = "tag"; diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs index dcdc1daf..117109d3 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs @@ -485,7 +485,7 @@ namespace SabreTools.Metadata.DatFiles.Test [Data.Models.Metadata.Device.FixedImageKey] = "fixedimage", [Data.Models.Metadata.Device.InstanceKey] = CreateMetadataInstance(), [Data.Models.Metadata.Device.InterfaceKey] = "interface", - [Data.Models.Metadata.Device.MandatoryKey] = 1L, + Mandatory = true, [Data.Models.Metadata.Device.TagKey] = "tag", DeviceType = Data.Models.Metadata.DeviceType.PunchTape, }; @@ -1262,7 +1262,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(device); Assert.Equal("fixedimage", device.ReadString(Data.Models.Metadata.Device.FixedImageKey)); Assert.Equal("interface", device.ReadString(Data.Models.Metadata.Device.InterfaceKey)); - Assert.Equal(1, device.ReadLong(Data.Models.Metadata.Device.MandatoryKey)); + Assert.Equal(true, device.Mandatory); Assert.Equal("tag", device.ReadString(Data.Models.Metadata.Device.TagKey)); Assert.Equal(Data.Models.Metadata.DeviceType.PunchTape, device.DeviceType); diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs index 2bfb50e0..7e7e06a2 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs @@ -774,7 +774,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(device); Assert.Equal("fixedimage", device.ReadString(Data.Models.Metadata.Device.FixedImageKey)); Assert.Equal("interface", device.ReadString(Data.Models.Metadata.Device.InterfaceKey)); - Assert.Equal(1, device.ReadLong(Data.Models.Metadata.Device.MandatoryKey)); + Assert.Equal(true, device.Mandatory); Assert.Equal("tag", device.ReadString(Data.Models.Metadata.Device.TagKey)); Assert.Equal(Data.Models.Metadata.DeviceType.PunchTape, device.DeviceType); diff --git a/SabreTools.Metadata.DatItems/Formats/Device.cs b/SabreTools.Metadata.DatItems/Formats/Device.cs index 57ce5981..ff14ce51 100644 --- a/SabreTools.Metadata.DatItems/Formats/Device.cs +++ b/SabreTools.Metadata.DatItems/Formats/Device.cs @@ -39,6 +39,12 @@ namespace SabreTools.Metadata.DatItems.Formats } } + public bool? Mandatory + { + get => (_internal as Data.Models.Metadata.Device)?.Mandatory; + set => (_internal as Data.Models.Metadata.Device)?.Mandatory = value; + } + #endregion #region Constructors @@ -47,11 +53,6 @@ namespace SabreTools.Metadata.DatItems.Formats public Device(Data.Models.Metadata.Device item) : base(item) { - // Process flag values - bool? mandatory = ReadBool(Data.Models.Metadata.Device.MandatoryKey); - if (mandatory is not null) - Write(Data.Models.Metadata.Device.MandatoryKey, mandatory.FromYesNo()); - // Handle subitems var instance = item.Read(Data.Models.Metadata.Device.InstanceKey); if (instance is not null) diff --git a/SabreTools.Metadata.Filter/FilterObject.cs b/SabreTools.Metadata.Filter/FilterObject.cs index 3c742bb3..7c624720 100644 --- a/SabreTools.Metadata.Filter/FilterObject.cs +++ b/SabreTools.Metadata.Filter/FilterObject.cs @@ -389,6 +389,9 @@ namespace SabreTools.Metadata.Filter case Device item when fieldName == "type": checkValue = item.DeviceType?.AsStringValue(); return true; + case Device item when fieldName == "mandatory": + checkValue = item.Mandatory.FromYesNo(); + return true; case DipLocation item when fieldName == "inverted": checkValue = item.Inverted.FromYesNo(); diff --git a/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs b/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs index fdfca515..734cfa18 100644 --- a/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs @@ -293,7 +293,7 @@ namespace SabreTools.Serialization.CrossModel.Test Type = Data.Models.Metadata.DeviceType.PunchTape, Tag = "XXXXXX", FixedImage = "XXXXXX", - Mandatory = "XXXXXX", + Mandatory = true, Interface = "XXXXXX", Instance = instance, Extension = [extension], @@ -800,7 +800,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal(Data.Models.Metadata.DeviceType.PunchTape, device.Type); Assert.Equal("XXXXXX", device.Tag); Assert.Equal("XXXXXX", device.FixedImage); - Assert.Equal("XXXXXX", device.Mandatory); + Assert.Equal(true, device.Mandatory); Assert.Equal("XXXXXX", device.Interface); Validate(device.Instance); diff --git a/SabreTools.Serialization.CrossModel.Test/M1Tests.cs b/SabreTools.Serialization.CrossModel.Test/M1Tests.cs index 16e28c35..57fe2ba8 100644 --- a/SabreTools.Serialization.CrossModel.Test/M1Tests.cs +++ b/SabreTools.Serialization.CrossModel.Test/M1Tests.cs @@ -289,7 +289,7 @@ namespace SabreTools.Serialization.CrossModel.Test Type = Data.Models.Metadata.DeviceType.PunchTape, Tag = "XXXXXX", FixedImage = "XXXXXX", - Mandatory = "XXXXXX", + Mandatory = true, Interface = "XXXXXX", Instance = instance, Extension = [extension], @@ -794,7 +794,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal(Data.Models.Metadata.DeviceType.PunchTape, device.Type); Assert.Equal("XXXXXX", device.Tag); Assert.Equal("XXXXXX", device.FixedImage); - Assert.Equal("XXXXXX", device.Mandatory); + Assert.Equal(true, device.Mandatory); Assert.Equal("XXXXXX", device.Interface); Validate(device.Instance); diff --git a/SabreTools.Serialization.CrossModel.Test/MessTests.cs b/SabreTools.Serialization.CrossModel.Test/MessTests.cs index 96911cf5..778266fa 100644 --- a/SabreTools.Serialization.CrossModel.Test/MessTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/MessTests.cs @@ -289,7 +289,7 @@ namespace SabreTools.Serialization.CrossModel.Test Type = Data.Models.Metadata.DeviceType.PunchTape, Tag = "XXXXXX", FixedImage = "XXXXXX", - Mandatory = "XXXXXX", + Mandatory = true, Interface = "XXXXXX", Instance = instance, Extension = [extension], @@ -794,7 +794,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal(Data.Models.Metadata.DeviceType.PunchTape, device.Type); Assert.Equal("XXXXXX", device.Tag); Assert.Equal("XXXXXX", device.FixedImage); - Assert.Equal("XXXXXX", device.Mandatory); + Assert.Equal(true, device.Mandatory); Assert.Equal("XXXXXX", device.Interface); Validate(device.Instance); diff --git a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs index 02a38a83..4e17acd2 100644 --- a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs @@ -309,7 +309,7 @@ namespace SabreTools.Serialization.CrossModel Type = item.DeviceType, Tag = item.ReadString(Data.Models.Metadata.Device.TagKey), FixedImage = item.ReadString(Data.Models.Metadata.Device.FixedImageKey), - Mandatory = item.ReadString(Data.Models.Metadata.Device.MandatoryKey), + Mandatory = item.Mandatory, Interface = item.ReadString(Data.Models.Metadata.Device.InterfaceKey), }; diff --git a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs index 10c5e034..01d8fa7e 100644 --- a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs @@ -344,7 +344,7 @@ namespace SabreTools.Serialization.CrossModel DeviceType = item.Type, [Data.Models.Metadata.Device.TagKey] = item.Tag, [Data.Models.Metadata.Device.FixedImageKey] = item.FixedImage, - [Data.Models.Metadata.Device.MandatoryKey] = item.Mandatory, + Mandatory = item.Mandatory, [Data.Models.Metadata.Device.InterfaceKey] = item.Interface, }; diff --git a/SabreTools.Serialization.Readers.Test/ListxmlTests.cs b/SabreTools.Serialization.Readers.Test/ListxmlTests.cs index 6cfd1795..439b3a9e 100644 --- a/SabreTools.Serialization.Readers.Test/ListxmlTests.cs +++ b/SabreTools.Serialization.Readers.Test/ListxmlTests.cs @@ -360,7 +360,7 @@ namespace SabreTools.Serialization.Readers.Test Type = Data.Models.Metadata.DeviceType.PunchTape, Tag = "XXXXXX", FixedImage = "XXXXXX", - Mandatory = "XXXXXX", + Mandatory = true, Interface = "XXXXXX", Instance = instance, Extension = [extension], @@ -867,7 +867,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal(Data.Models.Metadata.DeviceType.PunchTape, device.Type); Assert.Equal("XXXXXX", device.Tag); Assert.Equal("XXXXXX", device.FixedImage); - Assert.Equal("XXXXXX", device.Mandatory); + Assert.Equal(true, device.Mandatory); Assert.Equal("XXXXXX", device.Interface); Validate(device.Instance); diff --git a/SabreTools.Serialization.Readers.Test/M1Tests.cs b/SabreTools.Serialization.Readers.Test/M1Tests.cs index cbff6514..90be4b60 100644 --- a/SabreTools.Serialization.Readers.Test/M1Tests.cs +++ b/SabreTools.Serialization.Readers.Test/M1Tests.cs @@ -356,7 +356,7 @@ namespace SabreTools.Serialization.Readers.Test Type = Data.Models.Metadata.DeviceType.PunchTape, Tag = "XXXXXX", FixedImage = "XXXXXX", - Mandatory = "XXXXXX", + Mandatory = true, Interface = "XXXXXX", Instance = instance, Extension = [extension], @@ -861,7 +861,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal(Data.Models.Metadata.DeviceType.PunchTape, device.Type); Assert.Equal("XXXXXX", device.Tag); Assert.Equal("XXXXXX", device.FixedImage); - Assert.Equal("XXXXXX", device.Mandatory); + Assert.Equal(true, device.Mandatory); Assert.Equal("XXXXXX", device.Interface); Validate(device.Instance); diff --git a/SabreTools.Serialization.Readers.Test/MessTests.cs b/SabreTools.Serialization.Readers.Test/MessTests.cs index 4b798855..3eee2b80 100644 --- a/SabreTools.Serialization.Readers.Test/MessTests.cs +++ b/SabreTools.Serialization.Readers.Test/MessTests.cs @@ -356,7 +356,7 @@ namespace SabreTools.Serialization.Readers.Test Type = Data.Models.Metadata.DeviceType.PunchTape, Tag = "XXXXXX", FixedImage = "XXXXXX", - Mandatory = "XXXXXX", + Mandatory = true, Interface = "XXXXXX", Instance = instance, Extension = [extension], @@ -861,7 +861,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal(Data.Models.Metadata.DeviceType.PunchTape, device.Type); Assert.Equal("XXXXXX", device.Tag); Assert.Equal("XXXXXX", device.FixedImage); - Assert.Equal("XXXXXX", device.Mandatory); + Assert.Equal(true, device.Mandatory); Assert.Equal("XXXXXX", device.Interface); Validate(device.Instance); diff --git a/SabreTools.Serialization.Readers/Listxml.cs b/SabreTools.Serialization.Readers/Listxml.cs index 2b868c56..9e38ba06 100644 --- a/SabreTools.Serialization.Readers/Listxml.cs +++ b/SabreTools.Serialization.Readers/Listxml.cs @@ -368,7 +368,7 @@ namespace SabreTools.Serialization.Readers obj.Type = reader.GetAttribute("type").AsDeviceType(); obj.Tag = reader.GetAttribute("tag"); obj.FixedImage = reader.GetAttribute("fixed_image"); - obj.Mandatory = reader.GetAttribute("mandatory"); + obj.Mandatory = reader.GetAttribute("mandatory").AsYesNo(); obj.Interface = reader.GetAttribute("interface"); List extensions = []; diff --git a/SabreTools.Serialization.Readers/M1.cs b/SabreTools.Serialization.Readers/M1.cs index efc59aed..154c9aab 100644 --- a/SabreTools.Serialization.Readers/M1.cs +++ b/SabreTools.Serialization.Readers/M1.cs @@ -366,7 +366,7 @@ namespace SabreTools.Serialization.Readers obj.Type = reader.GetAttribute("type").AsDeviceType(); obj.Tag = reader.GetAttribute("tag"); obj.FixedImage = reader.GetAttribute("fixed_image"); - obj.Mandatory = reader.GetAttribute("mandatory"); + obj.Mandatory = reader.GetAttribute("mandatory").AsYesNo(); obj.Interface = reader.GetAttribute("interface"); List extensions = []; diff --git a/SabreTools.Serialization.Readers/Mess.cs b/SabreTools.Serialization.Readers/Mess.cs index bf568a0e..a39567c4 100644 --- a/SabreTools.Serialization.Readers/Mess.cs +++ b/SabreTools.Serialization.Readers/Mess.cs @@ -366,7 +366,7 @@ namespace SabreTools.Serialization.Readers obj.Type = reader.GetAttribute("type").AsDeviceType(); obj.Tag = reader.GetAttribute("tag"); obj.FixedImage = reader.GetAttribute("fixed_image"); - obj.Mandatory = reader.GetAttribute("mandatory"); + obj.Mandatory = reader.GetAttribute("mandatory").AsYesNo(); obj.Interface = reader.GetAttribute("interface"); List extensions = []; diff --git a/SabreTools.Serialization.Writers/Listxml.cs b/SabreTools.Serialization.Writers/Listxml.cs index 01c8313e..cc458cf6 100644 --- a/SabreTools.Serialization.Writers/Listxml.cs +++ b/SabreTools.Serialization.Writers/Listxml.cs @@ -256,7 +256,8 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("type", obj.Type?.AsStringValue()); writer.WriteOptionalAttributeString("tag", obj.Tag); writer.WriteOptionalAttributeString("fixed_image", obj.FixedImage); - writer.WriteOptionalAttributeString("mandatory", obj.Mandatory); + if (obj.Mandatory is not null) + writer.WriteOptionalAttributeString("mandatory", obj.Mandatory.Value ? "1" : "0"); writer.WriteOptionalAttributeString("interface", obj.Interface); if (obj.Instance is not null) diff --git a/SabreTools.Serialization.Writers/M1.cs b/SabreTools.Serialization.Writers/M1.cs index b9fcdb21..7f4137e6 100644 --- a/SabreTools.Serialization.Writers/M1.cs +++ b/SabreTools.Serialization.Writers/M1.cs @@ -254,7 +254,8 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("type", obj.Type?.AsStringValue()); writer.WriteOptionalAttributeString("tag", obj.Tag); writer.WriteOptionalAttributeString("fixed_image", obj.FixedImage); - writer.WriteOptionalAttributeString("mandatory", obj.Mandatory); + if (obj.Mandatory is not null) + writer.WriteOptionalAttributeString("mandatory", obj.Mandatory.Value ? "1" : "0"); writer.WriteOptionalAttributeString("interface", obj.Interface); if (obj.Instance is not null) diff --git a/SabreTools.Serialization.Writers/Mess.cs b/SabreTools.Serialization.Writers/Mess.cs index 0a2e83c9..c74c693a 100644 --- a/SabreTools.Serialization.Writers/Mess.cs +++ b/SabreTools.Serialization.Writers/Mess.cs @@ -254,7 +254,8 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("type", obj.Type?.AsStringValue()); writer.WriteOptionalAttributeString("tag", obj.Tag); writer.WriteOptionalAttributeString("fixed_image", obj.FixedImage); - writer.WriteOptionalAttributeString("mandatory", obj.Mandatory); + if (obj.Mandatory is not null) + writer.WriteOptionalAttributeString("mandatory", obj.Mandatory.Value ? "1" : "0"); writer.WriteOptionalAttributeString("interface", obj.Interface); if (obj.Instance is not null) From c61aea7eac9427b900e4d8bdcb494c05dba917a2 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Thu, 2 Apr 2026 11:18:49 -0400 Subject: [PATCH 013/142] Move common string-only to properties --- .../MetadataExtensions.cs | 43 ++++++++ SabreTools.Data.Models/Metadata/Analog.cs | 5 +- SabreTools.Data.Models/Metadata/Archive.cs | 6 +- SabreTools.Data.Models/Metadata/BiosSet.cs | 9 +- SabreTools.Data.Models/Metadata/Chip.cs | 5 +- SabreTools.Data.Models/Metadata/Condition.cs | 15 +-- .../Metadata/ConfSetting.cs | 5 +- .../Metadata/Configuration.cs | 10 +- SabreTools.Data.Models/Metadata/Device.cs | 5 +- SabreTools.Data.Models/Metadata/DipSwitch.cs | 10 +- SabreTools.Data.Models/Metadata/DipValue.cs | 5 +- SabreTools.Data.Models/Metadata/Display.cs | 5 +- SabreTools.Data.Models/Metadata/Feature.cs | 7 +- SabreTools.Data.Models/Metadata/Header.cs | 5 +- SabreTools.Data.Models/Metadata/Info.cs | 7 +- SabreTools.Data.Models/Metadata/Machine.cs | 5 +- SabreTools.Data.Models/Metadata/Port.cs | 9 +- SabreTools.Data.Models/Metadata/Rom.cs | 5 +- SabreTools.Data.Models/Metadata/SharedFeat.cs | 7 +- SabreTools.Data.Models/Metadata/Software.cs | 5 +- .../Metadata/SoftwareList.cs | 10 +- .../DatFileTests.Filtering.cs | 8 +- .../DatFileTests.FromMetadata.cs | 98 +++++++++---------- .../DatFileTests.ToMetadata.cs | 48 ++++----- .../DatFileTests.cs | 32 +++--- .../FormatsTests.cs | 20 ++-- .../DatFile.Filtering.cs | 12 +-- .../DatFile.FromMetadata.cs | 4 +- .../DatFile.Splitting.cs | 2 +- SabreTools.Metadata.DatFiles/DatFile.cs | 4 +- SabreTools.Metadata.DatFiles/DatHeader.cs | 18 ++-- .../Formats/ClrMamePro.cs | 4 +- .../Formats/Listxml.cs | 20 ++-- .../Formats/Logiqx.cs | 8 +- .../Formats/SoftwareList.cs | 14 +-- .../Formats/Analog.cs | 10 ++ .../Formats/BiosSet.cs | 7 +- SabreTools.Metadata.DatItems/Formats/Chip.cs | 6 ++ .../Formats/Condition.cs | 18 ++++ .../Formats/ConfSetting.cs | 7 +- .../Formats/Configuration.cs | 12 +++ .../Formats/Device.cs | 6 ++ .../Formats/DipSwitch.cs | 12 +++ .../Formats/DipValue.cs | 7 +- .../Formats/Display.cs | 6 ++ .../Formats/Feature.cs | 6 ++ SabreTools.Metadata.DatItems/Formats/Info.cs | 10 ++ .../Formats/PartFeature.cs | 6 ++ SabreTools.Metadata.DatItems/Formats/Port.cs | 6 ++ SabreTools.Metadata.DatItems/Formats/Rom.cs | 6 ++ .../Formats/SharedFeat.cs | 10 ++ .../Formats/SoftwareList.cs | 12 +++ SabreTools.Metadata.DatItems/Machine.cs | 6 ++ .../FilterRunnerTests.cs | 8 +- SabreTools.Metadata.Filter/FilterObject.cs | 83 +++++++++++++++- .../ClrMameProTests.cs | 12 +-- .../DosCenterTests.cs | 4 +- .../ListxmlTests.cs | 68 ++++++------- .../LogiqxTests.cs | 16 +-- .../M1Tests.cs | 68 ++++++------- .../MessTests.cs | 68 ++++++------- .../OfflineListTests.cs | 8 +- .../OpenMSXTests.cs | 4 +- .../RomCenterTests.cs | 4 +- .../SeparatedValueTests.cs | 24 ++--- .../SoftwareListTests.cs | 36 +++---- .../ClrMamePro.Deserializer.cs | 6 +- .../ClrMamePro.Serializer.cs | 6 +- .../DosCenter.Deserializer.cs | 2 +- .../DosCenter.Serializer.cs | 2 +- .../Listxml.Deserializer.cs | 34 +++---- .../Listxml.Serializer.cs | 34 +++---- .../Logiqx.Deserializer.cs | 8 +- .../Logiqx.Serializer.cs | 8 +- .../RomCenter.Deserializer.cs | 2 +- .../RomCenter.Serializer.cs | 2 +- .../SeparatedValue.Deserializer.cs | 12 +-- .../SeparatedValue.Serializer.cs | 4 +- .../SoftwareList.Deserializer.cs | 18 ++-- .../SoftwareList.Serializer.cs | 18 ++-- .../ClrMameProTests.cs | 12 +-- .../DosCenterTests.cs | 4 +- .../ListxmlTests.cs | 68 ++++++------- .../LogiqxTests.cs | 16 +-- .../M1Tests.cs | 68 ++++++------- .../MessTests.cs | 68 ++++++------- .../NoIntroDatabaseTests.cs | 4 +- .../OfflineListTests.cs | 8 +- .../OpenMSXTests.cs | 4 +- .../RomCenterTests.cs | 8 +- .../SeparatedValueTests.cs | 24 ++--- .../SoftwareListTests.cs | 36 +++---- 92 files changed, 872 insertions(+), 635 deletions(-) diff --git a/SabreTools.Data.Extensions/MetadataExtensions.cs b/SabreTools.Data.Extensions/MetadataExtensions.cs index 794373df..175b3b99 100644 --- a/SabreTools.Data.Extensions/MetadataExtensions.cs +++ b/SabreTools.Data.Extensions/MetadataExtensions.cs @@ -151,18 +151,36 @@ namespace SabreTools.Data.Extensions { cloneAdjuster.Default = selfAdjuster.Default; } + else if (self is Analog selfAnalog && clone is Analog cloneAnalog) + { + cloneAnalog.Mask = selfAnalog.Mask; + } + else if (self is Archive selfArchive && clone is Archive cloneArchive) + { + cloneArchive.Description = selfArchive.Description; + } else if (self is BiosSet selfBiosSet && clone is BiosSet cloneBiosSet) { cloneBiosSet.Default = selfBiosSet.Default; + cloneBiosSet.Description = selfBiosSet.Description; } else if (self is Chip selfChip && clone is Chip cloneChip) { cloneChip.ChipType = selfChip.ChipType; cloneChip.SoundOnly = selfChip.SoundOnly; + cloneChip.Tag = selfChip.Tag; } else if (self is Condition selfCondition && clone is Condition cloneCondition) { + cloneCondition.Mask = selfCondition.Mask; cloneCondition.Relation = selfCondition.Relation; + cloneCondition.Tag = selfCondition.Tag; + cloneCondition.Value = selfCondition.Value; + } + else if (self is Configuration selfConfiguration && clone is Configuration cloneConfiguration) + { + cloneConfiguration.Mask = selfConfiguration.Mask; + cloneConfiguration.Tag = selfConfiguration.Tag; } else if (self is ConfLocation selfConfLocation && clone is ConfLocation cloneConfLocation) { @@ -171,6 +189,7 @@ namespace SabreTools.Data.Extensions else if (self is ConfSetting selfConfSetting && clone is ConfSetting cloneConfSetting) { cloneConfSetting.Default = selfConfSetting.Default; + cloneConfSetting.Value = selfConfSetting.Value; } else if (self is Control selfControl && clone is Control cloneControl) { @@ -185,6 +204,7 @@ namespace SabreTools.Data.Extensions { cloneDevice.DeviceType = selfDevice.DeviceType; cloneDevice.Mandatory = selfDevice.Mandatory; + cloneDevice.Tag = selfDevice.Tag; } else if (self is DipLocation selfDipLocation && clone is DipLocation cloneDipLocation) { @@ -193,10 +213,13 @@ namespace SabreTools.Data.Extensions else if (self is DipSwitch selfDipSwitch && clone is DipSwitch cloneDipSwitch) { cloneDipSwitch.Default = selfDipSwitch.Default; + cloneDipSwitch.Mask = selfDipSwitch.Mask; + cloneDipSwitch.Tag = selfDipSwitch.Tag; } else if (self is DipValue selfDipValue && clone is DipValue cloneDipValue) { cloneDipValue.Default = selfDipValue.Default; + cloneDipValue.Value = selfDipValue.Value; } else if (self is Disk selfDisk && clone is Disk cloneDisk) { @@ -208,6 +231,7 @@ namespace SabreTools.Data.Extensions { cloneDisplay.DisplayType = selfDisplay.DisplayType; cloneDisplay.FlipX = selfDisplay.FlipX; + cloneDisplay.Tag = selfDisplay.Tag; } else if (self is Driver selfDriver && clone is Driver cloneDriver) { @@ -228,11 +252,13 @@ namespace SabreTools.Data.Extensions cloneFeature.FeatureType = selfFeature.FeatureType; cloneFeature.Overall = selfFeature.Overall; cloneFeature.Status = selfFeature.Status; + cloneFeature.Value = selfFeature.Value; } else if (self is Header selfHeader && clone is Header cloneHeader) { cloneHeader.BiosMode = selfHeader.BiosMode; cloneHeader.Debug = selfHeader.Debug; + cloneHeader.Description = selfHeader.Description; cloneHeader.ForceMerging = selfHeader.ForceMerging; cloneHeader.ForceNodump = selfHeader.ForceNodump; cloneHeader.ForcePacking = selfHeader.ForcePacking; @@ -243,6 +269,10 @@ namespace SabreTools.Data.Extensions cloneHeader.RomMode = selfHeader.RomMode; cloneHeader.SampleMode = selfHeader.SampleMode; } + else if (self is Info selfInfo && clone is Info cloneInfo) + { + cloneInfo.Value = selfInfo.Value; + } else if (self is Input selfInput && clone is Input cloneInput) { cloneInput.Service = selfInput.Service; @@ -250,12 +280,17 @@ namespace SabreTools.Data.Extensions } else if (self is Machine selfMachine && clone is Machine cloneMachine) { + cloneMachine.Description = selfMachine.Description; cloneMachine.IsBios = selfMachine.IsBios; cloneMachine.IsDevice = selfMachine.IsDevice; cloneMachine.IsMechanical = selfMachine.IsMechanical; cloneMachine.Runnable = selfMachine.Runnable; cloneMachine.Supported = selfMachine.Supported; } + else if (self is Port selfPort && clone is Port clonePort) + { + clonePort.Tag = selfPort.Tag; + } else if (self is RamOption selfRamOption && clone is RamOption cloneRamOption) { cloneRamOption.Default = selfRamOption.Default; @@ -275,6 +310,11 @@ namespace SabreTools.Data.Extensions cloneRom.Optional = selfRom.Optional; cloneRom.SoundOnly = selfRom.SoundOnly; cloneRom.Status = selfRom.Status; + cloneRom.Value = selfRom.Value; + } + else if (self is SharedFeat selfSharedFeat && clone is SharedFeat cloneSharedFeat) + { + cloneSharedFeat.Value = selfSharedFeat.Value; } else if (self is SlotOption selfSlotOption && clone is SlotOption cloneSlotOption) { @@ -282,11 +322,14 @@ namespace SabreTools.Data.Extensions } else if (self is Software selfSoftware && clone is Software cloneSoftware) { + cloneSoftware.Description = selfSoftware.Description; cloneSoftware.Supported = selfSoftware.Supported; } else if (self is SoftwareList selfSoftwareList && clone is SoftwareList cloneSoftwareList) { + cloneSoftwareList.Description = selfSoftwareList.Description; cloneSoftwareList.Status = selfSoftwareList.Status; + cloneSoftwareList.Tag = selfSoftwareList.Tag; } else if (self is Video selfVideo && clone is Video cloneVideo) { diff --git a/SabreTools.Data.Models/Metadata/Analog.cs b/SabreTools.Data.Models/Metadata/Analog.cs index 273d159e..4b274e21 100644 --- a/SabreTools.Data.Models/Metadata/Analog.cs +++ b/SabreTools.Data.Models/Metadata/Analog.cs @@ -6,10 +6,9 @@ namespace SabreTools.Data.Models.Metadata [JsonObject("analog"), XmlRoot("analog")] public class Analog : DatItem { - #region Keys + #region Properties - /// string - public const string MaskKey = "mask"; + public string? Mask { get; set; } #endregion diff --git a/SabreTools.Data.Models/Metadata/Archive.cs b/SabreTools.Data.Models/Metadata/Archive.cs index 7217d9ba..35277983 100644 --- a/SabreTools.Data.Models/Metadata/Archive.cs +++ b/SabreTools.Data.Models/Metadata/Archive.cs @@ -8,6 +8,9 @@ namespace SabreTools.Data.Models.Metadata { #region Properties + /// No-Intro DB extension + public string? Description { get; set; } + public string? Name { get; set; } #endregion @@ -71,9 +74,6 @@ namespace SabreTools.Data.Models.Metadata /// string, No-Intro DB extension public const string GameId2Key = "gameid2"; - /// string, No-Intro DB extension - public const string DescriptionKey = "description"; - /// byte, No-Intro DB extension public const string BiosKey = "bios"; diff --git a/SabreTools.Data.Models/Metadata/BiosSet.cs b/SabreTools.Data.Models/Metadata/BiosSet.cs index d7187d2b..ecd1104f 100644 --- a/SabreTools.Data.Models/Metadata/BiosSet.cs +++ b/SabreTools.Data.Models/Metadata/BiosSet.cs @@ -11,17 +11,12 @@ namespace SabreTools.Data.Models.Metadata /// (yes|no) "no" public bool? Default { get; set; } + public string? Description { get; set; } + public string? Name { get; set; } #endregion - #region Keys - - /// string - public const string DescriptionKey = "description"; - - #endregion - public BiosSet() => ItemType = ItemType.BiosSet; } } diff --git a/SabreTools.Data.Models/Metadata/Chip.cs b/SabreTools.Data.Models/Metadata/Chip.cs index 155ed6d3..89f851c2 100644 --- a/SabreTools.Data.Models/Metadata/Chip.cs +++ b/SabreTools.Data.Models/Metadata/Chip.cs @@ -16,6 +16,8 @@ namespace SabreTools.Data.Models.Metadata /// (yes|no) "no" public bool? SoundOnly { get; set; } + public string? Tag { get; set; } + #endregion #region Keys @@ -26,9 +28,6 @@ namespace SabreTools.Data.Models.Metadata /// string public const string FlagsKey = "flags"; - /// string - public const string TagKey = "tag"; - #endregion public Chip() => ItemType = ItemType.Chip; diff --git a/SabreTools.Data.Models/Metadata/Condition.cs b/SabreTools.Data.Models/Metadata/Condition.cs index 8875796b..22cede77 100644 --- a/SabreTools.Data.Models/Metadata/Condition.cs +++ b/SabreTools.Data.Models/Metadata/Condition.cs @@ -8,21 +8,14 @@ namespace SabreTools.Data.Models.Metadata { #region Properties + public string? Mask { get; set; } + /// (eq|ne|gt|le|lt|ge) public Relation? Relation { get; set; } - #endregion + public string? Tag { get; set; } - #region Keys - - /// string - public const string ValueKey = "clock"; - - /// string - public const string MaskKey = "mask"; - - /// string - public const string TagKey = "tag"; + public string? Value { get; set; } #endregion diff --git a/SabreTools.Data.Models/Metadata/ConfSetting.cs b/SabreTools.Data.Models/Metadata/ConfSetting.cs index bd91065f..8e5657a5 100644 --- a/SabreTools.Data.Models/Metadata/ConfSetting.cs +++ b/SabreTools.Data.Models/Metadata/ConfSetting.cs @@ -13,6 +13,8 @@ namespace SabreTools.Data.Models.Metadata public string? Name { get; set; } + public string? Value { get; set; } + #endregion #region Keys @@ -21,9 +23,6 @@ namespace SabreTools.Data.Models.Metadata [NoFilter] public const string ConditionKey = "condition"; - /// string - public const string ValueKey = "value"; - #endregion public ConfSetting() => ItemType = ItemType.ConfSetting; diff --git a/SabreTools.Data.Models/Metadata/Configuration.cs b/SabreTools.Data.Models/Metadata/Configuration.cs index d261bb88..7af991b0 100644 --- a/SabreTools.Data.Models/Metadata/Configuration.cs +++ b/SabreTools.Data.Models/Metadata/Configuration.cs @@ -8,8 +8,12 @@ namespace SabreTools.Data.Models.Metadata { #region Properties + public string? Mask { get; set; } + public string? Name { get; set; } + public string? Tag { get; set; } + #endregion #region Keys @@ -26,12 +30,6 @@ namespace SabreTools.Data.Models.Metadata [NoFilter] public const string ConfSettingKey = "confsetting"; - /// string - public const string MaskKey = "mask"; - - /// string - public const string TagKey = "tag"; - #endregion public Configuration() => ItemType = ItemType.Configuration; diff --git a/SabreTools.Data.Models/Metadata/Device.cs b/SabreTools.Data.Models/Metadata/Device.cs index 6165eb4b..affebcc2 100644 --- a/SabreTools.Data.Models/Metadata/Device.cs +++ b/SabreTools.Data.Models/Metadata/Device.cs @@ -14,6 +14,8 @@ namespace SabreTools.Data.Models.Metadata /// (0|1) "0" public bool? Mandatory { get; set; } + public string? Tag { get; set; } + #endregion #region Keys @@ -32,9 +34,6 @@ namespace SabreTools.Data.Models.Metadata /// string public const string InterfaceKey = "interface"; - /// string - public const string TagKey = "tag"; - #endregion public Device() => ItemType = ItemType.Device; diff --git a/SabreTools.Data.Models/Metadata/DipSwitch.cs b/SabreTools.Data.Models/Metadata/DipSwitch.cs index 7207d926..bb893028 100644 --- a/SabreTools.Data.Models/Metadata/DipSwitch.cs +++ b/SabreTools.Data.Models/Metadata/DipSwitch.cs @@ -11,8 +11,12 @@ namespace SabreTools.Data.Models.Metadata /// (yes|no) "no" public bool? Default { get; set; } + public string? Mask { get; set; } + public string? Name { get; set; } + public string? Tag { get; set; } + #endregion #region Keys @@ -32,12 +36,6 @@ namespace SabreTools.Data.Models.Metadata /// string[] public const string EntryKey = "entry"; - /// string - public const string MaskKey = "mask"; - - /// string - public const string TagKey = "tag"; - #endregion public DipSwitch() => ItemType = ItemType.DipSwitch; diff --git a/SabreTools.Data.Models/Metadata/DipValue.cs b/SabreTools.Data.Models/Metadata/DipValue.cs index 99ab2c6b..cb928ba6 100644 --- a/SabreTools.Data.Models/Metadata/DipValue.cs +++ b/SabreTools.Data.Models/Metadata/DipValue.cs @@ -13,6 +13,8 @@ namespace SabreTools.Data.Models.Metadata public string? Name { get; set; } + public string? Value { get; set; } + #endregion #region Keys @@ -21,9 +23,6 @@ namespace SabreTools.Data.Models.Metadata [NoFilter] public const string ConditionKey = "condition"; - /// string - public const string ValueKey = "value"; - #endregion public DipValue() => ItemType = ItemType.DipValue; diff --git a/SabreTools.Data.Models/Metadata/Display.cs b/SabreTools.Data.Models/Metadata/Display.cs index 71dee49e..c9e8d06e 100644 --- a/SabreTools.Data.Models/Metadata/Display.cs +++ b/SabreTools.Data.Models/Metadata/Display.cs @@ -14,6 +14,8 @@ namespace SabreTools.Data.Models.Metadata /// (yes|no) "no" public bool? FlipX { get; set; } + public string? Tag { get; set; } + #endregion #region Keys @@ -40,9 +42,6 @@ namespace SabreTools.Data.Models.Metadata /// TODO: Convert to enum public const string RotateKey = "rotate"; - /// string - public const string TagKey = "tag"; - /// long public const string VBEndKey = "vbend"; diff --git a/SabreTools.Data.Models/Metadata/Feature.cs b/SabreTools.Data.Models/Metadata/Feature.cs index 0193ad78..ee62f094 100644 --- a/SabreTools.Data.Models/Metadata/Feature.cs +++ b/SabreTools.Data.Models/Metadata/Feature.cs @@ -19,12 +19,7 @@ namespace SabreTools.Data.Models.Metadata /// (unemulated|imperfect) public FeatureStatus? Status { get; set; } - #endregion - - #region Keys - - /// string - public const string ValueKey = "value"; + public string? Value { get; set; } #endregion diff --git a/SabreTools.Data.Models/Metadata/Header.cs b/SabreTools.Data.Models/Metadata/Header.cs index b1a6ca6a..e933e9a6 100644 --- a/SabreTools.Data.Models/Metadata/Header.cs +++ b/SabreTools.Data.Models/Metadata/Header.cs @@ -14,6 +14,8 @@ namespace SabreTools.Data.Models.Metadata /// (yes|no) "no" public bool? Debug { get; set; } + public string? Description { get; set; } + /// (none|split|merged|nonmerged|fullmerged|device|full) "split" public MergingFlag ForceMerging { get; set; } @@ -70,9 +72,6 @@ namespace SabreTools.Data.Models.Metadata /// string public const string DatVersionKey = "datversion"; - /// string - public const string DescriptionKey = "description"; - /// string public const string EmailKey = "email"; diff --git a/SabreTools.Data.Models/Metadata/Info.cs b/SabreTools.Data.Models/Metadata/Info.cs index 7adec396..70032b49 100644 --- a/SabreTools.Data.Models/Metadata/Info.cs +++ b/SabreTools.Data.Models/Metadata/Info.cs @@ -10,12 +10,7 @@ namespace SabreTools.Data.Models.Metadata public string? Name { get; set; } - #endregion - - #region Keys - - /// string - public const string ValueKey = "value"; + public string? Value { get; set; } #endregion diff --git a/SabreTools.Data.Models/Metadata/Machine.cs b/SabreTools.Data.Models/Metadata/Machine.cs index 2bdb8872..dcfd3c8a 100644 --- a/SabreTools.Data.Models/Metadata/Machine.cs +++ b/SabreTools.Data.Models/Metadata/Machine.cs @@ -8,6 +8,8 @@ namespace SabreTools.Data.Models.Metadata { #region Properties + public string? Description { get; set; } + /// (yes|no) "no" public bool? IsBios { get; set; } @@ -76,9 +78,6 @@ namespace SabreTools.Data.Models.Metadata /// string public const string CountryKey = "country"; - /// string - public const string DescriptionKey = "description"; - /// Device[] [NoFilter] public const string DeviceKey = "device"; diff --git a/SabreTools.Data.Models/Metadata/Port.cs b/SabreTools.Data.Models/Metadata/Port.cs index 9a017d7f..16c586ec 100644 --- a/SabreTools.Data.Models/Metadata/Port.cs +++ b/SabreTools.Data.Models/Metadata/Port.cs @@ -6,15 +6,18 @@ namespace SabreTools.Data.Models.Metadata [JsonObject("port"), XmlRoot("port")] public class Port : DatItem { + #region Properties + + public string? Tag { get; set; } + + #endregion + #region Keys /// Analog[] [NoFilter] public const string AnalogKey = "analog"; - /// string - public const string TagKey = "tag"; - #endregion public Port() => ItemType = ItemType.Port; diff --git a/SabreTools.Data.Models/Metadata/Rom.cs b/SabreTools.Data.Models/Metadata/Rom.cs index d021dcc6..9217cfbd 100644 --- a/SabreTools.Data.Models/Metadata/Rom.cs +++ b/SabreTools.Data.Models/Metadata/Rom.cs @@ -37,6 +37,8 @@ namespace SabreTools.Data.Models.Metadata /// (baddump|nodump|good|verified) "good" public ItemStatus? Status { get; set; } + public string? Value { get; set; } + #endregion #region Keys @@ -245,9 +247,6 @@ namespace SabreTools.Data.Models.Metadata /// string; OpenMSX.RomBase public const string OpenMSXType = "type"; - /// string - public const string ValueKey = "value"; - /// string; ArchiveDotOrg.File public const string WhisperASRModuleVersionKey = "whisper_asr_module_version"; diff --git a/SabreTools.Data.Models/Metadata/SharedFeat.cs b/SabreTools.Data.Models/Metadata/SharedFeat.cs index 86df3931..b42c1967 100644 --- a/SabreTools.Data.Models/Metadata/SharedFeat.cs +++ b/SabreTools.Data.Models/Metadata/SharedFeat.cs @@ -10,12 +10,7 @@ namespace SabreTools.Data.Models.Metadata public string? Name { get; set; } - #endregion - - #region Keys - - /// string - public const string ValueKey = "value"; + public string? Value { get; set; } #endregion diff --git a/SabreTools.Data.Models/Metadata/Software.cs b/SabreTools.Data.Models/Metadata/Software.cs index 6819bc82..feb7d209 100644 --- a/SabreTools.Data.Models/Metadata/Software.cs +++ b/SabreTools.Data.Models/Metadata/Software.cs @@ -8,6 +8,8 @@ namespace SabreTools.Data.Models.Metadata { #region Properties + public string? Description { get; set; } + public string? Name { get; set; } /// (yes|partial|no) "yes" @@ -20,9 +22,6 @@ namespace SabreTools.Data.Models.Metadata /// string public const string CloneOfKey = "cloneof"; - /// string - public const string DescriptionKey = "description"; - /// Info[] [NoFilter] public const string InfoKey = "info"; diff --git a/SabreTools.Data.Models/Metadata/SoftwareList.cs b/SabreTools.Data.Models/Metadata/SoftwareList.cs index 9486f3d4..57944cf5 100644 --- a/SabreTools.Data.Models/Metadata/SoftwareList.cs +++ b/SabreTools.Data.Models/Metadata/SoftwareList.cs @@ -8,18 +8,19 @@ namespace SabreTools.Data.Models.Metadata { #region Properties + public string? Description { get; set; } + public string? Name { get; set; } /// (original|compatible) public SoftwareListStatus? Status { get; set; } + public string? Tag { get; set; } + #endregion #region Keys - /// string - public const string DescriptionKey = "description"; - /// string public const string FilterKey = "filter"; @@ -30,9 +31,6 @@ namespace SabreTools.Data.Models.Metadata [NoFilter] public const string SoftwareKey = "software"; - /// string - public const string TagKey = "tag"; - #endregion public SoftwareList() => ItemType = ItemType.SoftwareList; diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.Filtering.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.Filtering.cs index cbe19e54..ac941294 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.Filtering.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.Filtering.cs @@ -80,7 +80,7 @@ namespace SabreTools.Metadata.DatFiles.Test Machine machine = new Machine(); machine.SetName("machine"); - machine.Write(Data.Models.Metadata.Machine.DescriptionKey, "description"); + machine.Description = "description"; DatItem datItem = new Rom(); datItem.Write(DatItem.MachineKey, machine); @@ -96,7 +96,7 @@ namespace SabreTools.Metadata.DatFiles.Test Machine? actualMachine = actual.GetMachine(); Assert.NotNull(actualMachine); Assert.Equal("description", actualMachine.GetName()); - Assert.Equal("description", actualMachine.ReadString(Data.Models.Metadata.Machine.DescriptionKey)); + Assert.Equal("description", actualMachine.Description); } [Fact] @@ -104,7 +104,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Machine machine = new Machine(); machine.SetName("machine"); - machine.Write(Data.Models.Metadata.Machine.DescriptionKey, "description"); + machine.Description = "description"; DatFile datFile = new Logiqx(datFile: null, useGame: false); _ = datFile.AddMachineDB(machine); @@ -113,7 +113,7 @@ namespace SabreTools.Metadata.DatFiles.Test Machine actualMachine = Assert.Single(datFile.GetMachinesDB()).Value; Assert.Equal("description", actualMachine.GetName()); - Assert.Equal("description", actualMachine.ReadString(Data.Models.Metadata.Machine.DescriptionKey)); + Assert.Equal("description", actualMachine.Description); } #endregion diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs index 117109d3..fbcafd79 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs @@ -210,7 +210,7 @@ namespace SabreTools.Metadata.DatFiles.Test [Data.Models.Metadata.Header.DateKey] = "date", [Data.Models.Metadata.Header.DatVersionKey] = "datversion", Debug = true, - [Data.Models.Metadata.Header.DescriptionKey] = "description", + Description = "description", [Data.Models.Metadata.Header.EmailKey] = "email", [Data.Models.Metadata.Header.EmulatorVersionKey] = "emulatorversion", ForceMerging = Data.Models.Metadata.MergingFlag.Merged, @@ -266,7 +266,7 @@ namespace SabreTools.Metadata.DatFiles.Test [Data.Models.Metadata.Machine.ConfigurationKey] = new Data.Models.Metadata.Configuration[] { CreateMetadataConfiguration() }, [Data.Models.Metadata.Machine.ControlKey] = "control", [Data.Models.Metadata.Machine.CountryKey] = "country", - [Data.Models.Metadata.Machine.DescriptionKey] = "description", + Description = "description", [Data.Models.Metadata.Machine.DeviceKey] = new Data.Models.Metadata.Device[] { CreateMetadataDevice() }, [Data.Models.Metadata.Machine.DeviceRefKey] = new Data.Models.Metadata.DeviceRef[] { CreateMetadataDeviceRef() }, [Data.Models.Metadata.Machine.DipSwitchKey] = new Data.Models.Metadata.DipSwitch[] { CreateMetadataDipSwitch() }, @@ -346,7 +346,7 @@ namespace SabreTools.Metadata.DatFiles.Test { return new Data.Models.Metadata.Analog { - [Data.Models.Metadata.Analog.MaskKey] = "mask", + Mask = "mask", }; } @@ -374,7 +374,7 @@ namespace SabreTools.Metadata.DatFiles.Test [Data.Models.Metadata.Archive.AltKey] = "alt", [Data.Models.Metadata.Archive.GameId1Key] = "gameid1", [Data.Models.Metadata.Archive.GameId2Key] = "gameid2", - [Data.Models.Metadata.Archive.DescriptionKey] = "description", + Description = "description", [Data.Models.Metadata.Archive.BiosKey] = "bios", [Data.Models.Metadata.Archive.LicensedKey] = "licensed", [Data.Models.Metadata.Archive.PirateKey] = "pirate", @@ -395,7 +395,7 @@ namespace SabreTools.Metadata.DatFiles.Test return new Data.Models.Metadata.BiosSet { Default = true, - [Data.Models.Metadata.BiosSet.DescriptionKey] = "description", + Description = "description", Name = "name", }; } @@ -408,7 +408,7 @@ namespace SabreTools.Metadata.DatFiles.Test [Data.Models.Metadata.Chip.FlagsKey] = "flags", Name = "name", SoundOnly = true, - [Data.Models.Metadata.Chip.TagKey] = "tag", + Tag = "tag", ChipType = Data.Models.Metadata.ChipType.CPU, }; } @@ -420,9 +420,9 @@ namespace SabreTools.Metadata.DatFiles.Test [Data.Models.Metadata.Configuration.ConditionKey] = CreateMetadataCondition(), [Data.Models.Metadata.Configuration.ConfLocationKey] = new Data.Models.Metadata.ConfLocation[] { CreateMetadataConfLocation() }, [Data.Models.Metadata.Configuration.ConfSettingKey] = new Data.Models.Metadata.ConfSetting[] { CreateMetadataConfSetting() }, - [Data.Models.Metadata.Configuration.MaskKey] = "mask", + Mask = "mask", Name = "name", - [Data.Models.Metadata.Configuration.TagKey] = "tag", + Tag = "tag", }; } @@ -430,10 +430,10 @@ namespace SabreTools.Metadata.DatFiles.Test { return new Data.Models.Metadata.Condition { - [Data.Models.Metadata.Condition.ValueKey] = "value", - [Data.Models.Metadata.Condition.MaskKey] = "mask", + Value = "value", + Mask = "mask", Relation = Data.Models.Metadata.Relation.Equal, - [Data.Models.Metadata.Condition.TagKey] = "tag", + Tag = "tag", }; } @@ -454,7 +454,7 @@ namespace SabreTools.Metadata.DatFiles.Test [Data.Models.Metadata.ConfSetting.ConditionKey] = CreateMetadataCondition(), Default = true, Name = "name", - [Data.Models.Metadata.ConfSetting.ValueKey] = "value", + Value = "value", }; } @@ -486,7 +486,7 @@ namespace SabreTools.Metadata.DatFiles.Test [Data.Models.Metadata.Device.InstanceKey] = CreateMetadataInstance(), [Data.Models.Metadata.Device.InterfaceKey] = "interface", Mandatory = true, - [Data.Models.Metadata.Device.TagKey] = "tag", + Tag = "tag", DeviceType = Data.Models.Metadata.DeviceType.PunchTape, }; } @@ -518,9 +518,9 @@ namespace SabreTools.Metadata.DatFiles.Test [Data.Models.Metadata.DipSwitch.DipLocationKey] = new Data.Models.Metadata.DipLocation[] { CreateMetadataDipLocation() }, [Data.Models.Metadata.DipSwitch.DipValueKey] = new Data.Models.Metadata.DipValue[] { CreateMetadataDipValue() }, [Data.Models.Metadata.DipSwitch.EntryKey] = new string[] { "entry" }, - [Data.Models.Metadata.DipSwitch.MaskKey] = "mask", + Mask = "mask", Name = "name", - [Data.Models.Metadata.DipSwitch.TagKey] = "tag", + Tag = "tag", }; } @@ -531,7 +531,7 @@ namespace SabreTools.Metadata.DatFiles.Test [Data.Models.Metadata.DipValue.ConditionKey] = CreateMetadataCondition(), Default = true, Name = "name", - [Data.Models.Metadata.DipValue.ValueKey] = "value", + Value = "value", }; } @@ -584,7 +584,7 @@ namespace SabreTools.Metadata.DatFiles.Test [Data.Models.Metadata.Display.PixClockKey] = 12345L, [Data.Models.Metadata.Display.RefreshKey] = 12345L, [Data.Models.Metadata.Display.RotateKey] = 90, - [Data.Models.Metadata.Display.TagKey] = "tag", + Tag = "tag", DisplayType = Data.Models.Metadata.DisplayType.Vector, [Data.Models.Metadata.Display.VBEndKey] = 12345L, [Data.Models.Metadata.Display.VBStartKey] = 12345L, @@ -643,7 +643,7 @@ namespace SabreTools.Metadata.DatFiles.Test Overall = Data.Models.Metadata.FeatureStatus.Imperfect, Status = Data.Models.Metadata.FeatureStatus.Imperfect, FeatureType = Data.Models.Metadata.FeatureType.Protection, - [Data.Models.Metadata.Feature.ValueKey] = "value", + Value = "value", }; } @@ -652,7 +652,7 @@ namespace SabreTools.Metadata.DatFiles.Test return new Data.Models.Metadata.Info { Name = "name", - [Data.Models.Metadata.Info.ValueKey] = "value", + Value = "value", }; } @@ -717,7 +717,7 @@ namespace SabreTools.Metadata.DatFiles.Test return new Data.Models.Metadata.Port { [Data.Models.Metadata.Port.AnalogKey] = new Data.Models.Metadata.Analog[] { CreateMetadataAnalog() }, - [Data.Models.Metadata.Port.TagKey] = "tag", + Tag = "tag", }; } @@ -848,7 +848,7 @@ namespace SabreTools.Metadata.DatFiles.Test [Data.Models.Metadata.Rom.TitleKey] = "title", [Data.Models.Metadata.Rom.TrackKey] = "track", [Data.Models.Metadata.Rom.OpenMSXType] = "type", - [Data.Models.Metadata.Rom.ValueKey] = "value", + Value = "value", [Data.Models.Metadata.Rom.WhisperASRModuleVersionKey] = "whisper_asr_module_version", [Data.Models.Metadata.Rom.WhisperModelHashKey] = "whisper_model_hash", [Data.Models.Metadata.Rom.WhisperModelNameKey] = "whisper_model_name", @@ -903,7 +903,7 @@ namespace SabreTools.Metadata.DatFiles.Test return new Data.Models.Metadata.SharedFeat { Name = "name", - [Data.Models.Metadata.SharedFeat.ValueKey] = "value", + Value = "value", }; } @@ -931,7 +931,7 @@ namespace SabreTools.Metadata.DatFiles.Test return new Data.Models.Metadata.Software { [Data.Models.Metadata.Software.CloneOfKey] = "cloneof", - [Data.Models.Metadata.Software.DescriptionKey] = "description", + Description = "description", [Data.Models.Metadata.Software.InfoKey] = new Data.Models.Metadata.Info[] { CreateMetadataInfo() }, Name = "name", [Data.Models.Metadata.Software.NotesKey] = "notes", @@ -947,13 +947,13 @@ namespace SabreTools.Metadata.DatFiles.Test { return new Data.Models.Metadata.SoftwareList { - [Data.Models.Metadata.SoftwareList.DescriptionKey] = "description", + Description = "description", [Data.Models.Metadata.SoftwareList.FilterKey] = "filter", Name = "name", [Data.Models.Metadata.SoftwareList.NotesKey] = "notes", [Data.Models.Metadata.SoftwareList.SoftwareKey] = new Data.Models.Metadata.Software[] { CreateMetadataSoftware() }, Status = Data.Models.Metadata.SoftwareListStatus.Original, - [Data.Models.Metadata.SoftwareList.TagKey] = "tag", + Tag = "tag", }; } @@ -1046,7 +1046,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("date", datHeader.ReadString(Data.Models.Metadata.Header.DateKey)); Assert.Equal("datversion", datHeader.ReadString(Data.Models.Metadata.Header.DatVersionKey)); Assert.True(datHeader.Debug); - Assert.Equal("description", datHeader.ReadString(Data.Models.Metadata.Header.DescriptionKey)); + Assert.Equal("description", datHeader.Description); Assert.Equal("email", datHeader.ReadString(Data.Models.Metadata.Header.EmailKey)); Assert.Equal("emulatorversion", datHeader.ReadString(Data.Models.Metadata.Header.EmulatorVersionKey)); Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, datHeader.ForceMerging); @@ -1095,7 +1095,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("company", machine.ReadString(Data.Models.Metadata.Machine.CompanyKey)); Assert.Equal("control", machine.ReadString(Data.Models.Metadata.Machine.ControlKey)); Assert.Equal("country", machine.ReadString(Data.Models.Metadata.Machine.CountryKey)); - Assert.Equal("description", machine.ReadString(Data.Models.Metadata.Machine.DescriptionKey)); + Assert.Equal("description", machine.Description); Assert.Equal("dirname", machine.ReadString(Data.Models.Metadata.Machine.DirNameKey)); Assert.Equal("displaycount", machine.ReadString(Data.Models.Metadata.Machine.DisplayCountKey)); Assert.Equal("displaytype", machine.ReadString(Data.Models.Metadata.Machine.DisplayTypeKey)); @@ -1154,7 +1154,7 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateAnalog(Analog? analog) { Assert.NotNull(analog); - Assert.Equal("mask", analog.ReadString(Data.Models.Metadata.Analog.MaskKey)); + Assert.Equal("mask", analog.Mask); } private static void ValidateArchive(Archive? archive) @@ -1167,7 +1167,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Assert.NotNull(biosSet); Assert.True(biosSet.Default); - Assert.Equal("description", biosSet.ReadString(Data.Models.Metadata.BiosSet.DescriptionKey)); + Assert.Equal("description", biosSet.Description); Assert.Equal("name", biosSet.GetName()); } @@ -1178,25 +1178,25 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("flags", chip.ReadString(Data.Models.Metadata.Chip.FlagsKey)); Assert.Equal("name", chip.GetName()); Assert.True(chip.SoundOnly); - Assert.Equal("tag", chip.ReadString(Data.Models.Metadata.Chip.TagKey)); + Assert.Equal("tag", chip.Tag); Assert.Equal(Data.Models.Metadata.ChipType.CPU, chip.ChipType); } private static void ValidateCondition(Condition? condition) { Assert.NotNull(condition); - Assert.Equal("value", condition.ReadString(Data.Models.Metadata.Condition.ValueKey)); - Assert.Equal("mask", condition.ReadString(Data.Models.Metadata.Condition.MaskKey)); + Assert.Equal("value", condition.Value); + Assert.Equal("mask", condition.Mask); Assert.Equal(Data.Models.Metadata.Relation.Equal, condition.Relation); - Assert.Equal("tag", condition.ReadString(Data.Models.Metadata.Condition.TagKey)); + Assert.Equal("tag", condition.Tag); } private static void ValidateConfiguration(Configuration? configuration) { Assert.NotNull(configuration); - Assert.Equal("mask", configuration.ReadString(Data.Models.Metadata.Configuration.MaskKey)); + Assert.Equal("mask", configuration.Mask); Assert.Equal("name", configuration.GetName()); - Assert.Equal("tag", configuration.ReadString(Data.Models.Metadata.Configuration.TagKey)); + Assert.Equal("tag", configuration.Tag); Condition? condition = configuration.Read(Data.Models.Metadata.Configuration.ConditionKey); ValidateCondition(condition); @@ -1225,7 +1225,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(confSetting); Assert.True(confSetting.Default); Assert.Equal("name", confSetting.GetName()); - Assert.Equal("value", confSetting.ReadString(Data.Models.Metadata.ConfSetting.ValueKey)); + Assert.Equal("value", confSetting.Value); Condition? condition = confSetting.Read(Data.Models.Metadata.ConfSetting.ConditionKey); ValidateCondition(condition); @@ -1263,7 +1263,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("fixedimage", device.ReadString(Data.Models.Metadata.Device.FixedImageKey)); Assert.Equal("interface", device.ReadString(Data.Models.Metadata.Device.InterfaceKey)); Assert.Equal(true, device.Mandatory); - Assert.Equal("tag", device.ReadString(Data.Models.Metadata.Device.TagKey)); + Assert.Equal("tag", device.Tag); Assert.Equal(Data.Models.Metadata.DeviceType.PunchTape, device.DeviceType); Extension[]? extensions = device.Read(Data.Models.Metadata.Device.ExtensionKey); @@ -1293,9 +1293,9 @@ namespace SabreTools.Metadata.DatFiles.Test { Assert.NotNull(dipSwitch); Assert.True(dipSwitch.Default); - Assert.Equal("mask", dipSwitch.ReadString(Data.Models.Metadata.DipSwitch.MaskKey)); + Assert.Equal("mask", dipSwitch.Mask); Assert.Equal("name", dipSwitch.GetName()); - Assert.Equal("tag", dipSwitch.ReadString(Data.Models.Metadata.DipSwitch.TagKey)); + Assert.Equal("tag", dipSwitch.Tag); Condition? condition = dipSwitch.Read(Data.Models.Metadata.DipSwitch.ConditionKey); ValidateCondition(condition); @@ -1321,7 +1321,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(dipValue); Assert.True(dipValue.Default); Assert.Equal("name", dipValue.GetName()); - Assert.Equal("value", dipValue.ReadString(Data.Models.Metadata.DipValue.ValueKey)); + Assert.Equal("value", dipValue.Value); Condition? condition = dipValue.Read(Data.Models.Metadata.DipValue.ConditionKey); ValidateCondition(condition); @@ -1358,7 +1358,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Display.PixClockKey)); Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Display.RefreshKey)); Assert.Equal(90, display.ReadLong(Data.Models.Metadata.Display.RotateKey)); - Assert.Equal("tag", display.ReadString(Data.Models.Metadata.Display.TagKey)); + Assert.Equal("tag", display.Tag); Assert.Equal(Data.Models.Metadata.DisplayType.Vector, display.DisplayType); Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Display.VBEndKey)); Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Display.VBStartKey)); @@ -1396,14 +1396,14 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal(Data.Models.Metadata.FeatureStatus.Imperfect, feature.Overall); Assert.Equal(Data.Models.Metadata.FeatureStatus.Imperfect, feature.Status); Assert.Equal(Data.Models.Metadata.FeatureType.Protection, feature.FeatureType); - Assert.Equal("value", feature.ReadString(Data.Models.Metadata.Feature.ValueKey)); + Assert.Equal("value", feature.Value); } private static void ValidateInfo(Info? info) { Assert.NotNull(info); Assert.Equal("name", info.GetName()); - Assert.Equal("value", info.ReadString(Data.Models.Metadata.Info.ValueKey)); + Assert.Equal("value", info.Value); } private static void ValidateInput(Input? input) @@ -1452,7 +1452,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal(Data.Models.Metadata.FeatureStatus.Imperfect, partFeature.Overall); Assert.Equal(Data.Models.Metadata.FeatureStatus.Imperfect, partFeature.Status); Assert.Equal(Data.Models.Metadata.FeatureType.Protection, partFeature.FeatureType); - Assert.Equal("value", partFeature.ReadString(Data.Models.Metadata.Feature.ValueKey)); + Assert.Equal("value", partFeature.Value); Part? part = partFeature.Read(PartFeature.PartKey); ValidatePart(part); @@ -1461,7 +1461,7 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidatePort(Port? port) { Assert.NotNull(port); - Assert.Equal("tag", port.ReadString(Data.Models.Metadata.Port.TagKey)); + Assert.Equal("tag", port.Tag); Analog[]? dipValues = port.Read(Data.Models.Metadata.Port.AnalogKey); Assert.NotNull(dipValues); @@ -1568,7 +1568,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("title", rom.ReadString(Data.Models.Metadata.Rom.TitleKey)); Assert.Equal("track", rom.ReadString(Data.Models.Metadata.Rom.TrackKey)); Assert.Equal("type", rom.ReadString(Data.Models.Metadata.Rom.OpenMSXType)); - Assert.Equal("value", rom.ReadString(Data.Models.Metadata.Rom.ValueKey)); + Assert.Equal("value", rom.Value); Assert.Equal("whisper_asr_module_version", rom.ReadString(Data.Models.Metadata.Rom.WhisperASRModuleVersionKey)); Assert.Equal("whisper_model_hash", rom.ReadString(Data.Models.Metadata.Rom.WhisperModelHashKey)); Assert.Equal("whisper_model_name", rom.ReadString(Data.Models.Metadata.Rom.WhisperModelNameKey)); @@ -1598,7 +1598,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Assert.NotNull(sharedFeat); Assert.Equal("name", sharedFeat.GetName()); - Assert.Equal("value", sharedFeat.ReadString(Data.Models.Metadata.SharedFeat.ValueKey)); + Assert.Equal("value", sharedFeat.Value); } private static void ValidateSlot(Slot? slot) @@ -1623,13 +1623,13 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateSoftwareList(SoftwareList? softwareList) { Assert.NotNull(softwareList); - Assert.Equal("description", softwareList.ReadString(Data.Models.Metadata.SoftwareList.DescriptionKey)); + Assert.Equal("description", softwareList.Description); Assert.Equal("filter", softwareList.ReadString(Data.Models.Metadata.SoftwareList.FilterKey)); Assert.Equal("name", softwareList.GetName()); 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(Data.Models.Metadata.SoftwareListStatus.Original, softwareList.Status); - Assert.Equal("tag", softwareList.ReadString(Data.Models.Metadata.SoftwareList.TagKey)); + Assert.Equal("tag", softwareList.Tag); } 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 7e7e06a2..8b1a63a1 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs @@ -382,7 +382,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("date", header.ReadString(Data.Models.Metadata.Header.DateKey)); Assert.Equal("datversion", header.ReadString(Data.Models.Metadata.Header.DatVersionKey)); Assert.True(header.Debug); - Assert.Equal("description", header.ReadString(Data.Models.Metadata.Header.DescriptionKey)); + Assert.Equal("description", header.Description); Assert.Equal("email", header.ReadString(Data.Models.Metadata.Header.EmailKey)); Assert.Equal("emulatorversion", header.ReadString(Data.Models.Metadata.Header.EmulatorVersionKey)); Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, header.ForceMerging); @@ -430,7 +430,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("company", machine.ReadString(Data.Models.Metadata.Machine.CompanyKey)); Assert.Equal("control", machine.ReadString(Data.Models.Metadata.Machine.ControlKey)); Assert.Equal("country", machine.ReadString(Data.Models.Metadata.Machine.CountryKey)); - Assert.Equal("description", machine.ReadString(Data.Models.Metadata.Machine.DescriptionKey)); + Assert.Equal("description", machine.Description); Assert.Equal("dirname", machine.ReadString(Data.Models.Metadata.Machine.DirNameKey)); Assert.Equal("displaycount", machine.ReadString(Data.Models.Metadata.Machine.DisplayCountKey)); Assert.Equal("displaytype", machine.ReadString(Data.Models.Metadata.Machine.DisplayTypeKey)); @@ -629,7 +629,7 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateMetadataAnalog(Data.Models.Metadata.Analog? analog) { Assert.NotNull(analog); - Assert.Equal("mask", analog.ReadString(Data.Models.Metadata.Analog.MaskKey)); + Assert.Equal("mask", analog.Mask); } private static void ValidateMetadataArchive(Data.Models.Metadata.Archive? archive) @@ -655,7 +655,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("alt", archive.ReadString(Data.Models.Metadata.Archive.AltKey)); Assert.Equal("gameid1", archive.ReadString(Data.Models.Metadata.Archive.GameId1Key)); Assert.Equal("gameid2", archive.ReadString(Data.Models.Metadata.Archive.GameId2Key)); - Assert.Equal("description", archive.ReadString(Data.Models.Metadata.Archive.DescriptionKey)); + Assert.Equal("description", archive.Description); Assert.Equal("bios", archive.ReadString(Data.Models.Metadata.Archive.BiosKey)); Assert.Equal("licensed", archive.ReadString(Data.Models.Metadata.Archive.LicensedKey)); Assert.Equal("pirate", archive.ReadString(Data.Models.Metadata.Archive.PirateKey)); @@ -674,7 +674,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Assert.NotNull(biosSet); Assert.True(biosSet.Default); - Assert.Equal("description", biosSet.ReadString(Data.Models.Metadata.BiosSet.DescriptionKey)); + Assert.Equal("description", biosSet.Description); Assert.Equal("name", biosSet.Name); } @@ -685,25 +685,25 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("flags", chip.ReadString(Data.Models.Metadata.Chip.FlagsKey)); Assert.Equal("name", chip.Name); Assert.True(chip.SoundOnly); - Assert.Equal("tag", chip.ReadString(Data.Models.Metadata.Chip.TagKey)); + Assert.Equal("tag", chip.Tag); Assert.Equal(Data.Models.Metadata.ChipType.CPU, chip.ChipType); } private static void ValidateMetadataCondition(Data.Models.Metadata.Condition? condition) { Assert.NotNull(condition); - Assert.Equal("value", condition.ReadString(Data.Models.Metadata.Condition.ValueKey)); - Assert.Equal("mask", condition.ReadString(Data.Models.Metadata.Condition.MaskKey)); + Assert.Equal("value", condition.Value); + Assert.Equal("mask", condition.Mask); Assert.Equal(Data.Models.Metadata.Relation.Equal, condition.Relation); - Assert.Equal("tag", condition.ReadString(Data.Models.Metadata.Condition.TagKey)); + Assert.Equal("tag", condition.Tag); } private static void ValidateMetadataConfiguration(Data.Models.Metadata.Configuration? configuration) { Assert.NotNull(configuration); - Assert.Equal("mask", configuration.ReadString(Data.Models.Metadata.Configuration.MaskKey)); + Assert.Equal("mask", configuration.Mask); Assert.Equal("name", configuration.Name); - Assert.Equal("tag", configuration.ReadString(Data.Models.Metadata.Configuration.TagKey)); + Assert.Equal("tag", configuration.Tag); Data.Models.Metadata.Condition? condition = configuration.Read(Data.Models.Metadata.Configuration.ConditionKey); ValidateMetadataCondition(condition); @@ -732,7 +732,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(confSetting); Assert.True(confSetting.Default); Assert.Equal("name", confSetting.Name); - Assert.Equal("value", confSetting.ReadString(Data.Models.Metadata.ConfSetting.ValueKey)); + Assert.Equal("value", confSetting.Value); Data.Models.Metadata.Condition? condition = confSetting.Read(Data.Models.Metadata.ConfSetting.ConditionKey); ValidateMetadataCondition(condition); @@ -775,7 +775,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("fixedimage", device.ReadString(Data.Models.Metadata.Device.FixedImageKey)); Assert.Equal("interface", device.ReadString(Data.Models.Metadata.Device.InterfaceKey)); Assert.Equal(true, device.Mandatory); - Assert.Equal("tag", device.ReadString(Data.Models.Metadata.Device.TagKey)); + Assert.Equal("tag", device.Tag); Assert.Equal(Data.Models.Metadata.DeviceType.PunchTape, device.DeviceType); Data.Models.Metadata.Extension[]? extensions = device.ReadArray(Data.Models.Metadata.Device.ExtensionKey); @@ -805,9 +805,9 @@ namespace SabreTools.Metadata.DatFiles.Test { Assert.NotNull(dipSwitch); Assert.True(dipSwitch.Default); - Assert.Equal("mask", dipSwitch.ReadString(Data.Models.Metadata.DipSwitch.MaskKey)); + Assert.Equal("mask", dipSwitch.Mask); Assert.Equal("name", dipSwitch.Name); - Assert.Equal("tag", dipSwitch.ReadString(Data.Models.Metadata.DipSwitch.TagKey)); + Assert.Equal("tag", dipSwitch.Tag); Data.Models.Metadata.Condition? condition = dipSwitch.Read(Data.Models.Metadata.DipSwitch.ConditionKey); ValidateMetadataCondition(condition); @@ -833,7 +833,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(dipValue); Assert.True(dipValue.Default); Assert.Equal("name", dipValue.Name); - Assert.Equal("value", dipValue.ReadString(Data.Models.Metadata.DipValue.ValueKey)); + Assert.Equal("value", dipValue.Value); Data.Models.Metadata.Condition? condition = dipValue.Read(Data.Models.Metadata.DipValue.ConditionKey); ValidateMetadataCondition(condition); @@ -875,7 +875,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal(12345, display.ReadLong(Data.Models.Metadata.Display.PixClockKey)); Assert.Equal(12345, display.ReadLong(Data.Models.Metadata.Display.RefreshKey)); Assert.Equal(90, display.ReadLong(Data.Models.Metadata.Display.RotateKey)); - Assert.Equal("tag", display.ReadString(Data.Models.Metadata.Display.TagKey)); + Assert.Equal("tag", display.Tag); Assert.Equal(Data.Models.Metadata.DisplayType.Vector, display.DisplayType); Assert.Equal(12345, display.ReadLong(Data.Models.Metadata.Display.VBEndKey)); Assert.Equal(12345, display.ReadLong(Data.Models.Metadata.Display.VBStartKey)); @@ -913,14 +913,14 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal(Data.Models.Metadata.FeatureStatus.Imperfect, feature.Overall); Assert.Equal(Data.Models.Metadata.FeatureStatus.Imperfect, feature.Status); Assert.Equal(Data.Models.Metadata.FeatureType.Protection, feature.FeatureType); - Assert.Equal("value", feature.ReadString(Data.Models.Metadata.Feature.ValueKey)); + Assert.Equal("value", feature.Value); } private static void ValidateMetadataInfo(Data.Models.Metadata.Info? info) { Assert.NotNull(info); Assert.Equal("name", info.Name); - Assert.Equal("value", info.ReadString(Data.Models.Metadata.Info.ValueKey)); + Assert.Equal("value", info.Value); } private static void ValidateMetadataInput(Data.Models.Metadata.Input? input) @@ -985,7 +985,7 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateMetadataPort(Data.Models.Metadata.Port? port) { Assert.NotNull(port); - Assert.Equal("tag", port.ReadString(Data.Models.Metadata.Port.TagKey)); + Assert.Equal("tag", port.Tag); Data.Models.Metadata.Analog[]? dipValues = port.ReadArray(Data.Models.Metadata.Port.AnalogKey); Assert.NotNull(dipValues); @@ -1113,7 +1113,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("title", rom.ReadString(Data.Models.Metadata.Rom.TitleKey)); Assert.Equal("track", rom.ReadString(Data.Models.Metadata.Rom.TrackKey)); Assert.Equal("type", rom.ReadString(Data.Models.Metadata.Rom.OpenMSXType)); - Assert.Equal("value", rom.ReadString(Data.Models.Metadata.Rom.ValueKey)); + Assert.Equal("value", rom.Value); Assert.Equal("whisper_asr_module_version", rom.ReadString(Data.Models.Metadata.Rom.WhisperASRModuleVersionKey)); Assert.Equal("whisper_model_hash", rom.ReadString(Data.Models.Metadata.Rom.WhisperModelHashKey)); Assert.Equal("whisper_model_name", rom.ReadString(Data.Models.Metadata.Rom.WhisperModelNameKey)); @@ -1162,7 +1162,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Assert.NotNull(sharedFeat); Assert.Equal("name", sharedFeat.Name); - Assert.Equal("value", sharedFeat.ReadString(Data.Models.Metadata.SharedFeat.ValueKey)); + Assert.Equal("value", sharedFeat.Value); } private static void ValidateMetadataSlot(Data.Models.Metadata.Slot? slot) @@ -1187,12 +1187,12 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateMetadataSoftwareList(Data.Models.Metadata.SoftwareList? softwareList) { Assert.NotNull(softwareList); - Assert.Equal("description", softwareList.ReadString(Data.Models.Metadata.SoftwareList.DescriptionKey)); + Assert.Equal("description", softwareList.Description); Assert.Equal("filter", softwareList.ReadString(Data.Models.Metadata.SoftwareList.FilterKey)); Assert.Equal("name", softwareList.Name); Assert.Equal("notes", softwareList.ReadString(Data.Models.Metadata.SoftwareList.NotesKey)); Assert.Equal(Data.Models.Metadata.SoftwareListStatus.Original, softwareList.Status); - Assert.Equal("tag", softwareList.ReadString(Data.Models.Metadata.SoftwareList.TagKey)); + Assert.Equal("tag", softwareList.Tag); // TODO: Figure out why Data.Models.Metadata.SoftwareList.SoftwareKey doesn't get processed } diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.cs index a0cb87f8..feace456 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.cs @@ -114,14 +114,14 @@ namespace SabreTools.Metadata.DatFiles.Test { DatFile datFile = new Logiqx(datFile: null, useGame: false); datFile.Header.Name = string.Empty; - datFile.Header.Write(Data.Models.Metadata.Header.DescriptionKey, string.Empty); + datFile.Header.Description = string.Empty; datFile.Header.Write(Data.Models.Metadata.Header.DateKey, "1980-01-01"); string path = Path.Combine("Fake", "Path", "Filename"); datFile.FillHeaderFromPath(path, false); Assert.Equal("Filename (1980-01-01)", datFile.Header.Name); - Assert.Equal("Filename (1980-01-01)", datFile.Header.ReadString(Data.Models.Metadata.Header.DescriptionKey)); + Assert.Equal("Filename (1980-01-01)", datFile.Header.Description); } [Fact] @@ -129,14 +129,14 @@ namespace SabreTools.Metadata.DatFiles.Test { DatFile datFile = new Logiqx(datFile: null, useGame: false); datFile.Header.Name = string.Empty; - datFile.Header.Write(Data.Models.Metadata.Header.DescriptionKey, string.Empty); + datFile.Header.Description = string.Empty; datFile.Header.Write(Data.Models.Metadata.Header.DateKey, "1980-01-01"); string path = Path.Combine("Fake", "Path", "Filename"); datFile.FillHeaderFromPath(path, true); Assert.Equal("Filename", datFile.Header.Name); - Assert.Equal("Filename", datFile.Header.ReadString(Data.Models.Metadata.Header.DescriptionKey)); + Assert.Equal("Filename", datFile.Header.Description); } [Fact] @@ -144,14 +144,14 @@ namespace SabreTools.Metadata.DatFiles.Test { DatFile datFile = new Logiqx(datFile: null, useGame: false); datFile.Header.Name = string.Empty; - datFile.Header.Write(Data.Models.Metadata.Header.DescriptionKey, "Description"); + datFile.Header.Description = "Description"; datFile.Header.Write(Data.Models.Metadata.Header.DateKey, "1980-01-01"); string path = Path.Combine("Fake", "Path", "Filename"); datFile.FillHeaderFromPath(path, false); Assert.Equal("Description (1980-01-01)", datFile.Header.Name); - Assert.Equal("Description", datFile.Header.ReadString(Data.Models.Metadata.Header.DescriptionKey)); + Assert.Equal("Description", datFile.Header.Description); } [Fact] @@ -159,14 +159,14 @@ namespace SabreTools.Metadata.DatFiles.Test { DatFile datFile = new Logiqx(datFile: null, useGame: false); datFile.Header.Name = string.Empty; - datFile.Header.Write(Data.Models.Metadata.Header.DescriptionKey, "Description"); + datFile.Header.Description = "Description"; datFile.Header.Write(Data.Models.Metadata.Header.DateKey, "1980-01-01"); string path = Path.Combine("Fake", "Path", "Filename"); datFile.FillHeaderFromPath(path, true); Assert.Equal("Description", datFile.Header.Name); - Assert.Equal("Description", datFile.Header.ReadString(Data.Models.Metadata.Header.DescriptionKey)); + Assert.Equal("Description", datFile.Header.Description); } [Fact] @@ -174,14 +174,14 @@ namespace SabreTools.Metadata.DatFiles.Test { DatFile datFile = new Logiqx(datFile: null, useGame: false); datFile.Header.Name = "Name"; - datFile.Header.Write(Data.Models.Metadata.Header.DescriptionKey, string.Empty); + datFile.Header.Description = string.Empty; datFile.Header.Write(Data.Models.Metadata.Header.DateKey, "1980-01-01"); string path = Path.Combine("Fake", "Path", "Filename"); datFile.FillHeaderFromPath(path, false); Assert.Equal("Name", datFile.Header.Name); - Assert.Equal("Name (1980-01-01)", datFile.Header.ReadString(Data.Models.Metadata.Header.DescriptionKey)); + Assert.Equal("Name (1980-01-01)", datFile.Header.Description); } [Fact] @@ -189,14 +189,14 @@ namespace SabreTools.Metadata.DatFiles.Test { DatFile datFile = new Logiqx(datFile: null, useGame: false); datFile.Header.Name = "Name"; - datFile.Header.Write(Data.Models.Metadata.Header.DescriptionKey, string.Empty); + datFile.Header.Description = string.Empty; datFile.Header.Write(Data.Models.Metadata.Header.DateKey, "1980-01-01"); string path = Path.Combine("Fake", "Path", "Filename"); datFile.FillHeaderFromPath(path, true); Assert.Equal("Name", datFile.Header.Name); - Assert.Equal("Name", datFile.Header.ReadString(Data.Models.Metadata.Header.DescriptionKey)); + Assert.Equal("Name", datFile.Header.Description); } [Fact] @@ -204,14 +204,14 @@ namespace SabreTools.Metadata.DatFiles.Test { DatFile datFile = new Logiqx(datFile: null, useGame: false); datFile.Header.Name = "Name"; - datFile.Header.Write(Data.Models.Metadata.Header.DescriptionKey, "Description"); + datFile.Header.Description = "Description"; datFile.Header.Write(Data.Models.Metadata.Header.DateKey, "1980-01-01"); string path = Path.Combine("Fake", "Path", "Filename"); datFile.FillHeaderFromPath(path, false); Assert.Equal("Name", datFile.Header.Name); - Assert.Equal("Description", datFile.Header.ReadString(Data.Models.Metadata.Header.DescriptionKey)); + Assert.Equal("Description", datFile.Header.Description); } [Fact] @@ -219,14 +219,14 @@ namespace SabreTools.Metadata.DatFiles.Test { DatFile datFile = new Logiqx(datFile: null, useGame: false); datFile.Header.Name = "Name "; - datFile.Header.Write(Data.Models.Metadata.Header.DescriptionKey, "Description "); + datFile.Header.Description = "Description "; datFile.Header.Write(Data.Models.Metadata.Header.DateKey, "1980-01-01"); string path = Path.Combine("Fake", "Path", "Filename"); datFile.FillHeaderFromPath(path, true); Assert.Equal("Name", datFile.Header.Name); - Assert.Equal("Description", datFile.Header.ReadString(Data.Models.Metadata.Header.DescriptionKey)); + Assert.Equal("Description", datFile.Header.Description); } #endregion diff --git a/SabreTools.Metadata.DatFiles.Test/FormatsTests.cs b/SabreTools.Metadata.DatFiles.Test/FormatsTests.cs index 2e64dcb6..d1aa5ba8 100644 --- a/SabreTools.Metadata.DatFiles.Test/FormatsTests.cs +++ b/SabreTools.Metadata.DatFiles.Test/FormatsTests.cs @@ -112,7 +112,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ nameof(Data.Models.Metadata.BiosSet.Name), - Data.Models.Metadata.BiosSet.DescriptionKey, + nameof(Data.Models.Metadata.BiosSet.Description), ])); } @@ -791,7 +791,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ nameof(Data.Models.Metadata.BiosSet.Name), - Data.Models.Metadata.BiosSet.DescriptionKey, + nameof(Data.Models.Metadata.BiosSet.Description), ])); } @@ -923,7 +923,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ nameof(Data.Models.Metadata.DipSwitch.Name), - Data.Models.Metadata.DipSwitch.TagKey, + nameof(Data.Models.Metadata.DipSwitch.Tag), ])); } @@ -938,7 +938,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ nameof(Data.Models.Metadata.Configuration.Name), - Data.Models.Metadata.Configuration.TagKey, + nameof(Data.Models.Metadata.Configuration.Tag), ])); } @@ -952,7 +952,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Port.TagKey, + nameof(Data.Models.Metadata.Port.Tag), ])); } @@ -1039,7 +1039,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.SoftwareList.TagKey, + nameof(Data.Models.Metadata.SoftwareList.Tag), nameof(Data.Models.Metadata.SoftwareList.Name), nameof(Data.Models.Metadata.SoftwareList.Status), ])); @@ -1108,7 +1108,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ nameof(Data.Models.Metadata.BiosSet.Name), - Data.Models.Metadata.BiosSet.DescriptionKey, + nameof(Data.Models.Metadata.BiosSet.Description), ])); } @@ -1227,7 +1227,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.SoftwareList.TagKey, + nameof(Data.Models.Metadata.SoftwareList.Tag), nameof(Data.Models.Metadata.SoftwareList.Name), nameof(Data.Models.Metadata.SoftwareList.Status), ])); @@ -1574,8 +1574,8 @@ namespace SabreTools.Metadata.DatFiles.Test nameof(Data.Models.Metadata.Part.Name), Data.Models.Metadata.Part.InterfaceKey, nameof(Data.Models.Metadata.DipSwitch.Name), - Data.Models.Metadata.DipSwitch.TagKey, - Data.Models.Metadata.DipSwitch.MaskKey, + nameof(Data.Models.Metadata.DipSwitch.Tag), + nameof(Data.Models.Metadata.DipSwitch.Mask), ])); } diff --git a/SabreTools.Metadata.DatFiles/DatFile.Filtering.cs b/SabreTools.Metadata.DatFiles/DatFile.Filtering.cs index 03721f99..644ee035 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.Filtering.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.Filtering.cs @@ -125,7 +125,7 @@ namespace SabreTools.Metadata.DatFiles // Get the values to check against string? machineName = machine.GetName(); - string? machineDesc = machine.ReadString(Data.Models.Metadata.Machine.DescriptionKey); + string? machineDesc = machine.Description; if (machineName is null || machineDesc is null) continue; @@ -166,7 +166,7 @@ namespace SabreTools.Metadata.DatFiles // Get the values to check against string? machineName = machine.Value.GetName(); - string? machineDesc = machine.Value.ReadString(Data.Models.Metadata.Machine.DescriptionKey); + string? machineDesc = machine.Value.Description; if (machineName is null || machineDesc is null) continue; @@ -652,13 +652,13 @@ namespace SabreTools.Metadata.DatFiles // Get the values to check against string? machineName = machine.GetName(); - string? machineDesc = machine.ReadString(Data.Models.Metadata.Machine.DescriptionKey); + string? machineDesc = machine.Description; if (machineName is not null && Regex.IsMatch(machineName, SceneNamePattern)) item.GetMachine()!.SetName(Regex.Replace(machineName, SceneNamePattern, "$2")); if (machineDesc is not null && Regex.IsMatch(machineDesc, SceneNamePattern)) - item.GetMachine()!.Write(Data.Models.Metadata.Machine.DescriptionKey, Regex.Replace(machineDesc, SceneNamePattern, "$2")); + item.GetMachine()!.Description = Regex.Replace(machineDesc, SceneNamePattern, "$2"); } #if NET40_OR_GREATER || NETCOREAPP || NETSTANDARD2_0_OR_GREATER }); @@ -690,13 +690,13 @@ namespace SabreTools.Metadata.DatFiles // Get the values to check against string? machineName = machine.Value.GetName(); - string? machineDesc = machine.Value.ReadString(Data.Models.Metadata.Machine.DescriptionKey); + string? machineDesc = machine.Value.Description; if (machineName is not null && Regex.IsMatch(machineName, SceneNamePattern)) machine.Value.SetName(Regex.Replace(machineName, SceneNamePattern, "$2")); if (machineDesc is not null && Regex.IsMatch(machineDesc, SceneNamePattern)) - machine.Value.Write(Data.Models.Metadata.Machine.DescriptionKey, Regex.Replace(machineDesc, SceneNamePattern, "$2")); + machine.Value.Description = Regex.Replace(machineDesc, SceneNamePattern, "$2"); #if NET40_OR_GREATER || NETCOREAPP || NETSTANDARD2_0_OR_GREATER }); #else diff --git a/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs b/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs index 25c241ac..d31a948a 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs @@ -106,8 +106,8 @@ namespace SabreTools.Metadata.DatFiles Header.Write(Data.Models.Metadata.Header.DatVersionKey, header.ReadString(Data.Models.Metadata.Header.DatVersionKey)); if (Header.Debug is null) Header.Debug = header.Debug; - if (Header.ReadString(Data.Models.Metadata.Header.DescriptionKey) is null) - Header.Write(Data.Models.Metadata.Header.DescriptionKey, header.ReadString(Data.Models.Metadata.Header.DescriptionKey)); + if (Header.Description is null) + Header.Description = header.Description; if (Header.ReadString(Data.Models.Metadata.Header.EmailKey) is null) Header.Write(Data.Models.Metadata.Header.EmailKey, header.ReadString(Data.Models.Metadata.Header.EmailKey)); if (Header.ReadString(Data.Models.Metadata.Header.EmulatorVersionKey) is null) diff --git a/SabreTools.Metadata.DatFiles/DatFile.Splitting.cs b/SabreTools.Metadata.DatFiles/DatFile.Splitting.cs index 02f72357..bc7b21d8 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.Splitting.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.Splitting.cs @@ -284,7 +284,7 @@ namespace SabreTools.Metadata.DatFiles { copyFrom = new Rom(); copyFrom.GetMachine()!.SetName(cloneOf); - copyFrom.GetMachine()!.Write(Data.Models.Metadata.Machine.DescriptionKey, cloneOf); + copyFrom.GetMachine()!.Description = cloneOf; } else { diff --git a/SabreTools.Metadata.DatFiles/DatFile.cs b/SabreTools.Metadata.DatFiles/DatFile.cs index 908e108d..24aeed88 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.cs @@ -96,7 +96,7 @@ namespace SabreTools.Metadata.DatFiles { // Get the header strings string? name = Header.Name; - string? description = Header.ReadString(Data.Models.Metadata.Header.DescriptionKey); + string? description = Header.Description; string? date = Header.ReadString(Data.Models.Metadata.Header.DateKey); // If the description is defined but not the name, set the name from the description @@ -130,7 +130,7 @@ namespace SabreTools.Metadata.DatFiles // Set the fields back Header.Name = name; - Header.Write(Data.Models.Metadata.Header.DescriptionKey, description); + Header.Description = description; } #endregion diff --git a/SabreTools.Metadata.DatFiles/DatHeader.cs b/SabreTools.Metadata.DatFiles/DatHeader.cs index da81e620..0002b131 100644 --- a/SabreTools.Metadata.DatFiles/DatHeader.cs +++ b/SabreTools.Metadata.DatFiles/DatHeader.cs @@ -31,12 +31,6 @@ namespace SabreTools.Metadata.DatFiles #region Fields - public string? Name - { - get => _internal.Name; - set => _internal.Name = value; - } - public MergingFlag BiosMode { get => _internal.BiosMode; @@ -59,6 +53,12 @@ namespace SabreTools.Metadata.DatFiles set => _internal.Debug = value; } + public string? Description + { + get => _internal.Description; + set => _internal.Description = value; + } + public MergingFlag ForceMerging { get => _internal.ForceMerging; @@ -119,6 +119,12 @@ namespace SabreTools.Metadata.DatFiles set => _internal.LockSampleMode = value; } + public string? Name + { + get => _internal.Name; + set => _internal.Name = value; + } + [JsonIgnore] public bool NewDatSpecified { diff --git a/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs b/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs index 1da9a687..5a6e9561 100644 --- a/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs +++ b/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs @@ -83,8 +83,8 @@ namespace SabreTools.Metadata.DatFiles.Formats case BiosSet biosset: if (string.IsNullOrEmpty(biosset.GetName())) missingFields.Add(nameof(Data.Models.Metadata.BiosSet.Name)); - if (string.IsNullOrEmpty(biosset.ReadString(Data.Models.Metadata.BiosSet.DescriptionKey))) - missingFields.Add(Data.Models.Metadata.BiosSet.DescriptionKey); + if (string.IsNullOrEmpty(biosset.Description)) + missingFields.Add(nameof(Data.Models.Metadata.BiosSet.Description)); break; case Rom rom: diff --git a/SabreTools.Metadata.DatFiles/Formats/Listxml.cs b/SabreTools.Metadata.DatFiles/Formats/Listxml.cs index 57f61836..858bc7d0 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Listxml.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Listxml.cs @@ -262,8 +262,8 @@ namespace SabreTools.Metadata.DatFiles.Formats case BiosSet biosset: if (string.IsNullOrEmpty(biosset.GetName())) missingFields.Add(nameof(Data.Models.Metadata.BiosSet.Name)); - if (string.IsNullOrEmpty(biosset.ReadString(Data.Models.Metadata.BiosSet.DescriptionKey))) - missingFields.Add(Data.Models.Metadata.BiosSet.DescriptionKey); + if (string.IsNullOrEmpty(biosset.Description)) + missingFields.Add(nameof(Data.Models.Metadata.BiosSet.Description)); break; case Rom rom: @@ -327,20 +327,20 @@ namespace SabreTools.Metadata.DatFiles.Formats case DipSwitch dipswitch: if (string.IsNullOrEmpty(dipswitch.GetName())) missingFields.Add(nameof(Data.Models.Metadata.DipSwitch.Name)); - if (string.IsNullOrEmpty(dipswitch.ReadString(Data.Models.Metadata.DipSwitch.TagKey))) - missingFields.Add(Data.Models.Metadata.DipSwitch.TagKey); + if (string.IsNullOrEmpty(dipswitch.Tag)) + missingFields.Add(nameof(Data.Models.Metadata.DipSwitch.Tag)); break; case Configuration configuration: if (string.IsNullOrEmpty(configuration.GetName())) missingFields.Add(nameof(Data.Models.Metadata.Configuration.Name)); - if (string.IsNullOrEmpty(configuration.ReadString(Data.Models.Metadata.Configuration.TagKey))) - missingFields.Add(Data.Models.Metadata.Configuration.TagKey); + if (string.IsNullOrEmpty(configuration.Tag)) + missingFields.Add(nameof(Data.Models.Metadata.Configuration.Tag)); break; case Port port: - if (string.IsNullOrEmpty(port.ReadString(Data.Models.Metadata.Port.TagKey))) - missingFields.Add(Data.Models.Metadata.Port.TagKey); + if (string.IsNullOrEmpty(port.Tag)) + missingFields.Add(nameof(Data.Models.Metadata.Port.Tag)); break; case Adjuster adjuster: @@ -375,8 +375,8 @@ namespace SabreTools.Metadata.DatFiles.Formats break; case DatItems.Formats.SoftwareList softwarelist: - if (string.IsNullOrEmpty(softwarelist.ReadString(Data.Models.Metadata.SoftwareList.TagKey))) - missingFields.Add(Data.Models.Metadata.SoftwareList.TagKey); + if (string.IsNullOrEmpty(softwarelist.Tag)) + missingFields.Add(nameof(Data.Models.Metadata.SoftwareList.Tag)); if (string.IsNullOrEmpty(softwarelist.GetName())) missingFields.Add(nameof(Data.Models.Metadata.SoftwareList.Name)); if (softwarelist.Status == null) diff --git a/SabreTools.Metadata.DatFiles/Formats/Logiqx.cs b/SabreTools.Metadata.DatFiles/Formats/Logiqx.cs index 6282e4b3..da05bc38 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Logiqx.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Logiqx.cs @@ -275,8 +275,8 @@ namespace SabreTools.Metadata.DatFiles.Formats case BiosSet biosset: if (string.IsNullOrEmpty(biosset.GetName())) missingFields.Add(nameof(Data.Models.Metadata.BiosSet.Name)); - if (string.IsNullOrEmpty(biosset.ReadString(Data.Models.Metadata.BiosSet.DescriptionKey))) - missingFields.Add(Data.Models.Metadata.BiosSet.DescriptionKey); + if (string.IsNullOrEmpty(biosset.Description)) + missingFields.Add(nameof(Data.Models.Metadata.BiosSet.Description)); break; case Rom rom: @@ -354,8 +354,8 @@ namespace SabreTools.Metadata.DatFiles.Formats break; case DatItems.Formats.SoftwareList softwarelist: - if (string.IsNullOrEmpty(softwarelist.ReadString(Data.Models.Metadata.SoftwareList.TagKey))) - missingFields.Add(Data.Models.Metadata.SoftwareList.TagKey); + if (string.IsNullOrEmpty(softwarelist.Tag)) + missingFields.Add(nameof(Data.Models.Metadata.SoftwareList.Tag)); if (string.IsNullOrEmpty(softwarelist.GetName())) missingFields.Add(nameof(Data.Models.Metadata.SoftwareList.Name)); if (softwarelist.Status == null) diff --git a/SabreTools.Metadata.DatFiles/Formats/SoftwareList.cs b/SabreTools.Metadata.DatFiles/Formats/SoftwareList.cs index c7488661..b802cca5 100644 --- a/SabreTools.Metadata.DatFiles/Formats/SoftwareList.cs +++ b/SabreTools.Metadata.DatFiles/Formats/SoftwareList.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using SabreTools.Metadata.DatItems; using SabreTools.Metadata.DatItems.Formats; @@ -122,17 +122,17 @@ namespace SabreTools.Metadata.DatFiles.Formats if (string.IsNullOrEmpty(dipSwitch.GetName())) missingFields.Add(nameof(Data.Models.Metadata.DipSwitch.Name)); - if (string.IsNullOrEmpty(dipSwitch.ReadString(Data.Models.Metadata.DipSwitch.TagKey))) - missingFields.Add(Data.Models.Metadata.DipSwitch.TagKey); - if (string.IsNullOrEmpty(dipSwitch.ReadString(Data.Models.Metadata.DipSwitch.MaskKey))) - missingFields.Add(Data.Models.Metadata.DipSwitch.MaskKey); + if (string.IsNullOrEmpty(dipSwitch.Tag)) + missingFields.Add(nameof(Data.Models.Metadata.DipSwitch.Tag)); + if (string.IsNullOrEmpty(dipSwitch.Mask)) + missingFields.Add(nameof(Data.Models.Metadata.DipSwitch.Mask)); if (dipSwitch.ValuesSpecified) { var dipValues = dipSwitch.Read(Data.Models.Metadata.DipSwitch.DipValueKey); if (Array.Find(dipValues!, dv => string.IsNullOrEmpty(dv.GetName())) is not null) missingFields.Add(nameof(Data.Models.Metadata.DipValue.Name)); - if (Array.Find(dipValues!, dv => string.IsNullOrEmpty(dv.ReadString(Data.Models.Metadata.DipValue.ValueKey))) is not null) - missingFields.Add(Data.Models.Metadata.DipValue.ValueKey); + if (Array.Find(dipValues!, dv => string.IsNullOrEmpty(dv.Value)) is not null) + missingFields.Add(nameof(Data.Models.Metadata.DipValue.Value)); } break; diff --git a/SabreTools.Metadata.DatItems/Formats/Analog.cs b/SabreTools.Metadata.DatItems/Formats/Analog.cs index 8338418d..0cdaa4d1 100644 --- a/SabreTools.Metadata.DatItems/Formats/Analog.cs +++ b/SabreTools.Metadata.DatItems/Formats/Analog.cs @@ -10,6 +10,16 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("analog"), XmlRoot("analog")] public sealed class Analog : DatItem { + #region Fields + + public string? Mask + { + get => (_internal as Data.Models.Metadata.Analog)?.Mask; + set => (_internal as Data.Models.Metadata.Analog)?.Mask = value; + } + + #endregion + #region Constructors public Analog() : base() { } diff --git a/SabreTools.Metadata.DatItems/Formats/BiosSet.cs b/SabreTools.Metadata.DatItems/Formats/BiosSet.cs index 884e5b53..03ed4598 100644 --- a/SabreTools.Metadata.DatItems/Formats/BiosSet.cs +++ b/SabreTools.Metadata.DatItems/Formats/BiosSet.cs @@ -12,13 +12,18 @@ namespace SabreTools.Metadata.DatItems.Formats { #region Properties - [JsonIgnore] public bool? Default { get => (_internal as Data.Models.Metadata.BiosSet)?.Default; set => (_internal as Data.Models.Metadata.BiosSet)?.Default = value; } + public string? Description + { + get => (_internal as Data.Models.Metadata.BiosSet)?.Description; + set => (_internal as Data.Models.Metadata.BiosSet)?.Description = value; + } + #endregion #region Constructors diff --git a/SabreTools.Metadata.DatItems/Formats/Chip.cs b/SabreTools.Metadata.DatItems/Formats/Chip.cs index 4546ef29..4e393f14 100644 --- a/SabreTools.Metadata.DatItems/Formats/Chip.cs +++ b/SabreTools.Metadata.DatItems/Formats/Chip.cs @@ -24,6 +24,12 @@ namespace SabreTools.Metadata.DatItems.Formats set => (_internal as Data.Models.Metadata.Chip)?.SoundOnly = value; } + public string? Tag + { + get => (_internal as Data.Models.Metadata.Chip)?.Tag; + set => (_internal as Data.Models.Metadata.Chip)?.Tag = value; + } + #endregion #region Constructors diff --git a/SabreTools.Metadata.DatItems/Formats/Condition.cs b/SabreTools.Metadata.DatItems/Formats/Condition.cs index d0d0da55..abcc6418 100644 --- a/SabreTools.Metadata.DatItems/Formats/Condition.cs +++ b/SabreTools.Metadata.DatItems/Formats/Condition.cs @@ -12,12 +12,30 @@ namespace SabreTools.Metadata.DatItems.Formats { #region Fields + public string? Mask + { + get => (_internal as Data.Models.Metadata.Condition)?.Mask; + set => (_internal as Data.Models.Metadata.Condition)?.Mask = value; + } + public Data.Models.Metadata.Relation? Relation { get => (_internal as Data.Models.Metadata.Condition)?.Relation; set => (_internal as Data.Models.Metadata.Condition)?.Relation = value; } + public string? Tag + { + get => (_internal as Data.Models.Metadata.Condition)?.Tag; + set => (_internal as Data.Models.Metadata.Condition)?.Tag = value; + } + + public string? Value + { + get => (_internal as Data.Models.Metadata.Condition)?.Value; + set => (_internal as Data.Models.Metadata.Condition)?.Value = value; + } + #endregion #region Constructors diff --git a/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs b/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs index 0e69bb27..6b8500eb 100644 --- a/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs +++ b/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs @@ -22,13 +22,18 @@ namespace SabreTools.Metadata.DatItems.Formats } } - [JsonIgnore] public bool? Default { get => (_internal as Data.Models.Metadata.ConfSetting)?.Default; set => (_internal as Data.Models.Metadata.ConfSetting)?.Default = value; } + public string? Value + { + get => (_internal as Data.Models.Metadata.ConfSetting)?.Value; + set => (_internal as Data.Models.Metadata.ConfSetting)?.Value = value; + } + #endregion #region Constructors diff --git a/SabreTools.Metadata.DatItems/Formats/Configuration.cs b/SabreTools.Metadata.DatItems/Formats/Configuration.cs index 4d8e8525..fed13901 100644 --- a/SabreTools.Metadata.DatItems/Formats/Configuration.cs +++ b/SabreTools.Metadata.DatItems/Formats/Configuration.cs @@ -33,6 +33,12 @@ namespace SabreTools.Metadata.DatItems.Formats } } + public string? Mask + { + get => (_internal as Data.Models.Metadata.Configuration)?.Mask; + set => (_internal as Data.Models.Metadata.Configuration)?.Mask = value; + } + [JsonIgnore] public bool SettingsSpecified { @@ -43,6 +49,12 @@ namespace SabreTools.Metadata.DatItems.Formats } } + public string? Tag + { + get => (_internal as Data.Models.Metadata.Configuration)?.Tag; + set => (_internal as Data.Models.Metadata.Configuration)?.Tag = value; + } + #endregion #region Constructors diff --git a/SabreTools.Metadata.DatItems/Formats/Device.cs b/SabreTools.Metadata.DatItems/Formats/Device.cs index ff14ce51..fd24980b 100644 --- a/SabreTools.Metadata.DatItems/Formats/Device.cs +++ b/SabreTools.Metadata.DatItems/Formats/Device.cs @@ -45,6 +45,12 @@ namespace SabreTools.Metadata.DatItems.Formats set => (_internal as Data.Models.Metadata.Device)?.Mandatory = value; } + public string? Tag + { + get => (_internal as Data.Models.Metadata.Device)?.Tag; + set => (_internal as Data.Models.Metadata.Device)?.Tag = value; + } + #endregion #region Constructors diff --git a/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs b/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs index 48dbe9fb..82158346 100644 --- a/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs +++ b/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs @@ -49,6 +49,12 @@ namespace SabreTools.Metadata.DatItems.Formats } } + public string? Mask + { + get => (_internal as Data.Models.Metadata.DipSwitch)?.Mask; + set => (_internal as Data.Models.Metadata.DipSwitch)?.Mask = value; + } + [JsonIgnore] public bool ValuesSpecified { @@ -71,6 +77,12 @@ namespace SabreTools.Metadata.DatItems.Formats } } + public string? Tag + { + get => (_internal as Data.Models.Metadata.DipSwitch)?.Tag; + set => (_internal as Data.Models.Metadata.DipSwitch)?.Tag = value; + } + #endregion #region Constructors diff --git a/SabreTools.Metadata.DatItems/Formats/DipValue.cs b/SabreTools.Metadata.DatItems/Formats/DipValue.cs index 6b47e025..e227a8d5 100644 --- a/SabreTools.Metadata.DatItems/Formats/DipValue.cs +++ b/SabreTools.Metadata.DatItems/Formats/DipValue.cs @@ -22,13 +22,18 @@ namespace SabreTools.Metadata.DatItems.Formats } } - [JsonIgnore] public bool? Default { get => (_internal as Data.Models.Metadata.DipValue)?.Default; set => (_internal as Data.Models.Metadata.DipValue)?.Default = value; } + public string? Value + { + get => (_internal as Data.Models.Metadata.DipValue)?.Value; + set => (_internal as Data.Models.Metadata.DipValue)?.Value = value; + } + #endregion #region Constructors diff --git a/SabreTools.Metadata.DatItems/Formats/Display.cs b/SabreTools.Metadata.DatItems/Formats/Display.cs index 3cf87591..d3b29c67 100644 --- a/SabreTools.Metadata.DatItems/Formats/Display.cs +++ b/SabreTools.Metadata.DatItems/Formats/Display.cs @@ -25,6 +25,12 @@ namespace SabreTools.Metadata.DatItems.Formats set => (_internal as Data.Models.Metadata.Display)?.FlipX = value; } + public string? Tag + { + get => (_internal as Data.Models.Metadata.Display)?.Tag; + set => (_internal as Data.Models.Metadata.Display)?.Tag = value; + } + #endregion #region Constructors diff --git a/SabreTools.Metadata.DatItems/Formats/Feature.cs b/SabreTools.Metadata.DatItems/Formats/Feature.cs index 7f8cf288..c75b953e 100644 --- a/SabreTools.Metadata.DatItems/Formats/Feature.cs +++ b/SabreTools.Metadata.DatItems/Formats/Feature.cs @@ -30,6 +30,12 @@ namespace SabreTools.Metadata.DatItems.Formats set => (_internal as Data.Models.Metadata.Feature)?.Status = value; } + public string? Value + { + get => (_internal as Data.Models.Metadata.Feature)?.Value; + set => (_internal as Data.Models.Metadata.Feature)?.Value = value; + } + #endregion #region Constructors diff --git a/SabreTools.Metadata.DatItems/Formats/Info.cs b/SabreTools.Metadata.DatItems/Formats/Info.cs index 1908073a..8952d251 100644 --- a/SabreTools.Metadata.DatItems/Formats/Info.cs +++ b/SabreTools.Metadata.DatItems/Formats/Info.cs @@ -10,6 +10,16 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("info"), XmlRoot("info")] public sealed class Info : DatItem { + #region Fields + + public string? Value + { + get => (_internal as Data.Models.Metadata.Info)?.Value; + set => (_internal as Data.Models.Metadata.Info)?.Value = value; + } + + #endregion + #region Constructors public Info() : base() { } diff --git a/SabreTools.Metadata.DatItems/Formats/PartFeature.cs b/SabreTools.Metadata.DatItems/Formats/PartFeature.cs index efe4f9f0..f46cdf3f 100644 --- a/SabreTools.Metadata.DatItems/Formats/PartFeature.cs +++ b/SabreTools.Metadata.DatItems/Formats/PartFeature.cs @@ -43,6 +43,12 @@ namespace SabreTools.Metadata.DatItems.Formats /// This needs to be set to PartFeature because internally it uses Feature public override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.PartFeature; + public string? Value + { + get => (_internal as Data.Models.Metadata.Feature)?.Value; + set => (_internal as Data.Models.Metadata.Feature)?.Value = value; + } + #endregion #region Constructors diff --git a/SabreTools.Metadata.DatItems/Formats/Port.cs b/SabreTools.Metadata.DatItems/Formats/Port.cs index d98745e8..fb0f83e4 100644 --- a/SabreTools.Metadata.DatItems/Formats/Port.cs +++ b/SabreTools.Metadata.DatItems/Formats/Port.cs @@ -23,6 +23,12 @@ namespace SabreTools.Metadata.DatItems.Formats } } + public string? Tag + { + get => (_internal as Data.Models.Metadata.Port)?.Tag; + set => (_internal as Data.Models.Metadata.Port)?.Tag = value; + } + #endregion #region Constructors diff --git a/SabreTools.Metadata.DatItems/Formats/Rom.cs b/SabreTools.Metadata.DatItems/Formats/Rom.cs index c791986d..f677d6c5 100644 --- a/SabreTools.Metadata.DatItems/Formats/Rom.cs +++ b/SabreTools.Metadata.DatItems/Formats/Rom.cs @@ -118,6 +118,12 @@ namespace SabreTools.Metadata.DatItems.Formats set => (_internal as Data.Models.Metadata.Rom)?.Status = value; } + public string? Value + { + get => (_internal as Data.Models.Metadata.Rom)?.Value; + set => (_internal as Data.Models.Metadata.Rom)?.Value = value; + } + #endregion #region Constructors diff --git a/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs b/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs index 63ba7ae3..36a21d85 100644 --- a/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs +++ b/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs @@ -10,6 +10,16 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("sharedfeat"), XmlRoot("sharedfeat")] public sealed class SharedFeat : DatItem { + #region Fields + + public string? Value + { + get => (_internal as Data.Models.Metadata.SharedFeat)?.Value; + set => (_internal as Data.Models.Metadata.SharedFeat)?.Value = value; + } + + #endregion + #region Constructors public SharedFeat() : base() { } diff --git a/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs b/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs index ac3bedbe..dacf6d6d 100644 --- a/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs +++ b/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs @@ -12,12 +12,24 @@ namespace SabreTools.Metadata.DatItems.Formats { #region Fields + public string? Description + { + get => (_internal as Data.Models.Metadata.SoftwareList)?.Description; + set => (_internal as Data.Models.Metadata.SoftwareList)?.Description = value; + } + public Data.Models.Metadata.SoftwareListStatus? Status { get => (_internal as Data.Models.Metadata.SoftwareList)?.Status; set => (_internal as Data.Models.Metadata.SoftwareList)?.Status = value; } + public string? Tag + { + get => (_internal as Data.Models.Metadata.SoftwareList)?.Tag; + set => (_internal as Data.Models.Metadata.SoftwareList)?.Tag = value; + } + #endregion #region Constructors diff --git a/SabreTools.Metadata.DatItems/Machine.cs b/SabreTools.Metadata.DatItems/Machine.cs index 115a492b..d4769003 100644 --- a/SabreTools.Metadata.DatItems/Machine.cs +++ b/SabreTools.Metadata.DatItems/Machine.cs @@ -15,6 +15,12 @@ namespace SabreTools.Metadata.DatItems { #region Fields + public string? Description + { + get => _internal.Description; + set => _internal.Description = value; + } + public bool? IsBios { get => _internal.IsBios; diff --git a/SabreTools.Metadata.Filter.Test/FilterRunnerTests.cs b/SabreTools.Metadata.Filter.Test/FilterRunnerTests.cs index 23140ae1..f80ddb49 100644 --- a/SabreTools.Metadata.Filter.Test/FilterRunnerTests.cs +++ b/SabreTools.Metadata.Filter.Test/FilterRunnerTests.cs @@ -77,7 +77,7 @@ namespace SabreTools.Metadata.Filter.Test [Fact] public void Machine_Null_False() { - var machine = new Machine { [Machine.DescriptionKey] = null }; + var machine = new Machine { Description = null }; bool actual = _filterRunner.Run(machine); Assert.False(actual); } @@ -85,7 +85,7 @@ namespace SabreTools.Metadata.Filter.Test [Fact] public void Machine_Empty_False() { - var machine = new Machine { [Machine.DescriptionKey] = "" }; + var machine = new Machine { Description = "" }; bool actual = _filterRunner.Run(machine); Assert.False(actual); } @@ -93,7 +93,7 @@ namespace SabreTools.Metadata.Filter.Test [Fact] public void Machine_Incorrect_False() { - var machine = new Machine { [Machine.DescriptionKey] = "NO_MATCH" }; + var machine = new Machine { Description = "NO_MATCH" }; bool actual = _filterRunner.Run(machine); Assert.False(actual); } @@ -101,7 +101,7 @@ namespace SabreTools.Metadata.Filter.Test [Fact] public void Machine_Correct_True() { - var machine = new Machine { [Machine.DescriptionKey] = "desc" }; + var machine = new Machine { Description = "desc" }; bool actual = _filterRunner.Run(machine); Assert.True(actual); } diff --git a/SabreTools.Metadata.Filter/FilterObject.cs b/SabreTools.Metadata.Filter/FilterObject.cs index 7c624720..b9635d99 100644 --- a/SabreTools.Metadata.Filter/FilterObject.cs +++ b/SabreTools.Metadata.Filter/FilterObject.cs @@ -352,9 +352,20 @@ namespace SabreTools.Metadata.Filter checkValue = item.Default.FromYesNo(); return true; + case Analog item when fieldName == "mask": + checkValue = item.Mask; + return true; + + case Archive item when fieldName == "description": + checkValue = item.Description; + return true; + case BiosSet item when fieldName == "default": checkValue = item.Default.FromYesNo(); return true; + case BiosSet item when fieldName == "description": + checkValue = item.Description; + return true; case Chip item when fieldName == "type": checkValue = item.ChipType?.AsStringValue(); @@ -362,10 +373,29 @@ namespace SabreTools.Metadata.Filter case Chip item when fieldName == "soundonly": checkValue = item.SoundOnly.FromYesNo(); return true; + case Chip item when fieldName == "tag": + checkValue = item.Tag; + return true; + case Condition item when fieldName == "mask": + checkValue = item.Mask; + return true; case Condition item when fieldName == "relation": checkValue = item.Relation?.AsStringValue(); return true; + case Condition item when fieldName == "tag": + checkValue = item.Tag; + return true; + case Condition item when fieldName == "value": + checkValue = item.Value; + return true; + + case Configuration item when fieldName == "mask": + checkValue = item.Mask; + return true; + case Configuration item when fieldName == "tag": + checkValue = item.Tag; + return true; case ConfLocation item when fieldName == "inverted": checkValue = item.Inverted.FromYesNo(); @@ -374,6 +404,9 @@ namespace SabreTools.Metadata.Filter case ConfSetting item when fieldName == "default": checkValue = item.Default.FromYesNo(); return true; + case ConfSetting item when fieldName == "value": + checkValue = item.Value; + return true; case Control item when fieldName == "type": checkValue = item.ControlType?.AsStringValue(); @@ -392,22 +425,34 @@ namespace SabreTools.Metadata.Filter case Device item when fieldName == "mandatory": checkValue = item.Mandatory.FromYesNo(); return true; + case Device item when fieldName == "tag": + checkValue = item.Tag; + return true; case DipLocation item when fieldName == "inverted": checkValue = item.Inverted.FromYesNo(); return true; - case DipLocation item when fieldName == "inverted": + case DipLocation item when fieldName == "invertwed": checkValue = item.Inverted.FromYesNo(); return true; case DipSwitch item when fieldName == "default": checkValue = item.Default.FromYesNo(); return true; + case DipSwitch item when fieldName == "mask": + checkValue = item.Mask; + return true; + case DipSwitch item when fieldName == "tag": + checkValue = item.Tag; + return true; case DipValue item when fieldName == "default": checkValue = item.Default.FromYesNo(); return true; + case DipValue item when fieldName == "value": + checkValue = item.Value; + return true; case Disk item when fieldName == "optional": checkValue = item.Optional.FromYesNo(); @@ -425,6 +470,9 @@ namespace SabreTools.Metadata.Filter case Display item when fieldName == "type": checkValue = item.DisplayType?.AsStringValue(); return true; + case Display item when fieldName == "tag": + checkValue = item.Tag; + return true; case Driver item when fieldName == "blit": checkValue = item.Blit?.AsStringValue(); @@ -469,6 +517,9 @@ namespace SabreTools.Metadata.Filter case Feature item when fieldName == "type": checkValue = item.FeatureType?.AsStringValue(); return true; + case Feature item when fieldName == "value": + checkValue = item.Value; + return true; case Header item when fieldName == "biosmode": checkValue = item.BiosMode.AsStringValue(); @@ -476,6 +527,9 @@ namespace SabreTools.Metadata.Filter case Header item when fieldName == "debug": checkValue = item.Debug.FromYesNo(); return true; + case Header item when fieldName == "description": + checkValue = item.Description; + return true; case Header item when fieldName == "forcemerging": checkValue = item.ForceMerging.AsStringValue(); return true; @@ -504,6 +558,10 @@ namespace SabreTools.Metadata.Filter checkValue = item.SampleMode.AsStringValue(); return true; + case Info item when fieldName == "value": + checkValue = item.Value; + return true; + case Input item when fieldName == "service": checkValue = item.Service.FromYesNo(); return true; @@ -511,6 +569,9 @@ namespace SabreTools.Metadata.Filter checkValue = item.Tilt.FromYesNo(); return true; + case Machine item when fieldName == "description": + checkValue = item.Description; + return true; case Machine item when fieldName == "isbios": checkValue = item.IsBios.FromYesNo(); return true; @@ -527,6 +588,10 @@ namespace SabreTools.Metadata.Filter checkValue = item.Supported?.AsStringValue(); return true; + case Port item when fieldName == "tag": + checkValue = item.Tag; + return true; + case RamOption item when fieldName == "default": checkValue = item.Default.FromYesNo(); return true; @@ -562,18 +627,34 @@ namespace SabreTools.Metadata.Filter case Rom item when fieldName == "status": checkValue = item.Status?.AsStringValue(); return true; + case Rom item when fieldName == "value": + checkValue = item.Value; + return true; + + case SharedFeat item when fieldName == "value": + checkValue = item.Value; + return true; case SlotOption item when fieldName == "default": checkValue = item.Default.FromYesNo(); return true; + case Software item when fieldName == "description": + checkValue = item.Description; + return true; case Software item when fieldName == "supported": checkValue = item.Supported?.AsStringValue(); return true; + case SoftwareList item when fieldName == "description": + checkValue = item.Description; + return true; case SoftwareList item when fieldName == "status": checkValue = item.Status?.AsStringValue(); return true; + case SoftwareList item when fieldName == "tag": + checkValue = item.Tag; + return true; case Video item when fieldName == "screen": checkValue = item.Screen?.AsStringValue(); diff --git a/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs b/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs index 7949b0c6..7b94d582 100644 --- a/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs @@ -62,7 +62,7 @@ namespace SabreTools.Serialization.CrossModel.Test var cmp = new Data.Models.ClrMamePro.ClrMamePro { Name = "XXXXXX", - Description = "XXXXXX", + Description = "description", RootDir = "XXXXXX", Category = "XXXXXX", Version = "XXXXXX", @@ -90,7 +90,7 @@ namespace SabreTools.Serialization.CrossModel.Test var biosset = new Data.Models.ClrMamePro.BiosSet { Name = "XXXXXX", - Description = "XXXXXX", + Description = "description", Default = true, }; @@ -209,7 +209,7 @@ namespace SabreTools.Serialization.CrossModel.Test ? new Data.Models.ClrMamePro.Game() : new Data.Models.ClrMamePro.Machine(); gameBase.Name = "XXXXXX"; - gameBase.Description = "XXXXXX"; + gameBase.Description = "description"; gameBase.DriverStatus = "XXXXXX"; gameBase.Year = "XXXXXX"; gameBase.Manufacturer = "XXXXXX"; @@ -251,7 +251,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(cmp); Assert.Equal("XXXXXX", cmp.Name); - Assert.Equal("XXXXXX", cmp.Description); + Assert.Equal("description", cmp.Description); Assert.Equal("XXXXXX", cmp.RootDir); Assert.Equal("XXXXXX", cmp.Category); Assert.Equal("XXXXXX", cmp.Version); @@ -274,7 +274,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(gb); Assert.Equal("XXXXXX", gb.Name); - Assert.Equal("XXXXXX", gb.Description); + Assert.Equal("description", gb.Description); // Assert.Equal("XXXXXX", gb.DriverStatus); // TODO: Needs metadata mapping Assert.Equal("XXXXXX", gb.Year); Assert.Equal("XXXXXX", gb.Manufacturer); @@ -349,7 +349,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(biosset); Assert.Equal("XXXXXX", biosset.Name); - Assert.Equal("XXXXXX", biosset.Description); + Assert.Equal("description", biosset.Description); Assert.Equal(true, biosset.Default); } diff --git a/SabreTools.Serialization.CrossModel.Test/DosCenterTests.cs b/SabreTools.Serialization.CrossModel.Test/DosCenterTests.cs index f1ec413b..b43a73e0 100644 --- a/SabreTools.Serialization.CrossModel.Test/DosCenterTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/DosCenterTests.cs @@ -36,7 +36,7 @@ namespace SabreTools.Serialization.CrossModel.Test var dc = new Data.Models.DosCenter.DosCenter { Name = "XXXXXX", - Description = "XXXXXX", + Description = "description", Version = "XXXXXX", Date = "XXXXXX", Author = "XXXXXX", @@ -73,7 +73,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(cmp); Assert.Equal("XXXXXX", cmp.Name); - Assert.Equal("XXXXXX", cmp.Description); + Assert.Equal("description", cmp.Description); Assert.Equal("XXXXXX", cmp.Version); Assert.Equal("XXXXXX", cmp.Date); Assert.Equal("XXXXXX", cmp.Author); diff --git a/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs b/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs index 734cfa18..83a24b68 100644 --- a/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs @@ -66,7 +66,7 @@ namespace SabreTools.Serialization.CrossModel.Test var biosset = new Data.Models.Listxml.BiosSet { Name = "XXXXXX", - Description = "XXXXXX", + Description = "description", Default = true, }; @@ -112,7 +112,7 @@ namespace SabreTools.Serialization.CrossModel.Test var chip = new Data.Models.Listxml.Chip { Name = "XXXXXX", - Tag = "XXXXXX", + Tag = "tag", Type = Data.Models.Metadata.ChipType.CPU, SoundOnly = true, Clock = "XXXXXX", @@ -120,7 +120,7 @@ namespace SabreTools.Serialization.CrossModel.Test var display = new Data.Models.Listxml.Display { - Tag = "XXXXXX", + Tag = "tag", Type = Data.Models.Metadata.DisplayType.Vector, Rotate = "XXXXXX", FlipX = true, @@ -181,10 +181,10 @@ namespace SabreTools.Serialization.CrossModel.Test var condition = new Data.Models.Listxml.Condition { - Tag = "XXXXXX", - Mask = "XXXXXX", + Tag = "tag", + Mask = "mask", Relation = Data.Models.Metadata.Relation.Equal, - Value = "XXXXXX", + Value = "value", }; var diplocation = new Data.Models.Listxml.DipLocation @@ -197,7 +197,7 @@ namespace SabreTools.Serialization.CrossModel.Test var dipvalue = new Data.Models.Listxml.DipValue { Name = "XXXXXX", - Value = "XXXXXX", + Value = "value", Default = true, Condition = condition, }; @@ -205,8 +205,8 @@ namespace SabreTools.Serialization.CrossModel.Test var dipswitch = new Data.Models.Listxml.DipSwitch { Name = "XXXXXX", - Tag = "XXXXXX", - Mask = "XXXXXX", + Tag = "tag", + Mask = "mask", Condition = condition, DipLocation = [diplocation], DipValue = [dipvalue], @@ -222,7 +222,7 @@ namespace SabreTools.Serialization.CrossModel.Test var confsetting = new Data.Models.Listxml.ConfSetting { Name = "XXXXXX", - Value = "XXXXXX", + Value = "value", Default = true, Condition = condition, }; @@ -230,8 +230,8 @@ namespace SabreTools.Serialization.CrossModel.Test var configuration = new Data.Models.Listxml.Configuration { Name = "XXXXXX", - Tag = "XXXXXX", - Mask = "XXXXXX", + Tag = "tag", + Mask = "mask", Condition = condition, ConfLocation = [conflocation], ConfSetting = [confsetting], @@ -239,12 +239,12 @@ namespace SabreTools.Serialization.CrossModel.Test var analog = new Data.Models.Listxml.Analog { - Mask = "XXXXXX", + Mask = "mask", }; var port = new Data.Models.Listxml.Port { - Tag = "XXXXXX", + Tag = "tag", Analog = [analog], }; @@ -291,7 +291,7 @@ namespace SabreTools.Serialization.CrossModel.Test var device = new Data.Models.Listxml.Device { Type = Data.Models.Metadata.DeviceType.PunchTape, - Tag = "XXXXXX", + Tag = "tag", FixedImage = "XXXXXX", Mandatory = true, Interface = "XXXXXX", @@ -314,7 +314,7 @@ namespace SabreTools.Serialization.CrossModel.Test var softwarelist = new Data.Models.Listxml.SoftwareList { - Tag = "XXXXXX", + Tag = "tag", Name = "XXXXXX", Status = Data.Models.Metadata.SoftwareListStatus.Original, Filter = "XXXXXX", @@ -339,7 +339,7 @@ namespace SabreTools.Serialization.CrossModel.Test gameBase.CloneOf = "XXXXXX"; gameBase.RomOf = "XXXXXX"; gameBase.SampleOf = "XXXXXX"; - gameBase.Description = "XXXXXX"; + gameBase.Description = "description"; gameBase.Year = "XXXXXX"; gameBase.Manufacturer = "XXXXXX"; gameBase.History = "XXXXXX"; @@ -388,7 +388,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", gb.CloneOf); Assert.Equal("XXXXXX", gb.RomOf); Assert.Equal("XXXXXX", gb.SampleOf); - Assert.Equal("XXXXXX", gb.Description); + Assert.Equal("description", gb.Description); Assert.Equal("XXXXXX", gb.Year); Assert.Equal("XXXXXX", gb.Manufacturer); Assert.Equal("XXXXXX", gb.History); @@ -474,7 +474,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(biosset); Assert.Equal("XXXXXX", biosset.Name); - Assert.Equal("XXXXXX", biosset.Description); + Assert.Equal("description", biosset.Description); Assert.Equal(true, biosset.Default); } @@ -540,7 +540,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(chip); Assert.Equal("XXXXXX", chip.Name); - Assert.Equal("XXXXXX", chip.Tag); + Assert.Equal("tag", chip.Tag); Assert.Equal(Data.Models.Metadata.ChipType.CPU, chip.Type); Assert.Equal(true, chip.SoundOnly); Assert.Equal("XXXXXX", chip.Clock); @@ -552,7 +552,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Display? display) { Assert.NotNull(display); - Assert.Equal("XXXXXX", display.Tag); + Assert.Equal("tag", display.Tag); Assert.Equal(Data.Models.Metadata.DisplayType.Vector, display.Type); Assert.Equal("XXXXXX", display.Rotate); Assert.Equal(true, display.FlipX); @@ -637,8 +637,8 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(dipswitch); Assert.Equal("XXXXXX", dipswitch.Name); - Assert.Equal("XXXXXX", dipswitch.Tag); - Assert.Equal("XXXXXX", dipswitch.Mask); + Assert.Equal("tag", dipswitch.Tag); + Assert.Equal("mask", dipswitch.Mask); Validate(dipswitch.Condition); Assert.NotNull(dipswitch.DipLocation); @@ -656,10 +656,10 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Condition? condition) { Assert.NotNull(condition); - Assert.Equal("XXXXXX", condition.Tag); - Assert.Equal("XXXXXX", condition.Mask); + Assert.Equal("tag", condition.Tag); + Assert.Equal("mask", condition.Mask); Assert.Equal(Data.Models.Metadata.Relation.Equal, condition.Relation); - Assert.Equal("XXXXXX", condition.Value); + Assert.Equal("value", condition.Value); } /// @@ -680,7 +680,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(dipvalue); Assert.Equal("XXXXXX", dipvalue.Name); - Assert.Equal("XXXXXX", dipvalue.Value); + Assert.Equal("value", dipvalue.Value); Assert.Equal(true, dipvalue.Default); Validate(dipvalue.Condition); } @@ -692,8 +692,8 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(configuration); Assert.Equal("XXXXXX", configuration.Name); - Assert.Equal("XXXXXX", configuration.Tag); - Assert.Equal("XXXXXX", configuration.Mask); + Assert.Equal("tag", configuration.Tag); + Assert.Equal("mask", configuration.Mask); Validate(configuration.Condition); Assert.NotNull(configuration.ConfLocation); @@ -723,7 +723,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(confsetting); Assert.Equal("XXXXXX", confsetting.Name); - Assert.Equal("XXXXXX", confsetting.Value); + Assert.Equal("value", confsetting.Value); Assert.Equal(true, confsetting.Default); Validate(confsetting.Condition); } @@ -734,7 +734,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Port? port) { Assert.NotNull(port); - Assert.Equal("XXXXXX", port.Tag); + Assert.Equal("tag", port.Tag); Assert.NotNull(port.Analog); var analog = Assert.Single(port.Analog); @@ -747,7 +747,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Analog? analog) { Assert.NotNull(analog); - Assert.Equal("XXXXXX", analog.Mask); + Assert.Equal("mask", analog.Mask); } /// @@ -798,7 +798,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(device); Assert.Equal(Data.Models.Metadata.DeviceType.PunchTape, device.Type); - Assert.Equal("XXXXXX", device.Tag); + Assert.Equal("tag", device.Tag); Assert.Equal("XXXXXX", device.FixedImage); Assert.Equal(true, device.Mandatory); Assert.Equal("XXXXXX", device.Interface); @@ -858,7 +858,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.SoftwareList? softwarelist) { Assert.NotNull(softwarelist); - Assert.Equal("XXXXXX", softwarelist.Tag); + Assert.Equal("tag", softwarelist.Tag); Assert.Equal("XXXXXX", softwarelist.Name); Assert.Equal(Data.Models.Metadata.SoftwareListStatus.Original, softwarelist.Status); Assert.Equal("XXXXXX", softwarelist.Filter); diff --git a/SabreTools.Serialization.CrossModel.Test/LogiqxTests.cs b/SabreTools.Serialization.CrossModel.Test/LogiqxTests.cs index d375ac28..a09eaa2f 100644 --- a/SabreTools.Serialization.CrossModel.Test/LogiqxTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/LogiqxTests.cs @@ -96,7 +96,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Id = "XXXXXX", Name = "XXXXXX", - Description = "XXXXXX", + Description = "description", RootDir = "XXXXXX", Category = "XXXXXX", Version = "XXXXXX", @@ -141,7 +141,7 @@ namespace SabreTools.Serialization.CrossModel.Test var biosset = new Data.Models.Logiqx.BiosSet { Name = "XXXXXX", - Description = "XXXXXX", + Description = "description", Default = true, }; @@ -221,7 +221,7 @@ namespace SabreTools.Serialization.CrossModel.Test var softwarelist = new Data.Models.Logiqx.SoftwareList { - Tag = "XXXXXX", + Tag = "tag", Name = "XXXXXX", Status = Data.Models.Metadata.SoftwareListStatus.Original, Filter = "XXXXXX", @@ -244,7 +244,7 @@ namespace SabreTools.Serialization.CrossModel.Test gameBase.CloneOfId = "XXXXXX"; gameBase.Runnable = Data.Models.Metadata.Runnable.Yes; gameBase.Comment = ["XXXXXX"]; - gameBase.Description = "XXXXXX"; + gameBase.Description = "description"; gameBase.Year = "XXXXXX"; gameBase.Manufacturer = "XXXXXX"; gameBase.Publisher = "XXXXXX"; @@ -292,7 +292,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(header); Assert.Equal("XXXXXX", header.Id); Assert.Equal("XXXXXX", header.Name); - Assert.Equal("XXXXXX", header.Description); + Assert.Equal("description", header.Description); Assert.Equal("XXXXXX", header.RootDir); Assert.Equal("XXXXXX", header.Category); Assert.Equal("XXXXXX", header.Version); @@ -361,7 +361,7 @@ namespace SabreTools.Serialization.CrossModel.Test string comment = Assert.Single(gb.Comment); Assert.Equal("XXXXXX", comment); - Assert.Equal("XXXXXX", gb.Description); + Assert.Equal("description", gb.Description); Assert.Equal("XXXXXX", gb.Year); Assert.Equal("XXXXXX", gb.Manufacturer); Assert.Equal("XXXXXX", gb.Publisher); @@ -453,7 +453,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(biosset); Assert.Equal("XXXXXX", biosset.Name); - Assert.Equal("XXXXXX", biosset.Description); + Assert.Equal("description", biosset.Description); Assert.Equal(true, biosset.Default); } @@ -565,7 +565,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Logiqx.SoftwareList? softwarelist) { Assert.NotNull(softwarelist); - Assert.Equal("XXXXXX", softwarelist.Tag); + Assert.Equal("tag", softwarelist.Tag); Assert.Equal("XXXXXX", softwarelist.Name); Assert.Equal(Data.Models.Metadata.SoftwareListStatus.Original, softwarelist.Status); Assert.Equal("XXXXXX", softwarelist.Filter); diff --git a/SabreTools.Serialization.CrossModel.Test/M1Tests.cs b/SabreTools.Serialization.CrossModel.Test/M1Tests.cs index 57fe2ba8..ac29d7b6 100644 --- a/SabreTools.Serialization.CrossModel.Test/M1Tests.cs +++ b/SabreTools.Serialization.CrossModel.Test/M1Tests.cs @@ -62,7 +62,7 @@ namespace SabreTools.Serialization.CrossModel.Test var biosset = new Data.Models.Listxml.BiosSet { Name = "XXXXXX", - Description = "XXXXXX", + Description = "description", Default = true, }; @@ -108,7 +108,7 @@ namespace SabreTools.Serialization.CrossModel.Test var chip = new Data.Models.Listxml.Chip { Name = "XXXXXX", - Tag = "XXXXXX", + Tag = "tag", Type = Data.Models.Metadata.ChipType.CPU, SoundOnly = true, Clock = "XXXXXX", @@ -116,7 +116,7 @@ namespace SabreTools.Serialization.CrossModel.Test var display = new Data.Models.Listxml.Display { - Tag = "XXXXXX", + Tag = "tag", Type = Data.Models.Metadata.DisplayType.Vector, Rotate = "XXXXXX", FlipX = true, @@ -177,10 +177,10 @@ namespace SabreTools.Serialization.CrossModel.Test var condition = new Data.Models.Listxml.Condition { - Tag = "XXXXXX", - Mask = "XXXXXX", + Tag = "tag", + Mask = "mask", Relation = Data.Models.Metadata.Relation.Equal, - Value = "XXXXXX", + Value = "value", }; var diplocation = new Data.Models.Listxml.DipLocation @@ -193,7 +193,7 @@ namespace SabreTools.Serialization.CrossModel.Test var dipvalue = new Data.Models.Listxml.DipValue { Name = "XXXXXX", - Value = "XXXXXX", + Value = "value", Default = true, Condition = condition, }; @@ -201,8 +201,8 @@ namespace SabreTools.Serialization.CrossModel.Test var dipswitch = new Data.Models.Listxml.DipSwitch { Name = "XXXXXX", - Tag = "XXXXXX", - Mask = "XXXXXX", + Tag = "tag", + Mask = "mask", Condition = condition, DipLocation = [diplocation], DipValue = [dipvalue], @@ -218,7 +218,7 @@ namespace SabreTools.Serialization.CrossModel.Test var confsetting = new Data.Models.Listxml.ConfSetting { Name = "XXXXXX", - Value = "XXXXXX", + Value = "value", Default = true, Condition = condition, }; @@ -226,8 +226,8 @@ namespace SabreTools.Serialization.CrossModel.Test var configuration = new Data.Models.Listxml.Configuration { Name = "XXXXXX", - Tag = "XXXXXX", - Mask = "XXXXXX", + Tag = "tag", + Mask = "mask", Condition = condition, ConfLocation = [conflocation], ConfSetting = [confsetting], @@ -235,12 +235,12 @@ namespace SabreTools.Serialization.CrossModel.Test var analog = new Data.Models.Listxml.Analog { - Mask = "XXXXXX", + Mask = "mask", }; var port = new Data.Models.Listxml.Port { - Tag = "XXXXXX", + Tag = "tag", Analog = [analog], }; @@ -287,7 +287,7 @@ namespace SabreTools.Serialization.CrossModel.Test var device = new Data.Models.Listxml.Device { Type = Data.Models.Metadata.DeviceType.PunchTape, - Tag = "XXXXXX", + Tag = "tag", FixedImage = "XXXXXX", Mandatory = true, Interface = "XXXXXX", @@ -310,7 +310,7 @@ namespace SabreTools.Serialization.CrossModel.Test var softwarelist = new Data.Models.Listxml.SoftwareList { - Tag = "XXXXXX", + Tag = "tag", Name = "XXXXXX", Status = Data.Models.Metadata.SoftwareListStatus.Original, Filter = "XXXXXX", @@ -335,7 +335,7 @@ namespace SabreTools.Serialization.CrossModel.Test gameBase.CloneOf = "XXXXXX"; gameBase.RomOf = "XXXXXX"; gameBase.SampleOf = "XXXXXX"; - gameBase.Description = "XXXXXX"; + gameBase.Description = "description"; gameBase.Year = "XXXXXX"; gameBase.Manufacturer = "XXXXXX"; gameBase.History = "XXXXXX"; @@ -382,7 +382,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", gb.CloneOf); Assert.Equal("XXXXXX", gb.RomOf); Assert.Equal("XXXXXX", gb.SampleOf); - Assert.Equal("XXXXXX", gb.Description); + Assert.Equal("description", gb.Description); Assert.Equal("XXXXXX", gb.Year); Assert.Equal("XXXXXX", gb.Manufacturer); Assert.Equal("XXXXXX", gb.History); @@ -468,7 +468,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(biosset); Assert.Equal("XXXXXX", biosset.Name); - Assert.Equal("XXXXXX", biosset.Description); + Assert.Equal("description", biosset.Description); Assert.Equal(true, biosset.Default); } @@ -534,7 +534,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(chip); Assert.Equal("XXXXXX", chip.Name); - Assert.Equal("XXXXXX", chip.Tag); + Assert.Equal("tag", chip.Tag); Assert.Equal(Data.Models.Metadata.ChipType.CPU, chip.Type); Assert.Equal(true, chip.SoundOnly); Assert.Equal("XXXXXX", chip.Clock); @@ -546,7 +546,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Display? display) { Assert.NotNull(display); - Assert.Equal("XXXXXX", display.Tag); + Assert.Equal("tag", display.Tag); Assert.Equal(Data.Models.Metadata.DisplayType.Vector, display.Type); Assert.Equal("XXXXXX", display.Rotate); Assert.Equal(true, display.FlipX); @@ -631,8 +631,8 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(dipswitch); Assert.Equal("XXXXXX", dipswitch.Name); - Assert.Equal("XXXXXX", dipswitch.Tag); - Assert.Equal("XXXXXX", dipswitch.Mask); + Assert.Equal("tag", dipswitch.Tag); + Assert.Equal("mask", dipswitch.Mask); Validate(dipswitch.Condition); Assert.NotNull(dipswitch.DipLocation); @@ -650,10 +650,10 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Condition? condition) { Assert.NotNull(condition); - Assert.Equal("XXXXXX", condition.Tag); - Assert.Equal("XXXXXX", condition.Mask); + Assert.Equal("tag", condition.Tag); + Assert.Equal("mask", condition.Mask); Assert.Equal(Data.Models.Metadata.Relation.Equal, condition.Relation); - Assert.Equal("XXXXXX", condition.Value); + Assert.Equal("value", condition.Value); } /// @@ -674,7 +674,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(dipvalue); Assert.Equal("XXXXXX", dipvalue.Name); - Assert.Equal("XXXXXX", dipvalue.Value); + Assert.Equal("value", dipvalue.Value); Assert.Equal(true, dipvalue.Default); Validate(dipvalue.Condition); } @@ -686,8 +686,8 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(configuration); Assert.Equal("XXXXXX", configuration.Name); - Assert.Equal("XXXXXX", configuration.Tag); - Assert.Equal("XXXXXX", configuration.Mask); + Assert.Equal("tag", configuration.Tag); + Assert.Equal("mask", configuration.Mask); Validate(configuration.Condition); Assert.NotNull(configuration.ConfLocation); @@ -717,7 +717,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(confsetting); Assert.Equal("XXXXXX", confsetting.Name); - Assert.Equal("XXXXXX", confsetting.Value); + Assert.Equal("value", confsetting.Value); Assert.Equal(true, confsetting.Default); Validate(confsetting.Condition); } @@ -728,7 +728,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Port? port) { Assert.NotNull(port); - Assert.Equal("XXXXXX", port.Tag); + Assert.Equal("tag", port.Tag); Assert.NotNull(port.Analog); var analog = Assert.Single(port.Analog); @@ -741,7 +741,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Analog? analog) { Assert.NotNull(analog); - Assert.Equal("XXXXXX", analog.Mask); + Assert.Equal("mask", analog.Mask); } /// @@ -792,7 +792,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(device); Assert.Equal(Data.Models.Metadata.DeviceType.PunchTape, device.Type); - Assert.Equal("XXXXXX", device.Tag); + Assert.Equal("tag", device.Tag); Assert.Equal("XXXXXX", device.FixedImage); Assert.Equal(true, device.Mandatory); Assert.Equal("XXXXXX", device.Interface); @@ -852,7 +852,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.SoftwareList? softwarelist) { Assert.NotNull(softwarelist); - Assert.Equal("XXXXXX", softwarelist.Tag); + Assert.Equal("tag", softwarelist.Tag); Assert.Equal("XXXXXX", softwarelist.Name); Assert.Equal(Data.Models.Metadata.SoftwareListStatus.Original, softwarelist.Status); Assert.Equal("XXXXXX", softwarelist.Filter); diff --git a/SabreTools.Serialization.CrossModel.Test/MessTests.cs b/SabreTools.Serialization.CrossModel.Test/MessTests.cs index 778266fa..0d3321cd 100644 --- a/SabreTools.Serialization.CrossModel.Test/MessTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/MessTests.cs @@ -62,7 +62,7 @@ namespace SabreTools.Serialization.CrossModel.Test var biosset = new Data.Models.Listxml.BiosSet { Name = "XXXXXX", - Description = "XXXXXX", + Description = "description", Default = true, }; @@ -108,7 +108,7 @@ namespace SabreTools.Serialization.CrossModel.Test var chip = new Data.Models.Listxml.Chip { Name = "XXXXXX", - Tag = "XXXXXX", + Tag = "tag", Type = Data.Models.Metadata.ChipType.CPU, SoundOnly = true, Clock = "XXXXXX", @@ -116,7 +116,7 @@ namespace SabreTools.Serialization.CrossModel.Test var display = new Data.Models.Listxml.Display { - Tag = "XXXXXX", + Tag = "tag", Type = Data.Models.Metadata.DisplayType.Vector, Rotate = "XXXXXX", FlipX = true, @@ -177,10 +177,10 @@ namespace SabreTools.Serialization.CrossModel.Test var condition = new Data.Models.Listxml.Condition { - Tag = "XXXXXX", - Mask = "XXXXXX", + Tag = "tag", + Mask = "mask", Relation = Data.Models.Metadata.Relation.Equal, - Value = "XXXXXX", + Value = "value", }; var diplocation = new Data.Models.Listxml.DipLocation @@ -193,7 +193,7 @@ namespace SabreTools.Serialization.CrossModel.Test var dipvalue = new Data.Models.Listxml.DipValue { Name = "XXXXXX", - Value = "XXXXXX", + Value = "value", Default = true, Condition = condition, }; @@ -201,8 +201,8 @@ namespace SabreTools.Serialization.CrossModel.Test var dipswitch = new Data.Models.Listxml.DipSwitch { Name = "XXXXXX", - Tag = "XXXXXX", - Mask = "XXXXXX", + Tag = "tag", + Mask = "mask", Condition = condition, DipLocation = [diplocation], DipValue = [dipvalue], @@ -218,7 +218,7 @@ namespace SabreTools.Serialization.CrossModel.Test var confsetting = new Data.Models.Listxml.ConfSetting { Name = "XXXXXX", - Value = "XXXXXX", + Value = "value", Default = true, Condition = condition, }; @@ -226,8 +226,8 @@ namespace SabreTools.Serialization.CrossModel.Test var configuration = new Data.Models.Listxml.Configuration { Name = "XXXXXX", - Tag = "XXXXXX", - Mask = "XXXXXX", + Tag = "tag", + Mask = "mask", Condition = condition, ConfLocation = [conflocation], ConfSetting = [confsetting], @@ -235,12 +235,12 @@ namespace SabreTools.Serialization.CrossModel.Test var analog = new Data.Models.Listxml.Analog { - Mask = "XXXXXX", + Mask = "mask", }; var port = new Data.Models.Listxml.Port { - Tag = "XXXXXX", + Tag = "tag", Analog = [analog], }; @@ -287,7 +287,7 @@ namespace SabreTools.Serialization.CrossModel.Test var device = new Data.Models.Listxml.Device { Type = Data.Models.Metadata.DeviceType.PunchTape, - Tag = "XXXXXX", + Tag = "tag", FixedImage = "XXXXXX", Mandatory = true, Interface = "XXXXXX", @@ -310,7 +310,7 @@ namespace SabreTools.Serialization.CrossModel.Test var softwarelist = new Data.Models.Listxml.SoftwareList { - Tag = "XXXXXX", + Tag = "tag", Name = "XXXXXX", Status = Data.Models.Metadata.SoftwareListStatus.Original, Filter = "XXXXXX", @@ -335,7 +335,7 @@ namespace SabreTools.Serialization.CrossModel.Test gameBase.CloneOf = "XXXXXX"; gameBase.RomOf = "XXXXXX"; gameBase.SampleOf = "XXXXXX"; - gameBase.Description = "XXXXXX"; + gameBase.Description = "description"; gameBase.Year = "XXXXXX"; gameBase.Manufacturer = "XXXXXX"; gameBase.History = "XXXXXX"; @@ -382,7 +382,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", gb.CloneOf); Assert.Equal("XXXXXX", gb.RomOf); Assert.Equal("XXXXXX", gb.SampleOf); - Assert.Equal("XXXXXX", gb.Description); + Assert.Equal("description", gb.Description); Assert.Equal("XXXXXX", gb.Year); Assert.Equal("XXXXXX", gb.Manufacturer); Assert.Equal("XXXXXX", gb.History); @@ -468,7 +468,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(biosset); Assert.Equal("XXXXXX", biosset.Name); - Assert.Equal("XXXXXX", biosset.Description); + Assert.Equal("description", biosset.Description); Assert.Equal(true, biosset.Default); } @@ -534,7 +534,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(chip); Assert.Equal("XXXXXX", chip.Name); - Assert.Equal("XXXXXX", chip.Tag); + Assert.Equal("tag", chip.Tag); Assert.Equal(Data.Models.Metadata.ChipType.CPU, chip.Type); Assert.Equal(true, chip.SoundOnly); Assert.Equal("XXXXXX", chip.Clock); @@ -546,7 +546,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Display? display) { Assert.NotNull(display); - Assert.Equal("XXXXXX", display.Tag); + Assert.Equal("tag", display.Tag); Assert.Equal(Data.Models.Metadata.DisplayType.Vector, display.Type); Assert.Equal("XXXXXX", display.Rotate); Assert.Equal(true, display.FlipX); @@ -631,8 +631,8 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(dipswitch); Assert.Equal("XXXXXX", dipswitch.Name); - Assert.Equal("XXXXXX", dipswitch.Tag); - Assert.Equal("XXXXXX", dipswitch.Mask); + Assert.Equal("tag", dipswitch.Tag); + Assert.Equal("mask", dipswitch.Mask); Validate(dipswitch.Condition); Assert.NotNull(dipswitch.DipLocation); @@ -650,10 +650,10 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Condition? condition) { Assert.NotNull(condition); - Assert.Equal("XXXXXX", condition.Tag); - Assert.Equal("XXXXXX", condition.Mask); + Assert.Equal("tag", condition.Tag); + Assert.Equal("mask", condition.Mask); Assert.Equal(Data.Models.Metadata.Relation.Equal, condition.Relation); - Assert.Equal("XXXXXX", condition.Value); + Assert.Equal("value", condition.Value); } /// @@ -674,7 +674,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(dipvalue); Assert.Equal("XXXXXX", dipvalue.Name); - Assert.Equal("XXXXXX", dipvalue.Value); + Assert.Equal("value", dipvalue.Value); Assert.Equal(true, dipvalue.Default); Validate(dipvalue.Condition); } @@ -686,8 +686,8 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(configuration); Assert.Equal("XXXXXX", configuration.Name); - Assert.Equal("XXXXXX", configuration.Tag); - Assert.Equal("XXXXXX", configuration.Mask); + Assert.Equal("tag", configuration.Tag); + Assert.Equal("mask", configuration.Mask); Validate(configuration.Condition); Assert.NotNull(configuration.ConfLocation); @@ -717,7 +717,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(confsetting); Assert.Equal("XXXXXX", confsetting.Name); - Assert.Equal("XXXXXX", confsetting.Value); + Assert.Equal("value", confsetting.Value); Assert.Equal(true, confsetting.Default); Validate(confsetting.Condition); } @@ -728,7 +728,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Port? port) { Assert.NotNull(port); - Assert.Equal("XXXXXX", port.Tag); + Assert.Equal("tag", port.Tag); Assert.NotNull(port.Analog); var analog = Assert.Single(port.Analog); @@ -741,7 +741,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Analog? analog) { Assert.NotNull(analog); - Assert.Equal("XXXXXX", analog.Mask); + Assert.Equal("mask", analog.Mask); } /// @@ -792,7 +792,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(device); Assert.Equal(Data.Models.Metadata.DeviceType.PunchTape, device.Type); - Assert.Equal("XXXXXX", device.Tag); + Assert.Equal("tag", device.Tag); Assert.Equal("XXXXXX", device.FixedImage); Assert.Equal(true, device.Mandatory); Assert.Equal("XXXXXX", device.Interface); @@ -852,7 +852,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.SoftwareList? softwarelist) { Assert.NotNull(softwarelist); - Assert.Equal("XXXXXX", softwarelist.Tag); + Assert.Equal("tag", softwarelist.Tag); Assert.Equal("XXXXXX", softwarelist.Name); Assert.Equal(Data.Models.Metadata.SoftwareListStatus.Original, softwarelist.Status); Assert.Equal("XXXXXX", softwarelist.Filter); diff --git a/SabreTools.Serialization.CrossModel.Test/OfflineListTests.cs b/SabreTools.Serialization.CrossModel.Test/OfflineListTests.cs index a24d3aac..b2d42112 100644 --- a/SabreTools.Serialization.CrossModel.Test/OfflineListTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/OfflineListTests.cs @@ -142,13 +142,13 @@ namespace SabreTools.Serialization.CrossModel.Test var find = new Data.Models.OfflineList.Find { Operation = "XXXXXX", - Value = "XXXXXX", + Value = "value", Content = "XXXXXX", }; var to = new Data.Models.OfflineList.To { - Value = "XXXXXX", + Value = "value", Default = true, Auto = "XXXXXX", Find = [find], @@ -338,7 +338,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.OfflineList.To? to) { Assert.NotNull(to); - Assert.Equal("XXXXXX", to.Value); + Assert.Equal("value", to.Value); Assert.Equal(true, to.Default); Assert.Equal("XXXXXX", to.Auto); @@ -354,7 +354,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(find); Assert.Equal("XXXXXX", find.Operation); - Assert.Equal("XXXXXX", find.Value); + Assert.Equal("value", find.Value); Assert.Equal("XXXXXX", find.Content); } diff --git a/SabreTools.Serialization.CrossModel.Test/OpenMSXTests.cs b/SabreTools.Serialization.CrossModel.Test/OpenMSXTests.cs index 0dae26aa..10bb6445 100644 --- a/SabreTools.Serialization.CrossModel.Test/OpenMSXTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/OpenMSXTests.cs @@ -36,7 +36,7 @@ namespace SabreTools.Serialization.CrossModel.Test { var original = new Data.Models.OpenMSX.Original { - Value = "XXXXXX", + Value = "value", Content = "XXXXXX", }; @@ -137,7 +137,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.OpenMSX.Original? original) { Assert.NotNull(original); - Assert.Equal("XXXXXX", original.Value); + Assert.Equal("value", original.Value); Assert.Equal("XXXXXX", original.Content); } diff --git a/SabreTools.Serialization.CrossModel.Test/RomCenterTests.cs b/SabreTools.Serialization.CrossModel.Test/RomCenterTests.cs index 7f2f0fb1..86bfa6c5 100644 --- a/SabreTools.Serialization.CrossModel.Test/RomCenterTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/RomCenterTests.cs @@ -63,7 +63,7 @@ namespace SabreTools.Serialization.CrossModel.Test ParentName = "XXXXXX", ParentDescription = "XXXXXX", GameName = "XXXXXX", - GameDescription = "XXXXXX", + GameDescription = "description", RomName = "XXXXXX", RomCRC = "XXXXXX", RomSize = "XXXXXX", @@ -142,7 +142,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", rom.ParentName); Assert.Null(rom.ParentDescription); // This is unmappable Assert.Equal("XXXXXX", rom.GameName); - Assert.Equal("XXXXXX", rom.GameDescription); + Assert.Equal("description", rom.GameDescription); Assert.Equal("XXXXXX", rom.RomName); Assert.Equal("XXXXXX", rom.RomCRC); Assert.Equal("XXXXXX", rom.RomSize); diff --git a/SabreTools.Serialization.CrossModel.Test/SeparatedValueTests.cs b/SabreTools.Serialization.CrossModel.Test/SeparatedValueTests.cs index 8b1da955..c64a9ca1 100644 --- a/SabreTools.Serialization.CrossModel.Test/SeparatedValueTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/SeparatedValueTests.cs @@ -42,9 +42,9 @@ namespace SabreTools.Serialization.CrossModel.Test { FileName = "XXXXXX", InternalName = "XXXXXX", - Description = "XXXXXX", + Description = "description", GameName = "XXXXXX", - GameDescription = "XXXXXX", + GameDescription = "description", Type = "disk", DiskName = "XXXXXX", MD5 = "XXXXXX", @@ -56,9 +56,9 @@ namespace SabreTools.Serialization.CrossModel.Test { FileName = "XXXXXX", InternalName = "XXXXXX", - Description = "XXXXXX", + Description = "description", GameName = "XXXXXX", - GameDescription = "XXXXXX", + GameDescription = "description", Type = "media", DiskName = "XXXXXX", MD5 = "XXXXXX", @@ -71,9 +71,9 @@ namespace SabreTools.Serialization.CrossModel.Test { FileName = "XXXXXX", InternalName = "XXXXXX", - Description = "XXXXXX", + Description = "description", GameName = "XXXXXX", - GameDescription = "XXXXXX", + GameDescription = "description", Type = "rom", RomName = "XXXXXX", Size = "XXXXXX", @@ -112,9 +112,9 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(row); Assert.Equal("XXXXXX", row.FileName); Assert.Equal("XXXXXX", row.InternalName); - Assert.Equal("XXXXXX", row.Description); + Assert.Equal("description", row.Description); Assert.Equal("XXXXXX", row.GameName); - Assert.Equal("XXXXXX", row.GameDescription); + Assert.Equal("description", row.GameDescription); Assert.Equal("disk", row.Type); Assert.Null(row.RomName); Assert.Equal("XXXXXX", row.DiskName); @@ -137,9 +137,9 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(row); Assert.Equal("XXXXXX", row.FileName); Assert.Equal("XXXXXX", row.InternalName); - Assert.Equal("XXXXXX", row.Description); + Assert.Equal("description", row.Description); Assert.Equal("XXXXXX", row.GameName); - Assert.Equal("XXXXXX", row.GameDescription); + Assert.Equal("description", row.GameDescription); Assert.Equal("media", row.Type); Assert.Null(row.RomName); Assert.Equal("XXXXXX", row.DiskName); @@ -162,9 +162,9 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(row); Assert.Equal("XXXXXX", row.FileName); Assert.Equal("XXXXXX", row.InternalName); - Assert.Equal("XXXXXX", row.Description); + Assert.Equal("description", row.Description); Assert.Equal("XXXXXX", row.GameName); - Assert.Equal("XXXXXX", row.GameDescription); + Assert.Equal("description", row.GameDescription); Assert.Equal("rom", row.Type); Assert.Equal("XXXXXX", row.RomName); Assert.Null(row.DiskName); diff --git a/SabreTools.Serialization.CrossModel.Test/SoftwareListTests.cs b/SabreTools.Serialization.CrossModel.Test/SoftwareListTests.cs index d6130c52..f2805167 100644 --- a/SabreTools.Serialization.CrossModel.Test/SoftwareListTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/SoftwareListTests.cs @@ -23,7 +23,7 @@ namespace SabreTools.Serialization.CrossModel.Test // Validate the data Assert.NotNull(newSl); Assert.Equal("XXXXXX", newSl.Name); - Assert.Equal("XXXXXX", newSl.Description); + Assert.Equal("description", newSl.Description); Assert.Equal("XXXXXX", newSl.Notes); Assert.NotNull(newSl.Software); @@ -39,19 +39,19 @@ namespace SabreTools.Serialization.CrossModel.Test var info = new Data.Models.SoftwareList.Info { Name = "XXXXXX", - Value = "XXXXXX", + Value = "value", }; var sharedfeat = new Data.Models.SoftwareList.SharedFeat { Name = "XXXXXX", - Value = "XXXXXX", + Value = "value", }; var feature = new Data.Models.SoftwareList.Feature { Name = "XXXXXX", - Value = "XXXXXX", + Value = "value", }; var rom = new Data.Models.SoftwareList.Rom @@ -62,7 +62,7 @@ namespace SabreTools.Serialization.CrossModel.Test CRC = "XXXXXX", SHA1 = "XXXXXX", Offset = "XXXXXX", - Value = "XXXXXX", + Value = "value", Status = Data.Models.Metadata.ItemStatus.Good, LoadFlag = Data.Models.Metadata.LoadFlag.Load16Byte, }; @@ -94,15 +94,15 @@ namespace SabreTools.Serialization.CrossModel.Test var dipvalue = new Data.Models.SoftwareList.DipValue { Name = "XXXXXX", - Value = "XXXXXX", + Value = "value", Default = true, }; var dipswitch = new Data.Models.SoftwareList.DipSwitch { Name = "XXXXXX", - Tag = "XXXXXX", - Mask = "XXXXXX", + Tag = "tag", + Mask = "mask", DipValue = [dipvalue], }; @@ -121,7 +121,7 @@ namespace SabreTools.Serialization.CrossModel.Test Name = "XXXXXX", CloneOf = "XXXXXX", Supported = Data.Models.Metadata.Supported.Yes, - Description = "XXXXXX", + Description = "description", Year = "XXXXXX", Publisher = "XXXXXX", Notes = "XXXXXX", @@ -133,7 +133,7 @@ namespace SabreTools.Serialization.CrossModel.Test return new Data.Models.SoftwareList.SoftwareList { Name = "XXXXXX", - Description = "XXXXXX", + Description = "description", Notes = "XXXXXX", Software = [software], }; @@ -148,7 +148,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", software.Name); Assert.Equal("XXXXXX", software.CloneOf); Assert.Equal(Data.Models.Metadata.Supported.Yes, software.Supported); - Assert.Equal("XXXXXX", software.Description); + Assert.Equal("description", software.Description); Assert.Equal("XXXXXX", software.Year); Assert.Equal("XXXXXX", software.Publisher); Assert.Equal("XXXXXX", software.Notes); @@ -173,7 +173,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(info); Assert.Equal("XXXXXX", info.Name); - Assert.Equal("XXXXXX", info.Value); + Assert.Equal("value", info.Value); } /// @@ -183,7 +183,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(sharedfeat); Assert.Equal("XXXXXX", sharedfeat.Name); - Assert.Equal("XXXXXX", sharedfeat.Value); + Assert.Equal("value", sharedfeat.Value); } /// @@ -219,7 +219,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(feature); Assert.Equal("XXXXXX", feature.Name); - Assert.Equal("XXXXXX", feature.Value); + Assert.Equal("value", feature.Value); } /// @@ -250,7 +250,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", rom.CRC); Assert.Equal("XXXXXX", rom.SHA1); Assert.Equal("XXXXXX", rom.Offset); - Assert.Equal("XXXXXX", rom.Value); + Assert.Equal("value", rom.Value); Assert.Equal(Data.Models.Metadata.ItemStatus.Good, rom.Status); Assert.Equal(Data.Models.Metadata.LoadFlag.Load16Byte, rom.LoadFlag); } @@ -288,8 +288,8 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(dipswitch); Assert.Equal("XXXXXX", dipswitch.Name); - Assert.Equal("XXXXXX", dipswitch.Tag); - Assert.Equal("XXXXXX", dipswitch.Mask); + Assert.Equal("tag", dipswitch.Tag); + Assert.Equal("mask", dipswitch.Mask); Assert.NotNull(dipswitch.DipValue); var dipvalue = Assert.Single(dipswitch.DipValue); @@ -303,7 +303,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(dipvalue); Assert.Equal("XXXXXX", dipvalue.Name); - Assert.Equal("XXXXXX", dipvalue.Value); + Assert.Equal("value", dipvalue.Value); Assert.Equal(true, dipvalue.Default); } } diff --git a/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs b/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs index 6ceb389c..940c75f6 100644 --- a/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs @@ -44,7 +44,7 @@ namespace SabreTools.Serialization.CrossModel var clrMamePro = new Data.Models.ClrMamePro.ClrMamePro { Name = item.Name, - Description = item.ReadString(Data.Models.Metadata.Header.DescriptionKey), + Description = item.Description, RootDir = item.ReadString(Data.Models.Metadata.Header.RootDirKey), Category = item.ReadString(Data.Models.Metadata.Header.CategoryKey), Version = item.ReadString(Data.Models.Metadata.Header.VersionKey), @@ -70,7 +70,7 @@ namespace SabreTools.Serialization.CrossModel GameBase gameBase = game ? new Game() : new Machine(); gameBase.Name = item.Name; - gameBase.Description = item.ReadString(Data.Models.Metadata.Machine.DescriptionKey); + gameBase.Description = item.Description; // gameBase.DriverStatus = item.ReadString(Data.Models.Metadata.Machine.DriverKey); // TODO: Needs metadata mapping gameBase.Year = item.ReadString(Data.Models.Metadata.Machine.YearKey); gameBase.Manufacturer = item.ReadString(Data.Models.Metadata.Machine.ManufacturerKey); @@ -154,7 +154,7 @@ namespace SabreTools.Serialization.CrossModel var biosset = new BiosSet { Name = item.Name, - Description = item.ReadString(Data.Models.Metadata.BiosSet.DescriptionKey), + Description = item.Description, Default = item.Default, }; return biosset; diff --git a/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs b/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs index a4291784..70807e57 100644 --- a/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs @@ -36,7 +36,7 @@ namespace SabreTools.Serialization.CrossModel var header = new Data.Models.Metadata.Header { Name = item.Name, - [Data.Models.Metadata.Header.DescriptionKey] = item.Description, + Description = item.Description, [Data.Models.Metadata.Header.RootDirKey] = item.RootDir, [Data.Models.Metadata.Header.CategoryKey] = item.Category, [Data.Models.Metadata.Header.VersionKey] = item.Version, @@ -65,7 +65,7 @@ namespace SabreTools.Serialization.CrossModel var machine = new Data.Models.Metadata.Machine { Name = item.Name, - [Data.Models.Metadata.Machine.DescriptionKey] = item.Description, + Description = item.Description, // [Data.Models.Metadata.Machine.DriverKey] = item.DriverStatus, // TODO: Needs metadata mapping [Data.Models.Metadata.Machine.YearKey] = item.Year, [Data.Models.Metadata.Machine.ManufacturerKey] = item.Manufacturer, @@ -167,7 +167,7 @@ namespace SabreTools.Serialization.CrossModel var biosset = new Data.Models.Metadata.BiosSet { Name = item.Name, - [Data.Models.Metadata.BiosSet.DescriptionKey] = item.Description, + Description = item.Description, Default = item.Default, }; return biosset; diff --git a/SabreTools.Serialization.CrossModel/DosCenter.Deserializer.cs b/SabreTools.Serialization.CrossModel/DosCenter.Deserializer.cs index 8e3f3259..9e949b31 100644 --- a/SabreTools.Serialization.CrossModel/DosCenter.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/DosCenter.Deserializer.cs @@ -32,7 +32,7 @@ namespace SabreTools.Serialization.CrossModel var dosCenter = new Data.Models.DosCenter.DosCenter { Name = item.Name, - Description = item.ReadString(Data.Models.Metadata.Header.DescriptionKey), + Description = item.Description, Version = item.ReadString(Data.Models.Metadata.Header.VersionKey), Date = item.ReadString(Data.Models.Metadata.Header.DateKey), Author = item.ReadString(Data.Models.Metadata.Header.AuthorKey), diff --git a/SabreTools.Serialization.CrossModel/DosCenter.Serializer.cs b/SabreTools.Serialization.CrossModel/DosCenter.Serializer.cs index 1342d1ec..84fabfa2 100644 --- a/SabreTools.Serialization.CrossModel/DosCenter.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/DosCenter.Serializer.cs @@ -33,7 +33,7 @@ namespace SabreTools.Serialization.CrossModel var header = new Data.Models.Metadata.Header { Name = item.Name, - [Data.Models.Metadata.Header.DescriptionKey] = item.Description, + Description = item.Description, [Data.Models.Metadata.Header.VersionKey] = item.Version, [Data.Models.Metadata.Header.DateKey] = item.Date, [Data.Models.Metadata.Header.AuthorKey] = item.Author, diff --git a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs index 4e17acd2..3ff69276 100644 --- a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs @@ -52,7 +52,7 @@ namespace SabreTools.Serialization.CrossModel CloneOf = item.ReadString(Data.Models.Metadata.Machine.CloneOfKey), RomOf = item.ReadString(Data.Models.Metadata.Machine.RomOfKey), SampleOf = item.ReadString(Data.Models.Metadata.Machine.SampleOfKey), - Description = item.ReadString(Data.Models.Metadata.Machine.DescriptionKey), + Description = item.Description, Year = item.ReadString(Data.Models.Metadata.Machine.YearKey), Manufacturer = item.ReadString(Data.Models.Metadata.Machine.ManufacturerKey), History = item.ReadString(Data.Models.Metadata.Machine.HistoryKey), @@ -166,7 +166,7 @@ namespace SabreTools.Serialization.CrossModel { var analog = new Analog { - Mask = item.ReadString(Data.Models.Metadata.Analog.MaskKey), + Mask = item.Mask, }; return analog; } @@ -179,7 +179,7 @@ namespace SabreTools.Serialization.CrossModel var biosset = new BiosSet { Name = item.Name, - Description = item.ReadString(Data.Models.Metadata.BiosSet.DescriptionKey), + Description = item.Description, Default = item.Default, }; return biosset; @@ -193,7 +193,7 @@ namespace SabreTools.Serialization.CrossModel var chip = new Chip { Name = item.Name, - Tag = item.ReadString(Data.Models.Metadata.Chip.TagKey), + Tag = item.Tag, Type = item.ChipType, SoundOnly = item.SoundOnly, Clock = item.ReadString(Data.Models.Metadata.Chip.ClockKey), @@ -208,10 +208,10 @@ namespace SabreTools.Serialization.CrossModel { var condition = new Condition { - Tag = item.ReadString(Data.Models.Metadata.Condition.TagKey), - Mask = item.ReadString(Data.Models.Metadata.Condition.MaskKey), + Tag = item.Tag, + Mask = item.Mask, Relation = item.Relation, - Value = item.ReadString(Data.Models.Metadata.Condition.ValueKey), + Value = item.Value, }; return condition; } @@ -224,8 +224,8 @@ namespace SabreTools.Serialization.CrossModel var configuration = new Configuration { Name = item.Name, - Tag = item.ReadString(Data.Models.Metadata.Configuration.TagKey), - Mask = item.ReadString(Data.Models.Metadata.Configuration.MaskKey), + Tag = item.Tag, + Mask = item.Mask, }; var condition = item.Read(Data.Models.Metadata.Configuration.ConditionKey); @@ -265,7 +265,7 @@ namespace SabreTools.Serialization.CrossModel var confSetting = new ConfSetting { Name = item.Name, - Value = item.ReadString(Data.Models.Metadata.ConfSetting.ValueKey), + Value = item.Value, Default = item.Default, }; @@ -307,7 +307,7 @@ namespace SabreTools.Serialization.CrossModel var device = new Device { Type = item.DeviceType, - Tag = item.ReadString(Data.Models.Metadata.Device.TagKey), + Tag = item.Tag, FixedImage = item.ReadString(Data.Models.Metadata.Device.FixedImageKey), Mandatory = item.Mandatory, Interface = item.ReadString(Data.Models.Metadata.Device.InterfaceKey), @@ -358,8 +358,8 @@ namespace SabreTools.Serialization.CrossModel var dipSwitch = new DipSwitch { Name = item.Name, - Tag = item.ReadString(Data.Models.Metadata.DipSwitch.TagKey), - Mask = item.ReadString(Data.Models.Metadata.DipSwitch.MaskKey), + Tag = item.Tag, + Mask = item.Mask, }; var condition = item.Read(Data.Models.Metadata.DipSwitch.ConditionKey); @@ -385,7 +385,7 @@ namespace SabreTools.Serialization.CrossModel var dipValue = new DipValue { Name = item.Name, - Value = item.ReadString(Data.Models.Metadata.DipValue.ValueKey), + Value = item.Value, Default = item.Default, }; @@ -423,7 +423,7 @@ namespace SabreTools.Serialization.CrossModel { var display = new Display { - Tag = item.ReadString(Data.Models.Metadata.Display.TagKey), + Tag = item.Tag, Type = item.DisplayType, Rotate = item.ReadString(Data.Models.Metadata.Display.RotateKey), FlipX = item.FlipX, @@ -534,7 +534,7 @@ namespace SabreTools.Serialization.CrossModel { var port = new Port { - Tag = item.ReadString(Data.Models.Metadata.Port.TagKey), + Tag = item.Tag, }; var analogs = item.Read(Data.Models.Metadata.Port.AnalogKey); @@ -631,7 +631,7 @@ namespace SabreTools.Serialization.CrossModel { var softwareList = new Data.Models.Listxml.SoftwareList { - Tag = item.ReadString(Data.Models.Metadata.SoftwareList.TagKey), + Tag = item.Tag, Name = item.Name, Status = item.Status, Filter = item.ReadString(Data.Models.Metadata.SoftwareList.FilterKey), diff --git a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs index 01d8fa7e..f58abe2b 100644 --- a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs @@ -55,7 +55,7 @@ namespace SabreTools.Serialization.CrossModel [Data.Models.Metadata.Machine.CloneOfKey] = item.CloneOf, [Data.Models.Metadata.Machine.RomOfKey] = item.RomOf, [Data.Models.Metadata.Machine.SampleOfKey] = item.SampleOf, - [Data.Models.Metadata.Machine.DescriptionKey] = item.Description, + Description = item.Description, [Data.Models.Metadata.Machine.YearKey] = item.Year, [Data.Models.Metadata.Machine.ManufacturerKey] = item.Manufacturer, [Data.Models.Metadata.Machine.HistoryKey] = item.History, @@ -199,7 +199,7 @@ namespace SabreTools.Serialization.CrossModel { var analog = new Data.Models.Metadata.Analog { - [Data.Models.Metadata.Analog.MaskKey] = item.Mask, + Mask = item.Mask, }; return analog; } @@ -212,7 +212,7 @@ namespace SabreTools.Serialization.CrossModel var biosset = new Data.Models.Metadata.BiosSet { Name = item.Name, - [Data.Models.Metadata.BiosSet.DescriptionKey] = item.Description, + Description = item.Description, Default = item.Default, }; return biosset; @@ -226,7 +226,7 @@ namespace SabreTools.Serialization.CrossModel var chip = new Data.Models.Metadata.Chip { Name = item.Name, - [Data.Models.Metadata.Chip.TagKey] = item.Tag, + Tag = item.Tag, ChipType = item.Type, SoundOnly = item.SoundOnly, [Data.Models.Metadata.Chip.ClockKey] = item.Clock, @@ -241,10 +241,10 @@ namespace SabreTools.Serialization.CrossModel { var condition = new Data.Models.Metadata.Condition { - [Data.Models.Metadata.Condition.TagKey] = item.Tag, - [Data.Models.Metadata.Condition.MaskKey] = item.Mask, + Tag = item.Tag, + Mask = item.Mask, Relation = item.Relation, - [Data.Models.Metadata.Condition.ValueKey] = item.Value, + Value = item.Value, }; return condition; } @@ -257,8 +257,8 @@ namespace SabreTools.Serialization.CrossModel var configuration = new Data.Models.Metadata.Configuration { Name = item.Name, - [Data.Models.Metadata.Configuration.TagKey] = item.Tag, - [Data.Models.Metadata.Configuration.MaskKey] = item.Mask, + Tag = item.Tag, + Mask = item.Mask, }; if (item.Condition is not null) @@ -301,7 +301,7 @@ namespace SabreTools.Serialization.CrossModel var confSetting = new Data.Models.Metadata.ConfSetting { Name = item.Name, - [Data.Models.Metadata.ConfSetting.ValueKey] = item.Value, + Value = item.Value, Default = item.Default, }; @@ -342,7 +342,7 @@ namespace SabreTools.Serialization.CrossModel var device = new Data.Models.Metadata.Device { DeviceType = item.Type, - [Data.Models.Metadata.Device.TagKey] = item.Tag, + Tag = item.Tag, [Data.Models.Metadata.Device.FixedImageKey] = item.FixedImage, Mandatory = item.Mandatory, [Data.Models.Metadata.Device.InterfaceKey] = item.Interface, @@ -394,8 +394,8 @@ namespace SabreTools.Serialization.CrossModel var dipSwitch = new Data.Models.Metadata.DipSwitch { Name = item.Name, - [Data.Models.Metadata.DipSwitch.TagKey] = item.Tag, - [Data.Models.Metadata.DipSwitch.MaskKey] = item.Mask, + Tag = item.Tag, + Mask = item.Mask, }; if (item.Condition is not null) @@ -424,7 +424,7 @@ namespace SabreTools.Serialization.CrossModel var dipValue = new Data.Models.Metadata.DipValue { Name = item.Name, - [Data.Models.Metadata.DipValue.ValueKey] = item.Value, + Value = item.Value, Default = item.Default, }; @@ -461,7 +461,7 @@ namespace SabreTools.Serialization.CrossModel { var display = new Data.Models.Metadata.Display { - [Data.Models.Metadata.Display.TagKey] = item.Tag, + Tag = item.Tag, DisplayType = item.Type, [Data.Models.Metadata.Display.RotateKey] = item.Rotate, FlipX = item.FlipX, @@ -571,7 +571,7 @@ namespace SabreTools.Serialization.CrossModel { var port = new Data.Models.Metadata.Port { - [Data.Models.Metadata.Port.TagKey] = item.Tag, + Tag = item.Tag, }; if (item.Analog is not null && item.Analog.Length > 0) @@ -672,7 +672,7 @@ namespace SabreTools.Serialization.CrossModel { var softwareList = new Data.Models.Metadata.SoftwareList { - [Data.Models.Metadata.SoftwareList.TagKey] = item.Tag, + Tag = item.Tag, Name = item.Name, Status = item.Status, [Data.Models.Metadata.SoftwareList.FilterKey] = item.Filter, diff --git a/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs b/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs index dbead2e5..baa62d3e 100644 --- a/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs @@ -43,7 +43,7 @@ namespace SabreTools.Serialization.CrossModel { Id = item.ReadString(Data.Models.Metadata.Header.IdKey), Name = item.Name, - Description = item.ReadString(Data.Models.Metadata.Header.DescriptionKey), + Description = item.Description, RootDir = item.ReadString(Data.Models.Metadata.Header.RootDirKey), Category = item.ReadString(Data.Models.Metadata.Header.CategoryKey), Version = item.ReadString(Data.Models.Metadata.Header.VersionKey), @@ -134,7 +134,7 @@ namespace SabreTools.Serialization.CrossModel gameBase.CloneOfId = item.ReadString(Data.Models.Metadata.Machine.CloneOfIdKey); gameBase.Runnable = item.Runnable; gameBase.Comment = item.ReadStringArray(Data.Models.Metadata.Machine.CommentKey); - gameBase.Description = item.ReadString(Data.Models.Metadata.Machine.DescriptionKey); + gameBase.Description = item.Description; gameBase.Year = item.ReadString(Data.Models.Metadata.Machine.YearKey); gameBase.Manufacturer = item.ReadString(Data.Models.Metadata.Machine.ManufacturerKey); gameBase.Publisher = item.ReadString(Data.Models.Metadata.Machine.PublisherKey); @@ -207,7 +207,7 @@ namespace SabreTools.Serialization.CrossModel var biosset = new BiosSet { Name = item.Name, - Description = item.ReadString(Data.Models.Metadata.BiosSet.DescriptionKey), + Description = item.Description, Default = item.Default, }; return biosset; @@ -347,7 +347,7 @@ namespace SabreTools.Serialization.CrossModel { var softwareList = new Data.Models.Logiqx.SoftwareList { - Tag = item.ReadString(Data.Models.Metadata.SoftwareList.TagKey), + Tag = item.Tag, Name = item.Name, Status = item.Status, Filter = item.ReadString(Data.Models.Metadata.SoftwareList.FilterKey), diff --git a/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs b/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs index 631990fd..21cfb164 100644 --- a/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs @@ -55,7 +55,7 @@ namespace SabreTools.Serialization.CrossModel { [Data.Models.Metadata.Header.IdKey] = item.Id, Name = item.Name, - [Data.Models.Metadata.Header.DescriptionKey] = item.Description, + Description = item.Description, [Data.Models.Metadata.Header.RootDirKey] = item.RootDir, [Data.Models.Metadata.Header.CategoryKey] = item.Category, [Data.Models.Metadata.Header.VersionKey] = item.Version, @@ -140,7 +140,7 @@ namespace SabreTools.Serialization.CrossModel [Data.Models.Metadata.Machine.CloneOfIdKey] = item.CloneOfId, Runnable = item.Runnable, [Data.Models.Metadata.Machine.CommentKey] = item.Comment, - [Data.Models.Metadata.Machine.DescriptionKey] = item.Description, + Description = item.Description, [Data.Models.Metadata.Machine.YearKey] = item.Year, [Data.Models.Metadata.Machine.ManufacturerKey] = item.Manufacturer, [Data.Models.Metadata.Machine.PublisherKey] = item.Publisher, @@ -201,7 +201,7 @@ namespace SabreTools.Serialization.CrossModel var biosset = new Data.Models.Metadata.BiosSet { Name = item.Name, - [Data.Models.Metadata.BiosSet.DescriptionKey] = item.Description, + Description = item.Description, Default = item.Default, }; return biosset; @@ -341,7 +341,7 @@ namespace SabreTools.Serialization.CrossModel { var softwareList = new Data.Models.Metadata.SoftwareList { - [Data.Models.Metadata.SoftwareList.TagKey] = item.Tag, + Tag = item.Tag, Name = item.Name, Status = item.Status, [Data.Models.Metadata.SoftwareList.FilterKey] = item.Filter, diff --git a/SabreTools.Serialization.CrossModel/RomCenter.Deserializer.cs b/SabreTools.Serialization.CrossModel/RomCenter.Deserializer.cs index cf6ff86a..ddadc837 100644 --- a/SabreTools.Serialization.CrossModel/RomCenter.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/RomCenter.Deserializer.cs @@ -101,7 +101,7 @@ namespace SabreTools.Serialization.CrossModel ParentName = parent.ReadString(Data.Models.Metadata.Machine.CloneOfKey), //ParentDescription = parent.ReadString(Data.Models.Metadata.Machine.ParentDescriptionKey), // This is unmappable GameName = parent.Name, - GameDescription = parent.ReadString(Data.Models.Metadata.Machine.DescriptionKey), + GameDescription = parent.Description, RomName = item.Name, RomCRC = item.ReadString(Data.Models.Metadata.Rom.CRCKey), RomSize = item.ReadString(Data.Models.Metadata.Rom.SizeKey), diff --git a/SabreTools.Serialization.CrossModel/RomCenter.Serializer.cs b/SabreTools.Serialization.CrossModel/RomCenter.Serializer.cs index ef281c82..1de290bb 100644 --- a/SabreTools.Serialization.CrossModel/RomCenter.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/RomCenter.Serializer.cs @@ -74,7 +74,7 @@ namespace SabreTools.Serialization.CrossModel [Data.Models.Metadata.Machine.CloneOfKey] = item.ParentName, //[Data.Models.Metadata.Machine.ParentDescriptionKey] = item.ParentDescription, // This is unmappable Name = item.GameName, - [Data.Models.Metadata.Machine.DescriptionKey] = item.GameDescription, + Description = item.GameDescription, [Data.Models.Metadata.Machine.RomKey] = new Data.Models.Metadata.Rom[] { ConvertToInternalModel(item) }, }; diff --git a/SabreTools.Serialization.CrossModel/SeparatedValue.Deserializer.cs b/SabreTools.Serialization.CrossModel/SeparatedValue.Deserializer.cs index a5467b35..5f6c3d09 100644 --- a/SabreTools.Serialization.CrossModel/SeparatedValue.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/SeparatedValue.Deserializer.cs @@ -78,9 +78,9 @@ namespace SabreTools.Serialization.CrossModel { FileName = header?.ReadString("FILENAME"), // TODO: Make this an actual key to retrieve InternalName = header?.Name, - Description = header?.ReadString(Data.Models.Metadata.Header.DescriptionKey), + Description = header?.Description, GameName = parent.Name, - GameDescription = parent.ReadString(Data.Models.Metadata.Machine.DescriptionKey), + GameDescription = parent.Description, Type = "disk", RomName = null, DiskName = item.Name, @@ -106,9 +106,9 @@ namespace SabreTools.Serialization.CrossModel { FileName = header?.ReadString("FILENAME"), // TODO: Make this an actual key to retrieve on an item -- OriginalFilename InternalName = header?.Name, - Description = header?.ReadString(Data.Models.Metadata.Header.DescriptionKey), + Description = header?.Description, GameName = parent.Name, - GameDescription = parent.ReadString(Data.Models.Metadata.Machine.DescriptionKey), + GameDescription = parent.Description, Type = "media", RomName = null, DiskName = item.Name, @@ -133,9 +133,9 @@ namespace SabreTools.Serialization.CrossModel { FileName = header?.ReadString("FILENAME"), // TODO: Make this an actual key to retrieve InternalName = header?.Name, - Description = header?.ReadString(Data.Models.Metadata.Header.DescriptionKey), + Description = header?.Description, GameName = parent.Name, - GameDescription = parent.ReadString(Data.Models.Metadata.Machine.DescriptionKey), + GameDescription = parent.Description, Type = "rom", RomName = item.Name, DiskName = null, diff --git a/SabreTools.Serialization.CrossModel/SeparatedValue.Serializer.cs b/SabreTools.Serialization.CrossModel/SeparatedValue.Serializer.cs index 04b4c421..6a9382e2 100644 --- a/SabreTools.Serialization.CrossModel/SeparatedValue.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/SeparatedValue.Serializer.cs @@ -40,7 +40,7 @@ namespace SabreTools.Serialization.CrossModel var first = item.Row[0]; header["FILENAME"] = first.FileName; // TODO: Make this an actual key to retrieve on an item -- OriginalFilename header.Name = first.FileName; - header[Data.Models.Metadata.Header.DescriptionKey] = first.Description; + header.Description = first.Description; } return header; @@ -54,7 +54,7 @@ namespace SabreTools.Serialization.CrossModel var machine = new Data.Models.Metadata.Machine { Name = item.GameName, - [Data.Models.Metadata.Machine.DescriptionKey] = item.GameDescription, + Description = item.GameDescription, }; var datItem = ConvertToInternalModel(item); diff --git a/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs b/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs index 4d0cc5b2..94a8a2be 100644 --- a/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs @@ -29,7 +29,7 @@ namespace SabreTools.Serialization.CrossModel var softwareList = new Data.Models.SoftwareList.SoftwareList { Name = item.Name, - Description = item.ReadString(Data.Models.Metadata.Header.DescriptionKey), + Description = item.Description, Notes = item.ReadString(Data.Models.Metadata.Header.NotesKey), }; return softwareList; @@ -45,7 +45,7 @@ namespace SabreTools.Serialization.CrossModel Name = item.Name, CloneOf = item.ReadString(Data.Models.Metadata.Machine.CloneOfKey), Supported = item.Supported, - Description = item.ReadString(Data.Models.Metadata.Machine.DescriptionKey), + Description = item.Description, Year = item.ReadString(Data.Models.Metadata.Machine.YearKey), Publisher = item.ReadString(Data.Models.Metadata.Machine.PublisherKey), Notes = item.ReadString(Data.Models.Metadata.Machine.NotesKey), @@ -94,8 +94,8 @@ namespace SabreTools.Serialization.CrossModel var dipSwitch = new DipSwitch { Name = item.Name, - Tag = item.ReadString(Data.Models.Metadata.DipSwitch.TagKey), - Mask = item.ReadString(Data.Models.Metadata.DipSwitch.MaskKey), + Tag = item.Tag, + Mask = item.Mask, }; var dipValues = item.Read(Data.Models.Metadata.DipSwitch.DipValueKey); @@ -113,7 +113,7 @@ namespace SabreTools.Serialization.CrossModel var dipValue = new DipValue { Name = item.Name, - Value = item.ReadString(Data.Models.Metadata.DipValue.ValueKey), + Value = item.Value, Default = item.Default, }; return dipValue; @@ -160,7 +160,7 @@ namespace SabreTools.Serialization.CrossModel var feature = new Feature { Name = item.Name, - Value = item.ReadString(Data.Models.Metadata.Feature.ValueKey), + Value = item.Value, }; return feature; } @@ -173,7 +173,7 @@ namespace SabreTools.Serialization.CrossModel var info = new Info { Name = item.Name, - Value = item.ReadString(Data.Models.Metadata.Info.ValueKey), + Value = item.Value, }; return info; } @@ -221,7 +221,7 @@ namespace SabreTools.Serialization.CrossModel CRC = item.ReadString(Data.Models.Metadata.Rom.CRCKey), SHA1 = item.ReadString(Data.Models.Metadata.Rom.SHA1Key), Offset = item.ReadString(Data.Models.Metadata.Rom.OffsetKey), - Value = item.ReadString(Data.Models.Metadata.Rom.ValueKey), + Value = item.Value, Status = item.Status, LoadFlag = item.LoadFlag, }; @@ -236,7 +236,7 @@ namespace SabreTools.Serialization.CrossModel var sharedFeat = new SharedFeat { Name = item.Name, - Value = item.ReadString(Data.Models.Metadata.SharedFeat.ValueKey), + Value = item.Value, }; return sharedFeat; } diff --git a/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs b/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs index ec6a69f3..5fe9a284 100644 --- a/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs @@ -33,7 +33,7 @@ namespace SabreTools.Serialization.CrossModel var header = new Data.Models.Metadata.Header { Name = item.Name, - [Data.Models.Metadata.Header.DescriptionKey] = item.Description, + Description = item.Description, [Data.Models.Metadata.Header.NotesKey] = item.Notes, }; return header; @@ -49,7 +49,7 @@ namespace SabreTools.Serialization.CrossModel Name = item.Name, [Data.Models.Metadata.Machine.CloneOfKey] = item.CloneOf, Supported = item.Supported, - [Data.Models.Metadata.Machine.DescriptionKey] = item.Description, + Description = item.Description, [Data.Models.Metadata.Machine.YearKey] = item.Year, [Data.Models.Metadata.Machine.PublisherKey] = item.Publisher, [Data.Models.Metadata.Machine.NotesKey] = item.Notes, @@ -94,8 +94,8 @@ namespace SabreTools.Serialization.CrossModel var dipSwitch = new Data.Models.Metadata.DipSwitch { Name = item.Name, - [Data.Models.Metadata.DipSwitch.TagKey] = item.Tag, - [Data.Models.Metadata.DipSwitch.MaskKey] = item.Mask, + Tag = item.Tag, + Mask = item.Mask, }; if (item.DipValue is not null && item.DipValue.Length > 0) @@ -112,7 +112,7 @@ namespace SabreTools.Serialization.CrossModel var dipValue = new Data.Models.Metadata.DipValue { Name = item.Name, - [Data.Models.Metadata.DipValue.ValueKey] = item.Value, + Value = item.Value, Default = item.Default, }; return dipValue; @@ -158,7 +158,7 @@ namespace SabreTools.Serialization.CrossModel var feature = new Data.Models.Metadata.Feature { Name = item.Name, - [Data.Models.Metadata.Feature.ValueKey] = item.Value, + Value = item.Value, }; return feature; } @@ -171,7 +171,7 @@ namespace SabreTools.Serialization.CrossModel var info = new Data.Models.Metadata.Info { Name = item.Name, - [Data.Models.Metadata.Info.ValueKey] = item.Value, + Value = item.Value, }; return info; } @@ -215,7 +215,7 @@ namespace SabreTools.Serialization.CrossModel [Data.Models.Metadata.Rom.CRCKey] = item.CRC, [Data.Models.Metadata.Rom.SHA1Key] = item.SHA1, [Data.Models.Metadata.Rom.OffsetKey] = item.Offset, - [Data.Models.Metadata.Rom.ValueKey] = item.Value, + Value = item.Value, Status = item.Status, LoadFlag = item.LoadFlag, }; @@ -230,7 +230,7 @@ namespace SabreTools.Serialization.CrossModel var sharedFeat = new Data.Models.Metadata.SharedFeat { Name = item.Name, - [Data.Models.Metadata.SharedFeat.ValueKey] = item.Value, + Value = item.Value, }; return sharedFeat; } diff --git a/SabreTools.Serialization.Readers.Test/ClrMameProTests.cs b/SabreTools.Serialization.Readers.Test/ClrMameProTests.cs index d73828d0..e12bf623 100644 --- a/SabreTools.Serialization.Readers.Test/ClrMameProTests.cs +++ b/SabreTools.Serialization.Readers.Test/ClrMameProTests.cs @@ -179,7 +179,7 @@ namespace SabreTools.Serialization.Readers.Test var cmp = new Data.Models.ClrMamePro.ClrMamePro { Name = "XXXXXX", - Description = "XXXXXX", + Description = "description", RootDir = "XXXXXX", Category = "XXXXXX", Version = "XXXXXX", @@ -207,7 +207,7 @@ namespace SabreTools.Serialization.Readers.Test var biosset = new Data.Models.ClrMamePro.BiosSet { Name = "XXXXXX", - Description = "XXXXXX", + Description = "description", Default = true, }; @@ -326,7 +326,7 @@ namespace SabreTools.Serialization.Readers.Test ? new Data.Models.ClrMamePro.Game() : new Data.Models.ClrMamePro.Machine(); gameBase.Name = "XXXXXX"; - gameBase.Description = "XXXXXX"; + gameBase.Description = "description"; gameBase.DriverStatus = "XXXXXX"; gameBase.Year = "XXXXXX"; gameBase.Manufacturer = "XXXXXX"; @@ -368,7 +368,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(cmp); Assert.Equal("XXXXXX", cmp.Name); - Assert.Equal("XXXXXX", cmp.Description); + Assert.Equal("description", cmp.Description); Assert.Equal("XXXXXX", cmp.RootDir); Assert.Equal("XXXXXX", cmp.Category); Assert.Equal("XXXXXX", cmp.Version); @@ -391,7 +391,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(gb); Assert.Equal("XXXXXX", gb.Name); - Assert.Equal("XXXXXX", gb.Description); + Assert.Equal("description", gb.Description); // Assert.Equal("XXXXXX", gb.DriverStatus); // TODO: Needs metadata mapping Assert.Equal("XXXXXX", gb.Year); Assert.Equal("XXXXXX", gb.Manufacturer); @@ -466,7 +466,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(biosset); Assert.Equal("XXXXXX", biosset.Name); - Assert.Equal("XXXXXX", biosset.Description); + Assert.Equal("description", biosset.Description); Assert.Equal(true, biosset.Default); } diff --git a/SabreTools.Serialization.Readers.Test/DosCenterTests.cs b/SabreTools.Serialization.Readers.Test/DosCenterTests.cs index 219972c9..dd6a2db0 100644 --- a/SabreTools.Serialization.Readers.Test/DosCenterTests.cs +++ b/SabreTools.Serialization.Readers.Test/DosCenterTests.cs @@ -102,7 +102,7 @@ namespace SabreTools.Serialization.Readers.Test var dc = new Data.Models.DosCenter.DosCenter { Name = "XXXXXX", - Description = "XXXXXX", + Description = "description", Version = "XXXXXX", Date = "XXXXXX", Author = "XXXXXX", @@ -139,7 +139,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(cmp); Assert.Equal("XXXXXX", cmp.Name); - Assert.Equal("XXXXXX", cmp.Description); + Assert.Equal("description", cmp.Description); Assert.Equal("XXXXXX", cmp.Version); Assert.Equal("XXXXXX", cmp.Date); Assert.Equal("XXXXXX", cmp.Author); diff --git a/SabreTools.Serialization.Readers.Test/ListxmlTests.cs b/SabreTools.Serialization.Readers.Test/ListxmlTests.cs index 439b3a9e..69f944f4 100644 --- a/SabreTools.Serialization.Readers.Test/ListxmlTests.cs +++ b/SabreTools.Serialization.Readers.Test/ListxmlTests.cs @@ -133,7 +133,7 @@ namespace SabreTools.Serialization.Readers.Test var biosset = new Data.Models.Listxml.BiosSet { Name = "XXXXXX", - Description = "XXXXXX", + Description = "description", Default = true, }; @@ -179,7 +179,7 @@ namespace SabreTools.Serialization.Readers.Test var chip = new Data.Models.Listxml.Chip { Name = "XXXXXX", - Tag = "XXXXXX", + Tag = "tag", Type = Data.Models.Metadata.ChipType.CPU, SoundOnly = true, Clock = "XXXXXX", @@ -187,7 +187,7 @@ namespace SabreTools.Serialization.Readers.Test var display = new Data.Models.Listxml.Display { - Tag = "XXXXXX", + Tag = "tag", Type = Data.Models.Metadata.DisplayType.Vector, Rotate = "XXXXXX", FlipX = true, @@ -248,10 +248,10 @@ namespace SabreTools.Serialization.Readers.Test var condition = new Data.Models.Listxml.Condition { - Tag = "XXXXXX", - Mask = "XXXXXX", + Tag = "tag", + Mask = "mask", Relation = Data.Models.Metadata.Relation.Equal, - Value = "XXXXXX", + Value = "value", }; var diplocation = new Data.Models.Listxml.DipLocation @@ -264,7 +264,7 @@ namespace SabreTools.Serialization.Readers.Test var dipvalue = new Data.Models.Listxml.DipValue { Name = "XXXXXX", - Value = "XXXXXX", + Value = "value", Default = true, Condition = condition, }; @@ -272,8 +272,8 @@ namespace SabreTools.Serialization.Readers.Test var dipswitch = new Data.Models.Listxml.DipSwitch { Name = "XXXXXX", - Tag = "XXXXXX", - Mask = "XXXXXX", + Tag = "tag", + Mask = "mask", Condition = condition, DipLocation = [diplocation], DipValue = [dipvalue], @@ -289,7 +289,7 @@ namespace SabreTools.Serialization.Readers.Test var confsetting = new Data.Models.Listxml.ConfSetting { Name = "XXXXXX", - Value = "XXXXXX", + Value = "value", Default = true, Condition = condition, }; @@ -297,8 +297,8 @@ namespace SabreTools.Serialization.Readers.Test var configuration = new Data.Models.Listxml.Configuration { Name = "XXXXXX", - Tag = "XXXXXX", - Mask = "XXXXXX", + Tag = "tag", + Mask = "mask", Condition = condition, ConfLocation = [conflocation], ConfSetting = [confsetting], @@ -306,12 +306,12 @@ namespace SabreTools.Serialization.Readers.Test var analog = new Data.Models.Listxml.Analog { - Mask = "XXXXXX", + Mask = "mask", }; var port = new Data.Models.Listxml.Port { - Tag = "XXXXXX", + Tag = "tag", Analog = [analog], }; @@ -358,7 +358,7 @@ namespace SabreTools.Serialization.Readers.Test var device = new Data.Models.Listxml.Device { Type = Data.Models.Metadata.DeviceType.PunchTape, - Tag = "XXXXXX", + Tag = "tag", FixedImage = "XXXXXX", Mandatory = true, Interface = "XXXXXX", @@ -381,7 +381,7 @@ namespace SabreTools.Serialization.Readers.Test var softwarelist = new Data.Models.Listxml.SoftwareList { - Tag = "XXXXXX", + Tag = "tag", Name = "XXXXXX", Status = Data.Models.Metadata.SoftwareListStatus.Original, Filter = "XXXXXX", @@ -406,7 +406,7 @@ namespace SabreTools.Serialization.Readers.Test gameBase.CloneOf = "XXXXXX"; gameBase.RomOf = "XXXXXX"; gameBase.SampleOf = "XXXXXX"; - gameBase.Description = "XXXXXX"; + gameBase.Description = "description"; gameBase.Year = "XXXXXX"; gameBase.Manufacturer = "XXXXXX"; gameBase.History = "XXXXXX"; @@ -455,7 +455,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", gb.CloneOf); Assert.Equal("XXXXXX", gb.RomOf); Assert.Equal("XXXXXX", gb.SampleOf); - Assert.Equal("XXXXXX", gb.Description); + Assert.Equal("description", gb.Description); Assert.Equal("XXXXXX", gb.Year); Assert.Equal("XXXXXX", gb.Manufacturer); Assert.Equal("XXXXXX", gb.History); @@ -541,7 +541,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(biosset); Assert.Equal("XXXXXX", biosset.Name); - Assert.Equal("XXXXXX", biosset.Description); + Assert.Equal("description", biosset.Description); Assert.Equal(true, biosset.Default); } @@ -607,7 +607,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(chip); Assert.Equal("XXXXXX", chip.Name); - Assert.Equal("XXXXXX", chip.Tag); + Assert.Equal("tag", chip.Tag); Assert.Equal(Data.Models.Metadata.ChipType.CPU, chip.Type); Assert.Equal(true, chip.SoundOnly); Assert.Equal("XXXXXX", chip.Clock); @@ -619,7 +619,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Display? display) { Assert.NotNull(display); - Assert.Equal("XXXXXX", display.Tag); + Assert.Equal("tag", display.Tag); Assert.Equal(Data.Models.Metadata.DisplayType.Vector, display.Type); Assert.Equal("XXXXXX", display.Rotate); Assert.Equal(true, display.FlipX); @@ -704,8 +704,8 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(dipswitch); Assert.Equal("XXXXXX", dipswitch.Name); - Assert.Equal("XXXXXX", dipswitch.Tag); - Assert.Equal("XXXXXX", dipswitch.Mask); + Assert.Equal("tag", dipswitch.Tag); + Assert.Equal("mask", dipswitch.Mask); Validate(dipswitch.Condition); Assert.NotNull(dipswitch.DipLocation); @@ -723,10 +723,10 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Condition? condition) { Assert.NotNull(condition); - Assert.Equal("XXXXXX", condition.Tag); - Assert.Equal("XXXXXX", condition.Mask); + Assert.Equal("tag", condition.Tag); + Assert.Equal("mask", condition.Mask); Assert.Equal(Data.Models.Metadata.Relation.Equal, condition.Relation); - Assert.Equal("XXXXXX", condition.Value); + Assert.Equal("value", condition.Value); } /// @@ -747,7 +747,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(dipvalue); Assert.Equal("XXXXXX", dipvalue.Name); - Assert.Equal("XXXXXX", dipvalue.Value); + Assert.Equal("value", dipvalue.Value); Assert.Equal(true, dipvalue.Default); Validate(dipvalue.Condition); } @@ -759,8 +759,8 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(configuration); Assert.Equal("XXXXXX", configuration.Name); - Assert.Equal("XXXXXX", configuration.Tag); - Assert.Equal("XXXXXX", configuration.Mask); + Assert.Equal("tag", configuration.Tag); + Assert.Equal("mask", configuration.Mask); Validate(configuration.Condition); Assert.NotNull(configuration.ConfLocation); @@ -790,7 +790,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(confsetting); Assert.Equal("XXXXXX", confsetting.Name); - Assert.Equal("XXXXXX", confsetting.Value); + Assert.Equal("value", confsetting.Value); Assert.Equal(true, confsetting.Default); Validate(confsetting.Condition); } @@ -801,7 +801,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Port? port) { Assert.NotNull(port); - Assert.Equal("XXXXXX", port.Tag); + Assert.Equal("tag", port.Tag); Assert.NotNull(port.Analog); var analog = Assert.Single(port.Analog); @@ -814,7 +814,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Analog? analog) { Assert.NotNull(analog); - Assert.Equal("XXXXXX", analog.Mask); + Assert.Equal("mask", analog.Mask); } /// @@ -865,7 +865,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(device); Assert.Equal(Data.Models.Metadata.DeviceType.PunchTape, device.Type); - Assert.Equal("XXXXXX", device.Tag); + Assert.Equal("tag", device.Tag); Assert.Equal("XXXXXX", device.FixedImage); Assert.Equal(true, device.Mandatory); Assert.Equal("XXXXXX", device.Interface); @@ -925,7 +925,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.SoftwareList? softwarelist) { Assert.NotNull(softwarelist); - Assert.Equal("XXXXXX", softwarelist.Tag); + Assert.Equal("tag", softwarelist.Tag); Assert.Equal("XXXXXX", softwarelist.Name); Assert.Equal(Data.Models.Metadata.SoftwareListStatus.Original, softwarelist.Status); Assert.Equal("XXXXXX", softwarelist.Filter); diff --git a/SabreTools.Serialization.Readers.Test/LogiqxTests.cs b/SabreTools.Serialization.Readers.Test/LogiqxTests.cs index 1182957d..15719680 100644 --- a/SabreTools.Serialization.Readers.Test/LogiqxTests.cs +++ b/SabreTools.Serialization.Readers.Test/LogiqxTests.cs @@ -161,7 +161,7 @@ namespace SabreTools.Serialization.Readers.Test { Id = "XXXXXX", Name = "XXXXXX", - Description = "XXXXXX", + Description = "description", RootDir = "XXXXXX", Category = "XXXXXX", Version = "XXXXXX", @@ -206,7 +206,7 @@ namespace SabreTools.Serialization.Readers.Test var biosset = new Data.Models.Logiqx.BiosSet { Name = "XXXXXX", - Description = "XXXXXX", + Description = "description", Default = true, }; @@ -286,7 +286,7 @@ namespace SabreTools.Serialization.Readers.Test var softwarelist = new Data.Models.Logiqx.SoftwareList { - Tag = "XXXXXX", + Tag = "tag", Name = "XXXXXX", Status = Data.Models.Metadata.SoftwareListStatus.Original, Filter = "XXXXXX", @@ -309,7 +309,7 @@ namespace SabreTools.Serialization.Readers.Test gameBase.CloneOfId = "XXXXXX"; gameBase.Runnable = Data.Models.Metadata.Runnable.Yes; gameBase.Comment = ["XXXXXX"]; - gameBase.Description = "XXXXXX"; + gameBase.Description = "description"; gameBase.Year = "XXXXXX"; gameBase.Manufacturer = "XXXXXX"; gameBase.Publisher = "XXXXXX"; @@ -345,7 +345,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(header); Assert.Equal("XXXXXX", header.Id); Assert.Equal("XXXXXX", header.Name); - Assert.Equal("XXXXXX", header.Description); + Assert.Equal("description", header.Description); Assert.Equal("XXXXXX", header.RootDir); Assert.Equal("XXXXXX", header.Category); Assert.Equal("XXXXXX", header.Version); @@ -411,7 +411,7 @@ namespace SabreTools.Serialization.Readers.Test string comment = Assert.Single(gb.Comment); Assert.Equal("XXXXXX", comment); - Assert.Equal("XXXXXX", gb.Description); + Assert.Equal("description", gb.Description); Assert.Equal("XXXXXX", gb.Year); Assert.Equal("XXXXXX", gb.Manufacturer); Assert.Equal("XXXXXX", gb.Publisher); @@ -503,7 +503,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(biosset); Assert.Equal("XXXXXX", biosset.Name); - Assert.Equal("XXXXXX", biosset.Description); + Assert.Equal("description", biosset.Description); Assert.Equal(true, biosset.Default); } @@ -613,7 +613,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Logiqx.SoftwareList? softwarelist) { Assert.NotNull(softwarelist); - Assert.Equal("XXXXXX", softwarelist.Tag); + Assert.Equal("tag", softwarelist.Tag); Assert.Equal("XXXXXX", softwarelist.Name); Assert.Equal(Data.Models.Metadata.SoftwareListStatus.Original, softwarelist.Status); Assert.Equal("XXXXXX", softwarelist.Filter); diff --git a/SabreTools.Serialization.Readers.Test/M1Tests.cs b/SabreTools.Serialization.Readers.Test/M1Tests.cs index 90be4b60..e637382b 100644 --- a/SabreTools.Serialization.Readers.Test/M1Tests.cs +++ b/SabreTools.Serialization.Readers.Test/M1Tests.cs @@ -129,7 +129,7 @@ namespace SabreTools.Serialization.Readers.Test var biosset = new Data.Models.Listxml.BiosSet { Name = "XXXXXX", - Description = "XXXXXX", + Description = "description", Default = true, }; @@ -175,7 +175,7 @@ namespace SabreTools.Serialization.Readers.Test var chip = new Data.Models.Listxml.Chip { Name = "XXXXXX", - Tag = "XXXXXX", + Tag = "tag", Type = Data.Models.Metadata.ChipType.CPU, SoundOnly = true, Clock = "XXXXXX", @@ -183,7 +183,7 @@ namespace SabreTools.Serialization.Readers.Test var display = new Data.Models.Listxml.Display { - Tag = "XXXXXX", + Tag = "tag", Type = Data.Models.Metadata.DisplayType.Vector, Rotate = "XXXXXX", FlipX = true, @@ -244,10 +244,10 @@ namespace SabreTools.Serialization.Readers.Test var condition = new Data.Models.Listxml.Condition { - Tag = "XXXXXX", - Mask = "XXXXXX", + Tag = "tag", + Mask = "mask", Relation = Data.Models.Metadata.Relation.Equal, - Value = "XXXXXX", + Value = "value", }; var diplocation = new Data.Models.Listxml.DipLocation @@ -260,7 +260,7 @@ namespace SabreTools.Serialization.Readers.Test var dipvalue = new Data.Models.Listxml.DipValue { Name = "XXXXXX", - Value = "XXXXXX", + Value = "value", Default = true, Condition = condition, }; @@ -268,8 +268,8 @@ namespace SabreTools.Serialization.Readers.Test var dipswitch = new Data.Models.Listxml.DipSwitch { Name = "XXXXXX", - Tag = "XXXXXX", - Mask = "XXXXXX", + Tag = "tag", + Mask = "mask", Condition = condition, DipLocation = [diplocation], DipValue = [dipvalue], @@ -285,7 +285,7 @@ namespace SabreTools.Serialization.Readers.Test var confsetting = new Data.Models.Listxml.ConfSetting { Name = "XXXXXX", - Value = "XXXXXX", + Value = "value", Default = true, Condition = condition, }; @@ -293,8 +293,8 @@ namespace SabreTools.Serialization.Readers.Test var configuration = new Data.Models.Listxml.Configuration { Name = "XXXXXX", - Tag = "XXXXXX", - Mask = "XXXXXX", + Tag = "tag", + Mask = "mask", Condition = condition, ConfLocation = [conflocation], ConfSetting = [confsetting], @@ -302,12 +302,12 @@ namespace SabreTools.Serialization.Readers.Test var analog = new Data.Models.Listxml.Analog { - Mask = "XXXXXX", + Mask = "mask", }; var port = new Data.Models.Listxml.Port { - Tag = "XXXXXX", + Tag = "tag", Analog = [analog], }; @@ -354,7 +354,7 @@ namespace SabreTools.Serialization.Readers.Test var device = new Data.Models.Listxml.Device { Type = Data.Models.Metadata.DeviceType.PunchTape, - Tag = "XXXXXX", + Tag = "tag", FixedImage = "XXXXXX", Mandatory = true, Interface = "XXXXXX", @@ -377,7 +377,7 @@ namespace SabreTools.Serialization.Readers.Test var softwarelist = new Data.Models.Listxml.SoftwareList { - Tag = "XXXXXX", + Tag = "tag", Name = "XXXXXX", Status = Data.Models.Metadata.SoftwareListStatus.Original, Filter = "XXXXXX", @@ -402,7 +402,7 @@ namespace SabreTools.Serialization.Readers.Test gameBase.CloneOf = "XXXXXX"; gameBase.RomOf = "XXXXXX"; gameBase.SampleOf = "XXXXXX"; - gameBase.Description = "XXXXXX"; + gameBase.Description = "description"; gameBase.Year = "XXXXXX"; gameBase.Manufacturer = "XXXXXX"; gameBase.History = "XXXXXX"; @@ -449,7 +449,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", gb.CloneOf); Assert.Equal("XXXXXX", gb.RomOf); Assert.Equal("XXXXXX", gb.SampleOf); - Assert.Equal("XXXXXX", gb.Description); + Assert.Equal("description", gb.Description); Assert.Equal("XXXXXX", gb.Year); Assert.Equal("XXXXXX", gb.Manufacturer); Assert.Equal("XXXXXX", gb.History); @@ -535,7 +535,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(biosset); Assert.Equal("XXXXXX", biosset.Name); - Assert.Equal("XXXXXX", biosset.Description); + Assert.Equal("description", biosset.Description); Assert.Equal(true, biosset.Default); } @@ -601,7 +601,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(chip); Assert.Equal("XXXXXX", chip.Name); - Assert.Equal("XXXXXX", chip.Tag); + Assert.Equal("tag", chip.Tag); Assert.Equal(Data.Models.Metadata.ChipType.CPU, chip.Type); Assert.Equal(true, chip.SoundOnly); Assert.Equal("XXXXXX", chip.Clock); @@ -613,7 +613,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Display? display) { Assert.NotNull(display); - Assert.Equal("XXXXXX", display.Tag); + Assert.Equal("tag", display.Tag); Assert.Equal(Data.Models.Metadata.DisplayType.Vector, display.Type); Assert.Equal("XXXXXX", display.Rotate); Assert.Equal(true, display.FlipX); @@ -698,8 +698,8 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(dipswitch); Assert.Equal("XXXXXX", dipswitch.Name); - Assert.Equal("XXXXXX", dipswitch.Tag); - Assert.Equal("XXXXXX", dipswitch.Mask); + Assert.Equal("tag", dipswitch.Tag); + Assert.Equal("mask", dipswitch.Mask); Validate(dipswitch.Condition); Assert.NotNull(dipswitch.DipLocation); @@ -717,10 +717,10 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Condition? condition) { Assert.NotNull(condition); - Assert.Equal("XXXXXX", condition.Tag); - Assert.Equal("XXXXXX", condition.Mask); + Assert.Equal("tag", condition.Tag); + Assert.Equal("mask", condition.Mask); Assert.Equal(Data.Models.Metadata.Relation.Equal, condition.Relation); - Assert.Equal("XXXXXX", condition.Value); + Assert.Equal("value", condition.Value); } /// @@ -741,7 +741,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(dipvalue); Assert.Equal("XXXXXX", dipvalue.Name); - Assert.Equal("XXXXXX", dipvalue.Value); + Assert.Equal("value", dipvalue.Value); Assert.Equal(true, dipvalue.Default); Validate(dipvalue.Condition); } @@ -753,8 +753,8 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(configuration); Assert.Equal("XXXXXX", configuration.Name); - Assert.Equal("XXXXXX", configuration.Tag); - Assert.Equal("XXXXXX", configuration.Mask); + Assert.Equal("tag", configuration.Tag); + Assert.Equal("mask", configuration.Mask); Validate(configuration.Condition); Assert.NotNull(configuration.ConfLocation); @@ -784,7 +784,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(confsetting); Assert.Equal("XXXXXX", confsetting.Name); - Assert.Equal("XXXXXX", confsetting.Value); + Assert.Equal("value", confsetting.Value); Assert.Equal(true, confsetting.Default); Validate(confsetting.Condition); } @@ -795,7 +795,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Port? port) { Assert.NotNull(port); - Assert.Equal("XXXXXX", port.Tag); + Assert.Equal("tag", port.Tag); Assert.NotNull(port.Analog); var analog = Assert.Single(port.Analog); @@ -808,7 +808,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Analog? analog) { Assert.NotNull(analog); - Assert.Equal("XXXXXX", analog.Mask); + Assert.Equal("mask", analog.Mask); } /// @@ -859,7 +859,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(device); Assert.Equal(Data.Models.Metadata.DeviceType.PunchTape, device.Type); - Assert.Equal("XXXXXX", device.Tag); + Assert.Equal("tag", device.Tag); Assert.Equal("XXXXXX", device.FixedImage); Assert.Equal(true, device.Mandatory); Assert.Equal("XXXXXX", device.Interface); @@ -919,7 +919,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.SoftwareList? softwarelist) { Assert.NotNull(softwarelist); - Assert.Equal("XXXXXX", softwarelist.Tag); + Assert.Equal("tag", softwarelist.Tag); Assert.Equal("XXXXXX", softwarelist.Name); Assert.Equal(Data.Models.Metadata.SoftwareListStatus.Original, softwarelist.Status); Assert.Equal("XXXXXX", softwarelist.Filter); diff --git a/SabreTools.Serialization.Readers.Test/MessTests.cs b/SabreTools.Serialization.Readers.Test/MessTests.cs index 3eee2b80..160a5e0c 100644 --- a/SabreTools.Serialization.Readers.Test/MessTests.cs +++ b/SabreTools.Serialization.Readers.Test/MessTests.cs @@ -129,7 +129,7 @@ namespace SabreTools.Serialization.Readers.Test var biosset = new Data.Models.Listxml.BiosSet { Name = "XXXXXX", - Description = "XXXXXX", + Description = "description", Default = true, }; @@ -175,7 +175,7 @@ namespace SabreTools.Serialization.Readers.Test var chip = new Data.Models.Listxml.Chip { Name = "XXXXXX", - Tag = "XXXXXX", + Tag = "tag", Type = Data.Models.Metadata.ChipType.CPU, SoundOnly = true, Clock = "XXXXXX", @@ -183,7 +183,7 @@ namespace SabreTools.Serialization.Readers.Test var display = new Data.Models.Listxml.Display { - Tag = "XXXXXX", + Tag = "tag", Type = Data.Models.Metadata.DisplayType.Vector, Rotate = "XXXXXX", FlipX = true, @@ -244,10 +244,10 @@ namespace SabreTools.Serialization.Readers.Test var condition = new Data.Models.Listxml.Condition { - Tag = "XXXXXX", - Mask = "XXXXXX", + Tag = "tag", + Mask = "mask", Relation = Data.Models.Metadata.Relation.Equal, - Value = "XXXXXX", + Value = "value", }; var diplocation = new Data.Models.Listxml.DipLocation @@ -260,7 +260,7 @@ namespace SabreTools.Serialization.Readers.Test var dipvalue = new Data.Models.Listxml.DipValue { Name = "XXXXXX", - Value = "XXXXXX", + Value = "value", Default = true, Condition = condition, }; @@ -268,8 +268,8 @@ namespace SabreTools.Serialization.Readers.Test var dipswitch = new Data.Models.Listxml.DipSwitch { Name = "XXXXXX", - Tag = "XXXXXX", - Mask = "XXXXXX", + Tag = "tag", + Mask = "mask", Condition = condition, DipLocation = [diplocation], DipValue = [dipvalue], @@ -285,7 +285,7 @@ namespace SabreTools.Serialization.Readers.Test var confsetting = new Data.Models.Listxml.ConfSetting { Name = "XXXXXX", - Value = "XXXXXX", + Value = "value", Default = true, Condition = condition, }; @@ -293,8 +293,8 @@ namespace SabreTools.Serialization.Readers.Test var configuration = new Data.Models.Listxml.Configuration { Name = "XXXXXX", - Tag = "XXXXXX", - Mask = "XXXXXX", + Tag = "tag", + Mask = "mask", Condition = condition, ConfLocation = [conflocation], ConfSetting = [confsetting], @@ -302,12 +302,12 @@ namespace SabreTools.Serialization.Readers.Test var analog = new Data.Models.Listxml.Analog { - Mask = "XXXXXX", + Mask = "mask", }; var port = new Data.Models.Listxml.Port { - Tag = "XXXXXX", + Tag = "tag", Analog = [analog], }; @@ -354,7 +354,7 @@ namespace SabreTools.Serialization.Readers.Test var device = new Data.Models.Listxml.Device { Type = Data.Models.Metadata.DeviceType.PunchTape, - Tag = "XXXXXX", + Tag = "tag", FixedImage = "XXXXXX", Mandatory = true, Interface = "XXXXXX", @@ -377,7 +377,7 @@ namespace SabreTools.Serialization.Readers.Test var softwarelist = new Data.Models.Listxml.SoftwareList { - Tag = "XXXXXX", + Tag = "tag", Name = "XXXXXX", Status = Data.Models.Metadata.SoftwareListStatus.Original, Filter = "XXXXXX", @@ -402,7 +402,7 @@ namespace SabreTools.Serialization.Readers.Test gameBase.CloneOf = "XXXXXX"; gameBase.RomOf = "XXXXXX"; gameBase.SampleOf = "XXXXXX"; - gameBase.Description = "XXXXXX"; + gameBase.Description = "description"; gameBase.Year = "XXXXXX"; gameBase.Manufacturer = "XXXXXX"; gameBase.History = "XXXXXX"; @@ -449,7 +449,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", gb.CloneOf); Assert.Equal("XXXXXX", gb.RomOf); Assert.Equal("XXXXXX", gb.SampleOf); - Assert.Equal("XXXXXX", gb.Description); + Assert.Equal("description", gb.Description); Assert.Equal("XXXXXX", gb.Year); Assert.Equal("XXXXXX", gb.Manufacturer); Assert.Equal("XXXXXX", gb.History); @@ -535,7 +535,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(biosset); Assert.Equal("XXXXXX", biosset.Name); - Assert.Equal("XXXXXX", biosset.Description); + Assert.Equal("description", biosset.Description); Assert.Equal(true, biosset.Default); } @@ -601,7 +601,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(chip); Assert.Equal("XXXXXX", chip.Name); - Assert.Equal("XXXXXX", chip.Tag); + Assert.Equal("tag", chip.Tag); Assert.Equal(Data.Models.Metadata.ChipType.CPU, chip.Type); Assert.Equal(true, chip.SoundOnly); Assert.Equal("XXXXXX", chip.Clock); @@ -613,7 +613,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Display? display) { Assert.NotNull(display); - Assert.Equal("XXXXXX", display.Tag); + Assert.Equal("tag", display.Tag); Assert.Equal(Data.Models.Metadata.DisplayType.Vector, display.Type); Assert.Equal("XXXXXX", display.Rotate); Assert.Equal(true, display.FlipX); @@ -698,8 +698,8 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(dipswitch); Assert.Equal("XXXXXX", dipswitch.Name); - Assert.Equal("XXXXXX", dipswitch.Tag); - Assert.Equal("XXXXXX", dipswitch.Mask); + Assert.Equal("tag", dipswitch.Tag); + Assert.Equal("mask", dipswitch.Mask); Validate(dipswitch.Condition); Assert.NotNull(dipswitch.DipLocation); @@ -717,10 +717,10 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Condition? condition) { Assert.NotNull(condition); - Assert.Equal("XXXXXX", condition.Tag); - Assert.Equal("XXXXXX", condition.Mask); + Assert.Equal("tag", condition.Tag); + Assert.Equal("mask", condition.Mask); Assert.Equal(Data.Models.Metadata.Relation.Equal, condition.Relation); - Assert.Equal("XXXXXX", condition.Value); + Assert.Equal("value", condition.Value); } /// @@ -741,7 +741,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(dipvalue); Assert.Equal("XXXXXX", dipvalue.Name); - Assert.Equal("XXXXXX", dipvalue.Value); + Assert.Equal("value", dipvalue.Value); Assert.Equal(true, dipvalue.Default); Validate(dipvalue.Condition); } @@ -753,8 +753,8 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(configuration); Assert.Equal("XXXXXX", configuration.Name); - Assert.Equal("XXXXXX", configuration.Tag); - Assert.Equal("XXXXXX", configuration.Mask); + Assert.Equal("tag", configuration.Tag); + Assert.Equal("mask", configuration.Mask); Validate(configuration.Condition); Assert.NotNull(configuration.ConfLocation); @@ -784,7 +784,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(confsetting); Assert.Equal("XXXXXX", confsetting.Name); - Assert.Equal("XXXXXX", confsetting.Value); + Assert.Equal("value", confsetting.Value); Assert.Equal(true, confsetting.Default); Validate(confsetting.Condition); } @@ -795,7 +795,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Port? port) { Assert.NotNull(port); - Assert.Equal("XXXXXX", port.Tag); + Assert.Equal("tag", port.Tag); Assert.NotNull(port.Analog); var analog = Assert.Single(port.Analog); @@ -808,7 +808,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Analog? analog) { Assert.NotNull(analog); - Assert.Equal("XXXXXX", analog.Mask); + Assert.Equal("mask", analog.Mask); } /// @@ -859,7 +859,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(device); Assert.Equal(Data.Models.Metadata.DeviceType.PunchTape, device.Type); - Assert.Equal("XXXXXX", device.Tag); + Assert.Equal("tag", device.Tag); Assert.Equal("XXXXXX", device.FixedImage); Assert.Equal(true, device.Mandatory); Assert.Equal("XXXXXX", device.Interface); @@ -919,7 +919,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.SoftwareList? softwarelist) { Assert.NotNull(softwarelist); - Assert.Equal("XXXXXX", softwarelist.Tag); + Assert.Equal("tag", softwarelist.Tag); Assert.Equal("XXXXXX", softwarelist.Name); Assert.Equal(Data.Models.Metadata.SoftwareListStatus.Original, softwarelist.Status); Assert.Equal("XXXXXX", softwarelist.Filter); diff --git a/SabreTools.Serialization.Readers.Test/NoIntroDatabaseTests.cs b/SabreTools.Serialization.Readers.Test/NoIntroDatabaseTests.cs index 58c29bf5..01b91108 100644 --- a/SabreTools.Serialization.Readers.Test/NoIntroDatabaseTests.cs +++ b/SabreTools.Serialization.Readers.Test/NoIntroDatabaseTests.cs @@ -121,7 +121,7 @@ namespace SabreTools.Serialization.Readers.Test Alt = "XXXXXX", GameId1 = "XXXXXX", GameId2 = "XXXXXX", - Description = "XXXXXX", + Description = "description", Bios = "XXXXXX", Licensed = "XXXXXX", Pirate = "XXXXXX", @@ -311,7 +311,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", archive.Alt); Assert.Equal("XXXXXX", archive.GameId1); Assert.Equal("XXXXXX", archive.GameId2); - Assert.Equal("XXXXXX", archive.Description); + Assert.Equal("description", archive.Description); Assert.Equal("XXXXXX", archive.Bios); Assert.Equal("XXXXXX", archive.Licensed); Assert.Equal("XXXXXX", archive.Pirate); diff --git a/SabreTools.Serialization.Readers.Test/OfflineListTests.cs b/SabreTools.Serialization.Readers.Test/OfflineListTests.cs index c283bf6e..ff8b557d 100644 --- a/SabreTools.Serialization.Readers.Test/OfflineListTests.cs +++ b/SabreTools.Serialization.Readers.Test/OfflineListTests.cs @@ -208,13 +208,13 @@ namespace SabreTools.Serialization.Readers.Test var find = new Data.Models.OfflineList.Find { Operation = "XXXXXX", - Value = "XXXXXX", + Value = "value", Content = "XXXXXX", }; var to = new Data.Models.OfflineList.To { - Value = "XXXXXX", + Value = "value", Default = true, Auto = "XXXXXX", Find = [find], @@ -404,7 +404,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.OfflineList.To? to) { Assert.NotNull(to); - Assert.Equal("XXXXXX", to.Value); + Assert.Equal("value", to.Value); Assert.Equal(true, to.Default); Assert.Equal("XXXXXX", to.Auto); @@ -420,7 +420,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(find); Assert.Equal("XXXXXX", find.Operation); - Assert.Equal("XXXXXX", find.Value); + Assert.Equal("value", find.Value); Assert.Equal("XXXXXX", find.Content); } diff --git a/SabreTools.Serialization.Readers.Test/OpenMSXTests.cs b/SabreTools.Serialization.Readers.Test/OpenMSXTests.cs index e2ef4d31..7b16e33a 100644 --- a/SabreTools.Serialization.Readers.Test/OpenMSXTests.cs +++ b/SabreTools.Serialization.Readers.Test/OpenMSXTests.cs @@ -102,7 +102,7 @@ namespace SabreTools.Serialization.Readers.Test { var original = new Data.Models.OpenMSX.Original { - Value = "XXXXXX", + Value = "value", Content = "XXXXXX", }; @@ -203,7 +203,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.OpenMSX.Original? original) { Assert.NotNull(original); - Assert.Equal("XXXXXX", original.Value); + Assert.Equal("value", original.Value); Assert.Equal("XXXXXX", original.Content); } diff --git a/SabreTools.Serialization.Readers.Test/RomCenterTests.cs b/SabreTools.Serialization.Readers.Test/RomCenterTests.cs index 2592ae54..40ebaaee 100644 --- a/SabreTools.Serialization.Readers.Test/RomCenterTests.cs +++ b/SabreTools.Serialization.Readers.Test/RomCenterTests.cs @@ -127,9 +127,9 @@ namespace SabreTools.Serialization.Readers.Test var rom = new Data.Models.RomCenter.Rom { ParentName = "XXXXXX", - ParentDescription = "XXXXXX", + ParentDescription = "description", GameName = "XXXXXX", - GameDescription = "XXXXXX", + GameDescription = "description", RomName = "XXXXXX", RomCRC = "XXXXXX", RomSize = "XXXXXX", @@ -206,9 +206,9 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(rom); Assert.Equal("XXXXXX", rom.ParentName); - Assert.Equal("XXXXXX", rom.ParentDescription); + Assert.Equal("description", rom.ParentDescription); Assert.Equal("XXXXXX", rom.GameName); - Assert.Equal("XXXXXX", rom.GameDescription); + Assert.Equal("description", rom.GameDescription); Assert.Equal("XXXXXX", rom.RomName); Assert.Equal("XXXXXX", rom.RomCRC); Assert.Equal("XXXXXX", rom.RomSize); diff --git a/SabreTools.Serialization.Readers.Test/SeparatedValueTests.cs b/SabreTools.Serialization.Readers.Test/SeparatedValueTests.cs index 0c4711bd..c1319527 100644 --- a/SabreTools.Serialization.Readers.Test/SeparatedValueTests.cs +++ b/SabreTools.Serialization.Readers.Test/SeparatedValueTests.cs @@ -137,9 +137,9 @@ namespace SabreTools.Serialization.Readers.Test { FileName = "XXXXXX", InternalName = "XXXXXX", - Description = "XXXXXX", + Description = "description", GameName = "XXXXXX", - GameDescription = "XXXXXX", + GameDescription = "description", Type = "disk", DiskName = "XXXXXX", MD5 = "XXXXXX", @@ -151,9 +151,9 @@ namespace SabreTools.Serialization.Readers.Test { FileName = "XXXXXX", InternalName = "XXXXXX", - Description = "XXXXXX", + Description = "description", GameName = "XXXXXX", - GameDescription = "XXXXXX", + GameDescription = "description", Type = "media", DiskName = "XXXXXX", MD5 = "XXXXXX", @@ -166,9 +166,9 @@ namespace SabreTools.Serialization.Readers.Test { FileName = "XXXXXX", InternalName = "XXXXXX", - Description = "XXXXXX", + Description = "description", GameName = "XXXXXX", - GameDescription = "XXXXXX", + GameDescription = "description", Type = "rom", RomName = "XXXXXX", Size = "XXXXXX", @@ -209,9 +209,9 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(row); Assert.Equal("XXXXXX", row.FileName); Assert.Equal("XXXXXX", row.InternalName); - Assert.Equal("XXXXXX", row.Description); + Assert.Equal("description", row.Description); Assert.Equal("XXXXXX", row.GameName); - Assert.Equal("XXXXXX", row.GameDescription); + Assert.Equal("description", row.GameDescription); Assert.Equal("disk", row.Type); Assert.NotNull(row.RomName); Assert.Empty(row.RomName); Assert.Equal("XXXXXX", row.DiskName); @@ -244,9 +244,9 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(row); Assert.Equal("XXXXXX", row.FileName); Assert.Equal("XXXXXX", row.InternalName); - Assert.Equal("XXXXXX", row.Description); + Assert.Equal("description", row.Description); Assert.Equal("XXXXXX", row.GameName); - Assert.Equal("XXXXXX", row.GameDescription); + Assert.Equal("description", row.GameDescription); Assert.Equal("media", row.Type); Assert.NotNull(row.RomName); Assert.Empty(row.RomName); Assert.Equal("XXXXXX", row.DiskName); @@ -279,9 +279,9 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(row); Assert.Equal("XXXXXX", row.FileName); Assert.Equal("XXXXXX", row.InternalName); - Assert.Equal("XXXXXX", row.Description); + Assert.Equal("description", row.Description); Assert.Equal("XXXXXX", row.GameName); - Assert.Equal("XXXXXX", row.GameDescription); + Assert.Equal("description", row.GameDescription); Assert.Equal("rom", row.Type); Assert.Equal("XXXXXX", row.RomName); Assert.NotNull(row.DiskName); diff --git a/SabreTools.Serialization.Readers.Test/SoftwareListTests.cs b/SabreTools.Serialization.Readers.Test/SoftwareListTests.cs index f3ccbab4..a20278ca 100644 --- a/SabreTools.Serialization.Readers.Test/SoftwareListTests.cs +++ b/SabreTools.Serialization.Readers.Test/SoftwareListTests.cs @@ -96,7 +96,7 @@ namespace SabreTools.Serialization.Readers.Test // Validate the data Assert.NotNull(newSl); Assert.Equal("XXXXXX", newSl.Name); - Assert.Equal("XXXXXX", newSl.Description); + Assert.Equal("description", newSl.Description); Assert.Equal("XXXXXX", newSl.Notes); Assert.NotNull(newSl.Software); @@ -112,19 +112,19 @@ namespace SabreTools.Serialization.Readers.Test var info = new Data.Models.SoftwareList.Info { Name = "XXXXXX", - Value = "XXXXXX", + Value = "value", }; var sharedfeat = new Data.Models.SoftwareList.SharedFeat { Name = "XXXXXX", - Value = "XXXXXX", + Value = "value", }; var feature = new Data.Models.SoftwareList.Feature { Name = "XXXXXX", - Value = "XXXXXX", + Value = "value", }; var rom = new Data.Models.SoftwareList.Rom @@ -135,7 +135,7 @@ namespace SabreTools.Serialization.Readers.Test CRC = "XXXXXX", SHA1 = "XXXXXX", Offset = "XXXXXX", - Value = "XXXXXX", + Value = "value", Status = Data.Models.Metadata.ItemStatus.Good, LoadFlag = Data.Models.Metadata.LoadFlag.Load16Byte, }; @@ -167,15 +167,15 @@ namespace SabreTools.Serialization.Readers.Test var dipvalue = new Data.Models.SoftwareList.DipValue { Name = "XXXXXX", - Value = "XXXXXX", + Value = "value", Default = true, }; var dipswitch = new Data.Models.SoftwareList.DipSwitch { Name = "XXXXXX", - Tag = "XXXXXX", - Mask = "XXXXXX", + Tag = "tag", + Mask = "mask", DipValue = [dipvalue], }; @@ -194,7 +194,7 @@ namespace SabreTools.Serialization.Readers.Test Name = "XXXXXX", CloneOf = "XXXXXX", Supported = Data.Models.Metadata.Supported.Yes, - Description = "XXXXXX", + Description = "description", Year = "XXXXXX", Publisher = "XXXXXX", Notes = "XXXXXX", @@ -206,7 +206,7 @@ namespace SabreTools.Serialization.Readers.Test return new Data.Models.SoftwareList.SoftwareList { Name = "XXXXXX", - Description = "XXXXXX", + Description = "description", Notes = "XXXXXX", Software = [software], }; @@ -221,7 +221,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", software.Name); Assert.Equal("XXXXXX", software.CloneOf); Assert.Equal(Data.Models.Metadata.Supported.Yes, software.Supported); - Assert.Equal("XXXXXX", software.Description); + Assert.Equal("description", software.Description); Assert.Equal("XXXXXX", software.Year); Assert.Equal("XXXXXX", software.Publisher); Assert.Equal("XXXXXX", software.Notes); @@ -246,7 +246,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(info); Assert.Equal("XXXXXX", info.Name); - Assert.Equal("XXXXXX", info.Value); + Assert.Equal("value", info.Value); } /// @@ -256,7 +256,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(sharedfeat); Assert.Equal("XXXXXX", sharedfeat.Name); - Assert.Equal("XXXXXX", sharedfeat.Value); + Assert.Equal("value", sharedfeat.Value); } /// @@ -292,7 +292,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(feature); Assert.Equal("XXXXXX", feature.Name); - Assert.Equal("XXXXXX", feature.Value); + Assert.Equal("value", feature.Value); } /// @@ -323,7 +323,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", rom.CRC); Assert.Equal("XXXXXX", rom.SHA1); Assert.Equal("XXXXXX", rom.Offset); - Assert.Equal("XXXXXX", rom.Value); + Assert.Equal("value", rom.Value); Assert.Equal(Data.Models.Metadata.ItemStatus.Good, rom.Status); Assert.Equal(Data.Models.Metadata.LoadFlag.Load16Byte, rom.LoadFlag); } @@ -361,8 +361,8 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(dipswitch); Assert.Equal("XXXXXX", dipswitch.Name); - Assert.Equal("XXXXXX", dipswitch.Tag); - Assert.Equal("XXXXXX", dipswitch.Mask); + Assert.Equal("tag", dipswitch.Tag); + Assert.Equal("mask", dipswitch.Mask); Assert.NotNull(dipswitch.DipValue); var dipvalue = Assert.Single(dipswitch.DipValue); @@ -376,7 +376,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(dipvalue); Assert.Equal("XXXXXX", dipvalue.Name); - Assert.Equal("XXXXXX", dipvalue.Value); + Assert.Equal("value", dipvalue.Value); Assert.Equal(true, dipvalue.Default); } } From c74942362c528963d40c71c4076a147825698461 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Thu, 2 Apr 2026 13:21:37 -0400 Subject: [PATCH 014/142] Name property cleanup, fixes --- .../MetadataExtensionsTests.cs | 8 +- .../DatFileTests.Filtering.cs | 20 ++--- .../DatFileTests.FromMetadata.cs | 60 +++++++------- .../DatFileTests.Splitting.cs | 8 +- .../DatFileTests.cs | 24 +++--- .../ItemDictionaryDBTests.cs | 2 +- .../DatFile.Filtering.cs | 24 +++--- .../DatFile.FromMetadata.cs | 2 +- .../DatFile.Splitting.cs | 45 +++++------ SabreTools.Metadata.DatFiles/DatFile.cs | 16 ++-- .../Formats/ClrMamePro.cs | 16 ++-- .../Formats/Listxml.cs | 24 +++--- .../Formats/Logiqx.cs | 18 ++--- .../Formats/Missfile.cs | 6 +- .../Formats/SabreJSON.cs | 16 ++-- .../Formats/SabreXML.cs | 14 ++-- .../Formats/SoftwareList.cs | 20 ++--- .../ItemDictionary.cs | 22 ++--- .../ItemDictionaryDB.cs | 26 +++--- .../DatItemTests.cs | 12 +-- .../Formats/DiskTests.cs | 16 ++-- .../Formats/FileTests.cs | 4 +- .../Formats/MediaTests.cs | 8 +- .../MachineTests.cs | 5 +- .../Formats/Adjuster.cs | 7 +- .../Formats/Archive.cs | 10 +++ .../Formats/BiosSet.cs | 6 ++ SabreTools.Metadata.DatItems/Formats/Chip.cs | 6 ++ .../Formats/ConfLocation.cs | 6 ++ .../Formats/ConfSetting.cs | 6 ++ .../Formats/Configuration.cs | 6 ++ .../Formats/DataArea.cs | 6 ++ .../Formats/DeviceRef.cs | 10 +++ .../Formats/DipLocation.cs | 6 ++ .../Formats/DipSwitch.cs | 8 +- .../Formats/DipValue.cs | 6 ++ SabreTools.Metadata.DatItems/Formats/Disk.cs | 12 ++- .../Formats/DiskArea.cs | 10 +++ .../Formats/Extension.cs | 10 +++ .../Formats/Feature.cs | 6 ++ SabreTools.Metadata.DatItems/Formats/Info.cs | 6 ++ .../Formats/Instance.cs | 10 +++ SabreTools.Metadata.DatItems/Formats/Media.cs | 10 +++ SabreTools.Metadata.DatItems/Formats/Part.cs | 6 ++ .../Formats/PartFeature.cs | 14 +++- .../Formats/RamOption.cs | 7 +- .../Formats/Release.cs | 7 +- SabreTools.Metadata.DatItems/Formats/Rom.cs | 12 ++- .../Formats/Sample.cs | 10 +++ .../Formats/SharedFeat.cs | 6 ++ SabreTools.Metadata.DatItems/Formats/Slot.cs | 6 ++ .../Formats/SlotOption.cs | 7 +- .../Formats/SoftwareList.cs | 6 ++ SabreTools.Metadata.DatItems/Machine.cs | 10 ++- .../FilterObjectTests.cs | 32 ++++---- .../DictionaryBaseExtensionsTests.cs | 40 +++++----- .../ArchiveDotOrgTests.cs | 4 +- .../AttractModeTests.cs | 4 +- .../ClrMameProTests.cs | 44 +++++----- .../DosCenterTests.cs | 12 +-- .../EverdriveSMDBTests.cs | 4 +- .../ListromTests.cs | 8 +- .../ListxmlTests.cs | 80 +++++++++---------- .../LogiqxTests.cs | 50 ++++++------ .../M1Tests.cs | 80 +++++++++---------- .../MessTests.cs | 80 +++++++++---------- .../SoftwareListTests.cs | 48 +++++------ .../ArchiveDotOrgTests.cs | 4 +- .../AttractModeTests.cs | 4 +- .../ClrMameProTests.cs | 44 +++++----- .../DosCenterTests.cs | 12 +-- .../EverdriveSMDBTests.cs | 4 +- .../ListromTests.cs | 20 ++--- .../ListxmlTests.cs | 80 +++++++++---------- .../LogiqxTests.cs | 44 +++++----- .../M1Tests.cs | 80 +++++++++---------- .../MessTests.cs | 80 +++++++++---------- .../NoIntroDatabaseTests.cs | 8 +- .../SoftwareListTests.cs | 48 +++++------ 79 files changed, 885 insertions(+), 683 deletions(-) diff --git a/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs b/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs index cf97ee9d..3f2d116e 100644 --- a/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs +++ b/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs @@ -39,7 +39,7 @@ namespace SabreTools.Data.Extensions.Test { DictionaryBase? self = new Disk { - Name = "XXXXXX", + Name = "name", [Disk.MergeKey] = "XXXXXX", [Disk.RegionKey] = "XXXXXX", Status = ItemStatus.Good, @@ -53,7 +53,7 @@ namespace SabreTools.Data.Extensions.Test Assert.NotNull(actual); Assert.Equal(4, actual.Count); Assert.Equal(ItemType.Rom, actual.ItemType); - Assert.Equal("XXXXXX.chd", actual.Name); + Assert.Equal("name.chd", actual.Name); Assert.Equal("XXXXXX", actual[Rom.MergeKey]); Assert.Equal("XXXXXX", actual[Rom.RegionKey]); Assert.Equal(ItemStatus.Good, actual.Status); @@ -83,7 +83,7 @@ namespace SabreTools.Data.Extensions.Test { DictionaryBase? self = new Media { - Name = "XXXXXX", + Name = "name", [Media.MD5Key] = "XXXXXX", [Media.SHA1Key] = "XXXXXX", [Media.SHA256Key] = "XXXXXX", @@ -95,7 +95,7 @@ namespace SabreTools.Data.Extensions.Test Assert.NotNull(actual); Assert.Equal(4, actual.Count); Assert.Equal(ItemType.Rom, actual.ItemType); - Assert.Equal("XXXXXX.aaruf", actual.Name); + Assert.Equal("name.aaruf", actual.Name); Assert.Equal("XXXXXX", actual[Rom.MD5Key]); Assert.Equal("XXXXXX", actual[Rom.SHA1Key]); Assert.Equal("XXXXXX", actual[Rom.SHA256Key]); diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.Filtering.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.Filtering.cs index ac941294..f130a324 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.Filtering.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.Filtering.cs @@ -95,7 +95,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem actual = Assert.Single(datFile.GetItemsForBucket("machine")); Machine? actualMachine = actual.GetMachine(); Assert.NotNull(actualMachine); - Assert.Equal("description", actualMachine.GetName()); + Assert.Equal("description", actualMachine.Name); Assert.Equal("description", actualMachine.Description); } @@ -112,7 +112,7 @@ namespace SabreTools.Metadata.DatFiles.Test datFile.MachineDescriptionToName(); Machine actualMachine = Assert.Single(datFile.GetMachinesDB()).Value; - Assert.Equal("description", actualMachine.GetName()); + Assert.Equal("description", actualMachine.Name); Assert.Equal("description", actualMachine.Description); } @@ -151,12 +151,12 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem actualRom = Assert.Single(actualDatItems.FindAll(i => i is Rom)); Machine? actualRomMachine = actualRom.GetMachine(); Assert.NotNull(actualRomMachine); - Assert.Equal("machine/rom", actualRomMachine.GetName()); + Assert.Equal("machine/rom", actualRomMachine.Name); DatItem actualDisk = Assert.Single(actualDatItems.FindAll(i => i is Disk)); Machine? actualDiskMachine = actualDisk.GetMachine(); Assert.NotNull(actualDiskMachine); - Assert.Equal("machine/disk", actualDiskMachine.GetName()); + Assert.Equal("machine/disk", actualDiskMachine.Name); } [Fact] @@ -188,12 +188,12 @@ namespace SabreTools.Metadata.DatFiles.Test var actualRom = Assert.Single(actualDatItems, i => i.Value is Rom); var actualRomMachine = datFile.GetMachineForItemDB(actualRom.Key); Assert.NotNull(actualRomMachine.Value); - Assert.Equal("machine/rom", actualRomMachine.Value.GetName()); + Assert.Equal("machine/rom", actualRomMachine.Value.Name); var actualDisk = Assert.Single(actualDatItems, i => i.Value is Disk); var actualDiskMachine = datFile.GetMachineForItemDB(actualDisk.Key); Assert.NotNull(actualDiskMachine.Value); - Assert.Equal("machine/disk", actualDiskMachine.Value.GetName()); + Assert.Equal("machine/disk", actualDiskMachine.Value.Name); } #endregion @@ -231,7 +231,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem actualWorldRom = Assert.Single(actualDatItems); Machine? actualWorldMachine = actualWorldRom.GetMachine(); Assert.NotNull(actualWorldMachine); - Assert.Equal("machine (World)", actualWorldMachine.GetName()); + Assert.Equal("machine (World)", actualWorldMachine.Name); } [Fact] @@ -253,7 +253,7 @@ namespace SabreTools.Metadata.DatFiles.Test var actualWorldMachine = Assert.Single(datFile.GetMachinesDB()); Assert.NotNull(actualWorldMachine.Value); - Assert.Equal("machine (World)", actualWorldMachine.Value.GetName()); + Assert.Equal("machine (World)", actualWorldMachine.Value.Name); } #endregion @@ -281,7 +281,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem actual = Assert.Single(datFile.GetItemsForBucket("10.10.10-machine-name")); Machine? actualMachine = actual.GetMachine(); Assert.NotNull(actualMachine); - Assert.Equal("machine-name", actualMachine.GetName()); + Assert.Equal("machine-name", actualMachine.Name); } [Fact] @@ -296,7 +296,7 @@ namespace SabreTools.Metadata.DatFiles.Test datFile.StripSceneDatesFromItems(); Machine actualMachine = Assert.Single(datFile.GetMachinesDB()).Value; - Assert.Equal("machine-name", actualMachine.GetName()); + Assert.Equal("machine-name", actualMachine.Name); } #endregion diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs index fbcafd79..40049bc1 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs @@ -1115,7 +1115,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("language", machine.ReadString(Data.Models.Metadata.Machine.LanguageKey)); Assert.Equal("location", machine.ReadString(Data.Models.Metadata.Machine.LocationKey)); Assert.Equal("manufacturer", machine.ReadString(Data.Models.Metadata.Machine.ManufacturerKey)); - Assert.Equal("name", machine.GetName()); + Assert.Equal("name", machine.Name); Assert.Equal("notes", machine.ReadString(Data.Models.Metadata.Machine.NotesKey)); Assert.Equal("playedcount", machine.ReadString(Data.Models.Metadata.Machine.PlayedCountKey)); Assert.Equal("playedtime", machine.ReadString(Data.Models.Metadata.Machine.PlayedTimeKey)); @@ -1145,7 +1145,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Assert.NotNull(adjuster); Assert.True(adjuster.Default); - Assert.Equal("name", adjuster.GetName()); + Assert.Equal("name", adjuster.Name); Condition? condition = adjuster.Read(Data.Models.Metadata.Adjuster.ConditionKey); ValidateCondition(condition); @@ -1160,7 +1160,7 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateArchive(Archive? archive) { Assert.NotNull(archive); - Assert.Equal("name", archive.GetName()); + Assert.Equal("name", archive.Name); } private static void ValidateBiosSet(BiosSet? biosSet) @@ -1168,7 +1168,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(biosSet); Assert.True(biosSet.Default); Assert.Equal("description", biosSet.Description); - Assert.Equal("name", biosSet.GetName()); + Assert.Equal("name", biosSet.Name); } private static void ValidateChip(Chip? chip) @@ -1176,7 +1176,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(chip); Assert.Equal(12345L, chip.ReadLong(Data.Models.Metadata.Chip.ClockKey)); Assert.Equal("flags", chip.ReadString(Data.Models.Metadata.Chip.FlagsKey)); - Assert.Equal("name", chip.GetName()); + Assert.Equal("name", chip.Name); Assert.True(chip.SoundOnly); Assert.Equal("tag", chip.Tag); Assert.Equal(Data.Models.Metadata.ChipType.CPU, chip.ChipType); @@ -1195,7 +1195,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Assert.NotNull(configuration); Assert.Equal("mask", configuration.Mask); - Assert.Equal("name", configuration.GetName()); + Assert.Equal("name", configuration.Name); Assert.Equal("tag", configuration.Tag); Condition? condition = configuration.Read(Data.Models.Metadata.Configuration.ConditionKey); @@ -1216,7 +1216,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Assert.NotNull(confLocation); Assert.True(confLocation.Inverted); - Assert.Equal("name", confLocation.GetName()); + Assert.Equal("name", confLocation.Name); Assert.Equal("number", confLocation.ReadString(Data.Models.Metadata.ConfLocation.NumberKey)); } @@ -1224,7 +1224,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Assert.NotNull(confSetting); Assert.True(confSetting.Default); - Assert.Equal("name", confSetting.GetName()); + Assert.Equal("name", confSetting.Name); Assert.Equal("value", confSetting.Value); Condition? condition = confSetting.Read(Data.Models.Metadata.ConfSetting.ConditionKey); @@ -1252,7 +1252,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Assert.NotNull(dataArea); Assert.Equal(Data.Models.Metadata.Endianness.Big, dataArea.Endianness); - Assert.Equal("name", dataArea.GetName()); + Assert.Equal("name", dataArea.Name); Assert.Equal(12345L, dataArea.ReadLong(Data.Models.Metadata.DataArea.SizeKey)); Assert.Equal(64, dataArea.ReadLong(Data.Models.Metadata.DataArea.WidthKey)); } @@ -1278,14 +1278,14 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateDeviceRef(DeviceRef? deviceRef) { Assert.NotNull(deviceRef); - Assert.Equal("name", deviceRef.GetName()); + Assert.Equal("name", deviceRef.Name); } private static void ValidateDipLocation(DipLocation? dipLocation) { Assert.NotNull(dipLocation); Assert.True(dipLocation.Inverted); - Assert.Equal("name", dipLocation.GetName()); + Assert.Equal("name", dipLocation.Name); Assert.Equal("number", dipLocation.ReadString(Data.Models.Metadata.DipLocation.NumberKey)); } @@ -1294,7 +1294,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(dipSwitch); Assert.True(dipSwitch.Default); Assert.Equal("mask", dipSwitch.Mask); - Assert.Equal("name", dipSwitch.GetName()); + Assert.Equal("name", dipSwitch.Name); Assert.Equal("tag", dipSwitch.Tag); Condition? condition = dipSwitch.Read(Data.Models.Metadata.DipSwitch.ConditionKey); @@ -1320,7 +1320,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Assert.NotNull(dipValue); Assert.True(dipValue.Default); - Assert.Equal("name", dipValue.GetName()); + Assert.Equal("name", dipValue.Name); Assert.Equal("value", dipValue.Value); Condition? condition = dipValue.Read(Data.Models.Metadata.DipValue.ConditionKey); @@ -1334,7 +1334,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("index", disk.ReadString(Data.Models.Metadata.Disk.IndexKey)); Assert.Equal(HashType.MD5.ZeroString, disk.ReadString(Data.Models.Metadata.Disk.MD5Key)); Assert.Equal("merge", disk.ReadString(Data.Models.Metadata.Disk.MergeKey)); - Assert.Equal("name", disk.GetName()); + Assert.Equal("name", disk.Name); Assert.True(disk.Optional); Assert.Equal("region", disk.ReadString(Data.Models.Metadata.Disk.RegionKey)); Assert.Equal(HashType.SHA1.ZeroString, disk.ReadString(Data.Models.Metadata.Disk.SHA1Key)); @@ -1344,7 +1344,7 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateDiskArea(DiskArea? diskArea) { Assert.NotNull(diskArea); - Assert.Equal("name", diskArea.GetName()); + Assert.Equal("name", diskArea.Name); } private static void ValidateDisplay(Display? display) @@ -1386,13 +1386,13 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateExtension(Extension? extension) { Assert.NotNull(extension); - Assert.Equal("name", extension.GetName()); + Assert.Equal("name", extension.Name); } private static void ValidateFeature(Feature? feature) { Assert.NotNull(feature); - Assert.Equal("name", feature.GetName()); + Assert.Equal("name", feature.Name); Assert.Equal(Data.Models.Metadata.FeatureStatus.Imperfect, feature.Overall); Assert.Equal(Data.Models.Metadata.FeatureStatus.Imperfect, feature.Status); Assert.Equal(Data.Models.Metadata.FeatureType.Protection, feature.FeatureType); @@ -1402,7 +1402,7 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateInfo(Info? info) { Assert.NotNull(info); - Assert.Equal("name", info.GetName()); + Assert.Equal("name", info.Name); Assert.Equal("value", info.Value); } @@ -1425,14 +1425,14 @@ namespace SabreTools.Metadata.DatFiles.Test { Assert.NotNull(instance); Assert.Equal("briefname", instance.ReadString(Data.Models.Metadata.Instance.BriefNameKey)); - Assert.Equal("name", instance.GetName()); + Assert.Equal("name", instance.Name); } private static void ValidateMedia(Media? media) { Assert.NotNull(media); Assert.Equal(HashType.MD5.ZeroString, media.ReadString(Data.Models.Metadata.Media.MD5Key)); - Assert.Equal("name", media.GetName()); + Assert.Equal("name", media.Name); Assert.Equal(HashType.SHA1.ZeroString, media.ReadString(Data.Models.Metadata.Media.SHA1Key)); Assert.Equal(HashType.SHA256.ZeroString, media.ReadString(Data.Models.Metadata.Media.SHA256Key)); Assert.Equal(HashType.SpamSum.ZeroString, media.ReadString(Data.Models.Metadata.Media.SpamSumKey)); @@ -1442,13 +1442,13 @@ namespace SabreTools.Metadata.DatFiles.Test { Assert.NotNull(part); Assert.Equal("interface", part.ReadString(Data.Models.Metadata.Part.InterfaceKey)); - Assert.Equal("name", part.GetName()); + Assert.Equal("name", part.Name); } private static void ValidatePartFeature(PartFeature? partFeature) { Assert.NotNull(partFeature); - Assert.Equal("name", partFeature.GetName()); + Assert.Equal("name", partFeature.Name); Assert.Equal(Data.Models.Metadata.FeatureStatus.Imperfect, partFeature.Overall); Assert.Equal(Data.Models.Metadata.FeatureStatus.Imperfect, partFeature.Status); Assert.Equal(Data.Models.Metadata.FeatureType.Protection, partFeature.FeatureType); @@ -1474,7 +1474,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(ramOption); Assert.Equal("content", ramOption.ReadString(Data.Models.Metadata.RamOption.ContentKey)); Assert.True(ramOption.Default); - Assert.Equal("name", ramOption.GetName()); + Assert.Equal("name", ramOption.Name); } private static void ValidateRelease(Release? release) @@ -1483,7 +1483,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("date", release.ReadString(Data.Models.Metadata.Release.DateKey)); Assert.True(release.Default); Assert.Equal("language", release.ReadString(Data.Models.Metadata.Release.LanguageKey)); - Assert.Equal("name", release.GetName()); + Assert.Equal("name", release.Name); Assert.Equal("region", release.ReadString(Data.Models.Metadata.Release.RegionKey)); } @@ -1533,7 +1533,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Null(rom.OpenMSXMediaType); // Omit due to other test Assert.Equal("merge", rom.ReadString(Data.Models.Metadata.Rom.MergeKey)); Assert.True(rom.MIA); - Assert.Equal("name", rom.GetName()); + Assert.Equal("name", rom.Name); Assert.Equal("ocr", rom.ReadString(Data.Models.Metadata.Rom.TesseractOCRKey)); Assert.Equal("ocr_converted", rom.ReadString(Data.Models.Metadata.Rom.TesseractOCRConvertedKey)); Assert.Equal("ocr_detected_lang", rom.ReadString(Data.Models.Metadata.Rom.TesseractOCRDetectedLangKey)); @@ -1591,20 +1591,20 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateSample(Sample? sample) { Assert.NotNull(sample); - Assert.Equal("name", sample.GetName()); + Assert.Equal("name", sample.Name); } private static void ValidateSharedFeat(SharedFeat? sharedFeat) { Assert.NotNull(sharedFeat); - Assert.Equal("name", sharedFeat.GetName()); + Assert.Equal("name", sharedFeat.Name); Assert.Equal("value", sharedFeat.Value); } private static void ValidateSlot(Slot? slot) { Assert.NotNull(slot); - Assert.Equal("name", slot.GetName()); + Assert.Equal("name", slot.Name); SlotOption[]? slotOptions = slot.Read(Data.Models.Metadata.Slot.SlotOptionKey); Assert.NotNull(slotOptions); @@ -1617,7 +1617,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(slotOption); Assert.True(slotOption.Default); Assert.Equal("devname", slotOption.ReadString(Data.Models.Metadata.SlotOption.DevNameKey)); - Assert.Equal("name", slotOption.GetName()); + Assert.Equal("name", slotOption.Name); } private static void ValidateSoftwareList(SoftwareList? softwareList) @@ -1625,7 +1625,7 @@ 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("name", softwareList.GetName()); + 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(Data.Models.Metadata.SoftwareListStatus.Original, softwareList.Status); diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.Splitting.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.Splitting.cs index 021711fa..1c5152b7 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.Splitting.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.Splitting.cs @@ -620,7 +620,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem actual = Assert.Single(datFile.GetItemsForBucket("child")); Machine? actualMachine = actual.GetMachine(); Assert.NotNull(actualMachine); - Assert.Equal("child", actualMachine.GetName()); + Assert.Equal("child", actualMachine.Name); Assert.Equal("romof", actualMachine.ReadString(Data.Models.Metadata.Machine.RomOfKey)); } @@ -673,7 +673,7 @@ namespace SabreTools.Metadata.DatFiles.Test long actual = Assert.Single(datFile.GetItemsForBucketDB("child")).Key; Machine? actualMachine = datFile.GetMachineForItemDB(actual).Value; Assert.NotNull(actualMachine); - Assert.Equal("child", actualMachine.GetName()); + Assert.Equal("child", actualMachine.Name); Assert.Equal("romof", actualMachine.ReadString(Data.Models.Metadata.Machine.RomOfKey)); } @@ -727,7 +727,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem actual = Assert.Single(datFile.GetItemsForBucket("child")); Machine? actualMachine = actual.GetMachine(); Assert.NotNull(actualMachine); - Assert.Equal("child", actualMachine.GetName()); + Assert.Equal("child", actualMachine.Name); } [Fact] @@ -779,7 +779,7 @@ namespace SabreTools.Metadata.DatFiles.Test long actual = Assert.Single(datFile.GetItemsForBucketDB("child")).Key; Machine? actualMachine = datFile.GetMachineForItemDB(actual).Value; Assert.NotNull(actualMachine); - Assert.Equal("child", actualMachine.GetName()); + Assert.Equal("child", actualMachine.Name); } #endregion diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.cs index feace456..a08fa300 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.cs @@ -1971,7 +1971,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem actualItemA = Assert.Single(actual); Rom? actualRomA = actualItemA as Rom; Assert.NotNull(actualRomA); - Assert.Equal("name", actualRomA.GetName()); + Assert.Equal("name", actualRomA.Name); Assert.Equal(12345, actualRomA.ReadLong(Data.Models.Metadata.Rom.SizeKey)); Assert.Equal("crc", actualRomA.ReadString(Data.Models.Metadata.Rom.CRCKey)); } @@ -2007,13 +2007,13 @@ namespace SabreTools.Metadata.DatFiles.Test Rom? actualRomA = actual[0] as Rom; Assert.NotNull(actualRomA); - Assert.Equal("romA", actualRomA.GetName()); + Assert.Equal("romA", actualRomA.Name); Assert.Equal(12345, actualRomA.ReadLong(Data.Models.Metadata.Rom.SizeKey)); Assert.Equal("crc", actualRomA.ReadString(Data.Models.Metadata.Rom.CRCKey)); Rom? actualRomB = actual[1] as Rom; Assert.NotNull(actualRomB); - Assert.Equal("romB", actualRomB.GetName()); + Assert.Equal("romB", actualRomB.Name); Assert.Equal(23456, actualRomB.ReadLong(Data.Models.Metadata.Rom.SizeKey)); Assert.Equal("crc2", actualRomB.ReadString(Data.Models.Metadata.Rom.CRCKey)); } @@ -2048,7 +2048,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem actualItemA = Assert.Single(actual); Rom? actualRomA = actualItemA as Rom; Assert.NotNull(actualRomA); - Assert.Equal("rom", actualRomA.GetName()); + Assert.Equal("rom", actualRomA.Name); Assert.Equal(12345, actualRomA.ReadLong(Data.Models.Metadata.Rom.SizeKey)); Assert.Equal("crc", actualRomA.ReadString(Data.Models.Metadata.Rom.CRCKey)); } @@ -2084,13 +2084,13 @@ namespace SabreTools.Metadata.DatFiles.Test Rom? actualRomA = actual[0] as Rom; Assert.NotNull(actualRomA); - Assert.Equal("rom", actualRomA.GetName()); + Assert.Equal("rom", actualRomA.Name); Assert.Equal(12345, actualRomA.ReadLong(Data.Models.Metadata.Rom.SizeKey)); Assert.Equal("crc", actualRomA.ReadString(Data.Models.Metadata.Rom.CRCKey)); Rom? actualRomB = actual[1] as Rom; Assert.NotNull(actualRomB); - Assert.Equal("rom_crc2", actualRomB.GetName()); + Assert.Equal("rom_crc2", actualRomB.Name); Assert.Equal(23456, actualRomB.ReadLong(Data.Models.Metadata.Rom.SizeKey)); Assert.Equal("crc2", actualRomB.ReadString(Data.Models.Metadata.Rom.CRCKey)); } @@ -2135,7 +2135,7 @@ namespace SabreTools.Metadata.DatFiles.Test KeyValuePair actualItemA = Assert.Single(actual); Rom? actualRomA = actualItemA.Value as Rom; Assert.NotNull(actualRomA); - Assert.Equal("name", actualRomA.GetName()); + Assert.Equal("name", actualRomA.Name); Assert.Equal(12345, actualRomA.ReadLong(Data.Models.Metadata.Rom.SizeKey)); Assert.Equal("crc", actualRomA.ReadString(Data.Models.Metadata.Rom.CRCKey)); } @@ -2174,13 +2174,13 @@ namespace SabreTools.Metadata.DatFiles.Test Rom? actualRomA = actual[0].Value as Rom; Assert.NotNull(actualRomA); - Assert.Equal("romA", actualRomA.GetName()); + Assert.Equal("romA", actualRomA.Name); Assert.Equal(12345, actualRomA.ReadLong(Data.Models.Metadata.Rom.SizeKey)); Assert.Equal("crc", actualRomA.ReadString(Data.Models.Metadata.Rom.CRCKey)); Rom? actualRomB = actual[1].Value as Rom; Assert.NotNull(actualRomB); - Assert.Equal("romB", actualRomB.GetName()); + Assert.Equal("romB", actualRomB.Name); Assert.Equal(23456, actualRomB.ReadLong(Data.Models.Metadata.Rom.SizeKey)); Assert.Equal("crc2", actualRomB.ReadString(Data.Models.Metadata.Rom.CRCKey)); } @@ -2219,7 +2219,7 @@ namespace SabreTools.Metadata.DatFiles.Test KeyValuePair actualItemA = Assert.Single(actual); Rom? actualRomA = actualItemA.Value as Rom; Assert.NotNull(actualRomA); - Assert.Equal("rom", actualRomA.GetName()); + Assert.Equal("rom", actualRomA.Name); Assert.Equal(12345, actualRomA.ReadLong(Data.Models.Metadata.Rom.SizeKey)); Assert.Equal("crc", actualRomA.ReadString(Data.Models.Metadata.Rom.CRCKey)); } @@ -2258,13 +2258,13 @@ namespace SabreTools.Metadata.DatFiles.Test Rom? actualRomA = actual[0].Value as Rom; Assert.NotNull(actualRomA); - Assert.Equal("rom", actualRomA.GetName()); + Assert.Equal("rom", actualRomA.Name); Assert.Equal(12345, actualRomA.ReadLong(Data.Models.Metadata.Rom.SizeKey)); Assert.Equal("crc", actualRomA.ReadString(Data.Models.Metadata.Rom.CRCKey)); Rom? actualRomB = actual[1].Value as Rom; Assert.NotNull(actualRomB); - Assert.Equal("rom_crc2", actualRomB.GetName()); + Assert.Equal("rom_crc2", actualRomB.Name); Assert.Equal(23456, actualRomB.ReadLong(Data.Models.Metadata.Rom.SizeKey)); Assert.Equal("crc2", actualRomB.ReadString(Data.Models.Metadata.Rom.CRCKey)); } diff --git a/SabreTools.Metadata.DatFiles.Test/ItemDictionaryDBTests.cs b/SabreTools.Metadata.DatFiles.Test/ItemDictionaryDBTests.cs index a0881d41..e0d2cb03 100644 --- a/SabreTools.Metadata.DatFiles.Test/ItemDictionaryDBTests.cs +++ b/SabreTools.Metadata.DatFiles.Test/ItemDictionaryDBTests.cs @@ -533,7 +533,7 @@ namespace SabreTools.Metadata.DatFiles.Test var actual = dict.GetMachineForItem(itemIndex); Assert.Equal(1, actual.Key); Assert.NotNull(actual.Value); - Assert.Equal("new", actual.Value.GetName()); + Assert.Equal("new", actual.Value.Name); } #endregion diff --git a/SabreTools.Metadata.DatFiles/DatFile.Filtering.cs b/SabreTools.Metadata.DatFiles/DatFile.Filtering.cs index 644ee035..08d3af9d 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.Filtering.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.Filtering.cs @@ -124,7 +124,7 @@ namespace SabreTools.Metadata.DatFiles continue; // Get the values to check against - string? machineName = machine.GetName(); + string? machineName = machine.Name; string? machineDesc = machine.Description; if (machineName is null || machineDesc is null) continue; @@ -165,7 +165,7 @@ namespace SabreTools.Metadata.DatFiles continue; // Get the values to check against - string? machineName = machine.Value.GetName(); + string? machineName = machine.Value.Name; string? machineDesc = machine.Value.Description; if (machineName is null || machineDesc is null) continue; @@ -327,7 +327,7 @@ namespace SabreTools.Metadata.DatFiles // Get machine information Machine? machine = item.GetMachine(); - string? machineName = machine?.GetName()?.ToLowerInvariant(); + string? machineName = machine?.Name?.ToLowerInvariant(); if (machine is null || machineName is null) continue; @@ -406,7 +406,7 @@ namespace SabreTools.Metadata.DatFiles // Get machine information Machine? machineObj = machine.Value; - string? machineName = machineObj?.GetName()?.ToLowerInvariant(); + string? machineName = machineObj?.Name?.ToLowerInvariant(); if (machineObj is null || machineName is null) continue; @@ -528,12 +528,12 @@ namespace SabreTools.Metadata.DatFiles if (datItem is DatItems.Formats.File || datItem is Rom) { string[] splitname = itemName.Split('.'); - itemName = machine.GetName() + itemName = machine.Name + $"/{string.Join(".", splitname, 0, splitname.Length > 1 ? splitname.Length - 1 : 1)}"; } else { - itemName = machine.GetName() + $"/{itemName}"; + itemName = machine.Name + $"/{itemName}"; } // Strip off "Default" prefix only for ORPG @@ -606,12 +606,12 @@ namespace SabreTools.Metadata.DatFiles if (datItem.Value is DatItems.Formats.File || datItem.Value is Rom) { string[] splitname = itemName.Split('.'); - itemName = machine.Value.GetName() + itemName = machine.Value.Name + $"/{string.Join(".", splitname, 0, splitname.Length > 1 ? splitname.Length - 1 : 1)}"; } else { - itemName = machine.Value.GetName() + $"/{itemName}"; + itemName = machine.Value.Name + $"/{itemName}"; } // Strip off "Default" prefix only for ORPG @@ -651,7 +651,7 @@ namespace SabreTools.Metadata.DatFiles continue; // Get the values to check against - string? machineName = machine.GetName(); + string? machineName = machine.Name; string? machineDesc = machine.Description; if (machineName is not null && Regex.IsMatch(machineName, SceneNamePattern)) @@ -689,7 +689,7 @@ namespace SabreTools.Metadata.DatFiles #endif // Get the values to check against - string? machineName = machine.Value.GetName(); + string? machineName = machine.Value.Name; string? machineDesc = machine.Value.Description; if (machineName is not null && Regex.IsMatch(machineName, SceneNamePattern)) @@ -732,7 +732,7 @@ namespace SabreTools.Metadata.DatFiles continue; // Get the values to check against - string? machineName = machine.GetName(); + string? machineName = machine.Name; string? cloneOf = machine.ReadString(Data.Models.Metadata.Machine.CloneOfKey); string? romOf = machine.ReadString(Data.Models.Metadata.Machine.RomOfKey); string? sampleOf = machine.ReadString(Data.Models.Metadata.Machine.SampleOfKey); @@ -773,7 +773,7 @@ namespace SabreTools.Metadata.DatFiles continue; // Get the values to check against - string? machineName = machine.Value.GetName(); + string? machineName = machine.Value.Name; string? cloneOf = machine.Value.ReadString(Data.Models.Metadata.Machine.CloneOfKey); string? romOf = machine.Value.ReadString(Data.Models.Metadata.Machine.RomOfKey); string? sampleOf = machine.Value.ReadString(Data.Models.Metadata.Machine.SampleOfKey); diff --git a/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs b/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs index d31a948a..d5f69517 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs @@ -375,7 +375,7 @@ namespace SabreTools.Metadata.DatFiles for (int i = 0; i < items.Length; i++) { var datItem = new Rom(items[i], machine, source, i); - if (datItem.GetName() is not null) + if (datItem.Name is not null) { AddItem(datItem, statsOnly); // AddItemDB(datItem, machineIndex, sourceIndex, statsOnly); diff --git a/SabreTools.Metadata.DatFiles/DatFile.Splitting.cs b/SabreTools.Metadata.DatFiles/DatFile.Splitting.cs index bc7b21d8..8ca46e1f 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.Splitting.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.Splitting.cs @@ -302,7 +302,7 @@ namespace SabreTools.Metadata.DatFiles // If the merge tag exists and the parent already contains it, skip if (mergeTag is not null && GetItemsForBucket(cloneOf) .FindAll(i => i is Disk) - .ConvertAll(i => (i as Disk)!.GetName()) + .ConvertAll(i => (i as Disk)!.Name) .Contains(mergeTag)) { continue; @@ -311,7 +311,7 @@ namespace SabreTools.Metadata.DatFiles // If the merge tag exists but the parent doesn't contain it, add to parent else if (mergeTag is not null && !GetItemsForBucket(cloneOf) .FindAll(i => i is Disk) - .ConvertAll(i => (i as Disk)!.GetName()) + .ConvertAll(i => (i as Disk)!.Name) .Contains(mergeTag)) { disk.CopyMachineInformation(copyFrom); @@ -321,8 +321,8 @@ namespace SabreTools.Metadata.DatFiles // If there is no merge tag, add to parent else if (mergeTag is null && !GetItemsForBucket(cloneOf) .FindAll(i => i is Disk) - .ConvertAll(i => (i as Disk)!.GetName()) - .Contains(disk.GetName())) + .ConvertAll(i => (i as Disk)!.Name) + .Contains(disk.Name)) { disk.CopyMachineInformation(copyFrom); AddItem(disk, statsOnly: false); @@ -337,7 +337,7 @@ namespace SabreTools.Metadata.DatFiles // If the merge tag exists and the parent already contains it, skip if (mergeTag is not null && GetItemsForBucket(cloneOf) .FindAll(i => i is Rom) - .ConvertAll(i => (i as Rom)!.GetName()) + .ConvertAll(i => (i as Rom)!.Name) .Contains(mergeTag)) { continue; @@ -346,11 +346,11 @@ namespace SabreTools.Metadata.DatFiles // If the merge tag exists but the parent doesn't contain it, add to subfolder of parent else if (mergeTag is not null && !GetItemsForBucket(cloneOf) .FindAll(i => i is Rom) - .ConvertAll(i => (i as Rom)!.GetName()) + .ConvertAll(i => (i as Rom)!.Name) .Contains(mergeTag)) { if (subfolder) - rom.SetName($"{rom.GetMachine()!.GetName()}\\{rom.GetName()}"); + rom.SetName($"{rom.GetMachine()!.Name}\\{rom.Name}"); rom.CopyMachineInformation(copyFrom); AddItem(rom, statsOnly: false); @@ -360,7 +360,7 @@ namespace SabreTools.Metadata.DatFiles else if (!GetItemsForBucket(cloneOf).Exists(i => i.Equals(item)) || skipDedup) { if (subfolder) - rom.SetName($"{item.GetMachine()!.GetName()}\\{rom.GetName()}"); + rom.SetName($"{item.GetMachine()!.Name}\\{rom.Name}"); rom.CopyMachineInformation(copyFrom); AddItem(rom, statsOnly: false); @@ -371,7 +371,7 @@ namespace SabreTools.Metadata.DatFiles else if (!GetItemsForBucket(cloneOf).Exists(i => i.Equals(item))) { if (subfolder) - item.SetName($"{item.GetMachine()!.GetName()}\\{item.GetName()}"); + item.SetName($"{item.GetMachine()!.Name}\\{item.GetName()}"); item.CopyMachineInformation(copyFrom); AddItem(item, statsOnly: false); @@ -428,8 +428,7 @@ namespace SabreTools.Metadata.DatFiles if (parentItems.Count == 0) continue; - string? machineName = GetMachineForItemDB(item.Key).Value? - .GetName(); + string? machineName = GetMachineForItemDB(item.Key).Value?.Name; // Special disk handling if (item.Value is Disk disk) @@ -439,7 +438,7 @@ namespace SabreTools.Metadata.DatFiles // If the merge tag exists and the parent already contains it, skip if (mergeTag is not null && GetItemsForBucketDB(cloneOf).Values .Where(i => i is Disk) - .Select(i => (i as Disk)!.GetName()) + .Select(i => (i as Disk)!.Name) .Contains(mergeTag)) { continue; @@ -448,7 +447,7 @@ namespace SabreTools.Metadata.DatFiles // If the merge tag exists but the parent doesn't contain it, add to parent else if (mergeTag is not null && !GetItemsForBucketDB(cloneOf).Values .Where(i => i is Disk) - .Select(i => (i as Disk)!.GetName()) + .Select(i => (i as Disk)!.Name) .Contains(mergeTag)) { ItemsDB.RemapDatItemToMachine(item.Key, cloneOfMachine.Key); @@ -458,8 +457,8 @@ namespace SabreTools.Metadata.DatFiles // If there is no merge tag, add to parent else if (mergeTag is null && !GetItemsForBucketDB(cloneOf).Values .Where(i => i is Disk) - .Select(i => (i as Disk)!.GetName()) - .Contains(disk.GetName())) + .Select(i => (i as Disk)!.Name) + .Contains(disk.Name)) { ItemsDB.RemapDatItemToMachine(item.Key, cloneOfMachine.Key); ItemsDB.AddItem(item.Value, cloneOfMachine.Key, source.Key); @@ -474,7 +473,7 @@ namespace SabreTools.Metadata.DatFiles // If the merge tag exists and the parent already contains it, skip if (mergeTag is not null && GetItemsForBucketDB(cloneOf).Values .Where(i => i is Rom) - .Select(i => (i as Rom)!.GetName()) + .Select(i => (i as Rom)!.Name) .Contains(mergeTag)) { continue; @@ -483,11 +482,11 @@ namespace SabreTools.Metadata.DatFiles // If the merge tag exists but the parent doesn't contain it, add to subfolder of parent else if (mergeTag is not null && !GetItemsForBucketDB(cloneOf).Values .Where(i => i is Rom) - .Select(i => (i as Rom)!.GetName()) + .Select(i => (i as Rom)!.Name) .Contains(mergeTag)) { if (subfolder) - rom.SetName($"{machineName}\\{rom.GetName()}"); + rom.SetName($"{machineName}\\{rom.Name}"); ItemsDB.RemapDatItemToMachine(item.Key, machineIndex: cloneOfMachine.Key); ItemsDB.AddItem(item.Value, cloneOfMachine.Key, source.Key); @@ -497,7 +496,7 @@ namespace SabreTools.Metadata.DatFiles else if (!GetItemsForBucketDB(cloneOf).ContainsValue(item.Value) || skipDedup) { if (subfolder) - rom.SetName($"{machineName}\\{rom.GetName()}"); + rom.SetName($"{machineName}\\{rom.Name}"); ItemsDB.RemapDatItemToMachine(item.Key, cloneOfMachine.Key); ItemsDB.AddItem(item.Value, cloneOfMachine.Key, source.Key); @@ -671,7 +670,7 @@ namespace SabreTools.Metadata.DatFiles deviceReferences.UnionWith(datItems .FindAll(i => i is DeviceRef) .ConvertAll(i => i as DeviceRef) - .ConvertAll(dr => dr!.GetName())); + .ConvertAll(dr => dr!.Name)); // Get all slot option names from the current machine HashSet slotOptions = []; @@ -696,7 +695,7 @@ namespace SabreTools.Metadata.DatFiles newDeviceReferences.UnionWith(devItems .FindAll(i => i is DeviceRef) - .ConvertAll(i => (i as DeviceRef)!.GetName()!)); + .ConvertAll(i => (i as DeviceRef)!.Name!)); // Set new machine information and add to the current machine foreach (DatItem item in devItems) @@ -827,7 +826,7 @@ namespace SabreTools.Metadata.DatFiles List deviceReferences = items.Values .Where(i => i is DeviceRef) .Select(i => i as DeviceRef) - .Select(dr => dr!.GetName()) + .Select(dr => dr!.Name) .Distinct() .ToList(); @@ -860,7 +859,7 @@ namespace SabreTools.Metadata.DatFiles // Add to the list of new device reference names newDeviceReferences.UnionWith(devItems.Values .Where(i => i is DeviceRef) - .Select(i => (i as DeviceRef)!.GetName()!)); + .Select(i => (i as DeviceRef)!.Name!)); // Set new machine information and add to the current machine var copyFrom = GetMachineForItemDB(items.First().Key); diff --git a/SabreTools.Metadata.DatFiles/DatFile.cs b/SabreTools.Metadata.DatFiles/DatFile.cs index 24aeed88..c31318d9 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.cs @@ -495,7 +495,7 @@ namespace SabreTools.Metadata.DatFiles // Get the name to update string? name = (useRomName ? item.GetName() - : machine?.GetName()) ?? string.Empty; + : machine?.Name) ?? string.Empty; // If we're in Depot mode, take care of that instead if (Modifiers.OutputDepot?.IsActive == true) @@ -561,7 +561,7 @@ namespace SabreTools.Metadata.DatFiles name += Modifiers.AddExtension; if (useRomName && Modifiers.GameName) - name = Path.Combine(machine?.GetName() ?? string.Empty, name); + name = Path.Combine(machine?.Name ?? string.Empty, name); // Now assign back the formatted name name = $"{pre}{name}{post}"; @@ -583,7 +583,7 @@ namespace SabreTools.Metadata.DatFiles // Initialize strings Data.Models.Metadata.ItemType type = item.ItemType; string - game = machine?.GetName() ?? string.Empty, + game = machine?.Name ?? string.Empty, manufacturer = machine?.ReadString(Data.Models.Metadata.Machine.ManufacturerKey) ?? string.Empty, publisher = machine?.ReadString(Data.Models.Metadata.Machine.PublisherKey) ?? string.Empty, category = machine?.ReadString(Data.Models.Metadata.Machine.CategoryKey) ?? string.Empty, @@ -689,7 +689,7 @@ namespace SabreTools.Metadata.DatFiles return rom; // If the Rom has "null" characteristics, ensure all fields - rom.SetName(rom.GetName() == "null" ? "-" : rom.GetName()); + rom.SetName(rom.Name == "null" ? "-" : rom.Name); rom.Write(Data.Models.Metadata.Rom.SizeKey, "0"); rom.Write(Data.Models.Metadata.Rom.CRC16Key, rom.ReadString(Data.Models.Metadata.Rom.CRC16Key) == "null" ? HashType.CRC16.ZeroString : null); @@ -1176,8 +1176,8 @@ namespace SabreTools.Metadata.DatFiles } // If machine names don't match - string? xMachineName = x.GetMachine()?.GetName(); - string? yMachineName = y.GetMachine()?.GetName(); + string? xMachineName = x.GetMachine()?.Name; + string? yMachineName = y.GetMachine()?.Name; if (xMachineName != yMachineName) return nc.Compare(xMachineName, yMachineName); @@ -1233,8 +1233,8 @@ namespace SabreTools.Metadata.DatFiles } // If machine names don't match - string? xMachineName = ItemsDB.GetMachineForItem(x.Key).Value?.GetName(); - string? yMachineName = ItemsDB.GetMachineForItem(y.Key).Value?.GetName(); + string? xMachineName = ItemsDB.GetMachineForItem(x.Key).Value?.Name; + string? yMachineName = ItemsDB.GetMachineForItem(y.Key).Value?.Name; if (xMachineName != yMachineName) return nc.Compare(xMachineName, yMachineName); diff --git a/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs b/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs index 5a6e9561..46b8bf7f 100644 --- a/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs +++ b/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs @@ -74,21 +74,21 @@ namespace SabreTools.Metadata.DatFiles.Formats switch (datItem) { case Release release: - if (string.IsNullOrEmpty(release.GetName())) + if (string.IsNullOrEmpty(release.Name)) missingFields.Add(nameof(Data.Models.Metadata.Release.Name)); if (string.IsNullOrEmpty(release.ReadString(Data.Models.Metadata.Release.RegionKey))) missingFields.Add(Data.Models.Metadata.Release.RegionKey); break; case BiosSet biosset: - if (string.IsNullOrEmpty(biosset.GetName())) + if (string.IsNullOrEmpty(biosset.Name)) missingFields.Add(nameof(Data.Models.Metadata.BiosSet.Name)); if (string.IsNullOrEmpty(biosset.Description)) missingFields.Add(nameof(Data.Models.Metadata.BiosSet.Description)); break; case Rom rom: - if (string.IsNullOrEmpty(rom.GetName())) + if (string.IsNullOrEmpty(rom.Name)) missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); if (rom.ReadLong(Data.Models.Metadata.Rom.SizeKey) is null || rom.ReadLong(Data.Models.Metadata.Rom.SizeKey) < 0) missingFields.Add(Data.Models.Metadata.Rom.SizeKey); @@ -112,7 +112,7 @@ namespace SabreTools.Metadata.DatFiles.Formats break; case Disk disk: - if (string.IsNullOrEmpty(disk.GetName())) + if (string.IsNullOrEmpty(disk.Name)) missingFields.Add(nameof(Data.Models.Metadata.Disk.Name)); if (string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key)) && string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.SHA1Key))) @@ -123,19 +123,19 @@ namespace SabreTools.Metadata.DatFiles.Formats break; case Sample sample: - if (string.IsNullOrEmpty(sample.GetName())) + if (string.IsNullOrEmpty(sample.Name)) missingFields.Add(nameof(Data.Models.Metadata.Sample.Name)); break; case Archive archive: - if (string.IsNullOrEmpty(archive.GetName())) + if (string.IsNullOrEmpty(archive.Name)) missingFields.Add(nameof(Data.Models.Metadata.Archive.Name)); break; case Chip chip: if (chip.ChipType is null) missingFields.Add(nameof(Data.Models.Metadata.Chip.ChipType)); - if (string.IsNullOrEmpty(chip.GetName())) + if (string.IsNullOrEmpty(chip.Name)) missingFields.Add(nameof(Data.Models.Metadata.Chip.Name)); break; @@ -159,7 +159,7 @@ namespace SabreTools.Metadata.DatFiles.Formats break; case DipSwitch dipswitch: - if (string.IsNullOrEmpty(dipswitch.GetName())) + if (string.IsNullOrEmpty(dipswitch.Name)) missingFields.Add(nameof(Data.Models.Metadata.DipSwitch.Name)); break; diff --git a/SabreTools.Metadata.DatFiles/Formats/Listxml.cs b/SabreTools.Metadata.DatFiles/Formats/Listxml.cs index 858bc7d0..5af06b3a 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Listxml.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Listxml.cs @@ -260,14 +260,14 @@ namespace SabreTools.Metadata.DatFiles.Formats switch (datItem) { case BiosSet biosset: - if (string.IsNullOrEmpty(biosset.GetName())) + if (string.IsNullOrEmpty(biosset.Name)) missingFields.Add(nameof(Data.Models.Metadata.BiosSet.Name)); if (string.IsNullOrEmpty(biosset.Description)) missingFields.Add(nameof(Data.Models.Metadata.BiosSet.Description)); break; case Rom rom: - if (string.IsNullOrEmpty(rom.GetName())) + if (string.IsNullOrEmpty(rom.Name)) missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); if (rom.ReadLong(Data.Models.Metadata.Rom.SizeKey) is null || rom.ReadLong(Data.Models.Metadata.Rom.SizeKey) < 0) missingFields.Add(Data.Models.Metadata.Rom.SizeKey); @@ -280,7 +280,7 @@ namespace SabreTools.Metadata.DatFiles.Formats break; case Disk disk: - if (string.IsNullOrEmpty(disk.GetName())) + if (string.IsNullOrEmpty(disk.Name)) missingFields.Add(nameof(Data.Models.Metadata.Disk.Name)); if (string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key)) && string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.SHA1Key))) @@ -291,17 +291,17 @@ namespace SabreTools.Metadata.DatFiles.Formats break; case DeviceRef deviceref: - if (string.IsNullOrEmpty(deviceref.GetName())) + if (string.IsNullOrEmpty(deviceref.Name)) missingFields.Add(nameof(Data.Models.Metadata.DeviceRef.Name)); break; case Sample sample: - if (string.IsNullOrEmpty(sample.GetName())) + if (string.IsNullOrEmpty(sample.Name)) missingFields.Add(nameof(Data.Models.Metadata.Sample.Name)); break; case Chip chip: - if (string.IsNullOrEmpty(chip.GetName())) + if (string.IsNullOrEmpty(chip.Name)) missingFields.Add(nameof(Data.Models.Metadata.Chip.Name)); if (chip.ChipType is null) missingFields.Add(nameof(Data.Models.Metadata.Chip.ChipType)); @@ -325,14 +325,14 @@ namespace SabreTools.Metadata.DatFiles.Formats break; case DipSwitch dipswitch: - if (string.IsNullOrEmpty(dipswitch.GetName())) + if (string.IsNullOrEmpty(dipswitch.Name)) missingFields.Add(nameof(Data.Models.Metadata.DipSwitch.Name)); if (string.IsNullOrEmpty(dipswitch.Tag)) missingFields.Add(nameof(Data.Models.Metadata.DipSwitch.Tag)); break; case Configuration configuration: - if (string.IsNullOrEmpty(configuration.GetName())) + if (string.IsNullOrEmpty(configuration.Name)) missingFields.Add(nameof(Data.Models.Metadata.Configuration.Name)); if (string.IsNullOrEmpty(configuration.Tag)) missingFields.Add(nameof(Data.Models.Metadata.Configuration.Tag)); @@ -344,7 +344,7 @@ namespace SabreTools.Metadata.DatFiles.Formats break; case Adjuster adjuster: - if (string.IsNullOrEmpty(adjuster.GetName())) + if (string.IsNullOrEmpty(adjuster.Name)) missingFields.Add(nameof(Data.Models.Metadata.Adjuster.Name)); break; @@ -370,21 +370,21 @@ namespace SabreTools.Metadata.DatFiles.Formats break; case Slot slot: - if (string.IsNullOrEmpty(slot.GetName())) + if (string.IsNullOrEmpty(slot.Name)) missingFields.Add(nameof(Data.Models.Metadata.Slot.Name)); break; case DatItems.Formats.SoftwareList softwarelist: if (string.IsNullOrEmpty(softwarelist.Tag)) missingFields.Add(nameof(Data.Models.Metadata.SoftwareList.Tag)); - if (string.IsNullOrEmpty(softwarelist.GetName())) + if (string.IsNullOrEmpty(softwarelist.Name)) missingFields.Add(nameof(Data.Models.Metadata.SoftwareList.Name)); if (softwarelist.Status == null) missingFields.Add(nameof(Data.Models.Metadata.SoftwareList.Status)); break; case RamOption ramoption: - if (string.IsNullOrEmpty(ramoption.GetName())) + if (string.IsNullOrEmpty(ramoption.Name)) missingFields.Add(nameof(Data.Models.Metadata.RamOption.Name)); break; diff --git a/SabreTools.Metadata.DatFiles/Formats/Logiqx.cs b/SabreTools.Metadata.DatFiles/Formats/Logiqx.cs index da05bc38..6175d740 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Logiqx.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Logiqx.cs @@ -266,21 +266,21 @@ namespace SabreTools.Metadata.DatFiles.Formats switch (datItem) { case Release release: - if (string.IsNullOrEmpty(release.GetName())) + if (string.IsNullOrEmpty(release.Name)) missingFields.Add(nameof(Data.Models.Metadata.Release.Name)); if (string.IsNullOrEmpty(release.ReadString(Data.Models.Metadata.Release.RegionKey))) missingFields.Add(Data.Models.Metadata.Release.RegionKey); break; case BiosSet biosset: - if (string.IsNullOrEmpty(biosset.GetName())) + if (string.IsNullOrEmpty(biosset.Name)) missingFields.Add(nameof(Data.Models.Metadata.BiosSet.Name)); if (string.IsNullOrEmpty(biosset.Description)) missingFields.Add(nameof(Data.Models.Metadata.BiosSet.Description)); break; case Rom rom: - if (string.IsNullOrEmpty(rom.GetName())) + if (string.IsNullOrEmpty(rom.Name)) missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); if (rom.ReadLong(Data.Models.Metadata.Rom.SizeKey) is null || rom.ReadLong(Data.Models.Metadata.Rom.SizeKey) < 0) missingFields.Add(Data.Models.Metadata.Rom.SizeKey); @@ -304,7 +304,7 @@ namespace SabreTools.Metadata.DatFiles.Formats break; case Disk disk: - if (string.IsNullOrEmpty(disk.GetName())) + if (string.IsNullOrEmpty(disk.Name)) missingFields.Add(nameof(Data.Models.Metadata.Disk.Name)); if (string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key)) && string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.SHA1Key))) @@ -315,7 +315,7 @@ namespace SabreTools.Metadata.DatFiles.Formats break; case Media media: - if (string.IsNullOrEmpty(media.GetName())) + if (string.IsNullOrEmpty(media.Name)) missingFields.Add(nameof(Data.Models.Metadata.Media.Name)); if (string.IsNullOrEmpty(media.ReadString(Data.Models.Metadata.Media.MD5Key)) && string.IsNullOrEmpty(media.ReadString(Data.Models.Metadata.Media.SHA1Key)) @@ -328,17 +328,17 @@ namespace SabreTools.Metadata.DatFiles.Formats break; case DeviceRef deviceref: - if (string.IsNullOrEmpty(deviceref.GetName())) + if (string.IsNullOrEmpty(deviceref.Name)) missingFields.Add(nameof(Data.Models.Metadata.DeviceRef.Name)); break; case Sample sample: - if (string.IsNullOrEmpty(sample.GetName())) + if (string.IsNullOrEmpty(sample.Name)) missingFields.Add(nameof(Data.Models.Metadata.Sample.Name)); break; case Archive archive: - if (string.IsNullOrEmpty(archive.GetName())) + if (string.IsNullOrEmpty(archive.Name)) missingFields.Add(nameof(Data.Models.Metadata.Archive.Name)); break; @@ -356,7 +356,7 @@ namespace SabreTools.Metadata.DatFiles.Formats case DatItems.Formats.SoftwareList softwarelist: if (string.IsNullOrEmpty(softwarelist.Tag)) missingFields.Add(nameof(Data.Models.Metadata.SoftwareList.Tag)); - if (string.IsNullOrEmpty(softwarelist.GetName())) + if (string.IsNullOrEmpty(softwarelist.Name)) missingFields.Add(nameof(Data.Models.Metadata.SoftwareList.Name)); if (softwarelist.Status == null) missingFields.Add(nameof(Data.Models.Metadata.SoftwareList.Status)); diff --git a/SabreTools.Metadata.DatFiles/Formats/Missfile.cs b/SabreTools.Metadata.DatFiles/Formats/Missfile.cs index c0b96d01..4e23cbdd 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Missfile.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Missfile.cs @@ -88,7 +88,7 @@ namespace SabreTools.Metadata.DatFiles.Formats WriteDatItem(sw, datItem, lastgame); // Set the new data to compare against - lastgame = datItem.GetMachine()!.GetName(); + lastgame = datItem.GetMachine()!.Name; } } @@ -149,7 +149,7 @@ namespace SabreTools.Metadata.DatFiles.Formats WriteDatItemDB(sw, datItem, lastgame); // Set the new data to compare against - lastgame = machine.Value!.GetName(); + lastgame = machine.Value!.Name; } } @@ -205,7 +205,7 @@ namespace SabreTools.Metadata.DatFiles.Formats // Romba mode automatically uses item name if (Modifiers.OutputDepot?.IsActive == true || Modifiers.UseRomName) sw.Write($"{datItem.GetName() ?? string.Empty}\n"); - else if (!Modifiers.UseRomName && machine!.GetName() != lastgame) + else if (!Modifiers.UseRomName && machine!.Name != lastgame) sw.Write($"{machine!.GetName() ?? string.Empty}\n"); sw.Flush(); diff --git a/SabreTools.Metadata.DatFiles/Formats/SabreJSON.cs b/SabreTools.Metadata.DatFiles/Formats/SabreJSON.cs index 44c37e51..261fbaae 100644 --- a/SabreTools.Metadata.DatFiles/Formats/SabreJSON.cs +++ b/SabreTools.Metadata.DatFiles/Formats/SabreJSON.cs @@ -458,11 +458,11 @@ namespace SabreTools.Metadata.DatFiles.Formats DatItem datItem = datItems[index]; // If we have a different game and we're not at the start of the list, output the end of last item - if (lastgame is not null && !string.Equals(lastgame, datItem.GetMachine()!.GetName(), StringComparison.OrdinalIgnoreCase)) + if (lastgame is not null && !string.Equals(lastgame, datItem.GetMachine()!.Name, StringComparison.OrdinalIgnoreCase)) WriteEndGame(jtw); // If we have a new game, output the beginning of the new item - if (lastgame is null || !string.Equals(lastgame, datItem.GetMachine()!.GetName(), StringComparison.OrdinalIgnoreCase)) + if (lastgame is null || !string.Equals(lastgame, datItem.GetMachine()!.Name, StringComparison.OrdinalIgnoreCase)) WriteStartGame(jtw, datItem); // Check for a "null" item @@ -473,7 +473,7 @@ namespace SabreTools.Metadata.DatFiles.Formats WriteDatItem(jtw, datItem); // Set the new data to compare against - lastgame = datItem.GetMachine()!.GetName(); + lastgame = datItem.GetMachine()!.Name; } } @@ -539,11 +539,11 @@ namespace SabreTools.Metadata.DatFiles.Formats var machine = GetMachineForItemDB(kvp.Key); // If we have a different game and we're not at the start of the list, output the end of last item - if (lastgame is not null && !string.Equals(lastgame, machine.Value!.GetName(), StringComparison.OrdinalIgnoreCase)) + if (lastgame is not null && !string.Equals(lastgame, machine.Value!.Name, StringComparison.OrdinalIgnoreCase)) WriteEndGame(jtw); // If we have a new game, output the beginning of the new item - if (lastgame is null || !string.Equals(lastgame, machine.Value!.GetName(), StringComparison.OrdinalIgnoreCase)) + if (lastgame is null || !string.Equals(lastgame, machine.Value!.Name, StringComparison.OrdinalIgnoreCase)) WriteStartGame(jtw, kvp.Value); // Check for a "null" item @@ -554,7 +554,7 @@ namespace SabreTools.Metadata.DatFiles.Formats WriteDatItemDB(jtw, datItem); // Set the new data to compare against - lastgame = machine.Value!.GetName(); + lastgame = machine.Value!.Name; } } @@ -601,8 +601,8 @@ namespace SabreTools.Metadata.DatFiles.Formats private static void WriteStartGame(JsonTextWriter jtw, DatItem datItem) { // No game should start with a path separator - if (!string.IsNullOrEmpty(datItem.GetMachine()!.GetName())) - datItem.GetMachine()!.SetName(datItem.GetMachine()!.GetName()!.TrimStart(Path.DirectorySeparatorChar)); + if (!string.IsNullOrEmpty(datItem.GetMachine()!.Name)) + datItem.GetMachine()!.SetName(datItem.GetMachine()!.Name!.TrimStart(Path.DirectorySeparatorChar)); // Build the state jtw.WriteStartObject(); diff --git a/SabreTools.Metadata.DatFiles/Formats/SabreXML.cs b/SabreTools.Metadata.DatFiles/Formats/SabreXML.cs index a34b5fea..f83f63db 100644 --- a/SabreTools.Metadata.DatFiles/Formats/SabreXML.cs +++ b/SabreTools.Metadata.DatFiles/Formats/SabreXML.cs @@ -282,11 +282,11 @@ namespace SabreTools.Metadata.DatFiles.Formats DatItem datItem = datItems[index]; // If we have a different game and we're not at the start of the list, output the end of last item - if (lastgame is not null && !string.Equals(lastgame, datItem.GetMachine()!.GetName(), StringComparison.OrdinalIgnoreCase)) + if (lastgame is not null && !string.Equals(lastgame, datItem.GetMachine()!.Name, StringComparison.OrdinalIgnoreCase)) WriteEndGame(xtw); // If we have a new game, output the beginning of the new item - if (lastgame is null || !string.Equals(lastgame, datItem.GetMachine()!.GetName(), StringComparison.OrdinalIgnoreCase)) + if (lastgame is null || !string.Equals(lastgame, datItem.GetMachine()!.Name, StringComparison.OrdinalIgnoreCase)) WriteStartGame(xtw, datItem); // Check for a "null" item @@ -297,7 +297,7 @@ namespace SabreTools.Metadata.DatFiles.Formats WriteDatItem(xtw, datItem); // Set the new data to compare against - lastgame = datItem.GetMachine()!.GetName(); + lastgame = datItem.GetMachine()!.Name; } } @@ -364,11 +364,11 @@ namespace SabreTools.Metadata.DatFiles.Formats var machine = GetMachineForItemDB(kvp.Key); // If we have a different game and we're not at the start of the list, output the end of last item - if (lastgame is not null && !string.Equals(lastgame, machine.Value!.GetName(), StringComparison.OrdinalIgnoreCase)) + if (lastgame is not null && !string.Equals(lastgame, machine.Value!.Name, StringComparison.OrdinalIgnoreCase)) WriteEndGame(xtw); // If we have a new game, output the beginning of the new item - if (lastgame is null || !string.Equals(lastgame, machine.Value!.GetName(), StringComparison.OrdinalIgnoreCase)) + if (lastgame is null || !string.Equals(lastgame, machine.Value!.Name, StringComparison.OrdinalIgnoreCase)) WriteStartGame(xtw, kvp.Value); // Check for a "null" item @@ -379,7 +379,7 @@ namespace SabreTools.Metadata.DatFiles.Formats WriteDatItemDB(xtw, datItem); // Set the new data to compare against - lastgame = machine.Value!.GetName(); + lastgame = machine.Value!.Name; } } @@ -429,7 +429,7 @@ namespace SabreTools.Metadata.DatFiles.Formats private static void WriteStartGame(XmlTextWriter xtw, DatItem datItem) { // No game should start with a path separator - datItem.GetMachine()!.SetName(datItem.GetMachine()!.GetName()?.TrimStart(Path.DirectorySeparatorChar) ?? string.Empty); + datItem.GetMachine()!.SetName(datItem.GetMachine()!.Name?.TrimStart(Path.DirectorySeparatorChar) ?? string.Empty); // Write the machine xtw.WriteStartElement("directory"); diff --git a/SabreTools.Metadata.DatFiles/Formats/SoftwareList.cs b/SabreTools.Metadata.DatFiles/Formats/SoftwareList.cs index b802cca5..0f474162 100644 --- a/SabreTools.Metadata.DatFiles/Formats/SoftwareList.cs +++ b/SabreTools.Metadata.DatFiles/Formats/SoftwareList.cs @@ -114,13 +114,13 @@ namespace SabreTools.Metadata.DatFiles.Formats } else { - if (string.IsNullOrEmpty(dipSwitch.Read(DipSwitch.PartKey)!.GetName())) + if (string.IsNullOrEmpty(dipSwitch.Read(DipSwitch.PartKey)!.Name)) missingFields.Add(nameof(Data.Models.Metadata.Part.Name)); if (string.IsNullOrEmpty(dipSwitch.Read(DipSwitch.PartKey)!.ReadString(Data.Models.Metadata.Part.InterfaceKey))) missingFields.Add(Data.Models.Metadata.Part.InterfaceKey); } - if (string.IsNullOrEmpty(dipSwitch.GetName())) + if (string.IsNullOrEmpty(dipSwitch.Name)) missingFields.Add(nameof(Data.Models.Metadata.DipSwitch.Name)); if (string.IsNullOrEmpty(dipSwitch.Tag)) missingFields.Add(nameof(Data.Models.Metadata.DipSwitch.Tag)); @@ -129,7 +129,7 @@ namespace SabreTools.Metadata.DatFiles.Formats if (dipSwitch.ValuesSpecified) { var dipValues = dipSwitch.Read(Data.Models.Metadata.DipSwitch.DipValueKey); - if (Array.Find(dipValues!, dv => string.IsNullOrEmpty(dv.GetName())) is not null) + if (Array.Find(dipValues!, dv => string.IsNullOrEmpty(dv.Name)) is not null) missingFields.Add(nameof(Data.Models.Metadata.DipValue.Name)); if (Array.Find(dipValues!, dv => string.IsNullOrEmpty(dv.Value)) is not null) missingFields.Add(nameof(Data.Models.Metadata.DipValue.Value)); @@ -145,7 +145,7 @@ namespace SabreTools.Metadata.DatFiles.Formats } else { - if (string.IsNullOrEmpty(disk.Read(Disk.PartKey)!.GetName())) + if (string.IsNullOrEmpty(disk.Read(Disk.PartKey)!.Name)) missingFields.Add(nameof(Data.Models.Metadata.Part.Name)); if (string.IsNullOrEmpty(disk.Read(Disk.PartKey)!.ReadString(Data.Models.Metadata.Part.InterfaceKey))) missingFields.Add(Data.Models.Metadata.Part.InterfaceKey); @@ -157,16 +157,16 @@ namespace SabreTools.Metadata.DatFiles.Formats } else { - if (string.IsNullOrEmpty(disk.Read(Disk.DiskAreaKey)!.GetName())) + if (string.IsNullOrEmpty(disk.Read(Disk.DiskAreaKey)!.Name)) missingFields.Add(nameof(Data.Models.Metadata.DiskArea.Name)); } - if (string.IsNullOrEmpty(disk.GetName())) + if (string.IsNullOrEmpty(disk.Name)) missingFields.Add(nameof(Data.Models.Metadata.Disk.Name)); break; case Info info: - if (string.IsNullOrEmpty(info.GetName())) + if (string.IsNullOrEmpty(info.Name)) missingFields.Add(nameof(Data.Models.Metadata.Info.Name)); break; @@ -178,7 +178,7 @@ namespace SabreTools.Metadata.DatFiles.Formats } else { - if (string.IsNullOrEmpty(rom.Read(Rom.PartKey)!.GetName())) + if (string.IsNullOrEmpty(rom.Read(Rom.PartKey)!.Name)) missingFields.Add(nameof(Data.Models.Metadata.Part.Name)); if (string.IsNullOrEmpty(rom.Read(Rom.PartKey)!.ReadString(Data.Models.Metadata.Part.InterfaceKey))) missingFields.Add(Data.Models.Metadata.Part.InterfaceKey); @@ -191,7 +191,7 @@ namespace SabreTools.Metadata.DatFiles.Formats } else { - if (string.IsNullOrEmpty(rom.Read(Rom.DataAreaKey)!.GetName())) + if (string.IsNullOrEmpty(rom.Read(Rom.DataAreaKey)!.Name)) missingFields.Add(nameof(Data.Models.Metadata.DataArea.Name)); if (rom.Read(Rom.DataAreaKey)!.ReadLong(Data.Models.Metadata.DataArea.SizeKey) is null) missingFields.Add(Data.Models.Metadata.DataArea.SizeKey); @@ -200,7 +200,7 @@ namespace SabreTools.Metadata.DatFiles.Formats break; case SharedFeat sharedFeat: - if (string.IsNullOrEmpty(sharedFeat.GetName())) + if (string.IsNullOrEmpty(sharedFeat.Name)) missingFields.Add(nameof(Data.Models.Metadata.SharedFeat.Name)); break; diff --git a/SabreTools.Metadata.DatFiles/ItemDictionary.cs b/SabreTools.Metadata.DatFiles/ItemDictionary.cs index 2f023446..2fe1068e 100644 --- a/SabreTools.Metadata.DatFiles/ItemDictionary.cs +++ b/SabreTools.Metadata.DatFiles/ItemDictionary.cs @@ -102,7 +102,7 @@ namespace SabreTools.Metadata.DatFiles && string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key)) && string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.SHA1Key))) { - _logger.Verbose($"Incomplete entry for '{disk.GetName()}' will be output as nodump"); + _logger.Verbose($"Incomplete entry for '{disk.Name}' will be output as nodump"); disk.Status = ItemStatus.Nodump; } @@ -129,7 +129,7 @@ namespace SabreTools.Metadata.DatFiles && string.IsNullOrEmpty(media.ReadString(Data.Models.Metadata.Media.SHA256Key)) && string.IsNullOrEmpty(media.ReadString(Data.Models.Metadata.Media.SpamSumKey))) { - _logger.Verbose($"Incomplete entry for '{media.GetName()}' will be output as nodump"); + _logger.Verbose($"Incomplete entry for '{media.Name}' will be output as nodump"); } item = media; @@ -142,7 +142,7 @@ namespace SabreTools.Metadata.DatFiles if (size is null && !string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.SHA1Key))) { // No-op, just catch it so it doesn't go further - //logger.Verbose($"{Header.GetStringFieldValue(DatHeader.FileNameKey)}: Entry with only SHA-1 found - '{rom.GetName()}'"); + //logger.Verbose($"{Header.GetStringFieldValue(DatHeader.FileNameKey)}: Entry with only SHA-1 found - '{rom.Name}'"); } // If we have a rom and it's missing size AND the hashes match a 0-byte file, fill in the rest of the info @@ -168,7 +168,7 @@ namespace SabreTools.Metadata.DatFiles // If the file has no size and it's not the above case, skip and log else if (rom.Status != ItemStatus.Nodump && (size == 0 || size is null)) { - //logger.Verbose($"{Header.GetStringFieldValue(DatHeader.FileNameKey)}: Incomplete entry for '{rom.GetName()}' will be output as nodump"); + //logger.Verbose($"{Header.GetStringFieldValue(DatHeader.FileNameKey)}: Incomplete entry for '{rom.Name}' will be output as nodump"); rom.Status = ItemStatus.Nodump; } @@ -177,7 +177,7 @@ namespace SabreTools.Metadata.DatFiles && size is not null && size > 0 && !rom.HasHashes()) { - //logger.Verbose($"{Header.GetStringFieldValue(DatHeader.FileNameKey)}: Incomplete entry for '{rom.GetName()}' will be output as nodump"); + //logger.Verbose($"{Header.GetStringFieldValue(DatHeader.FileNameKey)}: Incomplete entry for '{rom.Name}' will be output as nodump"); rom.Status = ItemStatus.Nodump; } @@ -438,9 +438,9 @@ namespace SabreTools.Metadata.DatFiles // Get the machines for comparison var selfMachine = self.GetMachine(); - string? selfMachineName = selfMachine?.GetName(); + string? selfMachineName = selfMachine?.Name; var lastMachine = last.GetMachine(); - string? lastMachineName = lastMachine?.GetName(); + string? lastMachineName = lastMachine?.Name; // If the duplicate is external already #if NET20 || NET35 @@ -558,8 +558,8 @@ namespace SabreTools.Metadata.DatFiles } // If the saved machine is a child of the current machine, use the current machine instead - if (savedMachine?.ReadString(Data.Models.Metadata.Machine.CloneOfKey) == itemMachine?.GetName() - || savedMachine?.ReadString(Data.Models.Metadata.Machine.RomOfKey) == itemMachine?.GetName()) + if (savedMachine?.ReadString(Data.Models.Metadata.Machine.CloneOfKey) == itemMachine?.Name + || savedMachine?.ReadString(Data.Models.Metadata.Machine.RomOfKey) == itemMachine?.Name) { savedItem.CopyMachineInformation(datItem); savedItem.SetName(datItem.GetName()); @@ -856,8 +856,8 @@ namespace SabreTools.Metadata.DatFiles Machine? yMachine = y.GetMachine(); // If machine names don't match - string? xMachineName = xMachine?.GetName(); - string? yMachineName = yMachine?.GetName(); + string? xMachineName = xMachine?.Name; + string? yMachineName = yMachine?.Name; if (xMachineName != yMachineName) return nc.Compare(xMachineName, yMachineName); diff --git a/SabreTools.Metadata.DatFiles/ItemDictionaryDB.cs b/SabreTools.Metadata.DatFiles/ItemDictionaryDB.cs index 83080589..199aac69 100644 --- a/SabreTools.Metadata.DatFiles/ItemDictionaryDB.cs +++ b/SabreTools.Metadata.DatFiles/ItemDictionaryDB.cs @@ -191,7 +191,7 @@ namespace SabreTools.Metadata.DatFiles && string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key)) && string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.SHA1Key))) { - _logger.Verbose($"Incomplete entry for '{disk.GetName()}' will be output as nodump"); + _logger.Verbose($"Incomplete entry for '{disk.Name}' will be output as nodump"); disk.Status = ItemStatus.Nodump; } @@ -218,7 +218,7 @@ namespace SabreTools.Metadata.DatFiles && string.IsNullOrEmpty(media.ReadString(Data.Models.Metadata.Media.SHA256Key)) && string.IsNullOrEmpty(media.ReadString(Data.Models.Metadata.Media.SpamSumKey))) { - _logger.Verbose($"Incomplete entry for '{media.GetName()}' will be output as nodump"); + _logger.Verbose($"Incomplete entry for '{media.Name}' will be output as nodump"); } item = media; @@ -231,7 +231,7 @@ namespace SabreTools.Metadata.DatFiles if (size is null && !string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.SHA1Key))) { // No-op, just catch it so it doesn't go further - //logger.Verbose($"{Header.GetStringFieldValue(DatHeader.FileNameKey)}: Entry with only SHA-1 found - '{rom.GetName()}'"); + //logger.Verbose($"{Header.GetStringFieldValue(DatHeader.FileNameKey)}: Entry with only SHA-1 found - '{rom.Name}'"); } // If we have a rom and it's missing size AND the hashes match a 0-byte file, fill in the rest of the info @@ -257,7 +257,7 @@ namespace SabreTools.Metadata.DatFiles // If the file has no size and it's not the above case, skip and log else if (rom.Status != ItemStatus.Nodump && (size == 0 || size is null)) { - //logger.Verbose($"{Header.GetStringFieldValue(DatHeader.FileNameKey)}: Incomplete entry for '{rom.GetName()}' will be output as nodump"); + //logger.Verbose($"{Header.GetStringFieldValue(DatHeader.FileNameKey)}: Incomplete entry for '{rom.Name}' will be output as nodump"); rom.Status = ItemStatus.Nodump; } @@ -266,7 +266,7 @@ namespace SabreTools.Metadata.DatFiles && size is not null && size > 0 && !rom.HasHashes()) { - //logger.Verbose($"{Header.GetStringFieldValue(DatHeader.FileNameKey)}: Incomplete entry for '{rom.GetName()}' will be output as nodump"); + //logger.Verbose($"{Header.GetStringFieldValue(DatHeader.FileNameKey)}: Incomplete entry for '{rom.Name}' will be output as nodump"); rom.Status = ItemStatus.Nodump; } @@ -412,7 +412,7 @@ namespace SabreTools.Metadata.DatFiles if (string.IsNullOrEmpty(name)) return new KeyValuePair(-1, null); - var machine = _machines.FirstOrDefault(m => m.Value.GetName() == name); + var machine = _machines.FirstOrDefault(m => m.Value.Name == name); return new KeyValuePair(machine.Key, machine.Value); } @@ -617,7 +617,7 @@ namespace SabreTools.Metadata.DatFiles if (string.IsNullOrEmpty(machineName)) return false; - var machine = _machines.FirstOrDefault(m => m.Value.GetName() == machineName); + var machine = _machines.FirstOrDefault(m => m.Value.Name == machineName); return RemoveMachine(machine.Key); } @@ -744,9 +744,9 @@ namespace SabreTools.Metadata.DatFiles // Get the machines for comparison var selfMachine = GetMachineForItem(selfItem.Value.Key).Value; - string? selfMachineName = selfMachine?.GetName(); + string? selfMachineName = selfMachine?.Name; var lastMachine = GetMachineForItem(lastItem.Value.Key).Value; - string? lastMachineName = lastMachine?.GetName(); + string? lastMachineName = lastMachine?.Name; // If the duplicate is external already #if NET20 || NET35 @@ -940,8 +940,8 @@ namespace SabreTools.Metadata.DatFiles } // If the saved machine is a child of the current machine, use the current machine instead - if (savedMachine.ReadString(Data.Models.Metadata.Machine.CloneOfKey) == itemMachine.GetName() - || savedMachine.ReadString(Data.Models.Metadata.Machine.RomOfKey) == itemMachine.GetName()) + if (savedMachine.ReadString(Data.Models.Metadata.Machine.CloneOfKey) == itemMachine.Name + || savedMachine.ReadString(Data.Models.Metadata.Machine.RomOfKey) == itemMachine.Name) { _machines[_itemToMachineMapping[savedIndex]] = (itemMachine.Clone() as Machine)!; savedItem.SetName(datItem.GetName()); @@ -1190,8 +1190,8 @@ namespace SabreTools.Metadata.DatFiles Machine? yMachine = _machines[_itemToMachineMapping[y.Key]]; // If machine names don't match - string? xMachineName = xMachine?.GetName(); - string? yMachineName = yMachine?.GetName(); + string? xMachineName = xMachine?.Name; + string? yMachineName = yMachine?.Name; if (xMachineName != yMachineName) return nc.Compare(xMachineName, yMachineName); diff --git a/SabreTools.Metadata.DatItems.Test/DatItemTests.cs b/SabreTools.Metadata.DatItems.Test/DatItemTests.cs index 6dfa3f3a..b8ef690b 100644 --- a/SabreTools.Metadata.DatItems.Test/DatItemTests.cs +++ b/SabreTools.Metadata.DatItems.Test/DatItemTests.cs @@ -64,7 +64,7 @@ namespace SabreTools.Metadata.DatItems.Test romA.CopyMachineInformation(romB); var actualMachineA = romA.GetMachine(); Assert.NotNull(actualMachineA); - Assert.Null(actualMachineA.GetName()); + Assert.Null(actualMachineA.Name); } [Fact] @@ -82,7 +82,7 @@ namespace SabreTools.Metadata.DatItems.Test romA.CopyMachineInformation(romB); var actualMachineA = romA.GetMachine(); Assert.NotNull(actualMachineA); - Assert.Equal("machineA", actualMachineA.GetName()); + Assert.Equal("machineA", actualMachineA.Name); } [Fact] @@ -102,7 +102,7 @@ namespace SabreTools.Metadata.DatItems.Test romA.CopyMachineInformation(romB); var actualMachineA = romA.GetMachine(); Assert.NotNull(actualMachineA); - Assert.Equal("machineA", actualMachineA.GetName()); + Assert.Equal("machineA", actualMachineA.Name); } [Fact] @@ -122,7 +122,7 @@ namespace SabreTools.Metadata.DatItems.Test romA.CopyMachineInformation(romB); var actualMachineA = romA.GetMachine(); Assert.NotNull(actualMachineA); - Assert.Null(actualMachineA.GetName()); + Assert.Null(actualMachineA.Name); } [Fact] @@ -143,7 +143,7 @@ namespace SabreTools.Metadata.DatItems.Test romA.CopyMachineInformation(romB); var actualMachineA = romA.GetMachine(); Assert.NotNull(actualMachineA); - Assert.Equal("machineB", actualMachineA.GetName()); + Assert.Equal("machineB", actualMachineA.Name); } [Fact] @@ -164,7 +164,7 @@ namespace SabreTools.Metadata.DatItems.Test romA.CopyMachineInformation(diskB); var actualMachineA = romA.GetMachine(); Assert.NotNull(actualMachineA); - Assert.Equal("machineB", actualMachineA.GetName()); + Assert.Equal("machineB", actualMachineA.Name); } #endregion diff --git a/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs b/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs index ba31f655..7ed00c8c 100644 --- a/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs +++ b/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs @@ -11,18 +11,18 @@ namespace SabreTools.Metadata.DatItems.Formats.Test public void ConvertToRomTest() { DiskArea diskArea = new DiskArea(); - diskArea.SetName("XXXXXX"); + diskArea.SetName("name"); Machine machine = new Machine(); - machine.SetName("XXXXXX"); + machine.SetName("name"); Part part = new Part(); - part.SetName("XXXXXX"); + part.SetName("name"); Source source = new Source(0, "XXXXXX"); Disk disk = new Disk(); - disk.SetName("XXXXXX"); + disk.SetName("name"); disk.Write(Disk.DiskAreaKey, diskArea); disk.Write(Data.Models.Metadata.Disk.MergeKey, "XXXXXX"); disk.Write(Data.Models.Metadata.Disk.RegionKey, "XXXXXX"); @@ -38,7 +38,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Rom actual = disk.ConvertToRom(); - Assert.Equal("XXXXXX.chd", actual.GetName()); + Assert.Equal("name.chd", actual.Name); Assert.Equal("XXXXXX", actual.ReadString(Data.Models.Metadata.Rom.MergeKey)); Assert.Equal("XXXXXX", actual.ReadString(Data.Models.Metadata.Rom.RegionKey)); Assert.Equal(Data.Models.Metadata.ItemStatus.Good, actual.Status); @@ -49,17 +49,17 @@ namespace SabreTools.Metadata.DatItems.Formats.Test DataArea? actualDataArea = actual.Read(Rom.DataAreaKey); Assert.NotNull(actualDataArea); - Assert.Equal("XXXXXX", actualDataArea.GetName()); + Assert.Equal("name", actualDataArea.Name); Machine? actualMachine = actual.GetMachine(); Assert.NotNull(actualMachine); - Assert.Equal("XXXXXX", actualMachine.GetName()); + Assert.Equal("name", actualMachine.Name); Assert.Equal(false, actual.ReadBool(DatItem.RemoveKey)); Part? actualPart = actual.Read(Rom.PartKey); Assert.NotNull(actualPart); - Assert.Equal("XXXXXX", actualPart.GetName()); + Assert.Equal("name", actualPart.Name); Source? actualSource = actual.Read(DatItem.SourceKey); Assert.NotNull(actualSource); diff --git a/SabreTools.Metadata.DatItems.Test/Formats/FileTests.cs b/SabreTools.Metadata.DatItems.Test/Formats/FileTests.cs index 70177d4f..667620c9 100644 --- a/SabreTools.Metadata.DatItems.Test/Formats/FileTests.cs +++ b/SabreTools.Metadata.DatItems.Test/Formats/FileTests.cs @@ -11,7 +11,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test public void ConvertToRomTest() { Machine machine = new Machine(); - machine.SetName("XXXXXX"); + machine.SetName("name"); Source source = new Source(0, "XXXXXX"); @@ -45,7 +45,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Machine? actualMachine = actual.GetMachine(); Assert.NotNull(actualMachine); - Assert.Equal("XXXXXX", actualMachine.GetName()); + Assert.Equal("name", actualMachine.GetName()); Assert.Equal(false, actual.ReadBool(DatItem.RemoveKey)); diff --git a/SabreTools.Metadata.DatItems.Test/Formats/MediaTests.cs b/SabreTools.Metadata.DatItems.Test/Formats/MediaTests.cs index 5cab2483..ab3494c4 100644 --- a/SabreTools.Metadata.DatItems.Test/Formats/MediaTests.cs +++ b/SabreTools.Metadata.DatItems.Test/Formats/MediaTests.cs @@ -11,12 +11,12 @@ namespace SabreTools.Metadata.DatItems.Formats.Test public void ConvertToRomTest() { Machine machine = new Machine(); - machine.SetName("XXXXXX"); + machine.SetName("name"); Source source = new Source(0, "XXXXXX"); Media media = new Media(); - media.SetName("XXXXXX"); + media.SetName("name"); media.Write(Data.Models.Metadata.Media.MD5Key, HashType.MD5.ZeroString); media.Write(Data.Models.Metadata.Media.SHA1Key, HashType.SHA1.ZeroString); media.Write(Data.Models.Metadata.Media.SHA256Key, HashType.SHA256.ZeroString); @@ -28,7 +28,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Rom actual = media.ConvertToRom(); - Assert.Equal("XXXXXX.aaruf", actual.GetName()); + Assert.Equal("name.aaruf", actual.Name); Assert.Equal(HashType.MD5.ZeroString, actual.ReadString(Data.Models.Metadata.Rom.MD5Key)); Assert.Equal(HashType.SHA1.ZeroString, actual.ReadString(Data.Models.Metadata.Rom.SHA1Key)); Assert.Equal(HashType.SHA256.ZeroString, actual.ReadString(Data.Models.Metadata.Rom.SHA256Key)); @@ -37,7 +37,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Machine? actualMachine = actual.GetMachine(); Assert.NotNull(actualMachine); - Assert.Equal("XXXXXX", actualMachine.GetName()); + Assert.Equal("name", actualMachine.Name); Assert.Equal(false, actual.ReadBool(DatItem.RemoveKey)); diff --git a/SabreTools.Metadata.DatItems.Test/MachineTests.cs b/SabreTools.Metadata.DatItems.Test/MachineTests.cs index c8922d83..ff2dd120 100644 --- a/SabreTools.Metadata.DatItems.Test/MachineTests.cs +++ b/SabreTools.Metadata.DatItems.Test/MachineTests.cs @@ -1,4 +1,3 @@ -using SabreTools.Data.Extensions; using Xunit; namespace SabreTools.Metadata.DatItems.Test @@ -16,7 +15,7 @@ namespace SabreTools.Metadata.DatItems.Test object clone = item.Clone(); Machine? actual = clone as Machine; Assert.NotNull(actual); - Assert.Equal("name", actual.GetName()); + Assert.Equal("name", actual.Name); } #endregion @@ -30,7 +29,7 @@ namespace SabreTools.Metadata.DatItems.Test item.SetName("name"); Data.Models.Metadata.Machine actual = item.GetInternalClone(); - Assert.Equal("name", actual.GetName()); + Assert.Equal("name", actual.Name); } #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/Adjuster.cs b/SabreTools.Metadata.DatItems/Formats/Adjuster.cs index fd951b5d..c602e6df 100644 --- a/SabreTools.Metadata.DatItems/Formats/Adjuster.cs +++ b/SabreTools.Metadata.DatItems/Formats/Adjuster.cs @@ -22,13 +22,18 @@ namespace SabreTools.Metadata.DatItems.Formats } } - [JsonIgnore] public bool? Default { get => (_internal as Data.Models.Metadata.Adjuster)?.Default; set => (_internal as Data.Models.Metadata.Adjuster)?.Default = value; } + public string? Name + { + get => (_internal as Data.Models.Metadata.Adjuster)?.Name; + set => (_internal as Data.Models.Metadata.Adjuster)?.Name = value; + } + #endregion #region Constructors diff --git a/SabreTools.Metadata.DatItems/Formats/Archive.cs b/SabreTools.Metadata.DatItems/Formats/Archive.cs index d227eb50..4c70993c 100644 --- a/SabreTools.Metadata.DatItems/Formats/Archive.cs +++ b/SabreTools.Metadata.DatItems/Formats/Archive.cs @@ -10,6 +10,16 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("archive"), XmlRoot("archive")] public sealed class Archive : DatItem { + #region Fields + + public string? Name + { + get => (_internal as Data.Models.Metadata.Archive)?.Name; + set => (_internal as Data.Models.Metadata.Archive)?.Name = value; + } + + #endregion + #region Constructors public Archive() : base() { } diff --git a/SabreTools.Metadata.DatItems/Formats/BiosSet.cs b/SabreTools.Metadata.DatItems/Formats/BiosSet.cs index 03ed4598..0567e8f8 100644 --- a/SabreTools.Metadata.DatItems/Formats/BiosSet.cs +++ b/SabreTools.Metadata.DatItems/Formats/BiosSet.cs @@ -24,6 +24,12 @@ namespace SabreTools.Metadata.DatItems.Formats set => (_internal as Data.Models.Metadata.BiosSet)?.Description = value; } + public string? Name + { + get => (_internal as Data.Models.Metadata.BiosSet)?.Name; + set => (_internal as Data.Models.Metadata.BiosSet)?.Name = value; + } + #endregion #region Constructors diff --git a/SabreTools.Metadata.DatItems/Formats/Chip.cs b/SabreTools.Metadata.DatItems/Formats/Chip.cs index 4e393f14..ea5f1d0d 100644 --- a/SabreTools.Metadata.DatItems/Formats/Chip.cs +++ b/SabreTools.Metadata.DatItems/Formats/Chip.cs @@ -18,6 +18,12 @@ namespace SabreTools.Metadata.DatItems.Formats set => (_internal as Data.Models.Metadata.Chip)?.ChipType = value; } + public string? Name + { + get => (_internal as Data.Models.Metadata.Chip)?.Name; + set => (_internal as Data.Models.Metadata.Chip)?.Name = value; + } + public bool? SoundOnly { get => (_internal as Data.Models.Metadata.Chip)?.SoundOnly; diff --git a/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs b/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs index 372639a5..91862a84 100644 --- a/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs +++ b/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs @@ -12,6 +12,12 @@ namespace SabreTools.Metadata.DatItems.Formats { #region Fields + public string? Name + { + get => (_internal as Data.Models.Metadata.ConfLocation)?.Name; + set => (_internal as Data.Models.Metadata.ConfLocation)?.Name = value; + } + public bool? Inverted { get => (_internal as Data.Models.Metadata.ConfLocation)?.Inverted; diff --git a/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs b/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs index 6b8500eb..db6b7d28 100644 --- a/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs +++ b/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs @@ -28,6 +28,12 @@ namespace SabreTools.Metadata.DatItems.Formats set => (_internal as Data.Models.Metadata.ConfSetting)?.Default = value; } + public string? Name + { + get => (_internal as Data.Models.Metadata.ConfSetting)?.Name; + set => (_internal as Data.Models.Metadata.ConfSetting)?.Name = value; + } + public string? Value { get => (_internal as Data.Models.Metadata.ConfSetting)?.Value; diff --git a/SabreTools.Metadata.DatItems/Formats/Configuration.cs b/SabreTools.Metadata.DatItems/Formats/Configuration.cs index fed13901..7c2cdd23 100644 --- a/SabreTools.Metadata.DatItems/Formats/Configuration.cs +++ b/SabreTools.Metadata.DatItems/Formats/Configuration.cs @@ -39,6 +39,12 @@ namespace SabreTools.Metadata.DatItems.Formats set => (_internal as Data.Models.Metadata.Configuration)?.Mask = value; } + public string? Name + { + get => (_internal as Data.Models.Metadata.Configuration)?.Name; + set => (_internal as Data.Models.Metadata.Configuration)?.Name = value; + } + [JsonIgnore] public bool SettingsSpecified { diff --git a/SabreTools.Metadata.DatItems/Formats/DataArea.cs b/SabreTools.Metadata.DatItems/Formats/DataArea.cs index ef25cc90..ff09945b 100644 --- a/SabreTools.Metadata.DatItems/Formats/DataArea.cs +++ b/SabreTools.Metadata.DatItems/Formats/DataArea.cs @@ -19,6 +19,12 @@ namespace SabreTools.Metadata.DatItems.Formats set => (_internal as Data.Models.Metadata.DataArea)?.Endianness = value; } + public string? Name + { + get => (_internal as Data.Models.Metadata.DataArea)?.Name; + set => (_internal as Data.Models.Metadata.DataArea)?.Name = value; + } + #endregion #region Constructors diff --git a/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs b/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs index c74dedcb..b0dc6ace 100644 --- a/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs +++ b/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs @@ -10,6 +10,16 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("device_ref"), XmlRoot("device_ref")] public sealed class DeviceRef : DatItem { + #region Fields + + public string? Name + { + get => (_internal as Data.Models.Metadata.DeviceRef)?.Name; + set => (_internal as Data.Models.Metadata.DeviceRef)?.Name = value; + } + + #endregion + #region Constructors public DeviceRef() : base() { } diff --git a/SabreTools.Metadata.DatItems/Formats/DipLocation.cs b/SabreTools.Metadata.DatItems/Formats/DipLocation.cs index de5d8b25..5b044e93 100644 --- a/SabreTools.Metadata.DatItems/Formats/DipLocation.cs +++ b/SabreTools.Metadata.DatItems/Formats/DipLocation.cs @@ -18,6 +18,12 @@ namespace SabreTools.Metadata.DatItems.Formats set => (_internal as Data.Models.Metadata.DipLocation)?.Inverted = value; } + public string? Name + { + get => (_internal as Data.Models.Metadata.DipLocation)?.Name; + set => (_internal as Data.Models.Metadata.DipLocation)?.Name = value; + } + #endregion #region Constructors diff --git a/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs b/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs index 82158346..2f7c6592 100644 --- a/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs +++ b/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs @@ -55,6 +55,12 @@ namespace SabreTools.Metadata.DatItems.Formats set => (_internal as Data.Models.Metadata.DipSwitch)?.Mask = value; } + public string? Name + { + get => (_internal as Data.Models.Metadata.DipSwitch)?.Name; + set => (_internal as Data.Models.Metadata.DipSwitch)?.Name = value; + } + [JsonIgnore] public bool ValuesSpecified { @@ -72,7 +78,7 @@ namespace SabreTools.Metadata.DatItems.Formats { var part = Read(PartKey); return part is not null - && (!string.IsNullOrEmpty(part.GetName()) + && (!string.IsNullOrEmpty(part.Name) || !string.IsNullOrEmpty(part.ReadString(Data.Models.Metadata.Part.InterfaceKey))); } } diff --git a/SabreTools.Metadata.DatItems/Formats/DipValue.cs b/SabreTools.Metadata.DatItems/Formats/DipValue.cs index e227a8d5..e207ed2e 100644 --- a/SabreTools.Metadata.DatItems/Formats/DipValue.cs +++ b/SabreTools.Metadata.DatItems/Formats/DipValue.cs @@ -28,6 +28,12 @@ namespace SabreTools.Metadata.DatItems.Formats set => (_internal as Data.Models.Metadata.DipValue)?.Default = value; } + public string? Name + { + get => (_internal as Data.Models.Metadata.DipValue)?.Name; + set => (_internal as Data.Models.Metadata.DipValue)?.Name = value; + } + public string? Value { get => (_internal as Data.Models.Metadata.DipValue)?.Value; diff --git a/SabreTools.Metadata.DatItems/Formats/Disk.cs b/SabreTools.Metadata.DatItems/Formats/Disk.cs index 7a2e3d81..a3640308 100644 --- a/SabreTools.Metadata.DatItems/Formats/Disk.cs +++ b/SabreTools.Metadata.DatItems/Formats/Disk.cs @@ -34,10 +34,16 @@ namespace SabreTools.Metadata.DatItems.Formats get { var diskArea = Read(DiskAreaKey); - return diskArea is not null && !string.IsNullOrEmpty(diskArea.GetName()); + return diskArea is not null && !string.IsNullOrEmpty(diskArea.Name); } } + public string? Name + { + get => (_internal as Data.Models.Metadata.Disk)?.Name; + set => (_internal as Data.Models.Metadata.Disk)?.Name = value; + } + public bool? Optional { get => (_internal as Data.Models.Metadata.Disk)?.Optional; @@ -51,7 +57,7 @@ namespace SabreTools.Metadata.DatItems.Formats { var part = Read(PartKey); return part is not null - && (!string.IsNullOrEmpty(part.GetName()) + && (!string.IsNullOrEmpty(part.Name) || !string.IsNullOrEmpty(part.ReadString(Data.Models.Metadata.Part.InterfaceKey))); } } @@ -119,7 +125,7 @@ namespace SabreTools.Metadata.DatItems.Formats { var dataArea = new DataArea(); - string? diskAreaName = diskArea.GetName(); + string? diskAreaName = diskArea.Name; dataArea.SetName(diskAreaName); rom.Write(Rom.DataAreaKey, dataArea); diff --git a/SabreTools.Metadata.DatItems/Formats/DiskArea.cs b/SabreTools.Metadata.DatItems/Formats/DiskArea.cs index 3bda040b..326e9ca4 100644 --- a/SabreTools.Metadata.DatItems/Formats/DiskArea.cs +++ b/SabreTools.Metadata.DatItems/Formats/DiskArea.cs @@ -11,6 +11,16 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("diskarea"), XmlRoot("diskarea")] public sealed class DiskArea : DatItem { + #region Fields + + public string? Name + { + get => (_internal as Data.Models.Metadata.DiskArea)?.Name; + set => (_internal as Data.Models.Metadata.DiskArea)?.Name = value; + } + + #endregion + #region Constructors public DiskArea() : base() { } diff --git a/SabreTools.Metadata.DatItems/Formats/Extension.cs b/SabreTools.Metadata.DatItems/Formats/Extension.cs index cd1a3c51..47232544 100644 --- a/SabreTools.Metadata.DatItems/Formats/Extension.cs +++ b/SabreTools.Metadata.DatItems/Formats/Extension.cs @@ -10,6 +10,16 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("extension"), XmlRoot("extension")] public sealed class Extension : DatItem { + #region Fields + + public string? Name + { + get => (_internal as Data.Models.Metadata.Extension)?.Name; + set => (_internal as Data.Models.Metadata.Extension)?.Name = value; + } + + #endregion + #region Constructors public Extension() : base() { } diff --git a/SabreTools.Metadata.DatItems/Formats/Feature.cs b/SabreTools.Metadata.DatItems/Formats/Feature.cs index c75b953e..e85d8a24 100644 --- a/SabreTools.Metadata.DatItems/Formats/Feature.cs +++ b/SabreTools.Metadata.DatItems/Formats/Feature.cs @@ -18,6 +18,12 @@ namespace SabreTools.Metadata.DatItems.Formats set => (_internal as Data.Models.Metadata.Feature)?.FeatureType = value; } + public string? Name + { + get => (_internal as Data.Models.Metadata.Feature)?.Name; + set => (_internal as Data.Models.Metadata.Feature)?.Name = value; + } + public Data.Models.Metadata.FeatureStatus? Overall { get => (_internal as Data.Models.Metadata.Feature)?.Overall; diff --git a/SabreTools.Metadata.DatItems/Formats/Info.cs b/SabreTools.Metadata.DatItems/Formats/Info.cs index 8952d251..df8bd583 100644 --- a/SabreTools.Metadata.DatItems/Formats/Info.cs +++ b/SabreTools.Metadata.DatItems/Formats/Info.cs @@ -12,6 +12,12 @@ namespace SabreTools.Metadata.DatItems.Formats { #region Fields + public string? Name + { + get => (_internal as Data.Models.Metadata.Info)?.Name; + set => (_internal as Data.Models.Metadata.Info)?.Name = value; + } + public string? Value { get => (_internal as Data.Models.Metadata.Info)?.Value; diff --git a/SabreTools.Metadata.DatItems/Formats/Instance.cs b/SabreTools.Metadata.DatItems/Formats/Instance.cs index b50addd5..ce7d382a 100644 --- a/SabreTools.Metadata.DatItems/Formats/Instance.cs +++ b/SabreTools.Metadata.DatItems/Formats/Instance.cs @@ -10,6 +10,16 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("instance"), XmlRoot("instance")] public sealed class Instance : DatItem { + #region Fields + + public string? Name + { + get => (_internal as Data.Models.Metadata.Instance)?.Name; + set => (_internal as Data.Models.Metadata.Instance)?.Name = value; + } + + #endregion + #region Constructors public Instance() : base() { } diff --git a/SabreTools.Metadata.DatItems/Formats/Media.cs b/SabreTools.Metadata.DatItems/Formats/Media.cs index 8448773a..d45ac675 100644 --- a/SabreTools.Metadata.DatItems/Formats/Media.cs +++ b/SabreTools.Metadata.DatItems/Formats/Media.cs @@ -11,6 +11,16 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("media"), XmlRoot("media")] public sealed class Media : DatItem { + #region Fields + + public string? Name + { + get => (_internal as Data.Models.Metadata.Media)?.Name; + set => (_internal as Data.Models.Metadata.Media)?.Name = value; + } + + #endregion + #region Constructors public Media() : base() diff --git a/SabreTools.Metadata.DatItems/Formats/Part.cs b/SabreTools.Metadata.DatItems/Formats/Part.cs index 1ac80150..1aed4ec8 100644 --- a/SabreTools.Metadata.DatItems/Formats/Part.cs +++ b/SabreTools.Metadata.DatItems/Formats/Part.cs @@ -23,6 +23,12 @@ namespace SabreTools.Metadata.DatItems.Formats } } + public string? Name + { + get => (_internal as Data.Models.Metadata.Part)?.Name; + set => (_internal as Data.Models.Metadata.Part)?.Name = value; + } + #endregion #region Constructors diff --git a/SabreTools.Metadata.DatItems/Formats/PartFeature.cs b/SabreTools.Metadata.DatItems/Formats/PartFeature.cs index f46cdf3f..b51dd85c 100644 --- a/SabreTools.Metadata.DatItems/Formats/PartFeature.cs +++ b/SabreTools.Metadata.DatItems/Formats/PartFeature.cs @@ -27,6 +27,16 @@ namespace SabreTools.Metadata.DatItems.Formats set => (_internal as Data.Models.Metadata.Feature)?.FeatureType = value; } + /// /> + /// This needs to be set to PartFeature because internally it uses Feature + public override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.PartFeature; + + public string? Name + { + get => (_internal as Data.Models.Metadata.Feature)?.Name; + set => (_internal as Data.Models.Metadata.Feature)?.Name = value; + } + public Data.Models.Metadata.FeatureStatus? Overall { get => (_internal as Data.Models.Metadata.Feature)?.Overall; @@ -39,10 +49,6 @@ namespace SabreTools.Metadata.DatItems.Formats set => (_internal as Data.Models.Metadata.Feature)?.Status = value; } - /// /> - /// This needs to be set to PartFeature because internally it uses Feature - public override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.PartFeature; - public string? Value { get => (_internal as Data.Models.Metadata.Feature)?.Value; diff --git a/SabreTools.Metadata.DatItems/Formats/RamOption.cs b/SabreTools.Metadata.DatItems/Formats/RamOption.cs index e2c545e3..d39d3aff 100644 --- a/SabreTools.Metadata.DatItems/Formats/RamOption.cs +++ b/SabreTools.Metadata.DatItems/Formats/RamOption.cs @@ -12,13 +12,18 @@ namespace SabreTools.Metadata.DatItems.Formats { #region Properties - [JsonIgnore] public bool? Default { get => (_internal as Data.Models.Metadata.RamOption)?.Default; set => (_internal as Data.Models.Metadata.RamOption)?.Default = value; } + public string? Name + { + get => (_internal as Data.Models.Metadata.RamOption)?.Name; + set => (_internal as Data.Models.Metadata.RamOption)?.Name = value; + } + #endregion #region Constructors diff --git a/SabreTools.Metadata.DatItems/Formats/Release.cs b/SabreTools.Metadata.DatItems/Formats/Release.cs index 6a786ec2..738fcc72 100644 --- a/SabreTools.Metadata.DatItems/Formats/Release.cs +++ b/SabreTools.Metadata.DatItems/Formats/Release.cs @@ -12,13 +12,18 @@ namespace SabreTools.Metadata.DatItems.Formats { #region Properties - [JsonIgnore] public bool? Default { get => (_internal as Data.Models.Metadata.Release)?.Default; set => (_internal as Data.Models.Metadata.Release)?.Default = value; } + public string? Name + { + get => (_internal as Data.Models.Metadata.Release)?.Name; + set => (_internal as Data.Models.Metadata.Release)?.Name = value; + } + #endregion #region Constructors diff --git a/SabreTools.Metadata.DatItems/Formats/Rom.cs b/SabreTools.Metadata.DatItems/Formats/Rom.cs index f677d6c5..fbbd8040 100644 --- a/SabreTools.Metadata.DatItems/Formats/Rom.cs +++ b/SabreTools.Metadata.DatItems/Formats/Rom.cs @@ -35,7 +35,7 @@ namespace SabreTools.Metadata.DatItems.Formats { var dataArea = Read(DataAreaKey); return dataArea is not null - && (!string.IsNullOrEmpty(dataArea.GetName()) + && (!string.IsNullOrEmpty(dataArea.Name) || dataArea.ReadLong(Data.Models.Metadata.DataArea.SizeKey) is not null || dataArea.ReadLong(Data.Models.Metadata.DataArea.WidthKey) is not null || dataArea.Endianness is not null); @@ -72,6 +72,12 @@ namespace SabreTools.Metadata.DatItems.Formats set => (_internal as Data.Models.Metadata.Rom)?.MIA = value; } + public string? Name + { + get => (_internal as Data.Models.Metadata.Rom)?.Name; + set => (_internal as Data.Models.Metadata.Rom)?.Name = value; + } + public OpenMSXSubType? OpenMSXMediaType { get => (_internal as Data.Models.Metadata.Rom)?.OpenMSXMediaType; @@ -101,7 +107,7 @@ namespace SabreTools.Metadata.DatItems.Formats { var part = Read(PartKey); return part is not null - && (!string.IsNullOrEmpty(part.GetName()) + && (!string.IsNullOrEmpty(part.Name) || !string.IsNullOrEmpty(part.ReadString(Data.Models.Metadata.Part.InterfaceKey))); } } @@ -160,7 +166,7 @@ namespace SabreTools.Metadata.DatItems.Formats if (rom is null) return; - string name = $"{machine.GetName()}_{index++}{(!string.IsNullOrEmpty(rom!.ReadString(Data.Models.Metadata.Rom.RemarkKey)) ? $" {rom.ReadString(Data.Models.Metadata.Rom.RemarkKey)}" : string.Empty)}"; + string name = $"{machine.Name}_{index++}{(!string.IsNullOrEmpty(rom!.ReadString(Data.Models.Metadata.Rom.RemarkKey)) ? $" {rom.ReadString(Data.Models.Metadata.Rom.RemarkKey)}" : string.Empty)}"; SetName(name); Write(Data.Models.Metadata.Rom.OffsetKey, rom.ReadString(Data.Models.Metadata.Rom.StartKey)); diff --git a/SabreTools.Metadata.DatItems/Formats/Sample.cs b/SabreTools.Metadata.DatItems/Formats/Sample.cs index 06454412..1aadb4eb 100644 --- a/SabreTools.Metadata.DatItems/Formats/Sample.cs +++ b/SabreTools.Metadata.DatItems/Formats/Sample.cs @@ -10,6 +10,16 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("sample"), XmlRoot("sample")] public class Sample : DatItem { + #region Fields + + public string? Name + { + get => (_internal as Data.Models.Metadata.Sample)?.Name; + set => (_internal as Data.Models.Metadata.Sample)?.Name = value; + } + + #endregion + #region Constructors public Sample() : base() { } diff --git a/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs b/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs index 36a21d85..ab7379c0 100644 --- a/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs +++ b/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs @@ -12,6 +12,12 @@ namespace SabreTools.Metadata.DatItems.Formats { #region Fields + public string? Name + { + get => (_internal as Data.Models.Metadata.SharedFeat)?.Name; + set => (_internal as Data.Models.Metadata.SharedFeat)?.Name = value; + } + public string? Value { get => (_internal as Data.Models.Metadata.SharedFeat)?.Value; diff --git a/SabreTools.Metadata.DatItems/Formats/Slot.cs b/SabreTools.Metadata.DatItems/Formats/Slot.cs index 06f97768..48c5b1f3 100644 --- a/SabreTools.Metadata.DatItems/Formats/Slot.cs +++ b/SabreTools.Metadata.DatItems/Formats/Slot.cs @@ -13,6 +13,12 @@ namespace SabreTools.Metadata.DatItems.Formats { #region Fields + public string? Name + { + get => (_internal as Data.Models.Metadata.Slot)?.Name; + set => (_internal as Data.Models.Metadata.Slot)?.Name = value; + } + [JsonIgnore] public bool SlotOptionsSpecified { diff --git a/SabreTools.Metadata.DatItems/Formats/SlotOption.cs b/SabreTools.Metadata.DatItems/Formats/SlotOption.cs index 375c53d4..10e8b7e6 100644 --- a/SabreTools.Metadata.DatItems/Formats/SlotOption.cs +++ b/SabreTools.Metadata.DatItems/Formats/SlotOption.cs @@ -12,13 +12,18 @@ namespace SabreTools.Metadata.DatItems.Formats { #region Properties - [JsonIgnore] public bool? Default { get => (_internal as Data.Models.Metadata.SlotOption)?.Default; set => (_internal as Data.Models.Metadata.SlotOption)?.Default = value; } + public string? Name + { + get => (_internal as Data.Models.Metadata.SlotOption)?.Name; + set => (_internal as Data.Models.Metadata.SlotOption)?.Name = value; + } + #endregion #region Constructors diff --git a/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs b/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs index dacf6d6d..c4951e5c 100644 --- a/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs +++ b/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs @@ -18,6 +18,12 @@ namespace SabreTools.Metadata.DatItems.Formats set => (_internal as Data.Models.Metadata.SoftwareList)?.Description = value; } + public string? Name + { + get => (_internal as Data.Models.Metadata.SoftwareList)?.Name; + set => (_internal as Data.Models.Metadata.SoftwareList)?.Name = value; + } + public Data.Models.Metadata.SoftwareListStatus? Status { get => (_internal as Data.Models.Metadata.SoftwareList)?.Status; diff --git a/SabreTools.Metadata.DatItems/Machine.cs b/SabreTools.Metadata.DatItems/Machine.cs index d4769003..abe80866 100644 --- a/SabreTools.Metadata.DatItems/Machine.cs +++ b/SabreTools.Metadata.DatItems/Machine.cs @@ -39,6 +39,12 @@ namespace SabreTools.Metadata.DatItems set => _internal.IsMechanical = value; } + public string? Name + { + get => _internal.Name; + set => _internal.Name = value; + } + public Data.Models.Metadata.Runnable? Runnable { get => _internal.Runnable; @@ -117,13 +123,13 @@ namespace SabreTools.Metadata.DatItems /// Gets the name to use for a Machine /// /// Name if available, null otherwise - public string? GetName() => _internal.GetName(); + public string? GetName() => Name; /// /// Sets the name to use for a Machine /// /// Name to set for the item - public void SetName(string? name) => _internal.SetName(name); + public void SetName(string? name) => Name = name; #endregion diff --git a/SabreTools.Metadata.Filter.Test/FilterObjectTests.cs b/SabreTools.Metadata.Filter.Test/FilterObjectTests.cs index 280b59eb..b96571ae 100644 --- a/SabreTools.Metadata.Filter.Test/FilterObjectTests.cs +++ b/SabreTools.Metadata.Filter.Test/FilterObjectTests.cs @@ -121,8 +121,8 @@ namespace SabreTools.Metadata.Filter.Test [Fact] public void MatchesEqual_RegexValue() { - var sample = new Sample { Name = "XXXXXX" }; - FilterObject filterObject = new FilterObject("Sample.Name", "^XXXXXX$", Operation.Equals); + var sample = new Sample { Name = "name" }; + FilterObject filterObject = new FilterObject("Sample.Name", "^name$", Operation.Equals); bool actual = filterObject.Matches(sample); Assert.True(actual); } @@ -130,8 +130,8 @@ namespace SabreTools.Metadata.Filter.Test [Fact] public void MatchesEqual_StringValue() { - var sample = new Sample { Name = "XXXXXX" }; - FilterObject filterObject = new FilterObject("Sample.Name", "XXXXXX", Operation.Equals); + var sample = new Sample { Name = "name" }; + FilterObject filterObject = new FilterObject("Sample.Name", "name", Operation.Equals); bool actual = filterObject.Matches(sample); Assert.True(actual); } @@ -188,8 +188,8 @@ namespace SabreTools.Metadata.Filter.Test [Fact] public void MatchesNotEqual_RegexValue() { - var sample = new Sample { Name = "XXXXXX" }; - FilterObject filterObject = new FilterObject("Sample.Name", "^XXXXXX$", Operation.NotEquals); + var sample = new Sample { Name = "name" }; + FilterObject filterObject = new FilterObject("Sample.Name", "^name$", Operation.NotEquals); bool actual = filterObject.Matches(sample); Assert.False(actual); } @@ -197,8 +197,8 @@ namespace SabreTools.Metadata.Filter.Test [Fact] public void MatchesNotEqual_StringValue() { - var sample = new Sample { Name = "XXXXXX" }; - FilterObject filterObject = new FilterObject("Sample.Name", "XXXXXX", Operation.NotEquals); + var sample = new Sample { Name = "name" }; + FilterObject filterObject = new FilterObject("Sample.Name", "name", Operation.NotEquals); bool actual = filterObject.Matches(sample); Assert.False(actual); } @@ -255,7 +255,7 @@ namespace SabreTools.Metadata.Filter.Test [Fact] public void MatchesGreaterThan_RegexValue() { - var sample = new Sample { Name = "XXXXXX" }; + var sample = new Sample { Name = "name" }; FilterObject filterObject = new FilterObject("Sample.Name", "^XXXXXX$", Operation.GreaterThan); bool actual = filterObject.Matches(sample); Assert.False(actual); @@ -264,7 +264,7 @@ namespace SabreTools.Metadata.Filter.Test [Fact] public void MatchesGreaterThan_StringValue() { - var sample = new Sample { Name = "XXXXXX" }; + var sample = new Sample { Name = "name" }; FilterObject filterObject = new FilterObject("Sample.Name", "XXXXXX", Operation.GreaterThan); bool actual = filterObject.Matches(sample); Assert.False(actual); @@ -322,7 +322,7 @@ namespace SabreTools.Metadata.Filter.Test [Fact] public void MatchesGreaterThanOrEqual_RegexValue() { - var sample = new Sample { Name = "XXXXXX" }; + var sample = new Sample { Name = "name" }; FilterObject filterObject = new FilterObject("Sample.Name", "^XXXXXX$", Operation.GreaterThanOrEqual); bool actual = filterObject.Matches(sample); Assert.False(actual); @@ -331,7 +331,7 @@ namespace SabreTools.Metadata.Filter.Test [Fact] public void MatchesGreaterThanOrEqual_StringValue() { - var sample = new Sample { Name = "XXXXXX" }; + var sample = new Sample { Name = "name" }; FilterObject filterObject = new FilterObject("Sample.Name", "XXXXXX", Operation.GreaterThanOrEqual); bool actual = filterObject.Matches(sample); Assert.False(actual); @@ -389,7 +389,7 @@ namespace SabreTools.Metadata.Filter.Test [Fact] public void MatchesLessThan_RegexValue() { - var sample = new Sample { Name = "XXXXXX" }; + var sample = new Sample { Name = "name" }; FilterObject filterObject = new FilterObject("Sample.Name", "^XXXXXX$", Operation.LessThan); bool actual = filterObject.Matches(sample); Assert.False(actual); @@ -398,7 +398,7 @@ namespace SabreTools.Metadata.Filter.Test [Fact] public void MatchesLessThan_StringValue() { - var sample = new Sample { Name = "XXXXXX" }; + var sample = new Sample { Name = "name" }; FilterObject filterObject = new FilterObject("Sample.Name", "XXXXXX", Operation.LessThan); bool actual = filterObject.Matches(sample); Assert.False(actual); @@ -456,7 +456,7 @@ namespace SabreTools.Metadata.Filter.Test [Fact] public void MatchesLessThanOrEqual_RegexValue() { - var sample = new Sample { Name = "XXXXXX" }; + var sample = new Sample { Name = "name" }; FilterObject filterObject = new FilterObject("Sample.Name", "^XXXXXX$", Operation.LessThanOrEqual); bool actual = filterObject.Matches(sample); Assert.False(actual); @@ -465,7 +465,7 @@ namespace SabreTools.Metadata.Filter.Test [Fact] public void MatchesLessThanOrEqual_StringValue() { - var sample = new Sample { Name = "XXXXXX" }; + var sample = new Sample { Name = "name" }; FilterObject filterObject = new FilterObject("Sample.Name", "XXXXXX", Operation.LessThanOrEqual); bool actual = filterObject.Matches(sample); Assert.False(actual); diff --git a/SabreTools.Metadata.Test/DictionaryBaseExtensionsTests.cs b/SabreTools.Metadata.Test/DictionaryBaseExtensionsTests.cs index 5cd18192..399726ba 100644 --- a/SabreTools.Metadata.Test/DictionaryBaseExtensionsTests.cs +++ b/SabreTools.Metadata.Test/DictionaryBaseExtensionsTests.cs @@ -23,14 +23,14 @@ namespace SabreTools.Metadata.Test DictionaryBase self = new Disk { Status = ItemStatus.Nodump, - Name = "XXXXXX", + Name = "name", [Disk.MD5Key] = string.Empty, [Disk.SHA1Key] = string.Empty, }; DictionaryBase other = new Disk { Status = ItemStatus.Nodump, - Name = "XXXXXX", + Name = "name", [Disk.MD5Key] = string.Empty, [Disk.SHA1Key] = string.Empty, }; @@ -44,13 +44,13 @@ namespace SabreTools.Metadata.Test { DictionaryBase self = new Disk { - Name = "XXXXXX", + Name = "name", [Disk.MD5Key] = "XXXXXX", [Disk.SHA1Key] = string.Empty, }; DictionaryBase other = new Disk { - Name = "XXXXXX", + Name = "name", [Disk.MD5Key] = string.Empty, [Disk.SHA1Key] = "XXXXXX", }; @@ -124,7 +124,7 @@ namespace SabreTools.Metadata.Test { DictionaryBase self = new Media { - Name = "XXXXXX", + Name = "name", [Media.MD5Key] = "XXXXXX", [Media.SHA1Key] = string.Empty, [Media.SHA256Key] = "XXXXXX", @@ -132,7 +132,7 @@ namespace SabreTools.Metadata.Test }; DictionaryBase other = new Media { - Name = "XXXXXX", + Name = "name", [Media.MD5Key] = string.Empty, [Media.SHA1Key] = "XXXXXX", [Media.SHA256Key] = string.Empty, @@ -148,7 +148,7 @@ namespace SabreTools.Metadata.Test { DictionaryBase self = new Media { - Name = "XXXXXX", + Name = "name", [Media.MD5Key] = "XXXXXX", [Media.SHA1Key] = string.Empty, [Media.SHA256Key] = string.Empty, @@ -156,7 +156,7 @@ namespace SabreTools.Metadata.Test }; DictionaryBase other = new Media { - Name = "XXXXXX", + Name = "name", [Media.MD5Key] = "XXXXXX", [Media.SHA1Key] = "XXXXXX", [Media.SHA256Key] = "XXXXXX", @@ -172,7 +172,7 @@ namespace SabreTools.Metadata.Test { DictionaryBase self = new Media { - Name = "XXXXXX", + Name = "name", [Media.MD5Key] = string.Empty, [Media.SHA1Key] = "XXXXXX", [Media.SHA256Key] = string.Empty, @@ -180,7 +180,7 @@ namespace SabreTools.Metadata.Test }; DictionaryBase other = new Media { - Name = "XXXXXX", + Name = "name", [Media.MD5Key] = "XXXXXX", [Media.SHA1Key] = "XXXXXX", [Media.SHA256Key] = "XXXXXX", @@ -196,7 +196,7 @@ namespace SabreTools.Metadata.Test { DictionaryBase self = new Media { - Name = "XXXXXX", + Name = "name", [Media.MD5Key] = string.Empty, [Media.SHA1Key] = string.Empty, [Media.SHA256Key] = "XXXXXX", @@ -204,7 +204,7 @@ namespace SabreTools.Metadata.Test }; DictionaryBase other = new Media { - Name = "XXXXXX", + Name = "name", [Media.MD5Key] = "XXXXXX", [Media.SHA1Key] = "XXXXXX", [Media.SHA256Key] = "XXXXXX", @@ -220,7 +220,7 @@ namespace SabreTools.Metadata.Test { DictionaryBase self = new Media { - Name = "XXXXXX", + Name = "name", [Media.MD5Key] = string.Empty, [Media.SHA1Key] = string.Empty, [Media.SHA256Key] = string.Empty, @@ -228,7 +228,7 @@ namespace SabreTools.Metadata.Test }; DictionaryBase other = new Media { - Name = "XXXXXX", + Name = "name", [Media.MD5Key] = "XXXXXX", [Media.SHA1Key] = "XXXXXX", [Media.SHA256Key] = "XXXXXX", @@ -244,7 +244,7 @@ namespace SabreTools.Metadata.Test { DictionaryBase self = new Media { - Name = "XXXXXX", + Name = "name", [Media.MD5Key] = "XXXXXX", [Media.SHA1Key] = "XXXXXX", [Media.SHA256Key] = "XXXXXX", @@ -252,7 +252,7 @@ namespace SabreTools.Metadata.Test }; DictionaryBase other = new Media { - Name = "XXXXXX", + Name = "name", [Media.MD5Key] = "XXXXXX", [Media.SHA1Key] = "XXXXXX", [Media.SHA256Key] = "XXXXXX", @@ -269,7 +269,7 @@ namespace SabreTools.Metadata.Test DictionaryBase self = new Rom { Status = ItemStatus.Nodump, - Name = "XXXXXX", + Name = "name", [Rom.SizeKey] = 12345, [Rom.CRC16Key] = string.Empty, [Rom.CRCKey] = string.Empty, @@ -288,7 +288,7 @@ namespace SabreTools.Metadata.Test DictionaryBase other = new Rom { Status = ItemStatus.Nodump, - Name = "XXXXXX", + Name = "name", [Rom.SizeKey] = 12345, [Rom.CRC16Key] = string.Empty, [Rom.CRCKey] = string.Empty, @@ -314,7 +314,7 @@ namespace SabreTools.Metadata.Test { DictionaryBase self = new Rom { - Name = "XXXXXX", + Name = "name", [Rom.SizeKey] = 12345, [Rom.CRC16Key] = "XXXXXX", [Rom.CRCKey] = string.Empty, @@ -332,7 +332,7 @@ namespace SabreTools.Metadata.Test }; DictionaryBase other = new Rom { - Name = "XXXXXX", + Name = "name", [Rom.SizeKey] = 12345, [Rom.CRC16Key] = string.Empty, [Rom.CRCKey] = "XXXXXX", diff --git a/SabreTools.Serialization.CrossModel.Test/ArchiveDotOrgTests.cs b/SabreTools.Serialization.CrossModel.Test/ArchiveDotOrgTests.cs index dcad2d5d..4b829eb1 100644 --- a/SabreTools.Serialization.CrossModel.Test/ArchiveDotOrgTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/ArchiveDotOrgTests.cs @@ -34,7 +34,7 @@ namespace SabreTools.Serialization.CrossModel.Test { var file = new Data.Models.ArchiveDotOrg.File { - Name = "XXXXXX", + Name = "name", Source = "XXXXXX", BitTorrentMagnetHash = "XXXXXX", LastModifiedTime = "XXXXXX", @@ -108,7 +108,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.ArchiveDotOrg.File? file) { Assert.NotNull(file); - Assert.Equal("XXXXXX", file.Name); + Assert.Equal("name", file.Name); Assert.Equal("XXXXXX", file.Source); Assert.Equal("XXXXXX", file.BitTorrentMagnetHash); Assert.Equal("XXXXXX", file.LastModifiedTime); diff --git a/SabreTools.Serialization.CrossModel.Test/AttractModeTests.cs b/SabreTools.Serialization.CrossModel.Test/AttractModeTests.cs index 9e0fc4dc..843e79b8 100644 --- a/SabreTools.Serialization.CrossModel.Test/AttractModeTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/AttractModeTests.cs @@ -37,7 +37,7 @@ namespace SabreTools.Serialization.CrossModel.Test var row = new Data.Models.AttractMode.Row { - Name = "XXXXXX", + Name = "name", Title = "XXXXXX", Emulator = "XXXXXX", CloneOf = "XXXXXX", @@ -84,7 +84,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.AttractMode.Row? row) { Assert.NotNull(row); - Assert.Equal("XXXXXX", row.Name); + Assert.Equal("name", row.Name); Assert.Equal("XXXXXX", row.Title); Assert.Equal("XXXXXX", row.Emulator); Assert.Equal("XXXXXX", row.CloneOf); diff --git a/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs b/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs index 7b94d582..8660b78e 100644 --- a/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs @@ -61,7 +61,7 @@ namespace SabreTools.Serialization.CrossModel.Test { var cmp = new Data.Models.ClrMamePro.ClrMamePro { - Name = "XXXXXX", + Name = "name", Description = "description", RootDir = "XXXXXX", Category = "XXXXXX", @@ -80,7 +80,7 @@ namespace SabreTools.Serialization.CrossModel.Test var release = new Data.Models.ClrMamePro.Release { - Name = "XXXXXX", + Name = "name", Region = "XXXXXX", Language = "XXXXXX", Date = "XXXXXX", @@ -89,14 +89,14 @@ namespace SabreTools.Serialization.CrossModel.Test var biosset = new Data.Models.ClrMamePro.BiosSet { - Name = "XXXXXX", + Name = "name", Description = "description", Default = true, }; var rom = new Data.Models.ClrMamePro.Rom { - Name = "XXXXXX", + Name = "name", Size = "XXXXXX", CRC16 = "XXXXXX", CRC = "XXXXXX", @@ -127,7 +127,7 @@ namespace SabreTools.Serialization.CrossModel.Test var disk = new Data.Models.ClrMamePro.Disk { - Name = "XXXXXX", + Name = "name", MD5 = "XXXXXX", SHA1 = "XXXXXX", Merge = "XXXXXX", @@ -137,17 +137,17 @@ namespace SabreTools.Serialization.CrossModel.Test var sample = new Data.Models.ClrMamePro.Sample { - Name = "XXXXXX", + Name = "name", }; var archive = new Data.Models.ClrMamePro.Archive { - Name = "XXXXXX", + Name = "name", }; var media = new Data.Models.ClrMamePro.Media { - Name = "XXXXXX", + Name = "name", MD5 = "XXXXXX", SHA1 = "XXXXXX", SHA256 = "XXXXXX", @@ -157,7 +157,7 @@ namespace SabreTools.Serialization.CrossModel.Test var chip = new Data.Models.ClrMamePro.Chip { Type = Data.Models.Metadata.ChipType.CPU, - Name = "XXXXXX", + Name = "name", Flags = "XXXXXX", Clock = "XXXXXX", }; @@ -190,7 +190,7 @@ namespace SabreTools.Serialization.CrossModel.Test var dipswitch = new Data.Models.ClrMamePro.DipSwitch { - Name = "XXXXXX", + Name = "name", Entry = ["XXXXXX"], Default = true, }; @@ -208,7 +208,7 @@ namespace SabreTools.Serialization.CrossModel.Test Data.Models.ClrMamePro.GameBase gameBase = game ? new Data.Models.ClrMamePro.Game() : new Data.Models.ClrMamePro.Machine(); - gameBase.Name = "XXXXXX"; + gameBase.Name = "name"; gameBase.Description = "description"; gameBase.DriverStatus = "XXXXXX"; gameBase.Year = "XXXXXX"; @@ -250,7 +250,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.ClrMamePro.ClrMamePro? cmp) { Assert.NotNull(cmp); - Assert.Equal("XXXXXX", cmp.Name); + Assert.Equal("name", cmp.Name); Assert.Equal("description", cmp.Description); Assert.Equal("XXXXXX", cmp.RootDir); Assert.Equal("XXXXXX", cmp.Category); @@ -273,7 +273,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.ClrMamePro.GameBase? gb) { Assert.NotNull(gb); - Assert.Equal("XXXXXX", gb.Name); + Assert.Equal("name", gb.Name); Assert.Equal("description", gb.Description); // Assert.Equal("XXXXXX", gb.DriverStatus); // TODO: Needs metadata mapping Assert.Equal("XXXXXX", gb.Year); @@ -335,7 +335,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.ClrMamePro.Release? release) { Assert.NotNull(release); - Assert.Equal("XXXXXX", release.Name); + Assert.Equal("name", release.Name); Assert.Equal("XXXXXX", release.Region); Assert.Equal("XXXXXX", release.Language); Assert.Equal("XXXXXX", release.Date); @@ -348,7 +348,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.ClrMamePro.BiosSet? biosset) { Assert.NotNull(biosset); - Assert.Equal("XXXXXX", biosset.Name); + Assert.Equal("name", biosset.Name); Assert.Equal("description", biosset.Description); Assert.Equal(true, biosset.Default); } @@ -359,7 +359,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.ClrMamePro.Rom? rom) { Assert.NotNull(rom); - Assert.Equal("XXXXXX", rom.Name); + Assert.Equal("name", rom.Name); Assert.Equal("XXXXXX", rom.Size); Assert.Equal("XXXXXX", rom.CRC16); Assert.Equal("XXXXXX", rom.CRC); @@ -394,7 +394,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.ClrMamePro.Disk? disk) { Assert.NotNull(disk); - Assert.Equal("XXXXXX", disk.Name); + Assert.Equal("name", disk.Name); Assert.Equal("XXXXXX", disk.MD5); Assert.Equal("XXXXXX", disk.SHA1); Assert.Equal("XXXXXX", disk.Merge); @@ -408,7 +408,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.ClrMamePro.Sample? sample) { Assert.NotNull(sample); - Assert.Equal("XXXXXX", sample.Name); + Assert.Equal("name", sample.Name); } /// @@ -417,7 +417,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.ClrMamePro.Archive? archive) { Assert.NotNull(archive); - Assert.Equal("XXXXXX", archive.Name); + Assert.Equal("name", archive.Name); } /// @@ -426,7 +426,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.ClrMamePro.Media? media) { Assert.NotNull(media); - Assert.Equal("XXXXXX", media.Name); + Assert.Equal("name", media.Name); Assert.Equal("XXXXXX", media.MD5); Assert.Equal("XXXXXX", media.SHA1); Assert.Equal("XXXXXX", media.SHA256); @@ -440,7 +440,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(chip); Assert.Equal(Data.Models.Metadata.ChipType.CPU, chip.Type); - Assert.Equal("XXXXXX", chip.Name); + Assert.Equal("name", chip.Name); Assert.Equal("XXXXXX", chip.Flags); Assert.Equal("XXXXXX", chip.Clock); } @@ -489,7 +489,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.ClrMamePro.DipSwitch? dipswitch) { Assert.NotNull(dipswitch); - Assert.Equal("XXXXXX", dipswitch.Name); + Assert.Equal("name", dipswitch.Name); Assert.NotNull(dipswitch.Entry); string entry = Assert.Single(dipswitch.Entry); diff --git a/SabreTools.Serialization.CrossModel.Test/DosCenterTests.cs b/SabreTools.Serialization.CrossModel.Test/DosCenterTests.cs index b43a73e0..1299669c 100644 --- a/SabreTools.Serialization.CrossModel.Test/DosCenterTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/DosCenterTests.cs @@ -35,7 +35,7 @@ namespace SabreTools.Serialization.CrossModel.Test { var dc = new Data.Models.DosCenter.DosCenter { - Name = "XXXXXX", + Name = "name", Description = "description", Version = "XXXXXX", Date = "XXXXXX", @@ -46,7 +46,7 @@ namespace SabreTools.Serialization.CrossModel.Test var file = new Data.Models.DosCenter.File { - Name = "XXXXXX", + Name = "name", Size = "XXXXXX", CRC = "XXXXXX", SHA1 = "XXXXXX", @@ -55,7 +55,7 @@ namespace SabreTools.Serialization.CrossModel.Test var game = new Data.Models.DosCenter.Game { - Name = "XXXXXX", + Name = "name", File = [file], }; @@ -72,7 +72,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.DosCenter.DosCenter? cmp) { Assert.NotNull(cmp); - Assert.Equal("XXXXXX", cmp.Name); + Assert.Equal("name", cmp.Name); Assert.Equal("description", cmp.Description); Assert.Equal("XXXXXX", cmp.Version); Assert.Equal("XXXXXX", cmp.Date); @@ -87,7 +87,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.DosCenter.Game? game) { Assert.NotNull(game); - Assert.Equal("XXXXXX", game.Name); + Assert.Equal("name", game.Name); Assert.NotNull(game.File); var file = Assert.Single(game.File); @@ -100,7 +100,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.DosCenter.File? rom) { Assert.NotNull(rom); - Assert.Equal("XXXXXX", rom.Name); + Assert.Equal("name", rom.Name); Assert.Equal("XXXXXX", rom.Size); Assert.Equal("XXXXXX", rom.CRC); Assert.Equal("XXXXXX", rom.SHA1); diff --git a/SabreTools.Serialization.CrossModel.Test/EverdriveSMDBTests.cs b/SabreTools.Serialization.CrossModel.Test/EverdriveSMDBTests.cs index faa57ae7..2d19837c 100644 --- a/SabreTools.Serialization.CrossModel.Test/EverdriveSMDBTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/EverdriveSMDBTests.cs @@ -35,7 +35,7 @@ namespace SabreTools.Serialization.CrossModel.Test var row = new Data.Models.EverdriveSMDB.Row { SHA256 = "XXXXXX", - Name = "XXXXXX", + Name = "name", SHA1 = "XXXXXX", MD5 = "XXXXXX", CRC32 = "XXXXXX", @@ -55,7 +55,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(row); Assert.Equal("XXXXXX", row.SHA256); - Assert.Equal("XXXXXX", row.Name); + Assert.Equal("name", row.Name); Assert.Equal("XXXXXX", row.SHA1); Assert.Equal("XXXXXX", row.MD5); Assert.Equal("XXXXXX", row.CRC32); diff --git a/SabreTools.Serialization.CrossModel.Test/ListromTests.cs b/SabreTools.Serialization.CrossModel.Test/ListromTests.cs index fbee49a2..dc7e6b8a 100644 --- a/SabreTools.Serialization.CrossModel.Test/ListromTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/ListromTests.cs @@ -36,7 +36,7 @@ namespace SabreTools.Serialization.CrossModel.Test { var rom = new Data.Models.Listrom.Row { - Name = "XXXXXX", + Name = "name", Size = "XXXXXX", Bad = true, CRC = "XXXXXX", @@ -46,7 +46,7 @@ namespace SabreTools.Serialization.CrossModel.Test var disk = new Data.Models.Listrom.Row { - Name = "XXXXXX", + Name = "name", Bad = false, MD5 = "XXXXXX", SHA1 = "XXXXXX", @@ -103,7 +103,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void ValidateRom(Data.Models.Listrom.Row? row) { Assert.NotNull(row); - Assert.Equal("XXXXXX", row.Name); + Assert.Equal("name", row.Name); Assert.Equal("XXXXXX", row.Size); Assert.True(row.Bad); Assert.Equal("XXXXXX", row.CRC); @@ -117,7 +117,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void ValidateDisk(Data.Models.Listrom.Row? row) { Assert.NotNull(row); - Assert.Equal("XXXXXX", row.Name); + Assert.Equal("name", row.Name); Assert.False(row.Bad); Assert.Equal("XXXXXX", row.MD5); Assert.Equal("XXXXXX", row.SHA1); diff --git a/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs b/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs index 83a24b68..6588d508 100644 --- a/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs @@ -65,14 +65,14 @@ namespace SabreTools.Serialization.CrossModel.Test { var biosset = new Data.Models.Listxml.BiosSet { - Name = "XXXXXX", + Name = "name", Description = "description", Default = true, }; var rom = new Data.Models.Listxml.Rom { - Name = "XXXXXX", + Name = "name", Bios = "XXXXXX", Size = "XXXXXX", CRC = "XXXXXX", @@ -88,7 +88,7 @@ namespace SabreTools.Serialization.CrossModel.Test var disk = new Data.Models.Listxml.Disk { - Name = "XXXXXX", + Name = "name", MD5 = "XXXXXX", SHA1 = "XXXXXX", Merge = "XXXXXX", @@ -101,17 +101,17 @@ namespace SabreTools.Serialization.CrossModel.Test var deviceref = new Data.Models.Listxml.DeviceRef { - Name = "XXXXXX", + Name = "name", }; var sample = new Data.Models.Listxml.Sample { - Name = "XXXXXX", + Name = "name", }; var chip = new Data.Models.Listxml.Chip { - Name = "XXXXXX", + Name = "name", Tag = "tag", Type = Data.Models.Metadata.ChipType.CPU, SoundOnly = true, @@ -189,14 +189,14 @@ namespace SabreTools.Serialization.CrossModel.Test var diplocation = new Data.Models.Listxml.DipLocation { - Name = "XXXXXX", + Name = "name", Number = "XXXXXX", Inverted = true, }; var dipvalue = new Data.Models.Listxml.DipValue { - Name = "XXXXXX", + Name = "name", Value = "value", Default = true, Condition = condition, @@ -204,7 +204,7 @@ namespace SabreTools.Serialization.CrossModel.Test var dipswitch = new Data.Models.Listxml.DipSwitch { - Name = "XXXXXX", + Name = "name", Tag = "tag", Mask = "mask", Condition = condition, @@ -214,14 +214,14 @@ namespace SabreTools.Serialization.CrossModel.Test var conflocation = new Data.Models.Listxml.ConfLocation { - Name = "XXXXXX", + Name = "name", Number = "XXXXXX", Inverted = true, }; var confsetting = new Data.Models.Listxml.ConfSetting { - Name = "XXXXXX", + Name = "name", Value = "value", Default = true, Condition = condition, @@ -229,7 +229,7 @@ namespace SabreTools.Serialization.CrossModel.Test var configuration = new Data.Models.Listxml.Configuration { - Name = "XXXXXX", + Name = "name", Tag = "tag", Mask = "mask", Condition = condition, @@ -250,7 +250,7 @@ namespace SabreTools.Serialization.CrossModel.Test var adjuster = new Data.Models.Listxml.Adjuster { - Name = "XXXXXX", + Name = "name", Default = true, Condition = condition, }; @@ -279,13 +279,13 @@ namespace SabreTools.Serialization.CrossModel.Test var instance = new Data.Models.Listxml.Instance { - Name = "XXXXXX", + Name = "name", BriefName = "XXXXXX", }; var extension = new Data.Models.Listxml.Extension { - Name = "XXXXXX", + Name = "name", }; var device = new Data.Models.Listxml.Device @@ -301,28 +301,28 @@ namespace SabreTools.Serialization.CrossModel.Test var slotOption = new Data.Models.Listxml.SlotOption { - Name = "XXXXXX", + Name = "name", DevName = "XXXXXX", Default = true, }; var slot = new Data.Models.Listxml.Slot { - Name = "XXXXXX", + Name = "name", SlotOption = [slotOption], }; var softwarelist = new Data.Models.Listxml.SoftwareList { Tag = "tag", - Name = "XXXXXX", + Name = "name", Status = Data.Models.Metadata.SoftwareListStatus.Original, Filter = "XXXXXX", }; var ramoption = new Data.Models.Listxml.RamOption { - Name = "XXXXXX", + Name = "name", Default = true, Content = "XXXXXX", }; @@ -330,7 +330,7 @@ namespace SabreTools.Serialization.CrossModel.Test Data.Models.Listxml.GameBase gameBase = game ? new Data.Models.Listxml.Game() : new Data.Models.Listxml.Machine(); - gameBase.Name = "XXXXXX"; + gameBase.Name = "name"; gameBase.SourceFile = "XXXXXX"; gameBase.IsBios = true; gameBase.IsDevice = true; @@ -379,7 +379,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.GameBase? gb) { Assert.NotNull(gb); - Assert.Equal("XXXXXX", gb.Name); + Assert.Equal("name", gb.Name); Assert.Equal("XXXXXX", gb.SourceFile); Assert.Equal(true, gb.IsBios); Assert.Equal(true, gb.IsDevice); @@ -473,7 +473,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.BiosSet? biosset) { Assert.NotNull(biosset); - Assert.Equal("XXXXXX", biosset.Name); + Assert.Equal("name", biosset.Name); Assert.Equal("description", biosset.Description); Assert.Equal(true, biosset.Default); } @@ -484,7 +484,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Rom? rom) { Assert.NotNull(rom); - Assert.Equal("XXXXXX", rom.Name); + Assert.Equal("name", rom.Name); Assert.Equal("XXXXXX", rom.Bios); Assert.Equal("XXXXXX", rom.Size); Assert.Equal("XXXXXX", rom.CRC); @@ -504,7 +504,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Disk? disk) { Assert.NotNull(disk); - Assert.Equal("XXXXXX", disk.Name); + Assert.Equal("name", disk.Name); Assert.Equal("XXXXXX", disk.MD5); Assert.Equal("XXXXXX", disk.SHA1); Assert.Equal("XXXXXX", disk.Merge); @@ -521,7 +521,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.DeviceRef? deviceref) { Assert.NotNull(deviceref); - Assert.Equal("XXXXXX", deviceref.Name); + Assert.Equal("name", deviceref.Name); } /// @@ -530,7 +530,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Sample? sample) { Assert.NotNull(sample); - Assert.Equal("XXXXXX", sample.Name); + Assert.Equal("name", sample.Name); } /// @@ -539,7 +539,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Chip? chip) { Assert.NotNull(chip); - Assert.Equal("XXXXXX", chip.Name); + Assert.Equal("name", chip.Name); Assert.Equal("tag", chip.Tag); Assert.Equal(Data.Models.Metadata.ChipType.CPU, chip.Type); Assert.Equal(true, chip.SoundOnly); @@ -636,7 +636,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.DipSwitch? dipswitch) { Assert.NotNull(dipswitch); - Assert.Equal("XXXXXX", dipswitch.Name); + Assert.Equal("name", dipswitch.Name); Assert.Equal("tag", dipswitch.Tag); Assert.Equal("mask", dipswitch.Mask); Validate(dipswitch.Condition); @@ -668,7 +668,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.DipLocation? diplocation) { Assert.NotNull(diplocation); - Assert.Equal("XXXXXX", diplocation.Name); + Assert.Equal("name", diplocation.Name); Assert.Equal("XXXXXX", diplocation.Number); Assert.Equal(true, diplocation.Inverted); } @@ -679,7 +679,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.DipValue? dipvalue) { Assert.NotNull(dipvalue); - Assert.Equal("XXXXXX", dipvalue.Name); + Assert.Equal("name", dipvalue.Name); Assert.Equal("value", dipvalue.Value); Assert.Equal(true, dipvalue.Default); Validate(dipvalue.Condition); @@ -691,7 +691,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Configuration? configuration) { Assert.NotNull(configuration); - Assert.Equal("XXXXXX", configuration.Name); + Assert.Equal("name", configuration.Name); Assert.Equal("tag", configuration.Tag); Assert.Equal("mask", configuration.Mask); Validate(configuration.Condition); @@ -711,7 +711,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.ConfLocation? conflocation) { Assert.NotNull(conflocation); - Assert.Equal("XXXXXX", conflocation.Name); + Assert.Equal("name", conflocation.Name); Assert.Equal("XXXXXX", conflocation.Number); Assert.Equal(true, conflocation.Inverted); } @@ -722,7 +722,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.ConfSetting? confsetting) { Assert.NotNull(confsetting); - Assert.Equal("XXXXXX", confsetting.Name); + Assert.Equal("name", confsetting.Name); Assert.Equal("value", confsetting.Value); Assert.Equal(true, confsetting.Default); Validate(confsetting.Condition); @@ -756,7 +756,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Adjuster? adjuster) { Assert.NotNull(adjuster); - Assert.Equal("XXXXXX", adjuster.Name); + Assert.Equal("name", adjuster.Name); Assert.Equal(true, adjuster.Default); Validate(adjuster.Condition); } @@ -815,7 +815,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Instance? instance) { Assert.NotNull(instance); - Assert.Equal("XXXXXX", instance.Name); + Assert.Equal("name", instance.Name); Assert.Equal("XXXXXX", instance.BriefName); } @@ -825,7 +825,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Extension? extension) { Assert.NotNull(extension); - Assert.Equal("XXXXXX", extension.Name); + Assert.Equal("name", extension.Name); } /// @@ -834,7 +834,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Slot? slot) { Assert.NotNull(slot); - Assert.Equal("XXXXXX", slot.Name); + Assert.Equal("name", slot.Name); Assert.NotNull(slot.SlotOption); var slotoption = Assert.Single(slot.SlotOption); @@ -847,7 +847,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.SlotOption? slotoption) { Assert.NotNull(slotoption); - Assert.Equal("XXXXXX", slotoption.Name); + Assert.Equal("name", slotoption.Name); Assert.Equal("XXXXXX", slotoption.DevName); Assert.Equal(true, slotoption.Default); } @@ -859,7 +859,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(softwarelist); Assert.Equal("tag", softwarelist.Tag); - Assert.Equal("XXXXXX", softwarelist.Name); + Assert.Equal("name", softwarelist.Name); Assert.Equal(Data.Models.Metadata.SoftwareListStatus.Original, softwarelist.Status); Assert.Equal("XXXXXX", softwarelist.Filter); } @@ -870,7 +870,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.RamOption? ramoption) { Assert.NotNull(ramoption); - Assert.Equal("XXXXXX", ramoption.Name); + Assert.Equal("name", ramoption.Name); Assert.Equal(true, ramoption.Default); Assert.Equal("XXXXXX", ramoption.Content); } diff --git a/SabreTools.Serialization.CrossModel.Test/LogiqxTests.cs b/SabreTools.Serialization.CrossModel.Test/LogiqxTests.cs index a09eaa2f..b72c9725 100644 --- a/SabreTools.Serialization.CrossModel.Test/LogiqxTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/LogiqxTests.cs @@ -95,7 +95,7 @@ namespace SabreTools.Serialization.CrossModel.Test var header = new Data.Models.Logiqx.Header { Id = "XXXXXX", - Name = "XXXXXX", + Name = "name", Description = "description", RootDir = "XXXXXX", Category = "XXXXXX", @@ -131,7 +131,7 @@ namespace SabreTools.Serialization.CrossModel.Test var release = new Data.Models.Logiqx.Release { - Name = "XXXXXX", + Name = "name", Region = "XXXXXX", Language = "XXXXXX", Date = "XXXXXX", @@ -140,14 +140,14 @@ namespace SabreTools.Serialization.CrossModel.Test var biosset = new Data.Models.Logiqx.BiosSet { - Name = "XXXXXX", + Name = "name", Description = "description", Default = true, }; var rom = new Data.Models.Logiqx.Rom { - Name = "XXXXXX", + Name = "name", Size = "XXXXXX", CRC16 = "XXXXXX", CRC = "XXXXXX", @@ -175,7 +175,7 @@ namespace SabreTools.Serialization.CrossModel.Test var disk = new Data.Models.Logiqx.Disk { - Name = "XXXXXX", + Name = "name", MD5 = "XXXXXX", SHA1 = "XXXXXX", Merge = "XXXXXX", @@ -185,7 +185,7 @@ namespace SabreTools.Serialization.CrossModel.Test var media = new Data.Models.Logiqx.Media { - Name = "XXXXXX", + Name = "name", MD5 = "XXXXXX", SHA1 = "XXXXXX", SHA256 = "XXXXXX", @@ -194,17 +194,17 @@ namespace SabreTools.Serialization.CrossModel.Test var deviceRef = new Data.Models.Logiqx.DeviceRef { - Name = "XXXXXX", + Name = "name", }; var sample = new Data.Models.Logiqx.Sample { - Name = "XXXXXX", + Name = "name", }; var archive = new Data.Models.Logiqx.Archive { - Name = "XXXXXX", + Name = "name", }; var driver = new Data.Models.Logiqx.Driver @@ -222,7 +222,7 @@ namespace SabreTools.Serialization.CrossModel.Test var softwarelist = new Data.Models.Logiqx.SoftwareList { Tag = "tag", - Name = "XXXXXX", + Name = "name", Status = Data.Models.Metadata.SoftwareListStatus.Original, Filter = "XXXXXX", }; @@ -230,7 +230,7 @@ namespace SabreTools.Serialization.CrossModel.Test Data.Models.Logiqx.GameBase gameBase = game ? new Data.Models.Logiqx.Game() : new Data.Models.Logiqx.Machine(); - gameBase.Name = "XXXXXX"; + gameBase.Name = "name"; gameBase.SourceFile = "XXXXXX"; gameBase.IsBios = true; gameBase.IsDevice = true; @@ -263,13 +263,13 @@ namespace SabreTools.Serialization.CrossModel.Test var subdir = new Data.Models.Logiqx.Dir { - Name = "XXXXXX", + Name = "name", Game = [gameBase], }; var dir = new Data.Models.Logiqx.Dir { - Name = "XXXXXX", + Name = "name", Subdir = [subdir], }; @@ -291,7 +291,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(header); Assert.Equal("XXXXXX", header.Id); - Assert.Equal("XXXXXX", header.Name); + Assert.Equal("name", header.Name); Assert.Equal("description", header.Description); Assert.Equal("XXXXXX", header.RootDir); Assert.Equal("XXXXXX", header.Category); @@ -341,9 +341,9 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(gb); if (nested) - Assert.Equal("XXXXXX\\XXXXXX\\XXXXXX", gb.Name); + Assert.Equal("name\\name\\name", gb.Name); else - Assert.Equal("XXXXXX", gb.Name); + Assert.Equal("name", gb.Name); Assert.Equal("XXXXXX", gb.SourceFile); Assert.Equal(true, gb.IsBios); Assert.Equal(true, gb.IsDevice); @@ -439,7 +439,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Logiqx.Release? release) { Assert.NotNull(release); - Assert.Equal("XXXXXX", release.Name); + Assert.Equal("name", release.Name); Assert.Equal("XXXXXX", release.Region); Assert.Equal("XXXXXX", release.Language); Assert.Equal("XXXXXX", release.Date); @@ -452,7 +452,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Logiqx.BiosSet? biosset) { Assert.NotNull(biosset); - Assert.Equal("XXXXXX", biosset.Name); + Assert.Equal("name", biosset.Name); Assert.Equal("description", biosset.Description); Assert.Equal(true, biosset.Default); } @@ -463,7 +463,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Logiqx.Rom? rom) { Assert.NotNull(rom); - Assert.Equal("XXXXXX", rom.Name); + Assert.Equal("name", rom.Name); Assert.Equal("XXXXXX", rom.Size); Assert.Equal("XXXXXX", rom.CRC16); Assert.Equal("XXXXXX", rom.CRC); @@ -495,7 +495,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Logiqx.Disk? disk) { Assert.NotNull(disk); - Assert.Equal("XXXXXX", disk.Name); + Assert.Equal("name", disk.Name); Assert.Equal("XXXXXX", disk.MD5); Assert.Equal("XXXXXX", disk.SHA1); Assert.Equal("XXXXXX", disk.Merge); @@ -509,7 +509,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Logiqx.Media? media) { Assert.NotNull(media); - Assert.Equal("XXXXXX", media.Name); + Assert.Equal("name", media.Name); Assert.Equal("XXXXXX", media.MD5); Assert.Equal("XXXXXX", media.SHA1); Assert.Equal("XXXXXX", media.SHA256); @@ -522,7 +522,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Logiqx.DeviceRef? deviceref) { Assert.NotNull(deviceref); - Assert.Equal("XXXXXX", deviceref.Name); + Assert.Equal("name", deviceref.Name); } /// @@ -531,7 +531,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Logiqx.Sample? sample) { Assert.NotNull(sample); - Assert.Equal("XXXXXX", sample.Name); + Assert.Equal("name", sample.Name); } /// @@ -540,7 +540,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Logiqx.Archive? archive) { Assert.NotNull(archive); - Assert.Equal("XXXXXX", archive.Name); + Assert.Equal("name", archive.Name); } /// @@ -566,7 +566,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(softwarelist); Assert.Equal("tag", softwarelist.Tag); - Assert.Equal("XXXXXX", softwarelist.Name); + Assert.Equal("name", softwarelist.Name); Assert.Equal(Data.Models.Metadata.SoftwareListStatus.Original, softwarelist.Status); Assert.Equal("XXXXXX", softwarelist.Filter); } diff --git a/SabreTools.Serialization.CrossModel.Test/M1Tests.cs b/SabreTools.Serialization.CrossModel.Test/M1Tests.cs index ac29d7b6..c5655a48 100644 --- a/SabreTools.Serialization.CrossModel.Test/M1Tests.cs +++ b/SabreTools.Serialization.CrossModel.Test/M1Tests.cs @@ -61,14 +61,14 @@ namespace SabreTools.Serialization.CrossModel.Test { var biosset = new Data.Models.Listxml.BiosSet { - Name = "XXXXXX", + Name = "name", Description = "description", Default = true, }; var rom = new Data.Models.Listxml.Rom { - Name = "XXXXXX", + Name = "name", Bios = "XXXXXX", Size = "XXXXXX", CRC = "XXXXXX", @@ -84,7 +84,7 @@ namespace SabreTools.Serialization.CrossModel.Test var disk = new Data.Models.Listxml.Disk { - Name = "XXXXXX", + Name = "name", MD5 = "XXXXXX", SHA1 = "XXXXXX", Merge = "XXXXXX", @@ -97,17 +97,17 @@ namespace SabreTools.Serialization.CrossModel.Test var deviceref = new Data.Models.Listxml.DeviceRef { - Name = "XXXXXX", + Name = "name", }; var sample = new Data.Models.Listxml.Sample { - Name = "XXXXXX", + Name = "name", }; var chip = new Data.Models.Listxml.Chip { - Name = "XXXXXX", + Name = "name", Tag = "tag", Type = Data.Models.Metadata.ChipType.CPU, SoundOnly = true, @@ -185,14 +185,14 @@ namespace SabreTools.Serialization.CrossModel.Test var diplocation = new Data.Models.Listxml.DipLocation { - Name = "XXXXXX", + Name = "name", Number = "XXXXXX", Inverted = true, }; var dipvalue = new Data.Models.Listxml.DipValue { - Name = "XXXXXX", + Name = "name", Value = "value", Default = true, Condition = condition, @@ -200,7 +200,7 @@ namespace SabreTools.Serialization.CrossModel.Test var dipswitch = new Data.Models.Listxml.DipSwitch { - Name = "XXXXXX", + Name = "name", Tag = "tag", Mask = "mask", Condition = condition, @@ -210,14 +210,14 @@ namespace SabreTools.Serialization.CrossModel.Test var conflocation = new Data.Models.Listxml.ConfLocation { - Name = "XXXXXX", + Name = "name", Number = "XXXXXX", Inverted = true, }; var confsetting = new Data.Models.Listxml.ConfSetting { - Name = "XXXXXX", + Name = "name", Value = "value", Default = true, Condition = condition, @@ -225,7 +225,7 @@ namespace SabreTools.Serialization.CrossModel.Test var configuration = new Data.Models.Listxml.Configuration { - Name = "XXXXXX", + Name = "name", Tag = "tag", Mask = "mask", Condition = condition, @@ -246,7 +246,7 @@ namespace SabreTools.Serialization.CrossModel.Test var adjuster = new Data.Models.Listxml.Adjuster { - Name = "XXXXXX", + Name = "name", Default = true, Condition = condition, }; @@ -275,13 +275,13 @@ namespace SabreTools.Serialization.CrossModel.Test var instance = new Data.Models.Listxml.Instance { - Name = "XXXXXX", + Name = "name", BriefName = "XXXXXX", }; var extension = new Data.Models.Listxml.Extension { - Name = "XXXXXX", + Name = "name", }; var device = new Data.Models.Listxml.Device @@ -297,28 +297,28 @@ namespace SabreTools.Serialization.CrossModel.Test var slotOption = new Data.Models.Listxml.SlotOption { - Name = "XXXXXX", + Name = "name", DevName = "XXXXXX", Default = true, }; var slot = new Data.Models.Listxml.Slot { - Name = "XXXXXX", + Name = "name", SlotOption = [slotOption], }; var softwarelist = new Data.Models.Listxml.SoftwareList { Tag = "tag", - Name = "XXXXXX", + Name = "name", Status = Data.Models.Metadata.SoftwareListStatus.Original, Filter = "XXXXXX", }; var ramoption = new Data.Models.Listxml.RamOption { - Name = "XXXXXX", + Name = "name", Default = true, Content = "XXXXXX", }; @@ -326,7 +326,7 @@ namespace SabreTools.Serialization.CrossModel.Test Data.Models.Listxml.GameBase gameBase = game ? new Data.Models.Listxml.Game() : new Data.Models.Listxml.Machine(); - gameBase.Name = "XXXXXX"; + gameBase.Name = "name"; gameBase.SourceFile = "XXXXXX"; gameBase.IsBios = true; gameBase.IsDevice = true; @@ -373,7 +373,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.GameBase? gb) { Assert.NotNull(gb); - Assert.Equal("XXXXXX", gb.Name); + Assert.Equal("name", gb.Name); Assert.Equal("XXXXXX", gb.SourceFile); Assert.Equal(true, gb.IsBios); Assert.Equal(true, gb.IsDevice); @@ -467,7 +467,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.BiosSet? biosset) { Assert.NotNull(biosset); - Assert.Equal("XXXXXX", biosset.Name); + Assert.Equal("name", biosset.Name); Assert.Equal("description", biosset.Description); Assert.Equal(true, biosset.Default); } @@ -478,7 +478,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Rom? rom) { Assert.NotNull(rom); - Assert.Equal("XXXXXX", rom.Name); + Assert.Equal("name", rom.Name); Assert.Equal("XXXXXX", rom.Bios); Assert.Equal("XXXXXX", rom.Size); Assert.Equal("XXXXXX", rom.CRC); @@ -498,7 +498,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Disk? disk) { Assert.NotNull(disk); - Assert.Equal("XXXXXX", disk.Name); + Assert.Equal("name", disk.Name); Assert.Equal("XXXXXX", disk.MD5); Assert.Equal("XXXXXX", disk.SHA1); Assert.Equal("XXXXXX", disk.Merge); @@ -515,7 +515,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.DeviceRef? deviceref) { Assert.NotNull(deviceref); - Assert.Equal("XXXXXX", deviceref.Name); + Assert.Equal("name", deviceref.Name); } /// @@ -524,7 +524,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Sample? sample) { Assert.NotNull(sample); - Assert.Equal("XXXXXX", sample.Name); + Assert.Equal("name", sample.Name); } /// @@ -533,7 +533,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Chip? chip) { Assert.NotNull(chip); - Assert.Equal("XXXXXX", chip.Name); + Assert.Equal("name", chip.Name); Assert.Equal("tag", chip.Tag); Assert.Equal(Data.Models.Metadata.ChipType.CPU, chip.Type); Assert.Equal(true, chip.SoundOnly); @@ -630,7 +630,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.DipSwitch? dipswitch) { Assert.NotNull(dipswitch); - Assert.Equal("XXXXXX", dipswitch.Name); + Assert.Equal("name", dipswitch.Name); Assert.Equal("tag", dipswitch.Tag); Assert.Equal("mask", dipswitch.Mask); Validate(dipswitch.Condition); @@ -662,7 +662,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.DipLocation? diplocation) { Assert.NotNull(diplocation); - Assert.Equal("XXXXXX", diplocation.Name); + Assert.Equal("name", diplocation.Name); Assert.Equal("XXXXXX", diplocation.Number); Assert.Equal(true, diplocation.Inverted); } @@ -673,7 +673,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.DipValue? dipvalue) { Assert.NotNull(dipvalue); - Assert.Equal("XXXXXX", dipvalue.Name); + Assert.Equal("name", dipvalue.Name); Assert.Equal("value", dipvalue.Value); Assert.Equal(true, dipvalue.Default); Validate(dipvalue.Condition); @@ -685,7 +685,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Configuration? configuration) { Assert.NotNull(configuration); - Assert.Equal("XXXXXX", configuration.Name); + Assert.Equal("name", configuration.Name); Assert.Equal("tag", configuration.Tag); Assert.Equal("mask", configuration.Mask); Validate(configuration.Condition); @@ -705,7 +705,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.ConfLocation? conflocation) { Assert.NotNull(conflocation); - Assert.Equal("XXXXXX", conflocation.Name); + Assert.Equal("name", conflocation.Name); Assert.Equal("XXXXXX", conflocation.Number); Assert.Equal(true, conflocation.Inverted); } @@ -716,7 +716,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.ConfSetting? confsetting) { Assert.NotNull(confsetting); - Assert.Equal("XXXXXX", confsetting.Name); + Assert.Equal("name", confsetting.Name); Assert.Equal("value", confsetting.Value); Assert.Equal(true, confsetting.Default); Validate(confsetting.Condition); @@ -750,7 +750,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Adjuster? adjuster) { Assert.NotNull(adjuster); - Assert.Equal("XXXXXX", adjuster.Name); + Assert.Equal("name", adjuster.Name); Assert.Equal(true, adjuster.Default); Validate(adjuster.Condition); } @@ -809,7 +809,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Instance? instance) { Assert.NotNull(instance); - Assert.Equal("XXXXXX", instance.Name); + Assert.Equal("name", instance.Name); Assert.Equal("XXXXXX", instance.BriefName); } @@ -819,7 +819,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Extension? extension) { Assert.NotNull(extension); - Assert.Equal("XXXXXX", extension.Name); + Assert.Equal("name", extension.Name); } /// @@ -828,7 +828,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Slot? slot) { Assert.NotNull(slot); - Assert.Equal("XXXXXX", slot.Name); + Assert.Equal("name", slot.Name); Assert.NotNull(slot.SlotOption); var slotoption = Assert.Single(slot.SlotOption); @@ -841,7 +841,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.SlotOption? slotoption) { Assert.NotNull(slotoption); - Assert.Equal("XXXXXX", slotoption.Name); + Assert.Equal("name", slotoption.Name); Assert.Equal("XXXXXX", slotoption.DevName); Assert.Equal(true, slotoption.Default); } @@ -853,7 +853,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(softwarelist); Assert.Equal("tag", softwarelist.Tag); - Assert.Equal("XXXXXX", softwarelist.Name); + Assert.Equal("name", softwarelist.Name); Assert.Equal(Data.Models.Metadata.SoftwareListStatus.Original, softwarelist.Status); Assert.Equal("XXXXXX", softwarelist.Filter); } @@ -864,7 +864,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.RamOption? ramoption) { Assert.NotNull(ramoption); - Assert.Equal("XXXXXX", ramoption.Name); + Assert.Equal("name", ramoption.Name); Assert.Equal(true, ramoption.Default); Assert.Equal("XXXXXX", ramoption.Content); } diff --git a/SabreTools.Serialization.CrossModel.Test/MessTests.cs b/SabreTools.Serialization.CrossModel.Test/MessTests.cs index 0d3321cd..e009a1ec 100644 --- a/SabreTools.Serialization.CrossModel.Test/MessTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/MessTests.cs @@ -61,14 +61,14 @@ namespace SabreTools.Serialization.CrossModel.Test { var biosset = new Data.Models.Listxml.BiosSet { - Name = "XXXXXX", + Name = "name", Description = "description", Default = true, }; var rom = new Data.Models.Listxml.Rom { - Name = "XXXXXX", + Name = "name", Bios = "XXXXXX", Size = "XXXXXX", CRC = "XXXXXX", @@ -84,7 +84,7 @@ namespace SabreTools.Serialization.CrossModel.Test var disk = new Data.Models.Listxml.Disk { - Name = "XXXXXX", + Name = "name", MD5 = "XXXXXX", SHA1 = "XXXXXX", Merge = "XXXXXX", @@ -97,17 +97,17 @@ namespace SabreTools.Serialization.CrossModel.Test var deviceref = new Data.Models.Listxml.DeviceRef { - Name = "XXXXXX", + Name = "name", }; var sample = new Data.Models.Listxml.Sample { - Name = "XXXXXX", + Name = "name", }; var chip = new Data.Models.Listxml.Chip { - Name = "XXXXXX", + Name = "name", Tag = "tag", Type = Data.Models.Metadata.ChipType.CPU, SoundOnly = true, @@ -185,14 +185,14 @@ namespace SabreTools.Serialization.CrossModel.Test var diplocation = new Data.Models.Listxml.DipLocation { - Name = "XXXXXX", + Name = "name", Number = "XXXXXX", Inverted = true, }; var dipvalue = new Data.Models.Listxml.DipValue { - Name = "XXXXXX", + Name = "name", Value = "value", Default = true, Condition = condition, @@ -200,7 +200,7 @@ namespace SabreTools.Serialization.CrossModel.Test var dipswitch = new Data.Models.Listxml.DipSwitch { - Name = "XXXXXX", + Name = "name", Tag = "tag", Mask = "mask", Condition = condition, @@ -210,14 +210,14 @@ namespace SabreTools.Serialization.CrossModel.Test var conflocation = new Data.Models.Listxml.ConfLocation { - Name = "XXXXXX", + Name = "name", Number = "XXXXXX", Inverted = true, }; var confsetting = new Data.Models.Listxml.ConfSetting { - Name = "XXXXXX", + Name = "name", Value = "value", Default = true, Condition = condition, @@ -225,7 +225,7 @@ namespace SabreTools.Serialization.CrossModel.Test var configuration = new Data.Models.Listxml.Configuration { - Name = "XXXXXX", + Name = "name", Tag = "tag", Mask = "mask", Condition = condition, @@ -246,7 +246,7 @@ namespace SabreTools.Serialization.CrossModel.Test var adjuster = new Data.Models.Listxml.Adjuster { - Name = "XXXXXX", + Name = "name", Default = true, Condition = condition, }; @@ -275,13 +275,13 @@ namespace SabreTools.Serialization.CrossModel.Test var instance = new Data.Models.Listxml.Instance { - Name = "XXXXXX", + Name = "name", BriefName = "XXXXXX", }; var extension = new Data.Models.Listxml.Extension { - Name = "XXXXXX", + Name = "name", }; var device = new Data.Models.Listxml.Device @@ -297,28 +297,28 @@ namespace SabreTools.Serialization.CrossModel.Test var slotOption = new Data.Models.Listxml.SlotOption { - Name = "XXXXXX", + Name = "name", DevName = "XXXXXX", Default = true, }; var slot = new Data.Models.Listxml.Slot { - Name = "XXXXXX", + Name = "name", SlotOption = [slotOption], }; var softwarelist = new Data.Models.Listxml.SoftwareList { Tag = "tag", - Name = "XXXXXX", + Name = "name", Status = Data.Models.Metadata.SoftwareListStatus.Original, Filter = "XXXXXX", }; var ramoption = new Data.Models.Listxml.RamOption { - Name = "XXXXXX", + Name = "name", Default = true, Content = "XXXXXX", }; @@ -326,7 +326,7 @@ namespace SabreTools.Serialization.CrossModel.Test Data.Models.Listxml.GameBase gameBase = game ? new Data.Models.Listxml.Game() : new Data.Models.Listxml.Machine(); - gameBase.Name = "XXXXXX"; + gameBase.Name = "name"; gameBase.SourceFile = "XXXXXX"; gameBase.IsBios = true; gameBase.IsDevice = true; @@ -373,7 +373,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.GameBase? gb) { Assert.NotNull(gb); - Assert.Equal("XXXXXX", gb.Name); + Assert.Equal("name", gb.Name); Assert.Equal("XXXXXX", gb.SourceFile); Assert.Equal(true, gb.IsBios); Assert.Equal(true, gb.IsDevice); @@ -467,7 +467,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.BiosSet? biosset) { Assert.NotNull(biosset); - Assert.Equal("XXXXXX", biosset.Name); + Assert.Equal("name", biosset.Name); Assert.Equal("description", biosset.Description); Assert.Equal(true, biosset.Default); } @@ -478,7 +478,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Rom? rom) { Assert.NotNull(rom); - Assert.Equal("XXXXXX", rom.Name); + Assert.Equal("name", rom.Name); Assert.Equal("XXXXXX", rom.Bios); Assert.Equal("XXXXXX", rom.Size); Assert.Equal("XXXXXX", rom.CRC); @@ -498,7 +498,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Disk? disk) { Assert.NotNull(disk); - Assert.Equal("XXXXXX", disk.Name); + Assert.Equal("name", disk.Name); Assert.Equal("XXXXXX", disk.MD5); Assert.Equal("XXXXXX", disk.SHA1); Assert.Equal("XXXXXX", disk.Merge); @@ -515,7 +515,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.DeviceRef? deviceref) { Assert.NotNull(deviceref); - Assert.Equal("XXXXXX", deviceref.Name); + Assert.Equal("name", deviceref.Name); } /// @@ -524,7 +524,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Sample? sample) { Assert.NotNull(sample); - Assert.Equal("XXXXXX", sample.Name); + Assert.Equal("name", sample.Name); } /// @@ -533,7 +533,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Chip? chip) { Assert.NotNull(chip); - Assert.Equal("XXXXXX", chip.Name); + Assert.Equal("name", chip.Name); Assert.Equal("tag", chip.Tag); Assert.Equal(Data.Models.Metadata.ChipType.CPU, chip.Type); Assert.Equal(true, chip.SoundOnly); @@ -630,7 +630,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.DipSwitch? dipswitch) { Assert.NotNull(dipswitch); - Assert.Equal("XXXXXX", dipswitch.Name); + Assert.Equal("name", dipswitch.Name); Assert.Equal("tag", dipswitch.Tag); Assert.Equal("mask", dipswitch.Mask); Validate(dipswitch.Condition); @@ -662,7 +662,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.DipLocation? diplocation) { Assert.NotNull(diplocation); - Assert.Equal("XXXXXX", diplocation.Name); + Assert.Equal("name", diplocation.Name); Assert.Equal("XXXXXX", diplocation.Number); Assert.Equal(true, diplocation.Inverted); } @@ -673,7 +673,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.DipValue? dipvalue) { Assert.NotNull(dipvalue); - Assert.Equal("XXXXXX", dipvalue.Name); + Assert.Equal("name", dipvalue.Name); Assert.Equal("value", dipvalue.Value); Assert.Equal(true, dipvalue.Default); Validate(dipvalue.Condition); @@ -685,7 +685,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Configuration? configuration) { Assert.NotNull(configuration); - Assert.Equal("XXXXXX", configuration.Name); + Assert.Equal("name", configuration.Name); Assert.Equal("tag", configuration.Tag); Assert.Equal("mask", configuration.Mask); Validate(configuration.Condition); @@ -705,7 +705,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.ConfLocation? conflocation) { Assert.NotNull(conflocation); - Assert.Equal("XXXXXX", conflocation.Name); + Assert.Equal("name", conflocation.Name); Assert.Equal("XXXXXX", conflocation.Number); Assert.Equal(true, conflocation.Inverted); } @@ -716,7 +716,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.ConfSetting? confsetting) { Assert.NotNull(confsetting); - Assert.Equal("XXXXXX", confsetting.Name); + Assert.Equal("name", confsetting.Name); Assert.Equal("value", confsetting.Value); Assert.Equal(true, confsetting.Default); Validate(confsetting.Condition); @@ -750,7 +750,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Adjuster? adjuster) { Assert.NotNull(adjuster); - Assert.Equal("XXXXXX", adjuster.Name); + Assert.Equal("name", adjuster.Name); Assert.Equal(true, adjuster.Default); Validate(adjuster.Condition); } @@ -809,7 +809,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Instance? instance) { Assert.NotNull(instance); - Assert.Equal("XXXXXX", instance.Name); + Assert.Equal("name", instance.Name); Assert.Equal("XXXXXX", instance.BriefName); } @@ -819,7 +819,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Extension? extension) { Assert.NotNull(extension); - Assert.Equal("XXXXXX", extension.Name); + Assert.Equal("name", extension.Name); } /// @@ -828,7 +828,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Slot? slot) { Assert.NotNull(slot); - Assert.Equal("XXXXXX", slot.Name); + Assert.Equal("name", slot.Name); Assert.NotNull(slot.SlotOption); var slotoption = Assert.Single(slot.SlotOption); @@ -841,7 +841,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.SlotOption? slotoption) { Assert.NotNull(slotoption); - Assert.Equal("XXXXXX", slotoption.Name); + Assert.Equal("name", slotoption.Name); Assert.Equal("XXXXXX", slotoption.DevName); Assert.Equal(true, slotoption.Default); } @@ -853,7 +853,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(softwarelist); Assert.Equal("tag", softwarelist.Tag); - Assert.Equal("XXXXXX", softwarelist.Name); + Assert.Equal("name", softwarelist.Name); Assert.Equal(Data.Models.Metadata.SoftwareListStatus.Original, softwarelist.Status); Assert.Equal("XXXXXX", softwarelist.Filter); } @@ -864,7 +864,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.RamOption? ramoption) { Assert.NotNull(ramoption); - Assert.Equal("XXXXXX", ramoption.Name); + Assert.Equal("name", ramoption.Name); Assert.Equal(true, ramoption.Default); Assert.Equal("XXXXXX", ramoption.Content); } diff --git a/SabreTools.Serialization.CrossModel.Test/SoftwareListTests.cs b/SabreTools.Serialization.CrossModel.Test/SoftwareListTests.cs index f2805167..18dc28b6 100644 --- a/SabreTools.Serialization.CrossModel.Test/SoftwareListTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/SoftwareListTests.cs @@ -22,7 +22,7 @@ namespace SabreTools.Serialization.CrossModel.Test // Validate the data Assert.NotNull(newSl); - Assert.Equal("XXXXXX", newSl.Name); + Assert.Equal("name", newSl.Name); Assert.Equal("description", newSl.Description); Assert.Equal("XXXXXX", newSl.Notes); @@ -38,25 +38,25 @@ namespace SabreTools.Serialization.CrossModel.Test { var info = new Data.Models.SoftwareList.Info { - Name = "XXXXXX", + Name = "name", Value = "value", }; var sharedfeat = new Data.Models.SoftwareList.SharedFeat { - Name = "XXXXXX", + Name = "name", Value = "value", }; var feature = new Data.Models.SoftwareList.Feature { - Name = "XXXXXX", + Name = "name", Value = "value", }; var rom = new Data.Models.SoftwareList.Rom { - Name = "XXXXXX", + Name = "name", Size = "XXXXXX", Length = "XXXXXX", CRC = "XXXXXX", @@ -69,7 +69,7 @@ namespace SabreTools.Serialization.CrossModel.Test var dataarea = new Data.Models.SoftwareList.DataArea { - Name = "XXXXXX", + Name = "name", Size = "XXXXXX", Width = "XXXXXX", Endianness = Data.Models.Metadata.Endianness.Big, @@ -78,7 +78,7 @@ namespace SabreTools.Serialization.CrossModel.Test var disk = new Data.Models.SoftwareList.Disk { - Name = "XXXXXX", + Name = "name", MD5 = "XXXXXX", SHA1 = "XXXXXX", Status = Data.Models.Metadata.ItemStatus.Good, @@ -87,20 +87,20 @@ namespace SabreTools.Serialization.CrossModel.Test var diskarea = new Data.Models.SoftwareList.DiskArea { - Name = "XXXXXX", + Name = "name", Disk = [disk], }; var dipvalue = new Data.Models.SoftwareList.DipValue { - Name = "XXXXXX", + Name = "name", Value = "value", Default = true, }; var dipswitch = new Data.Models.SoftwareList.DipSwitch { - Name = "XXXXXX", + Name = "name", Tag = "tag", Mask = "mask", DipValue = [dipvalue], @@ -108,7 +108,7 @@ namespace SabreTools.Serialization.CrossModel.Test var part = new Data.Models.SoftwareList.Part { - Name = "XXXXXX", + Name = "name", Interface = "XXXXXX", Feature = [feature], DataArea = [dataarea], @@ -118,7 +118,7 @@ namespace SabreTools.Serialization.CrossModel.Test var software = new Data.Models.SoftwareList.Software { - Name = "XXXXXX", + Name = "name", CloneOf = "XXXXXX", Supported = Data.Models.Metadata.Supported.Yes, Description = "description", @@ -132,7 +132,7 @@ namespace SabreTools.Serialization.CrossModel.Test return new Data.Models.SoftwareList.SoftwareList { - Name = "XXXXXX", + Name = "name", Description = "description", Notes = "XXXXXX", Software = [software], @@ -145,7 +145,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.SoftwareList.Software? software) { Assert.NotNull(software); - Assert.Equal("XXXXXX", software.Name); + Assert.Equal("name", software.Name); Assert.Equal("XXXXXX", software.CloneOf); Assert.Equal(Data.Models.Metadata.Supported.Yes, software.Supported); Assert.Equal("description", software.Description); @@ -172,7 +172,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.SoftwareList.Info? info) { Assert.NotNull(info); - Assert.Equal("XXXXXX", info.Name); + Assert.Equal("name", info.Name); Assert.Equal("value", info.Value); } @@ -182,7 +182,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.SoftwareList.SharedFeat? sharedfeat) { Assert.NotNull(sharedfeat); - Assert.Equal("XXXXXX", sharedfeat.Name); + Assert.Equal("name", sharedfeat.Name); Assert.Equal("value", sharedfeat.Value); } @@ -192,7 +192,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.SoftwareList.Part? part) { Assert.NotNull(part); - Assert.Equal("XXXXXX", part.Name); + Assert.Equal("name", part.Name); Assert.Equal("XXXXXX", part.Interface); Assert.NotNull(part.Feature); @@ -218,7 +218,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.SoftwareList.Feature? feature) { Assert.NotNull(feature); - Assert.Equal("XXXXXX", feature.Name); + Assert.Equal("name", feature.Name); Assert.Equal("value", feature.Value); } @@ -228,7 +228,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.SoftwareList.DataArea? dataarea) { Assert.NotNull(dataarea); - Assert.Equal("XXXXXX", dataarea.Name); + Assert.Equal("name", dataarea.Name); Assert.Equal("XXXXXX", dataarea.Size); Assert.Equal("XXXXXX", dataarea.Width); Assert.Equal(Data.Models.Metadata.Endianness.Big, dataarea.Endianness); @@ -244,7 +244,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.SoftwareList.Rom? rom) { Assert.NotNull(rom); - Assert.Equal("XXXXXX", rom.Name); + Assert.Equal("name", rom.Name); Assert.Equal("XXXXXX", rom.Size); Assert.Equal("XXXXXX", rom.Length); Assert.Equal("XXXXXX", rom.CRC); @@ -261,7 +261,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.SoftwareList.DiskArea? diskarea) { Assert.NotNull(diskarea); - Assert.Equal("XXXXXX", diskarea.Name); + Assert.Equal("name", diskarea.Name); Assert.NotNull(diskarea.Disk); var disk = Assert.Single(diskarea.Disk); @@ -274,7 +274,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.SoftwareList.Disk? disk) { Assert.NotNull(disk); - Assert.Equal("XXXXXX", disk.Name); + Assert.Equal("name", disk.Name); Assert.Equal("XXXXXX", disk.MD5); Assert.Equal("XXXXXX", disk.SHA1); Assert.Equal(Data.Models.Metadata.ItemStatus.Good, disk.Status); @@ -287,7 +287,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.SoftwareList.DipSwitch? dipswitch) { Assert.NotNull(dipswitch); - Assert.Equal("XXXXXX", dipswitch.Name); + Assert.Equal("name", dipswitch.Name); Assert.Equal("tag", dipswitch.Tag); Assert.Equal("mask", dipswitch.Mask); @@ -302,7 +302,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.SoftwareList.DipValue? dipvalue) { Assert.NotNull(dipvalue); - Assert.Equal("XXXXXX", dipvalue.Name); + Assert.Equal("name", dipvalue.Name); Assert.Equal("value", dipvalue.Value); Assert.Equal(true, dipvalue.Default); } diff --git a/SabreTools.Serialization.Readers.Test/ArchiveDotOrgTests.cs b/SabreTools.Serialization.Readers.Test/ArchiveDotOrgTests.cs index 793b864b..8bd8f58c 100644 --- a/SabreTools.Serialization.Readers.Test/ArchiveDotOrgTests.cs +++ b/SabreTools.Serialization.Readers.Test/ArchiveDotOrgTests.cs @@ -100,7 +100,7 @@ namespace SabreTools.Serialization.Readers.Test { var file = new Data.Models.ArchiveDotOrg.File { - Name = "XXXXXX", + Name = "name", Source = "XXXXXX", BitTorrentMagnetHash = "XXXXXX", LastModifiedTime = "XXXXXX", @@ -174,7 +174,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.ArchiveDotOrg.File? file) { Assert.NotNull(file); - Assert.Equal("XXXXXX", file.Name); + Assert.Equal("name", file.Name); Assert.Equal("XXXXXX", file.Source); Assert.Equal("XXXXXX", file.BitTorrentMagnetHash); Assert.Equal("XXXXXX", file.LastModifiedTime); diff --git a/SabreTools.Serialization.Readers.Test/AttractModeTests.cs b/SabreTools.Serialization.Readers.Test/AttractModeTests.cs index 70bd264d..a03c5fde 100644 --- a/SabreTools.Serialization.Readers.Test/AttractModeTests.cs +++ b/SabreTools.Serialization.Readers.Test/AttractModeTests.cs @@ -129,7 +129,7 @@ namespace SabreTools.Serialization.Readers.Test var row = new Data.Models.AttractMode.Row { - Name = "XXXXXX", + Name = "name", Title = "XXXXXX", Emulator = "XXXXXX", CloneOf = "XXXXXX", @@ -178,7 +178,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.AttractMode.Row? row, bool longHeader) { Assert.NotNull(row); - Assert.Equal("XXXXXX", row.Name); + Assert.Equal("name", row.Name); Assert.Equal("XXXXXX", row.Title); Assert.Equal("XXXXXX", row.Emulator); Assert.Equal("XXXXXX", row.CloneOf); diff --git a/SabreTools.Serialization.Readers.Test/ClrMameProTests.cs b/SabreTools.Serialization.Readers.Test/ClrMameProTests.cs index e12bf623..731bfba5 100644 --- a/SabreTools.Serialization.Readers.Test/ClrMameProTests.cs +++ b/SabreTools.Serialization.Readers.Test/ClrMameProTests.cs @@ -178,7 +178,7 @@ namespace SabreTools.Serialization.Readers.Test { var cmp = new Data.Models.ClrMamePro.ClrMamePro { - Name = "XXXXXX", + Name = "name", Description = "description", RootDir = "XXXXXX", Category = "XXXXXX", @@ -197,7 +197,7 @@ namespace SabreTools.Serialization.Readers.Test var release = new Data.Models.ClrMamePro.Release { - Name = "XXXXXX", + Name = "name", Region = "XXXXXX", Language = "XXXXXX", Date = "XXXXXX", @@ -206,14 +206,14 @@ namespace SabreTools.Serialization.Readers.Test var biosset = new Data.Models.ClrMamePro.BiosSet { - Name = "XXXXXX", + Name = "name", Description = "description", Default = true, }; var rom = new Data.Models.ClrMamePro.Rom { - Name = "XXXXXX", + Name = "name", Size = "XXXXXX", CRC16 = "XXXXXX", CRC = "XXXXXX", @@ -244,7 +244,7 @@ namespace SabreTools.Serialization.Readers.Test var disk = new Data.Models.ClrMamePro.Disk { - Name = "XXXXXX", + Name = "name", MD5 = "XXXXXX", SHA1 = "XXXXXX", Merge = "XXXXXX", @@ -254,17 +254,17 @@ namespace SabreTools.Serialization.Readers.Test var sample = new Data.Models.ClrMamePro.Sample { - Name = "XXXXXX", + Name = "name", }; var archive = new Data.Models.ClrMamePro.Archive { - Name = "XXXXXX", + Name = "name", }; var media = new Data.Models.ClrMamePro.Media { - Name = "XXXXXX", + Name = "name", MD5 = "XXXXXX", SHA1 = "XXXXXX", SHA256 = "XXXXXX", @@ -274,7 +274,7 @@ namespace SabreTools.Serialization.Readers.Test var chip = new Data.Models.ClrMamePro.Chip { Type = Data.Models.Metadata.ChipType.CPU, - Name = "XXXXXX", + Name = "name", Flags = "XXXXXX", Clock = "XXXXXX", }; @@ -307,7 +307,7 @@ namespace SabreTools.Serialization.Readers.Test var dipswitch = new Data.Models.ClrMamePro.DipSwitch { - Name = "XXXXXX", + Name = "name", Entry = ["XXXXXX"], Default = true, }; @@ -325,7 +325,7 @@ namespace SabreTools.Serialization.Readers.Test Data.Models.ClrMamePro.GameBase gameBase = game ? new Data.Models.ClrMamePro.Game() : new Data.Models.ClrMamePro.Machine(); - gameBase.Name = "XXXXXX"; + gameBase.Name = "name"; gameBase.Description = "description"; gameBase.DriverStatus = "XXXXXX"; gameBase.Year = "XXXXXX"; @@ -367,7 +367,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.ClrMamePro.ClrMamePro? cmp) { Assert.NotNull(cmp); - Assert.Equal("XXXXXX", cmp.Name); + Assert.Equal("name", cmp.Name); Assert.Equal("description", cmp.Description); Assert.Equal("XXXXXX", cmp.RootDir); Assert.Equal("XXXXXX", cmp.Category); @@ -390,7 +390,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.ClrMamePro.GameBase? gb) { Assert.NotNull(gb); - Assert.Equal("XXXXXX", gb.Name); + Assert.Equal("name", gb.Name); Assert.Equal("description", gb.Description); // Assert.Equal("XXXXXX", gb.DriverStatus); // TODO: Needs metadata mapping Assert.Equal("XXXXXX", gb.Year); @@ -452,7 +452,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.ClrMamePro.Release? release) { Assert.NotNull(release); - Assert.Equal("XXXXXX", release.Name); + Assert.Equal("name", release.Name); Assert.Equal("XXXXXX", release.Region); Assert.Equal("XXXXXX", release.Language); Assert.Equal("XXXXXX", release.Date); @@ -465,7 +465,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.ClrMamePro.BiosSet? biosset) { Assert.NotNull(biosset); - Assert.Equal("XXXXXX", biosset.Name); + Assert.Equal("name", biosset.Name); Assert.Equal("description", biosset.Description); Assert.Equal(true, biosset.Default); } @@ -476,7 +476,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.ClrMamePro.Rom? rom) { Assert.NotNull(rom); - Assert.Equal("XXXXXX", rom.Name); + Assert.Equal("name", rom.Name); Assert.Equal("XXXXXX", rom.Size); Assert.Equal("XXXXXX", rom.CRC16); Assert.Equal("XXXXXX", rom.CRC); @@ -511,7 +511,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.ClrMamePro.Disk? disk) { Assert.NotNull(disk); - Assert.Equal("XXXXXX", disk.Name); + Assert.Equal("name", disk.Name); Assert.Equal("XXXXXX", disk.MD5); Assert.Equal("XXXXXX", disk.SHA1); Assert.Equal("XXXXXX", disk.Merge); @@ -525,7 +525,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.ClrMamePro.Sample? sample) { Assert.NotNull(sample); - Assert.Equal("XXXXXX", sample.Name); + Assert.Equal("name", sample.Name); } /// @@ -534,7 +534,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.ClrMamePro.Archive? archive) { Assert.NotNull(archive); - Assert.Equal("XXXXXX", archive.Name); + Assert.Equal("name", archive.Name); } /// @@ -543,7 +543,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.ClrMamePro.Media? media) { Assert.NotNull(media); - Assert.Equal("XXXXXX", media.Name); + Assert.Equal("name", media.Name); Assert.Equal("XXXXXX", media.MD5); Assert.Equal("XXXXXX", media.SHA1); Assert.Equal("XXXXXX", media.SHA256); @@ -557,7 +557,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(chip); Assert.Equal(Data.Models.Metadata.ChipType.CPU, chip.Type); - Assert.Equal("XXXXXX", chip.Name); + Assert.Equal("name", chip.Name); Assert.Equal("XXXXXX", chip.Flags); Assert.Equal("XXXXXX", chip.Clock); } @@ -606,7 +606,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.ClrMamePro.DipSwitch? dipswitch) { Assert.NotNull(dipswitch); - Assert.Equal("XXXXXX", dipswitch.Name); + Assert.Equal("name", dipswitch.Name); Assert.NotNull(dipswitch.Entry); string entry = Assert.Single(dipswitch.Entry); diff --git a/SabreTools.Serialization.Readers.Test/DosCenterTests.cs b/SabreTools.Serialization.Readers.Test/DosCenterTests.cs index dd6a2db0..0332eee7 100644 --- a/SabreTools.Serialization.Readers.Test/DosCenterTests.cs +++ b/SabreTools.Serialization.Readers.Test/DosCenterTests.cs @@ -101,7 +101,7 @@ namespace SabreTools.Serialization.Readers.Test { var dc = new Data.Models.DosCenter.DosCenter { - Name = "XXXXXX", + Name = "name", Description = "description", Version = "XXXXXX", Date = "XXXXXX", @@ -112,7 +112,7 @@ namespace SabreTools.Serialization.Readers.Test var file = new Data.Models.DosCenter.File { - Name = "XXXXXX", + Name = "name", Size = "XXXXXX", CRC = "XXXXXX", SHA1 = "XXXXXX", @@ -121,7 +121,7 @@ namespace SabreTools.Serialization.Readers.Test var game = new Data.Models.DosCenter.Game { - Name = "XXXXXX", + Name = "name", File = [file], }; @@ -138,7 +138,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.DosCenter.DosCenter? cmp) { Assert.NotNull(cmp); - Assert.Equal("XXXXXX", cmp.Name); + Assert.Equal("name", cmp.Name); Assert.Equal("description", cmp.Description); Assert.Equal("XXXXXX", cmp.Version); Assert.Equal("XXXXXX", cmp.Date); @@ -153,7 +153,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.DosCenter.Game? game) { Assert.NotNull(game); - Assert.Equal("XXXXXX", game.Name); + Assert.Equal("name", game.Name); Assert.NotNull(game.File); var file = Assert.Single(game.File); @@ -166,7 +166,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.DosCenter.File? rom) { Assert.NotNull(rom); - Assert.Equal("XXXXXX", rom.Name); + Assert.Equal("name", rom.Name); Assert.Equal("XXXXXX", rom.Size); Assert.Equal("XXXXXX", rom.CRC); Assert.Equal("XXXXXX", rom.SHA1); diff --git a/SabreTools.Serialization.Readers.Test/EverdriveSMDBTests.cs b/SabreTools.Serialization.Readers.Test/EverdriveSMDBTests.cs index c296c62c..63b2c334 100644 --- a/SabreTools.Serialization.Readers.Test/EverdriveSMDBTests.cs +++ b/SabreTools.Serialization.Readers.Test/EverdriveSMDBTests.cs @@ -101,7 +101,7 @@ namespace SabreTools.Serialization.Readers.Test var row = new Data.Models.EverdriveSMDB.Row { SHA256 = "XXXXXX", - Name = "XXXXXX", + Name = "name", SHA1 = "XXXXXX", MD5 = "XXXXXX", CRC32 = "XXXXXX", @@ -121,7 +121,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(row); Assert.Equal("XXXXXX", row.SHA256); - Assert.Equal("XXXXXX", row.Name); + Assert.Equal("name", row.Name); Assert.Equal("XXXXXX", row.SHA1); Assert.Equal("XXXXXX", row.MD5); Assert.Equal("XXXXXX", row.CRC32); diff --git a/SabreTools.Serialization.Readers.Test/ListromTests.cs b/SabreTools.Serialization.Readers.Test/ListromTests.cs index 5bc0e380..6e5b9991 100644 --- a/SabreTools.Serialization.Readers.Test/ListromTests.cs +++ b/SabreTools.Serialization.Readers.Test/ListromTests.cs @@ -102,7 +102,7 @@ namespace SabreTools.Serialization.Readers.Test { var romGood = new Data.Models.Listrom.Row { - Name = "XXXXXX", + Name = "name", Size = "12345", Bad = false, CRC = Hashing.HashType.CRC32.ZeroString, @@ -112,7 +112,7 @@ namespace SabreTools.Serialization.Readers.Test var romBad = new Data.Models.Listrom.Row { - Name = "XXXXXX", + Name = "name", Size = "12345", Bad = true, CRC = Hashing.HashType.CRC32.ZeroString, @@ -122,7 +122,7 @@ namespace SabreTools.Serialization.Readers.Test var diskGoodMd5 = new Data.Models.Listrom.Row { - Name = "XXXXXX", + Name = "name", Bad = false, MD5 = Hashing.HashType.MD5.ZeroString, SHA1 = null, @@ -131,7 +131,7 @@ namespace SabreTools.Serialization.Readers.Test var diskGoodSha1 = new Data.Models.Listrom.Row { - Name = "XXXXXX", + Name = "name", Bad = false, MD5 = null, SHA1 = Hashing.HashType.SHA1.ZeroString, @@ -140,7 +140,7 @@ namespace SabreTools.Serialization.Readers.Test var diskBad = new Data.Models.Listrom.Row { - Name = "XXXXXX", + Name = "name", Bad = false, MD5 = Hashing.HashType.MD5.ZeroString, SHA1 = Hashing.HashType.SHA1.ZeroString, @@ -202,7 +202,7 @@ namespace SabreTools.Serialization.Readers.Test private static void ValidateGoodRom(Data.Models.Listrom.Row? row) { Assert.NotNull(row); - Assert.Equal("XXXXXX", row.Name); + Assert.Equal("name", row.Name); Assert.Equal("12345", row.Size); Assert.False(row.Bad); Assert.Equal(Hashing.HashType.CRC32.ZeroString, row.CRC); @@ -216,7 +216,7 @@ namespace SabreTools.Serialization.Readers.Test private static void ValidateBadRom(Data.Models.Listrom.Row? row) { Assert.NotNull(row); - Assert.Equal("XXXXXX", row.Name); + Assert.Equal("name", row.Name); Assert.Equal("12345", row.Size); Assert.True(row.Bad); Assert.Equal(Hashing.HashType.CRC32.ZeroString, row.CRC); @@ -230,7 +230,7 @@ namespace SabreTools.Serialization.Readers.Test private static void ValidateGoodMd5Disk(Data.Models.Listrom.Row? row) { Assert.NotNull(row); - Assert.Equal("XXXXXX", row.Name); + Assert.Equal("name", row.Name); Assert.False(row.Bad); Assert.Equal(Hashing.HashType.MD5.ZeroString, row.MD5); Assert.Null(row.SHA1); @@ -243,7 +243,7 @@ namespace SabreTools.Serialization.Readers.Test private static void ValidateGoodSha1Disk(Data.Models.Listrom.Row? row) { Assert.NotNull(row); - Assert.Equal("XXXXXX", row.Name); + Assert.Equal("name", row.Name); Assert.False(row.Bad); Assert.Null(row.MD5); Assert.Equal(Hashing.HashType.SHA1.ZeroString, row.SHA1); @@ -256,7 +256,7 @@ namespace SabreTools.Serialization.Readers.Test private static void ValidateBadDisk(Data.Models.Listrom.Row? row) { Assert.NotNull(row); - Assert.Equal("XXXXXX", row.Name); + Assert.Equal("name", row.Name); Assert.False(row.Bad); Assert.Null(row.MD5); Assert.Null(row.SHA1); diff --git a/SabreTools.Serialization.Readers.Test/ListxmlTests.cs b/SabreTools.Serialization.Readers.Test/ListxmlTests.cs index 69f944f4..5b14375e 100644 --- a/SabreTools.Serialization.Readers.Test/ListxmlTests.cs +++ b/SabreTools.Serialization.Readers.Test/ListxmlTests.cs @@ -132,14 +132,14 @@ namespace SabreTools.Serialization.Readers.Test { var biosset = new Data.Models.Listxml.BiosSet { - Name = "XXXXXX", + Name = "name", Description = "description", Default = true, }; var rom = new Data.Models.Listxml.Rom { - Name = "XXXXXX", + Name = "name", Bios = "XXXXXX", Size = "XXXXXX", CRC = "XXXXXX", @@ -155,7 +155,7 @@ namespace SabreTools.Serialization.Readers.Test var disk = new Data.Models.Listxml.Disk { - Name = "XXXXXX", + Name = "name", MD5 = "XXXXXX", SHA1 = "XXXXXX", Merge = "XXXXXX", @@ -168,17 +168,17 @@ namespace SabreTools.Serialization.Readers.Test var deviceref = new Data.Models.Listxml.DeviceRef { - Name = "XXXXXX", + Name = "name", }; var sample = new Data.Models.Listxml.Sample { - Name = "XXXXXX", + Name = "name", }; var chip = new Data.Models.Listxml.Chip { - Name = "XXXXXX", + Name = "name", Tag = "tag", Type = Data.Models.Metadata.ChipType.CPU, SoundOnly = true, @@ -256,14 +256,14 @@ namespace SabreTools.Serialization.Readers.Test var diplocation = new Data.Models.Listxml.DipLocation { - Name = "XXXXXX", + Name = "name", Number = "XXXXXX", Inverted = true, }; var dipvalue = new Data.Models.Listxml.DipValue { - Name = "XXXXXX", + Name = "name", Value = "value", Default = true, Condition = condition, @@ -271,7 +271,7 @@ namespace SabreTools.Serialization.Readers.Test var dipswitch = new Data.Models.Listxml.DipSwitch { - Name = "XXXXXX", + Name = "name", Tag = "tag", Mask = "mask", Condition = condition, @@ -281,14 +281,14 @@ namespace SabreTools.Serialization.Readers.Test var conflocation = new Data.Models.Listxml.ConfLocation { - Name = "XXXXXX", + Name = "name", Number = "XXXXXX", Inverted = true, }; var confsetting = new Data.Models.Listxml.ConfSetting { - Name = "XXXXXX", + Name = "name", Value = "value", Default = true, Condition = condition, @@ -296,7 +296,7 @@ namespace SabreTools.Serialization.Readers.Test var configuration = new Data.Models.Listxml.Configuration { - Name = "XXXXXX", + Name = "name", Tag = "tag", Mask = "mask", Condition = condition, @@ -317,7 +317,7 @@ namespace SabreTools.Serialization.Readers.Test var adjuster = new Data.Models.Listxml.Adjuster { - Name = "XXXXXX", + Name = "name", Default = true, Condition = condition, }; @@ -346,13 +346,13 @@ namespace SabreTools.Serialization.Readers.Test var instance = new Data.Models.Listxml.Instance { - Name = "XXXXXX", + Name = "name", BriefName = "XXXXXX", }; var extension = new Data.Models.Listxml.Extension { - Name = "XXXXXX", + Name = "name", }; var device = new Data.Models.Listxml.Device @@ -368,28 +368,28 @@ namespace SabreTools.Serialization.Readers.Test var slotOption = new Data.Models.Listxml.SlotOption { - Name = "XXXXXX", + Name = "name", DevName = "XXXXXX", Default = true, }; var slot = new Data.Models.Listxml.Slot { - Name = "XXXXXX", + Name = "name", SlotOption = [slotOption], }; var softwarelist = new Data.Models.Listxml.SoftwareList { Tag = "tag", - Name = "XXXXXX", + Name = "name", Status = Data.Models.Metadata.SoftwareListStatus.Original, Filter = "XXXXXX", }; var ramoption = new Data.Models.Listxml.RamOption { - Name = "XXXXXX", + Name = "name", Default = true, Content = "XXXXXX", }; @@ -397,7 +397,7 @@ namespace SabreTools.Serialization.Readers.Test Data.Models.Listxml.GameBase gameBase = game ? new Data.Models.Listxml.Game() : new Data.Models.Listxml.Machine(); - gameBase.Name = "XXXXXX"; + gameBase.Name = "name"; gameBase.SourceFile = "XXXXXX"; gameBase.IsBios = true; gameBase.IsDevice = true; @@ -446,7 +446,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.GameBase? gb) { Assert.NotNull(gb); - Assert.Equal("XXXXXX", gb.Name); + Assert.Equal("name", gb.Name); Assert.Equal("XXXXXX", gb.SourceFile); Assert.Equal(true, gb.IsBios); Assert.Equal(true, gb.IsDevice); @@ -540,7 +540,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.BiosSet? biosset) { Assert.NotNull(biosset); - Assert.Equal("XXXXXX", biosset.Name); + Assert.Equal("name", biosset.Name); Assert.Equal("description", biosset.Description); Assert.Equal(true, biosset.Default); } @@ -551,7 +551,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Rom? rom) { Assert.NotNull(rom); - Assert.Equal("XXXXXX", rom.Name); + Assert.Equal("name", rom.Name); Assert.Equal("XXXXXX", rom.Bios); Assert.Equal("XXXXXX", rom.Size); Assert.Equal("XXXXXX", rom.CRC); @@ -571,7 +571,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Disk? disk) { Assert.NotNull(disk); - Assert.Equal("XXXXXX", disk.Name); + Assert.Equal("name", disk.Name); Assert.Equal("XXXXXX", disk.MD5); Assert.Equal("XXXXXX", disk.SHA1); Assert.Equal("XXXXXX", disk.Merge); @@ -588,7 +588,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.DeviceRef? deviceref) { Assert.NotNull(deviceref); - Assert.Equal("XXXXXX", deviceref.Name); + Assert.Equal("name", deviceref.Name); } /// @@ -597,7 +597,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Sample? sample) { Assert.NotNull(sample); - Assert.Equal("XXXXXX", sample.Name); + Assert.Equal("name", sample.Name); } /// @@ -606,7 +606,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Chip? chip) { Assert.NotNull(chip); - Assert.Equal("XXXXXX", chip.Name); + Assert.Equal("name", chip.Name); Assert.Equal("tag", chip.Tag); Assert.Equal(Data.Models.Metadata.ChipType.CPU, chip.Type); Assert.Equal(true, chip.SoundOnly); @@ -703,7 +703,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.DipSwitch? dipswitch) { Assert.NotNull(dipswitch); - Assert.Equal("XXXXXX", dipswitch.Name); + Assert.Equal("name", dipswitch.Name); Assert.Equal("tag", dipswitch.Tag); Assert.Equal("mask", dipswitch.Mask); Validate(dipswitch.Condition); @@ -735,7 +735,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.DipLocation? diplocation) { Assert.NotNull(diplocation); - Assert.Equal("XXXXXX", diplocation.Name); + Assert.Equal("name", diplocation.Name); Assert.Equal("XXXXXX", diplocation.Number); Assert.Equal(true, diplocation.Inverted); } @@ -746,7 +746,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.DipValue? dipvalue) { Assert.NotNull(dipvalue); - Assert.Equal("XXXXXX", dipvalue.Name); + Assert.Equal("name", dipvalue.Name); Assert.Equal("value", dipvalue.Value); Assert.Equal(true, dipvalue.Default); Validate(dipvalue.Condition); @@ -758,7 +758,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Configuration? configuration) { Assert.NotNull(configuration); - Assert.Equal("XXXXXX", configuration.Name); + Assert.Equal("name", configuration.Name); Assert.Equal("tag", configuration.Tag); Assert.Equal("mask", configuration.Mask); Validate(configuration.Condition); @@ -778,7 +778,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.ConfLocation? conflocation) { Assert.NotNull(conflocation); - Assert.Equal("XXXXXX", conflocation.Name); + Assert.Equal("name", conflocation.Name); Assert.Equal("XXXXXX", conflocation.Number); Assert.Equal(true, conflocation.Inverted); } @@ -789,7 +789,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.ConfSetting? confsetting) { Assert.NotNull(confsetting); - Assert.Equal("XXXXXX", confsetting.Name); + Assert.Equal("name", confsetting.Name); Assert.Equal("value", confsetting.Value); Assert.Equal(true, confsetting.Default); Validate(confsetting.Condition); @@ -823,7 +823,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Adjuster? adjuster) { Assert.NotNull(adjuster); - Assert.Equal("XXXXXX", adjuster.Name); + Assert.Equal("name", adjuster.Name); Assert.Equal(true, adjuster.Default); Validate(adjuster.Condition); } @@ -882,7 +882,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Instance? instance) { Assert.NotNull(instance); - Assert.Equal("XXXXXX", instance.Name); + Assert.Equal("name", instance.Name); Assert.Equal("XXXXXX", instance.BriefName); } @@ -892,7 +892,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Extension? extension) { Assert.NotNull(extension); - Assert.Equal("XXXXXX", extension.Name); + Assert.Equal("name", extension.Name); } /// @@ -901,7 +901,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Slot? slot) { Assert.NotNull(slot); - Assert.Equal("XXXXXX", slot.Name); + Assert.Equal("name", slot.Name); Assert.NotNull(slot.SlotOption); var slotoption = Assert.Single(slot.SlotOption); @@ -914,7 +914,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.SlotOption? slotoption) { Assert.NotNull(slotoption); - Assert.Equal("XXXXXX", slotoption.Name); + Assert.Equal("name", slotoption.Name); Assert.Equal("XXXXXX", slotoption.DevName); Assert.Equal(true, slotoption.Default); } @@ -926,7 +926,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(softwarelist); Assert.Equal("tag", softwarelist.Tag); - Assert.Equal("XXXXXX", softwarelist.Name); + Assert.Equal("name", softwarelist.Name); Assert.Equal(Data.Models.Metadata.SoftwareListStatus.Original, softwarelist.Status); Assert.Equal("XXXXXX", softwarelist.Filter); } @@ -937,7 +937,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.RamOption? ramoption) { Assert.NotNull(ramoption); - Assert.Equal("XXXXXX", ramoption.Name); + Assert.Equal("name", ramoption.Name); Assert.Equal(true, ramoption.Default); Assert.Equal("XXXXXX", ramoption.Content); } diff --git a/SabreTools.Serialization.Readers.Test/LogiqxTests.cs b/SabreTools.Serialization.Readers.Test/LogiqxTests.cs index 15719680..88e48ebb 100644 --- a/SabreTools.Serialization.Readers.Test/LogiqxTests.cs +++ b/SabreTools.Serialization.Readers.Test/LogiqxTests.cs @@ -160,7 +160,7 @@ namespace SabreTools.Serialization.Readers.Test var header = new Data.Models.Logiqx.Header { Id = "XXXXXX", - Name = "XXXXXX", + Name = "name", Description = "description", RootDir = "XXXXXX", Category = "XXXXXX", @@ -196,7 +196,7 @@ namespace SabreTools.Serialization.Readers.Test var release = new Data.Models.Logiqx.Release { - Name = "XXXXXX", + Name = "name", Region = "XXXXXX", Language = "XXXXXX", Date = "XXXXXX", @@ -205,14 +205,14 @@ namespace SabreTools.Serialization.Readers.Test var biosset = new Data.Models.Logiqx.BiosSet { - Name = "XXXXXX", + Name = "name", Description = "description", Default = true, }; var rom = new Data.Models.Logiqx.Rom { - Name = "XXXXXX", + Name = "name", Size = "XXXXXX", CRC16 = "XXXXXX", CRC = "XXXXXX", @@ -240,7 +240,7 @@ namespace SabreTools.Serialization.Readers.Test var disk = new Data.Models.Logiqx.Disk { - Name = "XXXXXX", + Name = "name", MD5 = "XXXXXX", SHA1 = "XXXXXX", Merge = "XXXXXX", @@ -250,7 +250,7 @@ namespace SabreTools.Serialization.Readers.Test var media = new Data.Models.Logiqx.Media { - Name = "XXXXXX", + Name = "name", MD5 = "XXXXXX", SHA1 = "XXXXXX", SHA256 = "XXXXXX", @@ -259,17 +259,17 @@ namespace SabreTools.Serialization.Readers.Test var deviceRef = new Data.Models.Logiqx.DeviceRef { - Name = "XXXXXX", + Name = "name", }; var sample = new Data.Models.Logiqx.Sample { - Name = "XXXXXX", + Name = "name", }; var archive = new Data.Models.Logiqx.Archive { - Name = "XXXXXX", + Name = "name", }; var driver = new Data.Models.Logiqx.Driver @@ -287,7 +287,7 @@ namespace SabreTools.Serialization.Readers.Test var softwarelist = new Data.Models.Logiqx.SoftwareList { Tag = "tag", - Name = "XXXXXX", + Name = "name", Status = Data.Models.Metadata.SoftwareListStatus.Original, Filter = "XXXXXX", }; @@ -295,7 +295,7 @@ namespace SabreTools.Serialization.Readers.Test Data.Models.Logiqx.GameBase gameBase = game ? new Data.Models.Logiqx.Game() : new Data.Models.Logiqx.Machine(); - gameBase.Name = "XXXXXX"; + gameBase.Name = "name"; gameBase.SourceFile = "XXXXXX"; gameBase.IsBios = true; gameBase.IsDevice = true; @@ -344,7 +344,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(header); Assert.Equal("XXXXXX", header.Id); - Assert.Equal("XXXXXX", header.Name); + Assert.Equal("name", header.Name); Assert.Equal("description", header.Description); Assert.Equal("XXXXXX", header.RootDir); Assert.Equal("XXXXXX", header.Category); @@ -393,7 +393,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Logiqx.GameBase? gb) { Assert.NotNull(gb); - Assert.Equal("XXXXXX", gb.Name); + Assert.Equal("name", gb.Name); Assert.Equal("XXXXXX", gb.SourceFile); Assert.Equal(true, gb.IsBios); Assert.Equal(true, gb.IsDevice); @@ -489,7 +489,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Logiqx.Release? release) { Assert.NotNull(release); - Assert.Equal("XXXXXX", release.Name); + Assert.Equal("name", release.Name); Assert.Equal("XXXXXX", release.Region); Assert.Equal("XXXXXX", release.Language); Assert.Equal("XXXXXX", release.Date); @@ -502,7 +502,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Logiqx.BiosSet? biosset) { Assert.NotNull(biosset); - Assert.Equal("XXXXXX", biosset.Name); + Assert.Equal("name", biosset.Name); Assert.Equal("description", biosset.Description); Assert.Equal(true, biosset.Default); } @@ -513,7 +513,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Logiqx.Rom? rom) { Assert.NotNull(rom); - Assert.Equal("XXXXXX", rom.Name); + Assert.Equal("name", rom.Name); Assert.Equal("XXXXXX", rom.Size); Assert.Equal("XXXXXX", rom.CRC); Assert.Equal("XXXXXX", rom.MD2); @@ -543,7 +543,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Logiqx.Disk? disk) { Assert.NotNull(disk); - Assert.Equal("XXXXXX", disk.Name); + Assert.Equal("name", disk.Name); Assert.Equal("XXXXXX", disk.MD5); Assert.Equal("XXXXXX", disk.SHA1); Assert.Equal("XXXXXX", disk.Merge); @@ -557,7 +557,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Logiqx.Media? media) { Assert.NotNull(media); - Assert.Equal("XXXXXX", media.Name); + Assert.Equal("name", media.Name); Assert.Equal("XXXXXX", media.MD5); Assert.Equal("XXXXXX", media.SHA1); Assert.Equal("XXXXXX", media.SHA256); @@ -570,7 +570,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Logiqx.DeviceRef? deviceref) { Assert.NotNull(deviceref); - Assert.Equal("XXXXXX", deviceref.Name); + Assert.Equal("name", deviceref.Name); } /// @@ -579,7 +579,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Logiqx.Sample? sample) { Assert.NotNull(sample); - Assert.Equal("XXXXXX", sample.Name); + Assert.Equal("name", sample.Name); } /// @@ -588,7 +588,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Logiqx.Archive? archive) { Assert.NotNull(archive); - Assert.Equal("XXXXXX", archive.Name); + Assert.Equal("name", archive.Name); } /// @@ -614,7 +614,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(softwarelist); Assert.Equal("tag", softwarelist.Tag); - Assert.Equal("XXXXXX", softwarelist.Name); + Assert.Equal("name", softwarelist.Name); Assert.Equal(Data.Models.Metadata.SoftwareListStatus.Original, softwarelist.Status); Assert.Equal("XXXXXX", softwarelist.Filter); } diff --git a/SabreTools.Serialization.Readers.Test/M1Tests.cs b/SabreTools.Serialization.Readers.Test/M1Tests.cs index e637382b..efa904f0 100644 --- a/SabreTools.Serialization.Readers.Test/M1Tests.cs +++ b/SabreTools.Serialization.Readers.Test/M1Tests.cs @@ -128,14 +128,14 @@ namespace SabreTools.Serialization.Readers.Test { var biosset = new Data.Models.Listxml.BiosSet { - Name = "XXXXXX", + Name = "name", Description = "description", Default = true, }; var rom = new Data.Models.Listxml.Rom { - Name = "XXXXXX", + Name = "name", Bios = "XXXXXX", Size = "XXXXXX", CRC = "XXXXXX", @@ -151,7 +151,7 @@ namespace SabreTools.Serialization.Readers.Test var disk = new Data.Models.Listxml.Disk { - Name = "XXXXXX", + Name = "name", MD5 = "XXXXXX", SHA1 = "XXXXXX", Merge = "XXXXXX", @@ -164,17 +164,17 @@ namespace SabreTools.Serialization.Readers.Test var deviceref = new Data.Models.Listxml.DeviceRef { - Name = "XXXXXX", + Name = "name", }; var sample = new Data.Models.Listxml.Sample { - Name = "XXXXXX", + Name = "name", }; var chip = new Data.Models.Listxml.Chip { - Name = "XXXXXX", + Name = "name", Tag = "tag", Type = Data.Models.Metadata.ChipType.CPU, SoundOnly = true, @@ -252,14 +252,14 @@ namespace SabreTools.Serialization.Readers.Test var diplocation = new Data.Models.Listxml.DipLocation { - Name = "XXXXXX", + Name = "name", Number = "XXXXXX", Inverted = true, }; var dipvalue = new Data.Models.Listxml.DipValue { - Name = "XXXXXX", + Name = "name", Value = "value", Default = true, Condition = condition, @@ -267,7 +267,7 @@ namespace SabreTools.Serialization.Readers.Test var dipswitch = new Data.Models.Listxml.DipSwitch { - Name = "XXXXXX", + Name = "name", Tag = "tag", Mask = "mask", Condition = condition, @@ -277,14 +277,14 @@ namespace SabreTools.Serialization.Readers.Test var conflocation = new Data.Models.Listxml.ConfLocation { - Name = "XXXXXX", + Name = "name", Number = "XXXXXX", Inverted = true, }; var confsetting = new Data.Models.Listxml.ConfSetting { - Name = "XXXXXX", + Name = "name", Value = "value", Default = true, Condition = condition, @@ -292,7 +292,7 @@ namespace SabreTools.Serialization.Readers.Test var configuration = new Data.Models.Listxml.Configuration { - Name = "XXXXXX", + Name = "name", Tag = "tag", Mask = "mask", Condition = condition, @@ -313,7 +313,7 @@ namespace SabreTools.Serialization.Readers.Test var adjuster = new Data.Models.Listxml.Adjuster { - Name = "XXXXXX", + Name = "name", Default = true, Condition = condition, }; @@ -342,13 +342,13 @@ namespace SabreTools.Serialization.Readers.Test var instance = new Data.Models.Listxml.Instance { - Name = "XXXXXX", + Name = "name", BriefName = "XXXXXX", }; var extension = new Data.Models.Listxml.Extension { - Name = "XXXXXX", + Name = "name", }; var device = new Data.Models.Listxml.Device @@ -364,28 +364,28 @@ namespace SabreTools.Serialization.Readers.Test var slotOption = new Data.Models.Listxml.SlotOption { - Name = "XXXXXX", + Name = "name", DevName = "XXXXXX", Default = true, }; var slot = new Data.Models.Listxml.Slot { - Name = "XXXXXX", + Name = "name", SlotOption = [slotOption], }; var softwarelist = new Data.Models.Listxml.SoftwareList { Tag = "tag", - Name = "XXXXXX", + Name = "name", Status = Data.Models.Metadata.SoftwareListStatus.Original, Filter = "XXXXXX", }; var ramoption = new Data.Models.Listxml.RamOption { - Name = "XXXXXX", + Name = "name", Default = true, Content = "XXXXXX", }; @@ -393,7 +393,7 @@ namespace SabreTools.Serialization.Readers.Test Data.Models.Listxml.GameBase gameBase = game ? new Data.Models.Listxml.Game() : new Data.Models.Listxml.Machine(); - gameBase.Name = "XXXXXX"; + gameBase.Name = "name"; gameBase.SourceFile = "XXXXXX"; gameBase.IsBios = true; gameBase.IsDevice = true; @@ -440,7 +440,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.GameBase? gb) { Assert.NotNull(gb); - Assert.Equal("XXXXXX", gb.Name); + Assert.Equal("name", gb.Name); Assert.Equal("XXXXXX", gb.SourceFile); Assert.Equal(true, gb.IsBios); Assert.Equal(true, gb.IsDevice); @@ -534,7 +534,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.BiosSet? biosset) { Assert.NotNull(biosset); - Assert.Equal("XXXXXX", biosset.Name); + Assert.Equal("name", biosset.Name); Assert.Equal("description", biosset.Description); Assert.Equal(true, biosset.Default); } @@ -545,7 +545,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Rom? rom) { Assert.NotNull(rom); - Assert.Equal("XXXXXX", rom.Name); + Assert.Equal("name", rom.Name); Assert.Equal("XXXXXX", rom.Bios); Assert.Equal("XXXXXX", rom.Size); Assert.Equal("XXXXXX", rom.CRC); @@ -565,7 +565,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Disk? disk) { Assert.NotNull(disk); - Assert.Equal("XXXXXX", disk.Name); + Assert.Equal("name", disk.Name); Assert.Equal("XXXXXX", disk.MD5); Assert.Equal("XXXXXX", disk.SHA1); Assert.Equal("XXXXXX", disk.Merge); @@ -582,7 +582,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.DeviceRef? deviceref) { Assert.NotNull(deviceref); - Assert.Equal("XXXXXX", deviceref.Name); + Assert.Equal("name", deviceref.Name); } /// @@ -591,7 +591,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Sample? sample) { Assert.NotNull(sample); - Assert.Equal("XXXXXX", sample.Name); + Assert.Equal("name", sample.Name); } /// @@ -600,7 +600,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Chip? chip) { Assert.NotNull(chip); - Assert.Equal("XXXXXX", chip.Name); + Assert.Equal("name", chip.Name); Assert.Equal("tag", chip.Tag); Assert.Equal(Data.Models.Metadata.ChipType.CPU, chip.Type); Assert.Equal(true, chip.SoundOnly); @@ -697,7 +697,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.DipSwitch? dipswitch) { Assert.NotNull(dipswitch); - Assert.Equal("XXXXXX", dipswitch.Name); + Assert.Equal("name", dipswitch.Name); Assert.Equal("tag", dipswitch.Tag); Assert.Equal("mask", dipswitch.Mask); Validate(dipswitch.Condition); @@ -729,7 +729,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.DipLocation? diplocation) { Assert.NotNull(diplocation); - Assert.Equal("XXXXXX", diplocation.Name); + Assert.Equal("name", diplocation.Name); Assert.Equal("XXXXXX", diplocation.Number); Assert.Equal(true, diplocation.Inverted); } @@ -740,7 +740,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.DipValue? dipvalue) { Assert.NotNull(dipvalue); - Assert.Equal("XXXXXX", dipvalue.Name); + Assert.Equal("name", dipvalue.Name); Assert.Equal("value", dipvalue.Value); Assert.Equal(true, dipvalue.Default); Validate(dipvalue.Condition); @@ -752,7 +752,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Configuration? configuration) { Assert.NotNull(configuration); - Assert.Equal("XXXXXX", configuration.Name); + Assert.Equal("name", configuration.Name); Assert.Equal("tag", configuration.Tag); Assert.Equal("mask", configuration.Mask); Validate(configuration.Condition); @@ -772,7 +772,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.ConfLocation? conflocation) { Assert.NotNull(conflocation); - Assert.Equal("XXXXXX", conflocation.Name); + Assert.Equal("name", conflocation.Name); Assert.Equal("XXXXXX", conflocation.Number); Assert.Equal(true, conflocation.Inverted); } @@ -783,7 +783,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.ConfSetting? confsetting) { Assert.NotNull(confsetting); - Assert.Equal("XXXXXX", confsetting.Name); + Assert.Equal("name", confsetting.Name); Assert.Equal("value", confsetting.Value); Assert.Equal(true, confsetting.Default); Validate(confsetting.Condition); @@ -817,7 +817,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Adjuster? adjuster) { Assert.NotNull(adjuster); - Assert.Equal("XXXXXX", adjuster.Name); + Assert.Equal("name", adjuster.Name); Assert.Equal(true, adjuster.Default); Validate(adjuster.Condition); } @@ -876,7 +876,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Instance? instance) { Assert.NotNull(instance); - Assert.Equal("XXXXXX", instance.Name); + Assert.Equal("name", instance.Name); Assert.Equal("XXXXXX", instance.BriefName); } @@ -886,7 +886,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Extension? extension) { Assert.NotNull(extension); - Assert.Equal("XXXXXX", extension.Name); + Assert.Equal("name", extension.Name); } /// @@ -895,7 +895,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Slot? slot) { Assert.NotNull(slot); - Assert.Equal("XXXXXX", slot.Name); + Assert.Equal("name", slot.Name); Assert.NotNull(slot.SlotOption); var slotoption = Assert.Single(slot.SlotOption); @@ -908,7 +908,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.SlotOption? slotoption) { Assert.NotNull(slotoption); - Assert.Equal("XXXXXX", slotoption.Name); + Assert.Equal("name", slotoption.Name); Assert.Equal("XXXXXX", slotoption.DevName); Assert.Equal(true, slotoption.Default); } @@ -920,7 +920,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(softwarelist); Assert.Equal("tag", softwarelist.Tag); - Assert.Equal("XXXXXX", softwarelist.Name); + Assert.Equal("name", softwarelist.Name); Assert.Equal(Data.Models.Metadata.SoftwareListStatus.Original, softwarelist.Status); Assert.Equal("XXXXXX", softwarelist.Filter); } @@ -931,7 +931,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.RamOption? ramoption) { Assert.NotNull(ramoption); - Assert.Equal("XXXXXX", ramoption.Name); + Assert.Equal("name", ramoption.Name); Assert.Equal(true, ramoption.Default); Assert.Equal("XXXXXX", ramoption.Content); } diff --git a/SabreTools.Serialization.Readers.Test/MessTests.cs b/SabreTools.Serialization.Readers.Test/MessTests.cs index 160a5e0c..29ef44eb 100644 --- a/SabreTools.Serialization.Readers.Test/MessTests.cs +++ b/SabreTools.Serialization.Readers.Test/MessTests.cs @@ -128,14 +128,14 @@ namespace SabreTools.Serialization.Readers.Test { var biosset = new Data.Models.Listxml.BiosSet { - Name = "XXXXXX", + Name = "name", Description = "description", Default = true, }; var rom = new Data.Models.Listxml.Rom { - Name = "XXXXXX", + Name = "name", Bios = "XXXXXX", Size = "XXXXXX", CRC = "XXXXXX", @@ -151,7 +151,7 @@ namespace SabreTools.Serialization.Readers.Test var disk = new Data.Models.Listxml.Disk { - Name = "XXXXXX", + Name = "name", MD5 = "XXXXXX", SHA1 = "XXXXXX", Merge = "XXXXXX", @@ -164,17 +164,17 @@ namespace SabreTools.Serialization.Readers.Test var deviceref = new Data.Models.Listxml.DeviceRef { - Name = "XXXXXX", + Name = "name", }; var sample = new Data.Models.Listxml.Sample { - Name = "XXXXXX", + Name = "name", }; var chip = new Data.Models.Listxml.Chip { - Name = "XXXXXX", + Name = "name", Tag = "tag", Type = Data.Models.Metadata.ChipType.CPU, SoundOnly = true, @@ -252,14 +252,14 @@ namespace SabreTools.Serialization.Readers.Test var diplocation = new Data.Models.Listxml.DipLocation { - Name = "XXXXXX", + Name = "name", Number = "XXXXXX", Inverted = true, }; var dipvalue = new Data.Models.Listxml.DipValue { - Name = "XXXXXX", + Name = "name", Value = "value", Default = true, Condition = condition, @@ -267,7 +267,7 @@ namespace SabreTools.Serialization.Readers.Test var dipswitch = new Data.Models.Listxml.DipSwitch { - Name = "XXXXXX", + Name = "name", Tag = "tag", Mask = "mask", Condition = condition, @@ -277,14 +277,14 @@ namespace SabreTools.Serialization.Readers.Test var conflocation = new Data.Models.Listxml.ConfLocation { - Name = "XXXXXX", + Name = "name", Number = "XXXXXX", Inverted = true, }; var confsetting = new Data.Models.Listxml.ConfSetting { - Name = "XXXXXX", + Name = "name", Value = "value", Default = true, Condition = condition, @@ -292,7 +292,7 @@ namespace SabreTools.Serialization.Readers.Test var configuration = new Data.Models.Listxml.Configuration { - Name = "XXXXXX", + Name = "name", Tag = "tag", Mask = "mask", Condition = condition, @@ -313,7 +313,7 @@ namespace SabreTools.Serialization.Readers.Test var adjuster = new Data.Models.Listxml.Adjuster { - Name = "XXXXXX", + Name = "name", Default = true, Condition = condition, }; @@ -342,13 +342,13 @@ namespace SabreTools.Serialization.Readers.Test var instance = new Data.Models.Listxml.Instance { - Name = "XXXXXX", + Name = "name", BriefName = "XXXXXX", }; var extension = new Data.Models.Listxml.Extension { - Name = "XXXXXX", + Name = "name", }; var device = new Data.Models.Listxml.Device @@ -364,28 +364,28 @@ namespace SabreTools.Serialization.Readers.Test var slotOption = new Data.Models.Listxml.SlotOption { - Name = "XXXXXX", + Name = "name", DevName = "XXXXXX", Default = true, }; var slot = new Data.Models.Listxml.Slot { - Name = "XXXXXX", + Name = "name", SlotOption = [slotOption], }; var softwarelist = new Data.Models.Listxml.SoftwareList { Tag = "tag", - Name = "XXXXXX", + Name = "name", Status = Data.Models.Metadata.SoftwareListStatus.Original, Filter = "XXXXXX", }; var ramoption = new Data.Models.Listxml.RamOption { - Name = "XXXXXX", + Name = "name", Default = true, Content = "XXXXXX", }; @@ -393,7 +393,7 @@ namespace SabreTools.Serialization.Readers.Test Data.Models.Listxml.GameBase gameBase = game ? new Data.Models.Listxml.Game() : new Data.Models.Listxml.Machine(); - gameBase.Name = "XXXXXX"; + gameBase.Name = "name"; gameBase.SourceFile = "XXXXXX"; gameBase.IsBios = true; gameBase.IsDevice = true; @@ -440,7 +440,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.GameBase? gb) { Assert.NotNull(gb); - Assert.Equal("XXXXXX", gb.Name); + Assert.Equal("name", gb.Name); Assert.Equal("XXXXXX", gb.SourceFile); Assert.Equal(true, gb.IsBios); Assert.Equal(true, gb.IsDevice); @@ -534,7 +534,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.BiosSet? biosset) { Assert.NotNull(biosset); - Assert.Equal("XXXXXX", biosset.Name); + Assert.Equal("name", biosset.Name); Assert.Equal("description", biosset.Description); Assert.Equal(true, biosset.Default); } @@ -545,7 +545,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Rom? rom) { Assert.NotNull(rom); - Assert.Equal("XXXXXX", rom.Name); + Assert.Equal("name", rom.Name); Assert.Equal("XXXXXX", rom.Bios); Assert.Equal("XXXXXX", rom.Size); Assert.Equal("XXXXXX", rom.CRC); @@ -565,7 +565,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Disk? disk) { Assert.NotNull(disk); - Assert.Equal("XXXXXX", disk.Name); + Assert.Equal("name", disk.Name); Assert.Equal("XXXXXX", disk.MD5); Assert.Equal("XXXXXX", disk.SHA1); Assert.Equal("XXXXXX", disk.Merge); @@ -582,7 +582,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.DeviceRef? deviceref) { Assert.NotNull(deviceref); - Assert.Equal("XXXXXX", deviceref.Name); + Assert.Equal("name", deviceref.Name); } /// @@ -591,7 +591,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Sample? sample) { Assert.NotNull(sample); - Assert.Equal("XXXXXX", sample.Name); + Assert.Equal("name", sample.Name); } /// @@ -600,7 +600,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Chip? chip) { Assert.NotNull(chip); - Assert.Equal("XXXXXX", chip.Name); + Assert.Equal("name", chip.Name); Assert.Equal("tag", chip.Tag); Assert.Equal(Data.Models.Metadata.ChipType.CPU, chip.Type); Assert.Equal(true, chip.SoundOnly); @@ -697,7 +697,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.DipSwitch? dipswitch) { Assert.NotNull(dipswitch); - Assert.Equal("XXXXXX", dipswitch.Name); + Assert.Equal("name", dipswitch.Name); Assert.Equal("tag", dipswitch.Tag); Assert.Equal("mask", dipswitch.Mask); Validate(dipswitch.Condition); @@ -729,7 +729,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.DipLocation? diplocation) { Assert.NotNull(diplocation); - Assert.Equal("XXXXXX", diplocation.Name); + Assert.Equal("name", diplocation.Name); Assert.Equal("XXXXXX", diplocation.Number); Assert.Equal(true, diplocation.Inverted); } @@ -740,7 +740,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.DipValue? dipvalue) { Assert.NotNull(dipvalue); - Assert.Equal("XXXXXX", dipvalue.Name); + Assert.Equal("name", dipvalue.Name); Assert.Equal("value", dipvalue.Value); Assert.Equal(true, dipvalue.Default); Validate(dipvalue.Condition); @@ -752,7 +752,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Configuration? configuration) { Assert.NotNull(configuration); - Assert.Equal("XXXXXX", configuration.Name); + Assert.Equal("name", configuration.Name); Assert.Equal("tag", configuration.Tag); Assert.Equal("mask", configuration.Mask); Validate(configuration.Condition); @@ -772,7 +772,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.ConfLocation? conflocation) { Assert.NotNull(conflocation); - Assert.Equal("XXXXXX", conflocation.Name); + Assert.Equal("name", conflocation.Name); Assert.Equal("XXXXXX", conflocation.Number); Assert.Equal(true, conflocation.Inverted); } @@ -783,7 +783,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.ConfSetting? confsetting) { Assert.NotNull(confsetting); - Assert.Equal("XXXXXX", confsetting.Name); + Assert.Equal("name", confsetting.Name); Assert.Equal("value", confsetting.Value); Assert.Equal(true, confsetting.Default); Validate(confsetting.Condition); @@ -817,7 +817,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Adjuster? adjuster) { Assert.NotNull(adjuster); - Assert.Equal("XXXXXX", adjuster.Name); + Assert.Equal("name", adjuster.Name); Assert.Equal(true, adjuster.Default); Validate(adjuster.Condition); } @@ -876,7 +876,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Instance? instance) { Assert.NotNull(instance); - Assert.Equal("XXXXXX", instance.Name); + Assert.Equal("name", instance.Name); Assert.Equal("XXXXXX", instance.BriefName); } @@ -886,7 +886,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Extension? extension) { Assert.NotNull(extension); - Assert.Equal("XXXXXX", extension.Name); + Assert.Equal("name", extension.Name); } /// @@ -895,7 +895,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Slot? slot) { Assert.NotNull(slot); - Assert.Equal("XXXXXX", slot.Name); + Assert.Equal("name", slot.Name); Assert.NotNull(slot.SlotOption); var slotoption = Assert.Single(slot.SlotOption); @@ -908,7 +908,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.SlotOption? slotoption) { Assert.NotNull(slotoption); - Assert.Equal("XXXXXX", slotoption.Name); + Assert.Equal("name", slotoption.Name); Assert.Equal("XXXXXX", slotoption.DevName); Assert.Equal(true, slotoption.Default); } @@ -920,7 +920,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(softwarelist); Assert.Equal("tag", softwarelist.Tag); - Assert.Equal("XXXXXX", softwarelist.Name); + Assert.Equal("name", softwarelist.Name); Assert.Equal(Data.Models.Metadata.SoftwareListStatus.Original, softwarelist.Status); Assert.Equal("XXXXXX", softwarelist.Filter); } @@ -931,7 +931,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.RamOption? ramoption) { Assert.NotNull(ramoption); - Assert.Equal("XXXXXX", ramoption.Name); + Assert.Equal("name", ramoption.Name); Assert.Equal(true, ramoption.Default); Assert.Equal("XXXXXX", ramoption.Content); } diff --git a/SabreTools.Serialization.Readers.Test/NoIntroDatabaseTests.cs b/SabreTools.Serialization.Readers.Test/NoIntroDatabaseTests.cs index 01b91108..bd2deb23 100644 --- a/SabreTools.Serialization.Readers.Test/NoIntroDatabaseTests.cs +++ b/SabreTools.Serialization.Readers.Test/NoIntroDatabaseTests.cs @@ -106,7 +106,7 @@ namespace SabreTools.Serialization.Readers.Test RegParent = "XXXXXX", MergeOf = "XXXXXX", MergeName = "XXXXXX", - Name = "XXXXXX", + Name = "name", NameAlt = "XXXXXX", Region = "XXXXXX", Languages = "XXXXXX", @@ -249,7 +249,7 @@ namespace SabreTools.Serialization.Readers.Test var game = new Data.Models.NoIntroDatabase.Game { - Name = "XXXXXX", + Name = "name", Archive = archive, Media = [media], Source = [source], @@ -268,7 +268,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.NoIntroDatabase.Game? game) { Assert.NotNull(game); - Assert.Equal("XXXXXX", game.Name); + Assert.Equal("name", game.Name); Validate(game.Archive); @@ -296,7 +296,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", archive.RegParent); Assert.Equal("XXXXXX", archive.MergeOf); Assert.Equal("XXXXXX", archive.MergeName); - Assert.Equal("XXXXXX", archive.Name); + Assert.Equal("name", archive.Name); Assert.Equal("XXXXXX", archive.NameAlt); Assert.Equal("XXXXXX", archive.Region); Assert.Equal("XXXXXX", archive.Languages); diff --git a/SabreTools.Serialization.Readers.Test/SoftwareListTests.cs b/SabreTools.Serialization.Readers.Test/SoftwareListTests.cs index a20278ca..7f59bae9 100644 --- a/SabreTools.Serialization.Readers.Test/SoftwareListTests.cs +++ b/SabreTools.Serialization.Readers.Test/SoftwareListTests.cs @@ -95,7 +95,7 @@ namespace SabreTools.Serialization.Readers.Test // Validate the data Assert.NotNull(newSl); - Assert.Equal("XXXXXX", newSl.Name); + Assert.Equal("name", newSl.Name); Assert.Equal("description", newSl.Description); Assert.Equal("XXXXXX", newSl.Notes); @@ -111,25 +111,25 @@ namespace SabreTools.Serialization.Readers.Test { var info = new Data.Models.SoftwareList.Info { - Name = "XXXXXX", + Name = "name", Value = "value", }; var sharedfeat = new Data.Models.SoftwareList.SharedFeat { - Name = "XXXXXX", + Name = "name", Value = "value", }; var feature = new Data.Models.SoftwareList.Feature { - Name = "XXXXXX", + Name = "name", Value = "value", }; var rom = new Data.Models.SoftwareList.Rom { - Name = "XXXXXX", + Name = "name", Size = "XXXXXX", Length = "XXXXXX", CRC = "XXXXXX", @@ -142,7 +142,7 @@ namespace SabreTools.Serialization.Readers.Test var dataarea = new Data.Models.SoftwareList.DataArea { - Name = "XXXXXX", + Name = "name", Size = "XXXXXX", Width = "XXXXXX", Endianness = Data.Models.Metadata.Endianness.Big, @@ -151,7 +151,7 @@ namespace SabreTools.Serialization.Readers.Test var disk = new Data.Models.SoftwareList.Disk { - Name = "XXXXXX", + Name = "name", MD5 = "XXXXXX", SHA1 = "XXXXXX", Status = Data.Models.Metadata.ItemStatus.Good, @@ -160,20 +160,20 @@ namespace SabreTools.Serialization.Readers.Test var diskarea = new Data.Models.SoftwareList.DiskArea { - Name = "XXXXXX", + Name = "name", Disk = [disk], }; var dipvalue = new Data.Models.SoftwareList.DipValue { - Name = "XXXXXX", + Name = "name", Value = "value", Default = true, }; var dipswitch = new Data.Models.SoftwareList.DipSwitch { - Name = "XXXXXX", + Name = "name", Tag = "tag", Mask = "mask", DipValue = [dipvalue], @@ -181,7 +181,7 @@ namespace SabreTools.Serialization.Readers.Test var part = new Data.Models.SoftwareList.Part { - Name = "XXXXXX", + Name = "name", Interface = "XXXXXX", Feature = [feature], DataArea = [dataarea], @@ -191,7 +191,7 @@ namespace SabreTools.Serialization.Readers.Test var software = new Data.Models.SoftwareList.Software { - Name = "XXXXXX", + Name = "name", CloneOf = "XXXXXX", Supported = Data.Models.Metadata.Supported.Yes, Description = "description", @@ -205,7 +205,7 @@ namespace SabreTools.Serialization.Readers.Test return new Data.Models.SoftwareList.SoftwareList { - Name = "XXXXXX", + Name = "name", Description = "description", Notes = "XXXXXX", Software = [software], @@ -218,7 +218,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.SoftwareList.Software? software) { Assert.NotNull(software); - Assert.Equal("XXXXXX", software.Name); + Assert.Equal("name", software.Name); Assert.Equal("XXXXXX", software.CloneOf); Assert.Equal(Data.Models.Metadata.Supported.Yes, software.Supported); Assert.Equal("description", software.Description); @@ -245,7 +245,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.SoftwareList.Info? info) { Assert.NotNull(info); - Assert.Equal("XXXXXX", info.Name); + Assert.Equal("name", info.Name); Assert.Equal("value", info.Value); } @@ -255,7 +255,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.SoftwareList.SharedFeat? sharedfeat) { Assert.NotNull(sharedfeat); - Assert.Equal("XXXXXX", sharedfeat.Name); + Assert.Equal("name", sharedfeat.Name); Assert.Equal("value", sharedfeat.Value); } @@ -265,7 +265,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.SoftwareList.Part? part) { Assert.NotNull(part); - Assert.Equal("XXXXXX", part.Name); + Assert.Equal("name", part.Name); Assert.Equal("XXXXXX", part.Interface); Assert.NotNull(part.Feature); @@ -291,7 +291,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.SoftwareList.Feature? feature) { Assert.NotNull(feature); - Assert.Equal("XXXXXX", feature.Name); + Assert.Equal("name", feature.Name); Assert.Equal("value", feature.Value); } @@ -301,7 +301,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.SoftwareList.DataArea? dataarea) { Assert.NotNull(dataarea); - Assert.Equal("XXXXXX", dataarea.Name); + Assert.Equal("name", dataarea.Name); Assert.Equal("XXXXXX", dataarea.Size); Assert.Equal("XXXXXX", dataarea.Width); Assert.Equal(Data.Models.Metadata.Endianness.Big, dataarea.Endianness); @@ -317,7 +317,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.SoftwareList.Rom? rom) { Assert.NotNull(rom); - Assert.Equal("XXXXXX", rom.Name); + Assert.Equal("name", rom.Name); Assert.Equal("XXXXXX", rom.Size); Assert.Equal("XXXXXX", rom.Length); Assert.Equal("XXXXXX", rom.CRC); @@ -334,7 +334,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.SoftwareList.DiskArea? diskarea) { Assert.NotNull(diskarea); - Assert.Equal("XXXXXX", diskarea.Name); + Assert.Equal("name", diskarea.Name); Assert.NotNull(diskarea.Disk); var disk = Assert.Single(diskarea.Disk); @@ -347,7 +347,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.SoftwareList.Disk? disk) { Assert.NotNull(disk); - Assert.Equal("XXXXXX", disk.Name); + Assert.Equal("name", disk.Name); Assert.Equal("XXXXXX", disk.MD5); Assert.Equal("XXXXXX", disk.SHA1); Assert.Equal(Data.Models.Metadata.ItemStatus.Good, disk.Status); @@ -360,7 +360,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.SoftwareList.DipSwitch? dipswitch) { Assert.NotNull(dipswitch); - Assert.Equal("XXXXXX", dipswitch.Name); + Assert.Equal("name", dipswitch.Name); Assert.Equal("tag", dipswitch.Tag); Assert.Equal("mask", dipswitch.Mask); @@ -375,7 +375,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.SoftwareList.DipValue? dipvalue) { Assert.NotNull(dipvalue); - Assert.Equal("XXXXXX", dipvalue.Name); + Assert.Equal("name", dipvalue.Name); Assert.Equal("value", dipvalue.Value); Assert.Equal(true, dipvalue.Default); } From 7df083c0b20b7bd04142894087f96a9e000657ff Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Thu, 2 Apr 2026 13:35:11 -0400 Subject: [PATCH 015/142] Reduce use of SetName --- .../DatFileTests.Filtering.cs | 24 +++---- .../DatFileTests.Splitting.cs | 72 +++++++++---------- .../DatFileTests.cs | 34 ++++----- .../ItemDictionaryDBTests.cs | 72 +++++++++---------- .../ItemDictionaryTests.cs | 68 +++++++++--------- .../DatFile.Filtering.cs | 12 ++-- .../DatFile.Splitting.cs | 14 ++-- SabreTools.Metadata.DatFiles/DatFile.cs | 4 +- .../Formats/SabreJSON.cs | 2 +- .../Formats/SabreXML.cs | 2 +- .../DatItemTests.cs | 20 +++--- .../Formats/DiskTests.cs | 10 +-- .../Formats/FileTests.cs | 4 +- .../Formats/MediaTests.cs | 6 +- .../MachineTests.cs | 12 ++-- SabreTools.Metadata.DatItems/Formats/Disk.cs | 4 +- SabreTools.Metadata.DatItems/Formats/Rom.cs | 2 +- 17 files changed, 180 insertions(+), 182 deletions(-) diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.Filtering.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.Filtering.cs index f130a324..7cf31e86 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.Filtering.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.Filtering.cs @@ -20,7 +20,7 @@ namespace SabreTools.Metadata.DatFiles.Test Source source = new Source(0, source: null); Machine machine = new Machine(); - machine.SetName("machine"); + machine.Name = "machine"; DatItem datItem = new Rom(); datItem.SetName("rom.bin"); @@ -48,7 +48,7 @@ namespace SabreTools.Metadata.DatFiles.Test Source source = new Source(0, source: null); Machine machine = new Machine(); - machine.SetName("machine"); + machine.Name = "machine"; DatItem datItem = new Rom(); datItem.SetName("rom.bin"); @@ -79,7 +79,7 @@ namespace SabreTools.Metadata.DatFiles.Test Source source = new Source(0, source: null); Machine machine = new Machine(); - machine.SetName("machine"); + machine.Name = "machine"; machine.Description = "description"; DatItem datItem = new Rom(); @@ -103,7 +103,7 @@ namespace SabreTools.Metadata.DatFiles.Test public void MachineDescriptionToName_ItemsDB() { Machine machine = new Machine(); - machine.SetName("machine"); + machine.Name = "machine"; machine.Description = "description"; DatFile datFile = new Logiqx(datFile: null, useGame: false); @@ -126,7 +126,7 @@ namespace SabreTools.Metadata.DatFiles.Test Source source = new Source(0, source: null); Machine machine = new Machine(); - machine.SetName("machine"); + machine.Name = "machine"; DatItem rom = new Rom(); rom.SetName("rom.bin"); @@ -165,7 +165,7 @@ namespace SabreTools.Metadata.DatFiles.Test Source source = new Source(0, source: null); Machine machine = new Machine(); - machine.SetName("machine"); + machine.Name = "machine"; DatItem rom = new Rom(); rom.SetName("rom.bin"); @@ -204,10 +204,10 @@ namespace SabreTools.Metadata.DatFiles.Test public void SetOneGamePerRegion_Items() { Machine nowhereMachine = new Machine(); - nowhereMachine.SetName("machine (Nowhere)"); + nowhereMachine.Name = "machine (Nowhere)"; Machine worldMachine = new Machine(); - worldMachine.SetName("machine (World)"); + worldMachine.Name = "machine (World)"; worldMachine.Write(Data.Models.Metadata.Machine.CloneOfKey, "machine (Nowhere)"); DatItem nowhereRom = new Rom(); @@ -238,10 +238,10 @@ namespace SabreTools.Metadata.DatFiles.Test public void SetOneGamePerRegion_ItemsDB() { Machine nowhereMachine = new Machine(); - nowhereMachine.SetName("machine (Nowhere)"); + nowhereMachine.Name = "machine (Nowhere)"; Machine worldMachine = new Machine(); - worldMachine.SetName("machine (World)"); + worldMachine.Name = "machine (World)"; worldMachine.Write(Data.Models.Metadata.Machine.CloneOfKey, "machine (Nowhere)"); DatFile datFile = new Logiqx(datFile: null, useGame: false); @@ -266,7 +266,7 @@ namespace SabreTools.Metadata.DatFiles.Test Source source = new Source(0, source: null); Machine machine = new Machine(); - machine.SetName("10.10.10-machine-name"); + machine.Name = "10.10.10-machine-name"; DatItem datItem = new Rom(); datItem.Write(DatItem.MachineKey, machine); @@ -288,7 +288,7 @@ namespace SabreTools.Metadata.DatFiles.Test public void StripSceneDatesFromItems_ItemsDB() { Machine machine = new Machine(); - machine.SetName("10.10.10-machine-name"); + machine.Name = "10.10.10-machine-name"; DatFile datFile = new Logiqx(datFile: null, useGame: false); _ = datFile.AddMachineDB(machine); diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.Splitting.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.Splitting.cs index 1c5152b7..19149563 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.Splitting.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.Splitting.cs @@ -15,10 +15,10 @@ namespace SabreTools.Metadata.DatFiles.Test Source source = new Source(0, source: null); Machine parentMachine = new Machine(); - parentMachine.SetName("parent"); + parentMachine.Name = "parent"; Machine childMachine = new Machine(); - childMachine.SetName("child"); + childMachine.Name = "child"; childMachine.Write(Data.Models.Metadata.Machine.CloneOfKey, "parent"); childMachine.IsBios = true; @@ -60,10 +60,10 @@ namespace SabreTools.Metadata.DatFiles.Test Source source = new Source(0, source: null); Machine parentMachine = new Machine(); - parentMachine.SetName("parent"); + parentMachine.Name = "parent"; Machine childMachine = new Machine(); - childMachine.SetName("child"); + childMachine.Name = "child"; childMachine.Write(Data.Models.Metadata.Machine.CloneOfKey, "parent"); childMachine.IsBios = true; @@ -105,10 +105,10 @@ namespace SabreTools.Metadata.DatFiles.Test Source source = new Source(0, source: null); Machine parentMachine = new Machine(); - parentMachine.SetName("parent"); + parentMachine.Name = "parent"; Machine childMachine = new Machine(); - childMachine.SetName("child"); + childMachine.Name = "child"; childMachine.Write(Data.Models.Metadata.Machine.CloneOfKey, "parent"); childMachine.IsBios = true; @@ -153,10 +153,10 @@ namespace SabreTools.Metadata.DatFiles.Test Source source = new Source(0, source: null); Machine parentMachine = new Machine(); - parentMachine.SetName("parent"); + parentMachine.Name = "parent"; Machine childMachine = new Machine(); - childMachine.SetName("child"); + childMachine.Name = "child"; childMachine.Write(Data.Models.Metadata.Machine.CloneOfKey, "parent"); childMachine.IsBios = true; @@ -205,10 +205,10 @@ namespace SabreTools.Metadata.DatFiles.Test Source source = new Source(0, source: null); Machine parentMachine = new Machine(); - parentMachine.SetName("parent"); + parentMachine.Name = "parent"; Machine childMachine = new Machine(); - childMachine.SetName("child"); + childMachine.Name = "child"; childMachine.Write(Data.Models.Metadata.Machine.CloneOfKey, "parent"); childMachine.IsBios = true; @@ -250,10 +250,10 @@ namespace SabreTools.Metadata.DatFiles.Test Source source = new Source(0, source: null); Machine parentMachine = new Machine(); - parentMachine.SetName("parent"); + parentMachine.Name = "parent"; Machine childMachine = new Machine(); - childMachine.SetName("child"); + childMachine.Name = "child"; childMachine.Write(Data.Models.Metadata.Machine.CloneOfKey, "parent"); childMachine.IsBios = true; @@ -306,14 +306,14 @@ namespace SabreTools.Metadata.DatFiles.Test Source source = new Source(0, source: null); Machine deviceMachine = new Machine(); - deviceMachine.SetName("device"); + deviceMachine.Name = "device"; deviceMachine.IsDevice = true; Machine slotOptionMachine = new Machine(); - slotOptionMachine.SetName("slotoption"); + slotOptionMachine.Name = "slotoption"; Machine itemMachine = new Machine(); - itemMachine.SetName("machine"); + itemMachine.Name = "machine"; DatItem deviceItem = new Sample(); deviceItem.SetName("device_item"); @@ -365,14 +365,14 @@ namespace SabreTools.Metadata.DatFiles.Test Source source = new Source(0, source: null); Machine deviceMachine = new Machine(); - deviceMachine.SetName("device"); + deviceMachine.Name = "device"; deviceMachine.IsDevice = true; Machine slotOptionMachine = new Machine(); - slotOptionMachine.SetName("slotoption"); + slotOptionMachine.Name = "slotoption"; Machine itemMachine = new Machine(); - itemMachine.SetName("machine"); + itemMachine.Name = "machine"; DatItem deviceItem = new Sample(); deviceItem.SetName("device_item"); @@ -418,10 +418,10 @@ namespace SabreTools.Metadata.DatFiles.Test Source source = new Source(0, source: null); Machine parentMachine = new Machine(); - parentMachine.SetName("parent"); + parentMachine.Name = "parent"; Machine childMachine = new Machine(); - childMachine.SetName("child"); + childMachine.Name = "child"; childMachine.Write(Data.Models.Metadata.Machine.RomOfKey, "parent"); childMachine.IsBios = true; @@ -463,10 +463,10 @@ namespace SabreTools.Metadata.DatFiles.Test Source source = new Source(0, source: null); Machine parentMachine = new Machine(); - parentMachine.SetName("parent"); + parentMachine.Name = "parent"; Machine childMachine = new Machine(); - childMachine.SetName("child"); + childMachine.Name = "child"; childMachine.Write(Data.Models.Metadata.Machine.RomOfKey, "parent"); childMachine.IsBios = true; @@ -515,11 +515,11 @@ namespace SabreTools.Metadata.DatFiles.Test Source source = new Source(0, source: null); Machine biosMachine = new Machine(); - biosMachine.SetName("bios"); + biosMachine.Name = "bios"; biosMachine.IsBios = true; Machine deviceMachine = new Machine(); - deviceMachine.SetName("device"); + deviceMachine.Name = "device"; deviceMachine.IsDevice = true; DatItem biosItem = new Rom(); @@ -547,11 +547,11 @@ namespace SabreTools.Metadata.DatFiles.Test Source source = new Source(0, source: null); Machine biosMachine = new Machine(); - biosMachine.SetName("bios"); + biosMachine.Name = "bios"; biosMachine.IsBios = true; Machine deviceMachine = new Machine(); - deviceMachine.SetName("device"); + deviceMachine.Name = "device"; deviceMachine.IsDevice = true; DatItem biosItem = new Rom(); @@ -580,11 +580,11 @@ namespace SabreTools.Metadata.DatFiles.Test Source source = new Source(0, source: null); Machine parentMachine = new Machine(); - parentMachine.SetName("parent"); + parentMachine.Name = "parent"; parentMachine.Write(Data.Models.Metadata.Machine.RomOfKey, "romof"); Machine childMachine = new Machine(); - childMachine.SetName("child"); + childMachine.Name = "child"; childMachine.Write(Data.Models.Metadata.Machine.CloneOfKey, "parent"); DatItem parentItem = new Rom(); @@ -630,11 +630,11 @@ namespace SabreTools.Metadata.DatFiles.Test Source source = new Source(0, source: null); Machine parentMachine = new Machine(); - parentMachine.SetName("parent"); + parentMachine.Name = "parent"; parentMachine.Write(Data.Models.Metadata.Machine.RomOfKey, "romof"); Machine childMachine = new Machine(); - childMachine.SetName("child"); + childMachine.Name = "child"; childMachine.Write(Data.Models.Metadata.Machine.CloneOfKey, "parent"); DatItem parentItem = new Rom(); @@ -687,10 +687,10 @@ namespace SabreTools.Metadata.DatFiles.Test Source source = new Source(0, source: null); Machine parentMachine = new Machine(); - parentMachine.SetName("parent"); + parentMachine.Name = "parent"; Machine childMachine = new Machine(); - childMachine.SetName("child"); + childMachine.Name = "child"; childMachine.Write(Data.Models.Metadata.Machine.RomOfKey, "parent"); childMachine.IsBios = true; @@ -736,10 +736,10 @@ namespace SabreTools.Metadata.DatFiles.Test Source source = new Source(0, source: null); Machine parentMachine = new Machine(); - parentMachine.SetName("parent"); + parentMachine.Name = "parent"; Machine childMachine = new Machine(); - childMachine.SetName("child"); + childMachine.Name = "child"; childMachine.Write(Data.Models.Metadata.Machine.RomOfKey, "parent"); childMachine.IsBios = true; @@ -792,7 +792,7 @@ namespace SabreTools.Metadata.DatFiles.Test Source source = new Source(0, source: null); Machine machine = new Machine(); - machine.SetName("machine"); + machine.Name = "machine"; machine.Write(Data.Models.Metadata.Machine.CloneOfKey, "XXXXXX"); machine.Write(Data.Models.Metadata.Machine.RomOfKey, "XXXXXX"); machine.Write(Data.Models.Metadata.Machine.SampleOfKey, "XXXXXX"); @@ -821,7 +821,7 @@ namespace SabreTools.Metadata.DatFiles.Test Source source = new Source(0, source: null); Machine machine = new Machine(); - machine.SetName("machine"); + machine.Name = "machine"; machine.Write(Data.Models.Metadata.Machine.CloneOfKey, "XXXXXX"); machine.Write(Data.Models.Metadata.Machine.RomOfKey, "XXXXXX"); machine.Write(Data.Models.Metadata.Machine.SampleOfKey, "XXXXXX"); diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.cs index a08fa300..191d23ad 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.cs @@ -31,7 +31,7 @@ namespace SabreTools.Metadata.DatFiles.Test Source source = new Source(0, source: null); Machine machine = new Machine(); - machine.SetName("key"); + machine.Name = "key"; DatItem rom = new Rom(); rom.SetName("rom"); @@ -73,7 +73,7 @@ namespace SabreTools.Metadata.DatFiles.Test Source source = new Source(0, source: null); Machine machine = new Machine(); - machine.SetName("game-1"); + machine.Name = "game-1"; DatItem datItem = new Rom(); datItem.Write(DatItem.SourceKey, source); @@ -92,7 +92,7 @@ namespace SabreTools.Metadata.DatFiles.Test Source source = new Source(0, source: null); Machine machine = new Machine(); - machine.SetName("game-1"); + machine.Name = "game-1"; DatItem datItem = new Rom(); @@ -1329,7 +1329,7 @@ namespace SabreTools.Metadata.DatFiles.Test string expected) { Machine machine = new Machine(); - machine.SetName("machine"); + machine.Name = "machine"; DatItem item = new Rom(); item.SetName("name"); @@ -1363,7 +1363,7 @@ namespace SabreTools.Metadata.DatFiles.Test string expected = string.Empty; Machine machine = new Machine(); - machine.SetName("machine"); + machine.Name = "machine"; machine.Write(Data.Models.Metadata.Machine.ManufacturerKey, "manufacturer"); machine.Write(Data.Models.Metadata.Machine.PublisherKey, "publisher"); machine.Write(Data.Models.Metadata.Machine.CategoryKey, "category"); @@ -1396,7 +1396,7 @@ namespace SabreTools.Metadata.DatFiles.Test string expected = "machine_machine_name_manufacturer_publisher_category______md5___sha1_____"; Machine machine = new Machine(); - machine.SetName("machine"); + machine.Name = "machine"; machine.Write(Data.Models.Metadata.Machine.ManufacturerKey, "manufacturer"); machine.Write(Data.Models.Metadata.Machine.PublisherKey, "publisher"); machine.Write(Data.Models.Metadata.Machine.CategoryKey, "category"); @@ -1417,7 +1417,7 @@ namespace SabreTools.Metadata.DatFiles.Test string expected = "machine_machine_name.bin_manufacturer_publisher_category__00000000____d41d8cd98f00b204e9800998ecf8427e___da39a3ee5e6b4b0d3255bfef95601890afd80709_e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855___12345_"; Machine machine = new Machine(); - machine.SetName("machine"); + machine.Name = "machine"; machine.Write(Data.Models.Metadata.Machine.ManufacturerKey, "manufacturer"); machine.Write(Data.Models.Metadata.Machine.PublisherKey, "publisher"); machine.Write(Data.Models.Metadata.Machine.CategoryKey, "category"); @@ -1444,7 +1444,7 @@ namespace SabreTools.Metadata.DatFiles.Test string expected = "machine_machine_name_manufacturer_publisher_category______md5___sha1_sha256____spamsum"; Machine machine = new Machine(); - machine.SetName("machine"); + machine.Name = "machine"; machine.Write(Data.Models.Metadata.Machine.ManufacturerKey, "manufacturer"); machine.Write(Data.Models.Metadata.Machine.PublisherKey, "publisher"); machine.Write(Data.Models.Metadata.Machine.CategoryKey, "category"); @@ -1467,7 +1467,7 @@ namespace SabreTools.Metadata.DatFiles.Test string expected = "machine_machine_name_manufacturer_publisher_category_crc16_crc_crc64_md2_md4_md5_ripemd128_ripemd160_sha1_sha256_sha384_sha512_12345_spamsum"; Machine machine = new Machine(); - machine.SetName("machine"); + machine.Name = "machine"; machine.Write(Data.Models.Metadata.Machine.ManufacturerKey, "manufacturer"); machine.Write(Data.Models.Metadata.Machine.PublisherKey, "publisher"); machine.Write(Data.Models.Metadata.Machine.CategoryKey, "category"); @@ -1952,7 +1952,7 @@ namespace SabreTools.Metadata.DatFiles.Test public void ResolveNames_SingleItem_Single() { Machine machine = new Machine(); - machine.SetName("machine"); + machine.Name = "machine"; Source source = new Source(0); @@ -1980,7 +1980,7 @@ namespace SabreTools.Metadata.DatFiles.Test public void ResolveNames_NonDuplicate_AllUntouched() { Machine machine = new Machine(); - machine.SetName("machine"); + machine.Name = "machine"; Source source = new Source(0); @@ -2022,7 +2022,7 @@ namespace SabreTools.Metadata.DatFiles.Test public void ResolveNames_AllDuplicate_Single() { Machine machine = new Machine(); - machine.SetName("machine"); + machine.Name = "machine"; Source source = new Source(0); @@ -2057,7 +2057,7 @@ namespace SabreTools.Metadata.DatFiles.Test public void ResolveNames_NameMatch_SingleRenamed() { Machine machine = new Machine(); - machine.SetName("machine"); + machine.Name = "machine"; Source source = new Source(0); @@ -2114,7 +2114,7 @@ namespace SabreTools.Metadata.DatFiles.Test public void ResolveNamesDB_SingleItem_Single() { Machine machine = new Machine(); - machine.SetName("machine"); + machine.Name = "machine"; Source source = new Source(0); @@ -2144,7 +2144,7 @@ namespace SabreTools.Metadata.DatFiles.Test public void ResolveNamesDB_NonDuplicate_AllUntouched() { Machine machine = new Machine(); - machine.SetName("machine"); + machine.Name = "machine"; Source source = new Source(0); @@ -2191,7 +2191,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatFile datFile = new Logiqx(null, useGame: false); Machine machine = new Machine(); - machine.SetName("machine"); + machine.Name = "machine"; long machineIndex = datFile.AddMachineDB(machine); Source source = new Source(0); @@ -2228,7 +2228,7 @@ namespace SabreTools.Metadata.DatFiles.Test public void ResolveNamesDB_NameMatch_SingleRenamed() { Machine machine = new Machine(); - machine.SetName("machine"); + machine.Name = "machine"; Source source = new Source(0); diff --git a/SabreTools.Metadata.DatFiles.Test/ItemDictionaryDBTests.cs b/SabreTools.Metadata.DatFiles.Test/ItemDictionaryDBTests.cs index e0d2cb03..604824b7 100644 --- a/SabreTools.Metadata.DatFiles.Test/ItemDictionaryDBTests.cs +++ b/SabreTools.Metadata.DatFiles.Test/ItemDictionaryDBTests.cs @@ -296,7 +296,7 @@ namespace SabreTools.Metadata.DatFiles.Test Source source = new Source(0, source: null); Machine machine = new Machine(); - machine.SetName("game-1"); + machine.Name = "game-1"; DatItem rom1 = new Rom(); rom1.SetName("rom-1"); @@ -335,7 +335,7 @@ namespace SabreTools.Metadata.DatFiles.Test Source source = new Source(0, source: null); Machine machine = new Machine(); - machine.SetName("machine"); + machine.Name = "machine"; DatItem item = new Rom(); @@ -355,7 +355,7 @@ namespace SabreTools.Metadata.DatFiles.Test Source source = new Source(0, source: null); Machine machine = new Machine(); - machine.SetName("machine"); + machine.Name = "machine"; DatItem item = new Rom(); @@ -375,7 +375,7 @@ namespace SabreTools.Metadata.DatFiles.Test Source source = new Source(0, source: null); Machine machine = new Machine(); - machine.SetName("machine"); + machine.Name = "machine"; DatItem item = new Rom(); item.Write(DatItem.RemoveKey, true); @@ -396,7 +396,7 @@ namespace SabreTools.Metadata.DatFiles.Test Source source = new Source(0, source: null); Machine machine = new Machine(); - machine.SetName("machine"); + machine.Name = "machine"; DatItem item = new Rom(); item.Write(DatItem.RemoveKey, true); @@ -417,7 +417,7 @@ namespace SabreTools.Metadata.DatFiles.Test Source source = new Source(0, source: null); Machine machine = new Machine(); - machine.SetName("machine"); + machine.Name = "machine"; DatItem item = new Rom(); @@ -515,10 +515,10 @@ namespace SabreTools.Metadata.DatFiles.Test Source source = new Source(0, source: null); Machine origMachine = new Machine(); - origMachine.SetName("original"); + origMachine.Name = "original"; Machine newMachine = new Machine(); - newMachine.SetName("new"); + newMachine.Name = "new"; DatItem datItem = new Rom(); @@ -546,7 +546,7 @@ namespace SabreTools.Metadata.DatFiles.Test Source source = new Source(0, source: null); Machine machine = new Machine(); - machine.SetName("game-1"); + machine.Name = "game-1"; DatItem datItem = new Rom(); datItem.SetName("rom-1"); @@ -574,7 +574,7 @@ namespace SabreTools.Metadata.DatFiles.Test Source source = new Source(0, source: null); Machine machine = new Machine(); - machine.SetName("game-1"); + machine.Name = "game-1"; DatItem datItem = new Rom(); datItem.SetName("rom-1"); @@ -623,10 +623,10 @@ namespace SabreTools.Metadata.DatFiles.Test Source source = new Source(0, source: null); Machine machine1 = new Machine(); - machine1.SetName("game-1"); + machine1.Name = "game-1"; Machine machine2 = new Machine(); - machine2.SetName("game-2"); + machine2.Name = "game-2"; DatItem rom1 = new Rom(); rom1.SetName("rom-1"); @@ -677,7 +677,7 @@ namespace SabreTools.Metadata.DatFiles.Test Source source = new Source(0, source: null); Machine machine = new Machine(); - machine.SetName("game-1"); + machine.Name = "game-1"; DatItem rom1 = new Rom(); rom1.SetName("rom-1"); @@ -744,21 +744,21 @@ namespace SabreTools.Metadata.DatFiles.Test long sourceBIndex = dict.AddSource(sourceB); Machine? machineA = new Machine(); - machineA.SetName("name-same"); + machineA.Name = "name-same"; long machineAIndex = dict.AddMachine(machineA); Machine? machineB = new Machine(); - machineB.SetName("name-same"); + machineB.Name = "name-same"; long machineBIndex = dict.AddMachine(machineB); var romA = new Rom(); - romA.SetName("same-name"); + romA.Name = "same-name"; romA.Write(Data.Models.Metadata.Rom.CRCKey, "BEEFDEAD"); long romAIndex = dict.AddItem(romA, machineAIndex, sourceAIndex); KeyValuePair? romAPair = new KeyValuePair(romAIndex, romA); var romB = new Rom(); - romB.SetName("same-name"); + romB.Name = "same-name"; romB.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); long romBIndex = dict.AddItem(romB, machineBIndex, sourceBIndex); KeyValuePair? romBPair = new KeyValuePair(romBIndex, romB); @@ -778,21 +778,21 @@ namespace SabreTools.Metadata.DatFiles.Test long sourceBIndex = dict.AddSource(sourceB); Machine? machineA = new Machine(); - machineA.SetName("name-same"); + machineA.Name = "name-same"; long machineAIndex = dict.AddMachine(machineA); Machine? machineB = new Machine(); - machineB.SetName("name-same"); + machineB.Name = "name-same"; long machineBIndex = dict.AddMachine(machineB); var romA = new Rom(); - romA.SetName("same-name"); + romA.Name = "same-name"; romA.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); long romAIndex = dict.AddItem(romA, machineAIndex, sourceAIndex); KeyValuePair? romAPair = new KeyValuePair(romAIndex, romA); var romB = new Rom(); - romB.SetName("same-name"); + romB.Name = "same-name"; romB.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); long romBIndex = dict.AddItem(romB, machineBIndex, sourceBIndex); KeyValuePair? romBPair = new KeyValuePair(romBIndex, romB); @@ -812,21 +812,21 @@ namespace SabreTools.Metadata.DatFiles.Test long sourceBIndex = dict.AddSource(sourceB); Machine? machineA = new Machine(); - machineA.SetName("name-same"); + machineA.Name = "name-same"; long machineAIndex = dict.AddMachine(machineA); Machine? machineB = new Machine(); - machineB.SetName("not-name-same"); + machineB.Name = "not-name-same"; long machineBIndex = dict.AddMachine(machineB); var romA = new Rom(); - romA.SetName("same-name"); + romA.Name = "same-name"; romA.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); long romAIndex = dict.AddItem(romA, machineAIndex, sourceAIndex); KeyValuePair? romAPair = new KeyValuePair(romAIndex, romA); var romB = new Rom(); - romB.SetName("same-name"); + romB.Name = "same-name"; romB.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); long romBIndex = dict.AddItem(romB, machineBIndex, sourceBIndex); KeyValuePair? romBPair = new KeyValuePair(romBIndex, romB); @@ -846,21 +846,21 @@ namespace SabreTools.Metadata.DatFiles.Test long sourceBIndex = dict.AddSource(sourceB); Machine? machineA = new Machine(); - machineA.SetName("name-same"); + machineA.Name = "name-same"; long machineAIndex = dict.AddMachine(machineA); Machine? machineB = new Machine(); - machineB.SetName("name-same"); + machineB.Name = "name-same"; long machineBIndex = dict.AddMachine(machineB); var romA = new Rom(); - romA.SetName("same-name"); + romA.Name = "same-name"; romA.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); long romAIndex = dict.AddItem(romA, machineAIndex, sourceAIndex); KeyValuePair? romAPair = new KeyValuePair(romAIndex, romA); var romB = new Rom(); - romB.SetName("same-name"); + romB.Name = "same-name"; romB.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); long romBIndex = dict.AddItem(romB, machineBIndex, sourceBIndex); KeyValuePair? romBPair = new KeyValuePair(romBIndex, romB); @@ -880,21 +880,21 @@ namespace SabreTools.Metadata.DatFiles.Test long sourceBIndex = dict.AddSource(sourceB); Machine? machineA = new Machine(); - machineA.SetName("name-same"); + machineA.Name = "name-same"; long machineAIndex = dict.AddMachine(machineA); Machine? machineB = new Machine(); - machineB.SetName("not-name-same"); + machineB.Name = "not-name-same"; long machineBIndex = dict.AddMachine(machineB); var romA = new Rom(); - romA.SetName("same-name"); + romA.Name = "same-name"; romA.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); long romAIndex = dict.AddItem(romA, machineAIndex, sourceAIndex); KeyValuePair? romAPair = new KeyValuePair(romAIndex, romA); var romB = new Rom(); - romB.SetName("same-name"); + romB.Name = "same-name"; romB.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); long romBIndex = dict.AddItem(romB, machineBIndex, sourceBIndex); KeyValuePair? romBPair = new KeyValuePair(romBIndex, romB); @@ -916,7 +916,7 @@ namespace SabreTools.Metadata.DatFiles.Test Source source = new Source(0, source: null); Machine machine = new Machine(); - machine.SetName("game-1"); + machine.Name = "game-1"; DatItem rom1 = new Rom(); rom1.SetName("rom-1"); @@ -958,7 +958,7 @@ namespace SabreTools.Metadata.DatFiles.Test Source source = new Source(0, source: null); Machine machine = new Machine(); - machine.SetName("game-1"); + machine.Name = "game-1"; DatItem rom1 = new Rom(); rom1.SetName("rom-1"); @@ -997,7 +997,7 @@ namespace SabreTools.Metadata.DatFiles.Test Source source = new Source(0, source: null); Machine machine = new Machine(); - machine.SetName("machine"); + machine.Name = "machine"; DatItem item = new Rom(); item.SetName("rom"); diff --git a/SabreTools.Metadata.DatFiles.Test/ItemDictionaryTests.cs b/SabreTools.Metadata.DatFiles.Test/ItemDictionaryTests.cs index 5df8f9c2..d84aafe7 100644 --- a/SabreTools.Metadata.DatFiles.Test/ItemDictionaryTests.cs +++ b/SabreTools.Metadata.DatFiles.Test/ItemDictionaryTests.cs @@ -264,7 +264,7 @@ namespace SabreTools.Metadata.DatFiles.Test { // Setup the items Machine machine = new Machine(); - machine.SetName("game-1"); + machine.Name = "game-1"; DatItem rom1 = new Rom(); rom1.SetName("rom-1"); @@ -302,7 +302,7 @@ namespace SabreTools.Metadata.DatFiles.Test Source source = new Source(0, source: null); Machine machine = new Machine(); - machine.SetName("machine"); + machine.Name = "machine"; DatItem item = new Rom(); item.Write(DatItem.SourceKey, source); @@ -322,7 +322,7 @@ namespace SabreTools.Metadata.DatFiles.Test Source source = new Source(0, source: null); Machine machine = new Machine(); - machine.SetName("machine"); + machine.Name = "machine"; DatItem item = new Rom(); item.Write(DatItem.SourceKey, source); @@ -342,7 +342,7 @@ namespace SabreTools.Metadata.DatFiles.Test Source source = new Source(0, source: null); Machine machine = new Machine(); - machine.SetName("machine"); + machine.Name = "machine"; DatItem item = new Rom(); item.Write(DatItem.RemoveKey, true); @@ -363,7 +363,7 @@ namespace SabreTools.Metadata.DatFiles.Test Source source = new Source(0, source: null); Machine machine = new Machine(); - machine.SetName("machine"); + machine.Name = "machine"; DatItem item = new Rom(); item.Write(DatItem.RemoveKey, true); @@ -384,7 +384,7 @@ namespace SabreTools.Metadata.DatFiles.Test Source source = new Source(0, source: null); Machine machine = new Machine(); - machine.SetName("machine"); + machine.Name = "machine"; DatItem item = new Rom(); item.Write(DatItem.SourceKey, source); @@ -406,7 +406,7 @@ namespace SabreTools.Metadata.DatFiles.Test public void RemoveBucketTest() { Machine machine = new Machine(); - machine.SetName("game-1"); + machine.Name = "game-1"; DatItem datItem = new Rom(); datItem.SetName("rom-1"); @@ -432,7 +432,7 @@ namespace SabreTools.Metadata.DatFiles.Test public void RemoveItemTest() { Machine machine = new Machine(); - machine.SetName("game-1"); + machine.Name = "game-1"; DatItem datItem = new Rom(); datItem.SetName("rom-1"); @@ -463,10 +463,10 @@ namespace SabreTools.Metadata.DatFiles.Test { // Setup the items Machine machine1 = new Machine(); - machine1.SetName("game-1"); + machine1.Name = "game-1"; Machine machine2 = new Machine(); - machine2.SetName("game-2"); + machine2.Name = "game-2"; DatItem rom1 = new Rom(); rom1.SetName("rom-1"); @@ -516,7 +516,7 @@ namespace SabreTools.Metadata.DatFiles.Test { // Setup the items Machine machine = new Machine(); - machine.SetName("game-1"); + machine.Name = "game-1"; DatItem rom1 = new Rom(); rom1.SetName("rom-1"); @@ -569,19 +569,19 @@ namespace SabreTools.Metadata.DatFiles.Test var dict = new ItemDictionary(); Machine? machineA = new Machine(); - machineA.SetName("name-same"); + machineA.Name = "name-same"; Machine? machineB = new Machine(); - machineB.SetName("name-same"); + machineB.Name = "name-same"; var romA = new Rom(); - romA.SetName("same-name"); + romA.Name = "same-name"; romA.Write(Data.Models.Metadata.Rom.CRCKey, "BEEFDEAD"); romA.Write(DatItem.SourceKey, new Source(0)); romA.CopyMachineInformation(machineA); var romB = new Rom(); - romB.SetName("same-name"); + romB.Name = "same-name"; romB.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); romB.Write(DatItem.SourceKey, new Source(1)); romB.CopyMachineInformation(machineB); @@ -596,19 +596,19 @@ namespace SabreTools.Metadata.DatFiles.Test var dict = new ItemDictionary(); Machine? machineA = new Machine(); - machineA.SetName("name-same"); + machineA.Name = "name-same"; Machine? machineB = new Machine(); - machineB.SetName("name-same"); + machineB.Name = "name-same"; var romA = new Rom(); - romA.SetName("same-name"); + romA.Name = "same-name"; romA.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); romA.Write(DatItem.SourceKey, new Source(0)); romA.CopyMachineInformation(machineA); var romB = new Rom(); - romB.SetName("same-name"); + romB.Name = "same-name"; romB.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); romB.Write(DatItem.SourceKey, new Source(1)); romB.CopyMachineInformation(machineB); @@ -623,19 +623,19 @@ namespace SabreTools.Metadata.DatFiles.Test var dict = new ItemDictionary(); Machine? machineA = new Machine(); - machineA.SetName("name-same"); + machineA.Name = "name-same"; Machine? machineB = new Machine(); - machineB.SetName("not-name-same"); + machineB.Name = "not-name-same"; var romA = new Rom(); - romA.SetName("same-name"); + romA.Name = "same-name"; romA.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); romA.Write(DatItem.SourceKey, new Source(0)); romA.CopyMachineInformation(machineA); var romB = new Rom(); - romB.SetName("same-name"); + romB.Name = "same-name"; romB.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); romB.Write(DatItem.SourceKey, new Source(1)); romB.CopyMachineInformation(machineB); @@ -650,19 +650,19 @@ namespace SabreTools.Metadata.DatFiles.Test var dict = new ItemDictionary(); Machine? machineA = new Machine(); - machineA.SetName("name-same"); + machineA.Name = "name-same"; Machine? machineB = new Machine(); - machineB.SetName("name-same"); + machineB.Name = "name-same"; var romA = new Rom(); - romA.SetName("same-name"); + romA.Name = "same-name"; romA.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); romA.Write(DatItem.SourceKey, new Source(0)); romA.CopyMachineInformation(machineA); var romB = new Rom(); - romB.SetName("same-name"); + romB.Name = "same-name"; romB.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); romB.Write(DatItem.SourceKey, new Source(0)); romB.CopyMachineInformation(machineB); @@ -677,19 +677,19 @@ namespace SabreTools.Metadata.DatFiles.Test var dict = new ItemDictionary(); Machine? machineA = new Machine(); - machineA.SetName("name-same"); + machineA.Name = "name-same"; Machine? machineB = new Machine(); - machineB.SetName("not-name-same"); + machineB.Name = "not-name-same"; var romA = new Rom(); - romA.SetName("same-name"); + romA.Name = "same-name"; romA.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); romA.Write(DatItem.SourceKey, new Source(0)); romA.CopyMachineInformation(machineA); var romB = new Rom(); - romB.SetName("same-name"); + romB.Name = "same-name"; romB.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); romB.Write(DatItem.SourceKey, new Source(0)); romB.CopyMachineInformation(machineB); @@ -709,7 +709,7 @@ namespace SabreTools.Metadata.DatFiles.Test { // Setup the items Machine machine = new Machine(); - machine.SetName("game-1"); + machine.Name = "game-1"; DatItem rom1 = new Rom(); rom1.SetName("rom-1"); @@ -750,7 +750,7 @@ namespace SabreTools.Metadata.DatFiles.Test { // Setup the items Machine machine = new Machine(); - machine.SetName("game-1"); + machine.Name = "game-1"; DatItem rom1 = new Rom(); rom1.SetName("rom-1"); @@ -790,7 +790,7 @@ namespace SabreTools.Metadata.DatFiles.Test Source source = new Source(0, source: null); Machine machine = new Machine(); - machine.SetName("machine"); + machine.Name = "machine"; DatItem item = new Rom(); item.SetName("rom"); diff --git a/SabreTools.Metadata.DatFiles/DatFile.Filtering.cs b/SabreTools.Metadata.DatFiles/DatFile.Filtering.cs index 08d3af9d..7f5369fc 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.Filtering.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.Filtering.cs @@ -540,7 +540,7 @@ namespace SabreTools.Metadata.DatFiles if (itemName.StartsWith("Default")) itemName = itemName.Substring("Default".Length + 1); - machine.SetName(itemName); + machine.Name = itemName; datItem.SetName(Path.GetFileName(datItem.GetName())); } @@ -618,7 +618,7 @@ namespace SabreTools.Metadata.DatFiles if (itemName.StartsWith("Default")) itemName = itemName.Substring("Default".Length + 1); - machine.Value.SetName(itemName); + machine.Value.Name = itemName; datItem.Value.SetName(Path.GetFileName(datItem.Value.GetName())); } @@ -655,7 +655,7 @@ namespace SabreTools.Metadata.DatFiles string? machineDesc = machine.Description; if (machineName is not null && Regex.IsMatch(machineName, SceneNamePattern)) - item.GetMachine()!.SetName(Regex.Replace(machineName, SceneNamePattern, "$2")); + item.GetMachine()!.Name = Regex.Replace(machineName, SceneNamePattern, "$2"); if (machineDesc is not null && Regex.IsMatch(machineDesc, SceneNamePattern)) item.GetMachine()!.Description = Regex.Replace(machineDesc, SceneNamePattern, "$2"); @@ -693,7 +693,7 @@ namespace SabreTools.Metadata.DatFiles string? machineDesc = machine.Value.Description; if (machineName is not null && Regex.IsMatch(machineName, SceneNamePattern)) - machine.Value.SetName(Regex.Replace(machineName, SceneNamePattern, "$2")); + machine.Value.Name = Regex.Replace(machineName, SceneNamePattern, "$2"); if (machineDesc is not null && Regex.IsMatch(machineDesc, SceneNamePattern)) machine.Value.Description = Regex.Replace(machineDesc, SceneNamePattern, "$2"); @@ -739,7 +739,7 @@ namespace SabreTools.Metadata.DatFiles // Update machine name if (machineName is not null && mapping.TryGetValue(machineName, out string? mappedMachineName)) - machine.SetName(mappedMachineName); + machine.Name = mappedMachineName; // Update cloneof if (cloneOf is not null && mapping.TryGetValue(cloneOf, out string? mappedCloneOf)) @@ -780,7 +780,7 @@ namespace SabreTools.Metadata.DatFiles // Update machine name if (machineName is not null && mapping.TryGetValue(machineName, out string? mappedMachineName)) - machine.Value.SetName(mappedMachineName); + machine.Value.Name = mappedMachineName; // Update cloneof if (cloneOf is not null && mapping.TryGetValue(cloneOf, out string? mappedCloneOf)) diff --git a/SabreTools.Metadata.DatFiles/DatFile.Splitting.cs b/SabreTools.Metadata.DatFiles/DatFile.Splitting.cs index 8ca46e1f..5af2882f 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.Splitting.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.Splitting.cs @@ -283,7 +283,7 @@ namespace SabreTools.Metadata.DatFiles if (parentItems.Count == 0) { copyFrom = new Rom(); - copyFrom.GetMachine()!.SetName(cloneOf); + copyFrom.GetMachine()!.Name = cloneOf; copyFrom.GetMachine()!.Description = cloneOf; } else @@ -350,7 +350,7 @@ namespace SabreTools.Metadata.DatFiles .Contains(mergeTag)) { if (subfolder) - rom.SetName($"{rom.GetMachine()!.Name}\\{rom.Name}"); + rom.Name = $"{rom.GetMachine()!.Name}\\{rom.Name}"; rom.CopyMachineInformation(copyFrom); AddItem(rom, statsOnly: false); @@ -360,7 +360,7 @@ namespace SabreTools.Metadata.DatFiles else if (!GetItemsForBucket(cloneOf).Exists(i => i.Equals(item)) || skipDedup) { if (subfolder) - rom.SetName($"{item.GetMachine()!.Name}\\{rom.Name}"); + rom.Name = $"{item.GetMachine()!.Name}\\{rom.Name}"; rom.CopyMachineInformation(copyFrom); AddItem(rom, statsOnly: false); @@ -486,7 +486,7 @@ namespace SabreTools.Metadata.DatFiles .Contains(mergeTag)) { if (subfolder) - rom.SetName($"{machineName}\\{rom.Name}"); + rom.Name = $"{machineName}\\{rom.Name}"; ItemsDB.RemapDatItemToMachine(item.Key, machineIndex: cloneOfMachine.Key); ItemsDB.AddItem(item.Value, cloneOfMachine.Key, source.Key); @@ -496,7 +496,7 @@ namespace SabreTools.Metadata.DatFiles else if (!GetItemsForBucketDB(cloneOf).ContainsValue(item.Value) || skipDedup) { if (subfolder) - rom.SetName($"{machineName}\\{rom.Name}"); + rom.Name = $"{machineName}\\{rom.Name}"; ItemsDB.RemapDatItemToMachine(item.Key, cloneOfMachine.Key); ItemsDB.AddItem(item.Value, cloneOfMachine.Key, source.Key); @@ -723,7 +723,7 @@ namespace SabreTools.Metadata.DatFiles deviceReferences.Add(deviceReference); var deviceRef = new DeviceRef(); - deviceRef.SetName(deviceReference); + deviceRef.Name = deviceReference; deviceRef.CopyMachineInformation(copyFrom); Items.AddItem(deviceRef, statsOnly: false); } @@ -888,7 +888,7 @@ namespace SabreTools.Metadata.DatFiles if (!deviceReferences.Contains(deviceReference)) { var deviceRef = new DeviceRef(); - deviceRef.SetName(deviceReference); + deviceRef.Name = deviceReference; ItemsDB.AddItem(deviceRef, machine.Key, source.Key); } } diff --git a/SabreTools.Metadata.DatFiles/DatFile.cs b/SabreTools.Metadata.DatFiles/DatFile.cs index c31318d9..280554a3 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.cs @@ -568,7 +568,7 @@ namespace SabreTools.Metadata.DatFiles if (useRomName) item.SetName(name); else - machine?.SetName(name); + machine?.Name = name; } /// @@ -689,7 +689,7 @@ namespace SabreTools.Metadata.DatFiles return rom; // If the Rom has "null" characteristics, ensure all fields - rom.SetName(rom.Name == "null" ? "-" : rom.Name); + rom.Name = rom.Name == "null" ? "-" : rom.Name; rom.Write(Data.Models.Metadata.Rom.SizeKey, "0"); rom.Write(Data.Models.Metadata.Rom.CRC16Key, rom.ReadString(Data.Models.Metadata.Rom.CRC16Key) == "null" ? HashType.CRC16.ZeroString : null); diff --git a/SabreTools.Metadata.DatFiles/Formats/SabreJSON.cs b/SabreTools.Metadata.DatFiles/Formats/SabreJSON.cs index 261fbaae..5ef5ce89 100644 --- a/SabreTools.Metadata.DatFiles/Formats/SabreJSON.cs +++ b/SabreTools.Metadata.DatFiles/Formats/SabreJSON.cs @@ -602,7 +602,7 @@ namespace SabreTools.Metadata.DatFiles.Formats { // No game should start with a path separator if (!string.IsNullOrEmpty(datItem.GetMachine()!.Name)) - datItem.GetMachine()!.SetName(datItem.GetMachine()!.Name!.TrimStart(Path.DirectorySeparatorChar)); + datItem.GetMachine()!.Name = datItem.GetMachine()!.Name!.TrimStart(Path.DirectorySeparatorChar); // Build the state jtw.WriteStartObject(); diff --git a/SabreTools.Metadata.DatFiles/Formats/SabreXML.cs b/SabreTools.Metadata.DatFiles/Formats/SabreXML.cs index f83f63db..1c5ac52b 100644 --- a/SabreTools.Metadata.DatFiles/Formats/SabreXML.cs +++ b/SabreTools.Metadata.DatFiles/Formats/SabreXML.cs @@ -429,7 +429,7 @@ namespace SabreTools.Metadata.DatFiles.Formats private static void WriteStartGame(XmlTextWriter xtw, DatItem datItem) { // No game should start with a path separator - datItem.GetMachine()!.SetName(datItem.GetMachine()!.Name?.TrimStart(Path.DirectorySeparatorChar) ?? string.Empty); + datItem.GetMachine()!.Name = datItem.GetMachine()!.Name?.TrimStart(Path.DirectorySeparatorChar) ?? string.Empty; // Write the machine xtw.WriteStartElement("directory"); diff --git a/SabreTools.Metadata.DatItems.Test/DatItemTests.cs b/SabreTools.Metadata.DatItems.Test/DatItemTests.cs index b8ef690b..85559259 100644 --- a/SabreTools.Metadata.DatItems.Test/DatItemTests.cs +++ b/SabreTools.Metadata.DatItems.Test/DatItemTests.cs @@ -54,7 +54,7 @@ namespace SabreTools.Metadata.DatItems.Test public void CopyMachineInformation_NewItem_Overwrite() { Machine? machineA = new Machine(); - machineA.SetName("machineA"); + machineA.Name = "machineA"; var romA = new Rom(); @@ -71,7 +71,7 @@ namespace SabreTools.Metadata.DatItems.Test public void CopyMachineInformation_EmptyItem_NoChange() { Machine? machineA = new Machine(); - machineA.SetName("machineA"); + machineA.Name = "machineA"; var romA = new Rom(); romA.Write(DatItem.MachineKey, machineA); @@ -89,7 +89,7 @@ namespace SabreTools.Metadata.DatItems.Test public void CopyMachineInformation_NullMachine_NoChange() { Machine? machineA = new Machine(); - machineA.SetName("machineA"); + machineA.Name = "machineA"; Machine? machineB = null; @@ -109,7 +109,7 @@ namespace SabreTools.Metadata.DatItems.Test public void CopyMachineInformation_EmptyMachine_Overwrite() { Machine? machineA = new Machine(); - machineA.SetName("machineA"); + machineA.Name = "machineA"; Machine? machineB = new Machine(); @@ -129,10 +129,10 @@ namespace SabreTools.Metadata.DatItems.Test public void CopyMachineInformation_FilledMachine_Overwrite() { Machine? machineA = new Machine(); - machineA.SetName("machineA"); + machineA.Name = "machineA"; Machine? machineB = new Machine(); - machineB.SetName("machineB"); + machineB.Name = "machineB"; var romA = new Rom(); romA.Write(DatItem.MachineKey, machineA); @@ -150,10 +150,10 @@ namespace SabreTools.Metadata.DatItems.Test public void CopyMachineInformation_MismatchedType_Overwrite() { Machine? machineA = new Machine(); - machineA.SetName("machineA"); + machineA.Name = "machineA"; Machine? machineB = new Machine(); - machineB.SetName("machineB"); + machineB.Name = "machineB"; var romA = new Rom(); romA.Write(DatItem.MachineKey, machineA); @@ -356,7 +356,7 @@ namespace SabreTools.Metadata.DatItems.Test Source source = new Source(0); Machine machine = new Machine(); - machine.SetName("Machine"); + machine.Name = "Machine"; DatItem datItem = new Blank(); @@ -430,7 +430,7 @@ namespace SabreTools.Metadata.DatItems.Test Source source = new Source(0); Machine machine = new Machine(); - machine.SetName("Machine"); + machine.Name = "Machine"; DatItem datItem = new Rom(); datItem.Write(Data.Models.Metadata.Rom.CRC16Key, "DEADBEEF"); diff --git a/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs b/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs index 7ed00c8c..c416af2b 100644 --- a/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs +++ b/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs @@ -11,18 +11,18 @@ namespace SabreTools.Metadata.DatItems.Formats.Test public void ConvertToRomTest() { DiskArea diskArea = new DiskArea(); - diskArea.SetName("name"); + diskArea.Name = "name"; Machine machine = new Machine(); - machine.SetName("name"); + machine.Name = "name"; Part part = new Part(); - part.SetName("name"); + part.Name = "name"; Source source = new Source(0, "XXXXXX"); Disk disk = new Disk(); - disk.SetName("name"); + disk.Name = "name"; disk.Write(Disk.DiskAreaKey, diskArea); disk.Write(Data.Models.Metadata.Disk.MergeKey, "XXXXXX"); disk.Write(Data.Models.Metadata.Disk.RegionKey, "XXXXXX"); @@ -254,7 +254,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Source source = new Source(0); Machine machine = new Machine(); - machine.SetName("Machine"); + machine.Name = "Machine"; DatItem datItem = new Disk(); datItem.Write(Data.Models.Metadata.Disk.MD5Key, "DEADBEEF"); diff --git a/SabreTools.Metadata.DatItems.Test/Formats/FileTests.cs b/SabreTools.Metadata.DatItems.Test/Formats/FileTests.cs index 667620c9..e461f1ad 100644 --- a/SabreTools.Metadata.DatItems.Test/Formats/FileTests.cs +++ b/SabreTools.Metadata.DatItems.Test/Formats/FileTests.cs @@ -11,7 +11,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test public void ConvertToRomTest() { Machine machine = new Machine(); - machine.SetName("name"); + machine.Name = "name"; Source source = new Source(0, "XXXXXX"); @@ -341,7 +341,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Source source = new Source(0); Machine machine = new Machine(); - machine.SetName("Machine"); + machine.Name = "Machine"; DatItem datItem = new File { diff --git a/SabreTools.Metadata.DatItems.Test/Formats/MediaTests.cs b/SabreTools.Metadata.DatItems.Test/Formats/MediaTests.cs index ab3494c4..b584e038 100644 --- a/SabreTools.Metadata.DatItems.Test/Formats/MediaTests.cs +++ b/SabreTools.Metadata.DatItems.Test/Formats/MediaTests.cs @@ -11,12 +11,12 @@ namespace SabreTools.Metadata.DatItems.Formats.Test public void ConvertToRomTest() { Machine machine = new Machine(); - machine.SetName("name"); + machine.Name = "name"; Source source = new Source(0, "XXXXXX"); Media media = new Media(); - media.SetName("name"); + media.Name = "name"; media.Write(Data.Models.Metadata.Media.MD5Key, HashType.MD5.ZeroString); media.Write(Data.Models.Metadata.Media.SHA1Key, HashType.SHA1.ZeroString); media.Write(Data.Models.Metadata.Media.SHA256Key, HashType.SHA256.ZeroString); @@ -306,7 +306,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Source source = new Source(0); Machine machine = new Machine(); - machine.SetName("Machine"); + machine.Name = "Machine"; DatItem datItem = new Media(); datItem.Write(Data.Models.Metadata.Media.MD5Key, "DEADBEEF"); diff --git a/SabreTools.Metadata.DatItems.Test/MachineTests.cs b/SabreTools.Metadata.DatItems.Test/MachineTests.cs index ff2dd120..a9685be0 100644 --- a/SabreTools.Metadata.DatItems.Test/MachineTests.cs +++ b/SabreTools.Metadata.DatItems.Test/MachineTests.cs @@ -10,7 +10,7 @@ namespace SabreTools.Metadata.DatItems.Test public void CloneTest() { Machine item = new Machine(); - item.SetName("name"); + item.Name = "name"; object clone = item.Clone(); Machine? actual = clone as Machine; @@ -26,7 +26,7 @@ namespace SabreTools.Metadata.DatItems.Test public void GetInternalCloneTest() { Machine item = new Machine(); - item.SetName("name"); + item.Name = "name"; Data.Models.Metadata.Machine actual = item.GetInternalClone(); Assert.Equal("name", actual.Name); @@ -60,10 +60,10 @@ namespace SabreTools.Metadata.DatItems.Test public void Equals_MismatchedInternal_False() { Machine self = new Machine(); - self.SetName("self"); + self.Name = "self"; Machine? other = new Machine(); - other.SetName("other"); + other.Name = "other"; bool actual = self.Equals(other); Assert.False(actual); @@ -73,10 +73,10 @@ namespace SabreTools.Metadata.DatItems.Test public void Equals_EqualInternal_True() { Machine self = new Machine(); - self.SetName("name"); + self.Name = "name"; Machine? other = new Machine(); - other.SetName("name"); + other.Name = "name"; bool actual = self.Equals(other); Assert.True(actual); diff --git a/SabreTools.Metadata.DatItems/Formats/Disk.cs b/SabreTools.Metadata.DatItems/Formats/Disk.cs index a3640308..f204ba44 100644 --- a/SabreTools.Metadata.DatItems/Formats/Disk.cs +++ b/SabreTools.Metadata.DatItems/Formats/Disk.cs @@ -124,9 +124,7 @@ namespace SabreTools.Metadata.DatItems.Formats if (diskArea is not null) { var dataArea = new DataArea(); - - string? diskAreaName = diskArea.Name; - dataArea.SetName(diskAreaName); + dataArea.Name = diskArea.Name; rom.Write(Rom.DataAreaKey, dataArea); } diff --git a/SabreTools.Metadata.DatItems/Formats/Rom.cs b/SabreTools.Metadata.DatItems/Formats/Rom.cs index fbbd8040..b4c9e47f 100644 --- a/SabreTools.Metadata.DatItems/Formats/Rom.cs +++ b/SabreTools.Metadata.DatItems/Formats/Rom.cs @@ -168,7 +168,7 @@ namespace SabreTools.Metadata.DatItems.Formats string name = $"{machine.Name}_{index++}{(!string.IsNullOrEmpty(rom!.ReadString(Data.Models.Metadata.Rom.RemarkKey)) ? $" {rom.ReadString(Data.Models.Metadata.Rom.RemarkKey)}" : string.Empty)}"; - SetName(name); + Name = name; Write(Data.Models.Metadata.Rom.OffsetKey, rom.ReadString(Data.Models.Metadata.Rom.StartKey)); OpenMSXMediaType = subType; Write(Data.Models.Metadata.Rom.OpenMSXType, rom.ReadString(Data.Models.Metadata.Rom.OpenMSXType) ?? rom.ItemType.ToString()); From 12ec3678b82e0b0f3bdfb4661916e26eec0a098c Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Thu, 2 Apr 2026 14:28:46 -0400 Subject: [PATCH 016/142] Fill in a few more string properties --- .../MetadataExtensions.cs | 16 ++++++++++ SabreTools.Data.Models/Metadata/Device.cs | 10 +++--- SabreTools.Data.Models/Metadata/Instance.cs | 9 ++---- SabreTools.Data.Models/Metadata/Original.cs | 9 ++++-- SabreTools.Data.Models/Metadata/Part.cs | 5 ++- SabreTools.Data.Models/Metadata/RamOption.cs | 9 ++---- SabreTools.Data.Models/Metadata/SlotOption.cs | 9 ++---- .../DatFileTests.FromMetadata.cs | 26 +++++++-------- .../DatFileTests.ToMetadata.cs | 12 +++---- .../FormatsTests.cs | 6 ++-- .../DatFile.Splitting.cs | 12 +++---- .../DatFile.ToMetadata.cs | 14 ++++---- .../Formats/SoftwareList.cs | 18 +++++------ .../Formats/Device.cs | 32 +++++++++++++++---- .../Formats/DipSwitch.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Disk.cs | 2 +- .../Formats/Instance.cs | 6 ++++ .../Formats/Original.cs | 4 +-- SabreTools.Metadata.DatItems/Formats/Part.cs | 6 ++++ .../Formats/RamOption.cs | 6 ++++ SabreTools.Metadata.DatItems/Formats/Rom.cs | 4 +-- .../Formats/SlotOption.cs | 6 ++++ SabreTools.Metadata.Filter/FilterObject.cs | 20 ++++++++++++ .../ListxmlTests.cs | 20 ++++++------ .../M1Tests.cs | 20 ++++++------ .../MessTests.cs | 20 ++++++------ .../OpenMSXTests.cs | 4 +-- .../SoftwareListTests.cs | 4 +-- .../Listxml.Deserializer.cs | 10 +++--- .../Listxml.Serializer.cs | 10 +++--- .../OpenMSX.Deserializer.cs | 2 +- .../OpenMSX.Serializer.cs | 2 +- .../SoftwareList.Deserializer.cs | 2 +- .../SoftwareList.Serializer.cs | 2 +- .../ListxmlTests.cs | 20 ++++++------ .../M1Tests.cs | 20 ++++++------ .../MessTests.cs | 20 ++++++------ .../OpenMSXTests.cs | 4 +-- .../SoftwareListTests.cs | 4 +-- 39 files changed, 235 insertions(+), 172 deletions(-) diff --git a/SabreTools.Data.Extensions/MetadataExtensions.cs b/SabreTools.Data.Extensions/MetadataExtensions.cs index 175b3b99..c6ba3fa1 100644 --- a/SabreTools.Data.Extensions/MetadataExtensions.cs +++ b/SabreTools.Data.Extensions/MetadataExtensions.cs @@ -203,6 +203,8 @@ namespace SabreTools.Data.Extensions else if (self is Device selfDevice && clone is Device cloneDevice) { cloneDevice.DeviceType = selfDevice.DeviceType; + cloneDevice.FixedImage = selfDevice.FixedImage; + cloneDevice.Interface = selfDevice.Interface; cloneDevice.Mandatory = selfDevice.Mandatory; cloneDevice.Tag = selfDevice.Tag; } @@ -278,6 +280,10 @@ namespace SabreTools.Data.Extensions cloneInput.Service = selfInput.Service; cloneInput.Tilt = selfInput.Tilt; } + else if (self is Instance selfInstance && clone is Instance cloneInstance) + { + cloneInstance.BriefName = selfInstance.BriefName; + } else if (self is Machine selfMachine && clone is Machine cloneMachine) { cloneMachine.Description = selfMachine.Description; @@ -287,12 +293,21 @@ namespace SabreTools.Data.Extensions cloneMachine.Runnable = selfMachine.Runnable; cloneMachine.Supported = selfMachine.Supported; } + else if (self is Original selfOriginal && clone is Original cloneOriginal) + { + cloneOriginal.Content = selfOriginal.Content; + } + else if (self is Part selfPart && clone is Part clonePart) + { + clonePart.Interface = selfPart.Interface; + } else if (self is Port selfPort && clone is Port clonePort) { clonePort.Tag = selfPort.Tag; } else if (self is RamOption selfRamOption && clone is RamOption cloneRamOption) { + cloneRamOption.Content = selfRamOption.Content; cloneRamOption.Default = selfRamOption.Default; } else if (self is Release selfRelease && clone is Release cloneRelease) @@ -319,6 +334,7 @@ namespace SabreTools.Data.Extensions else if (self is SlotOption selfSlotOption && clone is SlotOption cloneSlotOption) { cloneSlotOption.Default = selfSlotOption.Default; + cloneSlotOption.DevName = selfSlotOption.DevName; } else if (self is Software selfSoftware && clone is Software cloneSoftware) { diff --git a/SabreTools.Data.Models/Metadata/Device.cs b/SabreTools.Data.Models/Metadata/Device.cs index affebcc2..6bcc0ce0 100644 --- a/SabreTools.Data.Models/Metadata/Device.cs +++ b/SabreTools.Data.Models/Metadata/Device.cs @@ -11,6 +11,10 @@ namespace SabreTools.Data.Models.Metadata /// (unknown|cartridge|floppydisk|harddisk|cylinder|cassette|punchcard|punchtape|printout|serial|parallel|snapshot|quickload|memcard|cdrom|magtape|romimage|midiin|midiout|picture|vidfile) public DeviceType? DeviceType { get; set; } + public string? FixedImage { get; set; } + + public string? Interface { get; set; } + /// (0|1) "0" public bool? Mandatory { get; set; } @@ -24,16 +28,10 @@ namespace SabreTools.Data.Models.Metadata [NoFilter] public const string ExtensionKey = "extension"; - /// string - public const string FixedImageKey = "fixed_image"; - /// Instance [NoFilter] public const string InstanceKey = "instance"; - /// string - public const string InterfaceKey = "interface"; - #endregion public Device() => ItemType = ItemType.Device; diff --git a/SabreTools.Data.Models/Metadata/Instance.cs b/SabreTools.Data.Models/Metadata/Instance.cs index 2d07298a..c5fb42f4 100644 --- a/SabreTools.Data.Models/Metadata/Instance.cs +++ b/SabreTools.Data.Models/Metadata/Instance.cs @@ -8,17 +8,12 @@ namespace SabreTools.Data.Models.Metadata { #region Properties + public string? BriefName { get; set; } + public string? Name { get; set; } #endregion - #region Keys - - /// string - public const string BriefNameKey = "briefname"; - - #endregion - public Instance() => ItemType = ItemType.Instance; } } diff --git a/SabreTools.Data.Models/Metadata/Original.cs b/SabreTools.Data.Models/Metadata/Original.cs index fbf46886..01bd3243 100644 --- a/SabreTools.Data.Models/Metadata/Original.cs +++ b/SabreTools.Data.Models/Metadata/Original.cs @@ -6,10 +6,13 @@ namespace SabreTools.Data.Models.Metadata [JsonObject("original"), XmlRoot("original")] public class Original : DatItem { - #region Keys + #region Properties - /// string - public const string ContentKey = "content"; + public string? Content { get; set; } + + #endregion + + #region Keys /// bool public const string ValueKey = "value"; diff --git a/SabreTools.Data.Models/Metadata/Part.cs b/SabreTools.Data.Models/Metadata/Part.cs index 49dd52fd..eb093999 100644 --- a/SabreTools.Data.Models/Metadata/Part.cs +++ b/SabreTools.Data.Models/Metadata/Part.cs @@ -8,6 +8,8 @@ namespace SabreTools.Data.Models.Metadata { #region Properties + public string? Interface { get; set; } + public string? Name { get; set; } #endregion @@ -30,9 +32,6 @@ namespace SabreTools.Data.Models.Metadata [NoFilter] public const string FeatureKey = "feature"; - /// string - public const string InterfaceKey = "interface"; - #endregion public Part() => ItemType = ItemType.Part; diff --git a/SabreTools.Data.Models/Metadata/RamOption.cs b/SabreTools.Data.Models/Metadata/RamOption.cs index a8f2092b..345ff641 100644 --- a/SabreTools.Data.Models/Metadata/RamOption.cs +++ b/SabreTools.Data.Models/Metadata/RamOption.cs @@ -8,6 +8,8 @@ namespace SabreTools.Data.Models.Metadata { #region Properties + public string? Content { get; set; } + /// (yes|no) "no" public bool? Default { get; set; } @@ -15,13 +17,6 @@ namespace SabreTools.Data.Models.Metadata #endregion - #region Keys - - /// string - public const string ContentKey = "content"; - - #endregion - public RamOption() => ItemType = ItemType.RamOption; } } diff --git a/SabreTools.Data.Models/Metadata/SlotOption.cs b/SabreTools.Data.Models/Metadata/SlotOption.cs index 1e205bf6..18059ea3 100644 --- a/SabreTools.Data.Models/Metadata/SlotOption.cs +++ b/SabreTools.Data.Models/Metadata/SlotOption.cs @@ -11,17 +11,12 @@ namespace SabreTools.Data.Models.Metadata /// (yes|no) "no" public bool? Default { get; set; } + public string? DevName { get; set; } + public string? Name { get; set; } #endregion - #region Keys - - /// string - public const string DevNameKey = "devname"; - - #endregion - public SlotOption() => ItemType = ItemType.SlotOption; } } diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs index 40049bc1..74f5a646 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs @@ -482,9 +482,9 @@ namespace SabreTools.Metadata.DatFiles.Test return new Data.Models.Metadata.Device { [Data.Models.Metadata.Device.ExtensionKey] = new Data.Models.Metadata.Extension[] { CreateMetadataExtension() }, - [Data.Models.Metadata.Device.FixedImageKey] = "fixedimage", + FixedImage = "fixedimage", [Data.Models.Metadata.Device.InstanceKey] = CreateMetadataInstance(), - [Data.Models.Metadata.Device.InterfaceKey] = "interface", + Interface = "interface", Mandatory = true, Tag = "tag", DeviceType = Data.Models.Metadata.DeviceType.PunchTape, @@ -673,7 +673,7 @@ namespace SabreTools.Metadata.DatFiles.Test { return new Data.Models.Metadata.Instance { - [Data.Models.Metadata.Instance.BriefNameKey] = "briefname", + BriefName = "briefname", Name = "name", }; } @@ -694,7 +694,7 @@ namespace SabreTools.Metadata.DatFiles.Test { return new Data.Models.Metadata.Original { - [Data.Models.Metadata.Original.ContentKey] = "content", + Content = "content", [Data.Models.Metadata.Original.ValueKey] = true, }; } @@ -707,7 +707,7 @@ namespace SabreTools.Metadata.DatFiles.Test [Data.Models.Metadata.Part.DiskAreaKey] = new Data.Models.Metadata.DiskArea[] { CreateMetadataDiskArea() }, [Data.Models.Metadata.Part.DipSwitchKey] = new Data.Models.Metadata.DipSwitch[] { [] }, [Data.Models.Metadata.Part.FeatureKey] = new Data.Models.Metadata.Feature[] { CreateMetadataFeature() }, - [Data.Models.Metadata.Part.InterfaceKey] = "interface", + Interface = "interface", Name = "name", }; } @@ -725,7 +725,7 @@ namespace SabreTools.Metadata.DatFiles.Test { return new Data.Models.Metadata.RamOption { - [Data.Models.Metadata.RamOption.ContentKey] = "content", + Content = "content", Default = true, Name = "name", }; @@ -921,7 +921,7 @@ namespace SabreTools.Metadata.DatFiles.Test return new Data.Models.Metadata.SlotOption { Default = true, - [Data.Models.Metadata.SlotOption.DevNameKey] = "devname", + DevName = "devname", Name = "name", }; } @@ -1260,8 +1260,8 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateDevice(Device? device) { Assert.NotNull(device); - Assert.Equal("fixedimage", device.ReadString(Data.Models.Metadata.Device.FixedImageKey)); - Assert.Equal("interface", device.ReadString(Data.Models.Metadata.Device.InterfaceKey)); + Assert.Equal("fixedimage", device.FixedImage); + Assert.Equal("interface", device.Interface); Assert.Equal(true, device.Mandatory); Assert.Equal("tag", device.Tag); Assert.Equal(Data.Models.Metadata.DeviceType.PunchTape, device.DeviceType); @@ -1424,7 +1424,7 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateInstance(Instance? instance) { Assert.NotNull(instance); - Assert.Equal("briefname", instance.ReadString(Data.Models.Metadata.Instance.BriefNameKey)); + Assert.Equal("briefname", instance.BriefName); Assert.Equal("name", instance.Name); } @@ -1441,7 +1441,7 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidatePart(Part? part) { Assert.NotNull(part); - Assert.Equal("interface", part.ReadString(Data.Models.Metadata.Part.InterfaceKey)); + Assert.Equal("interface", part.Interface); Assert.Equal("name", part.Name); } @@ -1472,7 +1472,7 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateRamOption(RamOption? ramOption) { Assert.NotNull(ramOption); - Assert.Equal("content", ramOption.ReadString(Data.Models.Metadata.RamOption.ContentKey)); + Assert.Equal("content", ramOption.Content); Assert.True(ramOption.Default); Assert.Equal("name", ramOption.Name); } @@ -1616,7 +1616,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Assert.NotNull(slotOption); Assert.True(slotOption.Default); - Assert.Equal("devname", slotOption.ReadString(Data.Models.Metadata.SlotOption.DevNameKey)); + Assert.Equal("devname", slotOption.DevName); Assert.Equal("name", slotOption.Name); } diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs index 8b1a63a1..edc3c678 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs @@ -772,8 +772,8 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateMetadataDevice(Data.Models.Metadata.Device? device) { Assert.NotNull(device); - Assert.Equal("fixedimage", device.ReadString(Data.Models.Metadata.Device.FixedImageKey)); - Assert.Equal("interface", device.ReadString(Data.Models.Metadata.Device.InterfaceKey)); + Assert.Equal("fixedimage", device.FixedImage); + Assert.Equal("interface", device.Interface); Assert.Equal(true, device.Mandatory); Assert.Equal("tag", device.Tag); Assert.Equal(Data.Models.Metadata.DeviceType.PunchTape, device.DeviceType); @@ -941,7 +941,7 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateMetadataInstance(Data.Models.Metadata.Instance? instance) { Assert.NotNull(instance); - Assert.Equal("briefname", instance.ReadString(Data.Models.Metadata.Instance.BriefNameKey)); + Assert.Equal("briefname", instance.BriefName); Assert.Equal("name", instance.Name); } @@ -958,7 +958,7 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateMetadataPart(Data.Models.Metadata.Part? part) { Assert.NotNull(part); - Assert.Equal("interface", part.ReadString(Data.Models.Metadata.Part.InterfaceKey)); + Assert.Equal("interface", part.Interface); Assert.Equal("name", part.Name); Data.Models.Metadata.DataArea[]? dataAreas = part.ReadArray(Data.Models.Metadata.Part.DataAreaKey); @@ -996,7 +996,7 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateMetadataRamOption(Data.Models.Metadata.RamOption? ramOption) { Assert.NotNull(ramOption); - Assert.Equal("content", ramOption.ReadString(Data.Models.Metadata.RamOption.ContentKey)); + Assert.Equal("content", ramOption.Content); Assert.True(ramOption.Default); Assert.Equal("name", ramOption.Name); } @@ -1180,7 +1180,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Assert.NotNull(slotOption); Assert.True(slotOption.Default); - Assert.Equal("devname", slotOption.ReadString(Data.Models.Metadata.SlotOption.DevNameKey)); + Assert.Equal("devname", slotOption.DevName); Assert.Equal("name", slotOption.Name); } diff --git a/SabreTools.Metadata.DatFiles.Test/FormatsTests.cs b/SabreTools.Metadata.DatFiles.Test/FormatsTests.cs index d1aa5ba8..35439552 100644 --- a/SabreTools.Metadata.DatFiles.Test/FormatsTests.cs +++ b/SabreTools.Metadata.DatFiles.Test/FormatsTests.cs @@ -1572,7 +1572,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ nameof(Data.Models.Metadata.Part.Name), - Data.Models.Metadata.Part.InterfaceKey, + nameof(Data.Models.Metadata.Part.Interface), nameof(Data.Models.Metadata.DipSwitch.Name), nameof(Data.Models.Metadata.DipSwitch.Tag), nameof(Data.Models.Metadata.DipSwitch.Mask), @@ -1590,7 +1590,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ nameof(Data.Models.Metadata.Part.Name), - Data.Models.Metadata.Part.InterfaceKey, + nameof(Data.Models.Metadata.Part.Interface), nameof(Data.Models.Metadata.DiskArea.Name), nameof(Data.Models.Metadata.Disk.Name), ])); @@ -1621,7 +1621,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ nameof(Data.Models.Metadata.Part.Name), - Data.Models.Metadata.Part.InterfaceKey, + nameof(Data.Models.Metadata.Part.Interface), nameof(Data.Models.Metadata.DataArea.Name), Data.Models.Metadata.DataArea.SizeKey, ])); diff --git a/SabreTools.Metadata.DatFiles/DatFile.Splitting.cs b/SabreTools.Metadata.DatFiles/DatFile.Splitting.cs index 5af2882f..fcf958b2 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.Splitting.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.Splitting.cs @@ -679,7 +679,7 @@ namespace SabreTools.Metadata.DatFiles .ConvertAll(i => i as Slot) .FindAll(s => s!.SlotOptionsSpecified) .SelectMany(s => s!.Read(Data.Models.Metadata.Slot.SlotOptionKey)!) - .Select(so => so.ReadString(Data.Models.Metadata.SlotOption.DevNameKey))); + .Select(so => so.DevName)); // If we're checking device references if (deviceReferences.Count > 0) @@ -745,7 +745,7 @@ namespace SabreTools.Metadata.DatFiles .FindAll(i => i is Slot) .FindAll(s => (s as Slot)!.SlotOptionsSpecified) .SelectMany(s => (s as Slot)!.Read(Data.Models.Metadata.Slot.SlotOptionKey)!) - .Select(o => o.ReadString(Data.Models.Metadata.SlotOption.DevNameKey)!)); + .Select(o => o.DevName!)); // Set new machine information and add to the current machine foreach (DatItem item in slotItems) @@ -773,7 +773,7 @@ namespace SabreTools.Metadata.DatFiles slotOptions.Add(slotOption); var slotOptionItem = new SlotOption(); - slotOptionItem.Write(Data.Models.Metadata.SlotOption.DevNameKey, slotOption); + slotOptionItem.DevName = slotOption; slotOptionItem.CopyMachineInformation(copyFrom); var slotItem = new Slot(); @@ -836,7 +836,7 @@ namespace SabreTools.Metadata.DatFiles .Select(i => i as Slot) .Where(s => s!.SlotOptionsSpecified) .SelectMany(s => s!.Read(Data.Models.Metadata.Slot.SlotOptionKey)!) - .Select(so => so.ReadString(Data.Models.Metadata.SlotOption.DevNameKey)) + .Select(so => so.DevName) .Distinct() .ToList(); @@ -915,7 +915,7 @@ namespace SabreTools.Metadata.DatFiles .Where(i => i is Slot) .Where(s => (s as Slot)!.SlotOptionsSpecified) .SelectMany(s => (s as Slot)!.Read(Data.Models.Metadata.Slot.SlotOptionKey)!) - .Select(o => o.ReadString(Data.Models.Metadata.SlotOption.DevNameKey)!)); + .Select(o => o.DevName!)); // Set new machine information and add to the current machine var copyFrom = GetMachineForItemDB(GetItemsForBucketDB(bucket).First().Key); @@ -944,7 +944,7 @@ namespace SabreTools.Metadata.DatFiles if (!slotOptions.Contains(slotOption)) { var slotOptionItem = new SlotOption(); - slotOptionItem.Write(Data.Models.Metadata.SlotOption.DevNameKey, slotOption); + slotOptionItem.DevName = slotOption; var slotItem = new Slot(); slotItem.Write(Data.Models.Metadata.Slot.SlotOptionKey, [slotOptionItem]); diff --git a/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs b/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs index 723739b0..cb461899 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs @@ -325,8 +325,8 @@ namespace SabreTools.Metadata.DatFiles // Copy over string values partItems[partName].Name = partName; - if (!partItems[partName].ContainsKey(Data.Models.Metadata.Part.InterfaceKey)) - partItems[partName][Data.Models.Metadata.Part.InterfaceKey] = partItem.ReadString(Data.Models.Metadata.Part.InterfaceKey); + if (partItems[partName].Interface == null) + partItems[partName].Interface = partItem.Interface; // Clear any empty fields ClearEmptyKeys(partItems[partName]); @@ -751,8 +751,8 @@ namespace SabreTools.Metadata.DatFiles // Copy over string values partItems[partName].Name = partName; - if (!partItems[partName].ContainsKey(Data.Models.Metadata.Part.InterfaceKey)) - partItems[partName][Data.Models.Metadata.Part.InterfaceKey] = partItem.ReadString(Data.Models.Metadata.Part.InterfaceKey); + if (partItems[partName].Interface == null) + partItems[partName].Interface = partItem.Interface; // Clear any empty fields ClearEmptyKeys(partItems[partName]); @@ -998,7 +998,7 @@ namespace SabreTools.Metadata.DatFiles var newOriginal = new Data.Models.Metadata.Original { [Data.Models.Metadata.Original.ValueKey] = romOriginal.Value.FromYesNo(), - [Data.Models.Metadata.Original.ContentKey] = romOriginal.Content, + Content = romOriginal.Content, }; dumpRom[Data.Models.Metadata.Dump.OriginalKey] = newOriginal; } @@ -1026,7 +1026,7 @@ namespace SabreTools.Metadata.DatFiles var newOriginal = new Data.Models.Metadata.Original { [Data.Models.Metadata.Original.ValueKey] = megaRomOriginal.Value.FromYesNo(), - [Data.Models.Metadata.Original.ContentKey] = megaRomOriginal.Content, + Content = megaRomOriginal.Content, }; dumpMegaRom[Data.Models.Metadata.Dump.OriginalKey] = newOriginal; } @@ -1054,7 +1054,7 @@ namespace SabreTools.Metadata.DatFiles var newOriginal = new Data.Models.Metadata.Original { [Data.Models.Metadata.Original.ValueKey] = sccPlusCartOriginal.Value.FromYesNo(), - [Data.Models.Metadata.Original.ContentKey] = sccPlusCartOriginal.Content, + Content = sccPlusCartOriginal.Content, }; dumpSccPlusCart[Data.Models.Metadata.Dump.OriginalKey] = newOriginal; } diff --git a/SabreTools.Metadata.DatFiles/Formats/SoftwareList.cs b/SabreTools.Metadata.DatFiles/Formats/SoftwareList.cs index 0f474162..40b0ec09 100644 --- a/SabreTools.Metadata.DatFiles/Formats/SoftwareList.cs +++ b/SabreTools.Metadata.DatFiles/Formats/SoftwareList.cs @@ -110,14 +110,14 @@ namespace SabreTools.Metadata.DatFiles.Formats if (!dipSwitch.PartSpecified) { missingFields.Add(nameof(Data.Models.Metadata.Part.Name)); - missingFields.Add(Data.Models.Metadata.Part.InterfaceKey); + missingFields.Add(nameof(Data.Models.Metadata.Part.Interface)); } else { if (string.IsNullOrEmpty(dipSwitch.Read(DipSwitch.PartKey)!.Name)) missingFields.Add(nameof(Data.Models.Metadata.Part.Name)); - if (string.IsNullOrEmpty(dipSwitch.Read(DipSwitch.PartKey)!.ReadString(Data.Models.Metadata.Part.InterfaceKey))) - missingFields.Add(Data.Models.Metadata.Part.InterfaceKey); + if (string.IsNullOrEmpty(dipSwitch.Read(DipSwitch.PartKey)!.Interface)) + missingFields.Add(nameof(Data.Models.Metadata.Part.Interface)); } if (string.IsNullOrEmpty(dipSwitch.Name)) @@ -141,14 +141,14 @@ namespace SabreTools.Metadata.DatFiles.Formats if (!disk.PartSpecified) { missingFields.Add(nameof(Data.Models.Metadata.Part.Name)); - missingFields.Add(Data.Models.Metadata.Part.InterfaceKey); + missingFields.Add(nameof(Data.Models.Metadata.Part.Interface)); } else { if (string.IsNullOrEmpty(disk.Read(Disk.PartKey)!.Name)) missingFields.Add(nameof(Data.Models.Metadata.Part.Name)); - if (string.IsNullOrEmpty(disk.Read(Disk.PartKey)!.ReadString(Data.Models.Metadata.Part.InterfaceKey))) - missingFields.Add(Data.Models.Metadata.Part.InterfaceKey); + if (string.IsNullOrEmpty(disk.Read(Disk.PartKey)!.Interface)) + missingFields.Add(nameof(Data.Models.Metadata.Part.Interface)); } if (!disk.DiskAreaSpecified) @@ -174,14 +174,14 @@ namespace SabreTools.Metadata.DatFiles.Formats if (!rom.PartSpecified) { missingFields.Add(nameof(Data.Models.Metadata.Part.Name)); - missingFields.Add(Data.Models.Metadata.Part.InterfaceKey); + missingFields.Add(nameof(Data.Models.Metadata.Part.Interface)); } else { if (string.IsNullOrEmpty(rom.Read(Rom.PartKey)!.Name)) missingFields.Add(nameof(Data.Models.Metadata.Part.Name)); - if (string.IsNullOrEmpty(rom.Read(Rom.PartKey)!.ReadString(Data.Models.Metadata.Part.InterfaceKey))) - missingFields.Add(Data.Models.Metadata.Part.InterfaceKey); + if (string.IsNullOrEmpty(rom.Read(Rom.PartKey)!.Interface)) + missingFields.Add(nameof(Data.Models.Metadata.Part.Interface)); } if (!rom.DataAreaSpecified) diff --git a/SabreTools.Metadata.DatItems/Formats/Device.cs b/SabreTools.Metadata.DatItems/Formats/Device.cs index fd24980b..cba73862 100644 --- a/SabreTools.Metadata.DatItems/Formats/Device.cs +++ b/SabreTools.Metadata.DatItems/Formats/Device.cs @@ -19,6 +19,22 @@ namespace SabreTools.Metadata.DatItems.Formats set => (_internal as Data.Models.Metadata.Device)?.DeviceType = value; } + [JsonIgnore] + public bool ExtensionsSpecified + { + get + { + var extensions = Read(Data.Models.Metadata.Device.ExtensionKey); + return extensions is not null && extensions.Length > 0; + } + } + + public string? FixedImage + { + get => (_internal as Data.Models.Metadata.Device)?.FixedImage; + set => (_internal as Data.Models.Metadata.Device)?.FixedImage = value; + } + [JsonIgnore] public bool InstancesSpecified { @@ -29,14 +45,10 @@ namespace SabreTools.Metadata.DatItems.Formats } } - [JsonIgnore] - public bool ExtensionsSpecified + public string? Interface { - get - { - var extensions = Read(Data.Models.Metadata.Device.ExtensionKey); - return extensions is not null && extensions.Length > 0; - } + get => (_internal as Data.Models.Metadata.Device)?.Interface; + set => (_internal as Data.Models.Metadata.Device)?.Interface = value; } public bool? Mandatory @@ -90,6 +102,12 @@ namespace SabreTools.Metadata.DatItems.Formats { var deviceItem = base.GetInternalClone(); + deviceItem.DeviceType = DeviceType; + deviceItem.FixedImage = FixedImage; + deviceItem.Interface = Interface; + deviceItem.Mandatory = Mandatory; + deviceItem.Tag = Tag; + var instance = Read(Data.Models.Metadata.Device.InstanceKey); if (instance is not null) deviceItem[Data.Models.Metadata.Device.InstanceKey] = instance.GetInternalClone(); diff --git a/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs b/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs index 2f7c6592..d6b2924d 100644 --- a/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs +++ b/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs @@ -79,7 +79,7 @@ namespace SabreTools.Metadata.DatItems.Formats var part = Read(PartKey); return part is not null && (!string.IsNullOrEmpty(part.Name) - || !string.IsNullOrEmpty(part.ReadString(Data.Models.Metadata.Part.InterfaceKey))); + || !string.IsNullOrEmpty(part.Interface)); } } diff --git a/SabreTools.Metadata.DatItems/Formats/Disk.cs b/SabreTools.Metadata.DatItems/Formats/Disk.cs index f204ba44..0af6c769 100644 --- a/SabreTools.Metadata.DatItems/Formats/Disk.cs +++ b/SabreTools.Metadata.DatItems/Formats/Disk.cs @@ -58,7 +58,7 @@ namespace SabreTools.Metadata.DatItems.Formats var part = Read(PartKey); return part is not null && (!string.IsNullOrEmpty(part.Name) - || !string.IsNullOrEmpty(part.ReadString(Data.Models.Metadata.Part.InterfaceKey))); + || !string.IsNullOrEmpty(part.Interface)); } } diff --git a/SabreTools.Metadata.DatItems/Formats/Instance.cs b/SabreTools.Metadata.DatItems/Formats/Instance.cs index ce7d382a..873ed79a 100644 --- a/SabreTools.Metadata.DatItems/Formats/Instance.cs +++ b/SabreTools.Metadata.DatItems/Formats/Instance.cs @@ -12,6 +12,12 @@ namespace SabreTools.Metadata.DatItems.Formats { #region Fields + public string? BriefName + { + get => (_internal as Data.Models.Metadata.Instance)?.BriefName; + set => (_internal as Data.Models.Metadata.Instance)?.BriefName = value; + } + public string? Name { get => (_internal as Data.Models.Metadata.Instance)?.Name; diff --git a/SabreTools.Metadata.DatItems/Formats/Original.cs b/SabreTools.Metadata.DatItems/Formats/Original.cs index 9504719e..2239723a 100644 --- a/SabreTools.Metadata.DatItems/Formats/Original.cs +++ b/SabreTools.Metadata.DatItems/Formats/Original.cs @@ -19,8 +19,8 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonProperty("content"), XmlElement("content")] public string? Content { - get => _internal.ReadString(Data.Models.Metadata.Original.ContentKey); - set => _internal[Data.Models.Metadata.Original.ContentKey] = value; + get => _internal.Content; + set => _internal.Content = value; } /// diff --git a/SabreTools.Metadata.DatItems/Formats/Part.cs b/SabreTools.Metadata.DatItems/Formats/Part.cs index 1aed4ec8..ef2151fe 100644 --- a/SabreTools.Metadata.DatItems/Formats/Part.cs +++ b/SabreTools.Metadata.DatItems/Formats/Part.cs @@ -23,6 +23,12 @@ namespace SabreTools.Metadata.DatItems.Formats } } + public string? Interface + { + get => (_internal as Data.Models.Metadata.Part)?.Interface; + set => (_internal as Data.Models.Metadata.Part)?.Interface = value; + } + public string? Name { get => (_internal as Data.Models.Metadata.Part)?.Name; diff --git a/SabreTools.Metadata.DatItems/Formats/RamOption.cs b/SabreTools.Metadata.DatItems/Formats/RamOption.cs index d39d3aff..09de128b 100644 --- a/SabreTools.Metadata.DatItems/Formats/RamOption.cs +++ b/SabreTools.Metadata.DatItems/Formats/RamOption.cs @@ -12,6 +12,12 @@ namespace SabreTools.Metadata.DatItems.Formats { #region Properties + public string? Content + { + get => (_internal as Data.Models.Metadata.RamOption)?.Content; + set => (_internal as Data.Models.Metadata.RamOption)?.Content = value; + } + public bool? Default { get => (_internal as Data.Models.Metadata.RamOption)?.Default; diff --git a/SabreTools.Metadata.DatItems/Formats/Rom.cs b/SabreTools.Metadata.DatItems/Formats/Rom.cs index b4c9e47f..ca1e56df 100644 --- a/SabreTools.Metadata.DatItems/Formats/Rom.cs +++ b/SabreTools.Metadata.DatItems/Formats/Rom.cs @@ -108,7 +108,7 @@ namespace SabreTools.Metadata.DatItems.Formats var part = Read(PartKey); return part is not null && (!string.IsNullOrEmpty(part.Name) - || !string.IsNullOrEmpty(part.ReadString(Data.Models.Metadata.Part.InterfaceKey))); + || !string.IsNullOrEmpty(part.Interface)); } } @@ -183,7 +183,7 @@ namespace SabreTools.Metadata.DatItems.Formats Write("ORIGINAL", new Original { Value = original.ReadBool(Data.Models.Metadata.Original.ValueKey), - Content = original.ReadString(Data.Models.Metadata.Original.ContentKey), + Content = original.Content, }); } diff --git a/SabreTools.Metadata.DatItems/Formats/SlotOption.cs b/SabreTools.Metadata.DatItems/Formats/SlotOption.cs index 10e8b7e6..f3f64e47 100644 --- a/SabreTools.Metadata.DatItems/Formats/SlotOption.cs +++ b/SabreTools.Metadata.DatItems/Formats/SlotOption.cs @@ -18,6 +18,12 @@ namespace SabreTools.Metadata.DatItems.Formats set => (_internal as Data.Models.Metadata.SlotOption)?.Default = value; } + public string? DevName + { + get => (_internal as Data.Models.Metadata.SlotOption)?.DevName; + set => (_internal as Data.Models.Metadata.SlotOption)?.DevName = value; + } + public string? Name { get => (_internal as Data.Models.Metadata.SlotOption)?.Name; diff --git a/SabreTools.Metadata.Filter/FilterObject.cs b/SabreTools.Metadata.Filter/FilterObject.cs index b9635d99..49f54193 100644 --- a/SabreTools.Metadata.Filter/FilterObject.cs +++ b/SabreTools.Metadata.Filter/FilterObject.cs @@ -422,6 +422,12 @@ namespace SabreTools.Metadata.Filter case Device item when fieldName == "type": checkValue = item.DeviceType?.AsStringValue(); return true; + case Device item when fieldName == "fixedimage": + checkValue = item.FixedImage; + return true; + case Device item when fieldName == "interface": + checkValue = item.Interface; + return true; case Device item when fieldName == "mandatory": checkValue = item.Mandatory.FromYesNo(); return true; @@ -588,10 +594,21 @@ namespace SabreTools.Metadata.Filter checkValue = item.Supported?.AsStringValue(); return true; + case Original item when fieldName == "content": + checkValue = item.Content; + return true; + + case Part item when fieldName == "interface": + checkValue = item.Interface; + return true; + case Port item when fieldName == "tag": checkValue = item.Tag; return true; + case RamOption item when fieldName == "content": + checkValue = item.Content; + return true; case RamOption item when fieldName == "default": checkValue = item.Default.FromYesNo(); return true; @@ -638,6 +655,9 @@ namespace SabreTools.Metadata.Filter case SlotOption item when fieldName == "default": checkValue = item.Default.FromYesNo(); return true; + case SlotOption item when fieldName == "devname": + checkValue = item.DevName; + return true; case Software item when fieldName == "description": checkValue = item.Description; diff --git a/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs b/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs index 6588d508..3783410d 100644 --- a/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs @@ -280,7 +280,7 @@ namespace SabreTools.Serialization.CrossModel.Test var instance = new Data.Models.Listxml.Instance { Name = "name", - BriefName = "XXXXXX", + BriefName = "briefname", }; var extension = new Data.Models.Listxml.Extension @@ -292,9 +292,9 @@ namespace SabreTools.Serialization.CrossModel.Test { Type = Data.Models.Metadata.DeviceType.PunchTape, Tag = "tag", - FixedImage = "XXXXXX", + FixedImage = "fixedimage", Mandatory = true, - Interface = "XXXXXX", + Interface = "interface", Instance = instance, Extension = [extension], }; @@ -302,7 +302,7 @@ namespace SabreTools.Serialization.CrossModel.Test var slotOption = new Data.Models.Listxml.SlotOption { Name = "name", - DevName = "XXXXXX", + DevName = "devname", Default = true, }; @@ -324,7 +324,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Name = "name", Default = true, - Content = "XXXXXX", + Content = "content", }; Data.Models.Listxml.GameBase gameBase = game @@ -799,9 +799,9 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(device); Assert.Equal(Data.Models.Metadata.DeviceType.PunchTape, device.Type); Assert.Equal("tag", device.Tag); - Assert.Equal("XXXXXX", device.FixedImage); + Assert.Equal("fixedimage", device.FixedImage); Assert.Equal(true, device.Mandatory); - Assert.Equal("XXXXXX", device.Interface); + Assert.Equal("interface", device.Interface); Validate(device.Instance); Assert.NotNull(device.Extension); @@ -816,7 +816,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(instance); Assert.Equal("name", instance.Name); - Assert.Equal("XXXXXX", instance.BriefName); + Assert.Equal("briefname", instance.BriefName); } /// @@ -848,7 +848,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(slotoption); Assert.Equal("name", slotoption.Name); - Assert.Equal("XXXXXX", slotoption.DevName); + Assert.Equal("devname", slotoption.DevName); Assert.Equal(true, slotoption.Default); } @@ -872,7 +872,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(ramoption); Assert.Equal("name", ramoption.Name); Assert.Equal(true, ramoption.Default); - Assert.Equal("XXXXXX", ramoption.Content); + Assert.Equal("content", ramoption.Content); } } } diff --git a/SabreTools.Serialization.CrossModel.Test/M1Tests.cs b/SabreTools.Serialization.CrossModel.Test/M1Tests.cs index c5655a48..4bd22fb2 100644 --- a/SabreTools.Serialization.CrossModel.Test/M1Tests.cs +++ b/SabreTools.Serialization.CrossModel.Test/M1Tests.cs @@ -276,7 +276,7 @@ namespace SabreTools.Serialization.CrossModel.Test var instance = new Data.Models.Listxml.Instance { Name = "name", - BriefName = "XXXXXX", + BriefName = "briefname", }; var extension = new Data.Models.Listxml.Extension @@ -288,9 +288,9 @@ namespace SabreTools.Serialization.CrossModel.Test { Type = Data.Models.Metadata.DeviceType.PunchTape, Tag = "tag", - FixedImage = "XXXXXX", + FixedImage = "fixedimage", Mandatory = true, - Interface = "XXXXXX", + Interface = "interface", Instance = instance, Extension = [extension], }; @@ -298,7 +298,7 @@ namespace SabreTools.Serialization.CrossModel.Test var slotOption = new Data.Models.Listxml.SlotOption { Name = "name", - DevName = "XXXXXX", + DevName = "devname", Default = true, }; @@ -320,7 +320,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Name = "name", Default = true, - Content = "XXXXXX", + Content = "content", }; Data.Models.Listxml.GameBase gameBase = game @@ -793,9 +793,9 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(device); Assert.Equal(Data.Models.Metadata.DeviceType.PunchTape, device.Type); Assert.Equal("tag", device.Tag); - Assert.Equal("XXXXXX", device.FixedImage); + Assert.Equal("fixedimage", device.FixedImage); Assert.Equal(true, device.Mandatory); - Assert.Equal("XXXXXX", device.Interface); + Assert.Equal("interface", device.Interface); Validate(device.Instance); Assert.NotNull(device.Extension); @@ -810,7 +810,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(instance); Assert.Equal("name", instance.Name); - Assert.Equal("XXXXXX", instance.BriefName); + Assert.Equal("briefname", instance.BriefName); } /// @@ -842,7 +842,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(slotoption); Assert.Equal("name", slotoption.Name); - Assert.Equal("XXXXXX", slotoption.DevName); + Assert.Equal("devname", slotoption.DevName); Assert.Equal(true, slotoption.Default); } @@ -866,7 +866,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(ramoption); Assert.Equal("name", ramoption.Name); Assert.Equal(true, ramoption.Default); - Assert.Equal("XXXXXX", ramoption.Content); + Assert.Equal("content", ramoption.Content); } } } diff --git a/SabreTools.Serialization.CrossModel.Test/MessTests.cs b/SabreTools.Serialization.CrossModel.Test/MessTests.cs index e009a1ec..e0f8517d 100644 --- a/SabreTools.Serialization.CrossModel.Test/MessTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/MessTests.cs @@ -276,7 +276,7 @@ namespace SabreTools.Serialization.CrossModel.Test var instance = new Data.Models.Listxml.Instance { Name = "name", - BriefName = "XXXXXX", + BriefName = "briefname", }; var extension = new Data.Models.Listxml.Extension @@ -288,9 +288,9 @@ namespace SabreTools.Serialization.CrossModel.Test { Type = Data.Models.Metadata.DeviceType.PunchTape, Tag = "tag", - FixedImage = "XXXXXX", + FixedImage = "fixedimage", Mandatory = true, - Interface = "XXXXXX", + Interface = "interface", Instance = instance, Extension = [extension], }; @@ -298,7 +298,7 @@ namespace SabreTools.Serialization.CrossModel.Test var slotOption = new Data.Models.Listxml.SlotOption { Name = "name", - DevName = "XXXXXX", + DevName = "devname", Default = true, }; @@ -320,7 +320,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Name = "name", Default = true, - Content = "XXXXXX", + Content = "content", }; Data.Models.Listxml.GameBase gameBase = game @@ -793,9 +793,9 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(device); Assert.Equal(Data.Models.Metadata.DeviceType.PunchTape, device.Type); Assert.Equal("tag", device.Tag); - Assert.Equal("XXXXXX", device.FixedImage); + Assert.Equal("fixedimage", device.FixedImage); Assert.Equal(true, device.Mandatory); - Assert.Equal("XXXXXX", device.Interface); + Assert.Equal("interface", device.Interface); Validate(device.Instance); Assert.NotNull(device.Extension); @@ -810,7 +810,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(instance); Assert.Equal("name", instance.Name); - Assert.Equal("XXXXXX", instance.BriefName); + Assert.Equal("briefname", instance.BriefName); } /// @@ -842,7 +842,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(slotoption); Assert.Equal("name", slotoption.Name); - Assert.Equal("XXXXXX", slotoption.DevName); + Assert.Equal("devname", slotoption.DevName); Assert.Equal(true, slotoption.Default); } @@ -866,7 +866,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(ramoption); Assert.Equal("name", ramoption.Name); Assert.Equal(true, ramoption.Default); - Assert.Equal("XXXXXX", ramoption.Content); + Assert.Equal("content", ramoption.Content); } } } diff --git a/SabreTools.Serialization.CrossModel.Test/OpenMSXTests.cs b/SabreTools.Serialization.CrossModel.Test/OpenMSXTests.cs index 10bb6445..eef7cc22 100644 --- a/SabreTools.Serialization.CrossModel.Test/OpenMSXTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/OpenMSXTests.cs @@ -37,7 +37,7 @@ namespace SabreTools.Serialization.CrossModel.Test var original = new Data.Models.OpenMSX.Original { Value = "value", - Content = "XXXXXX", + Content = "content", }; var rom = new Data.Models.OpenMSX.Rom @@ -138,7 +138,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(original); Assert.Equal("value", original.Value); - Assert.Equal("XXXXXX", original.Content); + Assert.Equal("content", original.Content); } /// diff --git a/SabreTools.Serialization.CrossModel.Test/SoftwareListTests.cs b/SabreTools.Serialization.CrossModel.Test/SoftwareListTests.cs index 18dc28b6..0106999e 100644 --- a/SabreTools.Serialization.CrossModel.Test/SoftwareListTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/SoftwareListTests.cs @@ -109,7 +109,7 @@ namespace SabreTools.Serialization.CrossModel.Test var part = new Data.Models.SoftwareList.Part { Name = "name", - Interface = "XXXXXX", + Interface = "interface", Feature = [feature], DataArea = [dataarea], DiskArea = [diskarea], @@ -193,7 +193,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(part); Assert.Equal("name", part.Name); - Assert.Equal("XXXXXX", part.Interface); + Assert.Equal("interface", part.Interface); Assert.NotNull(part.Feature); var feature = Assert.Single(part.Feature); diff --git a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs index 3ff69276..9cab05a1 100644 --- a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs @@ -308,9 +308,9 @@ namespace SabreTools.Serialization.CrossModel { Type = item.DeviceType, Tag = item.Tag, - FixedImage = item.ReadString(Data.Models.Metadata.Device.FixedImageKey), + FixedImage = item.FixedImage, Mandatory = item.Mandatory, - Interface = item.ReadString(Data.Models.Metadata.Device.InterfaceKey), + Interface = item.Interface, }; var instance = item.Read(Data.Models.Metadata.Device.InstanceKey); @@ -522,7 +522,7 @@ namespace SabreTools.Serialization.CrossModel var instance = new Instance { Name = item.Name, - BriefName = item.ReadString(Data.Models.Metadata.Instance.BriefNameKey), + BriefName = item.BriefName, }; return instance; } @@ -553,7 +553,7 @@ namespace SabreTools.Serialization.CrossModel { Name = item.Name, Default = item.Default, - Content = item.ReadString(Data.Models.Metadata.RamOption.ContentKey), + Content = item.Content, }; return ramOption; } @@ -618,7 +618,7 @@ namespace SabreTools.Serialization.CrossModel var slotOption = new SlotOption { Name = item.Name, - DevName = item.ReadString(Data.Models.Metadata.SlotOption.DevNameKey), + DevName = item.DevName, Default = item.Default, }; return slotOption; diff --git a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs index f58abe2b..d15be86f 100644 --- a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs @@ -343,9 +343,9 @@ namespace SabreTools.Serialization.CrossModel { DeviceType = item.Type, Tag = item.Tag, - [Data.Models.Metadata.Device.FixedImageKey] = item.FixedImage, + FixedImage = item.FixedImage, Mandatory = item.Mandatory, - [Data.Models.Metadata.Device.InterfaceKey] = item.Interface, + Interface = item.Interface, }; if (item.Instance is not null) @@ -559,7 +559,7 @@ namespace SabreTools.Serialization.CrossModel var instance = new Data.Models.Metadata.Instance { Name = item.Name, - [Data.Models.Metadata.Instance.BriefNameKey] = item.BriefName, + BriefName = item.BriefName, }; return instance; } @@ -592,7 +592,7 @@ namespace SabreTools.Serialization.CrossModel { Name = item.Name, Default = item.Default, - [Data.Models.Metadata.RamOption.ContentKey] = item.Content, + Content = item.Content, }; return ramOption; } @@ -659,7 +659,7 @@ namespace SabreTools.Serialization.CrossModel var slotOption = new Data.Models.Metadata.SlotOption { Name = item.Name, - [Data.Models.Metadata.SlotOption.DevNameKey] = item.DevName, + DevName = item.DevName, Default = item.Default, }; return slotOption; diff --git a/SabreTools.Serialization.CrossModel/OpenMSX.Deserializer.cs b/SabreTools.Serialization.CrossModel/OpenMSX.Deserializer.cs index 0fd48c22..bbfc7d76 100644 --- a/SabreTools.Serialization.CrossModel/OpenMSX.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/OpenMSX.Deserializer.cs @@ -104,7 +104,7 @@ namespace SabreTools.Serialization.CrossModel var original = new Original { Value = item.ReadString(Data.Models.Metadata.Original.ValueKey), - Content = item.ReadString(Data.Models.Metadata.Original.ContentKey), + Content = item.Content, }; return original; } diff --git a/SabreTools.Serialization.CrossModel/OpenMSX.Serializer.cs b/SabreTools.Serialization.CrossModel/OpenMSX.Serializer.cs index e77396d4..d621cadb 100644 --- a/SabreTools.Serialization.CrossModel/OpenMSX.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/OpenMSX.Serializer.cs @@ -104,7 +104,7 @@ namespace SabreTools.Serialization.CrossModel var original = new Data.Models.Metadata.Original { [Data.Models.Metadata.Original.ValueKey] = item.Value, - [Data.Models.Metadata.Original.ContentKey] = item.Content, + Content = item.Content, }; return original; } diff --git a/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs b/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs index 94a8a2be..0ecfc247 100644 --- a/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs @@ -186,7 +186,7 @@ namespace SabreTools.Serialization.CrossModel var part = new Part { Name = item.Name, - Interface = item.ReadString(Data.Models.Metadata.Part.InterfaceKey), + Interface = item.Interface, }; var features = item.Read(Data.Models.Metadata.Part.FeatureKey); diff --git a/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs b/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs index 5fe9a284..6645f2aa 100644 --- a/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs @@ -184,7 +184,7 @@ namespace SabreTools.Serialization.CrossModel var part = new Data.Models.Metadata.Part { Name = item.Name, - [Data.Models.Metadata.Part.InterfaceKey] = item.Interface, + Interface = item.Interface, }; if (item.Feature is not null && item.Feature.Length > 0) diff --git a/SabreTools.Serialization.Readers.Test/ListxmlTests.cs b/SabreTools.Serialization.Readers.Test/ListxmlTests.cs index 5b14375e..c317c05c 100644 --- a/SabreTools.Serialization.Readers.Test/ListxmlTests.cs +++ b/SabreTools.Serialization.Readers.Test/ListxmlTests.cs @@ -347,7 +347,7 @@ namespace SabreTools.Serialization.Readers.Test var instance = new Data.Models.Listxml.Instance { Name = "name", - BriefName = "XXXXXX", + BriefName = "briefname", }; var extension = new Data.Models.Listxml.Extension @@ -359,9 +359,9 @@ namespace SabreTools.Serialization.Readers.Test { Type = Data.Models.Metadata.DeviceType.PunchTape, Tag = "tag", - FixedImage = "XXXXXX", + FixedImage = "fixedimage", Mandatory = true, - Interface = "XXXXXX", + Interface = "interface", Instance = instance, Extension = [extension], }; @@ -369,7 +369,7 @@ namespace SabreTools.Serialization.Readers.Test var slotOption = new Data.Models.Listxml.SlotOption { Name = "name", - DevName = "XXXXXX", + DevName = "devname", Default = true, }; @@ -391,7 +391,7 @@ namespace SabreTools.Serialization.Readers.Test { Name = "name", Default = true, - Content = "XXXXXX", + Content = "content", }; Data.Models.Listxml.GameBase gameBase = game @@ -866,9 +866,9 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(device); Assert.Equal(Data.Models.Metadata.DeviceType.PunchTape, device.Type); Assert.Equal("tag", device.Tag); - Assert.Equal("XXXXXX", device.FixedImage); + Assert.Equal("fixedimage", device.FixedImage); Assert.Equal(true, device.Mandatory); - Assert.Equal("XXXXXX", device.Interface); + Assert.Equal("interface", device.Interface); Validate(device.Instance); Assert.NotNull(device.Extension); @@ -883,7 +883,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(instance); Assert.Equal("name", instance.Name); - Assert.Equal("XXXXXX", instance.BriefName); + Assert.Equal("briefname", instance.BriefName); } /// @@ -915,7 +915,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(slotoption); Assert.Equal("name", slotoption.Name); - Assert.Equal("XXXXXX", slotoption.DevName); + Assert.Equal("devname", slotoption.DevName); Assert.Equal(true, slotoption.Default); } @@ -939,7 +939,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(ramoption); Assert.Equal("name", ramoption.Name); Assert.Equal(true, ramoption.Default); - Assert.Equal("XXXXXX", ramoption.Content); + Assert.Equal("content", ramoption.Content); } } } diff --git a/SabreTools.Serialization.Readers.Test/M1Tests.cs b/SabreTools.Serialization.Readers.Test/M1Tests.cs index efa904f0..21c4a6eb 100644 --- a/SabreTools.Serialization.Readers.Test/M1Tests.cs +++ b/SabreTools.Serialization.Readers.Test/M1Tests.cs @@ -343,7 +343,7 @@ namespace SabreTools.Serialization.Readers.Test var instance = new Data.Models.Listxml.Instance { Name = "name", - BriefName = "XXXXXX", + BriefName = "briefname", }; var extension = new Data.Models.Listxml.Extension @@ -355,9 +355,9 @@ namespace SabreTools.Serialization.Readers.Test { Type = Data.Models.Metadata.DeviceType.PunchTape, Tag = "tag", - FixedImage = "XXXXXX", + FixedImage = "fixedimage", Mandatory = true, - Interface = "XXXXXX", + Interface = "interface", Instance = instance, Extension = [extension], }; @@ -365,7 +365,7 @@ namespace SabreTools.Serialization.Readers.Test var slotOption = new Data.Models.Listxml.SlotOption { Name = "name", - DevName = "XXXXXX", + DevName = "devname", Default = true, }; @@ -387,7 +387,7 @@ namespace SabreTools.Serialization.Readers.Test { Name = "name", Default = true, - Content = "XXXXXX", + Content = "content", }; Data.Models.Listxml.GameBase gameBase = game @@ -860,9 +860,9 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(device); Assert.Equal(Data.Models.Metadata.DeviceType.PunchTape, device.Type); Assert.Equal("tag", device.Tag); - Assert.Equal("XXXXXX", device.FixedImage); + Assert.Equal("fixedimage", device.FixedImage); Assert.Equal(true, device.Mandatory); - Assert.Equal("XXXXXX", device.Interface); + Assert.Equal("interface", device.Interface); Validate(device.Instance); Assert.NotNull(device.Extension); @@ -877,7 +877,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(instance); Assert.Equal("name", instance.Name); - Assert.Equal("XXXXXX", instance.BriefName); + Assert.Equal("briefname", instance.BriefName); } /// @@ -909,7 +909,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(slotoption); Assert.Equal("name", slotoption.Name); - Assert.Equal("XXXXXX", slotoption.DevName); + Assert.Equal("devname", slotoption.DevName); Assert.Equal(true, slotoption.Default); } @@ -933,7 +933,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(ramoption); Assert.Equal("name", ramoption.Name); Assert.Equal(true, ramoption.Default); - Assert.Equal("XXXXXX", ramoption.Content); + Assert.Equal("content", ramoption.Content); } } } diff --git a/SabreTools.Serialization.Readers.Test/MessTests.cs b/SabreTools.Serialization.Readers.Test/MessTests.cs index 29ef44eb..6e6d0895 100644 --- a/SabreTools.Serialization.Readers.Test/MessTests.cs +++ b/SabreTools.Serialization.Readers.Test/MessTests.cs @@ -343,7 +343,7 @@ namespace SabreTools.Serialization.Readers.Test var instance = new Data.Models.Listxml.Instance { Name = "name", - BriefName = "XXXXXX", + BriefName = "briefname", }; var extension = new Data.Models.Listxml.Extension @@ -355,9 +355,9 @@ namespace SabreTools.Serialization.Readers.Test { Type = Data.Models.Metadata.DeviceType.PunchTape, Tag = "tag", - FixedImage = "XXXXXX", + FixedImage = "fixedimage", Mandatory = true, - Interface = "XXXXXX", + Interface = "interface", Instance = instance, Extension = [extension], }; @@ -365,7 +365,7 @@ namespace SabreTools.Serialization.Readers.Test var slotOption = new Data.Models.Listxml.SlotOption { Name = "name", - DevName = "XXXXXX", + DevName = "devname", Default = true, }; @@ -387,7 +387,7 @@ namespace SabreTools.Serialization.Readers.Test { Name = "name", Default = true, - Content = "XXXXXX", + Content = "content", }; Data.Models.Listxml.GameBase gameBase = game @@ -860,9 +860,9 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(device); Assert.Equal(Data.Models.Metadata.DeviceType.PunchTape, device.Type); Assert.Equal("tag", device.Tag); - Assert.Equal("XXXXXX", device.FixedImage); + Assert.Equal("fixedimage", device.FixedImage); Assert.Equal(true, device.Mandatory); - Assert.Equal("XXXXXX", device.Interface); + Assert.Equal("interface", device.Interface); Validate(device.Instance); Assert.NotNull(device.Extension); @@ -877,7 +877,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(instance); Assert.Equal("name", instance.Name); - Assert.Equal("XXXXXX", instance.BriefName); + Assert.Equal("briefname", instance.BriefName); } /// @@ -909,7 +909,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(slotoption); Assert.Equal("name", slotoption.Name); - Assert.Equal("XXXXXX", slotoption.DevName); + Assert.Equal("devname", slotoption.DevName); Assert.Equal(true, slotoption.Default); } @@ -933,7 +933,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(ramoption); Assert.Equal("name", ramoption.Name); Assert.Equal(true, ramoption.Default); - Assert.Equal("XXXXXX", ramoption.Content); + Assert.Equal("content", ramoption.Content); } } } diff --git a/SabreTools.Serialization.Readers.Test/OpenMSXTests.cs b/SabreTools.Serialization.Readers.Test/OpenMSXTests.cs index 7b16e33a..c80c6616 100644 --- a/SabreTools.Serialization.Readers.Test/OpenMSXTests.cs +++ b/SabreTools.Serialization.Readers.Test/OpenMSXTests.cs @@ -103,7 +103,7 @@ namespace SabreTools.Serialization.Readers.Test var original = new Data.Models.OpenMSX.Original { Value = "value", - Content = "XXXXXX", + Content = "content", }; var rom = new Data.Models.OpenMSX.Rom @@ -204,7 +204,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(original); Assert.Equal("value", original.Value); - Assert.Equal("XXXXXX", original.Content); + Assert.Equal("content", original.Content); } /// diff --git a/SabreTools.Serialization.Readers.Test/SoftwareListTests.cs b/SabreTools.Serialization.Readers.Test/SoftwareListTests.cs index 7f59bae9..bcac0896 100644 --- a/SabreTools.Serialization.Readers.Test/SoftwareListTests.cs +++ b/SabreTools.Serialization.Readers.Test/SoftwareListTests.cs @@ -182,7 +182,7 @@ namespace SabreTools.Serialization.Readers.Test var part = new Data.Models.SoftwareList.Part { Name = "name", - Interface = "XXXXXX", + Interface = "interface", Feature = [feature], DataArea = [dataarea], DiskArea = [diskarea], @@ -266,7 +266,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(part); Assert.Equal("name", part.Name); - Assert.Equal("XXXXXX", part.Interface); + Assert.Equal("interface", part.Interface); Assert.NotNull(part.Feature); var feature = Assert.Single(part.Feature); From 11c4097cba0ff53f74f7d13e8a3b413f61b3a4a6 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Thu, 2 Apr 2026 15:32:24 -0400 Subject: [PATCH 017/142] Rename Clone extension to DeepClone to avoid conflicts --- SabreTools.Data.Extensions/MetadataExtensions.cs | 6 +++--- SabreTools.Metadata.DatFiles/DatHeader.cs | 2 +- SabreTools.Metadata.DatItems.Test/DatItemTests.cs | 2 +- SabreTools.Metadata.DatItems/DatItemT.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Adjuster.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Analog.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Archive.cs | 2 +- SabreTools.Metadata.DatItems/Formats/BiosSet.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Blank.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Chip.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Condition.cs | 2 +- SabreTools.Metadata.DatItems/Formats/ConfLocation.cs | 2 +- SabreTools.Metadata.DatItems/Formats/ConfSetting.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Configuration.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Control.cs | 2 +- SabreTools.Metadata.DatItems/Formats/DataArea.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Device.cs | 2 +- SabreTools.Metadata.DatItems/Formats/DeviceRef.cs | 2 +- SabreTools.Metadata.DatItems/Formats/DipLocation.cs | 2 +- SabreTools.Metadata.DatItems/Formats/DipSwitch.cs | 2 +- SabreTools.Metadata.DatItems/Formats/DipValue.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Disk.cs | 2 +- SabreTools.Metadata.DatItems/Formats/DiskArea.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Display.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Driver.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Extension.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Feature.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Info.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Input.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Instance.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Media.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Part.cs | 2 +- SabreTools.Metadata.DatItems/Formats/PartFeature.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Port.cs | 2 +- SabreTools.Metadata.DatItems/Formats/RamOption.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Release.cs | 2 +- SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Rom.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Sample.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Serials.cs | 2 +- SabreTools.Metadata.DatItems/Formats/SharedFeat.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Slot.cs | 2 +- SabreTools.Metadata.DatItems/Formats/SlotOption.cs | 2 +- SabreTools.Metadata.DatItems/Formats/SoftwareList.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Sound.cs | 2 +- SabreTools.Metadata.DatItems/Formats/SourceDetails.cs | 2 +- SabreTools.Metadata.DatItems/Machine.cs | 6 +++--- 47 files changed, 51 insertions(+), 51 deletions(-) diff --git a/SabreTools.Data.Extensions/MetadataExtensions.cs b/SabreTools.Data.Extensions/MetadataExtensions.cs index c6ba3fa1..bf55a13f 100644 --- a/SabreTools.Data.Extensions/MetadataExtensions.cs +++ b/SabreTools.Data.Extensions/MetadataExtensions.cs @@ -140,7 +140,7 @@ namespace SabreTools.Data.Extensions /// Deep clone a DictionaryBase object /// /// TODO: Move this to Clone methods in each file when keys go away entirely - public static DictionaryBase? Clone(this DictionaryBase self) + public static DictionaryBase? DeepClone(this DictionaryBase self) { // If construction failed, we can't do anything if (Activator.CreateInstance(self.GetType()) is not DictionaryBase clone) @@ -365,12 +365,12 @@ namespace SabreTools.Data.Extensions bool or long or double or string => value, // DictionaryBase types - DictionaryBase db => db.Clone(), + DictionaryBase db => db.DeepClone(), // Enumerable types byte[] bytArr => bytArr.Clone(), string[] strArr => strArr.Clone(), - DictionaryBase[] dbArr => Array.ConvertAll(dbArr, Clone), + DictionaryBase[] dbArr => Array.ConvertAll(dbArr, DeepClone), ICloneable[] clArr => Array.ConvertAll(clArr, cl => cl.Clone()), // Everything else just copies diff --git a/SabreTools.Metadata.DatFiles/DatHeader.cs b/SabreTools.Metadata.DatFiles/DatHeader.cs index 0002b131..0a42f5ab 100644 --- a/SabreTools.Metadata.DatFiles/DatHeader.cs +++ b/SabreTools.Metadata.DatFiles/DatHeader.cs @@ -192,7 +192,7 @@ namespace SabreTools.Metadata.DatFiles /// public Data.Models.Metadata.Header GetInternalClone() { - var header = (_internal.Clone() as Data.Models.Metadata.Header)!; + var header = (_internal.DeepClone() as Data.Models.Metadata.Header)!; // Convert subheader values if (CanOpenSpecified) diff --git a/SabreTools.Metadata.DatItems.Test/DatItemTests.cs b/SabreTools.Metadata.DatItems.Test/DatItemTests.cs index 85559259..cd63bf0d 100644 --- a/SabreTools.Metadata.DatItems.Test/DatItemTests.cs +++ b/SabreTools.Metadata.DatItems.Test/DatItemTests.cs @@ -32,7 +32,7 @@ namespace SabreTools.Metadata.DatItems.Test /// public override object Clone() => new TestDatItem() { - _internal = _internal.Clone() as TestDatItemModel ?? [] + _internal = _internal.DeepClone() as TestDatItemModel ?? [] }; /// diff --git a/SabreTools.Metadata.DatItems/DatItemT.cs b/SabreTools.Metadata.DatItems/DatItemT.cs index f76bfe8f..79354958 100644 --- a/SabreTools.Metadata.DatItems/DatItemT.cs +++ b/SabreTools.Metadata.DatItems/DatItemT.cs @@ -45,7 +45,7 @@ namespace SabreTools.Metadata.DatItems /// /// Get a clone of the current internal model /// - public virtual T GetInternalClone() => (_internal.Clone() as T)!; + public virtual T GetInternalClone() => (_internal.DeepClone() as T)!; #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/Adjuster.cs b/SabreTools.Metadata.DatItems/Formats/Adjuster.cs index c602e6df..d6b81041 100644 --- a/SabreTools.Metadata.DatItems/Formats/Adjuster.cs +++ b/SabreTools.Metadata.DatItems/Formats/Adjuster.cs @@ -59,7 +59,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new Adjuster(_internal.Clone() as Data.Models.Metadata.Adjuster ?? []); + public override object Clone() => new Adjuster(_internal.DeepClone() as Data.Models.Metadata.Adjuster ?? []); /// public override Data.Models.Metadata.Adjuster GetInternalClone() diff --git a/SabreTools.Metadata.DatItems/Formats/Analog.cs b/SabreTools.Metadata.DatItems/Formats/Analog.cs index 0cdaa4d1..7707b5a0 100644 --- a/SabreTools.Metadata.DatItems/Formats/Analog.cs +++ b/SabreTools.Metadata.DatItems/Formats/Analog.cs @@ -37,7 +37,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new Analog(_internal.Clone() as Data.Models.Metadata.Analog ?? []); + public override object Clone() => new Analog(_internal.DeepClone() as Data.Models.Metadata.Analog ?? []); #endregion } diff --git a/SabreTools.Metadata.DatItems/Formats/Archive.cs b/SabreTools.Metadata.DatItems/Formats/Archive.cs index 4c70993c..ed358eb9 100644 --- a/SabreTools.Metadata.DatItems/Formats/Archive.cs +++ b/SabreTools.Metadata.DatItems/Formats/Archive.cs @@ -37,7 +37,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new Archive(_internal.Clone() as Data.Models.Metadata.Archive ?? []); + public override object Clone() => new Archive(_internal.DeepClone() as Data.Models.Metadata.Archive ?? []); #endregion } diff --git a/SabreTools.Metadata.DatItems/Formats/BiosSet.cs b/SabreTools.Metadata.DatItems/Formats/BiosSet.cs index 0567e8f8..12403a17 100644 --- a/SabreTools.Metadata.DatItems/Formats/BiosSet.cs +++ b/SabreTools.Metadata.DatItems/Formats/BiosSet.cs @@ -49,7 +49,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new BiosSet(_internal.Clone() as Data.Models.Metadata.BiosSet ?? []); + public override object Clone() => new BiosSet(_internal.DeepClone() as Data.Models.Metadata.BiosSet ?? []); #endregion } diff --git a/SabreTools.Metadata.DatItems/Formats/Blank.cs b/SabreTools.Metadata.DatItems/Formats/Blank.cs index abc7f6b7..a386f590 100644 --- a/SabreTools.Metadata.DatItems/Formats/Blank.cs +++ b/SabreTools.Metadata.DatItems/Formats/Blank.cs @@ -27,7 +27,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new Blank(_internal.Clone() as Data.Models.Metadata.Blank ?? []); + public override object Clone() => new Blank(_internal.DeepClone() as Data.Models.Metadata.Blank ?? []); #endregion } diff --git a/SabreTools.Metadata.DatItems/Formats/Chip.cs b/SabreTools.Metadata.DatItems/Formats/Chip.cs index ea5f1d0d..7b3a26cf 100644 --- a/SabreTools.Metadata.DatItems/Formats/Chip.cs +++ b/SabreTools.Metadata.DatItems/Formats/Chip.cs @@ -55,7 +55,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new Chip(_internal.Clone() as Data.Models.Metadata.Chip ?? []); + public override object Clone() => new Chip(_internal.DeepClone() as Data.Models.Metadata.Chip ?? []); #endregion } diff --git a/SabreTools.Metadata.DatItems/Formats/Condition.cs b/SabreTools.Metadata.DatItems/Formats/Condition.cs index abcc6418..f730e526 100644 --- a/SabreTools.Metadata.DatItems/Formats/Condition.cs +++ b/SabreTools.Metadata.DatItems/Formats/Condition.cs @@ -55,7 +55,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new Condition(_internal.Clone() as Data.Models.Metadata.Condition ?? []); + public override object Clone() => new Condition(_internal.DeepClone() as Data.Models.Metadata.Condition ?? []); #endregion } diff --git a/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs b/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs index 91862a84..4a75faff 100644 --- a/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs +++ b/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs @@ -43,7 +43,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new ConfLocation(_internal.Clone() as Data.Models.Metadata.ConfLocation ?? []); + public override object Clone() => new ConfLocation(_internal.DeepClone() as Data.Models.Metadata.ConfLocation ?? []); #endregion } diff --git a/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs b/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs index db6b7d28..cb15271b 100644 --- a/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs +++ b/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs @@ -65,7 +65,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new ConfSetting(_internal.Clone() as Data.Models.Metadata.ConfSetting ?? []); + public override object Clone() => new ConfSetting(_internal.DeepClone() as Data.Models.Metadata.ConfSetting ?? []); /// public override Data.Models.Metadata.ConfSetting GetInternalClone() diff --git a/SabreTools.Metadata.DatItems/Formats/Configuration.cs b/SabreTools.Metadata.DatItems/Formats/Configuration.cs index 7c2cdd23..66d28ed9 100644 --- a/SabreTools.Metadata.DatItems/Formats/Configuration.cs +++ b/SabreTools.Metadata.DatItems/Formats/Configuration.cs @@ -100,7 +100,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new Configuration(_internal.Clone() as Data.Models.Metadata.Configuration ?? []); + public override object Clone() => new Configuration(_internal.DeepClone() as Data.Models.Metadata.Configuration ?? []); /// public override Data.Models.Metadata.Configuration GetInternalClone() diff --git a/SabreTools.Metadata.DatItems/Formats/Control.cs b/SabreTools.Metadata.DatItems/Formats/Control.cs index b4eb740e..2e8128c2 100644 --- a/SabreTools.Metadata.DatItems/Formats/Control.cs +++ b/SabreTools.Metadata.DatItems/Formats/Control.cs @@ -73,7 +73,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new Control(_internal.Clone() as Data.Models.Metadata.Control ?? []); + public override object Clone() => new Control(_internal.DeepClone() as Data.Models.Metadata.Control ?? []); #endregion } diff --git a/SabreTools.Metadata.DatItems/Formats/DataArea.cs b/SabreTools.Metadata.DatItems/Formats/DataArea.cs index ff09945b..bca04814 100644 --- a/SabreTools.Metadata.DatItems/Formats/DataArea.cs +++ b/SabreTools.Metadata.DatItems/Formats/DataArea.cs @@ -54,7 +54,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new DataArea(_internal.Clone() as Data.Models.Metadata.DataArea ?? []); + public override object Clone() => new DataArea(_internal.DeepClone() as Data.Models.Metadata.DataArea ?? []); #endregion } diff --git a/SabreTools.Metadata.DatItems/Formats/Device.cs b/SabreTools.Metadata.DatItems/Formats/Device.cs index cba73862..726b54b1 100644 --- a/SabreTools.Metadata.DatItems/Formats/Device.cs +++ b/SabreTools.Metadata.DatItems/Formats/Device.cs @@ -95,7 +95,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new Device(_internal.Clone() as Data.Models.Metadata.Device ?? []); + public override object Clone() => new Device(_internal.DeepClone() as Data.Models.Metadata.Device ?? []); /// public override Data.Models.Metadata.Device GetInternalClone() diff --git a/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs b/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs index b0dc6ace..eef43874 100644 --- a/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs +++ b/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs @@ -37,7 +37,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new DeviceRef(_internal.Clone() as Data.Models.Metadata.DeviceRef ?? []); + public override object Clone() => new DeviceRef(_internal.DeepClone() as Data.Models.Metadata.DeviceRef ?? []); #endregion } diff --git a/SabreTools.Metadata.DatItems/Formats/DipLocation.cs b/SabreTools.Metadata.DatItems/Formats/DipLocation.cs index 5b044e93..f56cff1b 100644 --- a/SabreTools.Metadata.DatItems/Formats/DipLocation.cs +++ b/SabreTools.Metadata.DatItems/Formats/DipLocation.cs @@ -43,7 +43,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new DipLocation(_internal.Clone() as Data.Models.Metadata.DipLocation ?? []); + public override object Clone() => new DipLocation(_internal.DeepClone() as Data.Models.Metadata.DipLocation ?? []); #endregion } diff --git a/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs b/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs index d6b2924d..1cc7b99e 100644 --- a/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs +++ b/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs @@ -128,7 +128,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new DipSwitch(_internal.Clone() as Data.Models.Metadata.DipSwitch ?? []); + public override object Clone() => new DipSwitch(_internal.DeepClone() as Data.Models.Metadata.DipSwitch ?? []); /// public override Data.Models.Metadata.DipSwitch GetInternalClone() diff --git a/SabreTools.Metadata.DatItems/Formats/DipValue.cs b/SabreTools.Metadata.DatItems/Formats/DipValue.cs index e207ed2e..b22e7cad 100644 --- a/SabreTools.Metadata.DatItems/Formats/DipValue.cs +++ b/SabreTools.Metadata.DatItems/Formats/DipValue.cs @@ -65,7 +65,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new DipValue(_internal.Clone() as Data.Models.Metadata.DipValue ?? []); + public override object Clone() => new DipValue(_internal.DeepClone() as Data.Models.Metadata.DipValue ?? []); /// public override Data.Models.Metadata.DipValue GetInternalClone() diff --git a/SabreTools.Metadata.DatItems/Formats/Disk.cs b/SabreTools.Metadata.DatItems/Formats/Disk.cs index 0af6c769..c3ddb732 100644 --- a/SabreTools.Metadata.DatItems/Formats/Disk.cs +++ b/SabreTools.Metadata.DatItems/Formats/Disk.cs @@ -109,7 +109,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new Disk(_internal.Clone() as Data.Models.Metadata.Disk ?? []); + public override object Clone() => new Disk(_internal.DeepClone() as Data.Models.Metadata.Disk ?? []); /// /// Convert a disk to the closest Rom approximation diff --git a/SabreTools.Metadata.DatItems/Formats/DiskArea.cs b/SabreTools.Metadata.DatItems/Formats/DiskArea.cs index 326e9ca4..e804e0f7 100644 --- a/SabreTools.Metadata.DatItems/Formats/DiskArea.cs +++ b/SabreTools.Metadata.DatItems/Formats/DiskArea.cs @@ -38,7 +38,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new DiskArea(_internal.Clone() as Data.Models.Metadata.DiskArea ?? []); + public override object Clone() => new DiskArea(_internal.DeepClone() as Data.Models.Metadata.DiskArea ?? []); #endregion } diff --git a/SabreTools.Metadata.DatItems/Formats/Display.cs b/SabreTools.Metadata.DatItems/Formats/Display.cs index d3b29c67..de1e3f89 100644 --- a/SabreTools.Metadata.DatItems/Formats/Display.cs +++ b/SabreTools.Metadata.DatItems/Formats/Display.cs @@ -147,7 +147,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new Display(_internal.Clone() as Data.Models.Metadata.Display ?? []); + public override object Clone() => new Display(_internal.DeepClone() as Data.Models.Metadata.Display ?? []); #endregion } diff --git a/SabreTools.Metadata.DatItems/Formats/Driver.cs b/SabreTools.Metadata.DatItems/Formats/Driver.cs index 1756da86..9c862f65 100644 --- a/SabreTools.Metadata.DatItems/Formats/Driver.cs +++ b/SabreTools.Metadata.DatItems/Formats/Driver.cs @@ -103,7 +103,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new Driver(_internal.Clone() as Data.Models.Metadata.Driver ?? []); + public override object Clone() => new Driver(_internal.DeepClone() as Data.Models.Metadata.Driver ?? []); #endregion } diff --git a/SabreTools.Metadata.DatItems/Formats/Extension.cs b/SabreTools.Metadata.DatItems/Formats/Extension.cs index 47232544..a66c0b4b 100644 --- a/SabreTools.Metadata.DatItems/Formats/Extension.cs +++ b/SabreTools.Metadata.DatItems/Formats/Extension.cs @@ -37,7 +37,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new Extension(_internal.Clone() as Data.Models.Metadata.Extension ?? []); + public override object Clone() => new Extension(_internal.DeepClone() as Data.Models.Metadata.Extension ?? []); #endregion } diff --git a/SabreTools.Metadata.DatItems/Formats/Feature.cs b/SabreTools.Metadata.DatItems/Formats/Feature.cs index e85d8a24..a7e43bfd 100644 --- a/SabreTools.Metadata.DatItems/Formats/Feature.cs +++ b/SabreTools.Metadata.DatItems/Formats/Feature.cs @@ -61,7 +61,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new Feature(_internal.Clone() as Data.Models.Metadata.Feature ?? []); + public override object Clone() => new Feature(_internal.DeepClone() as Data.Models.Metadata.Feature ?? []); #endregion } diff --git a/SabreTools.Metadata.DatItems/Formats/Info.cs b/SabreTools.Metadata.DatItems/Formats/Info.cs index df8bd583..64546651 100644 --- a/SabreTools.Metadata.DatItems/Formats/Info.cs +++ b/SabreTools.Metadata.DatItems/Formats/Info.cs @@ -43,7 +43,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new Info(_internal.Clone() as Data.Models.Metadata.Info ?? []); + public override object Clone() => new Info(_internal.DeepClone() as Data.Models.Metadata.Info ?? []); #endregion } diff --git a/SabreTools.Metadata.DatItems/Formats/Input.cs b/SabreTools.Metadata.DatItems/Formats/Input.cs index de343b4f..662d90f8 100644 --- a/SabreTools.Metadata.DatItems/Formats/Input.cs +++ b/SabreTools.Metadata.DatItems/Formats/Input.cs @@ -76,7 +76,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new Input(_internal.Clone() as Data.Models.Metadata.Input ?? []); + public override object Clone() => new Input(_internal.DeepClone() as Data.Models.Metadata.Input ?? []); /// public override Data.Models.Metadata.Input GetInternalClone() diff --git a/SabreTools.Metadata.DatItems/Formats/Instance.cs b/SabreTools.Metadata.DatItems/Formats/Instance.cs index 873ed79a..33798be1 100644 --- a/SabreTools.Metadata.DatItems/Formats/Instance.cs +++ b/SabreTools.Metadata.DatItems/Formats/Instance.cs @@ -43,7 +43,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new Instance(_internal.Clone() as Data.Models.Metadata.Instance ?? []); + public override object Clone() => new Instance(_internal.DeepClone() as Data.Models.Metadata.Instance ?? []); #endregion } diff --git a/SabreTools.Metadata.DatItems/Formats/Media.cs b/SabreTools.Metadata.DatItems/Formats/Media.cs index d45ac675..9435426f 100644 --- a/SabreTools.Metadata.DatItems/Formats/Media.cs +++ b/SabreTools.Metadata.DatItems/Formats/Media.cs @@ -57,7 +57,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new Media(_internal.Clone() as Data.Models.Metadata.Media ?? []); + public override object Clone() => new Media(_internal.DeepClone() as Data.Models.Metadata.Media ?? []); /// /// Convert a media to the closest Rom approximation diff --git a/SabreTools.Metadata.DatItems/Formats/Part.cs b/SabreTools.Metadata.DatItems/Formats/Part.cs index ef2151fe..8474612d 100644 --- a/SabreTools.Metadata.DatItems/Formats/Part.cs +++ b/SabreTools.Metadata.DatItems/Formats/Part.cs @@ -54,7 +54,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new Part(_internal.Clone() as Data.Models.Metadata.Part ?? []); + public override object Clone() => new Part(_internal.DeepClone() as Data.Models.Metadata.Part ?? []); #endregion } diff --git a/SabreTools.Metadata.DatItems/Formats/PartFeature.cs b/SabreTools.Metadata.DatItems/Formats/PartFeature.cs index b51dd85c..8af708d3 100644 --- a/SabreTools.Metadata.DatItems/Formats/PartFeature.cs +++ b/SabreTools.Metadata.DatItems/Formats/PartFeature.cs @@ -74,7 +74,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new PartFeature(_internal.Clone() as Data.Models.Metadata.Feature ?? []); + public override object Clone() => new PartFeature(_internal.DeepClone() as Data.Models.Metadata.Feature ?? []); #endregion } diff --git a/SabreTools.Metadata.DatItems/Formats/Port.cs b/SabreTools.Metadata.DatItems/Formats/Port.cs index fb0f83e4..fcbe2fde 100644 --- a/SabreTools.Metadata.DatItems/Formats/Port.cs +++ b/SabreTools.Metadata.DatItems/Formats/Port.cs @@ -57,7 +57,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new Port(_internal.Clone() as Data.Models.Metadata.Port ?? []); + public override object Clone() => new Port(_internal.DeepClone() as Data.Models.Metadata.Port ?? []); /// public override Data.Models.Metadata.Port GetInternalClone() diff --git a/SabreTools.Metadata.DatItems/Formats/RamOption.cs b/SabreTools.Metadata.DatItems/Formats/RamOption.cs index 09de128b..a0e8c761 100644 --- a/SabreTools.Metadata.DatItems/Formats/RamOption.cs +++ b/SabreTools.Metadata.DatItems/Formats/RamOption.cs @@ -49,7 +49,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new RamOption(_internal.Clone() as Data.Models.Metadata.RamOption ?? []); + public override object Clone() => new RamOption(_internal.DeepClone() as Data.Models.Metadata.RamOption ?? []); #endregion } diff --git a/SabreTools.Metadata.DatItems/Formats/Release.cs b/SabreTools.Metadata.DatItems/Formats/Release.cs index 738fcc72..40ed9d3f 100644 --- a/SabreTools.Metadata.DatItems/Formats/Release.cs +++ b/SabreTools.Metadata.DatItems/Formats/Release.cs @@ -43,7 +43,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new Release(_internal.Clone() as Data.Models.Metadata.Release ?? []); + public override object Clone() => new Release(_internal.DeepClone() as Data.Models.Metadata.Release ?? []); #endregion } diff --git a/SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs b/SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs index 16b8f80c..fb8da182 100644 --- a/SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs +++ b/SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs @@ -26,7 +26,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new ReleaseDetails(_internal.Clone() as Data.Models.Metadata.ReleaseDetails ?? []); + public override object Clone() => new ReleaseDetails(_internal.DeepClone() as Data.Models.Metadata.ReleaseDetails ?? []); #endregion } diff --git a/SabreTools.Metadata.DatItems/Formats/Rom.cs b/SabreTools.Metadata.DatItems/Formats/Rom.cs index ca1e56df..3c15015f 100644 --- a/SabreTools.Metadata.DatItems/Formats/Rom.cs +++ b/SabreTools.Metadata.DatItems/Formats/Rom.cs @@ -397,7 +397,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new Rom(_internal.Clone() as Data.Models.Metadata.Rom ?? []); + public override object Clone() => new Rom(_internal.DeepClone() as Data.Models.Metadata.Rom ?? []); #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/Sample.cs b/SabreTools.Metadata.DatItems/Formats/Sample.cs index 1aadb4eb..70bf04fd 100644 --- a/SabreTools.Metadata.DatItems/Formats/Sample.cs +++ b/SabreTools.Metadata.DatItems/Formats/Sample.cs @@ -37,7 +37,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new Sample(_internal.Clone() as Data.Models.Metadata.Sample ?? []); + public override object Clone() => new Sample(_internal.DeepClone() as Data.Models.Metadata.Sample ?? []); #endregion } diff --git a/SabreTools.Metadata.DatItems/Formats/Serials.cs b/SabreTools.Metadata.DatItems/Formats/Serials.cs index 8d8a8a4a..ddc47806 100644 --- a/SabreTools.Metadata.DatItems/Formats/Serials.cs +++ b/SabreTools.Metadata.DatItems/Formats/Serials.cs @@ -27,7 +27,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new Serials(_internal.Clone() as Data.Models.Metadata.Serials ?? []); + public override object Clone() => new Serials(_internal.DeepClone() as Data.Models.Metadata.Serials ?? []); #endregion } diff --git a/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs b/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs index ab7379c0..33bc294e 100644 --- a/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs +++ b/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs @@ -43,7 +43,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new SharedFeat(_internal.Clone() as Data.Models.Metadata.SharedFeat ?? []); + public override object Clone() => new SharedFeat(_internal.DeepClone() as Data.Models.Metadata.SharedFeat ?? []); #endregion } diff --git a/SabreTools.Metadata.DatItems/Formats/Slot.cs b/SabreTools.Metadata.DatItems/Formats/Slot.cs index 48c5b1f3..43223404 100644 --- a/SabreTools.Metadata.DatItems/Formats/Slot.cs +++ b/SabreTools.Metadata.DatItems/Formats/Slot.cs @@ -57,7 +57,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new Slot(_internal.Clone() as Data.Models.Metadata.Slot ?? []); + public override object Clone() => new Slot(_internal.DeepClone() as Data.Models.Metadata.Slot ?? []); /// public override Data.Models.Metadata.Slot GetInternalClone() diff --git a/SabreTools.Metadata.DatItems/Formats/SlotOption.cs b/SabreTools.Metadata.DatItems/Formats/SlotOption.cs index f3f64e47..280084ad 100644 --- a/SabreTools.Metadata.DatItems/Formats/SlotOption.cs +++ b/SabreTools.Metadata.DatItems/Formats/SlotOption.cs @@ -49,7 +49,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new SlotOption(_internal.Clone() as Data.Models.Metadata.SlotOption ?? []); + public override object Clone() => new SlotOption(_internal.DeepClone() as Data.Models.Metadata.SlotOption ?? []); #endregion } diff --git a/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs b/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs index c4951e5c..ed4694d4 100644 --- a/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs +++ b/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs @@ -59,7 +59,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new SoftwareList(_internal.Clone() as Data.Models.Metadata.SoftwareList ?? []); + public override object Clone() => new SoftwareList(_internal.DeepClone() as Data.Models.Metadata.SoftwareList ?? []); #endregion } diff --git a/SabreTools.Metadata.DatItems/Formats/Sound.cs b/SabreTools.Metadata.DatItems/Formats/Sound.cs index 3716fa56..b0c6b9fa 100644 --- a/SabreTools.Metadata.DatItems/Formats/Sound.cs +++ b/SabreTools.Metadata.DatItems/Formats/Sound.cs @@ -33,7 +33,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new Sound(_internal.Clone() as Data.Models.Metadata.Sound ?? []); + public override object Clone() => new Sound(_internal.DeepClone() as Data.Models.Metadata.Sound ?? []); #endregion } diff --git a/SabreTools.Metadata.DatItems/Formats/SourceDetails.cs b/SabreTools.Metadata.DatItems/Formats/SourceDetails.cs index 00d189d4..4f45ed10 100644 --- a/SabreTools.Metadata.DatItems/Formats/SourceDetails.cs +++ b/SabreTools.Metadata.DatItems/Formats/SourceDetails.cs @@ -27,7 +27,7 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new SourceDetails(_internal.Clone() as Data.Models.Metadata.SourceDetails ?? []); + public override object Clone() => new SourceDetails(_internal.DeepClone() as Data.Models.Metadata.SourceDetails ?? []); #endregion } diff --git a/SabreTools.Metadata.DatItems/Machine.cs b/SabreTools.Metadata.DatItems/Machine.cs index abe80866..d0c1599a 100644 --- a/SabreTools.Metadata.DatItems/Machine.cs +++ b/SabreTools.Metadata.DatItems/Machine.cs @@ -68,7 +68,7 @@ namespace SabreTools.Metadata.DatItems public Machine(Data.Models.Metadata.Machine machine) { - _internal = machine.Clone() as Data.Models.Metadata.Machine ?? []; + _internal = machine.DeepClone() as Data.Models.Metadata.Machine ?? []; // Remove all inverted fields Remove(Data.Models.Metadata.Machine.AdjusterKey); @@ -143,14 +143,14 @@ namespace SabreTools.Metadata.DatItems { return new Machine() { - _internal = _internal.Clone() as Data.Models.Metadata.Machine ?? [], + _internal = _internal.DeepClone() as Data.Models.Metadata.Machine ?? [], }; } /// /// Get a clone of the current internal model /// - public Data.Models.Metadata.Machine GetInternalClone() => (_internal.Clone() as Data.Models.Metadata.Machine)!; + public Data.Models.Metadata.Machine GetInternalClone() => (_internal.DeepClone() as Data.Models.Metadata.Machine)!; #endregion From 1e27b5d720319cdb19dec9b710ee567127131a7a Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Thu, 2 Apr 2026 15:49:06 -0400 Subject: [PATCH 018/142] Make "simple" metadata items cloneable --- SabreTools.Data.Models/Metadata/Analog.cs | 15 +++++++++++++-- SabreTools.Data.Models/Metadata/BiosSet.cs | 15 ++++++++++++++- SabreTools.Data.Models/Metadata/Blank.cs | 6 +++++- SabreTools.Data.Models/Metadata/Condition.cs | 16 +++++++++++++++- SabreTools.Data.Models/Metadata/DeviceRef.cs | 13 ++++++++++++- SabreTools.Data.Models/Metadata/Extension.cs | 13 ++++++++++++- SabreTools.Data.Models/Metadata/Feature.cs | 17 ++++++++++++++++- SabreTools.Data.Models/Metadata/Info.cs | 14 +++++++++++++- SabreTools.Data.Models/Metadata/Instance.cs | 14 +++++++++++++- SabreTools.Data.Models/Metadata/RamOption.cs | 15 ++++++++++++++- SabreTools.Data.Models/Metadata/Sample.cs | 13 ++++++++++++- SabreTools.Data.Models/Metadata/SharedFeat.cs | 14 +++++++++++++- SabreTools.Data.Models/Metadata/SlotOption.cs | 15 ++++++++++++++- 13 files changed, 166 insertions(+), 14 deletions(-) diff --git a/SabreTools.Data.Models/Metadata/Analog.cs b/SabreTools.Data.Models/Metadata/Analog.cs index 4b274e21..f8b06d45 100644 --- a/SabreTools.Data.Models/Metadata/Analog.cs +++ b/SabreTools.Data.Models/Metadata/Analog.cs @@ -1,10 +1,11 @@ -using System.Xml.Serialization; +using System; +using System.Xml.Serialization; using Newtonsoft.Json; namespace SabreTools.Data.Models.Metadata { [JsonObject("analog"), XmlRoot("analog")] - public class Analog : DatItem + public class Analog : DatItem, ICloneable { #region Properties @@ -13,5 +14,15 @@ namespace SabreTools.Data.Models.Metadata #endregion public Analog() => ItemType = ItemType.Analog; + + /// + public object Clone() + { + var obj = new Analog(); + + obj.Mask = Mask; + + return obj; + } } } diff --git a/SabreTools.Data.Models/Metadata/BiosSet.cs b/SabreTools.Data.Models/Metadata/BiosSet.cs index ecd1104f..b3885fba 100644 --- a/SabreTools.Data.Models/Metadata/BiosSet.cs +++ b/SabreTools.Data.Models/Metadata/BiosSet.cs @@ -1,10 +1,11 @@ +using System; using System.Xml.Serialization; using Newtonsoft.Json; namespace SabreTools.Data.Models.Metadata { [JsonObject("biosset"), XmlRoot("biosset")] - public class BiosSet : DatItem + public class BiosSet : DatItem, ICloneable { #region Properties @@ -18,5 +19,17 @@ namespace SabreTools.Data.Models.Metadata #endregion public BiosSet() => ItemType = ItemType.BiosSet; + + /// + public object Clone() + { + var obj = new BiosSet(); + + obj.Default = Default; + obj.Description = Description; + obj.Name = Name; + + return obj; + } } } diff --git a/SabreTools.Data.Models/Metadata/Blank.cs b/SabreTools.Data.Models/Metadata/Blank.cs index 45b1284d..679bc352 100644 --- a/SabreTools.Data.Models/Metadata/Blank.cs +++ b/SabreTools.Data.Models/Metadata/Blank.cs @@ -1,11 +1,15 @@ +using System; using System.Xml.Serialization; using Newtonsoft.Json; namespace SabreTools.Data.Models.Metadata { [JsonObject("blank"), XmlRoot("blank")] - public class Blank : DatItem + public class Blank : DatItem, ICloneable { public Blank() => ItemType = ItemType.Blank; + + /// + public object Clone() => new Blank(); } } diff --git a/SabreTools.Data.Models/Metadata/Condition.cs b/SabreTools.Data.Models/Metadata/Condition.cs index 22cede77..7c06f776 100644 --- a/SabreTools.Data.Models/Metadata/Condition.cs +++ b/SabreTools.Data.Models/Metadata/Condition.cs @@ -1,10 +1,11 @@ +using System; using System.Xml.Serialization; using Newtonsoft.Json; namespace SabreTools.Data.Models.Metadata { [JsonObject("condition"), XmlRoot("condition")] - public class Condition : DatItem + public class Condition : DatItem, ICloneable { #region Properties @@ -20,5 +21,18 @@ namespace SabreTools.Data.Models.Metadata #endregion public Condition() => ItemType = ItemType.Condition; + + /// + public object Clone() + { + var obj = new Condition(); + + obj.Mask = Mask; + obj.Relation = Relation; + obj.Tag = Tag; + obj.Value = Value; + + return obj; + } } } diff --git a/SabreTools.Data.Models/Metadata/DeviceRef.cs b/SabreTools.Data.Models/Metadata/DeviceRef.cs index edfdf54d..a6989c93 100644 --- a/SabreTools.Data.Models/Metadata/DeviceRef.cs +++ b/SabreTools.Data.Models/Metadata/DeviceRef.cs @@ -1,10 +1,11 @@ +using System; using System.Xml.Serialization; using Newtonsoft.Json; namespace SabreTools.Data.Models.Metadata { [JsonObject("device_ref"), XmlRoot("device_ref")] - public class DeviceRef : DatItem + public class DeviceRef : DatItem, ICloneable { #region Properties @@ -13,5 +14,15 @@ namespace SabreTools.Data.Models.Metadata #endregion public DeviceRef() => ItemType = ItemType.DeviceRef; + + /// + public object Clone() + { + var obj = new DeviceRef(); + + obj.Name = Name; + + return obj; + } } } diff --git a/SabreTools.Data.Models/Metadata/Extension.cs b/SabreTools.Data.Models/Metadata/Extension.cs index ff5f9808..e61009c7 100644 --- a/SabreTools.Data.Models/Metadata/Extension.cs +++ b/SabreTools.Data.Models/Metadata/Extension.cs @@ -1,10 +1,11 @@ +using System; using System.Xml.Serialization; using Newtonsoft.Json; namespace SabreTools.Data.Models.Metadata { [JsonObject("extension"), XmlRoot("extension")] - public class Extension : DatItem + public class Extension : DatItem, ICloneable { #region Properties @@ -13,5 +14,15 @@ namespace SabreTools.Data.Models.Metadata #endregion public Extension() => ItemType = ItemType.Extension; + + /// + public object Clone() + { + var obj = new Extension(); + + obj.Name = Name; + + return obj; + } } } diff --git a/SabreTools.Data.Models/Metadata/Feature.cs b/SabreTools.Data.Models/Metadata/Feature.cs index ee62f094..1162791a 100644 --- a/SabreTools.Data.Models/Metadata/Feature.cs +++ b/SabreTools.Data.Models/Metadata/Feature.cs @@ -1,10 +1,11 @@ +using System; using System.Xml.Serialization; using Newtonsoft.Json; namespace SabreTools.Data.Models.Metadata { [JsonObject("feature"), XmlRoot("feature")] - public class Feature : DatItem + public class Feature : DatItem, ICloneable { #region Properties @@ -24,5 +25,19 @@ namespace SabreTools.Data.Models.Metadata #endregion public Feature() => ItemType = ItemType.Feature; + + /// + public object Clone() + { + var obj = new Feature(); + + obj.FeatureType = FeatureType; + obj.Name = Name; + obj.Overall = Overall; + obj.Status = Status; + obj.Value = Value; + + return obj; + } } } diff --git a/SabreTools.Data.Models/Metadata/Info.cs b/SabreTools.Data.Models/Metadata/Info.cs index 70032b49..4e073bfe 100644 --- a/SabreTools.Data.Models/Metadata/Info.cs +++ b/SabreTools.Data.Models/Metadata/Info.cs @@ -1,10 +1,11 @@ +using System; using System.Xml.Serialization; using Newtonsoft.Json; namespace SabreTools.Data.Models.Metadata { [JsonObject("info"), XmlRoot("info")] - public class Info : DatItem + public class Info : DatItem, ICloneable { #region Properties @@ -15,5 +16,16 @@ namespace SabreTools.Data.Models.Metadata #endregion public Info() => ItemType = ItemType.Info; + + /// + public object Clone() + { + var obj = new Info(); + + obj.Name = Name; + obj.Value = Value; + + return obj; + } } } diff --git a/SabreTools.Data.Models/Metadata/Instance.cs b/SabreTools.Data.Models/Metadata/Instance.cs index c5fb42f4..4ca57882 100644 --- a/SabreTools.Data.Models/Metadata/Instance.cs +++ b/SabreTools.Data.Models/Metadata/Instance.cs @@ -1,10 +1,11 @@ +using System; using System.Xml.Serialization; using Newtonsoft.Json; namespace SabreTools.Data.Models.Metadata { [JsonObject("instance"), XmlRoot("instance")] - public class Instance : DatItem + public class Instance : DatItem, ICloneable { #region Properties @@ -15,5 +16,16 @@ namespace SabreTools.Data.Models.Metadata #endregion public Instance() => ItemType = ItemType.Instance; + + /// + public object Clone() + { + var obj = new Instance(); + + obj.BriefName = BriefName; + obj.Name = Name; + + return obj; + } } } diff --git a/SabreTools.Data.Models/Metadata/RamOption.cs b/SabreTools.Data.Models/Metadata/RamOption.cs index 345ff641..5ff841a7 100644 --- a/SabreTools.Data.Models/Metadata/RamOption.cs +++ b/SabreTools.Data.Models/Metadata/RamOption.cs @@ -1,10 +1,11 @@ +using System; using System.Xml.Serialization; using Newtonsoft.Json; namespace SabreTools.Data.Models.Metadata { [JsonObject("ramoption"), XmlRoot("ramoption")] - public class RamOption : DatItem + public class RamOption : DatItem, ICloneable { #region Properties @@ -18,5 +19,17 @@ namespace SabreTools.Data.Models.Metadata #endregion public RamOption() => ItemType = ItemType.RamOption; + + /// + public object Clone() + { + var obj = new RamOption(); + + obj.Content = Content; + obj.Default = Default; + obj.Name = Name; + + return obj; + } } } diff --git a/SabreTools.Data.Models/Metadata/Sample.cs b/SabreTools.Data.Models/Metadata/Sample.cs index 3570b3aa..604a3def 100644 --- a/SabreTools.Data.Models/Metadata/Sample.cs +++ b/SabreTools.Data.Models/Metadata/Sample.cs @@ -1,10 +1,11 @@ +using System; using System.Xml.Serialization; using Newtonsoft.Json; namespace SabreTools.Data.Models.Metadata { [JsonObject("sample"), XmlRoot("sample")] - public class Sample : DatItem + public class Sample : DatItem, ICloneable { #region Properties @@ -13,5 +14,15 @@ namespace SabreTools.Data.Models.Metadata #endregion public Sample() => ItemType = ItemType.Sample; + + /// + public object Clone() + { + var obj = new Sample(); + + obj.Name = Name; + + return obj; + } } } diff --git a/SabreTools.Data.Models/Metadata/SharedFeat.cs b/SabreTools.Data.Models/Metadata/SharedFeat.cs index b42c1967..4eac6bf1 100644 --- a/SabreTools.Data.Models/Metadata/SharedFeat.cs +++ b/SabreTools.Data.Models/Metadata/SharedFeat.cs @@ -1,10 +1,11 @@ +using System; using System.Xml.Serialization; using Newtonsoft.Json; namespace SabreTools.Data.Models.Metadata { [JsonObject("sharedfeat"), XmlRoot("sharedfeat")] - public class SharedFeat : DatItem + public class SharedFeat : DatItem, ICloneable { #region Properties @@ -15,5 +16,16 @@ namespace SabreTools.Data.Models.Metadata #endregion public SharedFeat() => ItemType = ItemType.SharedFeat; + + /// + public object Clone() + { + var obj = new SharedFeat(); + + obj.Name = Name; + obj.Value = Value; + + return obj; + } } } diff --git a/SabreTools.Data.Models/Metadata/SlotOption.cs b/SabreTools.Data.Models/Metadata/SlotOption.cs index 18059ea3..a1ac2c13 100644 --- a/SabreTools.Data.Models/Metadata/SlotOption.cs +++ b/SabreTools.Data.Models/Metadata/SlotOption.cs @@ -1,10 +1,11 @@ +using System; using System.Xml.Serialization; using Newtonsoft.Json; namespace SabreTools.Data.Models.Metadata { [JsonObject("slotoption"), XmlRoot("slotoption")] - public class SlotOption : DatItem + public class SlotOption : DatItem, ICloneable { #region Properties @@ -18,5 +19,17 @@ namespace SabreTools.Data.Models.Metadata #endregion public SlotOption() => ItemType = ItemType.SlotOption; + + /// + public object Clone() + { + var obj = new SlotOption(); + + obj.Default = Default; + obj.DevName = DevName; + obj.Name = Name; + + return obj; + } } } From ca95e96402c02359472fef81faa52bab26101b8f Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Thu, 2 Apr 2026 16:07:34 -0400 Subject: [PATCH 019/142] Make "simple" metadata items equatable --- SabreTools.Data.Models/Metadata/Analog.cs | 18 ++++++++++- SabreTools.Data.Models/Metadata/BiosSet.cs | 26 ++++++++++++++- SabreTools.Data.Models/Metadata/Blank.cs | 5 ++- SabreTools.Data.Models/Metadata/Condition.cs | 31 +++++++++++++++++- SabreTools.Data.Models/Metadata/DeviceRef.cs | 18 ++++++++++- SabreTools.Data.Models/Metadata/Extension.cs | 18 ++++++++++- SabreTools.Data.Models/Metadata/Feature.cs | 32 ++++++++++++++++++- SabreTools.Data.Models/Metadata/Info.cs | 23 ++++++++++++- SabreTools.Data.Models/Metadata/Instance.cs | 23 ++++++++++++- SabreTools.Data.Models/Metadata/RamOption.cs | 26 ++++++++++++++- SabreTools.Data.Models/Metadata/Sample.cs | 18 ++++++++++- SabreTools.Data.Models/Metadata/SharedFeat.cs | 23 ++++++++++++- SabreTools.Data.Models/Metadata/SlotOption.cs | 26 ++++++++++++++- 13 files changed, 274 insertions(+), 13 deletions(-) diff --git a/SabreTools.Data.Models/Metadata/Analog.cs b/SabreTools.Data.Models/Metadata/Analog.cs index f8b06d45..c99da0f0 100644 --- a/SabreTools.Data.Models/Metadata/Analog.cs +++ b/SabreTools.Data.Models/Metadata/Analog.cs @@ -5,7 +5,7 @@ using Newtonsoft.Json; namespace SabreTools.Data.Models.Metadata { [JsonObject("analog"), XmlRoot("analog")] - public class Analog : DatItem, ICloneable + public class Analog : DatItem, ICloneable, IEquatable { #region Properties @@ -24,5 +24,21 @@ namespace SabreTools.Data.Models.Metadata return obj; } + + /// + public bool Equals(Analog? other) + { + // Null never matches + if (other is null) + return false; + + // Properties + if ((Mask is null) ^ (other.Mask is null)) + return false; + else if (Mask is not null && !Mask.Equals(other.Mask, StringComparison.OrdinalIgnoreCase)) + return false; + + return true; + } } } diff --git a/SabreTools.Data.Models/Metadata/BiosSet.cs b/SabreTools.Data.Models/Metadata/BiosSet.cs index b3885fba..d8d89f38 100644 --- a/SabreTools.Data.Models/Metadata/BiosSet.cs +++ b/SabreTools.Data.Models/Metadata/BiosSet.cs @@ -5,7 +5,7 @@ using Newtonsoft.Json; namespace SabreTools.Data.Models.Metadata { [JsonObject("biosset"), XmlRoot("biosset")] - public class BiosSet : DatItem, ICloneable + public class BiosSet : DatItem, ICloneable, IEquatable { #region Properties @@ -31,5 +31,29 @@ namespace SabreTools.Data.Models.Metadata return obj; } + + /// + public bool Equals(BiosSet? other) + { + // Null never matches + if (other is null) + return false; + + // Properties + if (Default != other.Default) + return false; + + if ((Description is null) ^ (other.Description is null)) + return false; + else if (Description is not null && !Description.Equals(other.Description, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((Name is null) ^ (other.Name is null)) + return false; + else if (Name is not null && !Name.Equals(other.Name, StringComparison.OrdinalIgnoreCase)) + return false; + + return true; + } } } diff --git a/SabreTools.Data.Models/Metadata/Blank.cs b/SabreTools.Data.Models/Metadata/Blank.cs index 679bc352..8d095192 100644 --- a/SabreTools.Data.Models/Metadata/Blank.cs +++ b/SabreTools.Data.Models/Metadata/Blank.cs @@ -5,11 +5,14 @@ using Newtonsoft.Json; namespace SabreTools.Data.Models.Metadata { [JsonObject("blank"), XmlRoot("blank")] - public class Blank : DatItem, ICloneable + public class Blank : DatItem, ICloneable, IEquatable { public Blank() => ItemType = ItemType.Blank; /// public object Clone() => new Blank(); + + /// + public bool Equals(Blank? other) => other is not null; } } diff --git a/SabreTools.Data.Models/Metadata/Condition.cs b/SabreTools.Data.Models/Metadata/Condition.cs index 7c06f776..b6daea52 100644 --- a/SabreTools.Data.Models/Metadata/Condition.cs +++ b/SabreTools.Data.Models/Metadata/Condition.cs @@ -5,7 +5,7 @@ using Newtonsoft.Json; namespace SabreTools.Data.Models.Metadata { [JsonObject("condition"), XmlRoot("condition")] - public class Condition : DatItem, ICloneable + public class Condition : DatItem, ICloneable, IEquatable { #region Properties @@ -34,5 +34,34 @@ namespace SabreTools.Data.Models.Metadata return obj; } + + /// + public bool Equals(Condition? other) + { + // Null never matches + if (other is null) + return false; + + // Properties + if ((Mask is null) ^ (other.Mask is null)) + return false; + else if (Mask is not null && !Mask.Equals(other.Mask, StringComparison.OrdinalIgnoreCase)) + return false; + + if (Relation != other.Relation) + return false; + + if ((Tag is null) ^ (other.Tag is null)) + return false; + else if (Tag is not null && !Tag.Equals(other.Tag, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((Value is null) ^ (other.Value is null)) + return false; + else if (Value is not null && !Value.Equals(other.Value, StringComparison.OrdinalIgnoreCase)) + return false; + + return true; + } } } diff --git a/SabreTools.Data.Models/Metadata/DeviceRef.cs b/SabreTools.Data.Models/Metadata/DeviceRef.cs index a6989c93..36cfbc7b 100644 --- a/SabreTools.Data.Models/Metadata/DeviceRef.cs +++ b/SabreTools.Data.Models/Metadata/DeviceRef.cs @@ -5,7 +5,7 @@ using Newtonsoft.Json; namespace SabreTools.Data.Models.Metadata { [JsonObject("device_ref"), XmlRoot("device_ref")] - public class DeviceRef : DatItem, ICloneable + public class DeviceRef : DatItem, ICloneable, IEquatable { #region Properties @@ -24,5 +24,21 @@ namespace SabreTools.Data.Models.Metadata return obj; } + + /// + public bool Equals(DeviceRef? other) + { + // Null never matches + if (other is null) + return false; + + // Properties + if ((Name is null) ^ (other.Name is null)) + return false; + else if (Name is not null && !Name.Equals(other.Name, StringComparison.OrdinalIgnoreCase)) + return false; + + return true; + } } } diff --git a/SabreTools.Data.Models/Metadata/Extension.cs b/SabreTools.Data.Models/Metadata/Extension.cs index e61009c7..c3723b51 100644 --- a/SabreTools.Data.Models/Metadata/Extension.cs +++ b/SabreTools.Data.Models/Metadata/Extension.cs @@ -5,7 +5,7 @@ using Newtonsoft.Json; namespace SabreTools.Data.Models.Metadata { [JsonObject("extension"), XmlRoot("extension")] - public class Extension : DatItem, ICloneable + public class Extension : DatItem, ICloneable, IEquatable { #region Properties @@ -24,5 +24,21 @@ namespace SabreTools.Data.Models.Metadata return obj; } + + /// + public bool Equals(Extension? other) + { + // Null never matches + if (other is null) + return false; + + // Properties + if ((Name is null) ^ (other.Name is null)) + return false; + else if (Name is not null && !Name.Equals(other.Name, StringComparison.OrdinalIgnoreCase)) + return false; + + return true; + } } } diff --git a/SabreTools.Data.Models/Metadata/Feature.cs b/SabreTools.Data.Models/Metadata/Feature.cs index 1162791a..4f108c31 100644 --- a/SabreTools.Data.Models/Metadata/Feature.cs +++ b/SabreTools.Data.Models/Metadata/Feature.cs @@ -5,7 +5,7 @@ using Newtonsoft.Json; namespace SabreTools.Data.Models.Metadata { [JsonObject("feature"), XmlRoot("feature")] - public class Feature : DatItem, ICloneable + public class Feature : DatItem, ICloneable, IEquatable { #region Properties @@ -39,5 +39,35 @@ namespace SabreTools.Data.Models.Metadata return obj; } + + /// + public bool Equals(Feature? other) + { + // Null never matches + if (other is null) + return false; + + // Properties + if (FeatureType != other.FeatureType) + return false; + + if ((Name is null) ^ (other.Name is null)) + return false; + else if (Name is not null && !Name.Equals(other.Name, StringComparison.OrdinalIgnoreCase)) + return false; + + if (Overall != other.Overall) + return false; + + if (Status != other.Status) + return false; + + if ((Value is null) ^ (other.Value is null)) + return false; + else if (Value is not null && !Value.Equals(other.Value, StringComparison.OrdinalIgnoreCase)) + return false; + + return true; + } } } diff --git a/SabreTools.Data.Models/Metadata/Info.cs b/SabreTools.Data.Models/Metadata/Info.cs index 4e073bfe..337d85c8 100644 --- a/SabreTools.Data.Models/Metadata/Info.cs +++ b/SabreTools.Data.Models/Metadata/Info.cs @@ -5,7 +5,7 @@ using Newtonsoft.Json; namespace SabreTools.Data.Models.Metadata { [JsonObject("info"), XmlRoot("info")] - public class Info : DatItem, ICloneable + public class Info : DatItem, ICloneable, IEquatable { #region Properties @@ -27,5 +27,26 @@ namespace SabreTools.Data.Models.Metadata return obj; } + + /// + public bool Equals(Info? other) + { + // Null never matches + if (other is null) + return false; + + // Properties + if ((Name is null) ^ (other.Name is null)) + return false; + else if (Name is not null && !Name.Equals(other.Name, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((Value is null) ^ (other.Value is null)) + return false; + else if (Value is not null && !Value.Equals(other.Value, StringComparison.OrdinalIgnoreCase)) + return false; + + return true; + } } } diff --git a/SabreTools.Data.Models/Metadata/Instance.cs b/SabreTools.Data.Models/Metadata/Instance.cs index 4ca57882..949caf2d 100644 --- a/SabreTools.Data.Models/Metadata/Instance.cs +++ b/SabreTools.Data.Models/Metadata/Instance.cs @@ -5,7 +5,7 @@ using Newtonsoft.Json; namespace SabreTools.Data.Models.Metadata { [JsonObject("instance"), XmlRoot("instance")] - public class Instance : DatItem, ICloneable + public class Instance : DatItem, ICloneable, IEquatable { #region Properties @@ -27,5 +27,26 @@ namespace SabreTools.Data.Models.Metadata return obj; } + + /// + public bool Equals(Instance? other) + { + // Null never matches + if (other is null) + return false; + + // Properties + if ((BriefName is null) ^ (other.BriefName is null)) + return false; + else if (BriefName is not null && !BriefName.Equals(other.BriefName, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((Name is null) ^ (other.Name is null)) + return false; + else if (Name is not null && !Name.Equals(other.Name, StringComparison.OrdinalIgnoreCase)) + return false; + + return true; + } } } diff --git a/SabreTools.Data.Models/Metadata/RamOption.cs b/SabreTools.Data.Models/Metadata/RamOption.cs index 5ff841a7..be355680 100644 --- a/SabreTools.Data.Models/Metadata/RamOption.cs +++ b/SabreTools.Data.Models/Metadata/RamOption.cs @@ -5,7 +5,7 @@ using Newtonsoft.Json; namespace SabreTools.Data.Models.Metadata { [JsonObject("ramoption"), XmlRoot("ramoption")] - public class RamOption : DatItem, ICloneable + public class RamOption : DatItem, ICloneable, IEquatable { #region Properties @@ -31,5 +31,29 @@ namespace SabreTools.Data.Models.Metadata return obj; } + + /// + public bool Equals(RamOption? other) + { + // Null never matches + if (other is null) + return false; + + // Properties + if ((Content is null) ^ (other.Content is null)) + return false; + else if (Content is not null && !Content.Equals(other.Content, StringComparison.OrdinalIgnoreCase)) + return false; + + if (Default != other.Default) + return false; + + if ((Name is null) ^ (other.Name is null)) + return false; + else if (Name is not null && !Name.Equals(other.Name, StringComparison.OrdinalIgnoreCase)) + return false; + + return true; + } } } diff --git a/SabreTools.Data.Models/Metadata/Sample.cs b/SabreTools.Data.Models/Metadata/Sample.cs index 604a3def..fb5bcfdf 100644 --- a/SabreTools.Data.Models/Metadata/Sample.cs +++ b/SabreTools.Data.Models/Metadata/Sample.cs @@ -5,7 +5,7 @@ using Newtonsoft.Json; namespace SabreTools.Data.Models.Metadata { [JsonObject("sample"), XmlRoot("sample")] - public class Sample : DatItem, ICloneable + public class Sample : DatItem, IEquatable { #region Properties @@ -24,5 +24,21 @@ namespace SabreTools.Data.Models.Metadata return obj; } + + /// + public bool Equals(Sample? other) + { + // Null never matches + if (other is null) + return false; + + // Properties + if ((Name is null) ^ (other.Name is null)) + return false; + else if (Name is not null && !Name.Equals(other.Name, StringComparison.OrdinalIgnoreCase)) + return false; + + return true; + } } } diff --git a/SabreTools.Data.Models/Metadata/SharedFeat.cs b/SabreTools.Data.Models/Metadata/SharedFeat.cs index 4eac6bf1..336d03e7 100644 --- a/SabreTools.Data.Models/Metadata/SharedFeat.cs +++ b/SabreTools.Data.Models/Metadata/SharedFeat.cs @@ -5,7 +5,7 @@ using Newtonsoft.Json; namespace SabreTools.Data.Models.Metadata { [JsonObject("sharedfeat"), XmlRoot("sharedfeat")] - public class SharedFeat : DatItem, ICloneable + public class SharedFeat : DatItem, ICloneable, IEquatable { #region Properties @@ -27,5 +27,26 @@ namespace SabreTools.Data.Models.Metadata return obj; } + + /// + public bool Equals(SharedFeat? other) + { + // Null never matches + if (other is null) + return false; + + // Properties + if ((Name is null) ^ (other.Name is null)) + return false; + else if (Name is not null && !Name.Equals(other.Name, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((Value is null) ^ (other.Value is null)) + return false; + else if (Value is not null && !Value.Equals(other.Value, StringComparison.OrdinalIgnoreCase)) + return false; + + return true; + } } } diff --git a/SabreTools.Data.Models/Metadata/SlotOption.cs b/SabreTools.Data.Models/Metadata/SlotOption.cs index a1ac2c13..e817a952 100644 --- a/SabreTools.Data.Models/Metadata/SlotOption.cs +++ b/SabreTools.Data.Models/Metadata/SlotOption.cs @@ -5,7 +5,7 @@ using Newtonsoft.Json; namespace SabreTools.Data.Models.Metadata { [JsonObject("slotoption"), XmlRoot("slotoption")] - public class SlotOption : DatItem, ICloneable + public class SlotOption : DatItem, ICloneable, IEquatable { #region Properties @@ -31,5 +31,29 @@ namespace SabreTools.Data.Models.Metadata return obj; } + + /// + public bool Equals(SlotOption? other) + { + // Null never matches + if (other is null) + return false; + + // Properties + if (Default != other.Default) + return false; + + if ((DevName is null) ^ (other.DevName is null)) + return false; + else if (DevName is not null && !DevName.Equals(other.DevName, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((Name is null) ^ (other.Name is null)) + return false; + else if (Name is not null && !Name.Equals(other.Name, StringComparison.OrdinalIgnoreCase)) + return false; + + return true; + } } } From 355aa4b94caec544f04bcb106f89f841597068e4 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Thu, 2 Apr 2026 16:23:16 -0400 Subject: [PATCH 020/142] Make Machine inherent to DatItem instead of passing through --- .../DatFileTests.Filtering.cs | 26 ++--- .../DatFileTests.Splitting.cs | 94 +++++++++---------- .../DatFileTests.cs | 28 +++--- .../ItemDictionaryTests.cs | 36 +++---- .../DatFile.Filtering.cs | 16 ++-- .../DatFile.Splitting.cs | 34 +++---- .../DatFile.ToMetadata.cs | 2 +- SabreTools.Metadata.DatFiles/DatFile.cs | 4 +- .../Formats/Missfile.cs | 4 +- .../Formats/SabreJSON.cs | 14 +-- .../Formats/SabreXML.cs | 12 +-- .../ItemDictionary.cs | 16 ++-- .../DatItemTests.cs | 34 +++---- .../Formats/DiskTests.cs | 4 +- .../Formats/FileTests.cs | 6 +- .../Formats/MediaTests.cs | 4 +- SabreTools.Metadata.DatItems/DatItem.cs | 26 ++--- SabreTools.Metadata.DatItems/DatItemT.cs | 4 +- SabreTools.Metadata.DatItems/Formats/Disk.cs | 2 +- SabreTools.Metadata.DatItems/Formats/File.cs | 4 +- SabreTools.Metadata.DatItems/Formats/Media.cs | 2 +- 21 files changed, 182 insertions(+), 190 deletions(-) diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.Filtering.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.Filtering.cs index 7cf31e86..448ad49c 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.Filtering.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.Filtering.cs @@ -25,7 +25,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem datItem = new Rom(); datItem.SetName("rom.bin"); datItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); - datItem.Write(DatItem.MachineKey, machine); + datItem.Machine = machine; datItem.Write(DatItem.SourceKey, source); DatFile datFile = new Logiqx(datFile: null, useGame: false); @@ -53,7 +53,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem datItem = new Rom(); datItem.SetName("rom.bin"); datItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); - datItem.Write(DatItem.MachineKey, machine); + datItem.Machine = machine; datItem.Write(DatItem.SourceKey, source); DatFile datFile = new Logiqx(datFile: null, useGame: false); @@ -83,7 +83,7 @@ namespace SabreTools.Metadata.DatFiles.Test machine.Description = "description"; DatItem datItem = new Rom(); - datItem.Write(DatItem.MachineKey, machine); + datItem.Machine = machine; datItem.Write(DatItem.SourceKey, source); DatFile datFile = new Logiqx(datFile: null, useGame: false); @@ -93,7 +93,7 @@ namespace SabreTools.Metadata.DatFiles.Test // The name of the bucket is not expected to change DatItem actual = Assert.Single(datFile.GetItemsForBucket("machine")); - Machine? actualMachine = actual.GetMachine(); + Machine? actualMachine = actual.Machine; Assert.NotNull(actualMachine); Assert.Equal("description", actualMachine.Name); Assert.Equal("description", actualMachine.Description); @@ -130,12 +130,12 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem rom = new Rom(); rom.SetName("rom.bin"); - rom.Write(DatItem.MachineKey, machine); + rom.Machine = machine; rom.Write(DatItem.SourceKey, source); DatItem disk = new Disk(); disk.SetName("disk"); - disk.Write(DatItem.MachineKey, machine); + disk.Machine = machine; disk.Write(DatItem.SourceKey, source); DatFile datFile = new Logiqx(datFile: null, useGame: false); @@ -149,12 +149,12 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal(2, actualDatItems.Count); DatItem actualRom = Assert.Single(actualDatItems.FindAll(i => i is Rom)); - Machine? actualRomMachine = actualRom.GetMachine(); + Machine? actualRomMachine = actualRom.Machine; Assert.NotNull(actualRomMachine); Assert.Equal("machine/rom", actualRomMachine.Name); DatItem actualDisk = Assert.Single(actualDatItems.FindAll(i => i is Disk)); - Machine? actualDiskMachine = actualDisk.GetMachine(); + Machine? actualDiskMachine = actualDisk.Machine; Assert.NotNull(actualDiskMachine); Assert.Equal("machine/disk", actualDiskMachine.Name); } @@ -212,11 +212,11 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem nowhereRom = new Rom(); nowhereRom.SetName("rom.bin"); - nowhereRom.Write(DatItem.MachineKey, nowhereMachine); + nowhereRom.Machine = nowhereMachine; DatItem worldRom = new Rom(); worldRom.SetName("rom.nib"); - worldRom.Write(DatItem.MachineKey, worldMachine); + worldRom.Machine = worldMachine; DatFile datFile = new Logiqx(datFile: null, useGame: false); datFile.AddItem(nowhereRom, statsOnly: false); @@ -229,7 +229,7 @@ namespace SabreTools.Metadata.DatFiles.Test var actualDatItems = datFile.GetItemsForBucket("machine (world)"); DatItem actualWorldRom = Assert.Single(actualDatItems); - Machine? actualWorldMachine = actualWorldRom.GetMachine(); + Machine? actualWorldMachine = actualWorldRom.Machine; Assert.NotNull(actualWorldMachine); Assert.Equal("machine (World)", actualWorldMachine.Name); } @@ -269,7 +269,7 @@ namespace SabreTools.Metadata.DatFiles.Test machine.Name = "10.10.10-machine-name"; DatItem datItem = new Rom(); - datItem.Write(DatItem.MachineKey, machine); + datItem.Machine = machine; datItem.Write(DatItem.SourceKey, source); DatFile datFile = new Logiqx(datFile: null, useGame: false); @@ -279,7 +279,7 @@ namespace SabreTools.Metadata.DatFiles.Test // The name of the bucket is not expected to change DatItem actual = Assert.Single(datFile.GetItemsForBucket("10.10.10-machine-name")); - Machine? actualMachine = actual.GetMachine(); + Machine? actualMachine = actual.Machine; Assert.NotNull(actualMachine); Assert.Equal("machine-name", actualMachine.Name); } diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.Splitting.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.Splitting.cs index 19149563..3ea66952 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.Splitting.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.Splitting.cs @@ -26,21 +26,21 @@ namespace SabreTools.Metadata.DatFiles.Test parentItem.SetName("parent_rom"); parentItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); parentItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); - parentItem.Write(DatItem.MachineKey, parentMachine); + parentItem.Machine = parentMachine; parentItem.Write(DatItem.SourceKey, source); DatItem matchChildItem = new Rom(); matchChildItem.SetName("match_child_rom"); matchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); matchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); - matchChildItem.Write(DatItem.MachineKey, childMachine); + matchChildItem.Machine = childMachine; matchChildItem.Write(DatItem.SourceKey, source); DatItem noMatchChildItem = new Rom(); noMatchChildItem.SetName("no_match_child_rom"); noMatchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); noMatchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "beefdead"); - noMatchChildItem.Write(DatItem.MachineKey, childMachine); + noMatchChildItem.Machine = childMachine; noMatchChildItem.Write(DatItem.SourceKey, source); DatFile datFile = new Logiqx(datFile: null, useGame: false); @@ -71,21 +71,21 @@ namespace SabreTools.Metadata.DatFiles.Test parentItem.SetName("parent_rom"); parentItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); parentItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); - parentItem.Write(DatItem.MachineKey, parentMachine); + parentItem.Machine = parentMachine; parentItem.Write(DatItem.SourceKey, source); DatItem matchChildItem = new Rom(); matchChildItem.SetName("match_child_rom"); matchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); matchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); - matchChildItem.Write(DatItem.MachineKey, childMachine); + matchChildItem.Machine = childMachine; matchChildItem.Write(DatItem.SourceKey, source); DatItem noMatchChildItem = new Rom(); noMatchChildItem.SetName("no_match_child_rom"); noMatchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); noMatchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "beefdead"); - noMatchChildItem.Write(DatItem.MachineKey, childMachine); + noMatchChildItem.Machine = childMachine; noMatchChildItem.Write(DatItem.SourceKey, source); DatFile datFile = new Logiqx(datFile: null, useGame: false); @@ -116,21 +116,21 @@ namespace SabreTools.Metadata.DatFiles.Test parentItem.SetName("parent_rom"); parentItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); parentItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); - parentItem.Write(DatItem.MachineKey, parentMachine); + parentItem.Machine = parentMachine; parentItem.Write(DatItem.SourceKey, source); DatItem matchChildItem = new Rom(); matchChildItem.SetName("match_child_rom"); matchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); matchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); - matchChildItem.Write(DatItem.MachineKey, childMachine); + matchChildItem.Machine = childMachine; matchChildItem.Write(DatItem.SourceKey, source); DatItem noMatchChildItem = new Rom(); noMatchChildItem.SetName("no_match_child_rom"); noMatchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); noMatchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "beefdead"); - noMatchChildItem.Write(DatItem.MachineKey, childMachine); + noMatchChildItem.Machine = childMachine; noMatchChildItem.Write(DatItem.SourceKey, source); DatFile datFile = new Logiqx(datFile: null, useGame: false); @@ -164,21 +164,21 @@ namespace SabreTools.Metadata.DatFiles.Test parentItem.SetName("parent_rom"); parentItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); parentItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); - parentItem.Write(DatItem.MachineKey, parentMachine); + parentItem.Machine = parentMachine; parentItem.Write(DatItem.SourceKey, source); DatItem matchChildItem = new Rom(); matchChildItem.SetName("match_child_rom"); matchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); matchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); - matchChildItem.Write(DatItem.MachineKey, childMachine); + matchChildItem.Machine = childMachine; matchChildItem.Write(DatItem.SourceKey, source); DatItem noMatchChildItem = new Rom(); noMatchChildItem.SetName("no_match_child_rom"); noMatchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); noMatchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "beefdead"); - noMatchChildItem.Write(DatItem.MachineKey, childMachine); + noMatchChildItem.Machine = childMachine; noMatchChildItem.Write(DatItem.SourceKey, source); DatFile datFile = new Logiqx(datFile: null, useGame: false); @@ -216,21 +216,21 @@ namespace SabreTools.Metadata.DatFiles.Test parentItem.SetName("parent_rom"); parentItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); parentItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); - parentItem.Write(DatItem.MachineKey, parentMachine); + parentItem.Machine = parentMachine; parentItem.Write(DatItem.SourceKey, source); DatItem matchChildItem = new Rom(); matchChildItem.SetName("match_child_rom"); matchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); matchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); - matchChildItem.Write(DatItem.MachineKey, childMachine); + matchChildItem.Machine = childMachine; matchChildItem.Write(DatItem.SourceKey, source); DatItem noMatchChildItem = new Rom(); noMatchChildItem.SetName("no_match_child_rom"); noMatchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); noMatchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "beefdead"); - noMatchChildItem.Write(DatItem.MachineKey, childMachine); + noMatchChildItem.Machine = childMachine; noMatchChildItem.Write(DatItem.SourceKey, source); DatFile datFile = new Logiqx(datFile: null, useGame: false); @@ -261,21 +261,21 @@ namespace SabreTools.Metadata.DatFiles.Test parentItem.SetName("parent_rom"); parentItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); parentItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); - parentItem.Write(DatItem.MachineKey, parentMachine); + parentItem.Machine = parentMachine; parentItem.Write(DatItem.SourceKey, source); DatItem matchChildItem = new Rom(); matchChildItem.SetName("match_child_rom"); matchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); matchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); - matchChildItem.Write(DatItem.MachineKey, childMachine); + matchChildItem.Machine = childMachine; matchChildItem.Write(DatItem.SourceKey, source); DatItem noMatchChildItem = new Rom(); noMatchChildItem.SetName("no_match_child_rom"); noMatchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); noMatchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "beefdead"); - noMatchChildItem.Write(DatItem.MachineKey, childMachine); + noMatchChildItem.Machine = childMachine; noMatchChildItem.Write(DatItem.SourceKey, source); DatFile datFile = new Logiqx(datFile: null, useGame: false); @@ -317,29 +317,29 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem deviceItem = new Sample(); deviceItem.SetName("device_item"); - deviceItem.Write(DatItem.MachineKey, deviceMachine); + deviceItem.Machine = deviceMachine; deviceItem.Write(DatItem.SourceKey, source); DatItem slotOptionItem = new Sample(); slotOptionItem.SetName("slot_option_item"); - slotOptionItem.Write(DatItem.MachineKey, slotOptionMachine); + slotOptionItem.Machine = slotOptionMachine; slotOptionItem.Write(DatItem.SourceKey, source); DatItem datItem = new Rom(); datItem.SetName("rom"); datItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); datItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); - datItem.Write(DatItem.MachineKey, itemMachine); + datItem.Machine = itemMachine; datItem.Write(DatItem.SourceKey, source); DatItem deviceRef = new DeviceRef(); deviceRef.SetName("device"); - deviceRef.Write(DatItem.MachineKey, itemMachine); + deviceRef.Machine = itemMachine; deviceRef.Write(DatItem.SourceKey, source); DatItem slotOption = new SlotOption(); slotOption.SetName("slotoption"); - slotOption.Write(DatItem.MachineKey, itemMachine); + slotOption.Machine = itemMachine; slotOption.Write(DatItem.SourceKey, source); DatFile datFile = new Logiqx(datFile: null, useGame: false); @@ -429,21 +429,21 @@ namespace SabreTools.Metadata.DatFiles.Test parentItem.SetName("parent_rom"); parentItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); parentItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); - parentItem.Write(DatItem.MachineKey, parentMachine); + parentItem.Machine = parentMachine; parentItem.Write(DatItem.SourceKey, source); DatItem matchChildItem = new Rom(); matchChildItem.SetName("match_child_rom"); matchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); matchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); - matchChildItem.Write(DatItem.MachineKey, childMachine); + matchChildItem.Machine = childMachine; matchChildItem.Write(DatItem.SourceKey, source); DatItem noMatchChildItem = new Rom(); noMatchChildItem.SetName("no_match_child_rom"); noMatchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); noMatchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "beefdead"); - noMatchChildItem.Write(DatItem.MachineKey, childMachine); + noMatchChildItem.Machine = childMachine; noMatchChildItem.Write(DatItem.SourceKey, source); DatFile datFile = new Logiqx(datFile: null, useGame: false); @@ -474,21 +474,21 @@ namespace SabreTools.Metadata.DatFiles.Test parentItem.SetName("parent_rom"); parentItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); parentItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); - parentItem.Write(DatItem.MachineKey, parentMachine); + parentItem.Machine = parentMachine; parentItem.Write(DatItem.SourceKey, source); DatItem matchChildItem = new Rom(); matchChildItem.SetName("match_child_rom"); matchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); matchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); - matchChildItem.Write(DatItem.MachineKey, childMachine); + matchChildItem.Machine = childMachine; matchChildItem.Write(DatItem.SourceKey, source); DatItem noMatchChildItem = new Rom(); noMatchChildItem.SetName("no_match_child_rom"); noMatchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); noMatchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "beefdead"); - noMatchChildItem.Write(DatItem.MachineKey, childMachine); + noMatchChildItem.Machine = childMachine; noMatchChildItem.Write(DatItem.SourceKey, source); DatFile datFile = new Logiqx(datFile: null, useGame: false); @@ -523,11 +523,11 @@ namespace SabreTools.Metadata.DatFiles.Test deviceMachine.IsDevice = true; DatItem biosItem = new Rom(); - biosItem.Write(DatItem.MachineKey, biosMachine); + biosItem.Machine = biosMachine; biosItem.Write(DatItem.SourceKey, source); DatItem deviceItem = new Rom(); - deviceItem.Write(DatItem.MachineKey, deviceMachine); + deviceItem.Machine = deviceMachine; deviceItem.Write(DatItem.SourceKey, source); DatFile datFile = new Logiqx(datFile: null, useGame: false); @@ -591,21 +591,21 @@ namespace SabreTools.Metadata.DatFiles.Test parentItem.SetName("parent_rom"); parentItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); parentItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); - parentItem.Write(DatItem.MachineKey, parentMachine); + parentItem.Machine = parentMachine; parentItem.Write(DatItem.SourceKey, source); DatItem matchChildItem = new Rom(); matchChildItem.SetName("match_child_rom"); matchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); matchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); - matchChildItem.Write(DatItem.MachineKey, childMachine); + matchChildItem.Machine = childMachine; matchChildItem.Write(DatItem.SourceKey, source); DatItem noMatchChildItem = new Rom(); noMatchChildItem.SetName("no_match_child_rom"); noMatchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); noMatchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "beefdead"); - noMatchChildItem.Write(DatItem.MachineKey, childMachine); + noMatchChildItem.Machine = childMachine; noMatchChildItem.Write(DatItem.SourceKey, source); DatFile datFile = new Logiqx(datFile: null, useGame: false); @@ -618,7 +618,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Single(datFile.GetItemsForBucket("parent")); DatItem actual = Assert.Single(datFile.GetItemsForBucket("child")); - Machine? actualMachine = actual.GetMachine(); + Machine? actualMachine = actual.Machine; Assert.NotNull(actualMachine); Assert.Equal("child", actualMachine.Name); Assert.Equal("romof", actualMachine.ReadString(Data.Models.Metadata.Machine.RomOfKey)); @@ -641,21 +641,21 @@ namespace SabreTools.Metadata.DatFiles.Test parentItem.SetName("parent_rom"); parentItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); parentItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); - parentItem.Write(DatItem.MachineKey, parentMachine); + parentItem.Machine = parentMachine; parentItem.Write(DatItem.SourceKey, source); DatItem matchChildItem = new Rom(); matchChildItem.SetName("match_child_rom"); matchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); matchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); - matchChildItem.Write(DatItem.MachineKey, childMachine); + matchChildItem.Machine = childMachine; matchChildItem.Write(DatItem.SourceKey, source); DatItem noMatchChildItem = new Rom(); noMatchChildItem.SetName("no_match_child_rom"); noMatchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); noMatchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "beefdead"); - noMatchChildItem.Write(DatItem.MachineKey, childMachine); + noMatchChildItem.Machine = childMachine; noMatchChildItem.Write(DatItem.SourceKey, source); DatFile datFile = new Logiqx(datFile: null, useGame: false); @@ -698,21 +698,21 @@ namespace SabreTools.Metadata.DatFiles.Test parentItem.SetName("parent_rom"); parentItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); parentItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); - parentItem.Write(DatItem.MachineKey, parentMachine); + parentItem.Machine = parentMachine; parentItem.Write(DatItem.SourceKey, source); DatItem matchChildItem = new Rom(); matchChildItem.SetName("match_child_rom"); matchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); matchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); - matchChildItem.Write(DatItem.MachineKey, childMachine); + matchChildItem.Machine = childMachine; matchChildItem.Write(DatItem.SourceKey, source); DatItem noMatchChildItem = new Rom(); noMatchChildItem.SetName("no_match_child_rom"); noMatchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); noMatchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "beefdead"); - noMatchChildItem.Write(DatItem.MachineKey, childMachine); + noMatchChildItem.Machine = childMachine; noMatchChildItem.Write(DatItem.SourceKey, source); DatFile datFile = new Logiqx(datFile: null, useGame: false); @@ -725,7 +725,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Single(datFile.GetItemsForBucket("parent")); DatItem actual = Assert.Single(datFile.GetItemsForBucket("child")); - Machine? actualMachine = actual.GetMachine(); + Machine? actualMachine = actual.Machine; Assert.NotNull(actualMachine); Assert.Equal("child", actualMachine.Name); } @@ -747,21 +747,21 @@ namespace SabreTools.Metadata.DatFiles.Test parentItem.SetName("parent_rom"); parentItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); parentItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); - parentItem.Write(DatItem.MachineKey, parentMachine); + parentItem.Machine = parentMachine; parentItem.Write(DatItem.SourceKey, source); DatItem matchChildItem = new Rom(); matchChildItem.SetName("match_child_rom"); matchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); matchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); - matchChildItem.Write(DatItem.MachineKey, childMachine); + matchChildItem.Machine = childMachine; matchChildItem.Write(DatItem.SourceKey, source); DatItem noMatchChildItem = new Rom(); noMatchChildItem.SetName("no_match_child_rom"); noMatchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); noMatchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "beefdead"); - noMatchChildItem.Write(DatItem.MachineKey, childMachine); + noMatchChildItem.Machine = childMachine; noMatchChildItem.Write(DatItem.SourceKey, source); DatFile datFile = new Logiqx(datFile: null, useGame: false); @@ -798,7 +798,7 @@ namespace SabreTools.Metadata.DatFiles.Test machine.Write(Data.Models.Metadata.Machine.SampleOfKey, "XXXXXX"); DatItem datItem = new Rom(); - datItem.Write(DatItem.MachineKey, machine); + datItem.Machine = machine; datItem.Write(DatItem.SourceKey, source); DatFile datFile = new Logiqx(datFile: null, useGame: false); @@ -808,7 +808,7 @@ namespace SabreTools.Metadata.DatFiles.Test datFile.RemoveMachineRelationshipTags(); DatItem actualItem = Assert.Single(datFile.GetItemsForBucket("machine")); - Machine? actual = actualItem.GetMachine(); + Machine? actual = actualItem.Machine; Assert.NotNull(actual); Assert.Null(actual.ReadString(Data.Models.Metadata.Machine.CloneOfKey)); Assert.Null(actual.ReadString(Data.Models.Metadata.Machine.RomOfKey)); diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.cs index 191d23ad..9b4f54b8 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.cs @@ -37,7 +37,7 @@ namespace SabreTools.Metadata.DatFiles.Test rom.SetName("rom"); rom.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); rom.Write(DatItem.SourceKey, source); - rom.Write(DatItem.MachineKey, machine); + rom.Machine = machine; DatFile? datFile = new Logiqx(datFile: null, useGame: false); datFile.Header.Name = "name"; @@ -77,7 +77,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem datItem = new Rom(); datItem.Write(DatItem.SourceKey, source); - datItem.Write(DatItem.MachineKey, machine); + datItem.Machine = machine; DatFile datFile = new Logiqx(datFile: null, useGame: false); datFile.AddItem(datItem, statsOnly: false); @@ -1960,7 +1960,7 @@ namespace SabreTools.Metadata.DatFiles.Test romA.SetName("name"); romA.Write(Data.Models.Metadata.Rom.SizeKey, 12345); romA.Write(Data.Models.Metadata.Rom.CRCKey, "crc"); - romA.Write(DatItem.MachineKey, (Machine)machine.Clone()); + romA.Machine = (Machine)machine.Clone(); romA.Write(DatItem.SourceKey, (Source)source.Clone()); List datItems = [romA]; @@ -1988,14 +1988,14 @@ namespace SabreTools.Metadata.DatFiles.Test romA.SetName("romA"); romA.Write(Data.Models.Metadata.Rom.SizeKey, 12345); romA.Write(Data.Models.Metadata.Rom.CRCKey, "crc"); - romA.Write(DatItem.MachineKey, (Machine)machine.Clone()); + romA.Machine = (Machine)machine.Clone(); romA.Write(DatItem.SourceKey, (Source)source.Clone()); Rom romB = new Rom(); romB.SetName("romB"); romB.Write(Data.Models.Metadata.Rom.SizeKey, 23456); romB.Write(Data.Models.Metadata.Rom.CRCKey, "crc2"); - romB.Write(DatItem.MachineKey, (Machine)machine.Clone()); + romB.Machine = (Machine)machine.Clone(); romB.Write(DatItem.SourceKey, (Source)source.Clone()); List datItems = [romA, romB]; @@ -2030,14 +2030,14 @@ namespace SabreTools.Metadata.DatFiles.Test romA.SetName("rom"); romA.Write(Data.Models.Metadata.Rom.SizeKey, 12345); romA.Write(Data.Models.Metadata.Rom.CRCKey, "crc"); - romA.Write(DatItem.MachineKey, (Machine)machine.Clone()); + romA.Machine = (Machine)machine.Clone(); romA.Write(DatItem.SourceKey, (Source)source.Clone()); Rom romB = new Rom(); romB.SetName("rom"); romB.Write(Data.Models.Metadata.Rom.SizeKey, 12345); romB.Write(Data.Models.Metadata.Rom.CRCKey, "crc"); - romB.Write(DatItem.MachineKey, (Machine)machine.Clone()); + romB.Machine = (Machine)machine.Clone(); romB.Write(DatItem.SourceKey, (Source)source.Clone()); List datItems = [romA, romB]; @@ -2065,14 +2065,14 @@ namespace SabreTools.Metadata.DatFiles.Test romA.SetName("rom"); romA.Write(Data.Models.Metadata.Rom.SizeKey, 12345); romA.Write(Data.Models.Metadata.Rom.CRCKey, "crc"); - romA.Write(DatItem.MachineKey, (Machine)machine.Clone()); + romA.Machine = (Machine)machine.Clone(); romA.Write(DatItem.SourceKey, (Source)source.Clone()); Rom romB = new Rom(); romB.SetName("rom"); romB.Write(Data.Models.Metadata.Rom.SizeKey, 23456); romB.Write(Data.Models.Metadata.Rom.CRCKey, "crc2"); - romB.Write(DatItem.MachineKey, (Machine)machine.Clone()); + romB.Machine = (Machine)machine.Clone(); romB.Write(DatItem.SourceKey, (Source)source.Clone()); List datItems = [romA, romB]; @@ -2122,7 +2122,7 @@ namespace SabreTools.Metadata.DatFiles.Test romA.SetName("name"); romA.Write(Data.Models.Metadata.Rom.SizeKey, 12345); romA.Write(Data.Models.Metadata.Rom.CRCKey, "crc"); - romA.Write(DatItem.MachineKey, (Machine)machine.Clone()); + romA.Machine = (Machine)machine.Clone(); romA.Write(DatItem.SourceKey, (Source)source.Clone()); List> mappings = @@ -2152,14 +2152,14 @@ namespace SabreTools.Metadata.DatFiles.Test romA.SetName("romA"); romA.Write(Data.Models.Metadata.Rom.SizeKey, 12345); romA.Write(Data.Models.Metadata.Rom.CRCKey, "crc"); - romA.Write(DatItem.MachineKey, (Machine)machine.Clone()); + romA.Machine = (Machine)machine.Clone(); romA.Write(DatItem.SourceKey, (Source)source.Clone()); Rom romB = new Rom(); romB.SetName("romB"); romB.Write(Data.Models.Metadata.Rom.SizeKey, 23456); romB.Write(Data.Models.Metadata.Rom.CRCKey, "crc2"); - romB.Write(DatItem.MachineKey, (Machine)machine.Clone()); + romB.Machine = (Machine)machine.Clone(); romB.Write(DatItem.SourceKey, (Source)source.Clone()); List> mappings = @@ -2236,14 +2236,14 @@ namespace SabreTools.Metadata.DatFiles.Test romA.SetName("rom"); romA.Write(Data.Models.Metadata.Rom.SizeKey, 12345); romA.Write(Data.Models.Metadata.Rom.CRCKey, "crc"); - romA.Write(DatItem.MachineKey, (Machine)machine.Clone()); + romA.Machine = (Machine)machine.Clone(); romA.Write(DatItem.SourceKey, (Source)source.Clone()); Rom romB = new Rom(); romB.SetName("rom"); romB.Write(Data.Models.Metadata.Rom.SizeKey, 23456); romB.Write(Data.Models.Metadata.Rom.CRCKey, "crc2"); - romB.Write(DatItem.MachineKey, (Machine)machine.Clone()); + romB.Machine = (Machine)machine.Clone(); romB.Write(DatItem.SourceKey, (Source)source.Clone()); List> mappings = diff --git a/SabreTools.Metadata.DatFiles.Test/ItemDictionaryTests.cs b/SabreTools.Metadata.DatFiles.Test/ItemDictionaryTests.cs index d84aafe7..95c8d893 100644 --- a/SabreTools.Metadata.DatFiles.Test/ItemDictionaryTests.cs +++ b/SabreTools.Metadata.DatFiles.Test/ItemDictionaryTests.cs @@ -20,7 +20,7 @@ namespace SabreTools.Metadata.DatFiles.Test disk.SetName("item"); disk.Write(Data.Models.Metadata.Disk.SHA1Key, "deadbeef"); disk.Write(DatItem.SourceKey, source); - disk.Write(DatItem.MachineKey, machine); + disk.Machine = machine; var dict = new ItemDictionary(); _ = dict.AddItem(disk, statsOnly: false); @@ -40,7 +40,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem disk = new Disk(); disk.SetName("item"); disk.Write(DatItem.SourceKey, source); - disk.Write(DatItem.MachineKey, machine); + disk.Machine = machine; var dict = new ItemDictionary(); _ = dict.AddItem(disk, statsOnly: false); @@ -61,7 +61,7 @@ namespace SabreTools.Metadata.DatFiles.Test file.SetName("item"); file.SHA1 = "deadbeef"; file.Write(DatItem.SourceKey, source); - file.Write(DatItem.MachineKey, machine); + file.Machine = machine; var dict = new ItemDictionary(); _ = dict.AddItem(file, statsOnly: false); @@ -80,7 +80,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem file = new File(); file.SetName("item"); file.Write(DatItem.SourceKey, source); - file.Write(DatItem.MachineKey, machine); + file.Machine = machine; var dict = new ItemDictionary(); _ = dict.AddItem(file, statsOnly: false); @@ -100,7 +100,7 @@ namespace SabreTools.Metadata.DatFiles.Test media.SetName("item"); media.Write(Data.Models.Metadata.Media.SHA1Key, "deadbeef"); media.Write(DatItem.SourceKey, source); - media.Write(DatItem.MachineKey, machine); + media.Machine = machine; var dict = new ItemDictionary(); _ = dict.AddItem(media, statsOnly: false); @@ -119,7 +119,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem media = new Media(); media.SetName("item"); media.Write(DatItem.SourceKey, source); - media.Write(DatItem.MachineKey, machine); + media.Machine = machine; var dict = new ItemDictionary(); _ = dict.AddItem(media, statsOnly: false); @@ -140,7 +140,7 @@ namespace SabreTools.Metadata.DatFiles.Test rom.Write(Data.Models.Metadata.Rom.SizeKey, 12345); rom.Write(Data.Models.Metadata.Rom.SHA1Key, "deadbeef"); rom.Write(DatItem.SourceKey, source); - rom.Write(DatItem.MachineKey, machine); + rom.Machine = machine; var dict = new ItemDictionary(); _ = dict.AddItem(rom, statsOnly: false); @@ -163,7 +163,7 @@ namespace SabreTools.Metadata.DatFiles.Test rom.SetName("item"); rom.Write(Data.Models.Metadata.Rom.SizeKey, 12345); rom.Write(DatItem.SourceKey, source); - rom.Write(DatItem.MachineKey, machine); + rom.Machine = machine; var dict = new ItemDictionary(); _ = dict.AddItem(rom, statsOnly: false); @@ -186,7 +186,7 @@ namespace SabreTools.Metadata.DatFiles.Test rom.SetName("item"); rom.Write(Data.Models.Metadata.Rom.SHA1Key, "deadbeef"); rom.Write(DatItem.SourceKey, source); - rom.Write(DatItem.MachineKey, machine); + rom.Machine = machine; var dict = new ItemDictionary(); _ = dict.AddItem(rom, statsOnly: false); @@ -208,7 +208,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem rom = new Rom(); rom.SetName("item"); rom.Write(DatItem.SourceKey, source); - rom.Write(DatItem.MachineKey, machine); + rom.Machine = machine; var dict = new ItemDictionary(); _ = dict.AddItem(rom, statsOnly: false); @@ -230,7 +230,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem item = new Rom(); item.SetName("item"); item.Write(DatItem.SourceKey, source); - item.Write(DatItem.MachineKey, machine); + item.Machine = machine; var dict = new ItemDictionary(); _ = dict.AddItem(item, statsOnly: true); @@ -247,7 +247,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem item = new Rom(); item.SetName("item"); item.Write(DatItem.SourceKey, source); - item.Write(DatItem.MachineKey, machine); + item.Machine = machine; var dict = new ItemDictionary(); _ = dict.AddItem(item, statsOnly: false); @@ -306,7 +306,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem item = new Rom(); item.Write(DatItem.SourceKey, source); - item.Write(DatItem.MachineKey, machine); + item.Machine = machine; var dict = new ItemDictionary(); _ = dict.AddItem(item, statsOnly: false); @@ -326,7 +326,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem item = new Rom(); item.Write(DatItem.SourceKey, source); - item.Write(DatItem.MachineKey, machine); + item.Machine = machine; var dict = new ItemDictionary(); _ = dict.AddItem(item, statsOnly: false); @@ -347,7 +347,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem item = new Rom(); item.Write(DatItem.RemoveKey, true); item.Write(DatItem.SourceKey, source); - item.Write(DatItem.MachineKey, machine); + item.Machine = machine; var dict = new ItemDictionary(); _ = dict.AddItem(item, statsOnly: false); @@ -368,7 +368,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem item = new Rom(); item.Write(DatItem.RemoveKey, true); item.Write(DatItem.SourceKey, source); - item.Write(DatItem.MachineKey, machine); + item.Machine = machine; var dict = new ItemDictionary(); _ = dict.AddItem(item, statsOnly: false); @@ -388,7 +388,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem item = new Rom(); item.Write(DatItem.SourceKey, source); - item.Write(DatItem.MachineKey, machine); + item.Machine = machine; var dict = new ItemDictionary(); _ = dict.AddItem(item, statsOnly: false); @@ -797,7 +797,7 @@ namespace SabreTools.Metadata.DatFiles.Test item.Write(Data.Models.Metadata.Rom.SizeKey, 12345); item.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); item.Write(DatItem.SourceKey, source); - item.Write(DatItem.MachineKey, machine); + item.Machine = machine; var dict = new ItemDictionary(); _ = dict.AddItem(item, statsOnly: false); diff --git a/SabreTools.Metadata.DatFiles/DatFile.Filtering.cs b/SabreTools.Metadata.DatFiles/DatFile.Filtering.cs index 7f5369fc..5ae6b63c 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.Filtering.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.Filtering.cs @@ -119,7 +119,7 @@ namespace SabreTools.Metadata.DatFiles foreach (DatItem item in items) { // Get the current machine - var machine = item.GetMachine(); + var machine = item.Machine; if (machine is null) continue; @@ -326,7 +326,7 @@ namespace SabreTools.Metadata.DatFiles DatItem item = GetItemsForBucket(key)[0]; // Get machine information - Machine? machine = item.GetMachine(); + Machine? machine = item.Machine; string? machineName = machine?.Name?.ToLowerInvariant(); if (machine is null || machineName is null) continue; @@ -514,7 +514,7 @@ namespace SabreTools.Metadata.DatFiles return; // Get the current machine - var machine = datItem.GetMachine(); + var machine = datItem.Machine; if (machine is null) return; @@ -522,7 +522,7 @@ namespace SabreTools.Metadata.DatFiles machine = (Machine)machine.Clone(); // Reassign the item to the new machine - datItem.Write(DatItem.MachineKey, machine); + datItem.Machine = machine; // Remove extensions from File and Rom items if (datItem is DatItems.Formats.File || datItem is Rom) @@ -646,7 +646,7 @@ namespace SabreTools.Metadata.DatFiles foreach (DatItem item in items) { // Get the current machine - var machine = item.GetMachine(); + var machine = item.Machine; if (machine is null) continue; @@ -655,10 +655,10 @@ namespace SabreTools.Metadata.DatFiles string? machineDesc = machine.Description; if (machineName is not null && Regex.IsMatch(machineName, SceneNamePattern)) - item.GetMachine()!.Name = Regex.Replace(machineName, SceneNamePattern, "$2"); + item.Machine!.Name = Regex.Replace(machineName, SceneNamePattern, "$2"); if (machineDesc is not null && Regex.IsMatch(machineDesc, SceneNamePattern)) - item.GetMachine()!.Description = Regex.Replace(machineDesc, SceneNamePattern, "$2"); + item.Machine!.Description = Regex.Replace(machineDesc, SceneNamePattern, "$2"); } #if NET40_OR_GREATER || NETCOREAPP || NETSTANDARD2_0_OR_GREATER }); @@ -727,7 +727,7 @@ namespace SabreTools.Metadata.DatFiles foreach (DatItem item in items) { // Get the current machine - var machine = item.GetMachine(); + var machine = item.Machine; if (machine is null) continue; diff --git a/SabreTools.Metadata.DatFiles/DatFile.Splitting.cs b/SabreTools.Metadata.DatFiles/DatFile.Splitting.cs index fcf958b2..7ab48799 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.Splitting.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.Splitting.cs @@ -268,7 +268,7 @@ namespace SabreTools.Metadata.DatFiles continue; // Get the machine - var machine = items[0].GetMachine(); + var machine = items[0].Machine; if (machine is null) continue; @@ -283,8 +283,8 @@ namespace SabreTools.Metadata.DatFiles if (parentItems.Count == 0) { copyFrom = new Rom(); - copyFrom.GetMachine()!.Name = cloneOf; - copyFrom.GetMachine()!.Description = cloneOf; + copyFrom.Machine!.Name = cloneOf; + copyFrom.Machine!.Description = cloneOf; } else { @@ -350,7 +350,7 @@ namespace SabreTools.Metadata.DatFiles .Contains(mergeTag)) { if (subfolder) - rom.Name = $"{rom.GetMachine()!.Name}\\{rom.Name}"; + rom.Name = $"{rom.Machine!.Name}\\{rom.Name}"; rom.CopyMachineInformation(copyFrom); AddItem(rom, statsOnly: false); @@ -360,7 +360,7 @@ namespace SabreTools.Metadata.DatFiles else if (!GetItemsForBucket(cloneOf).Exists(i => i.Equals(item)) || skipDedup) { if (subfolder) - rom.Name = $"{item.GetMachine()!.Name}\\{rom.Name}"; + rom.Name = $"{item.Machine!.Name}\\{rom.Name}"; rom.CopyMachineInformation(copyFrom); AddItem(rom, statsOnly: false); @@ -371,7 +371,7 @@ namespace SabreTools.Metadata.DatFiles else if (!GetItemsForBucket(cloneOf).Exists(i => i.Equals(item))) { if (subfolder) - item.SetName($"{item.GetMachine()!.Name}\\{item.GetName()}"); + item.SetName($"{item.Machine!.Name}\\{item.GetName()}"); item.CopyMachineInformation(copyFrom); AddItem(item, statsOnly: false); @@ -537,7 +537,7 @@ namespace SabreTools.Metadata.DatFiles continue; // Get the machine - var machine = items[0].GetMachine(); + var machine = items[0].Machine; if (machine is null) continue; @@ -562,10 +562,10 @@ namespace SabreTools.Metadata.DatFiles // Now we want to get the parent romof tag and put it in each of the items items = GetItemsForBucket(bucket); - string? romof = GetItemsForBucket(cloneOf)[0].GetMachine()!.ReadString(Data.Models.Metadata.Machine.RomOfKey); + string? romof = GetItemsForBucket(cloneOf)[0].Machine!.ReadString(Data.Models.Metadata.Machine.RomOfKey); foreach (DatItem item in items) { - item.GetMachine()!.Write(Data.Models.Metadata.Machine.RomOfKey, romof); + item.Machine!.Write(Data.Models.Metadata.Machine.RomOfKey, romof); } } } @@ -659,7 +659,7 @@ namespace SabreTools.Metadata.DatFiles continue; // If the machine (is/is not) a device, we want to continue - if (deviceOnly ^ (datItems[0].GetMachine()!.IsDevice == true)) + if (deviceOnly ^ (datItems[0].Machine!.IsDevice == true)) continue; // Get the first item from the bucket @@ -976,7 +976,7 @@ namespace SabreTools.Metadata.DatFiles continue; // Get the machine - var machine = items[0].GetMachine(); + var machine = items[0].Machine; if (machine is null) continue; @@ -1069,7 +1069,7 @@ namespace SabreTools.Metadata.DatFiles #endif // Get the machine - var machine = items[0].GetMachine(); + var machine = items[0].Machine; if (machine is null) #if NET40_OR_GREATER || NETCOREAPP || NETSTANDARD2_0_OR_GREATER return; @@ -1158,7 +1158,7 @@ namespace SabreTools.Metadata.DatFiles continue; // Get the machine - var machine = items[0].GetMachine(); + var machine = items[0].Machine; if (machine is null) continue; @@ -1186,10 +1186,10 @@ namespace SabreTools.Metadata.DatFiles // Now we want to get the parent romof tag and put it in each of the remaining items items = GetItemsForBucket(bucket); - string? romof = GetItemsForBucket(cloneOf)[0].GetMachine()!.ReadString(Data.Models.Metadata.Machine.RomOfKey); + string? romof = GetItemsForBucket(cloneOf)[0].Machine!.ReadString(Data.Models.Metadata.Machine.RomOfKey); foreach (DatItem item in items) { - item.GetMachine()!.Write(Data.Models.Metadata.Machine.RomOfKey, romof); + item.Machine!.Write(Data.Models.Metadata.Machine.RomOfKey, romof); } } } @@ -1268,7 +1268,7 @@ namespace SabreTools.Metadata.DatFiles continue; // Get the machine - var machine = items[0].GetMachine(); + var machine = items[0].Machine; if (machine is null) continue; @@ -1366,7 +1366,7 @@ namespace SabreTools.Metadata.DatFiles item.Remove(Data.Models.Metadata.Rom.MergeKey); // Get the machine - var machine = item.GetMachine(); + var machine = item.Machine; if (machine is null) continue; diff --git a/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs b/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs index cb461899..0e3dcd98 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs @@ -76,7 +76,7 @@ namespace SabreTools.Metadata.DatFiles continue; // Create a machine to hold everything - var machine = items[0].GetMachine()!.GetInternalClone(); + var machine = items[0].Machine!.GetInternalClone(); // Handle Trurip object, if it exists if (machine.ContainsKey(Data.Models.Metadata.Machine.TruripKey)) diff --git a/SabreTools.Metadata.DatFiles/DatFile.cs b/SabreTools.Metadata.DatFiles/DatFile.cs index 280554a3..4d887946 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.cs @@ -1176,8 +1176,8 @@ namespace SabreTools.Metadata.DatFiles } // If machine names don't match - string? xMachineName = x.GetMachine()?.Name; - string? yMachineName = y.GetMachine()?.Name; + string? xMachineName = x.Machine?.Name; + string? yMachineName = y.Machine?.Name; if (xMachineName != yMachineName) return nc.Compare(xMachineName, yMachineName); diff --git a/SabreTools.Metadata.DatFiles/Formats/Missfile.cs b/SabreTools.Metadata.DatFiles/Formats/Missfile.cs index 4e23cbdd..ae3a250d 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Missfile.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Missfile.cs @@ -88,7 +88,7 @@ namespace SabreTools.Metadata.DatFiles.Formats WriteDatItem(sw, datItem, lastgame); // Set the new data to compare against - lastgame = datItem.GetMachine()!.Name; + lastgame = datItem.Machine!.Name; } } @@ -174,7 +174,7 @@ namespace SabreTools.Metadata.DatFiles.Formats /// The name of the last game to be output private void WriteDatItem(StreamWriter sw, DatItem datItem, string? lastgame) { - var machine = datItem.GetMachine(); + var machine = datItem.Machine; WriteDatItemImpl(sw, datItem, machine!, lastgame); } diff --git a/SabreTools.Metadata.DatFiles/Formats/SabreJSON.cs b/SabreTools.Metadata.DatFiles/Formats/SabreJSON.cs index 5ef5ce89..e39f9fa2 100644 --- a/SabreTools.Metadata.DatFiles/Formats/SabreJSON.cs +++ b/SabreTools.Metadata.DatFiles/Formats/SabreJSON.cs @@ -458,11 +458,11 @@ namespace SabreTools.Metadata.DatFiles.Formats DatItem datItem = datItems[index]; // If we have a different game and we're not at the start of the list, output the end of last item - if (lastgame is not null && !string.Equals(lastgame, datItem.GetMachine()!.Name, StringComparison.OrdinalIgnoreCase)) + if (lastgame is not null && !string.Equals(lastgame, datItem.Machine!.Name, StringComparison.OrdinalIgnoreCase)) WriteEndGame(jtw); // If we have a new game, output the beginning of the new item - if (lastgame is null || !string.Equals(lastgame, datItem.GetMachine()!.Name, StringComparison.OrdinalIgnoreCase)) + if (lastgame is null || !string.Equals(lastgame, datItem.Machine!.Name, StringComparison.OrdinalIgnoreCase)) WriteStartGame(jtw, datItem); // Check for a "null" item @@ -473,7 +473,7 @@ namespace SabreTools.Metadata.DatFiles.Formats WriteDatItem(jtw, datItem); // Set the new data to compare against - lastgame = datItem.GetMachine()!.Name; + lastgame = datItem.Machine!.Name; } } @@ -601,8 +601,8 @@ namespace SabreTools.Metadata.DatFiles.Formats private static void WriteStartGame(JsonTextWriter jtw, DatItem datItem) { // No game should start with a path separator - if (!string.IsNullOrEmpty(datItem.GetMachine()!.Name)) - datItem.GetMachine()!.Name = datItem.GetMachine()!.Name!.TrimStart(Path.DirectorySeparatorChar); + if (!string.IsNullOrEmpty(datItem.Machine!.Name)) + datItem.Machine!.Name = datItem.Machine!.Name!.TrimStart(Path.DirectorySeparatorChar); // Build the state jtw.WriteStartObject(); @@ -610,7 +610,7 @@ namespace SabreTools.Metadata.DatFiles.Formats // Write the Machine jtw.WritePropertyName("machine"); JsonSerializer js = new() { Formatting = Formatting.Indented }; - js.Serialize(jtw, datItem.GetMachine()!); + js.Serialize(jtw, datItem.Machine!); jtw.WritePropertyName("items"); jtw.WriteStartArray(); @@ -641,7 +641,7 @@ namespace SabreTools.Metadata.DatFiles.Formats private void WriteDatItem(JsonTextWriter jtw, DatItem datItem) { // Get the machine for the item - var machine = datItem.GetMachine(); + var machine = datItem.Machine; // Pre-process the item name ProcessItemName(datItem, machine, forceRemoveQuotes: true, forceRomName: false); diff --git a/SabreTools.Metadata.DatFiles/Formats/SabreXML.cs b/SabreTools.Metadata.DatFiles/Formats/SabreXML.cs index 1c5ac52b..d4215183 100644 --- a/SabreTools.Metadata.DatFiles/Formats/SabreXML.cs +++ b/SabreTools.Metadata.DatFiles/Formats/SabreXML.cs @@ -282,11 +282,11 @@ namespace SabreTools.Metadata.DatFiles.Formats DatItem datItem = datItems[index]; // If we have a different game and we're not at the start of the list, output the end of last item - if (lastgame is not null && !string.Equals(lastgame, datItem.GetMachine()!.Name, StringComparison.OrdinalIgnoreCase)) + if (lastgame is not null && !string.Equals(lastgame, datItem.Machine!.Name, StringComparison.OrdinalIgnoreCase)) WriteEndGame(xtw); // If we have a new game, output the beginning of the new item - if (lastgame is null || !string.Equals(lastgame, datItem.GetMachine()!.Name, StringComparison.OrdinalIgnoreCase)) + if (lastgame is null || !string.Equals(lastgame, datItem.Machine!.Name, StringComparison.OrdinalIgnoreCase)) WriteStartGame(xtw, datItem); // Check for a "null" item @@ -297,7 +297,7 @@ namespace SabreTools.Metadata.DatFiles.Formats WriteDatItem(xtw, datItem); // Set the new data to compare against - lastgame = datItem.GetMachine()!.Name; + lastgame = datItem.Machine!.Name; } } @@ -429,14 +429,14 @@ namespace SabreTools.Metadata.DatFiles.Formats private static void WriteStartGame(XmlTextWriter xtw, DatItem datItem) { // No game should start with a path separator - datItem.GetMachine()!.Name = datItem.GetMachine()!.Name?.TrimStart(Path.DirectorySeparatorChar) ?? string.Empty; + datItem.Machine!.Name = datItem.Machine!.Name?.TrimStart(Path.DirectorySeparatorChar) ?? string.Empty; // Write the machine xtw.WriteStartElement("directory"); XmlSerializer xs = new(typeof(Machine)); XmlSerializerNamespaces ns = new(); ns.Add("", ""); - xs.Serialize(xtw, datItem.GetMachine(), ns); + xs.Serialize(xtw, datItem.Machine, ns); xtw.WriteStartElement("files"); @@ -466,7 +466,7 @@ namespace SabreTools.Metadata.DatFiles.Formats private void WriteDatItem(XmlTextWriter xtw, DatItem datItem) { // Get the machine for the item - var machine = datItem.GetMachine(); + var machine = datItem.Machine; // Pre-process the item name ProcessItemName(datItem, machine, forceRemoveQuotes: true, forceRomName: false); diff --git a/SabreTools.Metadata.DatFiles/ItemDictionary.cs b/SabreTools.Metadata.DatFiles/ItemDictionary.cs index 2fe1068e..17756f62 100644 --- a/SabreTools.Metadata.DatFiles/ItemDictionary.cs +++ b/SabreTools.Metadata.DatFiles/ItemDictionary.cs @@ -437,9 +437,9 @@ namespace SabreTools.Metadata.DatFiles var lastSource = last.Read(DatItem.SourceKey); // Get the machines for comparison - var selfMachine = self.GetMachine(); + var selfMachine = self.Machine; string? selfMachineName = selfMachine?.Name; - var lastMachine = last.GetMachine(); + var lastMachine = last.Machine; string? lastMachineName = lastMachine?.Name; // If the duplicate is external already @@ -546,8 +546,8 @@ namespace SabreTools.Metadata.DatFiles var itemSource = datItem.Read(DatItem.SourceKey); // Get the machines associated with the items - var savedMachine = savedItem.GetMachine(); - var itemMachine = datItem.GetMachine(); + var savedMachine = savedItem.Machine; + var itemMachine = datItem.Machine; // If the current source has a lower ID than the saved, use the saved source if (itemSource?.Index < savedSource?.Index) @@ -732,7 +732,7 @@ namespace SabreTools.Metadata.DatFiles bucketBy = ItemKey.Machine; // Get the machine and source - var machine = datItem.GetMachine(); + var machine = datItem.Machine; var source = datItem.Read(DatItem.SourceKey); // Get the bucket key @@ -771,7 +771,7 @@ namespace SabreTools.Metadata.DatFiles continue; // Get the machine and source - var machine = item.GetMachine(); + var machine = item.Machine; var source = item.Read(DatItem.SourceKey); // We want to get the key most appropriate for the given sorting type @@ -852,8 +852,8 @@ namespace SabreTools.Metadata.DatFiles } // Get the machines - Machine? xMachine = x.GetMachine(); - Machine? yMachine = y.GetMachine(); + Machine? xMachine = x.Machine; + Machine? yMachine = y.Machine; // If machine names don't match string? xMachineName = xMachine?.Name; diff --git a/SabreTools.Metadata.DatItems.Test/DatItemTests.cs b/SabreTools.Metadata.DatItems.Test/DatItemTests.cs index cd63bf0d..4f785f16 100644 --- a/SabreTools.Metadata.DatItems.Test/DatItemTests.cs +++ b/SabreTools.Metadata.DatItems.Test/DatItemTests.cs @@ -59,10 +59,10 @@ namespace SabreTools.Metadata.DatItems.Test var romA = new Rom(); var romB = new Rom(); - romB.Remove(DatItem.MachineKey); + romB.Machine = null; romA.CopyMachineInformation(romB); - var actualMachineA = romA.GetMachine(); + var actualMachineA = romA.Machine; Assert.NotNull(actualMachineA); Assert.Null(actualMachineA.Name); } @@ -74,13 +74,13 @@ namespace SabreTools.Metadata.DatItems.Test machineA.Name = "machineA"; var romA = new Rom(); - romA.Write(DatItem.MachineKey, machineA); + romA.Machine = machineA; var romB = new Rom(); - romB.Remove(DatItem.MachineKey); + romB.Machine = null; romA.CopyMachineInformation(romB); - var actualMachineA = romA.GetMachine(); + var actualMachineA = romA.Machine; Assert.NotNull(actualMachineA); Assert.Equal("machineA", actualMachineA.Name); } @@ -94,13 +94,13 @@ namespace SabreTools.Metadata.DatItems.Test Machine? machineB = null; var romA = new Rom(); - romA.Write(DatItem.MachineKey, machineA); + romA.Machine = machineA; var romB = new Rom(); - romB.Write(DatItem.MachineKey, machineB); + romB.Machine = machineB; romA.CopyMachineInformation(romB); - var actualMachineA = romA.GetMachine(); + var actualMachineA = romA.Machine; Assert.NotNull(actualMachineA); Assert.Equal("machineA", actualMachineA.Name); } @@ -114,13 +114,13 @@ namespace SabreTools.Metadata.DatItems.Test Machine? machineB = new Machine(); var romA = new Rom(); - romA.Write(DatItem.MachineKey, machineA); + romA.Machine = machineA; var romB = new Rom(); - romB.Write(DatItem.MachineKey, machineB); + romB.Machine = machineB; romA.CopyMachineInformation(romB); - var actualMachineA = romA.GetMachine(); + var actualMachineA = romA.Machine; Assert.NotNull(actualMachineA); Assert.Null(actualMachineA.Name); } @@ -135,13 +135,13 @@ namespace SabreTools.Metadata.DatItems.Test machineB.Name = "machineB"; var romA = new Rom(); - romA.Write(DatItem.MachineKey, machineA); + romA.Machine = machineA; var romB = new Rom(); - romB.Write(DatItem.MachineKey, machineB); + romB.Machine = machineB; romA.CopyMachineInformation(romB); - var actualMachineA = romA.GetMachine(); + var actualMachineA = romA.Machine; Assert.NotNull(actualMachineA); Assert.Equal("machineB", actualMachineA.Name); } @@ -156,13 +156,13 @@ namespace SabreTools.Metadata.DatItems.Test machineB.Name = "machineB"; var romA = new Rom(); - romA.Write(DatItem.MachineKey, machineA); + romA.Machine = machineA; var diskB = new Disk(); - diskB.Write(DatItem.MachineKey, machineB); + diskB.Machine = machineB; romA.CopyMachineInformation(diskB); - var actualMachineA = romA.GetMachine(); + var actualMachineA = romA.Machine; Assert.NotNull(actualMachineA); Assert.Equal("machineB", actualMachineA.Name); } diff --git a/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs b/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs index c416af2b..4f5c1f4c 100644 --- a/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs +++ b/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs @@ -31,7 +31,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test disk.Write(Data.Models.Metadata.Disk.MD5Key, HashType.MD5.ZeroString); disk.Write(Data.Models.Metadata.Disk.SHA1Key, HashType.SHA1.ZeroString); disk.Write(DatItem.DupeTypeKey, DupeType.All | DupeType.External); - disk.Write(DatItem.MachineKey, machine); + disk.Machine = machine; disk.Write(Disk.PartKey, part); disk.Write(DatItem.RemoveKey, (bool?)false); disk.Write(DatItem.SourceKey, source); @@ -51,7 +51,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Assert.NotNull(actualDataArea); Assert.Equal("name", actualDataArea.Name); - Machine? actualMachine = actual.GetMachine(); + Machine? actualMachine = actual.Machine; Assert.NotNull(actualMachine); Assert.Equal("name", actualMachine.Name); diff --git a/SabreTools.Metadata.DatItems.Test/Formats/FileTests.cs b/SabreTools.Metadata.DatItems.Test/Formats/FileTests.cs index e461f1ad..8d2d4d41 100644 --- a/SabreTools.Metadata.DatItems.Test/Formats/FileTests.cs +++ b/SabreTools.Metadata.DatItems.Test/Formats/FileTests.cs @@ -27,10 +27,10 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Format = "XXXXXX" }; file.Write(DatItem.DupeTypeKey, DupeType.All | DupeType.External); - file.Write(DatItem.MachineKey, machine); + file.Machine = machine; file.Write(DatItem.RemoveKey, (bool?)false); file.Write(DatItem.SourceKey, source); - file.Write(DatItem.MachineKey, machine); + file.Machine = machine; file.Write(DatItem.SourceKey, source); Rom actual = file.ConvertToRom(); @@ -43,7 +43,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Assert.Equal("00000000000000000000000000000000000000000000000000000000deadbeef", actual.ReadString(Data.Models.Metadata.Rom.SHA256Key)); Assert.Equal(DupeType.All | DupeType.External, actual.Read(DatItem.DupeTypeKey)); - Machine? actualMachine = actual.GetMachine(); + Machine? actualMachine = actual.Machine; Assert.NotNull(actualMachine); Assert.Equal("name", actualMachine.GetName()); diff --git a/SabreTools.Metadata.DatItems.Test/Formats/MediaTests.cs b/SabreTools.Metadata.DatItems.Test/Formats/MediaTests.cs index b584e038..5d7f127c 100644 --- a/SabreTools.Metadata.DatItems.Test/Formats/MediaTests.cs +++ b/SabreTools.Metadata.DatItems.Test/Formats/MediaTests.cs @@ -22,7 +22,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test media.Write(Data.Models.Metadata.Media.SHA256Key, HashType.SHA256.ZeroString); media.Write(Data.Models.Metadata.Media.SpamSumKey, HashType.SpamSum.ZeroString); media.Write(DatItem.DupeTypeKey, DupeType.All | DupeType.External); - media.Write(DatItem.MachineKey, machine); + media.Machine = machine; media.Write(DatItem.RemoveKey, (bool?)false); media.Write(DatItem.SourceKey, source); @@ -35,7 +35,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Assert.Equal(HashType.SpamSum.ZeroString, actual.ReadString(Data.Models.Metadata.Rom.SpamSumKey)); Assert.Equal(DupeType.All | DupeType.External, actual.Read(DatItem.DupeTypeKey)); - Machine? actualMachine = actual.GetMachine(); + Machine? actualMachine = actual.Machine; Assert.NotNull(actualMachine); Assert.Equal("name", actualMachine.Name); diff --git a/SabreTools.Metadata.DatItems/DatItem.cs b/SabreTools.Metadata.DatItems/DatItem.cs index c61ef588..7642613e 100644 --- a/SabreTools.Metadata.DatItems/DatItem.cs +++ b/SabreTools.Metadata.DatItems/DatItem.cs @@ -63,11 +63,6 @@ namespace SabreTools.Metadata.DatItems /// public const string DupeTypeKey = "DUPETYPE"; - /// - /// Machine associated with the item - /// - public const string MachineKey = "MACHINE"; - /// /// Flag if item should be removed /// @@ -87,6 +82,11 @@ namespace SabreTools.Metadata.DatItems /// public abstract Data.Models.Metadata.ItemType ItemType { get; } + /// + /// Get the machine for a DatItem + /// + public Machine? Machine { get; set; } + #endregion #region Logging @@ -101,13 +101,6 @@ namespace SabreTools.Metadata.DatItems #region Accessors - /// - /// Get the machine for a DatItem - /// - /// Machine if available, null otherwise - /// Relies on - public Machine? GetMachine() => Read(MachineKey); - /// /// Gets the name to use for a DatItem /// @@ -137,11 +130,10 @@ namespace SabreTools.Metadata.DatItems public void CopyMachineInformation(DatItem item) { // If there is no machine - if (!item._internal.ContainsKey(MachineKey)) + if (item.Machine is null) return; - var machine = item.GetMachine(); - CopyMachineInformation(machine); + CopyMachineInformation(item.Machine); } /// @@ -154,7 +146,7 @@ namespace SabreTools.Metadata.DatItems return; if (machine.Clone() is Machine cloned) - Write(MachineKey, cloned); + Machine = cloned; } #endregion @@ -245,7 +237,7 @@ namespace SabreTools.Metadata.DatItems /// True if the item and its machine passes the filter, false otherwise public bool PassesFilter(FilterRunner filterRunner) { - var machine = GetMachine(); + var machine = Machine; if (machine is not null && !machine.PassesFilter(filterRunner)) return false; diff --git a/SabreTools.Metadata.DatItems/DatItemT.cs b/SabreTools.Metadata.DatItems/DatItemT.cs index 79354958..3671404c 100644 --- a/SabreTools.Metadata.DatItems/DatItemT.cs +++ b/SabreTools.Metadata.DatItems/DatItemT.cs @@ -25,7 +25,7 @@ namespace SabreTools.Metadata.DatItems _internal = new T(); SetName(string.Empty); - Write(MachineKey, new Machine()); + Machine = new Machine(); } /// @@ -35,7 +35,7 @@ namespace SabreTools.Metadata.DatItems { _internal = item; - Write(MachineKey, new Machine()); + Machine = new Machine(); } #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/Disk.cs b/SabreTools.Metadata.DatItems/Formats/Disk.cs index c3ddb732..5599c355 100644 --- a/SabreTools.Metadata.DatItems/Formats/Disk.cs +++ b/SabreTools.Metadata.DatItems/Formats/Disk.cs @@ -130,7 +130,7 @@ namespace SabreTools.Metadata.DatItems.Formats } rom.Write(DupeTypeKey, Read(DupeTypeKey)); - rom.Write(MachineKey, GetMachine()?.Clone() as Machine); + rom.Machine = Machine?.Clone() as Machine; rom.Write(Rom.PartKey, Read(PartKey)?.Clone() as Part); rom.Write(RemoveKey, ReadBool(RemoveKey)); rom.Write(SourceKey, Read(SourceKey)?.Clone() as Source); diff --git a/SabreTools.Metadata.DatItems/Formats/File.cs b/SabreTools.Metadata.DatItems/Formats/File.cs index 4acc452b..9ea0049e 100644 --- a/SabreTools.Metadata.DatItems/Formats/File.cs +++ b/SabreTools.Metadata.DatItems/Formats/File.cs @@ -121,7 +121,7 @@ namespace SabreTools.Metadata.DatItems.Formats Format = this.Format, }; file.Write(DupeTypeKey, Read(DupeTypeKey)); - file.Write(MachineKey, GetMachine()!.Clone() as Machine ?? new Machine()); + file.Machine = Machine!.Clone() as Machine ?? new Machine(); file.Write(RemoveKey, ReadBool(RemoveKey)); file.Write(SourceKey, Read(SourceKey)); @@ -144,7 +144,7 @@ namespace SabreTools.Metadata.DatItems.Formats rom.Write(Data.Models.Metadata.Rom.SHA256Key, SHA256); rom.Write(DupeTypeKey, Read(DupeTypeKey)); - rom.Write(MachineKey, GetMachine()?.Clone() as Machine); + rom.Machine = Machine?.Clone() as Machine; rom.Write(RemoveKey, ReadBool(RemoveKey)); rom.Write(SourceKey, Read(SourceKey)); diff --git a/SabreTools.Metadata.DatItems/Formats/Media.cs b/SabreTools.Metadata.DatItems/Formats/Media.cs index 9435426f..c10c4852 100644 --- a/SabreTools.Metadata.DatItems/Formats/Media.cs +++ b/SabreTools.Metadata.DatItems/Formats/Media.cs @@ -68,7 +68,7 @@ namespace SabreTools.Metadata.DatItems.Formats var rom = new Rom(_internal.ConvertToRom()!); rom.Write(DupeTypeKey, Read(DupeTypeKey)); - rom.Write(MachineKey, GetMachine()); + rom.Machine = Machine?.Clone() as Machine; rom.Write(RemoveKey, ReadBool(RemoveKey)); rom.Write(SourceKey, Read(SourceKey)); From 61ea4b2668690fbd144e150bb91bca657398eac9 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Thu, 2 Apr 2026 16:25:52 -0400 Subject: [PATCH 021/142] Compare machines in DatItem equality --- SabreTools.Metadata.DatItems/DatItem.cs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/SabreTools.Metadata.DatItems/DatItem.cs b/SabreTools.Metadata.DatItems/DatItem.cs index 7642613e..bb1b43b2 100644 --- a/SabreTools.Metadata.DatItems/DatItem.cs +++ b/SabreTools.Metadata.DatItems/DatItem.cs @@ -199,6 +199,12 @@ namespace SabreTools.Metadata.DatItems if (other is not DatItem otherItem) return false; + // Compare machines + if ((Machine is null) ^ (otherItem.Machine is null)) + return false; + if (Machine is not null && !Machine.Equals(otherItem.Machine)) + return false; + // Compare internal models return _internal.Equals(otherItem); } @@ -222,6 +228,12 @@ namespace SabreTools.Metadata.DatItems if (selfType != otherType) return false; + // Compare machines + if ((Machine is null) ^ (other.Machine is null)) + return false; + if (Machine is not null && !Machine.Equals(other.Machine)) + return false; + // Compare the internal models return _internal.EqualTo(other._internal); } From d3f5dccf5b9800dd5768520f5ff503d7833c88cf Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Thu, 2 Apr 2026 17:06:01 -0400 Subject: [PATCH 022/142] Make Source inherent to DatItem instead of passing through --- .../DatFileTests.Filtering.cs | 12 +- .../DatFileTests.Splitting.cs | 88 +++--- .../DatFileTests.cs | 28 +- .../ItemDictionaryTests.cs | 56 ++-- .../DatFile.FromMetadata.cs | 4 +- SabreTools.Metadata.DatFiles/DatFile.cs | 4 +- .../Formats/SabreJSON.cs | 2 +- .../Formats/SabreXML.cs | 2 +- .../ItemDictionary.cs | 18 +- .../Formats/DiskTests.cs | 4 +- .../Formats/FileTests.cs | 6 +- .../Formats/MediaTests.cs | 4 +- SabreTools.Metadata.DatItems/DatItem.cs | 28 +- .../Formats/Adjuster.cs | 2 +- .../Formats/Analog.cs | 2 +- .../Formats/Archive.cs | 2 +- .../Formats/BiosSet.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Blank.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Chip.cs | 2 +- .../Formats/Condition.cs | 2 +- .../Formats/ConfLocation.cs | 2 +- .../Formats/ConfSetting.cs | 2 +- .../Formats/Configuration.cs | 2 +- .../Formats/Control.cs | 2 +- .../Formats/DataArea.cs | 2 +- .../Formats/Device.cs | 2 +- .../Formats/DeviceRef.cs | 2 +- .../Formats/DipLocation.cs | 2 +- .../Formats/DipSwitch.cs | 2 +- .../Formats/DipValue.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Disk.cs | 4 +- .../Formats/DiskArea.cs | 2 +- .../Formats/Display.cs | 4 +- .../Formats/Driver.cs | 2 +- .../Formats/Extension.cs | 2 +- .../Formats/Feature.cs | 2 +- SabreTools.Metadata.DatItems/Formats/File.cs | 4 +- SabreTools.Metadata.DatItems/Formats/Info.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Input.cs | 2 +- .../Formats/Instance.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Media.cs | 4 +- SabreTools.Metadata.DatItems/Formats/Part.cs | 2 +- .../Formats/PartFeature.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Port.cs | 2 +- .../Formats/RamOption.cs | 2 +- .../Formats/Release.cs | 2 +- .../Formats/ReleaseDetails.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Rom.cs | 4 +- .../Formats/Sample.cs | 2 +- .../Formats/Serials.cs | 2 +- .../Formats/SharedFeat.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Slot.cs | 2 +- .../Formats/SlotOption.cs | 2 +- .../Formats/SoftwareList.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Sound.cs | 2 +- .../Formats/SourceDetails.cs | 2 +- SabreTools.Metadata.DatItems/Machine.cs | 26 ++ .../DictionaryBaseExtensions.cs | 274 ++++++++++++++++++ 58 files changed, 468 insertions(+), 184 deletions(-) diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.Filtering.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.Filtering.cs index 448ad49c..f82d53f8 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.Filtering.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.Filtering.cs @@ -26,7 +26,7 @@ namespace SabreTools.Metadata.DatFiles.Test datItem.SetName("rom.bin"); datItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); datItem.Machine = machine; - datItem.Write(DatItem.SourceKey, source); + datItem.Source = source; DatFile datFile = new Logiqx(datFile: null, useGame: false); datFile.AddItem(datItem, statsOnly: false); @@ -54,7 +54,7 @@ namespace SabreTools.Metadata.DatFiles.Test datItem.SetName("rom.bin"); datItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); datItem.Machine = machine; - datItem.Write(DatItem.SourceKey, source); + datItem.Source = source; DatFile datFile = new Logiqx(datFile: null, useGame: false); long sourceIndex = datFile.AddSourceDB(source); @@ -84,7 +84,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem datItem = new Rom(); datItem.Machine = machine; - datItem.Write(DatItem.SourceKey, source); + datItem.Source = source; DatFile datFile = new Logiqx(datFile: null, useGame: false); datFile.AddItem(datItem, statsOnly: false); @@ -131,12 +131,12 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem rom = new Rom(); rom.SetName("rom.bin"); rom.Machine = machine; - rom.Write(DatItem.SourceKey, source); + rom.Source = source; DatItem disk = new Disk(); disk.SetName("disk"); disk.Machine = machine; - disk.Write(DatItem.SourceKey, source); + disk.Source = source; DatFile datFile = new Logiqx(datFile: null, useGame: false); datFile.AddItem(rom, statsOnly: false); @@ -270,7 +270,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem datItem = new Rom(); datItem.Machine = machine; - datItem.Write(DatItem.SourceKey, source); + datItem.Source = source; DatFile datFile = new Logiqx(datFile: null, useGame: false); datFile.AddItem(datItem, statsOnly: false); diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.Splitting.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.Splitting.cs index 3ea66952..62c11937 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.Splitting.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.Splitting.cs @@ -27,21 +27,21 @@ namespace SabreTools.Metadata.DatFiles.Test parentItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); parentItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); parentItem.Machine = parentMachine; - parentItem.Write(DatItem.SourceKey, source); + parentItem.Source = source; DatItem matchChildItem = new Rom(); matchChildItem.SetName("match_child_rom"); matchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); matchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); matchChildItem.Machine = childMachine; - matchChildItem.Write(DatItem.SourceKey, source); + matchChildItem.Source = source; DatItem noMatchChildItem = new Rom(); noMatchChildItem.SetName("no_match_child_rom"); noMatchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); noMatchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "beefdead"); noMatchChildItem.Machine = childMachine; - noMatchChildItem.Write(DatItem.SourceKey, source); + noMatchChildItem.Source = source; DatFile datFile = new Logiqx(datFile: null, useGame: false); datFile.AddItem(parentItem, statsOnly: false); @@ -72,21 +72,21 @@ namespace SabreTools.Metadata.DatFiles.Test parentItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); parentItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); parentItem.Machine = parentMachine; - parentItem.Write(DatItem.SourceKey, source); + parentItem.Source = source; DatItem matchChildItem = new Rom(); matchChildItem.SetName("match_child_rom"); matchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); matchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); matchChildItem.Machine = childMachine; - matchChildItem.Write(DatItem.SourceKey, source); + matchChildItem.Source = source; DatItem noMatchChildItem = new Rom(); noMatchChildItem.SetName("no_match_child_rom"); noMatchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); noMatchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "beefdead"); noMatchChildItem.Machine = childMachine; - noMatchChildItem.Write(DatItem.SourceKey, source); + noMatchChildItem.Source = source; DatFile datFile = new Logiqx(datFile: null, useGame: false); datFile.AddItem(parentItem, statsOnly: false); @@ -117,21 +117,21 @@ namespace SabreTools.Metadata.DatFiles.Test parentItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); parentItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); parentItem.Machine = parentMachine; - parentItem.Write(DatItem.SourceKey, source); + parentItem.Source = source; DatItem matchChildItem = new Rom(); matchChildItem.SetName("match_child_rom"); matchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); matchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); matchChildItem.Machine = childMachine; - matchChildItem.Write(DatItem.SourceKey, source); + matchChildItem.Source = source; DatItem noMatchChildItem = new Rom(); noMatchChildItem.SetName("no_match_child_rom"); noMatchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); noMatchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "beefdead"); noMatchChildItem.Machine = childMachine; - noMatchChildItem.Write(DatItem.SourceKey, source); + noMatchChildItem.Source = source; DatFile datFile = new Logiqx(datFile: null, useGame: false); long biosMachineIndex = datFile.AddMachineDB(parentMachine); @@ -165,21 +165,21 @@ namespace SabreTools.Metadata.DatFiles.Test parentItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); parentItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); parentItem.Machine = parentMachine; - parentItem.Write(DatItem.SourceKey, source); + parentItem.Source = source; DatItem matchChildItem = new Rom(); matchChildItem.SetName("match_child_rom"); matchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); matchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); matchChildItem.Machine = childMachine; - matchChildItem.Write(DatItem.SourceKey, source); + matchChildItem.Source = source; DatItem noMatchChildItem = new Rom(); noMatchChildItem.SetName("no_match_child_rom"); noMatchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); noMatchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "beefdead"); noMatchChildItem.Machine = childMachine; - noMatchChildItem.Write(DatItem.SourceKey, source); + noMatchChildItem.Source = source; DatFile datFile = new Logiqx(datFile: null, useGame: false); long biosMachineIndex = datFile.AddMachineDB(parentMachine); @@ -217,21 +217,21 @@ namespace SabreTools.Metadata.DatFiles.Test parentItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); parentItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); parentItem.Machine = parentMachine; - parentItem.Write(DatItem.SourceKey, source); + parentItem.Source = source; DatItem matchChildItem = new Rom(); matchChildItem.SetName("match_child_rom"); matchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); matchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); matchChildItem.Machine = childMachine; - matchChildItem.Write(DatItem.SourceKey, source); + matchChildItem.Source = source; DatItem noMatchChildItem = new Rom(); noMatchChildItem.SetName("no_match_child_rom"); noMatchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); noMatchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "beefdead"); noMatchChildItem.Machine = childMachine; - noMatchChildItem.Write(DatItem.SourceKey, source); + noMatchChildItem.Source = source; DatFile datFile = new Logiqx(datFile: null, useGame: false); datFile.AddItem(parentItem, statsOnly: false); @@ -262,21 +262,21 @@ namespace SabreTools.Metadata.DatFiles.Test parentItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); parentItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); parentItem.Machine = parentMachine; - parentItem.Write(DatItem.SourceKey, source); + parentItem.Source = source; DatItem matchChildItem = new Rom(); matchChildItem.SetName("match_child_rom"); matchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); matchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); matchChildItem.Machine = childMachine; - matchChildItem.Write(DatItem.SourceKey, source); + matchChildItem.Source = source; DatItem noMatchChildItem = new Rom(); noMatchChildItem.SetName("no_match_child_rom"); noMatchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); noMatchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "beefdead"); noMatchChildItem.Machine = childMachine; - noMatchChildItem.Write(DatItem.SourceKey, source); + noMatchChildItem.Source = source; DatFile datFile = new Logiqx(datFile: null, useGame: false); long biosMachineIndex = datFile.AddMachineDB(parentMachine); @@ -318,29 +318,29 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem deviceItem = new Sample(); deviceItem.SetName("device_item"); deviceItem.Machine = deviceMachine; - deviceItem.Write(DatItem.SourceKey, source); + deviceItem.Source = source; DatItem slotOptionItem = new Sample(); slotOptionItem.SetName("slot_option_item"); slotOptionItem.Machine = slotOptionMachine; - slotOptionItem.Write(DatItem.SourceKey, source); + slotOptionItem.Source = source; DatItem datItem = new Rom(); datItem.SetName("rom"); datItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); datItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); datItem.Machine = itemMachine; - datItem.Write(DatItem.SourceKey, source); + datItem.Source = source; DatItem deviceRef = new DeviceRef(); deviceRef.SetName("device"); deviceRef.Machine = itemMachine; - deviceRef.Write(DatItem.SourceKey, source); + deviceRef.Source = source; DatItem slotOption = new SlotOption(); slotOption.SetName("slotoption"); slotOption.Machine = itemMachine; - slotOption.Write(DatItem.SourceKey, source); + slotOption.Source = source; DatFile datFile = new Logiqx(datFile: null, useGame: false); datFile.AddItem(deviceItem, statsOnly: false); @@ -430,21 +430,21 @@ namespace SabreTools.Metadata.DatFiles.Test parentItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); parentItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); parentItem.Machine = parentMachine; - parentItem.Write(DatItem.SourceKey, source); + parentItem.Source = source; DatItem matchChildItem = new Rom(); matchChildItem.SetName("match_child_rom"); matchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); matchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); matchChildItem.Machine = childMachine; - matchChildItem.Write(DatItem.SourceKey, source); + matchChildItem.Source = source; DatItem noMatchChildItem = new Rom(); noMatchChildItem.SetName("no_match_child_rom"); noMatchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); noMatchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "beefdead"); noMatchChildItem.Machine = childMachine; - noMatchChildItem.Write(DatItem.SourceKey, source); + noMatchChildItem.Source = source; DatFile datFile = new Logiqx(datFile: null, useGame: false); datFile.AddItem(parentItem, statsOnly: false); @@ -475,21 +475,21 @@ namespace SabreTools.Metadata.DatFiles.Test parentItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); parentItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); parentItem.Machine = parentMachine; - parentItem.Write(DatItem.SourceKey, source); + parentItem.Source = source; DatItem matchChildItem = new Rom(); matchChildItem.SetName("match_child_rom"); matchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); matchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); matchChildItem.Machine = childMachine; - matchChildItem.Write(DatItem.SourceKey, source); + matchChildItem.Source = source; DatItem noMatchChildItem = new Rom(); noMatchChildItem.SetName("no_match_child_rom"); noMatchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); noMatchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "beefdead"); noMatchChildItem.Machine = childMachine; - noMatchChildItem.Write(DatItem.SourceKey, source); + noMatchChildItem.Source = source; DatFile datFile = new Logiqx(datFile: null, useGame: false); long biosMachineIndex = datFile.AddMachineDB(parentMachine); @@ -524,11 +524,11 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem biosItem = new Rom(); biosItem.Machine = biosMachine; - biosItem.Write(DatItem.SourceKey, source); + biosItem.Source = source; DatItem deviceItem = new Rom(); deviceItem.Machine = deviceMachine; - deviceItem.Write(DatItem.SourceKey, source); + deviceItem.Source = source; DatFile datFile = new Logiqx(datFile: null, useGame: false); datFile.AddItem(biosItem, statsOnly: false); @@ -592,21 +592,21 @@ namespace SabreTools.Metadata.DatFiles.Test parentItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); parentItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); parentItem.Machine = parentMachine; - parentItem.Write(DatItem.SourceKey, source); + parentItem.Source = source; DatItem matchChildItem = new Rom(); matchChildItem.SetName("match_child_rom"); matchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); matchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); matchChildItem.Machine = childMachine; - matchChildItem.Write(DatItem.SourceKey, source); + matchChildItem.Source = source; DatItem noMatchChildItem = new Rom(); noMatchChildItem.SetName("no_match_child_rom"); noMatchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); noMatchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "beefdead"); noMatchChildItem.Machine = childMachine; - noMatchChildItem.Write(DatItem.SourceKey, source); + noMatchChildItem.Source = source; DatFile datFile = new Logiqx(datFile: null, useGame: false); datFile.AddItem(parentItem, statsOnly: false); @@ -642,21 +642,21 @@ namespace SabreTools.Metadata.DatFiles.Test parentItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); parentItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); parentItem.Machine = parentMachine; - parentItem.Write(DatItem.SourceKey, source); + parentItem.Source = source; DatItem matchChildItem = new Rom(); matchChildItem.SetName("match_child_rom"); matchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); matchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); matchChildItem.Machine = childMachine; - matchChildItem.Write(DatItem.SourceKey, source); + matchChildItem.Source = source; DatItem noMatchChildItem = new Rom(); noMatchChildItem.SetName("no_match_child_rom"); noMatchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); noMatchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "beefdead"); noMatchChildItem.Machine = childMachine; - noMatchChildItem.Write(DatItem.SourceKey, source); + noMatchChildItem.Source = source; DatFile datFile = new Logiqx(datFile: null, useGame: false); long biosMachineIndex = datFile.AddMachineDB(parentMachine); @@ -699,21 +699,21 @@ namespace SabreTools.Metadata.DatFiles.Test parentItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); parentItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); parentItem.Machine = parentMachine; - parentItem.Write(DatItem.SourceKey, source); + parentItem.Source = source; DatItem matchChildItem = new Rom(); matchChildItem.SetName("match_child_rom"); matchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); matchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); matchChildItem.Machine = childMachine; - matchChildItem.Write(DatItem.SourceKey, source); + matchChildItem.Source = source; DatItem noMatchChildItem = new Rom(); noMatchChildItem.SetName("no_match_child_rom"); noMatchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); noMatchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "beefdead"); noMatchChildItem.Machine = childMachine; - noMatchChildItem.Write(DatItem.SourceKey, source); + noMatchChildItem.Source = source; DatFile datFile = new Logiqx(datFile: null, useGame: false); datFile.AddItem(parentItem, statsOnly: false); @@ -748,21 +748,21 @@ namespace SabreTools.Metadata.DatFiles.Test parentItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); parentItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); parentItem.Machine = parentMachine; - parentItem.Write(DatItem.SourceKey, source); + parentItem.Source = source; DatItem matchChildItem = new Rom(); matchChildItem.SetName("match_child_rom"); matchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); matchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); matchChildItem.Machine = childMachine; - matchChildItem.Write(DatItem.SourceKey, source); + matchChildItem.Source = source; DatItem noMatchChildItem = new Rom(); noMatchChildItem.SetName("no_match_child_rom"); noMatchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); noMatchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "beefdead"); noMatchChildItem.Machine = childMachine; - noMatchChildItem.Write(DatItem.SourceKey, source); + noMatchChildItem.Source = source; DatFile datFile = new Logiqx(datFile: null, useGame: false); long biosMachineIndex = datFile.AddMachineDB(parentMachine); @@ -799,7 +799,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem datItem = new Rom(); datItem.Machine = machine; - datItem.Write(DatItem.SourceKey, source); + datItem.Source = source; DatFile datFile = new Logiqx(datFile: null, useGame: false); datFile.AddItem(datItem, statsOnly: false); diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.cs index 9b4f54b8..8f2b0805 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.cs @@ -36,7 +36,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem rom = new Rom(); rom.SetName("rom"); rom.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); - rom.Write(DatItem.SourceKey, source); + rom.Source = source; rom.Machine = machine; DatFile? datFile = new Logiqx(datFile: null, useGame: false); @@ -76,7 +76,7 @@ namespace SabreTools.Metadata.DatFiles.Test machine.Name = "game-1"; DatItem datItem = new Rom(); - datItem.Write(DatItem.SourceKey, source); + datItem.Source = source; datItem.Machine = machine; DatFile datFile = new Logiqx(datFile: null, useGame: false); @@ -1961,7 +1961,7 @@ namespace SabreTools.Metadata.DatFiles.Test romA.Write(Data.Models.Metadata.Rom.SizeKey, 12345); romA.Write(Data.Models.Metadata.Rom.CRCKey, "crc"); romA.Machine = (Machine)machine.Clone(); - romA.Write(DatItem.SourceKey, (Source)source.Clone()); + romA.Source = (Source)source.Clone(); List datItems = [romA]; @@ -1989,14 +1989,14 @@ namespace SabreTools.Metadata.DatFiles.Test romA.Write(Data.Models.Metadata.Rom.SizeKey, 12345); romA.Write(Data.Models.Metadata.Rom.CRCKey, "crc"); romA.Machine = (Machine)machine.Clone(); - romA.Write(DatItem.SourceKey, (Source)source.Clone()); + romA.Source = (Source)source.Clone(); Rom romB = new Rom(); romB.SetName("romB"); romB.Write(Data.Models.Metadata.Rom.SizeKey, 23456); romB.Write(Data.Models.Metadata.Rom.CRCKey, "crc2"); romB.Machine = (Machine)machine.Clone(); - romB.Write(DatItem.SourceKey, (Source)source.Clone()); + romB.Source = (Source)source.Clone(); List datItems = [romA, romB]; @@ -2031,14 +2031,14 @@ namespace SabreTools.Metadata.DatFiles.Test romA.Write(Data.Models.Metadata.Rom.SizeKey, 12345); romA.Write(Data.Models.Metadata.Rom.CRCKey, "crc"); romA.Machine = (Machine)machine.Clone(); - romA.Write(DatItem.SourceKey, (Source)source.Clone()); + romA.Source = (Source)source.Clone(); Rom romB = new Rom(); romB.SetName("rom"); romB.Write(Data.Models.Metadata.Rom.SizeKey, 12345); romB.Write(Data.Models.Metadata.Rom.CRCKey, "crc"); romB.Machine = (Machine)machine.Clone(); - romB.Write(DatItem.SourceKey, (Source)source.Clone()); + romB.Source = (Source)source.Clone(); List datItems = [romA, romB]; @@ -2066,14 +2066,14 @@ namespace SabreTools.Metadata.DatFiles.Test romA.Write(Data.Models.Metadata.Rom.SizeKey, 12345); romA.Write(Data.Models.Metadata.Rom.CRCKey, "crc"); romA.Machine = (Machine)machine.Clone(); - romA.Write(DatItem.SourceKey, (Source)source.Clone()); + romA.Source = (Source)source.Clone(); Rom romB = new Rom(); romB.SetName("rom"); romB.Write(Data.Models.Metadata.Rom.SizeKey, 23456); romB.Write(Data.Models.Metadata.Rom.CRCKey, "crc2"); romB.Machine = (Machine)machine.Clone(); - romB.Write(DatItem.SourceKey, (Source)source.Clone()); + romB.Source = (Source)source.Clone(); List datItems = [romA, romB]; @@ -2123,7 +2123,7 @@ namespace SabreTools.Metadata.DatFiles.Test romA.Write(Data.Models.Metadata.Rom.SizeKey, 12345); romA.Write(Data.Models.Metadata.Rom.CRCKey, "crc"); romA.Machine = (Machine)machine.Clone(); - romA.Write(DatItem.SourceKey, (Source)source.Clone()); + romA.Source = (Source)source.Clone(); List> mappings = [ @@ -2153,14 +2153,14 @@ namespace SabreTools.Metadata.DatFiles.Test romA.Write(Data.Models.Metadata.Rom.SizeKey, 12345); romA.Write(Data.Models.Metadata.Rom.CRCKey, "crc"); romA.Machine = (Machine)machine.Clone(); - romA.Write(DatItem.SourceKey, (Source)source.Clone()); + romA.Source = (Source)source.Clone(); Rom romB = new Rom(); romB.SetName("romB"); romB.Write(Data.Models.Metadata.Rom.SizeKey, 23456); romB.Write(Data.Models.Metadata.Rom.CRCKey, "crc2"); romB.Machine = (Machine)machine.Clone(); - romB.Write(DatItem.SourceKey, (Source)source.Clone()); + romB.Source = (Source)source.Clone(); List> mappings = [ @@ -2237,14 +2237,14 @@ namespace SabreTools.Metadata.DatFiles.Test romA.Write(Data.Models.Metadata.Rom.SizeKey, 12345); romA.Write(Data.Models.Metadata.Rom.CRCKey, "crc"); romA.Machine = (Machine)machine.Clone(); - romA.Write(DatItem.SourceKey, (Source)source.Clone()); + romA.Source = (Source)source.Clone(); Rom romB = new Rom(); romB.SetName("rom"); romB.Write(Data.Models.Metadata.Rom.SizeKey, 23456); romB.Write(Data.Models.Metadata.Rom.CRCKey, "crc2"); romB.Machine = (Machine)machine.Clone(); - romB.Write(DatItem.SourceKey, (Source)source.Clone()); + romB.Source = (Source)source.Clone(); List> mappings = [ diff --git a/SabreTools.Metadata.DatFiles.Test/ItemDictionaryTests.cs b/SabreTools.Metadata.DatFiles.Test/ItemDictionaryTests.cs index 95c8d893..3530f4ce 100644 --- a/SabreTools.Metadata.DatFiles.Test/ItemDictionaryTests.cs +++ b/SabreTools.Metadata.DatFiles.Test/ItemDictionaryTests.cs @@ -19,7 +19,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem disk = new Disk(); disk.SetName("item"); disk.Write(Data.Models.Metadata.Disk.SHA1Key, "deadbeef"); - disk.Write(DatItem.SourceKey, source); + disk.Source = source; disk.Machine = machine; var dict = new ItemDictionary(); @@ -39,7 +39,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem disk = new Disk(); disk.SetName("item"); - disk.Write(DatItem.SourceKey, source); + disk.Source = source; disk.Machine = machine; var dict = new ItemDictionary(); @@ -60,7 +60,7 @@ namespace SabreTools.Metadata.DatFiles.Test var file = new File(); file.SetName("item"); file.SHA1 = "deadbeef"; - file.Write(DatItem.SourceKey, source); + file.Source = source; file.Machine = machine; var dict = new ItemDictionary(); @@ -79,7 +79,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem file = new File(); file.SetName("item"); - file.Write(DatItem.SourceKey, source); + file.Source = source; file.Machine = machine; var dict = new ItemDictionary(); @@ -99,7 +99,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem media = new Media(); media.SetName("item"); media.Write(Data.Models.Metadata.Media.SHA1Key, "deadbeef"); - media.Write(DatItem.SourceKey, source); + media.Source = source; media.Machine = machine; var dict = new ItemDictionary(); @@ -118,7 +118,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem media = new Media(); media.SetName("item"); - media.Write(DatItem.SourceKey, source); + media.Source = source; media.Machine = machine; var dict = new ItemDictionary(); @@ -139,7 +139,7 @@ namespace SabreTools.Metadata.DatFiles.Test rom.SetName("item"); rom.Write(Data.Models.Metadata.Rom.SizeKey, 12345); rom.Write(Data.Models.Metadata.Rom.SHA1Key, "deadbeef"); - rom.Write(DatItem.SourceKey, source); + rom.Source = source; rom.Machine = machine; var dict = new ItemDictionary(); @@ -162,7 +162,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem rom = new Rom(); rom.SetName("item"); rom.Write(Data.Models.Metadata.Rom.SizeKey, 12345); - rom.Write(DatItem.SourceKey, source); + rom.Source = source; rom.Machine = machine; var dict = new ItemDictionary(); @@ -185,7 +185,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem rom = new Rom(); rom.SetName("item"); rom.Write(Data.Models.Metadata.Rom.SHA1Key, "deadbeef"); - rom.Write(DatItem.SourceKey, source); + rom.Source = source; rom.Machine = machine; var dict = new ItemDictionary(); @@ -207,7 +207,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem rom = new Rom(); rom.SetName("item"); - rom.Write(DatItem.SourceKey, source); + rom.Source = source; rom.Machine = machine; var dict = new ItemDictionary(); @@ -229,7 +229,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem item = new Rom(); item.SetName("item"); - item.Write(DatItem.SourceKey, source); + item.Source = source; item.Machine = machine; var dict = new ItemDictionary(); @@ -246,7 +246,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem item = new Rom(); item.SetName("item"); - item.Write(DatItem.SourceKey, source); + item.Source = source; item.Machine = machine; var dict = new ItemDictionary(); @@ -305,7 +305,7 @@ namespace SabreTools.Metadata.DatFiles.Test machine.Name = "machine"; DatItem item = new Rom(); - item.Write(DatItem.SourceKey, source); + item.Source = source; item.Machine = machine; var dict = new ItemDictionary(); @@ -325,7 +325,7 @@ namespace SabreTools.Metadata.DatFiles.Test machine.Name = "machine"; DatItem item = new Rom(); - item.Write(DatItem.SourceKey, source); + item.Source = source; item.Machine = machine; var dict = new ItemDictionary(); @@ -346,7 +346,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem item = new Rom(); item.Write(DatItem.RemoveKey, true); - item.Write(DatItem.SourceKey, source); + item.Source = source; item.Machine = machine; var dict = new ItemDictionary(); @@ -367,7 +367,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem item = new Rom(); item.Write(DatItem.RemoveKey, true); - item.Write(DatItem.SourceKey, source); + item.Source = source; item.Machine = machine; var dict = new ItemDictionary(); @@ -387,7 +387,7 @@ namespace SabreTools.Metadata.DatFiles.Test machine.Name = "machine"; DatItem item = new Rom(); - item.Write(DatItem.SourceKey, source); + item.Source = source; item.Machine = machine; var dict = new ItemDictionary(); @@ -577,13 +577,13 @@ namespace SabreTools.Metadata.DatFiles.Test var romA = new Rom(); romA.Name = "same-name"; romA.Write(Data.Models.Metadata.Rom.CRCKey, "BEEFDEAD"); - romA.Write(DatItem.SourceKey, new Source(0)); + romA.Source = new Source(0); romA.CopyMachineInformation(machineA); var romB = new Rom(); romB.Name = "same-name"; romB.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); - romB.Write(DatItem.SourceKey, new Source(1)); + romB.Source = new Source(1); romB.CopyMachineInformation(machineB); var actual = dict.GetDuplicateStatus(romA, romB); @@ -604,13 +604,13 @@ namespace SabreTools.Metadata.DatFiles.Test var romA = new Rom(); romA.Name = "same-name"; romA.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); - romA.Write(DatItem.SourceKey, new Source(0)); + romA.Source = new Source(0); romA.CopyMachineInformation(machineA); var romB = new Rom(); romB.Name = "same-name"; romB.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); - romB.Write(DatItem.SourceKey, new Source(1)); + romB.Source = new Source(1); romB.CopyMachineInformation(machineB); var actual = dict.GetDuplicateStatus(romA, romB); @@ -631,13 +631,13 @@ namespace SabreTools.Metadata.DatFiles.Test var romA = new Rom(); romA.Name = "same-name"; romA.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); - romA.Write(DatItem.SourceKey, new Source(0)); + romA.Source = new Source(0); romA.CopyMachineInformation(machineA); var romB = new Rom(); romB.Name = "same-name"; romB.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); - romB.Write(DatItem.SourceKey, new Source(1)); + romB.Source = new Source(1); romB.CopyMachineInformation(machineB); var actual = dict.GetDuplicateStatus(romA, romB); @@ -658,13 +658,13 @@ namespace SabreTools.Metadata.DatFiles.Test var romA = new Rom(); romA.Name = "same-name"; romA.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); - romA.Write(DatItem.SourceKey, new Source(0)); + romA.Source = new Source(0); romA.CopyMachineInformation(machineA); var romB = new Rom(); romB.Name = "same-name"; romB.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); - romB.Write(DatItem.SourceKey, new Source(0)); + romB.Source = new Source(0); romB.CopyMachineInformation(machineB); var actual = dict.GetDuplicateStatus(romA, romB); @@ -685,13 +685,13 @@ namespace SabreTools.Metadata.DatFiles.Test var romA = new Rom(); romA.Name = "same-name"; romA.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); - romA.Write(DatItem.SourceKey, new Source(0)); + romA.Source = new Source(0); romA.CopyMachineInformation(machineA); var romB = new Rom(); romB.Name = "same-name"; romB.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); - romB.Write(DatItem.SourceKey, new Source(0)); + romB.Source = new Source(0); romB.CopyMachineInformation(machineB); var actual = dict.GetDuplicateStatus(romA, romB); @@ -796,7 +796,7 @@ namespace SabreTools.Metadata.DatFiles.Test item.SetName("rom"); item.Write(Data.Models.Metadata.Rom.SizeKey, 12345); item.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); - item.Write(DatItem.SourceKey, source); + item.Source = source; item.Machine = machine; var dict = new ItemDictionary(); diff --git a/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs b/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs index d5f69517..ba404243 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs @@ -480,7 +480,7 @@ namespace SabreTools.Metadata.DatFiles Array.ForEach(filtered, item => { var datItem = new Rom(item, machine, source); - datItem.Write(DatItem.SourceKey, source); + datItem.Source = source; datItem.CopyMachineInformation(machine); AddItem(datItem, statsOnly); @@ -692,7 +692,7 @@ namespace SabreTools.Metadata.DatFiles var partFeatureItem = new PartFeature(partFeature); partFeatureItem.Write(DipSwitch.PartKey, partItem); - partFeatureItem.Write(DatItem.SourceKey, source); + partFeatureItem.Source = source; partFeatureItem.CopyMachineInformation(machine); AddItem(partFeatureItem, statsOnly); diff --git a/SabreTools.Metadata.DatFiles/DatFile.cs b/SabreTools.Metadata.DatFiles/DatFile.cs index 4d887946..1641df98 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.cs @@ -1169,8 +1169,8 @@ namespace SabreTools.Metadata.DatFiles // Compare on source if renaming if (!norename) { - int xSourceIndex = x.Read(DatItem.SourceKey)?.Index ?? 0; - int ySourceIndex = y.Read(DatItem.SourceKey)?.Index ?? 0; + int xSourceIndex = x.Source?.Index ?? 0; + int ySourceIndex = y.Source?.Index ?? 0; if (xSourceIndex != ySourceIndex) return xSourceIndex - ySourceIndex; } diff --git a/SabreTools.Metadata.DatFiles/Formats/SabreJSON.cs b/SabreTools.Metadata.DatFiles/Formats/SabreJSON.cs index e39f9fa2..46f57435 100644 --- a/SabreTools.Metadata.DatFiles/Formats/SabreJSON.cs +++ b/SabreTools.Metadata.DatFiles/Formats/SabreJSON.cs @@ -406,7 +406,7 @@ namespace SabreTools.Metadata.DatFiles.Formats return; datItem.CopyMachineInformation(machine); - datItem.Write(DatItem.SourceKey, source); + datItem.Source = source; AddItem(datItem, statsOnly); AddItemDB(datItem, machineIndex, sourceIndex, statsOnly); } diff --git a/SabreTools.Metadata.DatFiles/Formats/SabreXML.cs b/SabreTools.Metadata.DatFiles/Formats/SabreXML.cs index d4215183..19375b9f 100644 --- a/SabreTools.Metadata.DatFiles/Formats/SabreXML.cs +++ b/SabreTools.Metadata.DatFiles/Formats/SabreXML.cs @@ -223,7 +223,7 @@ namespace SabreTools.Metadata.DatFiles.Formats } item.CopyMachineInformation(machine); - item.Write(DatItem.SourceKey, source); + item.Source = source; AddItem(item, statsOnly); // AddItemDB(item, machineIndex, sourceIndex, statsOnly); } diff --git a/SabreTools.Metadata.DatFiles/ItemDictionary.cs b/SabreTools.Metadata.DatFiles/ItemDictionary.cs index 17756f62..9a22b2e0 100644 --- a/SabreTools.Metadata.DatFiles/ItemDictionary.cs +++ b/SabreTools.Metadata.DatFiles/ItemDictionary.cs @@ -433,8 +433,8 @@ namespace SabreTools.Metadata.DatFiles return output; // Get the sources for comparison - var selfSource = self.Read(DatItem.SourceKey); - var lastSource = last.Read(DatItem.SourceKey); + var selfSource = self.Source; + var lastSource = last.Source; // Get the machines for comparison var selfMachine = self.Machine; @@ -542,8 +542,8 @@ namespace SabreTools.Metadata.DatFiles savedItem.Write(DatItem.DupeTypeKey, dupetype); // Get the sources associated with the items - var savedSource = savedItem.Read(DatItem.SourceKey); - var itemSource = datItem.Read(DatItem.SourceKey); + var savedSource = savedItem.Source; + var itemSource = datItem.Source; // Get the machines associated with the items var savedMachine = savedItem.Machine; @@ -552,7 +552,7 @@ namespace SabreTools.Metadata.DatFiles // If the current source has a lower ID than the saved, use the saved source if (itemSource?.Index < savedSource?.Index) { - datItem.Write(DatItem.SourceKey, savedSource.Clone() as Source); + datItem.Source = savedSource.Clone() as Source; savedItem.CopyMachineInformation(datItem); savedItem.SetName(datItem.GetName()); } @@ -733,7 +733,7 @@ namespace SabreTools.Metadata.DatFiles // Get the machine and source var machine = datItem.Machine; - var source = datItem.Read(DatItem.SourceKey); + var source = datItem.Source; // Get the bucket key return datItem.GetKey(bucketBy, machine, source, lower, norename); @@ -772,7 +772,7 @@ namespace SabreTools.Metadata.DatFiles // Get the machine and source var machine = item.Machine; - var source = item.Read(DatItem.SourceKey); + var source = item.Source; // We want to get the key most appropriate for the given sorting type string newkey = item.GetKey(bucketBy, machine, source, lower, norename); @@ -845,8 +845,8 @@ namespace SabreTools.Metadata.DatFiles // Compare on source if renaming if (!norename) { - int xSourceIndex = x.Read(DatItem.SourceKey)?.Index ?? 0; - int ySourceIndex = y.Read(DatItem.SourceKey)?.Index ?? 0; + int xSourceIndex = x.Source?.Index ?? 0; + int ySourceIndex = y.Source?.Index ?? 0; if (xSourceIndex != ySourceIndex) return xSourceIndex - ySourceIndex; } diff --git a/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs b/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs index 4f5c1f4c..7f7f282b 100644 --- a/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs +++ b/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs @@ -34,7 +34,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test disk.Machine = machine; disk.Write(Disk.PartKey, part); disk.Write(DatItem.RemoveKey, (bool?)false); - disk.Write(DatItem.SourceKey, source); + disk.Source = source; Rom actual = disk.ConvertToRom(); @@ -61,7 +61,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Assert.NotNull(actualPart); Assert.Equal("name", actualPart.Name); - Source? actualSource = actual.Read(DatItem.SourceKey); + Source? actualSource = actual.Source; Assert.NotNull(actualSource); Assert.Equal(0, actualSource.Index); Assert.Equal("XXXXXX", actualSource.Name); diff --git a/SabreTools.Metadata.DatItems.Test/Formats/FileTests.cs b/SabreTools.Metadata.DatItems.Test/Formats/FileTests.cs index 8d2d4d41..ea8e7f85 100644 --- a/SabreTools.Metadata.DatItems.Test/Formats/FileTests.cs +++ b/SabreTools.Metadata.DatItems.Test/Formats/FileTests.cs @@ -29,9 +29,9 @@ namespace SabreTools.Metadata.DatItems.Formats.Test file.Write(DatItem.DupeTypeKey, DupeType.All | DupeType.External); file.Machine = machine; file.Write(DatItem.RemoveKey, (bool?)false); - file.Write(DatItem.SourceKey, source); + file.Source = source; file.Machine = machine; - file.Write(DatItem.SourceKey, source); + file.Source = source; Rom actual = file.ConvertToRom(); @@ -49,7 +49,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Assert.Equal(false, actual.ReadBool(DatItem.RemoveKey)); - Source? actualSource = actual.Read(DatItem.SourceKey); + Source? actualSource = actual.Source; Assert.NotNull(actualSource); Assert.Equal(0, actualSource.Index); Assert.Equal("XXXXXX", actualSource.Name); diff --git a/SabreTools.Metadata.DatItems.Test/Formats/MediaTests.cs b/SabreTools.Metadata.DatItems.Test/Formats/MediaTests.cs index 5d7f127c..9584c5ed 100644 --- a/SabreTools.Metadata.DatItems.Test/Formats/MediaTests.cs +++ b/SabreTools.Metadata.DatItems.Test/Formats/MediaTests.cs @@ -24,7 +24,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test media.Write(DatItem.DupeTypeKey, DupeType.All | DupeType.External); media.Machine = machine; media.Write(DatItem.RemoveKey, (bool?)false); - media.Write(DatItem.SourceKey, source); + media.Source = source; Rom actual = media.ConvertToRom(); @@ -41,7 +41,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Assert.Equal(false, actual.ReadBool(DatItem.RemoveKey)); - Source? actualSource = actual.Read(DatItem.SourceKey); + Source? actualSource = actual.Source; Assert.NotNull(actualSource); Assert.Equal(0, actualSource.Index); Assert.Equal("XXXXXX", actualSource.Name); diff --git a/SabreTools.Metadata.DatItems/DatItem.cs b/SabreTools.Metadata.DatItems/DatItem.cs index bb1b43b2..0cd46be7 100644 --- a/SabreTools.Metadata.DatItems/DatItem.cs +++ b/SabreTools.Metadata.DatItems/DatItem.cs @@ -68,11 +68,6 @@ namespace SabreTools.Metadata.DatItems /// public const string RemoveKey = "REMOVE"; - /// - /// Source information - /// - public const string SourceKey = "SOURCE"; - #endregion #region Fields @@ -87,6 +82,11 @@ namespace SabreTools.Metadata.DatItems /// public Machine? Machine { get; set; } + /// + /// Source information + /// + public Source? Source { get; set; } + #endregion #region Logging @@ -199,12 +199,6 @@ namespace SabreTools.Metadata.DatItems if (other is not DatItem otherItem) return false; - // Compare machines - if ((Machine is null) ^ (otherItem.Machine is null)) - return false; - if (Machine is not null && !Machine.Equals(otherItem.Machine)) - return false; - // Compare internal models return _internal.Equals(otherItem); } @@ -220,18 +214,8 @@ namespace SabreTools.Metadata.DatItems if (other is null) return false; - // Get the types for comparison - Data.Models.Metadata.ItemType selfType = ItemType; - Data.Models.Metadata.ItemType otherType = other.ItemType; - // If we don't have a matched type, return false - if (selfType != otherType) - return false; - - // Compare machines - if ((Machine is null) ^ (other.Machine is null)) - return false; - if (Machine is not null && !Machine.Equals(other.Machine)) + if (ItemType != other.ItemType) return false; // Compare the internal models diff --git a/SabreTools.Metadata.DatItems/Formats/Adjuster.cs b/SabreTools.Metadata.DatItems/Formats/Adjuster.cs index d6b81041..52cf9b9c 100644 --- a/SabreTools.Metadata.DatItems/Formats/Adjuster.cs +++ b/SabreTools.Metadata.DatItems/Formats/Adjuster.cs @@ -50,7 +50,7 @@ namespace SabreTools.Metadata.DatItems.Formats public Adjuster(Data.Models.Metadata.Adjuster item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/Analog.cs b/SabreTools.Metadata.DatItems/Formats/Analog.cs index 7707b5a0..22fa8417 100644 --- a/SabreTools.Metadata.DatItems/Formats/Analog.cs +++ b/SabreTools.Metadata.DatItems/Formats/Analog.cs @@ -28,7 +28,7 @@ namespace SabreTools.Metadata.DatItems.Formats public Analog(Data.Models.Metadata.Analog item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/Archive.cs b/SabreTools.Metadata.DatItems/Formats/Archive.cs index ed358eb9..fefa762a 100644 --- a/SabreTools.Metadata.DatItems/Formats/Archive.cs +++ b/SabreTools.Metadata.DatItems/Formats/Archive.cs @@ -28,7 +28,7 @@ namespace SabreTools.Metadata.DatItems.Formats public Archive(Data.Models.Metadata.Archive item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/BiosSet.cs b/SabreTools.Metadata.DatItems/Formats/BiosSet.cs index 12403a17..dea4e0a7 100644 --- a/SabreTools.Metadata.DatItems/Formats/BiosSet.cs +++ b/SabreTools.Metadata.DatItems/Formats/BiosSet.cs @@ -40,7 +40,7 @@ namespace SabreTools.Metadata.DatItems.Formats public BiosSet(Data.Models.Metadata.BiosSet item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/Blank.cs b/SabreTools.Metadata.DatItems/Formats/Blank.cs index a386f590..c9f0dd8c 100644 --- a/SabreTools.Metadata.DatItems/Formats/Blank.cs +++ b/SabreTools.Metadata.DatItems/Formats/Blank.cs @@ -18,7 +18,7 @@ namespace SabreTools.Metadata.DatItems.Formats public Blank(Data.Models.Metadata.Blank item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/Chip.cs b/SabreTools.Metadata.DatItems/Formats/Chip.cs index 7b3a26cf..122ddb41 100644 --- a/SabreTools.Metadata.DatItems/Formats/Chip.cs +++ b/SabreTools.Metadata.DatItems/Formats/Chip.cs @@ -46,7 +46,7 @@ namespace SabreTools.Metadata.DatItems.Formats public Chip(Data.Models.Metadata.Chip item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/Condition.cs b/SabreTools.Metadata.DatItems/Formats/Condition.cs index f730e526..e5eacb91 100644 --- a/SabreTools.Metadata.DatItems/Formats/Condition.cs +++ b/SabreTools.Metadata.DatItems/Formats/Condition.cs @@ -46,7 +46,7 @@ namespace SabreTools.Metadata.DatItems.Formats public Condition(Data.Models.Metadata.Condition item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs b/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs index 4a75faff..5f1687bc 100644 --- a/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs +++ b/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs @@ -34,7 +34,7 @@ namespace SabreTools.Metadata.DatItems.Formats public ConfLocation(Data.Models.Metadata.ConfLocation item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs b/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs index cb15271b..550f7484 100644 --- a/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs +++ b/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs @@ -56,7 +56,7 @@ namespace SabreTools.Metadata.DatItems.Formats public ConfSetting(Data.Models.Metadata.ConfSetting item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/Configuration.cs b/SabreTools.Metadata.DatItems/Formats/Configuration.cs index 66d28ed9..845b6b91 100644 --- a/SabreTools.Metadata.DatItems/Formats/Configuration.cs +++ b/SabreTools.Metadata.DatItems/Formats/Configuration.cs @@ -91,7 +91,7 @@ namespace SabreTools.Metadata.DatItems.Formats public Configuration(Data.Models.Metadata.Configuration item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/Control.cs b/SabreTools.Metadata.DatItems/Formats/Control.cs index 2e8128c2..29b349d0 100644 --- a/SabreTools.Metadata.DatItems/Formats/Control.cs +++ b/SabreTools.Metadata.DatItems/Formats/Control.cs @@ -64,7 +64,7 @@ namespace SabreTools.Metadata.DatItems.Formats public Control(Data.Models.Metadata.Control item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/DataArea.cs b/SabreTools.Metadata.DatItems/Formats/DataArea.cs index bca04814..f1305250 100644 --- a/SabreTools.Metadata.DatItems/Formats/DataArea.cs +++ b/SabreTools.Metadata.DatItems/Formats/DataArea.cs @@ -45,7 +45,7 @@ namespace SabreTools.Metadata.DatItems.Formats public DataArea(Data.Models.Metadata.DataArea item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/Device.cs b/SabreTools.Metadata.DatItems/Formats/Device.cs index 726b54b1..c4f2d9c7 100644 --- a/SabreTools.Metadata.DatItems/Formats/Device.cs +++ b/SabreTools.Metadata.DatItems/Formats/Device.cs @@ -86,7 +86,7 @@ namespace SabreTools.Metadata.DatItems.Formats public Device(Data.Models.Metadata.Device item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs b/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs index eef43874..c8f286cd 100644 --- a/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs +++ b/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs @@ -28,7 +28,7 @@ namespace SabreTools.Metadata.DatItems.Formats public DeviceRef(Data.Models.Metadata.DeviceRef item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/DipLocation.cs b/SabreTools.Metadata.DatItems/Formats/DipLocation.cs index f56cff1b..4ab2c47f 100644 --- a/SabreTools.Metadata.DatItems/Formats/DipLocation.cs +++ b/SabreTools.Metadata.DatItems/Formats/DipLocation.cs @@ -34,7 +34,7 @@ namespace SabreTools.Metadata.DatItems.Formats public DipLocation(Data.Models.Metadata.DipLocation item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs b/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs index 1cc7b99e..36f02b7f 100644 --- a/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs +++ b/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs @@ -119,7 +119,7 @@ namespace SabreTools.Metadata.DatItems.Formats public DipSwitch(Data.Models.Metadata.DipSwitch item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/DipValue.cs b/SabreTools.Metadata.DatItems/Formats/DipValue.cs index b22e7cad..7f22f873 100644 --- a/SabreTools.Metadata.DatItems/Formats/DipValue.cs +++ b/SabreTools.Metadata.DatItems/Formats/DipValue.cs @@ -56,7 +56,7 @@ namespace SabreTools.Metadata.DatItems.Formats public DipValue(Data.Models.Metadata.DipValue item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/Disk.cs b/SabreTools.Metadata.DatItems/Formats/Disk.cs index 5599c355..6b1d9da9 100644 --- a/SabreTools.Metadata.DatItems/Formats/Disk.cs +++ b/SabreTools.Metadata.DatItems/Formats/Disk.cs @@ -100,7 +100,7 @@ namespace SabreTools.Metadata.DatItems.Formats public Disk(Data.Models.Metadata.Disk item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } @@ -133,7 +133,7 @@ namespace SabreTools.Metadata.DatItems.Formats rom.Machine = Machine?.Clone() as Machine; rom.Write(Rom.PartKey, Read(PartKey)?.Clone() as Part); rom.Write(RemoveKey, ReadBool(RemoveKey)); - rom.Write(SourceKey, Read(SourceKey)?.Clone() as Source); + rom.Source = Source?.Clone() as Source; return rom; } diff --git a/SabreTools.Metadata.DatItems/Formats/DiskArea.cs b/SabreTools.Metadata.DatItems/Formats/DiskArea.cs index e804e0f7..c20895d9 100644 --- a/SabreTools.Metadata.DatItems/Formats/DiskArea.cs +++ b/SabreTools.Metadata.DatItems/Formats/DiskArea.cs @@ -29,7 +29,7 @@ namespace SabreTools.Metadata.DatItems.Formats public DiskArea(Data.Models.Metadata.DiskArea item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/Display.cs b/SabreTools.Metadata.DatItems/Formats/Display.cs index de1e3f89..f85e4b1f 100644 --- a/SabreTools.Metadata.DatItems/Formats/Display.cs +++ b/SabreTools.Metadata.DatItems/Formats/Display.cs @@ -87,7 +87,7 @@ namespace SabreTools.Metadata.DatItems.Formats public Display(Data.Models.Metadata.Display item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } @@ -138,7 +138,7 @@ namespace SabreTools.Metadata.DatItems.Formats public Display(Data.Models.Metadata.Video item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/Driver.cs b/SabreTools.Metadata.DatItems/Formats/Driver.cs index 9c862f65..18005767 100644 --- a/SabreTools.Metadata.DatItems/Formats/Driver.cs +++ b/SabreTools.Metadata.DatItems/Formats/Driver.cs @@ -94,7 +94,7 @@ namespace SabreTools.Metadata.DatItems.Formats public Driver(Data.Models.Metadata.Driver item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/Extension.cs b/SabreTools.Metadata.DatItems/Formats/Extension.cs index a66c0b4b..29e8511b 100644 --- a/SabreTools.Metadata.DatItems/Formats/Extension.cs +++ b/SabreTools.Metadata.DatItems/Formats/Extension.cs @@ -28,7 +28,7 @@ namespace SabreTools.Metadata.DatItems.Formats public Extension(Data.Models.Metadata.Extension item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/Feature.cs b/SabreTools.Metadata.DatItems/Formats/Feature.cs index a7e43bfd..cf3ed219 100644 --- a/SabreTools.Metadata.DatItems/Formats/Feature.cs +++ b/SabreTools.Metadata.DatItems/Formats/Feature.cs @@ -52,7 +52,7 @@ namespace SabreTools.Metadata.DatItems.Formats public Feature(Data.Models.Metadata.Feature item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/File.cs b/SabreTools.Metadata.DatItems/Formats/File.cs index 9ea0049e..0d2b3f77 100644 --- a/SabreTools.Metadata.DatItems/Formats/File.cs +++ b/SabreTools.Metadata.DatItems/Formats/File.cs @@ -123,7 +123,7 @@ namespace SabreTools.Metadata.DatItems.Formats file.Write(DupeTypeKey, Read(DupeTypeKey)); file.Machine = Machine!.Clone() as Machine ?? new Machine(); file.Write(RemoveKey, ReadBool(RemoveKey)); - file.Write(SourceKey, Read(SourceKey)); + file.Source = Source?.Clone() as Source; return file; } @@ -146,7 +146,7 @@ namespace SabreTools.Metadata.DatItems.Formats rom.Write(DupeTypeKey, Read(DupeTypeKey)); rom.Machine = Machine?.Clone() as Machine; rom.Write(RemoveKey, ReadBool(RemoveKey)); - rom.Write(SourceKey, Read(SourceKey)); + rom.Source = Source?.Clone() as Source; return rom; } diff --git a/SabreTools.Metadata.DatItems/Formats/Info.cs b/SabreTools.Metadata.DatItems/Formats/Info.cs index 64546651..1029e8d7 100644 --- a/SabreTools.Metadata.DatItems/Formats/Info.cs +++ b/SabreTools.Metadata.DatItems/Formats/Info.cs @@ -34,7 +34,7 @@ namespace SabreTools.Metadata.DatItems.Formats public Info(Data.Models.Metadata.Info item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/Input.cs b/SabreTools.Metadata.DatItems/Formats/Input.cs index 662d90f8..15ad3e0d 100644 --- a/SabreTools.Metadata.DatItems/Formats/Input.cs +++ b/SabreTools.Metadata.DatItems/Formats/Input.cs @@ -67,7 +67,7 @@ namespace SabreTools.Metadata.DatItems.Formats public Input(Data.Models.Metadata.Input item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/Instance.cs b/SabreTools.Metadata.DatItems/Formats/Instance.cs index 33798be1..b6d48d6b 100644 --- a/SabreTools.Metadata.DatItems/Formats/Instance.cs +++ b/SabreTools.Metadata.DatItems/Formats/Instance.cs @@ -34,7 +34,7 @@ namespace SabreTools.Metadata.DatItems.Formats public Instance(Data.Models.Metadata.Instance item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/Media.cs b/SabreTools.Metadata.DatItems/Formats/Media.cs index c10c4852..d2cc9ac3 100644 --- a/SabreTools.Metadata.DatItems/Formats/Media.cs +++ b/SabreTools.Metadata.DatItems/Formats/Media.cs @@ -48,7 +48,7 @@ namespace SabreTools.Metadata.DatItems.Formats public Media(Data.Models.Metadata.Media item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } @@ -70,7 +70,7 @@ namespace SabreTools.Metadata.DatItems.Formats rom.Write(DupeTypeKey, Read(DupeTypeKey)); rom.Machine = Machine?.Clone() as Machine; rom.Write(RemoveKey, ReadBool(RemoveKey)); - rom.Write(SourceKey, Read(SourceKey)); + rom.Source = Source?.Clone() as Source; return rom; } diff --git a/SabreTools.Metadata.DatItems/Formats/Part.cs b/SabreTools.Metadata.DatItems/Formats/Part.cs index 8474612d..ac9fedc7 100644 --- a/SabreTools.Metadata.DatItems/Formats/Part.cs +++ b/SabreTools.Metadata.DatItems/Formats/Part.cs @@ -45,7 +45,7 @@ namespace SabreTools.Metadata.DatItems.Formats public Part(Data.Models.Metadata.Part item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/PartFeature.cs b/SabreTools.Metadata.DatItems/Formats/PartFeature.cs index 8af708d3..edf85427 100644 --- a/SabreTools.Metadata.DatItems/Formats/PartFeature.cs +++ b/SabreTools.Metadata.DatItems/Formats/PartFeature.cs @@ -65,7 +65,7 @@ namespace SabreTools.Metadata.DatItems.Formats public PartFeature(Data.Models.Metadata.Feature item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/Port.cs b/SabreTools.Metadata.DatItems/Formats/Port.cs index fcbe2fde..fbc8da0a 100644 --- a/SabreTools.Metadata.DatItems/Formats/Port.cs +++ b/SabreTools.Metadata.DatItems/Formats/Port.cs @@ -48,7 +48,7 @@ namespace SabreTools.Metadata.DatItems.Formats public Port(Data.Models.Metadata.Port item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/RamOption.cs b/SabreTools.Metadata.DatItems/Formats/RamOption.cs index a0e8c761..a7334869 100644 --- a/SabreTools.Metadata.DatItems/Formats/RamOption.cs +++ b/SabreTools.Metadata.DatItems/Formats/RamOption.cs @@ -40,7 +40,7 @@ namespace SabreTools.Metadata.DatItems.Formats public RamOption(Data.Models.Metadata.RamOption item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/Release.cs b/SabreTools.Metadata.DatItems/Formats/Release.cs index 40ed9d3f..243badab 100644 --- a/SabreTools.Metadata.DatItems/Formats/Release.cs +++ b/SabreTools.Metadata.DatItems/Formats/Release.cs @@ -34,7 +34,7 @@ namespace SabreTools.Metadata.DatItems.Formats public Release(Data.Models.Metadata.Release item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs b/SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs index fb8da182..5b639242 100644 --- a/SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs +++ b/SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs @@ -18,7 +18,7 @@ namespace SabreTools.Metadata.DatItems.Formats public ReleaseDetails(Data.Models.Metadata.ReleaseDetails item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/Rom.cs b/SabreTools.Metadata.DatItems/Formats/Rom.cs index 3c15015f..278f679c 100644 --- a/SabreTools.Metadata.DatItems/Formats/Rom.cs +++ b/SabreTools.Metadata.DatItems/Formats/Rom.cs @@ -175,7 +175,7 @@ namespace SabreTools.Metadata.DatItems.Formats Write(Data.Models.Metadata.Rom.RemarkKey, rom.ReadString(Data.Models.Metadata.Rom.RemarkKey)); Write(Data.Models.Metadata.Rom.SHA1Key, rom.ReadString(Data.Models.Metadata.Rom.SHA1Key)); Write(Data.Models.Metadata.Rom.StartKey, rom.ReadString(Data.Models.Metadata.Rom.StartKey)); - Write(SourceKey, source); + Source = source; var original = item.Read(Dump.OriginalKey); if (original is not null) @@ -307,7 +307,7 @@ namespace SabreTools.Metadata.DatItems.Formats public Rom(Data.Models.Metadata.Rom item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/Sample.cs b/SabreTools.Metadata.DatItems/Formats/Sample.cs index 70bf04fd..6ceb2d03 100644 --- a/SabreTools.Metadata.DatItems/Formats/Sample.cs +++ b/SabreTools.Metadata.DatItems/Formats/Sample.cs @@ -28,7 +28,7 @@ namespace SabreTools.Metadata.DatItems.Formats public Sample(Data.Models.Metadata.Sample item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/Serials.cs b/SabreTools.Metadata.DatItems/Formats/Serials.cs index ddc47806..a9e376d6 100644 --- a/SabreTools.Metadata.DatItems/Formats/Serials.cs +++ b/SabreTools.Metadata.DatItems/Formats/Serials.cs @@ -18,7 +18,7 @@ namespace SabreTools.Metadata.DatItems.Formats public Serials(Data.Models.Metadata.Serials item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs b/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs index 33bc294e..0a587947 100644 --- a/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs +++ b/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs @@ -34,7 +34,7 @@ namespace SabreTools.Metadata.DatItems.Formats public SharedFeat(Data.Models.Metadata.SharedFeat item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/Slot.cs b/SabreTools.Metadata.DatItems/Formats/Slot.cs index 43223404..5fe28517 100644 --- a/SabreTools.Metadata.DatItems/Formats/Slot.cs +++ b/SabreTools.Metadata.DatItems/Formats/Slot.cs @@ -48,7 +48,7 @@ namespace SabreTools.Metadata.DatItems.Formats public Slot(Data.Models.Metadata.Slot item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/SlotOption.cs b/SabreTools.Metadata.DatItems/Formats/SlotOption.cs index 280084ad..aa012659 100644 --- a/SabreTools.Metadata.DatItems/Formats/SlotOption.cs +++ b/SabreTools.Metadata.DatItems/Formats/SlotOption.cs @@ -40,7 +40,7 @@ namespace SabreTools.Metadata.DatItems.Formats public SlotOption(Data.Models.Metadata.SlotOption item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs b/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs index ed4694d4..4e6b6293 100644 --- a/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs +++ b/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs @@ -50,7 +50,7 @@ namespace SabreTools.Metadata.DatItems.Formats public SoftwareList(Data.Models.Metadata.SoftwareList item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/Sound.cs b/SabreTools.Metadata.DatItems/Formats/Sound.cs index b0c6b9fa..aa40ea59 100644 --- a/SabreTools.Metadata.DatItems/Formats/Sound.cs +++ b/SabreTools.Metadata.DatItems/Formats/Sound.cs @@ -24,7 +24,7 @@ namespace SabreTools.Metadata.DatItems.Formats public Sound(Data.Models.Metadata.Sound item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/SourceDetails.cs b/SabreTools.Metadata.DatItems/Formats/SourceDetails.cs index 4f45ed10..d176b7b5 100644 --- a/SabreTools.Metadata.DatItems/Formats/SourceDetails.cs +++ b/SabreTools.Metadata.DatItems/Formats/SourceDetails.cs @@ -18,7 +18,7 @@ namespace SabreTools.Metadata.DatItems.Formats public SourceDetails(Data.Models.Metadata.SourceDetails item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Machine.cs b/SabreTools.Metadata.DatItems/Machine.cs index d0c1599a..b92f67b3 100644 --- a/SabreTools.Metadata.DatItems/Machine.cs +++ b/SabreTools.Metadata.DatItems/Machine.cs @@ -193,6 +193,32 @@ namespace SabreTools.Metadata.DatItems if (other is null) return false; + // Properties + if ((Description is null) ^ (other.Description is null)) + return false; + if (Description is not null && !Description.Equals(other.Description, StringComparison.OrdinalIgnoreCase)) + return false; + + if (IsBios != other.IsBios) + return false; + + if (IsDevice != other.IsDevice) + return false; + + if (IsMechanical != other.IsMechanical) + return false; + + if ((Name is null) ^ (other.Name is null)) + return false; + if (Name is not null && !Name.Equals(other.Name, StringComparison.OrdinalIgnoreCase)) + return false; + + if (Runnable != other.Runnable) + return false; + + if (Supported != other.Supported) + return false; + // Compare internal models return _internal.EqualTo(other._internal); } diff --git a/SabreTools.Metadata/DictionaryBaseExtensions.cs b/SabreTools.Metadata/DictionaryBaseExtensions.cs index f8b0a28e..5af2c364 100644 --- a/SabreTools.Metadata/DictionaryBaseExtensions.cs +++ b/SabreTools.Metadata/DictionaryBaseExtensions.cs @@ -13,6 +13,7 @@ namespace SabreTools.Metadata /// /// Check equality of two DictionaryBase objects /// + /// TODO: Fix equality checking with case sensitivity of string properties public static bool EqualTo(this DictionaryBase self, DictionaryBase other) { // Check types first @@ -59,6 +60,279 @@ namespace SabreTools.Metadata if (self.GetName() != other.GetName()) return false; + // Handle individual type properties + if (self is Adjuster selfAdjuster && other is Adjuster cloneAdjuster) + { + if (selfAdjuster.Default != cloneAdjuster.Default) + return false; + } + else if (self is Analog selfAnalog && other is Analog cloneAnalog) + { + if (selfAnalog.Mask != cloneAnalog.Mask) + return false; + } + else if (self is Archive selfArchive && other is Archive cloneArchive) + { + if (selfArchive.Description != cloneArchive.Description) + return false; + } + else if (self is BiosSet selfBiosSet && other is BiosSet cloneBiosSet) + { + if (selfBiosSet.Default != cloneBiosSet.Default) + return false; + if (selfBiosSet.Description != cloneBiosSet.Description) + return false; + } + else if (self is Chip selfChip && other is Chip cloneChip) + { + if (selfChip.ChipType != cloneChip.ChipType) + return false; + if (selfChip.SoundOnly != cloneChip.SoundOnly) + return false; + if (selfChip.Tag != cloneChip.Tag) + return false; + } + else if (self is Condition selfCondition && other is Condition cloneCondition) + { + if (selfCondition.Mask != cloneCondition.Mask) + return false; + if (selfCondition.Relation != cloneCondition.Relation) + return false; + if (selfCondition.Tag != cloneCondition.Tag) + return false; + if (selfCondition.Value != cloneCondition.Value) + return false; + } + else if (self is Configuration selfConfiguration && other is Configuration cloneConfiguration) + { + if (selfConfiguration.Mask != cloneConfiguration.Mask) + return false; + if (selfConfiguration.Tag != cloneConfiguration.Tag) + return false; + } + else if (self is ConfLocation selfConfLocation && other is ConfLocation cloneConfLocation) + { + if (selfConfLocation.Inverted != cloneConfLocation.Inverted) + return false; + } + else if (self is ConfSetting selfConfSetting && other is ConfSetting cloneConfSetting) + { + if (selfConfSetting.Default != cloneConfSetting.Default) + return false; + if (selfConfSetting.Value != cloneConfSetting.Value) + return false; + } + else if (self is Control selfControl && other is Control cloneControl) + { + if (selfControl.ControlType != cloneControl.ControlType) + return false; + if (selfControl.Reverse != cloneControl.Reverse) + return false; + } + else if (self is DataArea selfDataArea && other is DataArea cloneDataArea) + { + if (selfDataArea.Endianness != cloneDataArea.Endianness) + return false; + } + else if (self is Device selfDevice && other is Device cloneDevice) + { + if (selfDevice.DeviceType != cloneDevice.DeviceType) + return false; + if (selfDevice.FixedImage != cloneDevice.FixedImage) + return false; + if (selfDevice.Interface != cloneDevice.Interface) + return false; + if (selfDevice.Mandatory != cloneDevice.Mandatory) + return false; + if (selfDevice.Tag != cloneDevice.Tag) + return false; + } + else if (self is DipLocation selfDipLocation && other is DipLocation cloneDipLocation) + { + if (selfDipLocation.Inverted != cloneDipLocation.Inverted) + return false; + } + else if (self is DipSwitch selfDipSwitch && other is DipSwitch cloneDipSwitch) + { + if (selfDipSwitch.Default != cloneDipSwitch.Default) + return false; + if (selfDipSwitch.Mask != cloneDipSwitch.Mask) + return false; + if (selfDipSwitch.Tag != cloneDipSwitch.Tag) + return false; + } + else if (self is DipValue selfDipValue && other is DipValue cloneDipValue) + { + if (selfDipValue.Default != cloneDipValue.Default) + return false; + if (selfDipValue.Value != cloneDipValue.Value) + return false; + } + else if (self is Display selfDisplay && other is Display cloneDisplay) + { + if (selfDisplay.DisplayType != cloneDisplay.DisplayType) + return false; + if (selfDisplay.FlipX != cloneDisplay.FlipX) + return false; + if (selfDisplay.Tag != cloneDisplay.Tag) + return false; + } + else if (self is Driver selfDriver && other is Driver cloneDriver) + { + if (selfDriver.Blit != cloneDriver.Blit) + return false; + if (selfDriver.Cocktail != cloneDriver.Cocktail) + return false; + if (selfDriver.Color != cloneDriver.Color) + return false; + if (selfDriver.Emulation != cloneDriver.Emulation) + return false; + if (selfDriver.Incomplete != cloneDriver.Incomplete) + return false; + if (selfDriver.NoSoundHardware != cloneDriver.NoSoundHardware) + return false; + if (selfDriver.RequiresArtwork != cloneDriver.RequiresArtwork) + return false; + if (selfDriver.SaveState != cloneDriver.SaveState) + return false; + if (selfDriver.Sound != cloneDriver.Sound) + return false; + if (selfDriver.Status != cloneDriver.Status) + return false; + if (selfDriver.Unofficial != cloneDriver.Unofficial) + return false; + } + else if (self is Feature selfFeature && other is Feature cloneFeature) + { + if (selfFeature.FeatureType != cloneFeature.FeatureType) + return false; + if (selfFeature.Overall != cloneFeature.Overall) + return false; + if (selfFeature.Status != cloneFeature.Status) + return false; + if (selfFeature.Value != cloneFeature.Value) + return false; + } + else if (self is Header selfHeader && other is Header cloneHeader) + { + if (selfHeader.BiosMode != cloneHeader.BiosMode) + return false; + if (selfHeader.Debug != cloneHeader.Debug) + return false; + if (selfHeader.Description != cloneHeader.Description) + return false; + if (selfHeader.ForceMerging != cloneHeader.ForceMerging) + return false; + if (selfHeader.ForceNodump != cloneHeader.ForceNodump) + return false; + if (selfHeader.ForcePacking != cloneHeader.ForcePacking) + return false; + if (selfHeader.ForceZipping != cloneHeader.ForceZipping) + return false; + if (selfHeader.LockBiosMode != cloneHeader.LockBiosMode) + return false; + if (selfHeader.LockRomMode != cloneHeader.LockRomMode) + return false; + if (selfHeader.LockSampleMode != cloneHeader.LockSampleMode) + return false; + if (selfHeader.RomMode != cloneHeader.RomMode) + return false; + if (selfHeader.SampleMode != cloneHeader.SampleMode) + return false; + } + else if (self is Info selfInfo && other is Info cloneInfo) + { + if (selfInfo.Value != cloneInfo.Value) + return false; + } + else if (self is Input selfInput && other is Input cloneInput) + { + if (selfInput.Service != cloneInput.Service) + return false; + if (selfInput.Tilt != cloneInput.Tilt) + return false; + } + else if (self is Instance selfInstance && other is Instance cloneInstance) + { + if (selfInstance.BriefName != cloneInstance.BriefName) + return false; + } + else if (self is Machine selfMachine && other is Machine cloneMachine) + { + if (selfMachine.Description != cloneMachine.Description) + return false; + if (selfMachine.IsBios != cloneMachine.IsBios) + return false; + if (selfMachine.IsDevice != cloneMachine.IsDevice) + return false; + if (selfMachine.IsMechanical != cloneMachine.IsMechanical) + return false; + if (selfMachine.Runnable != cloneMachine.Runnable) + return false; + if (selfMachine.Supported != cloneMachine.Supported) + return false; + } + else if (self is Original selfOriginal && other is Original cloneOriginal) + { + if (selfOriginal.Content != cloneOriginal.Content) + return false; + } + else if (self is Part selfPart && other is Part clonePart) + { + if (selfPart.Interface != clonePart.Interface) + return false; + } + else if (self is Port selfPort && other is Port clonePort) + { + if (selfPort.Tag != clonePort.Tag) + return false; + } + else if (self is RamOption selfRamOption && other is RamOption cloneRamOption) + { + if (selfRamOption.Content != cloneRamOption.Content) + return false; + if (selfRamOption.Default != cloneRamOption.Default) + return false; + } + else if (self is Release selfRelease && other is Release cloneRelease) + { + if (selfRelease.Default != cloneRelease.Default) + return false; + } + else if (self is SharedFeat selfSharedFeat && other is SharedFeat cloneSharedFeat) + { + if (selfSharedFeat.Value != cloneSharedFeat.Value) + return false; + } + else if (self is SlotOption selfSlotOption && other is SlotOption cloneSlotOption) + { + if (selfSlotOption.Default != cloneSlotOption.Default) + return false; + if (selfSlotOption.DevName != cloneSlotOption.DevName) + return false; + } + else if (self is Software selfSoftware && other is Software cloneSoftware) + { + if (selfSoftware.Description != cloneSoftware.Description) + return false; + if (selfSoftware.Supported != cloneSoftware.Supported) + return false; + } + else if (self is SoftwareList selfSoftwareList && other is SoftwareList cloneSoftwareList) + { + if (selfSoftwareList.Description != cloneSoftwareList.Description) + return false; + if (selfSoftwareList.Status != cloneSoftwareList.Status) + return false; + if (selfSoftwareList.Tag != cloneSoftwareList.Tag) + return false; + } + else if (self is Video selfVideo && other is Video cloneVideo) + { + if (selfVideo.Screen != cloneVideo.Screen) + return false; + } + // Check all pairs to see if they're equal foreach (var kvp in self) { From c87db265dd832627d87afc7a937fe5dab91d3da2 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Thu, 2 Apr 2026 20:34:09 -0400 Subject: [PATCH 023/142] Turn removal key into a metadata property --- .../DatFileTests.Filtering.cs | 4 +- .../DatFileTests.cs | 2 +- .../ItemDictionaryDBTests.cs | 6 +- .../ItemDictionaryTests.cs | 6 +- .../DatFile.Filtering.cs | 4 +- SabreTools.Metadata.DatFiles/DatFile.cs | 2 +- SabreTools.Metadata.DatFiles/DatStatistics.cs | 208 +----------------- .../ItemDictionary.cs | 10 +- .../ItemDictionaryDB.cs | 8 +- .../Formats/DiskTests.cs | 4 +- .../Formats/FileTests.cs | 4 +- .../Formats/MediaTests.cs | 4 +- SabreTools.Metadata.DatItems/DatItem.cs | 10 +- SabreTools.Metadata.DatItems/Formats/Disk.cs | 2 +- SabreTools.Metadata.DatItems/Formats/File.cs | 4 +- SabreTools.Metadata.DatItems/Formats/Media.cs | 2 +- 16 files changed, 38 insertions(+), 242 deletions(-) diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.Filtering.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.Filtering.cs index f82d53f8..32bcb133 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.Filtering.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.Filtering.cs @@ -36,7 +36,7 @@ namespace SabreTools.Metadata.DatFiles.Test var actualDatItems = datFile.GetItemsForBucket("machine"); DatItem actualRom = Assert.Single(actualDatItems); - Assert.Equal(true, actualRom.ReadBool(DatItem.RemoveKey)); + Assert.True(actualRom.RemoveFlag); } [Fact] @@ -66,7 +66,7 @@ namespace SabreTools.Metadata.DatFiles.Test var actualDatItems = datFile.GetItemsForBucketDB("machine"); DatItem actualRom = Assert.Single(actualDatItems).Value; - Assert.Equal(true, actualRom.ReadBool(DatItem.RemoveKey)); + Assert.True(actualRom.RemoveFlag); } #endregion diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.cs index 8f2b0805..19683978 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.cs @@ -2287,7 +2287,7 @@ namespace SabreTools.Metadata.DatFiles.Test public void ShouldIgnore_RemoveSet_True() { DatItem? datItem = new Rom(); - datItem.Write(DatItem.RemoveKey, true); + datItem.RemoveFlag = true; DatFile datFile = new Logiqx(null, useGame: false); bool actual = datFile.ShouldIgnore(datItem, ignoreBlanks: true); diff --git a/SabreTools.Metadata.DatFiles.Test/ItemDictionaryDBTests.cs b/SabreTools.Metadata.DatFiles.Test/ItemDictionaryDBTests.cs index 604824b7..069df989 100644 --- a/SabreTools.Metadata.DatFiles.Test/ItemDictionaryDBTests.cs +++ b/SabreTools.Metadata.DatFiles.Test/ItemDictionaryDBTests.cs @@ -307,7 +307,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem rom2 = new Rom(); rom2.SetName("rom-2"); rom2.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); - rom2.Write(DatItem.RemoveKey, true); + rom2.RemoveFlag = true; rom2.Write(Data.Models.Metadata.Rom.SHA1Key, "000000e948edcb4f7704b8af85a77a3339ecce44"); rom2.Write(Data.Models.Metadata.Rom.SizeKey, "1024"); @@ -378,7 +378,7 @@ namespace SabreTools.Metadata.DatFiles.Test machine.Name = "machine"; DatItem item = new Rom(); - item.Write(DatItem.RemoveKey, true); + item.RemoveFlag = true; var dict = new ItemDictionaryDB(); long sourceIndex = dict.AddSource(source); @@ -399,7 +399,7 @@ namespace SabreTools.Metadata.DatFiles.Test machine.Name = "machine"; DatItem item = new Rom(); - item.Write(DatItem.RemoveKey, true); + item.RemoveFlag = true; var dict = new ItemDictionaryDB(); long sourceIndex = dict.AddSource(source); diff --git a/SabreTools.Metadata.DatFiles.Test/ItemDictionaryTests.cs b/SabreTools.Metadata.DatFiles.Test/ItemDictionaryTests.cs index 3530f4ce..2a40441c 100644 --- a/SabreTools.Metadata.DatFiles.Test/ItemDictionaryTests.cs +++ b/SabreTools.Metadata.DatFiles.Test/ItemDictionaryTests.cs @@ -276,7 +276,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem rom2 = new Rom(); rom2.SetName("rom-2"); rom2.Write(Data.Models.Metadata.Rom.CRCKey, "DEAEEF"); - rom2.Write(DatItem.RemoveKey, true); + rom2.RemoveFlag = true; rom2.Write(Data.Models.Metadata.Rom.SHA1Key, "000000e948edcb4f7704b8af85a77a3339ecce44"); rom2.Write(Data.Models.Metadata.Rom.SizeKey, "1024"); rom2.CopyMachineInformation(machine); @@ -345,7 +345,7 @@ namespace SabreTools.Metadata.DatFiles.Test machine.Name = "machine"; DatItem item = new Rom(); - item.Write(DatItem.RemoveKey, true); + item.RemoveFlag = true; item.Source = source; item.Machine = machine; @@ -366,7 +366,7 @@ namespace SabreTools.Metadata.DatFiles.Test machine.Name = "machine"; DatItem item = new Rom(); - item.Write(DatItem.RemoveKey, true); + item.RemoveFlag = true; item.Source = source; item.Machine = machine; diff --git a/SabreTools.Metadata.DatFiles/DatFile.Filtering.cs b/SabreTools.Metadata.DatFiles/DatFile.Filtering.cs index 5ae6b63c..f0d20fcd 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.Filtering.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.Filtering.cs @@ -242,7 +242,7 @@ namespace SabreTools.Metadata.DatFiles foreach (var item in items) { if (!item.PassesFilter(filterRunner)) - item.Write(DatItem.RemoveKey, true); + item.RemoveFlag = true; } } @@ -263,7 +263,7 @@ namespace SabreTools.Metadata.DatFiles foreach (var item in items) { if (!item.Value.PassesFilterDB(filterRunner)) - item.Value.Write(DatItem.RemoveKey, true); + item.Value.RemoveFlag = true; } } diff --git a/SabreTools.Metadata.DatFiles/DatFile.cs b/SabreTools.Metadata.DatFiles/DatFile.cs index 1641df98..ebcfa269 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.cs @@ -980,7 +980,7 @@ namespace SabreTools.Metadata.DatFiles } // If the item is supposed to be removed, we ignore - if (datItem.ReadBool(DatItem.RemoveKey) == true) + if (datItem.RemoveFlag) { string itemString = JsonConvert.SerializeObject(datItem, Formatting.None); _logger.Verbose($"Item '{itemString}' was skipped because it was marked for removal"); diff --git a/SabreTools.Metadata.DatFiles/DatStatistics.cs b/SabreTools.Metadata.DatFiles/DatStatistics.cs index 496ea3ec..8dcd2dab 100644 --- a/SabreTools.Metadata.DatFiles/DatStatistics.cs +++ b/SabreTools.Metadata.DatFiles/DatStatistics.cs @@ -117,7 +117,7 @@ namespace SabreTools.Metadata.DatFiles TotalCount++; // Increment removal count - if (item.ReadBool(DatItem.RemoveKey) == true) + if (item.RemoveFlag) RemovedCount++; // Increment the item count for the type @@ -144,44 +144,6 @@ namespace SabreTools.Metadata.DatFiles } } - /// - /// Add to the statistics for a given DatItem - /// - /// Item to add info from - public void AddItemStatistics(Data.Models.Metadata.DatItem item) - { - lock (statsLock) - { - // No matter what the item is, we increment the count - TotalCount++; - - // Increment removal count - if (item.ReadBool(DatItem.RemoveKey) == true) - RemovedCount++; - - // Increment the item count for the type - AddItemCount(item.ItemType); - - // Some item types require special processing - switch (item) - { - case Data.Models.Metadata.Disk disk: - AddItemStatistics(disk); - break; - case Data.Models.Metadata.Media media: - AddItemStatistics(media); - break; - case Data.Models.Metadata.Rom rom: - AddItemStatistics(rom); - break; - - default: - // Item type requires no special processing - break; - } - } - } - /// /// Add statistics from another DatStatistics object /// @@ -279,7 +241,7 @@ namespace SabreTools.Metadata.DatFiles TotalCount--; // Decrement removal count - if (item.ReadBool(DatItem.RemoveKey) == true) + if (item.RemoveFlag) RemovedCount--; // Decrement the item count for the type @@ -308,48 +270,6 @@ namespace SabreTools.Metadata.DatFiles } } - /// - /// Remove from the statistics given a DatItem - /// - /// Item to remove info for - public void RemoveItemStatistics(Data.Models.Metadata.DatItem item) - { - // If we have a null item, we can't do anything - if (item is null) - return; - - lock (statsLock) - { - // No matter what the item is, we decrease the count - TotalCount--; - - // Decrement removal count - if (item.ReadBool(DatItem.RemoveKey) == true) - RemovedCount--; - - // Decrement the item count for the type - RemoveItemCount(item.ItemType); - - // Some item types require special processing - switch (item) - { - case Data.Models.Metadata.Disk disk: - RemoveItemStatistics(disk); - break; - case Data.Models.Metadata.Media media: - RemoveItemStatistics(media); - break; - case Data.Models.Metadata.Rom rom: - RemoveItemStatistics(rom); - break; - - default: - // Item type requires no special processing - break; - } - } - } - /// /// Reset all statistics /// @@ -420,25 +340,6 @@ namespace SabreTools.Metadata.DatFiles AddStatusCount(ItemStatus.Verified, status == ItemStatus.Verified ? 1 : 0); } - /// - /// Add to the statistics for a given Disk - /// - /// Item to add info from - private void AddItemStatistics(Data.Models.Metadata.Disk disk) - { - ItemStatus? status = disk.Status; - if (status != ItemStatus.Nodump) - { - AddHashCount(HashType.MD5, string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key)) ? 0 : 1); - AddHashCount(HashType.SHA1, string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.SHA1Key)) ? 0 : 1); - } - - AddStatusCount(ItemStatus.BadDump, status == ItemStatus.BadDump ? 1 : 0); - AddStatusCount(ItemStatus.Good, status == ItemStatus.Good ? 1 : 0); - AddStatusCount(ItemStatus.Nodump, status == ItemStatus.Nodump ? 1 : 0); - AddStatusCount(ItemStatus.Verified, status == ItemStatus.Verified ? 1 : 0); - } - /// /// Add to the statistics for a given File /// @@ -464,18 +365,6 @@ namespace SabreTools.Metadata.DatFiles AddHashCount(HashType.SpamSum, string.IsNullOrEmpty(media.ReadString(Data.Models.Metadata.Media.SpamSumKey)) ? 0 : 1); } - /// - /// Add to the statistics for a given Media - /// - /// Item to add info from - private void AddItemStatistics(Data.Models.Metadata.Media media) - { - AddHashCount(HashType.MD5, string.IsNullOrEmpty(media.ReadString(Data.Models.Metadata.Media.MD5Key)) ? 0 : 1); - AddHashCount(HashType.SHA1, string.IsNullOrEmpty(media.ReadString(Data.Models.Metadata.Media.SHA1Key)) ? 0 : 1); - AddHashCount(HashType.SHA256, string.IsNullOrEmpty(media.ReadString(Data.Models.Metadata.Media.SHA256Key)) ? 0 : 1); - AddHashCount(HashType.SpamSum, string.IsNullOrEmpty(media.ReadString(Data.Models.Metadata.Media.SpamSumKey)) ? 0 : 1); - } - /// /// Add to the statistics for a given Rom /// @@ -507,37 +396,6 @@ namespace SabreTools.Metadata.DatFiles AddStatusCount(ItemStatus.Verified, status == ItemStatus.Verified ? 1 : 0); } - /// - /// Add to the statistics for a given Rom - /// - /// Item to add info from - private void AddItemStatistics(Data.Models.Metadata.Rom rom) - { - ItemStatus? status = rom.Status; - if (status != ItemStatus.Nodump) - { - TotalSize += rom.ReadLong(Data.Models.Metadata.Rom.SizeKey) ?? 0; - AddHashCount(HashType.CRC16, string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.CRC16Key)) ? 0 : 1); - AddHashCount(HashType.CRC32, string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.CRCKey)) ? 0 : 1); - AddHashCount(HashType.CRC64, string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.CRC64Key)) ? 0 : 1); - AddHashCount(HashType.MD2, string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.MD2Key)) ? 0 : 1); - AddHashCount(HashType.MD4, string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.MD4Key)) ? 0 : 1); - AddHashCount(HashType.MD5, string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.MD5Key)) ? 0 : 1); - AddHashCount(HashType.RIPEMD128, string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.RIPEMD128Key)) ? 0 : 1); - AddHashCount(HashType.RIPEMD160, string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.RIPEMD160Key)) ? 0 : 1); - AddHashCount(HashType.SHA1, string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.SHA1Key)) ? 0 : 1); - AddHashCount(HashType.SHA256, string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.SHA256Key)) ? 0 : 1); - AddHashCount(HashType.SHA384, string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.SHA384Key)) ? 0 : 1); - AddHashCount(HashType.SHA512, string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.SHA512Key)) ? 0 : 1); - AddHashCount(HashType.SpamSum, string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.SpamSumKey)) ? 0 : 1); - } - - AddStatusCount(ItemStatus.BadDump, status == ItemStatus.BadDump ? 1 : 0); - AddStatusCount(ItemStatus.Good, status == ItemStatus.Good ? 1 : 0); - AddStatusCount(ItemStatus.Nodump, status == ItemStatus.Nodump ? 1 : 0); - AddStatusCount(ItemStatus.Verified, status == ItemStatus.Verified ? 1 : 0); - } - /// /// Increment the item count for a given item status /// @@ -611,25 +469,6 @@ namespace SabreTools.Metadata.DatFiles RemoveStatusCount(ItemStatus.Verified, status == ItemStatus.Verified ? 1 : 0); } - /// - /// Remove from the statistics given a Disk - /// - /// Item to remove info for - private void RemoveItemStatistics(Data.Models.Metadata.Disk disk) - { - ItemStatus? status = disk.Status; - if (status != ItemStatus.Nodump) - { - RemoveHashCount(HashType.MD5, string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key)) ? 0 : 1); - RemoveHashCount(HashType.SHA1, string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.SHA1Key)) ? 0 : 1); - } - - RemoveStatusCount(ItemStatus.BadDump, status == ItemStatus.BadDump ? 1 : 0); - RemoveStatusCount(ItemStatus.Good, status == ItemStatus.Good ? 1 : 0); - RemoveStatusCount(ItemStatus.Nodump, status == ItemStatus.Nodump ? 1 : 0); - RemoveStatusCount(ItemStatus.Verified, status == ItemStatus.Verified ? 1 : 0); - } - /// /// Remove from the statistics given a File /// @@ -655,18 +494,6 @@ namespace SabreTools.Metadata.DatFiles RemoveHashCount(HashType.SpamSum, string.IsNullOrEmpty(media.ReadString(Data.Models.Metadata.Media.SpamSumKey)) ? 0 : 1); } - /// - /// Remove from the statistics given a Media - /// - /// Item to remove info for - private void RemoveItemStatistics(Data.Models.Metadata.Media media) - { - RemoveHashCount(HashType.MD5, string.IsNullOrEmpty(media.ReadString(Data.Models.Metadata.Media.MD5Key)) ? 0 : 1); - RemoveHashCount(HashType.SHA1, string.IsNullOrEmpty(media.ReadString(Data.Models.Metadata.Media.SHA1Key)) ? 0 : 1); - RemoveHashCount(HashType.SHA256, string.IsNullOrEmpty(media.ReadString(Data.Models.Metadata.Media.SHA256Key)) ? 0 : 1); - RemoveHashCount(HashType.SpamSum, string.IsNullOrEmpty(media.ReadString(Data.Models.Metadata.Media.SpamSumKey)) ? 0 : 1); - } - /// /// Remove from the statistics given a Rom /// @@ -698,37 +525,6 @@ namespace SabreTools.Metadata.DatFiles RemoveStatusCount(ItemStatus.Verified, status == ItemStatus.Verified ? 1 : 0); } - /// - /// Remove from the statistics given a Rom - /// - /// Item to remove info for - private void RemoveItemStatistics(Data.Models.Metadata.Rom rom) - { - ItemStatus? status = rom.Status; - if (status != ItemStatus.Nodump) - { - TotalSize -= rom.ReadLong(Data.Models.Metadata.Rom.SizeKey) ?? 0; - RemoveHashCount(HashType.CRC16, string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.CRC16Key)) ? 0 : 1); - RemoveHashCount(HashType.CRC32, string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.CRCKey)) ? 0 : 1); - RemoveHashCount(HashType.CRC64, string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.CRC64Key)) ? 0 : 1); - RemoveHashCount(HashType.MD2, string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.MD2Key)) ? 0 : 1); - RemoveHashCount(HashType.MD4, string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.MD4Key)) ? 0 : 1); - RemoveHashCount(HashType.MD5, string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.MD5Key)) ? 0 : 1); - RemoveHashCount(HashType.RIPEMD128, string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.RIPEMD128Key)) ? 0 : 1); - RemoveHashCount(HashType.RIPEMD160, string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.RIPEMD160Key)) ? 0 : 1); - RemoveHashCount(HashType.SHA1, string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.SHA1Key)) ? 0 : 1); - RemoveHashCount(HashType.SHA256, string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.SHA256Key)) ? 0 : 1); - RemoveHashCount(HashType.SHA384, string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.SHA384Key)) ? 0 : 1); - RemoveHashCount(HashType.SHA512, string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.SHA512Key)) ? 0 : 1); - RemoveHashCount(HashType.SpamSum, string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.SpamSumKey)) ? 0 : 1); - } - - RemoveStatusCount(ItemStatus.BadDump, status == ItemStatus.BadDump ? 1 : 0); - RemoveStatusCount(ItemStatus.Good, status == ItemStatus.Good ? 1 : 0); - RemoveStatusCount(ItemStatus.Nodump, status == ItemStatus.Nodump ? 1 : 0); - RemoveStatusCount(ItemStatus.Verified, status == ItemStatus.Verified ? 1 : 0); - } - /// /// Decrement the item count for a given item status /// diff --git a/SabreTools.Metadata.DatFiles/ItemDictionary.cs b/SabreTools.Metadata.DatFiles/ItemDictionary.cs index 9a22b2e0..76ad7d7c 100644 --- a/SabreTools.Metadata.DatFiles/ItemDictionary.cs +++ b/SabreTools.Metadata.DatFiles/ItemDictionary.cs @@ -227,7 +227,7 @@ namespace SabreTools.Metadata.DatFiles /// Get the items associated with a bucket name /// /// Name of the bucket to retrive items for - /// Indicates if RemoveKey filtering is performed + /// Indicates if RemoveFlag filtering is performed /// List representing the bucket items, empty on missing public List GetItemsForBucket(string? bucketName, bool filter = false) { @@ -250,7 +250,7 @@ namespace SabreTools.Metadata.DatFiles var datItems = new List(); foreach (DatItem item in items) { - if (item.ReadBool(DatItem.RemoveKey) != true) + if (!item.RemoveFlag) datItems.Add(item); } @@ -601,13 +601,13 @@ namespace SabreTools.Metadata.DatFiles foreach (DatItem other in items) { // Skip items marked for removal - if (other.ReadBool(DatItem.RemoveKey) == true) + if (other.RemoveFlag) continue; // Mark duplicates for future removal if (datItem.Equals(other)) { - other.Write(DatItem.RemoveKey, true); + other.RemoveFlag = true; output.Add(other); } } @@ -767,7 +767,7 @@ namespace SabreTools.Metadata.DatFiles for (int i = 0; i < GetItemsForBucket(key).Count; i++) { DatItem item = GetItemsForBucket(key)[i]; - if (item is null || item.ReadBool(DatItem.RemoveKey) == true) + if (item is null || item.RemoveFlag) continue; // Get the machine and source diff --git a/SabreTools.Metadata.DatFiles/ItemDictionaryDB.cs b/SabreTools.Metadata.DatFiles/ItemDictionaryDB.cs index 199aac69..b878e02e 100644 --- a/SabreTools.Metadata.DatFiles/ItemDictionaryDB.cs +++ b/SabreTools.Metadata.DatFiles/ItemDictionaryDB.cs @@ -332,7 +332,7 @@ namespace SabreTools.Metadata.DatFiles var datItem = _items[itemIndex]; #endif - if (datItem.ReadBool(DatItem.RemoveKey) != true) + if (!datItem.RemoveFlag) continue; RemoveItem(itemIndex); @@ -378,7 +378,7 @@ namespace SabreTools.Metadata.DatFiles continue; #endif - if (!filter || datItem.ReadBool(DatItem.RemoveKey) != true) + if (!filter || !datItem.RemoveFlag) datItems[itemId] = datItem; } @@ -805,13 +805,13 @@ namespace SabreTools.Metadata.DatFiles foreach (var rom in items) { // Skip items marked for removal - if (rom.Value.ReadBool(DatItem.RemoveKey) == true) + if (rom.Value.RemoveFlag) continue; // Mark duplicates for future removal if (datItem.Value.Equals(rom.Value)) { - rom.Value.Write(DatItem.RemoveKey, true); + rom.Value.RemoveFlag = true; output[rom.Key] = rom.Value; } } diff --git a/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs b/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs index 7f7f282b..577063ba 100644 --- a/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs +++ b/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs @@ -33,7 +33,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test disk.Write(DatItem.DupeTypeKey, DupeType.All | DupeType.External); disk.Machine = machine; disk.Write(Disk.PartKey, part); - disk.Write(DatItem.RemoveKey, (bool?)false); + disk.RemoveFlag = false; disk.Source = source; Rom actual = disk.ConvertToRom(); @@ -55,7 +55,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Assert.NotNull(actualMachine); Assert.Equal("name", actualMachine.Name); - Assert.Equal(false, actual.ReadBool(DatItem.RemoveKey)); + Assert.False(actual.RemoveFlag); Part? actualPart = actual.Read(Rom.PartKey); Assert.NotNull(actualPart); diff --git a/SabreTools.Metadata.DatItems.Test/Formats/FileTests.cs b/SabreTools.Metadata.DatItems.Test/Formats/FileTests.cs index ea8e7f85..e36a99ef 100644 --- a/SabreTools.Metadata.DatItems.Test/Formats/FileTests.cs +++ b/SabreTools.Metadata.DatItems.Test/Formats/FileTests.cs @@ -28,7 +28,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test }; file.Write(DatItem.DupeTypeKey, DupeType.All | DupeType.External); file.Machine = machine; - file.Write(DatItem.RemoveKey, (bool?)false); + file.RemoveFlag = false; file.Source = source; file.Machine = machine; file.Source = source; @@ -47,7 +47,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Assert.NotNull(actualMachine); Assert.Equal("name", actualMachine.GetName()); - Assert.Equal(false, actual.ReadBool(DatItem.RemoveKey)); + Assert.False(actual.RemoveFlag); Source? actualSource = actual.Source; Assert.NotNull(actualSource); diff --git a/SabreTools.Metadata.DatItems.Test/Formats/MediaTests.cs b/SabreTools.Metadata.DatItems.Test/Formats/MediaTests.cs index 9584c5ed..b78b6934 100644 --- a/SabreTools.Metadata.DatItems.Test/Formats/MediaTests.cs +++ b/SabreTools.Metadata.DatItems.Test/Formats/MediaTests.cs @@ -23,7 +23,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test media.Write(Data.Models.Metadata.Media.SpamSumKey, HashType.SpamSum.ZeroString); media.Write(DatItem.DupeTypeKey, DupeType.All | DupeType.External); media.Machine = machine; - media.Write(DatItem.RemoveKey, (bool?)false); + media.RemoveFlag = false; media.Source = source; Rom actual = media.ConvertToRom(); @@ -39,7 +39,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Assert.NotNull(actualMachine); Assert.Equal("name", actualMachine.Name); - Assert.Equal(false, actual.ReadBool(DatItem.RemoveKey)); + Assert.False(actual.RemoveFlag); Source? actualSource = actual.Source; Assert.NotNull(actualSource); diff --git a/SabreTools.Metadata.DatItems/DatItem.cs b/SabreTools.Metadata.DatItems/DatItem.cs index 0cd46be7..09d482ca 100644 --- a/SabreTools.Metadata.DatItems/DatItem.cs +++ b/SabreTools.Metadata.DatItems/DatItem.cs @@ -63,11 +63,6 @@ namespace SabreTools.Metadata.DatItems /// public const string DupeTypeKey = "DUPETYPE"; - /// - /// Flag if item should be removed - /// - public const string RemoveKey = "REMOVE"; - #endregion #region Fields @@ -82,6 +77,11 @@ namespace SabreTools.Metadata.DatItems /// public Machine? Machine { get; set; } + /// + /// Flag if item should be removed + /// + public bool RemoveFlag { get; set; } = false; + /// /// Source information /// diff --git a/SabreTools.Metadata.DatItems/Formats/Disk.cs b/SabreTools.Metadata.DatItems/Formats/Disk.cs index 6b1d9da9..7dc47aff 100644 --- a/SabreTools.Metadata.DatItems/Formats/Disk.cs +++ b/SabreTools.Metadata.DatItems/Formats/Disk.cs @@ -132,7 +132,7 @@ namespace SabreTools.Metadata.DatItems.Formats rom.Write(DupeTypeKey, Read(DupeTypeKey)); rom.Machine = Machine?.Clone() as Machine; rom.Write(Rom.PartKey, Read(PartKey)?.Clone() as Part); - rom.Write(RemoveKey, ReadBool(RemoveKey)); + rom.RemoveFlag = RemoveFlag; rom.Source = Source?.Clone() as Source; return rom; diff --git a/SabreTools.Metadata.DatItems/Formats/File.cs b/SabreTools.Metadata.DatItems/Formats/File.cs index 0d2b3f77..5af2bdc8 100644 --- a/SabreTools.Metadata.DatItems/Formats/File.cs +++ b/SabreTools.Metadata.DatItems/Formats/File.cs @@ -122,7 +122,7 @@ namespace SabreTools.Metadata.DatItems.Formats }; file.Write(DupeTypeKey, Read(DupeTypeKey)); file.Machine = Machine!.Clone() as Machine ?? new Machine(); - file.Write(RemoveKey, ReadBool(RemoveKey)); + file.RemoveFlag = RemoveFlag; file.Source = Source?.Clone() as Source; return file; @@ -145,7 +145,7 @@ namespace SabreTools.Metadata.DatItems.Formats rom.Write(DupeTypeKey, Read(DupeTypeKey)); rom.Machine = Machine?.Clone() as Machine; - rom.Write(RemoveKey, ReadBool(RemoveKey)); + rom.RemoveFlag = RemoveFlag; rom.Source = Source?.Clone() as Source; return rom; diff --git a/SabreTools.Metadata.DatItems/Formats/Media.cs b/SabreTools.Metadata.DatItems/Formats/Media.cs index d2cc9ac3..d8104119 100644 --- a/SabreTools.Metadata.DatItems/Formats/Media.cs +++ b/SabreTools.Metadata.DatItems/Formats/Media.cs @@ -69,7 +69,7 @@ namespace SabreTools.Metadata.DatItems.Formats rom.Write(DupeTypeKey, Read(DupeTypeKey)); rom.Machine = Machine?.Clone() as Machine; - rom.Write(RemoveKey, ReadBool(RemoveKey)); + rom.RemoveFlag = RemoveFlag; rom.Source = Source?.Clone() as Source; return rom; From c0fd4d13346fdcf54d007fc77a3131c795f2a664 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Thu, 2 Apr 2026 20:41:14 -0400 Subject: [PATCH 024/142] Turn dupe type key into a metadata property --- SabreTools.Metadata.DatFiles/ItemDictionary.cs | 6 +++--- SabreTools.Metadata.DatFiles/ItemDictionaryDB.cs | 6 +++--- SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs | 4 ++-- SabreTools.Metadata.DatItems.Test/Formats/FileTests.cs | 4 ++-- SabreTools.Metadata.DatItems.Test/Formats/MediaTests.cs | 4 ++-- SabreTools.Metadata.DatItems/DatItem.cs | 8 ++------ SabreTools.Metadata.DatItems/Formats/Disk.cs | 6 +++--- SabreTools.Metadata.DatItems/Formats/File.cs | 4 ++-- SabreTools.Metadata.DatItems/Formats/Media.cs | 6 +++--- SabreTools.Metadata.DatItems/Formats/Rom.cs | 4 ++-- 10 files changed, 24 insertions(+), 28 deletions(-) diff --git a/SabreTools.Metadata.DatFiles/ItemDictionary.cs b/SabreTools.Metadata.DatFiles/ItemDictionary.cs index 76ad7d7c..3f3c30a8 100644 --- a/SabreTools.Metadata.DatFiles/ItemDictionary.cs +++ b/SabreTools.Metadata.DatFiles/ItemDictionary.cs @@ -444,9 +444,9 @@ namespace SabreTools.Metadata.DatFiles // If the duplicate is external already #if NET20 || NET35 - if ((last.Read(DatItem.DupeTypeKey) & DupeType.External) != 0) + if ((last.DupeType & DupeType.External) != 0) #else - if (last.Read(DatItem.DupeTypeKey).HasFlag(DupeType.External)) + if (last.DupeType.HasFlag(DupeType.External)) #endif output |= DupeType.External; @@ -539,7 +539,7 @@ namespace SabreTools.Metadata.DatFiles savedRom.FillMissingInformation(romItem); // Set the duplicate type on the saved item - savedItem.Write(DatItem.DupeTypeKey, dupetype); + savedItem.DupeType = dupetype; // Get the sources associated with the items var savedSource = savedItem.Source; diff --git a/SabreTools.Metadata.DatFiles/ItemDictionaryDB.cs b/SabreTools.Metadata.DatFiles/ItemDictionaryDB.cs index b878e02e..f9ded0ea 100644 --- a/SabreTools.Metadata.DatFiles/ItemDictionaryDB.cs +++ b/SabreTools.Metadata.DatFiles/ItemDictionaryDB.cs @@ -750,9 +750,9 @@ namespace SabreTools.Metadata.DatFiles // If the duplicate is external already #if NET20 || NET35 - if ((lastItem.Value.Value.Read(DatItem.DupeTypeKey) & DupeType.External) != 0) + if ((lastItem.Value.Value.DupeType & DupeType.External) != 0) #else - if (lastItem.Value.Value.Read(DatItem.DupeTypeKey).HasFlag(DupeType.External)) + if (lastItem.Value.Value.DupeType.HasFlag(DupeType.External)) #endif output |= DupeType.External; @@ -921,7 +921,7 @@ namespace SabreTools.Metadata.DatFiles else if (datItem is Rom romItem && savedItem is Rom savedRom) savedRom.FillMissingInformation(romItem); - savedItem.Write(DatItem.DupeTypeKey, dupetype); + savedItem.DupeType = dupetype; // Get the sources associated with the items var savedSource = _sources[_itemToSourceMapping[savedIndex]]; diff --git a/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs b/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs index 577063ba..7c4475d9 100644 --- a/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs +++ b/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs @@ -30,7 +30,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test disk.Optional = true; disk.Write(Data.Models.Metadata.Disk.MD5Key, HashType.MD5.ZeroString); disk.Write(Data.Models.Metadata.Disk.SHA1Key, HashType.SHA1.ZeroString); - disk.Write(DatItem.DupeTypeKey, DupeType.All | DupeType.External); + disk.DupeType = DupeType.All | DupeType.External; disk.Machine = machine; disk.Write(Disk.PartKey, part); disk.RemoveFlag = false; @@ -45,7 +45,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Assert.Equal(true, actual.Optional); Assert.Equal(HashType.MD5.ZeroString, actual.ReadString(Data.Models.Metadata.Rom.MD5Key)); Assert.Equal(HashType.SHA1.ZeroString, actual.ReadString(Data.Models.Metadata.Rom.SHA1Key)); - Assert.Equal(DupeType.All | DupeType.External, actual.Read(DatItem.DupeTypeKey)); + Assert.Equal(DupeType.All | DupeType.External, actual.DupeType); DataArea? actualDataArea = actual.Read(Rom.DataAreaKey); Assert.NotNull(actualDataArea); diff --git a/SabreTools.Metadata.DatItems.Test/Formats/FileTests.cs b/SabreTools.Metadata.DatItems.Test/Formats/FileTests.cs index e36a99ef..48a8eb8c 100644 --- a/SabreTools.Metadata.DatItems.Test/Formats/FileTests.cs +++ b/SabreTools.Metadata.DatItems.Test/Formats/FileTests.cs @@ -26,7 +26,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test SHA256 = "DEADBEEF", Format = "XXXXXX" }; - file.Write(DatItem.DupeTypeKey, DupeType.All | DupeType.External); + file.DupeType = DupeType.All | DupeType.External; file.Machine = machine; file.RemoveFlag = false; file.Source = source; @@ -41,7 +41,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Assert.Equal("000000000000000000000000deadbeef", actual.ReadString(Data.Models.Metadata.Rom.MD5Key)); Assert.Equal("00000000000000000000000000000000deadbeef", actual.ReadString(Data.Models.Metadata.Rom.SHA1Key)); Assert.Equal("00000000000000000000000000000000000000000000000000000000deadbeef", actual.ReadString(Data.Models.Metadata.Rom.SHA256Key)); - Assert.Equal(DupeType.All | DupeType.External, actual.Read(DatItem.DupeTypeKey)); + Assert.Equal(DupeType.All | DupeType.External, actual.DupeType); Machine? actualMachine = actual.Machine; Assert.NotNull(actualMachine); diff --git a/SabreTools.Metadata.DatItems.Test/Formats/MediaTests.cs b/SabreTools.Metadata.DatItems.Test/Formats/MediaTests.cs index b78b6934..81783000 100644 --- a/SabreTools.Metadata.DatItems.Test/Formats/MediaTests.cs +++ b/SabreTools.Metadata.DatItems.Test/Formats/MediaTests.cs @@ -21,7 +21,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test media.Write(Data.Models.Metadata.Media.SHA1Key, HashType.SHA1.ZeroString); media.Write(Data.Models.Metadata.Media.SHA256Key, HashType.SHA256.ZeroString); media.Write(Data.Models.Metadata.Media.SpamSumKey, HashType.SpamSum.ZeroString); - media.Write(DatItem.DupeTypeKey, DupeType.All | DupeType.External); + media.DupeType = DupeType.All | DupeType.External; media.Machine = machine; media.RemoveFlag = false; media.Source = source; @@ -33,7 +33,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Assert.Equal(HashType.SHA1.ZeroString, actual.ReadString(Data.Models.Metadata.Rom.SHA1Key)); Assert.Equal(HashType.SHA256.ZeroString, actual.ReadString(Data.Models.Metadata.Rom.SHA256Key)); Assert.Equal(HashType.SpamSum.ZeroString, actual.ReadString(Data.Models.Metadata.Rom.SpamSumKey)); - Assert.Equal(DupeType.All | DupeType.External, actual.Read(DatItem.DupeTypeKey)); + Assert.Equal(DupeType.All | DupeType.External, actual.DupeType); Machine? actualMachine = actual.Machine; Assert.NotNull(actualMachine); diff --git a/SabreTools.Metadata.DatItems/DatItem.cs b/SabreTools.Metadata.DatItems/DatItem.cs index 09d482ca..604e2dec 100644 --- a/SabreTools.Metadata.DatItems/DatItem.cs +++ b/SabreTools.Metadata.DatItems/DatItem.cs @@ -56,16 +56,12 @@ namespace SabreTools.Metadata.DatItems [XmlInclude(typeof(SourceDetails))] public abstract class DatItem : ModelBackedItem, IEquatable, IComparable, ICloneable { - #region Constants + #region Fields /// /// Duplicate type when compared to another item /// - public const string DupeTypeKey = "DUPETYPE"; - - #endregion - - #region Fields + public DupeType DupeType { get; set; } = 0x00; /// /// Item type for the object diff --git a/SabreTools.Metadata.DatItems/Formats/Disk.cs b/SabreTools.Metadata.DatItems/Formats/Disk.cs index 7dc47aff..6fd08022 100644 --- a/SabreTools.Metadata.DatItems/Formats/Disk.cs +++ b/SabreTools.Metadata.DatItems/Formats/Disk.cs @@ -80,13 +80,13 @@ namespace SabreTools.Metadata.DatItems.Formats public Disk() : base() { - Write(DupeTypeKey, 0x00); + DupeType = 0x00; Status = ItemStatus.None; } public Disk(Data.Models.Metadata.Disk item) : base(item) { - Write(DupeTypeKey, 0x00); + DupeType = 0x00; // Process hash values string? md5 = ReadString(Data.Models.Metadata.Disk.MD5Key); @@ -129,7 +129,7 @@ namespace SabreTools.Metadata.DatItems.Formats rom.Write(Rom.DataAreaKey, dataArea); } - rom.Write(DupeTypeKey, Read(DupeTypeKey)); + rom.DupeType = DupeType; rom.Machine = Machine?.Clone() as Machine; rom.Write(Rom.PartKey, Read(PartKey)?.Clone() as Part); rom.RemoveFlag = RemoveFlag; diff --git a/SabreTools.Metadata.DatItems/Formats/File.cs b/SabreTools.Metadata.DatItems/Formats/File.cs index 5af2bdc8..aba4ee09 100644 --- a/SabreTools.Metadata.DatItems/Formats/File.cs +++ b/SabreTools.Metadata.DatItems/Formats/File.cs @@ -120,7 +120,7 @@ namespace SabreTools.Metadata.DatItems.Formats _sha256 = this._sha256, Format = this.Format, }; - file.Write(DupeTypeKey, Read(DupeTypeKey)); + file.DupeType = DupeType; file.Machine = Machine!.Clone() as Machine ?? new Machine(); file.RemoveFlag = RemoveFlag; file.Source = Source?.Clone() as Source; @@ -143,7 +143,7 @@ namespace SabreTools.Metadata.DatItems.Formats rom.Write(Data.Models.Metadata.Rom.SHA1Key, SHA1); rom.Write(Data.Models.Metadata.Rom.SHA256Key, SHA256); - rom.Write(DupeTypeKey, Read(DupeTypeKey)); + rom.DupeType = DupeType; rom.Machine = Machine?.Clone() as Machine; rom.RemoveFlag = RemoveFlag; rom.Source = Source?.Clone() as Source; diff --git a/SabreTools.Metadata.DatItems/Formats/Media.cs b/SabreTools.Metadata.DatItems/Formats/Media.cs index d8104119..319fcf04 100644 --- a/SabreTools.Metadata.DatItems/Formats/Media.cs +++ b/SabreTools.Metadata.DatItems/Formats/Media.cs @@ -25,12 +25,12 @@ namespace SabreTools.Metadata.DatItems.Formats public Media() : base() { - Write(DupeTypeKey, 0x00); + DupeType = 0x00; } public Media(Data.Models.Metadata.Media item) : base(item) { - Write(DupeTypeKey, 0x00); + DupeType = 0x00; // Process hash values string? md5 = ReadString(Data.Models.Metadata.Media.MD5Key); @@ -67,7 +67,7 @@ namespace SabreTools.Metadata.DatItems.Formats { var rom = new Rom(_internal.ConvertToRom()!); - rom.Write(DupeTypeKey, Read(DupeTypeKey)); + rom.DupeType = DupeType; rom.Machine = Machine?.Clone() as Machine; rom.RemoveFlag = RemoveFlag; rom.Source = Source?.Clone() as Source; diff --git a/SabreTools.Metadata.DatItems/Formats/Rom.cs b/SabreTools.Metadata.DatItems/Formats/Rom.cs index 278f679c..45b6dd9c 100644 --- a/SabreTools.Metadata.DatItems/Formats/Rom.cs +++ b/SabreTools.Metadata.DatItems/Formats/Rom.cs @@ -136,7 +136,7 @@ namespace SabreTools.Metadata.DatItems.Formats public Rom() : base() { - Write(DupeTypeKey, 0x00); + DupeType = 0x00; Status = ItemStatus.None; } @@ -247,7 +247,7 @@ namespace SabreTools.Metadata.DatItems.Formats public Rom(Data.Models.Metadata.Rom item) : base(item) { - Write(DupeTypeKey, 0x00); + DupeType = 0x00; // Process hash values long? size = ReadLong(Data.Models.Metadata.Rom.SizeKey); From 0df63787131ea7e692484225addbdfaf9f19a385 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Thu, 2 Apr 2026 21:07:41 -0400 Subject: [PATCH 025/142] Move item type override per-item --- SabreTools.Metadata.DatItems/DatItemT.cs | 7 ------ .../Formats/Adjuster.cs | 4 ++++ .../Formats/Analog.cs | 4 ++++ .../Formats/Archive.cs | 4 ++++ .../Formats/BiosSet.cs | 4 ++++ SabreTools.Metadata.DatItems/Formats/Blank.cs | 8 +++++++ SabreTools.Metadata.DatItems/Formats/Chip.cs | 4 ++++ .../Formats/Condition.cs | 4 ++++ .../Formats/ConfLocation.cs | 4 ++++ .../Formats/ConfSetting.cs | 4 ++++ .../Formats/Configuration.cs | 4 ++++ .../Formats/Control.cs | 4 ++++ .../Formats/DataArea.cs | 4 ++++ .../Formats/Device.cs | 4 ++++ .../Formats/DeviceRef.cs | 4 ++++ .../Formats/DipLocation.cs | 4 ++++ .../Formats/DipSwitch.cs | 24 +++++++++++-------- .../Formats/DipValue.cs | 4 ++++ SabreTools.Metadata.DatItems/Formats/Disk.cs | 3 +++ .../Formats/DiskArea.cs | 4 ++++ .../Formats/Display.cs | 4 ++++ .../Formats/Driver.cs | 4 ++++ .../Formats/Extension.cs | 4 ++++ .../Formats/Feature.cs | 4 ++++ SabreTools.Metadata.DatItems/Formats/Info.cs | 4 ++++ SabreTools.Metadata.DatItems/Formats/Input.cs | 4 ++++ .../Formats/Instance.cs | 4 ++++ SabreTools.Metadata.DatItems/Formats/Media.cs | 4 ++++ .../Formats/Original.cs | 20 +++++++++++----- SabreTools.Metadata.DatItems/Formats/Part.cs | 4 ++++ .../Formats/PartFeature.cs | 4 ++-- SabreTools.Metadata.DatItems/Formats/Port.cs | 4 ++++ .../Formats/RamOption.cs | 4 ++++ .../Formats/Release.cs | 4 ++++ .../Formats/ReleaseDetails.cs | 8 +++++++ SabreTools.Metadata.DatItems/Formats/Rom.cs | 3 +++ .../Formats/Sample.cs | 4 ++++ .../Formats/Serials.cs | 8 +++++++ .../Formats/SharedFeat.cs | 4 ++++ SabreTools.Metadata.DatItems/Formats/Slot.cs | 4 ++++ .../Formats/SlotOption.cs | 4 ++++ .../Formats/SoftwareList.cs | 4 ++++ SabreTools.Metadata.DatItems/Formats/Sound.cs | 8 +++++++ .../Formats/SourceDetails.cs | 8 +++++++ 44 files changed, 208 insertions(+), 25 deletions(-) diff --git a/SabreTools.Metadata.DatItems/DatItemT.cs b/SabreTools.Metadata.DatItems/DatItemT.cs index 3671404c..fb4eeefa 100644 --- a/SabreTools.Metadata.DatItems/DatItemT.cs +++ b/SabreTools.Metadata.DatItems/DatItemT.cs @@ -8,13 +8,6 @@ namespace SabreTools.Metadata.DatItems /// public abstract class DatItem : DatItem, IEquatable>, IComparable>, ICloneable where T : Data.Models.Metadata.DatItem, new() { - #region Fields - - /// /> - public override Data.Models.Metadata.ItemType ItemType => _internal.ItemType; - - #endregion - #region Constructors /// diff --git a/SabreTools.Metadata.DatItems/Formats/Adjuster.cs b/SabreTools.Metadata.DatItems/Formats/Adjuster.cs index 52cf9b9c..e9e78192 100644 --- a/SabreTools.Metadata.DatItems/Formats/Adjuster.cs +++ b/SabreTools.Metadata.DatItems/Formats/Adjuster.cs @@ -28,6 +28,10 @@ namespace SabreTools.Metadata.DatItems.Formats set => (_internal as Data.Models.Metadata.Adjuster)?.Default = value; } + /// /> + public override Data.Models.Metadata.ItemType ItemType + => Data.Models.Metadata.ItemType.Adjuster; + public string? Name { get => (_internal as Data.Models.Metadata.Adjuster)?.Name; diff --git a/SabreTools.Metadata.DatItems/Formats/Analog.cs b/SabreTools.Metadata.DatItems/Formats/Analog.cs index 22fa8417..d4099c0f 100644 --- a/SabreTools.Metadata.DatItems/Formats/Analog.cs +++ b/SabreTools.Metadata.DatItems/Formats/Analog.cs @@ -12,6 +12,10 @@ namespace SabreTools.Metadata.DatItems.Formats { #region Fields + /// /> + public override Data.Models.Metadata.ItemType ItemType + => Data.Models.Metadata.ItemType.Analog; + public string? Mask { get => (_internal as Data.Models.Metadata.Analog)?.Mask; diff --git a/SabreTools.Metadata.DatItems/Formats/Archive.cs b/SabreTools.Metadata.DatItems/Formats/Archive.cs index fefa762a..4a266c33 100644 --- a/SabreTools.Metadata.DatItems/Formats/Archive.cs +++ b/SabreTools.Metadata.DatItems/Formats/Archive.cs @@ -12,6 +12,10 @@ namespace SabreTools.Metadata.DatItems.Formats { #region Fields + /// /> + public override Data.Models.Metadata.ItemType ItemType + => Data.Models.Metadata.ItemType.Archive; + public string? Name { get => (_internal as Data.Models.Metadata.Archive)?.Name; diff --git a/SabreTools.Metadata.DatItems/Formats/BiosSet.cs b/SabreTools.Metadata.DatItems/Formats/BiosSet.cs index dea4e0a7..6d636f81 100644 --- a/SabreTools.Metadata.DatItems/Formats/BiosSet.cs +++ b/SabreTools.Metadata.DatItems/Formats/BiosSet.cs @@ -24,6 +24,10 @@ namespace SabreTools.Metadata.DatItems.Formats set => (_internal as Data.Models.Metadata.BiosSet)?.Description = value; } + /// /> + public override Data.Models.Metadata.ItemType ItemType + => Data.Models.Metadata.ItemType.BiosSet; + public string? Name { get => (_internal as Data.Models.Metadata.BiosSet)?.Name; diff --git a/SabreTools.Metadata.DatItems/Formats/Blank.cs b/SabreTools.Metadata.DatItems/Formats/Blank.cs index c9f0dd8c..7c16d36b 100644 --- a/SabreTools.Metadata.DatItems/Formats/Blank.cs +++ b/SabreTools.Metadata.DatItems/Formats/Blank.cs @@ -10,6 +10,14 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("blank"), XmlRoot("blank")] public sealed class Blank : DatItem { + #region Fields + + /// /> + public override Data.Models.Metadata.ItemType ItemType + => Data.Models.Metadata.ItemType.Blank; + + #endregion + #region Constructors public Blank() : base() { } diff --git a/SabreTools.Metadata.DatItems/Formats/Chip.cs b/SabreTools.Metadata.DatItems/Formats/Chip.cs index 122ddb41..9dcfcd20 100644 --- a/SabreTools.Metadata.DatItems/Formats/Chip.cs +++ b/SabreTools.Metadata.DatItems/Formats/Chip.cs @@ -18,6 +18,10 @@ namespace SabreTools.Metadata.DatItems.Formats set => (_internal as Data.Models.Metadata.Chip)?.ChipType = value; } + /// /> + public override Data.Models.Metadata.ItemType ItemType + => Data.Models.Metadata.ItemType.Chip; + public string? Name { get => (_internal as Data.Models.Metadata.Chip)?.Name; diff --git a/SabreTools.Metadata.DatItems/Formats/Condition.cs b/SabreTools.Metadata.DatItems/Formats/Condition.cs index e5eacb91..3ef6035d 100644 --- a/SabreTools.Metadata.DatItems/Formats/Condition.cs +++ b/SabreTools.Metadata.DatItems/Formats/Condition.cs @@ -12,6 +12,10 @@ namespace SabreTools.Metadata.DatItems.Formats { #region Fields + /// /> + public override Data.Models.Metadata.ItemType ItemType + => Data.Models.Metadata.ItemType.Condition; + public string? Mask { get => (_internal as Data.Models.Metadata.Condition)?.Mask; diff --git a/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs b/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs index 5f1687bc..d1f3296a 100644 --- a/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs +++ b/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs @@ -12,6 +12,10 @@ namespace SabreTools.Metadata.DatItems.Formats { #region Fields + /// /> + public override Data.Models.Metadata.ItemType ItemType + => Data.Models.Metadata.ItemType.ConfLocation; + public string? Name { get => (_internal as Data.Models.Metadata.ConfLocation)?.Name; diff --git a/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs b/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs index 550f7484..4577d6ef 100644 --- a/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs +++ b/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs @@ -28,6 +28,10 @@ namespace SabreTools.Metadata.DatItems.Formats set => (_internal as Data.Models.Metadata.ConfSetting)?.Default = value; } + /// /> + public override Data.Models.Metadata.ItemType ItemType + => Data.Models.Metadata.ItemType.ConfSetting; + public string? Name { get => (_internal as Data.Models.Metadata.ConfSetting)?.Name; diff --git a/SabreTools.Metadata.DatItems/Formats/Configuration.cs b/SabreTools.Metadata.DatItems/Formats/Configuration.cs index 845b6b91..0aebec88 100644 --- a/SabreTools.Metadata.DatItems/Formats/Configuration.cs +++ b/SabreTools.Metadata.DatItems/Formats/Configuration.cs @@ -23,6 +23,10 @@ namespace SabreTools.Metadata.DatItems.Formats } } + /// /> + public override Data.Models.Metadata.ItemType ItemType + => Data.Models.Metadata.ItemType.Configuration; + [JsonIgnore] public bool LocationsSpecified { diff --git a/SabreTools.Metadata.DatItems/Formats/Control.cs b/SabreTools.Metadata.DatItems/Formats/Control.cs index 29b349d0..794e43ac 100644 --- a/SabreTools.Metadata.DatItems/Formats/Control.cs +++ b/SabreTools.Metadata.DatItems/Formats/Control.cs @@ -18,6 +18,10 @@ namespace SabreTools.Metadata.DatItems.Formats set => (_internal as Data.Models.Metadata.Control)?.ControlType = value; } + /// /> + public override Data.Models.Metadata.ItemType ItemType + => Data.Models.Metadata.ItemType.Control; + public bool? Reverse { get => (_internal as Data.Models.Metadata.Control)?.Reverse; diff --git a/SabreTools.Metadata.DatItems/Formats/DataArea.cs b/SabreTools.Metadata.DatItems/Formats/DataArea.cs index f1305250..7c184987 100644 --- a/SabreTools.Metadata.DatItems/Formats/DataArea.cs +++ b/SabreTools.Metadata.DatItems/Formats/DataArea.cs @@ -19,6 +19,10 @@ namespace SabreTools.Metadata.DatItems.Formats set => (_internal as Data.Models.Metadata.DataArea)?.Endianness = value; } + /// /> + public override Data.Models.Metadata.ItemType ItemType + => Data.Models.Metadata.ItemType.DataArea; + public string? Name { get => (_internal as Data.Models.Metadata.DataArea)?.Name; diff --git a/SabreTools.Metadata.DatItems/Formats/Device.cs b/SabreTools.Metadata.DatItems/Formats/Device.cs index c4f2d9c7..6cac1b9d 100644 --- a/SabreTools.Metadata.DatItems/Formats/Device.cs +++ b/SabreTools.Metadata.DatItems/Formats/Device.cs @@ -51,6 +51,10 @@ namespace SabreTools.Metadata.DatItems.Formats set => (_internal as Data.Models.Metadata.Device)?.Interface = value; } + /// /> + public override Data.Models.Metadata.ItemType ItemType + => Data.Models.Metadata.ItemType.Device; + public bool? Mandatory { get => (_internal as Data.Models.Metadata.Device)?.Mandatory; diff --git a/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs b/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs index c8f286cd..9e3b1ad8 100644 --- a/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs +++ b/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs @@ -12,6 +12,10 @@ namespace SabreTools.Metadata.DatItems.Formats { #region Fields + /// /> + public override Data.Models.Metadata.ItemType ItemType + => Data.Models.Metadata.ItemType.DeviceRef; + public string? Name { get => (_internal as Data.Models.Metadata.DeviceRef)?.Name; diff --git a/SabreTools.Metadata.DatItems/Formats/DipLocation.cs b/SabreTools.Metadata.DatItems/Formats/DipLocation.cs index 4ab2c47f..1ac9e7fb 100644 --- a/SabreTools.Metadata.DatItems/Formats/DipLocation.cs +++ b/SabreTools.Metadata.DatItems/Formats/DipLocation.cs @@ -18,6 +18,10 @@ namespace SabreTools.Metadata.DatItems.Formats set => (_internal as Data.Models.Metadata.DipLocation)?.Inverted = value; } + /// /> + public override Data.Models.Metadata.ItemType ItemType + => Data.Models.Metadata.ItemType.DipLocation; + public string? Name { get => (_internal as Data.Models.Metadata.DipLocation)?.Name; diff --git a/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs b/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs index 36f02b7f..8e52ae80 100644 --- a/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs +++ b/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs @@ -39,6 +39,10 @@ namespace SabreTools.Metadata.DatItems.Formats set => (_internal as Data.Models.Metadata.DipSwitch)?.Default = value; } + /// /> + public override Data.Models.Metadata.ItemType ItemType + => Data.Models.Metadata.ItemType.DipSwitch; + [JsonIgnore] public bool LocationsSpecified { @@ -61,16 +65,6 @@ namespace SabreTools.Metadata.DatItems.Formats set => (_internal as Data.Models.Metadata.DipSwitch)?.Name = value; } - [JsonIgnore] - public bool ValuesSpecified - { - get - { - var values = Read(Data.Models.Metadata.DipSwitch.DipValueKey); - return values is not null && values.Length > 0; - } - } - [JsonIgnore] public bool PartSpecified { @@ -89,6 +83,16 @@ namespace SabreTools.Metadata.DatItems.Formats set => (_internal as Data.Models.Metadata.DipSwitch)?.Tag = value; } + [JsonIgnore] + public bool ValuesSpecified + { + get + { + var values = Read(Data.Models.Metadata.DipSwitch.DipValueKey); + return values is not null && values.Length > 0; + } + } + #endregion #region Constructors diff --git a/SabreTools.Metadata.DatItems/Formats/DipValue.cs b/SabreTools.Metadata.DatItems/Formats/DipValue.cs index 7f22f873..7b352539 100644 --- a/SabreTools.Metadata.DatItems/Formats/DipValue.cs +++ b/SabreTools.Metadata.DatItems/Formats/DipValue.cs @@ -28,6 +28,10 @@ namespace SabreTools.Metadata.DatItems.Formats set => (_internal as Data.Models.Metadata.DipValue)?.Default = value; } + /// /> + public override Data.Models.Metadata.ItemType ItemType + => Data.Models.Metadata.ItemType.DipValue; + public string? Name { get => (_internal as Data.Models.Metadata.DipValue)?.Name; diff --git a/SabreTools.Metadata.DatItems/Formats/Disk.cs b/SabreTools.Metadata.DatItems/Formats/Disk.cs index 6fd08022..74bcc47d 100644 --- a/SabreTools.Metadata.DatItems/Formats/Disk.cs +++ b/SabreTools.Metadata.DatItems/Formats/Disk.cs @@ -38,6 +38,9 @@ namespace SabreTools.Metadata.DatItems.Formats } } + /// /> + public override ItemType ItemType => ItemType.Disk; + public string? Name { get => (_internal as Data.Models.Metadata.Disk)?.Name; diff --git a/SabreTools.Metadata.DatItems/Formats/DiskArea.cs b/SabreTools.Metadata.DatItems/Formats/DiskArea.cs index c20895d9..bf556af4 100644 --- a/SabreTools.Metadata.DatItems/Formats/DiskArea.cs +++ b/SabreTools.Metadata.DatItems/Formats/DiskArea.cs @@ -13,6 +13,10 @@ namespace SabreTools.Metadata.DatItems.Formats { #region Fields + /// /> + public override Data.Models.Metadata.ItemType ItemType + => Data.Models.Metadata.ItemType.DiskArea; + public string? Name { get => (_internal as Data.Models.Metadata.DiskArea)?.Name; diff --git a/SabreTools.Metadata.DatItems/Formats/Display.cs b/SabreTools.Metadata.DatItems/Formats/Display.cs index f85e4b1f..e83ac235 100644 --- a/SabreTools.Metadata.DatItems/Formats/Display.cs +++ b/SabreTools.Metadata.DatItems/Formats/Display.cs @@ -25,6 +25,10 @@ namespace SabreTools.Metadata.DatItems.Formats set => (_internal as Data.Models.Metadata.Display)?.FlipX = value; } + /// /> + public override Data.Models.Metadata.ItemType ItemType + => Data.Models.Metadata.ItemType.Display; + public string? Tag { get => (_internal as Data.Models.Metadata.Display)?.Tag; diff --git a/SabreTools.Metadata.DatItems/Formats/Driver.cs b/SabreTools.Metadata.DatItems/Formats/Driver.cs index 18005767..16c46db7 100644 --- a/SabreTools.Metadata.DatItems/Formats/Driver.cs +++ b/SabreTools.Metadata.DatItems/Formats/Driver.cs @@ -42,6 +42,10 @@ namespace SabreTools.Metadata.DatItems.Formats set => (_internal as Data.Models.Metadata.Driver)?.Incomplete = value; } + /// /> + public override Data.Models.Metadata.ItemType ItemType + => Data.Models.Metadata.ItemType.Driver; + public bool? NoSoundHardware { get => (_internal as Data.Models.Metadata.Driver)?.NoSoundHardware; diff --git a/SabreTools.Metadata.DatItems/Formats/Extension.cs b/SabreTools.Metadata.DatItems/Formats/Extension.cs index 29e8511b..718ad072 100644 --- a/SabreTools.Metadata.DatItems/Formats/Extension.cs +++ b/SabreTools.Metadata.DatItems/Formats/Extension.cs @@ -12,6 +12,10 @@ namespace SabreTools.Metadata.DatItems.Formats { #region Fields + /// /> + public override Data.Models.Metadata.ItemType ItemType + => Data.Models.Metadata.ItemType.Extension; + public string? Name { get => (_internal as Data.Models.Metadata.Extension)?.Name; diff --git a/SabreTools.Metadata.DatItems/Formats/Feature.cs b/SabreTools.Metadata.DatItems/Formats/Feature.cs index cf3ed219..15d0e2da 100644 --- a/SabreTools.Metadata.DatItems/Formats/Feature.cs +++ b/SabreTools.Metadata.DatItems/Formats/Feature.cs @@ -18,6 +18,10 @@ namespace SabreTools.Metadata.DatItems.Formats set => (_internal as Data.Models.Metadata.Feature)?.FeatureType = value; } + /// /> + public override Data.Models.Metadata.ItemType ItemType + => Data.Models.Metadata.ItemType.Feature; + public string? Name { get => (_internal as Data.Models.Metadata.Feature)?.Name; diff --git a/SabreTools.Metadata.DatItems/Formats/Info.cs b/SabreTools.Metadata.DatItems/Formats/Info.cs index 1029e8d7..45d2d836 100644 --- a/SabreTools.Metadata.DatItems/Formats/Info.cs +++ b/SabreTools.Metadata.DatItems/Formats/Info.cs @@ -12,6 +12,10 @@ namespace SabreTools.Metadata.DatItems.Formats { #region Fields + /// /> + public override Data.Models.Metadata.ItemType ItemType + => Data.Models.Metadata.ItemType.Info; + public string? Name { get => (_internal as Data.Models.Metadata.Info)?.Name; diff --git a/SabreTools.Metadata.DatItems/Formats/Input.cs b/SabreTools.Metadata.DatItems/Formats/Input.cs index 15ad3e0d..72871570 100644 --- a/SabreTools.Metadata.DatItems/Formats/Input.cs +++ b/SabreTools.Metadata.DatItems/Formats/Input.cs @@ -23,6 +23,10 @@ namespace SabreTools.Metadata.DatItems.Formats } } + /// /> + public override Data.Models.Metadata.ItemType ItemType + => Data.Models.Metadata.ItemType.Input; + public bool? Service { get => (_internal as Data.Models.Metadata.Input)?.Service; diff --git a/SabreTools.Metadata.DatItems/Formats/Instance.cs b/SabreTools.Metadata.DatItems/Formats/Instance.cs index b6d48d6b..82afeae6 100644 --- a/SabreTools.Metadata.DatItems/Formats/Instance.cs +++ b/SabreTools.Metadata.DatItems/Formats/Instance.cs @@ -18,6 +18,10 @@ namespace SabreTools.Metadata.DatItems.Formats set => (_internal as Data.Models.Metadata.Instance)?.BriefName = value; } + /// /> + public override Data.Models.Metadata.ItemType ItemType + => Data.Models.Metadata.ItemType.Instance; + public string? Name { get => (_internal as Data.Models.Metadata.Instance)?.Name; diff --git a/SabreTools.Metadata.DatItems/Formats/Media.cs b/SabreTools.Metadata.DatItems/Formats/Media.cs index 319fcf04..75bc3f0c 100644 --- a/SabreTools.Metadata.DatItems/Formats/Media.cs +++ b/SabreTools.Metadata.DatItems/Formats/Media.cs @@ -13,6 +13,10 @@ namespace SabreTools.Metadata.DatItems.Formats { #region Fields + /// /> + public override Data.Models.Metadata.ItemType ItemType + => Data.Models.Metadata.ItemType.Media; + public string? Name { get => (_internal as Data.Models.Metadata.Media)?.Name; diff --git a/SabreTools.Metadata.DatItems/Formats/Original.cs b/SabreTools.Metadata.DatItems/Formats/Original.cs index 2239723a..ed0038f1 100644 --- a/SabreTools.Metadata.DatItems/Formats/Original.cs +++ b/SabreTools.Metadata.DatItems/Formats/Original.cs @@ -9,12 +9,7 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("original"), XmlRoot("original")] public sealed class Original { - [JsonProperty("value"), XmlElement("value")] - public bool? Value - { - get => _internal.ReadBool(Data.Models.Metadata.Original.ValueKey); - set => _internal[Data.Models.Metadata.Original.ValueKey] = value; - } + #region Fields [JsonProperty("content"), XmlElement("content")] public string? Content @@ -23,6 +18,19 @@ namespace SabreTools.Metadata.DatItems.Formats set => _internal.Content = value; } + /// /> + public Data.Models.Metadata.ItemType ItemType + => Data.Models.Metadata.ItemType.Original; + + [JsonProperty("value"), XmlElement("value")] + public bool? Value + { + get => _internal.ReadBool(Data.Models.Metadata.Original.ValueKey); + set => _internal[Data.Models.Metadata.Original.ValueKey] = value; + } + + #endregion + /// /// Internal Original model /// diff --git a/SabreTools.Metadata.DatItems/Formats/Part.cs b/SabreTools.Metadata.DatItems/Formats/Part.cs index ac9fedc7..da121ff4 100644 --- a/SabreTools.Metadata.DatItems/Formats/Part.cs +++ b/SabreTools.Metadata.DatItems/Formats/Part.cs @@ -29,6 +29,10 @@ namespace SabreTools.Metadata.DatItems.Formats set => (_internal as Data.Models.Metadata.Part)?.Interface = value; } + /// /> + public override Data.Models.Metadata.ItemType ItemType + => Data.Models.Metadata.ItemType.Part; + public string? Name { get => (_internal as Data.Models.Metadata.Part)?.Name; diff --git a/SabreTools.Metadata.DatItems/Formats/PartFeature.cs b/SabreTools.Metadata.DatItems/Formats/PartFeature.cs index edf85427..ac6f0689 100644 --- a/SabreTools.Metadata.DatItems/Formats/PartFeature.cs +++ b/SabreTools.Metadata.DatItems/Formats/PartFeature.cs @@ -28,8 +28,8 @@ namespace SabreTools.Metadata.DatItems.Formats } /// /> - /// This needs to be set to PartFeature because internally it uses Feature - public override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.PartFeature; + public override Data.Models.Metadata.ItemType ItemType + => Data.Models.Metadata.ItemType.PartFeature; public string? Name { diff --git a/SabreTools.Metadata.DatItems/Formats/Port.cs b/SabreTools.Metadata.DatItems/Formats/Port.cs index fbc8da0a..eb19965f 100644 --- a/SabreTools.Metadata.DatItems/Formats/Port.cs +++ b/SabreTools.Metadata.DatItems/Formats/Port.cs @@ -23,6 +23,10 @@ namespace SabreTools.Metadata.DatItems.Formats } } + /// /> + public override Data.Models.Metadata.ItemType ItemType + => Data.Models.Metadata.ItemType.Port; + public string? Tag { get => (_internal as Data.Models.Metadata.Port)?.Tag; diff --git a/SabreTools.Metadata.DatItems/Formats/RamOption.cs b/SabreTools.Metadata.DatItems/Formats/RamOption.cs index a7334869..3c33c5ad 100644 --- a/SabreTools.Metadata.DatItems/Formats/RamOption.cs +++ b/SabreTools.Metadata.DatItems/Formats/RamOption.cs @@ -24,6 +24,10 @@ namespace SabreTools.Metadata.DatItems.Formats set => (_internal as Data.Models.Metadata.RamOption)?.Default = value; } + /// /> + public override Data.Models.Metadata.ItemType ItemType + => Data.Models.Metadata.ItemType.RamOption; + public string? Name { get => (_internal as Data.Models.Metadata.RamOption)?.Name; diff --git a/SabreTools.Metadata.DatItems/Formats/Release.cs b/SabreTools.Metadata.DatItems/Formats/Release.cs index 243badab..2810a57b 100644 --- a/SabreTools.Metadata.DatItems/Formats/Release.cs +++ b/SabreTools.Metadata.DatItems/Formats/Release.cs @@ -18,6 +18,10 @@ namespace SabreTools.Metadata.DatItems.Formats set => (_internal as Data.Models.Metadata.Release)?.Default = value; } + /// /> + public override Data.Models.Metadata.ItemType ItemType + => Data.Models.Metadata.ItemType.Release; + public string? Name { get => (_internal as Data.Models.Metadata.Release)?.Name; diff --git a/SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs b/SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs index 5b639242..eedaefa0 100644 --- a/SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs +++ b/SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs @@ -10,6 +10,14 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("release_details"), XmlRoot("release_details")] public sealed class ReleaseDetails : DatItem { + #region Fields + + /// /> + public override Data.Models.Metadata.ItemType ItemType + => Data.Models.Metadata.ItemType.ReleaseDetails; + + #endregion + #region Constructors public ReleaseDetails() : base() { } diff --git a/SabreTools.Metadata.DatItems/Formats/Rom.cs b/SabreTools.Metadata.DatItems/Formats/Rom.cs index 45b6dd9c..5581774c 100644 --- a/SabreTools.Metadata.DatItems/Formats/Rom.cs +++ b/SabreTools.Metadata.DatItems/Formats/Rom.cs @@ -60,6 +60,9 @@ namespace SabreTools.Metadata.DatItems.Formats set => (_internal as Data.Models.Metadata.Rom)?.Inverted = value; } + /// /> + public override ItemType ItemType => ItemType.Rom; + public LoadFlag? LoadFlag { get => (_internal as Data.Models.Metadata.Rom)?.LoadFlag; diff --git a/SabreTools.Metadata.DatItems/Formats/Sample.cs b/SabreTools.Metadata.DatItems/Formats/Sample.cs index 6ceb2d03..a9a74652 100644 --- a/SabreTools.Metadata.DatItems/Formats/Sample.cs +++ b/SabreTools.Metadata.DatItems/Formats/Sample.cs @@ -12,6 +12,10 @@ namespace SabreTools.Metadata.DatItems.Formats { #region Fields + /// /> + public override Data.Models.Metadata.ItemType ItemType + => Data.Models.Metadata.ItemType.Sample; + public string? Name { get => (_internal as Data.Models.Metadata.Sample)?.Name; diff --git a/SabreTools.Metadata.DatItems/Formats/Serials.cs b/SabreTools.Metadata.DatItems/Formats/Serials.cs index a9e376d6..f6e53643 100644 --- a/SabreTools.Metadata.DatItems/Formats/Serials.cs +++ b/SabreTools.Metadata.DatItems/Formats/Serials.cs @@ -10,6 +10,14 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("serials"), XmlRoot("serials")] public sealed class Serials : DatItem { + #region Fields + + /// /> + public override Data.Models.Metadata.ItemType ItemType + => Data.Models.Metadata.ItemType.Serials; + + #endregion + #region Constructors public Serials() : base() { } diff --git a/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs b/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs index 0a587947..f8482b37 100644 --- a/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs +++ b/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs @@ -12,6 +12,10 @@ namespace SabreTools.Metadata.DatItems.Formats { #region Fields + /// /> + public override Data.Models.Metadata.ItemType ItemType + => Data.Models.Metadata.ItemType.SharedFeat; + public string? Name { get => (_internal as Data.Models.Metadata.SharedFeat)?.Name; diff --git a/SabreTools.Metadata.DatItems/Formats/Slot.cs b/SabreTools.Metadata.DatItems/Formats/Slot.cs index 5fe28517..57ff8143 100644 --- a/SabreTools.Metadata.DatItems/Formats/Slot.cs +++ b/SabreTools.Metadata.DatItems/Formats/Slot.cs @@ -13,6 +13,10 @@ namespace SabreTools.Metadata.DatItems.Formats { #region Fields + /// /> + public override Data.Models.Metadata.ItemType ItemType + => Data.Models.Metadata.ItemType.Slot; + public string? Name { get => (_internal as Data.Models.Metadata.Slot)?.Name; diff --git a/SabreTools.Metadata.DatItems/Formats/SlotOption.cs b/SabreTools.Metadata.DatItems/Formats/SlotOption.cs index aa012659..7b69df2c 100644 --- a/SabreTools.Metadata.DatItems/Formats/SlotOption.cs +++ b/SabreTools.Metadata.DatItems/Formats/SlotOption.cs @@ -24,6 +24,10 @@ namespace SabreTools.Metadata.DatItems.Formats set => (_internal as Data.Models.Metadata.SlotOption)?.DevName = value; } + /// /> + public override Data.Models.Metadata.ItemType ItemType + => Data.Models.Metadata.ItemType.SlotOption; + public string? Name { get => (_internal as Data.Models.Metadata.SlotOption)?.Name; diff --git a/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs b/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs index 4e6b6293..3f23af77 100644 --- a/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs +++ b/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs @@ -18,6 +18,10 @@ namespace SabreTools.Metadata.DatItems.Formats set => (_internal as Data.Models.Metadata.SoftwareList)?.Description = value; } + /// /> + public override Data.Models.Metadata.ItemType ItemType + => Data.Models.Metadata.ItemType.SoftwareList; + public string? Name { get => (_internal as Data.Models.Metadata.SoftwareList)?.Name; diff --git a/SabreTools.Metadata.DatItems/Formats/Sound.cs b/SabreTools.Metadata.DatItems/Formats/Sound.cs index aa40ea59..e726ff69 100644 --- a/SabreTools.Metadata.DatItems/Formats/Sound.cs +++ b/SabreTools.Metadata.DatItems/Formats/Sound.cs @@ -10,6 +10,14 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("sound"), XmlRoot("sound")] public sealed class Sound : DatItem { + #region Fields + + /// /> + public override Data.Models.Metadata.ItemType ItemType + => Data.Models.Metadata.ItemType.Sound; + + #endregion + #region Constructors public Sound() : base() { } diff --git a/SabreTools.Metadata.DatItems/Formats/SourceDetails.cs b/SabreTools.Metadata.DatItems/Formats/SourceDetails.cs index d176b7b5..0d3f9e61 100644 --- a/SabreTools.Metadata.DatItems/Formats/SourceDetails.cs +++ b/SabreTools.Metadata.DatItems/Formats/SourceDetails.cs @@ -10,6 +10,14 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("source_details"), XmlRoot("source_details")] public sealed class SourceDetails : DatItem { + #region Fields + + /// /> + public override Data.Models.Metadata.ItemType ItemType + => Data.Models.Metadata.ItemType.SourceDetails; + + #endregion + #region Constructors public SourceDetails() : base() { } From 49d3d9c09647f2ca4b34d1981c43db784d050c00 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Thu, 2 Apr 2026 22:01:42 -0400 Subject: [PATCH 026/142] Migrate most header string keys to properties --- .../MetadataExtensions.cs | 22 +++ SabreTools.Data.Models/Metadata/Header.cs | 105 ++++++--------- .../DatFileTests.FromMetadata.cs | 84 ++++++------ .../DatFileTests.ToMetadata.cs | 42 +++--- .../DatFileTests.cs | 16 +-- .../DatFile.FromMetadata.cs | 88 ++++++------ SabreTools.Metadata.DatFiles/DatFile.cs | 2 +- SabreTools.Metadata.DatFiles/DatHeader.cs | 126 ++++++++++++++++++ .../Formats/Logiqx.cs | 2 +- .../FilterRunnerTests.cs | 8 +- SabreTools.Metadata.Filter/FilterObject.cs | 63 +++++++++ .../ClrMamePro.Deserializer.cs | 18 +-- .../ClrMamePro.Serializer.cs | 18 +-- .../DosCenter.Deserializer.cs | 10 +- .../DosCenter.Serializer.cs | 10 +- .../Listxml.Deserializer.cs | 4 +- .../Listxml.Serializer.cs | 4 +- .../Logiqx.Deserializer.cs | 26 ++-- .../Logiqx.Serializer.cs | 26 ++-- .../M1.Deserializer.cs | 2 +- .../M1.Serializer.cs | 2 +- .../Mess.Deserializer.cs | 2 +- .../Mess.Serializer.cs | 2 +- .../OfflineList.Deserializer.cs | 12 +- .../OfflineList.Serializer.cs | 6 +- .../OpenMSX.Deserializer.cs | 2 +- .../OpenMSX.Serializer.cs | 2 +- .../RomCenter.Deserializer.cs | 44 +++--- .../RomCenter.Serializer.cs | 22 +-- .../SoftwareList.Deserializer.cs | 2 +- .../SoftwareList.Serializer.cs | 2 +- 31 files changed, 482 insertions(+), 292 deletions(-) diff --git a/SabreTools.Data.Extensions/MetadataExtensions.cs b/SabreTools.Data.Extensions/MetadataExtensions.cs index bf55a13f..89b1116e 100644 --- a/SabreTools.Data.Extensions/MetadataExtensions.cs +++ b/SabreTools.Data.Extensions/MetadataExtensions.cs @@ -258,18 +258,40 @@ namespace SabreTools.Data.Extensions } else if (self is Header selfHeader && clone is Header cloneHeader) { + cloneHeader.Author = selfHeader.Author; cloneHeader.BiosMode = selfHeader.BiosMode; + cloneHeader.Build = selfHeader.Build; + cloneHeader.Category = selfHeader.Category; + cloneHeader.Comment = selfHeader.Comment; + cloneHeader.Date = selfHeader.Date; + cloneHeader.DatVersion = selfHeader.DatVersion; cloneHeader.Debug = selfHeader.Debug; cloneHeader.Description = selfHeader.Description; + cloneHeader.Email = selfHeader.Email; + cloneHeader.EmulatorVersion = selfHeader.EmulatorVersion; cloneHeader.ForceMerging = selfHeader.ForceMerging; cloneHeader.ForceNodump = selfHeader.ForceNodump; cloneHeader.ForcePacking = selfHeader.ForcePacking; cloneHeader.ForceZipping = selfHeader.ForceZipping; + cloneHeader.Homepage = selfHeader.Homepage; + cloneHeader.Id = selfHeader.Id; cloneHeader.LockBiosMode = selfHeader.LockBiosMode; cloneHeader.LockRomMode = selfHeader.LockRomMode; cloneHeader.LockSampleMode = selfHeader.LockSampleMode; + cloneHeader.MameConfig = selfHeader.MameConfig; + cloneHeader.Name = selfHeader.Name; + cloneHeader.Notes = selfHeader.Notes; + cloneHeader.Plugin = selfHeader.Plugin; + cloneHeader.RefName = selfHeader.RefName; cloneHeader.RomMode = selfHeader.RomMode; + cloneHeader.RomTitle = selfHeader.RomTitle; + cloneHeader.RootDir = selfHeader.RootDir; cloneHeader.SampleMode = selfHeader.SampleMode; + cloneHeader.System = selfHeader.System; + cloneHeader.Timestamp = selfHeader.Timestamp; + cloneHeader.Type = selfHeader.Type; + cloneHeader.Url = selfHeader.Url; + cloneHeader.Version = selfHeader.Version; } else if (self is Info selfInfo && clone is Info cloneInfo) { diff --git a/SabreTools.Data.Models/Metadata/Header.cs b/SabreTools.Data.Models/Metadata/Header.cs index e933e9a6..31803fe3 100644 --- a/SabreTools.Data.Models/Metadata/Header.cs +++ b/SabreTools.Data.Models/Metadata/Header.cs @@ -8,14 +8,30 @@ namespace SabreTools.Data.Models.Metadata { #region Properties + public string? Author { get; set; } + /// (none|split|merged|nonmerged|fullmerged|device|full) "split" public MergingFlag BiosMode { get; set; } + public string? Build { get; set; } + + public string? Category { get; set; } + + public string? Comment { get; set; } + + public string? Date { get; set; } + + public string? DatVersion { get; set; } + /// (yes|no) "no" public bool? Debug { get; set; } public string? Description { get; set; } + public string? Email { get; set; } + + public string? EmulatorVersion { get; set; } + /// (none|split|merged|nonmerged|fullmerged|device|full) "split" public MergingFlag ForceMerging { get; set; } @@ -28,6 +44,10 @@ namespace SabreTools.Data.Models.Metadata /// (yes|no) "yes" public bool? ForceZipping { get; set; } + public string? Homepage { get; set; } + + public string? Id { get; set; } + /// (yes|no) "no" public bool? LockBiosMode { get; set; } @@ -37,56 +57,48 @@ namespace SabreTools.Data.Models.Metadata /// (yes|no) "no" public bool? LockSampleMode { get; set; } + public string? MameConfig { get; set; } + public string? Name { get; set; } + public string? Notes { get; set; } + + public string? Plugin { get; set; } + + public string? RefName { get; set; } + /// (none|split|merged|nonmerged|fullmerged|device|full) "split" public MergingFlag RomMode { get; set; } + public string? RomTitle { get; set; } + + public string? RootDir { get; set; } + /// (none|split|merged|nonmerged|fullmerged|device|full) "split" public MergingFlag SampleMode { get; set; } + public string? System { get; set; } + + public string? Timestamp { get; set; } + + public string? Type { get; set; } + + public string? Url { get; set; } + + public string? Version { get; set; } + #endregion #region Keys - /// string - public const string AuthorKey = "author"; - - /// string - public const string BuildKey = "build"; - /// TODO: This needs an internal model OR mapping to fields /// CanOpen [NoFilter] public const string CanOpenKey = "canOpen"; - /// string - public const string CategoryKey = "category"; - - /// string - public const string CommentKey = "comment"; - - /// string - public const string DateKey = "date"; - - /// string - public const string DatVersionKey = "datversion"; - - /// string - public const string EmailKey = "email"; - - /// string - public const string EmulatorVersionKey = "emulatorversion"; - /// string, string[] public const string HeaderKey = "header"; - /// string - public const string HomepageKey = "homepage"; - - /// string - public const string IdKey = "id"; - /// TODO: This needs an internal model OR mapping to fields /// Search [NoFilter] @@ -100,29 +112,11 @@ namespace SabreTools.Data.Models.Metadata [NoFilter] public const string InfosKey = "infos"; - /// string - public const string MameConfigKey = "mameconfig"; - /// TODO: This needs an internal model OR mapping to fields /// NewDat [NoFilter] public const string NewDatKey = "newDat"; - /// string - public const string NotesKey = "notes"; - - /// string - public const string PluginKey = "plugin"; - - /// string - public const string RefNameKey = "refname"; - - /// string - public const string RomTitleKey = "romTitle"; - - /// string - public const string RootDirKey = "rootdir"; - /// string public const string SchemaLocationKey = "schemaLocation"; @@ -137,21 +131,6 @@ namespace SabreTools.Data.Models.Metadata [NoFilter] public const string SearchKey = "search"; - /// string - public const string SystemKey = "system"; - - /// string - public const string TimestampKey = "timestamp"; - - /// string - public const string TypeKey = "type"; - - /// string - public const string UrlKey = "url"; - - /// string - public const string VersionKey = "version"; - #endregion } } diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs index 74f5a646..7bbcd309 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs @@ -201,50 +201,50 @@ namespace SabreTools.Metadata.DatFiles.Test return new Data.Models.Metadata.Header { - [Data.Models.Metadata.Header.AuthorKey] = "author", + Author = "author", BiosMode = Data.Models.Metadata.MergingFlag.Merged, - [Data.Models.Metadata.Header.BuildKey] = "build", + Build = "build", [Data.Models.Metadata.Header.CanOpenKey] = canOpen, - [Data.Models.Metadata.Header.CategoryKey] = "category", - [Data.Models.Metadata.Header.CommentKey] = "comment", - [Data.Models.Metadata.Header.DateKey] = "date", - [Data.Models.Metadata.Header.DatVersionKey] = "datversion", + Category = "category", + Comment = "comment", + Date = "date", + DatVersion = "datversion", Debug = true, Description = "description", - [Data.Models.Metadata.Header.EmailKey] = "email", - [Data.Models.Metadata.Header.EmulatorVersionKey] = "emulatorversion", + Email = "email", + EmulatorVersion = "emulatorversion", ForceMerging = Data.Models.Metadata.MergingFlag.Merged, ForceNodump = Data.Models.Metadata.NodumpFlag.Required, ForcePacking = Data.Models.Metadata.PackingFlag.Zip, ForceZipping = true, [Data.Models.Metadata.Header.HeaderKey] = "header", - [Data.Models.Metadata.Header.HomepageKey] = "homepage", - [Data.Models.Metadata.Header.IdKey] = "id", + Homepage = "homepage", + Id = "id", [Data.Models.Metadata.Header.ImagesKey] = images, [Data.Models.Metadata.Header.ImFolderKey] = "imfolder", [Data.Models.Metadata.Header.InfosKey] = infos, LockBiosMode = true, LockRomMode = true, LockSampleMode = true, - [Data.Models.Metadata.Header.MameConfigKey] = "mameconfig", + MameConfig = "mameconfig", Name = "name", [Data.Models.Metadata.Header.NewDatKey] = newDat, - [Data.Models.Metadata.Header.NotesKey] = "notes", - [Data.Models.Metadata.Header.PluginKey] = "plugin", - [Data.Models.Metadata.Header.RefNameKey] = "refname", + Notes = "notes", + Plugin = "plugin", + RefName = "refname", RomMode = Data.Models.Metadata.MergingFlag.Merged, - [Data.Models.Metadata.Header.RomTitleKey] = "romtitle", - [Data.Models.Metadata.Header.RootDirKey] = "rootdir", + RomTitle = "romtitle", + RootDir = "rootdir", SampleMode = Data.Models.Metadata.MergingFlag.Merged, [Data.Models.Metadata.Header.SchemaLocationKey] = "schemalocation", [Data.Models.Metadata.Header.ScreenshotsHeightKey] = "screenshotsheight", [Data.Models.Metadata.Header.ScreenshotsWidthKey] = "screenshotsWidth", [Data.Models.Metadata.Header.SearchKey] = search, - [Data.Models.Metadata.Header.SystemKey] = "system", - [Data.Models.Metadata.Header.TimestampKey] = "timestamp", - [Data.Models.Metadata.Header.TypeKey] = "type", - [Data.Models.Metadata.Header.UrlKey] = "url", - [Data.Models.Metadata.Header.VersionKey] = "version", + System = "system", + Timestamp = "timestamp", + Type = "type", + Url = "url", + Version = "version", }; } @@ -1037,50 +1037,50 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateHeader(DatHeader datHeader) { - Assert.Equal("author", datHeader.ReadString(Data.Models.Metadata.Header.AuthorKey)); + Assert.Equal("author", datHeader.Author); Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, datHeader.BiosMode); - Assert.Equal("build", datHeader.ReadString(Data.Models.Metadata.Header.BuildKey)); + Assert.Equal("build", datHeader.Build); Assert.Equal("ext", datHeader.ReadString(Data.Models.Metadata.Header.CanOpenKey)); - Assert.Equal("category", datHeader.ReadString(Data.Models.Metadata.Header.CategoryKey)); - Assert.Equal("comment", datHeader.ReadString(Data.Models.Metadata.Header.CommentKey)); - Assert.Equal("date", datHeader.ReadString(Data.Models.Metadata.Header.DateKey)); - Assert.Equal("datversion", datHeader.ReadString(Data.Models.Metadata.Header.DatVersionKey)); + Assert.Equal("category", datHeader.Category); + Assert.Equal("comment", datHeader.Comment); + Assert.Equal("date", datHeader.Date); + Assert.Equal("datversion", datHeader.DatVersion); Assert.True(datHeader.Debug); Assert.Equal("description", datHeader.Description); - Assert.Equal("email", datHeader.ReadString(Data.Models.Metadata.Header.EmailKey)); - Assert.Equal("emulatorversion", datHeader.ReadString(Data.Models.Metadata.Header.EmulatorVersionKey)); + Assert.Equal("email", datHeader.Email); + Assert.Equal("emulatorversion", datHeader.EmulatorVersion); Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, datHeader.ForceMerging); Assert.Equal(Data.Models.Metadata.NodumpFlag.Required, datHeader.ForceNodump); Assert.Equal(Data.Models.Metadata.PackingFlag.Zip, datHeader.ForcePacking); Assert.True(datHeader.ForceZipping); Assert.Equal("header", datHeader.ReadString(Data.Models.Metadata.Header.HeaderKey)); - Assert.Equal("homepage", datHeader.ReadString(Data.Models.Metadata.Header.HomepageKey)); - Assert.Equal("id", datHeader.ReadString(Data.Models.Metadata.Header.IdKey)); + Assert.Equal("homepage", datHeader.Homepage); + Assert.Equal("id", datHeader.Id); Assert.NotNull(datHeader.ReadString(Data.Models.Metadata.Header.ImagesKey)); Assert.Equal("imfolder", datHeader.ReadString(Data.Models.Metadata.Header.ImFolderKey)); Assert.NotNull(datHeader.ReadString(Data.Models.Metadata.Header.InfosKey)); Assert.True(datHeader.LockBiosMode); Assert.True(datHeader.LockRomMode); Assert.True(datHeader.LockSampleMode); - Assert.Equal("mameconfig", datHeader.ReadString(Data.Models.Metadata.Header.MameConfigKey)); + Assert.Equal("mameconfig", datHeader.MameConfig); Assert.Equal("name", datHeader.Name); Assert.NotNull(datHeader.ReadString(Data.Models.Metadata.Header.NewDatKey)); - Assert.Equal("notes", datHeader.ReadString(Data.Models.Metadata.Header.NotesKey)); - Assert.Equal("plugin", datHeader.ReadString(Data.Models.Metadata.Header.PluginKey)); - Assert.Equal("refname", datHeader.ReadString(Data.Models.Metadata.Header.RefNameKey)); + Assert.Equal("notes", datHeader.Notes); + Assert.Equal("plugin", datHeader.Plugin); + Assert.Equal("refname", datHeader.RefName); Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, datHeader.RomMode); - Assert.Equal("romtitle", datHeader.ReadString(Data.Models.Metadata.Header.RomTitleKey)); - Assert.Equal("rootdir", datHeader.ReadString(Data.Models.Metadata.Header.RootDirKey)); + Assert.Equal("romtitle", datHeader.RomTitle); + Assert.Equal("rootdir", datHeader.RootDir); Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, datHeader.SampleMode); Assert.Equal("schemalocation", datHeader.ReadString(Data.Models.Metadata.Header.SchemaLocationKey)); Assert.Equal("screenshotsheight", datHeader.ReadString(Data.Models.Metadata.Header.ScreenshotsHeightKey)); Assert.Equal("screenshotsWidth", datHeader.ReadString(Data.Models.Metadata.Header.ScreenshotsWidthKey)); Assert.NotNull(datHeader.ReadString(Data.Models.Metadata.Header.SearchKey)); - Assert.Equal("system", datHeader.ReadString(Data.Models.Metadata.Header.SystemKey)); - Assert.Equal("timestamp", datHeader.ReadString(Data.Models.Metadata.Header.TimestampKey)); - Assert.Equal("type", datHeader.ReadString(Data.Models.Metadata.Header.TypeKey)); - Assert.Equal("url", datHeader.ReadString(Data.Models.Metadata.Header.UrlKey)); - Assert.Equal("version", datHeader.ReadString(Data.Models.Metadata.Header.VersionKey)); + Assert.Equal("system", datHeader.System); + Assert.Equal("timestamp", datHeader.Timestamp); + Assert.Equal("type", datHeader.Type); + Assert.Equal("url", datHeader.Url); + Assert.Equal("version", datHeader.Version); } #pragma warning disable IDE0051 diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs index edc3c678..9345937e 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs @@ -373,50 +373,50 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateMetadataHeader(Data.Models.Metadata.Header? header) { Assert.NotNull(header); - Assert.Equal("author", header.ReadString(Data.Models.Metadata.Header.AuthorKey)); + Assert.Equal("author", header.Author); Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, header.BiosMode); - Assert.Equal("build", header.ReadString(Data.Models.Metadata.Header.BuildKey)); + Assert.Equal("build", header.Build); Assert.NotNull(header.Read(Data.Models.Metadata.Header.CanOpenKey)); - Assert.Equal("category", header.ReadString(Data.Models.Metadata.Header.CategoryKey)); - Assert.Equal("comment", header.ReadString(Data.Models.Metadata.Header.CommentKey)); - Assert.Equal("date", header.ReadString(Data.Models.Metadata.Header.DateKey)); - Assert.Equal("datversion", header.ReadString(Data.Models.Metadata.Header.DatVersionKey)); + Assert.Equal("category", header.Category); + Assert.Equal("comment", header.Comment); + Assert.Equal("date", header.Date); + Assert.Equal("datversion", header.DatVersion); Assert.True(header.Debug); Assert.Equal("description", header.Description); - Assert.Equal("email", header.ReadString(Data.Models.Metadata.Header.EmailKey)); - Assert.Equal("emulatorversion", header.ReadString(Data.Models.Metadata.Header.EmulatorVersionKey)); + Assert.Equal("email", header.Email); + Assert.Equal("emulatorversion", header.EmulatorVersion); Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, header.ForceMerging); Assert.Equal(Data.Models.Metadata.NodumpFlag.Required, header.ForceNodump); Assert.Equal(Data.Models.Metadata.PackingFlag.Zip, header.ForcePacking); Assert.True(header.ForceZipping); Assert.Equal("header", header.ReadString(Data.Models.Metadata.Header.HeaderKey)); - Assert.Equal("homepage", header.ReadString(Data.Models.Metadata.Header.HomepageKey)); - Assert.Equal("id", header.ReadString(Data.Models.Metadata.Header.IdKey)); + Assert.Equal("homepage", header.Homepage); + Assert.Equal("id", header.Id); Assert.NotNull(header.Read(Data.Models.Metadata.Header.ImagesKey)); Assert.Equal("imfolder", header.ReadString(Data.Models.Metadata.Header.ImFolderKey)); Assert.NotNull(header.Read(Data.Models.Metadata.Header.InfosKey)); Assert.True(header.LockBiosMode); Assert.True(header.LockRomMode); Assert.True(header.LockSampleMode); - Assert.Equal("mameconfig", header.ReadString(Data.Models.Metadata.Header.MameConfigKey)); + Assert.Equal("mameconfig", header.MameConfig); Assert.Equal("name", header.Name); Assert.NotNull(header.Read(Data.Models.Metadata.Header.NewDatKey)); - Assert.Equal("notes", header.ReadString(Data.Models.Metadata.Header.NotesKey)); - Assert.Equal("plugin", header.ReadString(Data.Models.Metadata.Header.PluginKey)); - Assert.Equal("refname", header.ReadString(Data.Models.Metadata.Header.RefNameKey)); + Assert.Equal("notes", header.Notes); + Assert.Equal("plugin", header.Plugin); + Assert.Equal("refname", header.RefName); Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, header.RomMode); - Assert.Equal("romtitle", header.ReadString(Data.Models.Metadata.Header.RomTitleKey)); - Assert.Equal("rootdir", header.ReadString(Data.Models.Metadata.Header.RootDirKey)); + Assert.Equal("romtitle", header.RomTitle); + Assert.Equal("rootdir", header.RootDir); Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, header.SampleMode); Assert.Equal("schemalocation", header.ReadString(Data.Models.Metadata.Header.SchemaLocationKey)); Assert.Equal("screenshotsheight", header.ReadString(Data.Models.Metadata.Header.ScreenshotsHeightKey)); Assert.Equal("screenshotsWidth", header.ReadString(Data.Models.Metadata.Header.ScreenshotsWidthKey)); Assert.NotNull(header.Read(Data.Models.Metadata.Header.SearchKey)); - Assert.Equal("system", header.ReadString(Data.Models.Metadata.Header.SystemKey)); - Assert.Equal("timestamp", header.ReadString(Data.Models.Metadata.Header.TimestampKey)); - Assert.Equal("type", header.ReadString(Data.Models.Metadata.Header.TypeKey)); - Assert.Equal("url", header.ReadString(Data.Models.Metadata.Header.UrlKey)); - Assert.Equal("version", header.ReadString(Data.Models.Metadata.Header.VersionKey)); + Assert.Equal("system", header.System); + Assert.Equal("timestamp", header.Timestamp); + Assert.Equal("type", header.Type); + Assert.Equal("url", header.Url); + Assert.Equal("version", header.Version); } private static void ValidateMetadataMachine(Data.Models.Metadata.Machine machine) diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.cs index 19683978..0987c682 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.cs @@ -115,7 +115,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatFile datFile = new Logiqx(datFile: null, useGame: false); datFile.Header.Name = string.Empty; datFile.Header.Description = string.Empty; - datFile.Header.Write(Data.Models.Metadata.Header.DateKey, "1980-01-01"); + datFile.Header.Date = "1980-01-01"; string path = Path.Combine("Fake", "Path", "Filename"); datFile.FillHeaderFromPath(path, false); @@ -130,7 +130,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatFile datFile = new Logiqx(datFile: null, useGame: false); datFile.Header.Name = string.Empty; datFile.Header.Description = string.Empty; - datFile.Header.Write(Data.Models.Metadata.Header.DateKey, "1980-01-01"); + datFile.Header.Date = "1980-01-01"; string path = Path.Combine("Fake", "Path", "Filename"); datFile.FillHeaderFromPath(path, true); @@ -145,7 +145,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatFile datFile = new Logiqx(datFile: null, useGame: false); datFile.Header.Name = string.Empty; datFile.Header.Description = "Description"; - datFile.Header.Write(Data.Models.Metadata.Header.DateKey, "1980-01-01"); + datFile.Header.Date = "1980-01-01"; string path = Path.Combine("Fake", "Path", "Filename"); datFile.FillHeaderFromPath(path, false); @@ -160,7 +160,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatFile datFile = new Logiqx(datFile: null, useGame: false); datFile.Header.Name = string.Empty; datFile.Header.Description = "Description"; - datFile.Header.Write(Data.Models.Metadata.Header.DateKey, "1980-01-01"); + datFile.Header.Date = "1980-01-01"; string path = Path.Combine("Fake", "Path", "Filename"); datFile.FillHeaderFromPath(path, true); @@ -175,7 +175,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatFile datFile = new Logiqx(datFile: null, useGame: false); datFile.Header.Name = "Name"; datFile.Header.Description = string.Empty; - datFile.Header.Write(Data.Models.Metadata.Header.DateKey, "1980-01-01"); + datFile.Header.Date = "1980-01-01"; string path = Path.Combine("Fake", "Path", "Filename"); datFile.FillHeaderFromPath(path, false); @@ -190,7 +190,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatFile datFile = new Logiqx(datFile: null, useGame: false); datFile.Header.Name = "Name"; datFile.Header.Description = string.Empty; - datFile.Header.Write(Data.Models.Metadata.Header.DateKey, "1980-01-01"); + datFile.Header.Date = "1980-01-01"; string path = Path.Combine("Fake", "Path", "Filename"); datFile.FillHeaderFromPath(path, true); @@ -205,7 +205,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatFile datFile = new Logiqx(datFile: null, useGame: false); datFile.Header.Name = "Name"; datFile.Header.Description = "Description"; - datFile.Header.Write(Data.Models.Metadata.Header.DateKey, "1980-01-01"); + datFile.Header.Date = "1980-01-01"; string path = Path.Combine("Fake", "Path", "Filename"); datFile.FillHeaderFromPath(path, false); @@ -220,7 +220,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatFile datFile = new Logiqx(datFile: null, useGame: false); datFile.Header.Name = "Name "; datFile.Header.Description = "Description "; - datFile.Header.Write(Data.Models.Metadata.Header.DateKey, "1980-01-01"); + datFile.Header.Date = "1980-01-01"; string path = Path.Combine("Fake", "Path", "Filename"); datFile.FillHeaderFromPath(path, true); diff --git a/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs b/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs index ba404243..d935a962 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs @@ -90,28 +90,28 @@ namespace SabreTools.Metadata.DatFiles Header.Write(Data.Models.Metadata.Header.SearchKey, search); // Selectively set all possible fields -- TODO: Figure out how to make this less manual - if (Header.ReadString(Data.Models.Metadata.Header.AuthorKey) is null) - Header.Write(Data.Models.Metadata.Header.AuthorKey, header.ReadString(Data.Models.Metadata.Header.AuthorKey)); + if (Header.Author is null) + Header.Author = header.Author; if (Header.BiosMode == MergingFlag.None) Header.BiosMode = header.BiosMode; - if (Header.ReadString(Data.Models.Metadata.Header.BuildKey) is null) - Header.Write(Data.Models.Metadata.Header.BuildKey, header.ReadString(Data.Models.Metadata.Header.BuildKey)); - if (Header.ReadString(Data.Models.Metadata.Header.CategoryKey) is null) - Header.Write(Data.Models.Metadata.Header.CategoryKey, header.ReadString(Data.Models.Metadata.Header.CategoryKey)); - if (Header.ReadString(Data.Models.Metadata.Header.CommentKey) is null) - Header.Write(Data.Models.Metadata.Header.CommentKey, header.ReadString(Data.Models.Metadata.Header.CommentKey)); - if (Header.ReadString(Data.Models.Metadata.Header.DateKey) is null) - Header.Write(Data.Models.Metadata.Header.DateKey, header.ReadString(Data.Models.Metadata.Header.DateKey)); - if (Header.ReadString(Data.Models.Metadata.Header.DatVersionKey) is null) - Header.Write(Data.Models.Metadata.Header.DatVersionKey, header.ReadString(Data.Models.Metadata.Header.DatVersionKey)); + if (Header.Build is null) + Header.Build = header.Build; + if (Header.Category is null) + Header.Category = header.Category; + if (Header.Comment is null) + Header.Comment = header.Comment; + if (Header.Date is null) + Header.Date = header.Date; + if (Header.DatVersion is null) + Header.DatVersion = header.DatVersion; if (Header.Debug is null) Header.Debug = header.Debug; if (Header.Description is null) Header.Description = header.Description; - if (Header.ReadString(Data.Models.Metadata.Header.EmailKey) is null) - Header.Write(Data.Models.Metadata.Header.EmailKey, header.ReadString(Data.Models.Metadata.Header.EmailKey)); - if (Header.ReadString(Data.Models.Metadata.Header.EmulatorVersionKey) is null) - Header.Write(Data.Models.Metadata.Header.EmulatorVersionKey, header.ReadString(Data.Models.Metadata.Header.EmulatorVersionKey)); + if (Header.Email is null) + Header.Email = header.Email; + if (Header.EmulatorVersion is null) + Header.EmulatorVersion = header.EmulatorVersion; if (Header.ForceMerging == MergingFlag.None) Header.ForceMerging = header.ForceMerging; if (Header.ForceNodump == NodumpFlag.None) @@ -122,10 +122,10 @@ namespace SabreTools.Metadata.DatFiles Header.ForceZipping = header.ForceZipping; if (Header.ReadString(Data.Models.Metadata.Header.HeaderKey) is null) Header.Write(Data.Models.Metadata.Header.HeaderKey, header.ReadString(Data.Models.Metadata.Header.HeaderKey)); - if (Header.ReadString(Data.Models.Metadata.Header.HomepageKey) is null) - Header.Write(Data.Models.Metadata.Header.HomepageKey, header.ReadString(Data.Models.Metadata.Header.HomepageKey)); - if (Header.ReadString(Data.Models.Metadata.Header.IdKey) is null) - Header.Write(Data.Models.Metadata.Header.IdKey, header.ReadString(Data.Models.Metadata.Header.IdKey)); + if (Header.Homepage is null) + Header.Homepage = header.Homepage; + if (Header.Id is null) + Header.Id = header.Id; if (Header.ReadString(Data.Models.Metadata.Header.ImFolderKey) is null) Header.Write(Data.Models.Metadata.Header.ImFolderKey, header.ReadString(Data.Models.Metadata.Header.ImFolderKey)); if (Header.LockBiosMode is null) @@ -134,22 +134,22 @@ namespace SabreTools.Metadata.DatFiles Header.LockRomMode = header.LockRomMode; if (Header.LockSampleMode is null) Header.LockSampleMode = header.LockSampleMode; - if (Header.ReadString(Data.Models.Metadata.Header.MameConfigKey) is null) - Header.Write(Data.Models.Metadata.Header.MameConfigKey, header.ReadString(Data.Models.Metadata.Header.MameConfigKey)); + if (Header.MameConfig is null) + Header.MameConfig = header.MameConfig; if (Header.Name is null) Header.Name = header.Name; - if (Header.ReadString(Data.Models.Metadata.Header.NotesKey) is null) - Header.Write(Data.Models.Metadata.Header.NotesKey, header.ReadString(Data.Models.Metadata.Header.NotesKey)); - if (Header.ReadString(Data.Models.Metadata.Header.PluginKey) is null) - Header.Write(Data.Models.Metadata.Header.PluginKey, header.ReadString(Data.Models.Metadata.Header.PluginKey)); - if (Header.ReadString(Data.Models.Metadata.Header.RefNameKey) is null) - Header.Write(Data.Models.Metadata.Header.RefNameKey, header.ReadString(Data.Models.Metadata.Header.RefNameKey)); + if (Header.Notes is null) + Header.Notes = header.Notes; + if (Header.Plugin is null) + Header.Plugin = header.Plugin; + if (Header.RefName is null) + Header.RefName = header.RefName; if (Header.RomMode == MergingFlag.None) Header.RomMode = header.RomMode; - if (Header.ReadString(Data.Models.Metadata.Header.RomTitleKey) is null) - Header.Write(Data.Models.Metadata.Header.RomTitleKey, header.ReadString(Data.Models.Metadata.Header.RomTitleKey)); - if (Header.ReadString(Data.Models.Metadata.Header.RootDirKey) is null) - Header.Write(Data.Models.Metadata.Header.RootDirKey, header.ReadString(Data.Models.Metadata.Header.RootDirKey)); + if (Header.RomTitle is null) + Header.RomTitle = header.RomTitle; + if (Header.RootDir is null) + Header.RootDir = header.RootDir; if (Header.SampleMode == MergingFlag.None) Header.SampleMode = header.SampleMode; if (Header.ReadString(Data.Models.Metadata.Header.SchemaLocationKey) is null) @@ -158,22 +158,22 @@ namespace SabreTools.Metadata.DatFiles Header.Write(Data.Models.Metadata.Header.ScreenshotsHeightKey, header.ReadString(Data.Models.Metadata.Header.ScreenshotsHeightKey)); if (Header.ReadString(Data.Models.Metadata.Header.ScreenshotsWidthKey) is null) Header.Write(Data.Models.Metadata.Header.ScreenshotsWidthKey, header.ReadString(Data.Models.Metadata.Header.ScreenshotsWidthKey)); - if (Header.ReadString(Data.Models.Metadata.Header.SystemKey) is null) - Header.Write(Data.Models.Metadata.Header.SystemKey, header.ReadString(Data.Models.Metadata.Header.SystemKey)); - if (Header.ReadString(Data.Models.Metadata.Header.TimestampKey) is null) - Header.Write(Data.Models.Metadata.Header.TimestampKey, header.ReadString(Data.Models.Metadata.Header.TimestampKey)); - if (Header.ReadString(Data.Models.Metadata.Header.TypeKey) is null) - Header.Write(Data.Models.Metadata.Header.TypeKey, header.ReadString(Data.Models.Metadata.Header.TypeKey)); - if (Header.ReadString(Data.Models.Metadata.Header.UrlKey) is null) - Header.Write(Data.Models.Metadata.Header.UrlKey, header.ReadString(Data.Models.Metadata.Header.UrlKey)); - if (Header.ReadString(Data.Models.Metadata.Header.VersionKey) is null) - Header.Write(Data.Models.Metadata.Header.VersionKey, header.ReadString(Data.Models.Metadata.Header.VersionKey)); + if (Header.System is null) + Header.System = header.System; + if (Header.Timestamp is null) + Header.Timestamp = header.Timestamp; + if (Header.Type is null) + Header.Type = header.Type; + if (Header.Url is null) + Header.Url = header.Url; + if (Header.Version is null) + Header.Version = header.Version; // Handle implied SuperDAT if (Header.Name?.Contains(" - SuperDAT") == true && keep) { - if (Header.ReadString(Data.Models.Metadata.Header.TypeKey) is null) - Header.Write(Data.Models.Metadata.Header.TypeKey, "SuperDAT"); + if (Header.Type is null) + Header.Type = "SuperDAT"; } } diff --git a/SabreTools.Metadata.DatFiles/DatFile.cs b/SabreTools.Metadata.DatFiles/DatFile.cs index ebcfa269..6ce84666 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.cs @@ -97,7 +97,7 @@ namespace SabreTools.Metadata.DatFiles // Get the header strings string? name = Header.Name; string? description = Header.Description; - string? date = Header.ReadString(Data.Models.Metadata.Header.DateKey); + string? date = Header.Date; // If the description is defined but not the name, set the name from the description if (string.IsNullOrEmpty(name) && !string.IsNullOrEmpty(description)) diff --git a/SabreTools.Metadata.DatFiles/DatHeader.cs b/SabreTools.Metadata.DatFiles/DatHeader.cs index 0a42f5ab..a1de654f 100644 --- a/SabreTools.Metadata.DatFiles/DatHeader.cs +++ b/SabreTools.Metadata.DatFiles/DatHeader.cs @@ -31,12 +31,24 @@ namespace SabreTools.Metadata.DatFiles #region Fields + public string? Author + { + get => _internal.Author; + set => _internal.Author = value; + } + public MergingFlag BiosMode { get => _internal.BiosMode; set => _internal.BiosMode = value; } + public string? Build + { + get => _internal.Build; + set => _internal.Build = value; + } + [JsonIgnore] public bool CanOpenSpecified { @@ -47,6 +59,30 @@ namespace SabreTools.Metadata.DatFiles } } + public string? Category + { + get => _internal.Category; + set => _internal.Category = value; + } + + public string? Comment + { + get => _internal.Comment; + set => _internal.Comment = value; + } + + public string? Date + { + get => _internal.Date; + set => _internal.Date = value; + } + + public string? DatVersion + { + get => _internal.DatVersion; + set => _internal.DatVersion = value; + } + public bool? Debug { get => _internal.Debug; @@ -59,6 +95,18 @@ namespace SabreTools.Metadata.DatFiles set => _internal.Description = value; } + public string? Email + { + get => _internal.Email; + set => _internal.Email = value; + } + + public string? EmulatorVersion + { + get => _internal.EmulatorVersion; + set => _internal.EmulatorVersion = value; + } + public MergingFlag ForceMerging { get => _internal.ForceMerging; @@ -83,6 +131,18 @@ namespace SabreTools.Metadata.DatFiles set => _internal.ForceZipping = value; } + public string? Homepage + { + get => _internal.Homepage; + set => _internal.Homepage = value; + } + + public string? Id + { + get => _internal.Id; + set => _internal.Id = value; + } + [JsonIgnore] public bool ImagesSpecified { @@ -119,6 +179,12 @@ namespace SabreTools.Metadata.DatFiles set => _internal.LockSampleMode = value; } + public string? MameConfig + { + get => _internal.MameConfig; + set => _internal.MameConfig = value; + } + public string? Name { get => _internal.Name; @@ -134,12 +200,42 @@ namespace SabreTools.Metadata.DatFiles } } + public string? Notes + { + get => _internal.Notes; + set => _internal.Notes = value; + } + + public string? Plugin + { + get => _internal.Plugin; + set => _internal.Plugin = value; + } + + public string? RefName + { + get => _internal.RefName; + set => _internal.RefName = value; + } + public MergingFlag RomMode { get => _internal.RomMode; set => _internal.RomMode = value; } + public string? RomTitle + { + get => _internal.RomTitle; + set => _internal.RomTitle = value; + } + + public string? RootDir + { + get => _internal.RootDir; + set => _internal.RootDir = value; + } + public MergingFlag SampleMode { get => _internal.SampleMode; @@ -155,6 +251,36 @@ namespace SabreTools.Metadata.DatFiles } } + public string? System + { + get => _internal.System; + set => _internal.System = value; + } + + public string? Timestamp + { + get => _internal.Timestamp; + set => _internal.Timestamp = value; + } + + public string? Type + { + get => _internal.Type; + set => _internal.Type = value; + } + + public string? Url + { + get => _internal.Url; + set => _internal.Url = value; + } + + public string? Version + { + get => _internal.Version; + set => _internal.Version = value; + } + #endregion #region Constructors diff --git a/SabreTools.Metadata.DatFiles/Formats/Logiqx.cs b/SabreTools.Metadata.DatFiles/Formats/Logiqx.cs index 6175d740..677968b5 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Logiqx.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Logiqx.cs @@ -384,7 +384,7 @@ namespace SabreTools.Metadata.DatFiles.Formats // TODO: Enable No-Intro doctype writing instead of Logiqx // Only write the doctype if we don't have No-Intro data bool success; - if (string.IsNullOrEmpty(Header.ReadString(Data.Models.Metadata.Header.IdKey))) + if (string.IsNullOrEmpty(Header.Id)) success = new Serialization.Writers.Logiqx().SerializeFile(datafile, outfile); else success = new Serialization.Writers.Logiqx().SerializeFile(datafile, outfile); diff --git a/SabreTools.Metadata.Filter.Test/FilterRunnerTests.cs b/SabreTools.Metadata.Filter.Test/FilterRunnerTests.cs index f80ddb49..29e258fe 100644 --- a/SabreTools.Metadata.Filter.Test/FilterRunnerTests.cs +++ b/SabreTools.Metadata.Filter.Test/FilterRunnerTests.cs @@ -33,7 +33,7 @@ namespace SabreTools.Metadata.Filter.Test [Fact] public void Header_Null_False() { - var header = new Header { [Header.AuthorKey] = null }; + var header = new Header { Author = null }; bool actual = _filterRunner.Run(header); Assert.False(actual); } @@ -41,7 +41,7 @@ namespace SabreTools.Metadata.Filter.Test [Fact] public void Header_Empty_False() { - var header = new Header { [Header.AuthorKey] = "" }; + var header = new Header { Author = "" }; bool actual = _filterRunner.Run(header); Assert.False(actual); } @@ -49,7 +49,7 @@ namespace SabreTools.Metadata.Filter.Test [Fact] public void Header_Incorrect_False() { - var header = new Header { [Header.AuthorKey] = "NO_MATCH" }; + var header = new Header { Author = "NO_MATCH" }; bool actual = _filterRunner.Run(header); Assert.False(actual); } @@ -57,7 +57,7 @@ namespace SabreTools.Metadata.Filter.Test [Fact] public void Header_Correct_True() { - var header = new Header { [Header.AuthorKey] = "auth" }; + var header = new Header { Author = "auth" }; bool actual = _filterRunner.Run(header); Assert.True(actual); } diff --git a/SabreTools.Metadata.Filter/FilterObject.cs b/SabreTools.Metadata.Filter/FilterObject.cs index 49f54193..e3ab5156 100644 --- a/SabreTools.Metadata.Filter/FilterObject.cs +++ b/SabreTools.Metadata.Filter/FilterObject.cs @@ -527,15 +527,39 @@ namespace SabreTools.Metadata.Filter checkValue = item.Value; return true; + case Header item when fieldName == "author": + checkValue = item.Author; + return true; case Header item when fieldName == "biosmode": checkValue = item.BiosMode.AsStringValue(); return true; + case Header item when fieldName == "build": + checkValue = item.Build; + return true; + case Header item when fieldName == "category": + checkValue = item.Category; + return true; + case Header item when fieldName == "comment": + checkValue = item.Comment; + return true; + case Header item when fieldName == "date": + checkValue = item.Date; + return true; + case Header item when fieldName == "datversion": + checkValue = item.DatVersion; + return true; case Header item when fieldName == "debug": checkValue = item.Debug.FromYesNo(); return true; case Header item when fieldName == "description": checkValue = item.Description; return true; + case Header item when fieldName == "email": + checkValue = item.Email; + return true; + case Header item when fieldName == "emulatorversion": + checkValue = item.EmulatorVersion; + return true; case Header item when fieldName == "forcemerging": checkValue = item.ForceMerging.AsStringValue(); return true; @@ -548,6 +572,12 @@ namespace SabreTools.Metadata.Filter case Header item when fieldName == "forcezipping": checkValue = item.ForceZipping.FromYesNo(); return true; + case Header item when fieldName == "homepage": + checkValue = item.Homepage; + return true; + case Header item when fieldName == "id": + checkValue = item.Id; + return true; case Header item when fieldName == "lockbiosmode": checkValue = item.LockBiosMode.FromYesNo(); return true; @@ -557,12 +587,45 @@ namespace SabreTools.Metadata.Filter case Header item when fieldName == "locksamplemode": checkValue = item.LockSampleMode.FromYesNo(); return true; + case Header item when fieldName == "mameconfig": + checkValue = item.MameConfig; + return true; + case Header item when fieldName == "notes": + checkValue = item.Notes; + return true; + case Header item when fieldName == "plugin": + checkValue = item.Plugin; + return true; + case Header item when fieldName == "refname": + checkValue = item.RefName; + return true; case Header item when fieldName == "rommode": checkValue = item.RomMode.AsStringValue(); return true; + case Header item when fieldName == "romtitle": + checkValue = item.RomTitle; + return true; + case Header item when fieldName == "rootdir": + checkValue = item.RootDir; + return true; case Header item when fieldName == "samplemode": checkValue = item.SampleMode.AsStringValue(); return true; + case Header item when fieldName == "system": + checkValue = item.System; + return true; + case Header item when fieldName == "timestamp": + checkValue = item.Timestamp; + return true; + case Header item when fieldName == "type": + checkValue = item.Timestamp; + return true; + case Header item when fieldName == "url": + checkValue = item.Url; + return true; + case Header item when fieldName == "version": + checkValue = item.Version; + return true; case Info item when fieldName == "value": checkValue = item.Value; diff --git a/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs b/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs index 940c75f6..24a7ed8f 100644 --- a/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs @@ -45,16 +45,16 @@ namespace SabreTools.Serialization.CrossModel { Name = item.Name, Description = item.Description, - RootDir = item.ReadString(Data.Models.Metadata.Header.RootDirKey), - Category = item.ReadString(Data.Models.Metadata.Header.CategoryKey), - Version = item.ReadString(Data.Models.Metadata.Header.VersionKey), - Date = item.ReadString(Data.Models.Metadata.Header.DateKey), - Author = item.ReadString(Data.Models.Metadata.Header.AuthorKey), - Homepage = item.ReadString(Data.Models.Metadata.Header.HomepageKey), - Url = item.ReadString(Data.Models.Metadata.Header.UrlKey), - Comment = item.ReadString(Data.Models.Metadata.Header.CommentKey), + RootDir = item.RootDir, + Category = item.Category, + Version = item.Version, + Date = item.Date, + Author = item.Author, + Homepage = item.Homepage, + Url = item.Url, + Comment = item.Comment, Header = item.ReadString(Data.Models.Metadata.Header.HeaderKey), - Type = item.ReadString(Data.Models.Metadata.Header.TypeKey), + Type = item.Type, ForceMerging = item.ForceMerging, ForceZipping = item.ForceZipping, ForcePacking = item.ForcePacking, diff --git a/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs b/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs index 70807e57..3e3a1b30 100644 --- a/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs @@ -37,16 +37,16 @@ namespace SabreTools.Serialization.CrossModel { Name = item.Name, Description = item.Description, - [Data.Models.Metadata.Header.RootDirKey] = item.RootDir, - [Data.Models.Metadata.Header.CategoryKey] = item.Category, - [Data.Models.Metadata.Header.VersionKey] = item.Version, - [Data.Models.Metadata.Header.DateKey] = item.Date, - [Data.Models.Metadata.Header.AuthorKey] = item.Author, - [Data.Models.Metadata.Header.HomepageKey] = item.Homepage, - [Data.Models.Metadata.Header.UrlKey] = item.Url, - [Data.Models.Metadata.Header.CommentKey] = item.Comment, + RootDir = item.RootDir, + Category = item.Category, + Version = item.Version, + Date = item.Date, + Author = item.Author, + Homepage = item.Homepage, + Url = item.Url, + Comment = item.Comment, [Data.Models.Metadata.Header.HeaderKey] = item.Header, - [Data.Models.Metadata.Header.TypeKey] = item.Type, + Type = item.Type, ForceMerging = item.ForceMerging, ForceZipping = item.ForceZipping, ForcePacking = item.ForcePacking, diff --git a/SabreTools.Serialization.CrossModel/DosCenter.Deserializer.cs b/SabreTools.Serialization.CrossModel/DosCenter.Deserializer.cs index 9e949b31..2192f6bf 100644 --- a/SabreTools.Serialization.CrossModel/DosCenter.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/DosCenter.Deserializer.cs @@ -33,11 +33,11 @@ namespace SabreTools.Serialization.CrossModel { Name = item.Name, Description = item.Description, - Version = item.ReadString(Data.Models.Metadata.Header.VersionKey), - Date = item.ReadString(Data.Models.Metadata.Header.DateKey), - Author = item.ReadString(Data.Models.Metadata.Header.AuthorKey), - Homepage = item.ReadString(Data.Models.Metadata.Header.HomepageKey), - Comment = item.ReadString(Data.Models.Metadata.Header.CommentKey), + Version = item.Version, + Date = item.Date, + Author = item.Author, + Homepage = item.Homepage, + Comment = item.Comment, }; return dosCenter; } diff --git a/SabreTools.Serialization.CrossModel/DosCenter.Serializer.cs b/SabreTools.Serialization.CrossModel/DosCenter.Serializer.cs index 84fabfa2..2fa7c5d2 100644 --- a/SabreTools.Serialization.CrossModel/DosCenter.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/DosCenter.Serializer.cs @@ -34,11 +34,11 @@ namespace SabreTools.Serialization.CrossModel { Name = item.Name, Description = item.Description, - [Data.Models.Metadata.Header.VersionKey] = item.Version, - [Data.Models.Metadata.Header.DateKey] = item.Date, - [Data.Models.Metadata.Header.AuthorKey] = item.Author, - [Data.Models.Metadata.Header.HomepageKey] = item.Homepage, - [Data.Models.Metadata.Header.CommentKey] = item.Comment, + Version = item.Version, + Date = item.Date, + Author = item.Author, + Homepage = item.Homepage, + Comment = item.Comment, }; return header; } diff --git a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs index 9cab05a1..e36a8a08 100644 --- a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs @@ -28,9 +28,9 @@ namespace SabreTools.Serialization.CrossModel { var mame = new Mame { - Build = item.ReadString(Data.Models.Metadata.Header.BuildKey), + Build = item.Build, Debug = item.Debug, - MameConfig = item.ReadString(Data.Models.Metadata.Header.MameConfigKey), + MameConfig = item.MameConfig, }; return mame; diff --git a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs index d15be86f..6cd096b6 100644 --- a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs @@ -32,9 +32,9 @@ namespace SabreTools.Serialization.CrossModel { var header = new Data.Models.Metadata.Header { - [Data.Models.Metadata.Header.BuildKey] = item.Build, + Build = item.Build, Debug = item.Debug, - [Data.Models.Metadata.Header.MameConfigKey] = item.MameConfig, + MameConfig = item.MameConfig, }; return header; } diff --git a/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs b/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs index baa62d3e..6c2ed3d7 100644 --- a/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs @@ -21,7 +21,7 @@ namespace SabreTools.Serialization.CrossModel var header = obj.Read(Data.Models.Metadata.MetadataFile.HeaderKey); if (header is not null) { - datafile.Build = header.ReadString(Data.Models.Metadata.Header.BuildKey); + datafile.Build = header.Build; datafile.Debug = header.Debug; datafile.SchemaLocation = header.ReadString(Data.Models.Metadata.Header.SchemaLocationKey); datafile.Header = ConvertHeaderFromInternalModel(header); @@ -41,19 +41,19 @@ namespace SabreTools.Serialization.CrossModel { var header = new Header { - Id = item.ReadString(Data.Models.Metadata.Header.IdKey), + Id = item.Id, Name = item.Name, Description = item.Description, - RootDir = item.ReadString(Data.Models.Metadata.Header.RootDirKey), - Category = item.ReadString(Data.Models.Metadata.Header.CategoryKey), - Version = item.ReadString(Data.Models.Metadata.Header.VersionKey), - Date = item.ReadString(Data.Models.Metadata.Header.DateKey), - Author = item.ReadString(Data.Models.Metadata.Header.AuthorKey), - Email = item.ReadString(Data.Models.Metadata.Header.EmailKey), - Homepage = item.ReadString(Data.Models.Metadata.Header.HomepageKey), - Url = item.ReadString(Data.Models.Metadata.Header.UrlKey), - Comment = item.ReadString(Data.Models.Metadata.Header.CommentKey), - Type = item.ReadString(Data.Models.Metadata.Header.TypeKey), + RootDir = item.RootDir, + Category = item.Category, + Version = item.Version, + Date = item.Date, + Author = item.Author, + Email = item.Email, + Homepage = item.Homepage, + Url = item.Url, + Comment = item.Comment, + Type = item.Type, }; string? headerVal = item.ReadString(Data.Models.Metadata.Header.HeaderKey); @@ -77,7 +77,7 @@ namespace SabreTools.Serialization.CrossModel header.ClrMamePro.ForcePacking = forcePacking; } - string? plugin = item.ReadString(Data.Models.Metadata.Header.PluginKey); + string? plugin = item.Plugin; Data.Models.Metadata.MergingFlag romMode = item.RomMode; Data.Models.Metadata.MergingFlag biosMode = item.BiosMode; Data.Models.Metadata.MergingFlag sampleMode = item.SampleMode; diff --git a/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs b/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs index 21cfb164..ef4a60ae 100644 --- a/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs @@ -39,7 +39,7 @@ namespace SabreTools.Serialization.CrossModel { var header = item.Header is not null ? ConvertHeaderToInternalModel(item.Header) : []; - header[Data.Models.Metadata.Header.BuildKey] = item.Build; + header.Build = item.Build; header.Debug = item.Debug; header[Data.Models.Metadata.Header.SchemaLocationKey] = item.SchemaLocation; @@ -53,19 +53,19 @@ namespace SabreTools.Serialization.CrossModel { var header = new Data.Models.Metadata.Header { - [Data.Models.Metadata.Header.IdKey] = item.Id, + Id = item.Id, Name = item.Name, Description = item.Description, - [Data.Models.Metadata.Header.RootDirKey] = item.RootDir, - [Data.Models.Metadata.Header.CategoryKey] = item.Category, - [Data.Models.Metadata.Header.VersionKey] = item.Version, - [Data.Models.Metadata.Header.DateKey] = item.Date, - [Data.Models.Metadata.Header.AuthorKey] = item.Author, - [Data.Models.Metadata.Header.EmailKey] = item.Email, - [Data.Models.Metadata.Header.HomepageKey] = item.Homepage, - [Data.Models.Metadata.Header.UrlKey] = item.Url, - [Data.Models.Metadata.Header.CommentKey] = item.Comment, - [Data.Models.Metadata.Header.TypeKey] = item.Type, + RootDir = item.RootDir, + Category = item.Category, + Version = item.Version, + Date = item.Date, + Author = item.Author, + Email = item.Email, + Homepage = item.Homepage, + Url = item.Url, + Comment = item.Comment, + Type = item.Type, }; if (item.ClrMamePro is not null) @@ -78,7 +78,7 @@ namespace SabreTools.Serialization.CrossModel if (item.RomCenter is not null) { - header[Data.Models.Metadata.Header.PluginKey] = item.RomCenter.Plugin; + header.Plugin = item.RomCenter.Plugin; header.RomMode = item.RomCenter.RomMode; header.BiosMode = item.RomCenter.BiosMode; header.SampleMode = item.RomCenter.SampleMode; diff --git a/SabreTools.Serialization.CrossModel/M1.Deserializer.cs b/SabreTools.Serialization.CrossModel/M1.Deserializer.cs index fed470ee..224eecdd 100644 --- a/SabreTools.Serialization.CrossModel/M1.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/M1.Deserializer.cs @@ -27,7 +27,7 @@ namespace SabreTools.Serialization.CrossModel { var m1 = new Data.Models.Listxml.M1 { - Version = item.ReadString(Data.Models.Metadata.Header.VersionKey), + Version = item.Version, }; return m1; } diff --git a/SabreTools.Serialization.CrossModel/M1.Serializer.cs b/SabreTools.Serialization.CrossModel/M1.Serializer.cs index fb9bd468..4f5cc631 100644 --- a/SabreTools.Serialization.CrossModel/M1.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/M1.Serializer.cs @@ -31,7 +31,7 @@ namespace SabreTools.Serialization.CrossModel { var header = new Data.Models.Metadata.Header { - [Data.Models.Metadata.Header.VersionKey] = item.Version, + Version = item.Version, }; return header; } diff --git a/SabreTools.Serialization.CrossModel/Mess.Deserializer.cs b/SabreTools.Serialization.CrossModel/Mess.Deserializer.cs index faf51440..b9868ff1 100644 --- a/SabreTools.Serialization.CrossModel/Mess.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Mess.Deserializer.cs @@ -27,7 +27,7 @@ namespace SabreTools.Serialization.CrossModel { var m1 = new Data.Models.Listxml.Mess { - Version = item.ReadString(Data.Models.Metadata.Header.VersionKey), + Version = item.Version, }; return m1; } diff --git a/SabreTools.Serialization.CrossModel/Mess.Serializer.cs b/SabreTools.Serialization.CrossModel/Mess.Serializer.cs index b35d23a6..05472a90 100644 --- a/SabreTools.Serialization.CrossModel/Mess.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Mess.Serializer.cs @@ -31,7 +31,7 @@ namespace SabreTools.Serialization.CrossModel { var header = new Data.Models.Metadata.Header { - [Data.Models.Metadata.Header.VersionKey] = item.Version, + Version = item.Version, }; return header; } diff --git a/SabreTools.Serialization.CrossModel/OfflineList.Deserializer.cs b/SabreTools.Serialization.CrossModel/OfflineList.Deserializer.cs index dd7199e8..554073a1 100644 --- a/SabreTools.Serialization.CrossModel/OfflineList.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/OfflineList.Deserializer.cs @@ -38,29 +38,29 @@ namespace SabreTools.Serialization.CrossModel if (item.Name is not null || item.ContainsKey(Data.Models.Metadata.Header.ImFolderKey) - || item.ContainsKey(Data.Models.Metadata.Header.DatVersionKey) - || item.ContainsKey(Data.Models.Metadata.Header.SystemKey) + || item.DatVersion != null + || item.System != null || item.ContainsKey(Data.Models.Metadata.Header.ScreenshotsWidthKey) || item.ContainsKey(Data.Models.Metadata.Header.ScreenshotsHeightKey) || item.ContainsKey(Data.Models.Metadata.Header.InfosKey) || item.ContainsKey(Data.Models.Metadata.Header.CanOpenKey) || item.ContainsKey(Data.Models.Metadata.Header.NewDatKey) || item.ContainsKey(Data.Models.Metadata.Header.SearchKey) - || item.ContainsKey(Data.Models.Metadata.Header.RomTitleKey)) + || item.RomTitle != null) { dat.Configuration = new Configuration { DatName = item.Name, ImFolder = item.ReadString(Data.Models.Metadata.Header.ImFolderKey), - DatVersion = item.ReadString(Data.Models.Metadata.Header.DatVersionKey), - System = item.ReadString(Data.Models.Metadata.Header.SystemKey), + DatVersion = item.DatVersion, + System = item.System, ScreenshotsWidth = item.ReadString(Data.Models.Metadata.Header.ScreenshotsWidthKey), ScreenshotsHeight = item.ReadString(Data.Models.Metadata.Header.ScreenshotsHeightKey), Infos = item.Read(Data.Models.Metadata.Header.InfosKey), CanOpen = item.Read(Data.Models.Metadata.Header.CanOpenKey), NewDat = item.Read(Data.Models.Metadata.Header.NewDatKey), Search = item.Read(Data.Models.Metadata.Header.SearchKey), - RomTitle = item.ReadString(Data.Models.Metadata.Header.RomTitleKey), + RomTitle = item.RomTitle, }; } diff --git a/SabreTools.Serialization.CrossModel/OfflineList.Serializer.cs b/SabreTools.Serialization.CrossModel/OfflineList.Serializer.cs index c8032e8d..70436b2f 100644 --- a/SabreTools.Serialization.CrossModel/OfflineList.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/OfflineList.Serializer.cs @@ -39,15 +39,15 @@ namespace SabreTools.Serialization.CrossModel { header.Name = item.Configuration.DatName; header[Data.Models.Metadata.Header.ImFolderKey] = item.Configuration.ImFolder; - header[Data.Models.Metadata.Header.DatVersionKey] = item.Configuration.DatVersion; - header[Data.Models.Metadata.Header.SystemKey] = item.Configuration.System; + header.DatVersion = item.Configuration.DatVersion; + header.System = item.Configuration.System; header[Data.Models.Metadata.Header.ScreenshotsWidthKey] = item.Configuration.ScreenshotsWidth; header[Data.Models.Metadata.Header.ScreenshotsHeightKey] = item.Configuration.ScreenshotsHeight; header[Data.Models.Metadata.Header.InfosKey] = item.Configuration.Infos; header[Data.Models.Metadata.Header.CanOpenKey] = item.Configuration.CanOpen; header[Data.Models.Metadata.Header.NewDatKey] = item.Configuration.NewDat; header[Data.Models.Metadata.Header.SearchKey] = item.Configuration.Search; - header[Data.Models.Metadata.Header.RomTitleKey] = item.Configuration.RomTitle; + header.RomTitle = item.Configuration.RomTitle; } if (item.GUI is not null) diff --git a/SabreTools.Serialization.CrossModel/OpenMSX.Deserializer.cs b/SabreTools.Serialization.CrossModel/OpenMSX.Deserializer.cs index bbfc7d76..3572044c 100644 --- a/SabreTools.Serialization.CrossModel/OpenMSX.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/OpenMSX.Deserializer.cs @@ -28,7 +28,7 @@ namespace SabreTools.Serialization.CrossModel { var softwareDb = new SoftwareDb { - Timestamp = item.ReadString(Data.Models.Metadata.Header.TimestampKey), + Timestamp = item.Timestamp, }; return softwareDb; } diff --git a/SabreTools.Serialization.CrossModel/OpenMSX.Serializer.cs b/SabreTools.Serialization.CrossModel/OpenMSX.Serializer.cs index d621cadb..63e096e5 100644 --- a/SabreTools.Serialization.CrossModel/OpenMSX.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/OpenMSX.Serializer.cs @@ -32,7 +32,7 @@ namespace SabreTools.Serialization.CrossModel { var header = new Data.Models.Metadata.Header { - [Data.Models.Metadata.Header.TimestampKey] = item.Timestamp, + Timestamp = item.Timestamp, }; return header; } diff --git a/SabreTools.Serialization.CrossModel/RomCenter.Deserializer.cs b/SabreTools.Serialization.CrossModel/RomCenter.Deserializer.cs index ddadc837..b5ffef2d 100644 --- a/SabreTools.Serialization.CrossModel/RomCenter.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/RomCenter.Deserializer.cs @@ -33,46 +33,46 @@ namespace SabreTools.Serialization.CrossModel { var metadataFile = new MetadataFile(); - if (item.ContainsKey(Data.Models.Metadata.Header.AuthorKey) - || item.ContainsKey(Data.Models.Metadata.Header.VersionKey) - || item.ContainsKey(Data.Models.Metadata.Header.EmailKey) - || item.ContainsKey(Data.Models.Metadata.Header.HomepageKey) - || item.ContainsKey(Data.Models.Metadata.Header.UrlKey) - || item.ContainsKey(Data.Models.Metadata.Header.DateKey) - || item.ContainsKey(Data.Models.Metadata.Header.CommentKey)) + if (item.Author != null + || item.Version != null + || item.Email != null + || item.Homepage != null + || item.Url != null + || item.Date != null + || item.Comment != null) { metadataFile.Credits = new Credits { - Author = item.ReadString(Data.Models.Metadata.Header.AuthorKey), - Version = item.ReadString(Data.Models.Metadata.Header.VersionKey), - Email = item.ReadString(Data.Models.Metadata.Header.EmailKey), - Homepage = item.ReadString(Data.Models.Metadata.Header.HomepageKey), - Url = item.ReadString(Data.Models.Metadata.Header.UrlKey), - Date = item.ReadString(Data.Models.Metadata.Header.DateKey), - Comment = item.ReadString(Data.Models.Metadata.Header.CommentKey), + Author = item.Author, + Version = item.Version, + Email = item.Email, + Homepage = item.Homepage, + Url = item.Url, + Date = item.Date, + Comment = item.Comment, }; } - if (item.ContainsKey(Data.Models.Metadata.Header.DatVersionKey) - || item.ContainsKey(Data.Models.Metadata.Header.PluginKey) + if (item.DatVersion != null + || item.Plugin != null || item.ForceMerging != Data.Models.Metadata.MergingFlag.None) { metadataFile.Dat = new Dat { - Version = item.ReadString(Data.Models.Metadata.Header.DatVersionKey), - Plugin = item.ReadString(Data.Models.Metadata.Header.PluginKey), + Version = item.DatVersion, + Plugin = item.Plugin, Split = item.ForceMerging == Data.Models.Metadata.MergingFlag.Split ? "yes" : "no", Merge = item.ForceMerging == Data.Models.Metadata.MergingFlag.Merged ? "yes" : "no", }; } - if (item.ContainsKey(Data.Models.Metadata.Header.RefNameKey) - || item.ContainsKey(Data.Models.Metadata.Header.EmulatorVersionKey)) + if (item.RefName != null + || item.EmulatorVersion != null) { metadataFile.Emulator = new Emulator { - RefName = item.ReadString(Data.Models.Metadata.Header.RefNameKey), - Version = item.ReadString(Data.Models.Metadata.Header.EmulatorVersionKey), + RefName = item.RefName, + Version = item.EmulatorVersion, }; } diff --git a/SabreTools.Serialization.CrossModel/RomCenter.Serializer.cs b/SabreTools.Serialization.CrossModel/RomCenter.Serializer.cs index 1de290bb..d6eff885 100644 --- a/SabreTools.Serialization.CrossModel/RomCenter.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/RomCenter.Serializer.cs @@ -34,19 +34,19 @@ namespace SabreTools.Serialization.CrossModel if (item.Credits is not null) { - header[Data.Models.Metadata.Header.AuthorKey] = item.Credits.Author; - header[Data.Models.Metadata.Header.VersionKey] = item.Credits.Version; - header[Data.Models.Metadata.Header.EmailKey] = item.Credits.Email; - header[Data.Models.Metadata.Header.HomepageKey] = item.Credits.Homepage; - header[Data.Models.Metadata.Header.UrlKey] = item.Credits.Url; - header[Data.Models.Metadata.Header.DateKey] = item.Credits.Date; - header[Data.Models.Metadata.Header.CommentKey] = item.Credits.Comment; + header.Author = item.Credits.Author; + header.Version = item.Credits.Version; + header.Email = item.Credits.Email; + header.Homepage = item.Credits.Homepage; + header.Url = item.Credits.Url; + header.Date = item.Credits.Date; + header.Comment = item.Credits.Comment; } if (item.Dat is not null) { - header[Data.Models.Metadata.Header.DatVersionKey] = item.Dat.Version; - header[Data.Models.Metadata.Header.PluginKey] = item.Dat.Plugin; + header.DatVersion = item.Dat.Version; + header.Plugin = item.Dat.Plugin; if (item.Dat.Split == "yes" || item.Dat.Split == "1") header.ForceMerging = Data.Models.Metadata.MergingFlag.Split; @@ -56,8 +56,8 @@ namespace SabreTools.Serialization.CrossModel if (item.Emulator is not null) { - header[Data.Models.Metadata.Header.RefNameKey] = item.Emulator.RefName; - header[Data.Models.Metadata.Header.EmulatorVersionKey] = item.Emulator.Version; + header.RefName = item.Emulator.RefName; + header.EmulatorVersion = item.Emulator.Version; } return header; diff --git a/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs b/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs index 0ecfc247..5d388721 100644 --- a/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs @@ -30,7 +30,7 @@ namespace SabreTools.Serialization.CrossModel { Name = item.Name, Description = item.Description, - Notes = item.ReadString(Data.Models.Metadata.Header.NotesKey), + Notes = item.Notes, }; return softwareList; } diff --git a/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs b/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs index 6645f2aa..64403020 100644 --- a/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs @@ -34,7 +34,7 @@ namespace SabreTools.Serialization.CrossModel { Name = item.Name, Description = item.Description, - [Data.Models.Metadata.Header.NotesKey] = item.Notes, + Notes = item.Notes, }; return header; } From a914ee12c3e373ddca7a4b893433f6550d99a82e Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Thu, 2 Apr 2026 22:16:04 -0400 Subject: [PATCH 027/142] Convert DAT format to a property --- .../DatHeaderTests.cs | 4 ++-- SabreTools.Metadata.DatFiles/DatHeader.cs | 14 +++++++------- .../Formats/ArchiveDotOrg.cs | 4 ++-- .../Formats/AttractMode.cs | 2 +- SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs | 2 +- .../Formats/CommaSeparatedValue.cs | 2 +- SabreTools.Metadata.DatFiles/Formats/DosCenter.cs | 2 +- .../Formats/EverdriveSmdb.cs | 2 +- SabreTools.Metadata.DatFiles/Formats/Listrom.cs | 2 +- SabreTools.Metadata.DatFiles/Formats/Listxml.cs | 2 +- SabreTools.Metadata.DatFiles/Formats/Logiqx.cs | 4 ++-- SabreTools.Metadata.DatFiles/Formats/Md2File.cs | 2 +- SabreTools.Metadata.DatFiles/Formats/Md4File.cs | 2 +- SabreTools.Metadata.DatFiles/Formats/Md5File.cs | 2 +- SabreTools.Metadata.DatFiles/Formats/Missfile.cs | 2 +- .../Formats/OfflineList.cs | 2 +- SabreTools.Metadata.DatFiles/Formats/OpenMSX.cs | 2 +- .../Formats/RipeMD128File.cs | 2 +- .../Formats/RipeMD160File.cs | 2 +- SabreTools.Metadata.DatFiles/Formats/RomCenter.cs | 2 +- SabreTools.Metadata.DatFiles/Formats/SabreJSON.cs | 2 +- SabreTools.Metadata.DatFiles/Formats/SabreXML.cs | 2 +- .../Formats/SemicolonSeparatedValue.cs | 2 +- SabreTools.Metadata.DatFiles/Formats/SfvFile.cs | 2 +- SabreTools.Metadata.DatFiles/Formats/Sha1File.cs | 2 +- SabreTools.Metadata.DatFiles/Formats/Sha256File.cs | 2 +- SabreTools.Metadata.DatFiles/Formats/Sha384File.cs | 2 +- SabreTools.Metadata.DatFiles/Formats/Sha512File.cs | 2 +- .../Formats/SoftwareList.cs | 2 +- .../Formats/SpamSumFile.cs | 2 +- .../Formats/TabSeparatedValue.cs | 2 +- 31 files changed, 40 insertions(+), 40 deletions(-) diff --git a/SabreTools.Metadata.DatFiles.Test/DatHeaderTests.cs b/SabreTools.Metadata.DatFiles.Test/DatHeaderTests.cs index 46c86387..e41129f5 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatHeaderTests.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatHeaderTests.cs @@ -134,12 +134,12 @@ namespace SabreTools.Metadata.DatFiles.Test public void CloneFormatTest() { DatHeader header = new DatHeader(); - header.Write(DatHeader.DatFormatKey, DatFormat.Logiqx); + header.DatFormat = DatFormat.Logiqx; object clone = header.Clone(); DatHeader? actual = clone as DatHeader; Assert.NotNull(actual); - Assert.Equal(DatFormat.Logiqx, actual.Read(DatHeader.DatFormatKey)); + Assert.Equal(DatFormat.Logiqx, actual.DatFormat); } #endregion diff --git a/SabreTools.Metadata.DatFiles/DatHeader.cs b/SabreTools.Metadata.DatFiles/DatHeader.cs index a1de654f..dbb570ef 100644 --- a/SabreTools.Metadata.DatFiles/DatHeader.cs +++ b/SabreTools.Metadata.DatFiles/DatHeader.cs @@ -17,11 +17,6 @@ namespace SabreTools.Metadata.DatFiles { #region Constants - /// - /// Read or write format - /// - public const string DatFormatKey = "DATFORMAT"; - /// /// External name of the DAT /// @@ -77,6 +72,11 @@ namespace SabreTools.Metadata.DatFiles set => _internal.Date = value; } + /// + /// Read or write format + /// + public DatFormat? DatFormat { get; set; } + public string? DatVersion { get => _internal.DatVersion; @@ -299,7 +299,7 @@ namespace SabreTools.Metadata.DatFiles /// /// Clone the current header /// - public object Clone() => new DatHeader(GetInternalClone()); + public object Clone() => new DatHeader(GetInternalClone()) { DatFormat = DatFormat }; /// /// Clone just the format from the current header @@ -308,7 +308,7 @@ namespace SabreTools.Metadata.DatFiles { var header = new DatHeader(); - header.Write(DatFormatKey, Read(DatFormatKey)); + header.DatFormat = DatFormat; return header; } diff --git a/SabreTools.Metadata.DatFiles/Formats/ArchiveDotOrg.cs b/SabreTools.Metadata.DatFiles/Formats/ArchiveDotOrg.cs index 256037bf..f2b70574 100644 --- a/SabreTools.Metadata.DatFiles/Formats/ArchiveDotOrg.cs +++ b/SabreTools.Metadata.DatFiles/Formats/ArchiveDotOrg.cs @@ -1,4 +1,4 @@ -namespace SabreTools.Metadata.DatFiles.Formats +namespace SabreTools.Metadata.DatFiles.Formats { /// /// Represents a Archive.org file list @@ -17,7 +17,7 @@ /// Parent DatFile to copy from public ArchiveDotOrg(DatFile? datFile) : base(datFile) { - Header.Write(DatHeader.DatFormatKey, DatFormat.ArchiveDotOrg); + Header.DatFormat = DatFormat.ArchiveDotOrg; } } } diff --git a/SabreTools.Metadata.DatFiles/Formats/AttractMode.cs b/SabreTools.Metadata.DatFiles/Formats/AttractMode.cs index 8861f40f..61578ef7 100644 --- a/SabreTools.Metadata.DatFiles/Formats/AttractMode.cs +++ b/SabreTools.Metadata.DatFiles/Formats/AttractMode.cs @@ -20,7 +20,7 @@ namespace SabreTools.Metadata.DatFiles.Formats /// Parent DatFile to copy from public AttractMode(DatFile? datFile) : base(datFile) { - Header.Write(DatHeader.DatFormatKey, DatFormat.AttractMode); + Header.DatFormat = DatFormat.AttractMode; } /// diff --git a/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs b/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs index 46b8bf7f..e4f16d58 100644 --- a/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs +++ b/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs @@ -39,7 +39,7 @@ namespace SabreTools.Metadata.DatFiles.Formats /// Parent DatFile to copy from public ClrMamePro(DatFile? datFile) : base(datFile) { - Header.Write(DatHeader.DatFormatKey, DatFormat.ClrMamePro); + Header.DatFormat = DatFormat.ClrMamePro; } /// diff --git a/SabreTools.Metadata.DatFiles/Formats/CommaSeparatedValue.cs b/SabreTools.Metadata.DatFiles/Formats/CommaSeparatedValue.cs index 07498563..12aa2fc1 100644 --- a/SabreTools.Metadata.DatFiles/Formats/CommaSeparatedValue.cs +++ b/SabreTools.Metadata.DatFiles/Formats/CommaSeparatedValue.cs @@ -12,7 +12,7 @@ namespace SabreTools.Metadata.DatFiles.Formats public CommaSeparatedValue(DatFile? datFile) : base(datFile) { _delim = ','; - Header.Write(DatHeader.DatFormatKey, DatFormat.CSV); + Header.DatFormat = DatFormat.CSV; } } } diff --git a/SabreTools.Metadata.DatFiles/Formats/DosCenter.cs b/SabreTools.Metadata.DatFiles/Formats/DosCenter.cs index 3a37381c..37bda622 100644 --- a/SabreTools.Metadata.DatFiles/Formats/DosCenter.cs +++ b/SabreTools.Metadata.DatFiles/Formats/DosCenter.cs @@ -21,7 +21,7 @@ namespace SabreTools.Metadata.DatFiles.Formats /// Parent DatFile to copy from public DosCenter(DatFile? datFile) : base(datFile) { - Header.Write(DatHeader.DatFormatKey, DatFormat.DOSCenter); + Header.DatFormat = DatFormat.DOSCenter; } /// diff --git a/SabreTools.Metadata.DatFiles/Formats/EverdriveSmdb.cs b/SabreTools.Metadata.DatFiles/Formats/EverdriveSmdb.cs index f6efbec2..e680cc80 100644 --- a/SabreTools.Metadata.DatFiles/Formats/EverdriveSmdb.cs +++ b/SabreTools.Metadata.DatFiles/Formats/EverdriveSmdb.cs @@ -21,7 +21,7 @@ namespace SabreTools.Metadata.DatFiles.Formats /// Parent DatFile to copy from public EverdriveSMDB(DatFile? datFile) : base(datFile) { - Header.Write(DatHeader.DatFormatKey, DatFormat.EverdriveSMDB); + Header.DatFormat = DatFormat.EverdriveSMDB; } /// diff --git a/SabreTools.Metadata.DatFiles/Formats/Listrom.cs b/SabreTools.Metadata.DatFiles/Formats/Listrom.cs index bfba39fa..8a5ef1cc 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Listrom.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Listrom.cs @@ -22,7 +22,7 @@ namespace SabreTools.Metadata.DatFiles.Formats /// Parent DatFile to copy from public Listrom(DatFile? datFile) : base(datFile) { - Header.Write(DatHeader.DatFormatKey, DatFormat.Listrom); + Header.DatFormat = DatFormat.Listrom; } /// diff --git a/SabreTools.Metadata.DatFiles/Formats/Listxml.cs b/SabreTools.Metadata.DatFiles/Formats/Listxml.cs index 5af06b3a..fbdc657a 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Listxml.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Listxml.cs @@ -216,7 +216,7 @@ namespace SabreTools.Metadata.DatFiles.Formats /// Parent DatFile to copy from public Listxml(DatFile? datFile) : base(datFile) { - Header.Write(DatHeader.DatFormatKey, DatFormat.Listxml); + Header.DatFormat = DatFormat.Listxml; } /// diff --git a/SabreTools.Metadata.DatFiles/Formats/Logiqx.cs b/SabreTools.Metadata.DatFiles/Formats/Logiqx.cs index 677968b5..dbc731cd 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Logiqx.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Logiqx.cs @@ -253,9 +253,9 @@ namespace SabreTools.Metadata.DatFiles.Formats { _useGame = useGame; if (useGame) - Header.Write(DatHeader.DatFormatKey, DatFormat.LogiqxDeprecated); + Header.DatFormat = DatFormat.LogiqxDeprecated; else - Header.Write(DatHeader.DatFormatKey, DatFormat.Logiqx); + Header.DatFormat = DatFormat.Logiqx; } /// diff --git a/SabreTools.Metadata.DatFiles/Formats/Md2File.cs b/SabreTools.Metadata.DatFiles/Formats/Md2File.cs index 10c5d283..b3457a79 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Md2File.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Md2File.cs @@ -23,7 +23,7 @@ namespace SabreTools.Metadata.DatFiles.Formats public Md2File(DatFile? datFile) : base(datFile) { _hash = HashType.MD2; - Header.Write(DatHeader.DatFormatKey, DatFormat.RedumpMD2); + Header.DatFormat = DatFormat.RedumpMD2; } /// diff --git a/SabreTools.Metadata.DatFiles/Formats/Md4File.cs b/SabreTools.Metadata.DatFiles/Formats/Md4File.cs index 3365a09f..d1f2d030 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Md4File.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Md4File.cs @@ -23,7 +23,7 @@ namespace SabreTools.Metadata.DatFiles.Formats public Md4File(DatFile? datFile) : base(datFile) { _hash = HashType.MD4; - Header.Write(DatHeader.DatFormatKey, DatFormat.RedumpMD4); + Header.DatFormat = DatFormat.RedumpMD4; } /// diff --git a/SabreTools.Metadata.DatFiles/Formats/Md5File.cs b/SabreTools.Metadata.DatFiles/Formats/Md5File.cs index c72f9502..d3b5baa4 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Md5File.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Md5File.cs @@ -25,7 +25,7 @@ namespace SabreTools.Metadata.DatFiles.Formats public Md5File(DatFile? datFile) : base(datFile) { _hash = HashType.MD5; - Header.Write(DatHeader.DatFormatKey, DatFormat.RedumpMD5); + Header.DatFormat = DatFormat.RedumpMD5; } /// diff --git a/SabreTools.Metadata.DatFiles/Formats/Missfile.cs b/SabreTools.Metadata.DatFiles/Formats/Missfile.cs index ae3a250d..67152059 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Missfile.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Missfile.cs @@ -22,7 +22,7 @@ namespace SabreTools.Metadata.DatFiles.Formats /// Parent DatFile to copy from public Missfile(DatFile? datFile) : base(datFile) { - Header.Write(DatHeader.DatFormatKey, DatFormat.MissFile); + Header.DatFormat = DatFormat.MissFile; } /// diff --git a/SabreTools.Metadata.DatFiles/Formats/OfflineList.cs b/SabreTools.Metadata.DatFiles/Formats/OfflineList.cs index 51cba1ae..3539fbfe 100644 --- a/SabreTools.Metadata.DatFiles/Formats/OfflineList.cs +++ b/SabreTools.Metadata.DatFiles/Formats/OfflineList.cs @@ -21,7 +21,7 @@ namespace SabreTools.Metadata.DatFiles.Formats /// Parent DatFile to copy from public OfflineList(DatFile? datFile) : base(datFile) { - Header.Write(DatHeader.DatFormatKey, DatFormat.OfflineList); + Header.DatFormat = DatFormat.OfflineList; } /// diff --git a/SabreTools.Metadata.DatFiles/Formats/OpenMSX.cs b/SabreTools.Metadata.DatFiles/Formats/OpenMSX.cs index c062b863..1050b672 100644 --- a/SabreTools.Metadata.DatFiles/Formats/OpenMSX.cs +++ b/SabreTools.Metadata.DatFiles/Formats/OpenMSX.cs @@ -60,7 +60,7 @@ The softwaredb.xml file contains information about rom mapper types /// Parent DatFile to copy from public OpenMSX(DatFile? datFile) : base(datFile) { - Header.Write(DatHeader.DatFormatKey, DatFormat.OpenMSX); + Header.DatFormat = DatFormat.OpenMSX; } /// diff --git a/SabreTools.Metadata.DatFiles/Formats/RipeMD128File.cs b/SabreTools.Metadata.DatFiles/Formats/RipeMD128File.cs index 4cadad6d..28512ed5 100644 --- a/SabreTools.Metadata.DatFiles/Formats/RipeMD128File.cs +++ b/SabreTools.Metadata.DatFiles/Formats/RipeMD128File.cs @@ -23,7 +23,7 @@ namespace SabreTools.Metadata.DatFiles.Formats public RipeMD128File(DatFile? datFile) : base(datFile) { _hash = HashType.RIPEMD128; - Header.Write(DatHeader.DatFormatKey, DatFormat.RedumpRIPEMD128); + Header.DatFormat = DatFormat.RedumpRIPEMD128; } /// diff --git a/SabreTools.Metadata.DatFiles/Formats/RipeMD160File.cs b/SabreTools.Metadata.DatFiles/Formats/RipeMD160File.cs index 641ad2b2..4dbae14c 100644 --- a/SabreTools.Metadata.DatFiles/Formats/RipeMD160File.cs +++ b/SabreTools.Metadata.DatFiles/Formats/RipeMD160File.cs @@ -23,7 +23,7 @@ namespace SabreTools.Metadata.DatFiles.Formats public RipeMD160File(DatFile? datFile) : base(datFile) { _hash = HashType.RIPEMD160; - Header.Write(DatHeader.DatFormatKey, DatFormat.RedumpRIPEMD160); + Header.DatFormat = DatFormat.RedumpRIPEMD160; } /// diff --git a/SabreTools.Metadata.DatFiles/Formats/RomCenter.cs b/SabreTools.Metadata.DatFiles/Formats/RomCenter.cs index 926b409f..2a73074b 100644 --- a/SabreTools.Metadata.DatFiles/Formats/RomCenter.cs +++ b/SabreTools.Metadata.DatFiles/Formats/RomCenter.cs @@ -21,7 +21,7 @@ namespace SabreTools.Metadata.DatFiles.Formats /// Parent DatFile to copy from public RomCenter(DatFile? datFile) : base(datFile) { - Header.Write(DatHeader.DatFormatKey, DatFormat.RomCenter); + Header.DatFormat = DatFormat.RomCenter; } /// diff --git a/SabreTools.Metadata.DatFiles/Formats/SabreJSON.cs b/SabreTools.Metadata.DatFiles/Formats/SabreJSON.cs index 46f57435..50b39bfb 100644 --- a/SabreTools.Metadata.DatFiles/Formats/SabreJSON.cs +++ b/SabreTools.Metadata.DatFiles/Formats/SabreJSON.cs @@ -32,7 +32,7 @@ namespace SabreTools.Metadata.DatFiles.Formats /// Parent DatFile to copy from public SabreJSON(DatFile? datFile) : base(datFile) { - Header.Write(DatHeader.DatFormatKey, DatFormat.SabreJSON); + Header.DatFormat = DatFormat.SabreJSON; } /// diff --git a/SabreTools.Metadata.DatFiles/Formats/SabreXML.cs b/SabreTools.Metadata.DatFiles/Formats/SabreXML.cs index 19375b9f..99c18d65 100644 --- a/SabreTools.Metadata.DatFiles/Formats/SabreXML.cs +++ b/SabreTools.Metadata.DatFiles/Formats/SabreXML.cs @@ -31,7 +31,7 @@ namespace SabreTools.Metadata.DatFiles.Formats /// Parent DatFile to copy from public SabreXML(DatFile? datFile) : base(datFile) { - Header.Write(DatHeader.DatFormatKey, DatFormat.SabreXML); + Header.DatFormat = DatFormat.SabreXML; } /// diff --git a/SabreTools.Metadata.DatFiles/Formats/SemicolonSeparatedValue.cs b/SabreTools.Metadata.DatFiles/Formats/SemicolonSeparatedValue.cs index 4940b556..42c1660a 100644 --- a/SabreTools.Metadata.DatFiles/Formats/SemicolonSeparatedValue.cs +++ b/SabreTools.Metadata.DatFiles/Formats/SemicolonSeparatedValue.cs @@ -12,7 +12,7 @@ namespace SabreTools.Metadata.DatFiles.Formats public SemicolonSeparatedValue(DatFile? datFile) : base(datFile) { _delim = ';'; - Header.Write(DatHeader.DatFormatKey, DatFormat.SSV); + Header.DatFormat = DatFormat.SSV; } } } diff --git a/SabreTools.Metadata.DatFiles/Formats/SfvFile.cs b/SabreTools.Metadata.DatFiles/Formats/SfvFile.cs index c2c7f122..f106c6bd 100644 --- a/SabreTools.Metadata.DatFiles/Formats/SfvFile.cs +++ b/SabreTools.Metadata.DatFiles/Formats/SfvFile.cs @@ -23,7 +23,7 @@ namespace SabreTools.Metadata.DatFiles.Formats public SfvFile(DatFile? datFile) : base(datFile) { _hash = HashType.CRC32; - Header.Write(DatHeader.DatFormatKey, DatFormat.RedumpSFV); + Header.DatFormat = DatFormat.RedumpSFV; } /// diff --git a/SabreTools.Metadata.DatFiles/Formats/Sha1File.cs b/SabreTools.Metadata.DatFiles/Formats/Sha1File.cs index f1fe3be2..ef7ddfe2 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Sha1File.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Sha1File.cs @@ -25,7 +25,7 @@ namespace SabreTools.Metadata.DatFiles.Formats public Sha1File(DatFile? datFile) : base(datFile) { _hash = HashType.SHA1; - Header.Write(DatHeader.DatFormatKey, DatFormat.RedumpSHA1); + Header.DatFormat = DatFormat.RedumpSHA1; } /// diff --git a/SabreTools.Metadata.DatFiles/Formats/Sha256File.cs b/SabreTools.Metadata.DatFiles/Formats/Sha256File.cs index 67bb2468..e24a29d3 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Sha256File.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Sha256File.cs @@ -24,7 +24,7 @@ namespace SabreTools.Metadata.DatFiles.Formats public Sha256File(DatFile? datFile) : base(datFile) { _hash = HashType.SHA256; - Header.Write(DatHeader.DatFormatKey, DatFormat.RedumpSHA256); + Header.DatFormat = DatFormat.RedumpSHA256; } /// diff --git a/SabreTools.Metadata.DatFiles/Formats/Sha384File.cs b/SabreTools.Metadata.DatFiles/Formats/Sha384File.cs index 9471cdb2..2ef52335 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Sha384File.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Sha384File.cs @@ -23,7 +23,7 @@ namespace SabreTools.Metadata.DatFiles.Formats public Sha384File(DatFile? datFile) : base(datFile) { _hash = HashType.SHA384; - Header.Write(DatHeader.DatFormatKey, DatFormat.RedumpSHA384); + Header.DatFormat = DatFormat.RedumpSHA384; } /// diff --git a/SabreTools.Metadata.DatFiles/Formats/Sha512File.cs b/SabreTools.Metadata.DatFiles/Formats/Sha512File.cs index cb0fdc92..81bf39a8 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Sha512File.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Sha512File.cs @@ -23,7 +23,7 @@ namespace SabreTools.Metadata.DatFiles.Formats public Sha512File(DatFile? datFile) : base(datFile) { _hash = HashType.SHA512; - Header.Write(DatHeader.DatFormatKey, DatFormat.RedumpSHA512); + Header.DatFormat = DatFormat.RedumpSHA512; } /// diff --git a/SabreTools.Metadata.DatFiles/Formats/SoftwareList.cs b/SabreTools.Metadata.DatFiles/Formats/SoftwareList.cs index 40b0ec09..a0fc9f15 100644 --- a/SabreTools.Metadata.DatFiles/Formats/SoftwareList.cs +++ b/SabreTools.Metadata.DatFiles/Formats/SoftwareList.cs @@ -96,7 +96,7 @@ namespace SabreTools.Metadata.DatFiles.Formats /// Parent DatFile to copy from public SoftwareList(DatFile? datFile) : base(datFile) { - Header.Write(DatHeader.DatFormatKey, DatFormat.SoftwareList); + Header.DatFormat = DatFormat.SoftwareList; } /// diff --git a/SabreTools.Metadata.DatFiles/Formats/SpamSumFile.cs b/SabreTools.Metadata.DatFiles/Formats/SpamSumFile.cs index b418d944..17661e36 100644 --- a/SabreTools.Metadata.DatFiles/Formats/SpamSumFile.cs +++ b/SabreTools.Metadata.DatFiles/Formats/SpamSumFile.cs @@ -24,7 +24,7 @@ namespace SabreTools.Metadata.DatFiles.Formats public SpamSumFile(DatFile? datFile) : base(datFile) { _hash = HashType.SpamSum; - Header.Write(DatHeader.DatFormatKey, DatFormat.RedumpSpamSum); + Header.DatFormat = DatFormat.RedumpSpamSum; } /// diff --git a/SabreTools.Metadata.DatFiles/Formats/TabSeparatedValue.cs b/SabreTools.Metadata.DatFiles/Formats/TabSeparatedValue.cs index ce31ed81..369ad80b 100644 --- a/SabreTools.Metadata.DatFiles/Formats/TabSeparatedValue.cs +++ b/SabreTools.Metadata.DatFiles/Formats/TabSeparatedValue.cs @@ -12,7 +12,7 @@ namespace SabreTools.Metadata.DatFiles.Formats public TabSeparatedValue(DatFile? datFile) : base(datFile) { _delim = '\t'; - Header.Write(DatHeader.DatFormatKey, DatFormat.TSV); + Header.DatFormat = DatFormat.TSV; } } } From 2b472c6f37d3fb0bced17ea7d018472dd8941d5d Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Thu, 2 Apr 2026 22:17:39 -0400 Subject: [PATCH 028/142] Migrate DAT filename to a property (used by ST) --- SabreTools.Metadata.DatFiles/DatHeader.cs | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/SabreTools.Metadata.DatFiles/DatHeader.cs b/SabreTools.Metadata.DatFiles/DatHeader.cs index dbb570ef..c8a63c92 100644 --- a/SabreTools.Metadata.DatFiles/DatHeader.cs +++ b/SabreTools.Metadata.DatFiles/DatHeader.cs @@ -15,15 +15,6 @@ namespace SabreTools.Metadata.DatFiles [JsonObject("header"), XmlRoot("header")] public sealed class DatHeader : ModelBackedItem, ICloneable { - #region Constants - - /// - /// External name of the DAT - /// - public const string FileNameKey = "FILENAME"; - - #endregion - #region Fields public string? Author @@ -107,6 +98,11 @@ namespace SabreTools.Metadata.DatFiles set => _internal.EmulatorVersion = value; } + /// + /// External name of the DAT + /// + public string? FileName { get; set; } + public MergingFlag ForceMerging { get => _internal.ForceMerging; @@ -299,7 +295,11 @@ namespace SabreTools.Metadata.DatFiles /// /// Clone the current header /// - public object Clone() => new DatHeader(GetInternalClone()) { DatFormat = DatFormat }; + public object Clone() => new DatHeader(GetInternalClone()) + { + DatFormat = DatFormat, + FileName = FileName, + }; /// /// Clone just the format from the current header From 11803aa34c6d627f51a31dd2fa03fe0a6a621371 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Thu, 2 Apr 2026 22:45:33 -0400 Subject: [PATCH 029/142] Convert Sound.Channels to long as a test --- SabreTools.Data.Extensions/MetadataExtensions.cs | 4 ++++ SabreTools.Data.Models/ClrMamePro/Sound.cs | 2 +- SabreTools.Data.Models/Listxml/Sound.cs | 2 +- SabreTools.Data.Models/Metadata/Sound.cs | 5 ++--- .../DatFileTests.FromMetadata.cs | 4 ++-- .../DatFileTests.ToMetadata.cs | 2 +- SabreTools.Metadata.DatFiles.Test/FormatsTests.cs | 4 ++-- SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs | 4 ++-- SabreTools.Metadata.DatFiles/Formats/Listxml.cs | 4 ++-- SabreTools.Metadata.DatItems/Formats/Sound.cs | 14 +++++++------- SabreTools.Metadata.Filter/FilterObject.cs | 4 ++++ .../ClrMameProTests.cs | 4 ++-- .../ListxmlTests.cs | 4 ++-- .../M1Tests.cs | 4 ++-- .../MessTests.cs | 4 ++-- .../ClrMamePro.Deserializer.cs | 2 +- .../ClrMamePro.Serializer.cs | 2 +- .../Listxml.Deserializer.cs | 2 +- .../Listxml.Serializer.cs | 2 +- .../ClrMameProTests.cs | 4 ++-- .../ListxmlTests.cs | 4 ++-- SabreTools.Serialization.Readers.Test/M1Tests.cs | 4 ++-- SabreTools.Serialization.Readers.Test/MessTests.cs | 4 ++-- SabreTools.Serialization.Readers/ClrMamePro.cs | 3 ++- SabreTools.Serialization.Readers/Listxml.cs | 3 ++- SabreTools.Serialization.Readers/M1.cs | 3 ++- SabreTools.Serialization.Readers/Mess.cs | 3 ++- SabreTools.Serialization.Writers/ClrMamePro.cs | 2 +- SabreTools.Serialization.Writers/Listxml.cs | 2 +- SabreTools.Serialization.Writers/M1.cs | 2 +- SabreTools.Serialization.Writers/Mess.cs | 2 +- 31 files changed, 60 insertions(+), 49 deletions(-) diff --git a/SabreTools.Data.Extensions/MetadataExtensions.cs b/SabreTools.Data.Extensions/MetadataExtensions.cs index 89b1116e..77d4714f 100644 --- a/SabreTools.Data.Extensions/MetadataExtensions.cs +++ b/SabreTools.Data.Extensions/MetadataExtensions.cs @@ -369,6 +369,10 @@ namespace SabreTools.Data.Extensions cloneSoftwareList.Status = selfSoftwareList.Status; cloneSoftwareList.Tag = selfSoftwareList.Tag; } + else if (self is Sound selfSound && clone is Sound cloneSound) + { + cloneSound.Channels = selfSound.Channels; + } else if (self is Video selfVideo && clone is Video cloneVideo) { cloneVideo.Screen = selfVideo.Screen; diff --git a/SabreTools.Data.Models/ClrMamePro/Sound.cs b/SabreTools.Data.Models/ClrMamePro/Sound.cs index 4af5f9ce..1ffa6fc0 100644 --- a/SabreTools.Data.Models/ClrMamePro/Sound.cs +++ b/SabreTools.Data.Models/ClrMamePro/Sound.cs @@ -6,6 +6,6 @@ namespace SabreTools.Data.Models.ClrMamePro { /// channels, Numeric? [Required] - public string? Channels { get; set; } + public long? Channels { get; set; } } } diff --git a/SabreTools.Data.Models/Listxml/Sound.cs b/SabreTools.Data.Models/Listxml/Sound.cs index 7f616c72..2600d84c 100644 --- a/SabreTools.Data.Models/Listxml/Sound.cs +++ b/SabreTools.Data.Models/Listxml/Sound.cs @@ -9,6 +9,6 @@ namespace SabreTools.Data.Models.Listxml /// Numeric [Required] [XmlAttribute("channels")] - public string? Channels { get; set; } + public long? Channels { get; set; } } } diff --git a/SabreTools.Data.Models/Metadata/Sound.cs b/SabreTools.Data.Models/Metadata/Sound.cs index 480d1537..2d14fee5 100644 --- a/SabreTools.Data.Models/Metadata/Sound.cs +++ b/SabreTools.Data.Models/Metadata/Sound.cs @@ -6,10 +6,9 @@ namespace SabreTools.Data.Models.Metadata [JsonObject("sound"), XmlRoot("sound")] public class Sound : DatItem { - #region Keys + #region Properties - /// long - public const string ChannelsKey = "channels"; + public long? Channels { get; set; } #endregion diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs index 7bbcd309..947c6f36 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs @@ -961,7 +961,7 @@ namespace SabreTools.Metadata.DatFiles.Test { return new Data.Models.Metadata.Sound { - [Data.Models.Metadata.Sound.ChannelsKey] = 12345L, + Channels = 12345L, }; } @@ -1635,7 +1635,7 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateSound(Sound? sound) { Assert.NotNull(sound); - Assert.Equal(12345L, sound.ReadLong(Data.Models.Metadata.Sound.ChannelsKey)); + Assert.Equal(12345L, sound.Channels); } // TODO: Figure out why so many fields are omitted diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs index 9345937e..d12014b2 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs @@ -1200,7 +1200,7 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateMetadataSound(Data.Models.Metadata.Sound? sound) { Assert.NotNull(sound); - Assert.Equal(12345, sound.ReadLong(Data.Models.Metadata.Sound.ChannelsKey)); + Assert.Equal(12345, sound.Channels); } private static void ValidateMetadataSourceDetails(Data.Models.Metadata.SourceDetails? sourceDetails) diff --git a/SabreTools.Metadata.DatFiles.Test/FormatsTests.cs b/SabreTools.Metadata.DatFiles.Test/FormatsTests.cs index 35439552..5e0d3f74 100644 --- a/SabreTools.Metadata.DatFiles.Test/FormatsTests.cs +++ b/SabreTools.Metadata.DatFiles.Test/FormatsTests.cs @@ -215,7 +215,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Sound.ChannelsKey, + nameof(Data.Models.Metadata.Sound.Channels), ])); } @@ -894,7 +894,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Sound.ChannelsKey, + nameof(Data.Models.Metadata.Sound.Channels), ])); } diff --git a/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs b/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs index e4f16d58..c11b02e0 100644 --- a/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs +++ b/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs @@ -147,8 +147,8 @@ namespace SabreTools.Metadata.DatFiles.Formats break; case Sound sound: - if (sound.ReadLong(Data.Models.Metadata.Sound.ChannelsKey) is null) - missingFields.Add(Data.Models.Metadata.Sound.ChannelsKey); + if (sound.Channels is null) + missingFields.Add(nameof(Data.Models.Metadata.Sound.Channels)); break; case Input input: diff --git a/SabreTools.Metadata.DatFiles/Formats/Listxml.cs b/SabreTools.Metadata.DatFiles/Formats/Listxml.cs index fbdc657a..27e985fe 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Listxml.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Listxml.cs @@ -315,8 +315,8 @@ namespace SabreTools.Metadata.DatFiles.Formats break; case Sound sound: - if (sound.ReadLong(Data.Models.Metadata.Sound.ChannelsKey) is null) - missingFields.Add(Data.Models.Metadata.Sound.ChannelsKey); + if (sound.Channels is null) + missingFields.Add(nameof(Data.Models.Metadata.Sound.Channels)); break; case Input input: diff --git a/SabreTools.Metadata.DatItems/Formats/Sound.cs b/SabreTools.Metadata.DatItems/Formats/Sound.cs index e726ff69..f5db3d17 100644 --- a/SabreTools.Metadata.DatItems/Formats/Sound.cs +++ b/SabreTools.Metadata.DatItems/Formats/Sound.cs @@ -12,6 +12,12 @@ namespace SabreTools.Metadata.DatItems.Formats { #region Fields + public long? Channels + { + get => (_internal as Data.Models.Metadata.Sound)?.Channels; + set => (_internal as Data.Models.Metadata.Sound)?.Channels = value; + } + /// /> public override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Sound; @@ -22,13 +28,7 @@ namespace SabreTools.Metadata.DatItems.Formats public Sound() : base() { } - public Sound(Data.Models.Metadata.Sound item) : base(item) - { - // Process flag values - long? channels = ReadLong(Data.Models.Metadata.Sound.ChannelsKey); - if (channels is not null) - Write(Data.Models.Metadata.Sound.ChannelsKey, channels.ToString()); - } + public Sound(Data.Models.Metadata.Sound item) : base(item) { } public Sound(Data.Models.Metadata.Sound item, Machine machine, Source source) : this(item) { diff --git a/SabreTools.Metadata.Filter/FilterObject.cs b/SabreTools.Metadata.Filter/FilterObject.cs index e3ab5156..aa13aa9a 100644 --- a/SabreTools.Metadata.Filter/FilterObject.cs +++ b/SabreTools.Metadata.Filter/FilterObject.cs @@ -739,6 +739,10 @@ namespace SabreTools.Metadata.Filter checkValue = item.Tag; return true; + case Sound item when fieldName == "channels": + checkValue = item.Channels?.ToString(); + return true; + case Video item when fieldName == "screen": checkValue = item.Screen?.AsStringValue(); return true; diff --git a/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs b/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs index 8660b78e..14ff0570 100644 --- a/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs @@ -175,7 +175,7 @@ namespace SabreTools.Serialization.CrossModel.Test var sound = new Data.Models.ClrMamePro.Sound { - Channels = "XXXXXX", + Channels = 12345L, }; var input = new Data.Models.ClrMamePro.Input @@ -466,7 +466,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.ClrMamePro.Sound? sound) { Assert.NotNull(sound); - Assert.Equal("XXXXXX", sound.Channels); + Assert.Equal(12345L, sound.Channels); } /// diff --git a/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs b/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs index 3783410d..f8d265c8 100644 --- a/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs @@ -149,7 +149,7 @@ namespace SabreTools.Serialization.CrossModel.Test var sound = new Data.Models.Listxml.Sound { - Channels = "XXXXXX", + Channels = 12345L, }; var control = new Data.Models.Listxml.Control @@ -589,7 +589,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Sound? sound) { Assert.NotNull(sound); - Assert.Equal("XXXXXX", sound.Channels); + Assert.Equal(12345L, sound.Channels); } /// diff --git a/SabreTools.Serialization.CrossModel.Test/M1Tests.cs b/SabreTools.Serialization.CrossModel.Test/M1Tests.cs index 4bd22fb2..d3b3bbda 100644 --- a/SabreTools.Serialization.CrossModel.Test/M1Tests.cs +++ b/SabreTools.Serialization.CrossModel.Test/M1Tests.cs @@ -145,7 +145,7 @@ namespace SabreTools.Serialization.CrossModel.Test var sound = new Data.Models.Listxml.Sound { - Channels = "XXXXXX", + Channels = 12345L, }; var control = new Data.Models.Listxml.Control @@ -583,7 +583,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Sound? sound) { Assert.NotNull(sound); - Assert.Equal("XXXXXX", sound.Channels); + Assert.Equal(12345L, sound.Channels); } /// diff --git a/SabreTools.Serialization.CrossModel.Test/MessTests.cs b/SabreTools.Serialization.CrossModel.Test/MessTests.cs index e0f8517d..d8107b27 100644 --- a/SabreTools.Serialization.CrossModel.Test/MessTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/MessTests.cs @@ -145,7 +145,7 @@ namespace SabreTools.Serialization.CrossModel.Test var sound = new Data.Models.Listxml.Sound { - Channels = "XXXXXX", + Channels = 12345L, }; var control = new Data.Models.Listxml.Control @@ -583,7 +583,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Sound? sound) { Assert.NotNull(sound); - Assert.Equal("XXXXXX", sound.Channels); + Assert.Equal(12345L, sound.Channels); } /// diff --git a/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs b/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs index 24a7ed8f..abc250fb 100644 --- a/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs @@ -328,7 +328,7 @@ namespace SabreTools.Serialization.CrossModel { var sound = new Sound { - Channels = item.ReadString(Data.Models.Metadata.Sound.ChannelsKey), + Channels = item.Channels, }; return sound; } diff --git a/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs b/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs index 3e3a1b30..99b281ce 100644 --- a/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs @@ -341,7 +341,7 @@ namespace SabreTools.Serialization.CrossModel { var sound = new Data.Models.Metadata.Sound { - [Data.Models.Metadata.Sound.ChannelsKey] = item.Channels, + Channels = item.Channels, }; return sound; } diff --git a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs index e36a8a08..15058bcd 100644 --- a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs @@ -646,7 +646,7 @@ namespace SabreTools.Serialization.CrossModel { var sound = new Sound { - Channels = item.ReadString(Data.Models.Metadata.Sound.ChannelsKey), + Channels = item.Channels, }; return sound; } diff --git a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs index 6cd096b6..c4687ff2 100644 --- a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs @@ -687,7 +687,7 @@ namespace SabreTools.Serialization.CrossModel { var sound = new Data.Models.Metadata.Sound { - [Data.Models.Metadata.Sound.ChannelsKey] = item.Channels, + Channels = item.Channels, }; return sound; } diff --git a/SabreTools.Serialization.Readers.Test/ClrMameProTests.cs b/SabreTools.Serialization.Readers.Test/ClrMameProTests.cs index 731bfba5..afe24853 100644 --- a/SabreTools.Serialization.Readers.Test/ClrMameProTests.cs +++ b/SabreTools.Serialization.Readers.Test/ClrMameProTests.cs @@ -292,7 +292,7 @@ namespace SabreTools.Serialization.Readers.Test var sound = new Data.Models.ClrMamePro.Sound { - Channels = "XXXXXX", + Channels = 12345L, }; var input = new Data.Models.ClrMamePro.Input @@ -583,7 +583,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.ClrMamePro.Sound? sound) { Assert.NotNull(sound); - Assert.Equal("XXXXXX", sound.Channels); + Assert.Equal(12345L, sound.Channels); } /// diff --git a/SabreTools.Serialization.Readers.Test/ListxmlTests.cs b/SabreTools.Serialization.Readers.Test/ListxmlTests.cs index c317c05c..de443527 100644 --- a/SabreTools.Serialization.Readers.Test/ListxmlTests.cs +++ b/SabreTools.Serialization.Readers.Test/ListxmlTests.cs @@ -216,7 +216,7 @@ namespace SabreTools.Serialization.Readers.Test var sound = new Data.Models.Listxml.Sound { - Channels = "XXXXXX", + Channels = 12345L, }; var control = new Data.Models.Listxml.Control @@ -656,7 +656,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Sound? sound) { Assert.NotNull(sound); - Assert.Equal("XXXXXX", sound.Channels); + Assert.Equal(12345L, sound.Channels); } /// diff --git a/SabreTools.Serialization.Readers.Test/M1Tests.cs b/SabreTools.Serialization.Readers.Test/M1Tests.cs index 21c4a6eb..64c85fea 100644 --- a/SabreTools.Serialization.Readers.Test/M1Tests.cs +++ b/SabreTools.Serialization.Readers.Test/M1Tests.cs @@ -212,7 +212,7 @@ namespace SabreTools.Serialization.Readers.Test var sound = new Data.Models.Listxml.Sound { - Channels = "XXXXXX", + Channels = 12345L, }; var control = new Data.Models.Listxml.Control @@ -650,7 +650,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Sound? sound) { Assert.NotNull(sound); - Assert.Equal("XXXXXX", sound.Channels); + Assert.Equal(12345L, sound.Channels); } /// diff --git a/SabreTools.Serialization.Readers.Test/MessTests.cs b/SabreTools.Serialization.Readers.Test/MessTests.cs index 6e6d0895..5570a6b8 100644 --- a/SabreTools.Serialization.Readers.Test/MessTests.cs +++ b/SabreTools.Serialization.Readers.Test/MessTests.cs @@ -212,7 +212,7 @@ namespace SabreTools.Serialization.Readers.Test var sound = new Data.Models.Listxml.Sound { - Channels = "XXXXXX", + Channels = 12345L, }; var control = new Data.Models.Listxml.Control @@ -650,7 +650,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Sound? sound) { Assert.NotNull(sound); - Assert.Equal("XXXXXX", sound.Channels); + Assert.Equal(12345L, sound.Channels); } /// diff --git a/SabreTools.Serialization.Readers/ClrMamePro.cs b/SabreTools.Serialization.Readers/ClrMamePro.cs index 0ce08e58..2761c576 100644 --- a/SabreTools.Serialization.Readers/ClrMamePro.cs +++ b/SabreTools.Serialization.Readers/ClrMamePro.cs @@ -5,6 +5,7 @@ using System.Text; using SabreTools.Data.Extensions; using SabreTools.Data.Models.ClrMamePro; using SabreTools.Text.ClrMamePro; +using SabreTools.Text.Extensions; #pragma warning disable CA1822 // Mark members as static namespace SabreTools.Serialization.Readers @@ -847,7 +848,7 @@ namespace SabreTools.Serialization.Readers switch (kvp.Key?.ToLowerInvariant()) { case "channels": - sound.Channels = kvp.Value; + sound.Channels = NumberHelper.ConvertToInt64(kvp.Value); break; default: // TODO: Log invalid values diff --git a/SabreTools.Serialization.Readers/Listxml.cs b/SabreTools.Serialization.Readers/Listxml.cs index 9e38ba06..aaa70299 100644 --- a/SabreTools.Serialization.Readers/Listxml.cs +++ b/SabreTools.Serialization.Readers/Listxml.cs @@ -4,6 +4,7 @@ using System.IO; using System.Xml; using SabreTools.Data.Extensions; using SabreTools.Data.Models.Listxml; +using SabreTools.Text.Extensions; namespace SabreTools.Serialization.Readers { @@ -1160,7 +1161,7 @@ namespace SabreTools.Serialization.Readers { var obj = new Sound(); - obj.Channels = reader.GetAttribute("channels"); + obj.Channels = NumberHelper.ConvertToInt64(reader.GetAttribute("channels")); return obj; } diff --git a/SabreTools.Serialization.Readers/M1.cs b/SabreTools.Serialization.Readers/M1.cs index 154c9aab..5a2b94df 100644 --- a/SabreTools.Serialization.Readers/M1.cs +++ b/SabreTools.Serialization.Readers/M1.cs @@ -4,6 +4,7 @@ using System.IO; using System.Xml; using SabreTools.Data.Extensions; using SabreTools.Data.Models.Listxml; +using SabreTools.Text.Extensions; namespace SabreTools.Serialization.Readers { @@ -1158,7 +1159,7 @@ namespace SabreTools.Serialization.Readers { var obj = new Sound(); - obj.Channels = reader.GetAttribute("channels"); + obj.Channels = NumberHelper.ConvertToInt64(reader.GetAttribute("channels")); return obj; } diff --git a/SabreTools.Serialization.Readers/Mess.cs b/SabreTools.Serialization.Readers/Mess.cs index a39567c4..534a9717 100644 --- a/SabreTools.Serialization.Readers/Mess.cs +++ b/SabreTools.Serialization.Readers/Mess.cs @@ -4,6 +4,7 @@ using System.IO; using System.Xml; using SabreTools.Data.Extensions; using SabreTools.Data.Models.Listxml; +using SabreTools.Text.Extensions; namespace SabreTools.Serialization.Readers { @@ -1158,7 +1159,7 @@ namespace SabreTools.Serialization.Readers { var obj = new Sound(); - obj.Channels = reader.GetAttribute("channels"); + obj.Channels = NumberHelper.ConvertToInt64(reader.GetAttribute("channels")); return obj; } diff --git a/SabreTools.Serialization.Writers/ClrMamePro.cs b/SabreTools.Serialization.Writers/ClrMamePro.cs index f56bddbc..cd4f9df1 100644 --- a/SabreTools.Serialization.Writers/ClrMamePro.cs +++ b/SabreTools.Serialization.Writers/ClrMamePro.cs @@ -435,7 +435,7 @@ namespace SabreTools.Serialization.Writers return; writer.WriteStartElement("sound"); - writer.WriteRequiredAttributeString("channels", sound.Channels, throwOnError: true); + writer.WriteRequiredAttributeString("channels", sound.Channels?.ToString(), throwOnError: true); writer.WriteEndElement(); // sound } diff --git a/SabreTools.Serialization.Writers/Listxml.cs b/SabreTools.Serialization.Writers/Listxml.cs index cc458cf6..edb20f88 100644 --- a/SabreTools.Serialization.Writers/Listxml.cs +++ b/SabreTools.Serialization.Writers/Listxml.cs @@ -823,7 +823,7 @@ namespace SabreTools.Serialization.Writers { writer.WriteStartElement("sound"); - writer.WriteRequiredAttributeString("channels", obj.Channels); + writer.WriteRequiredAttributeString("channels", obj.Channels?.ToString()); writer.WriteEndElement(); } diff --git a/SabreTools.Serialization.Writers/M1.cs b/SabreTools.Serialization.Writers/M1.cs index 7f4137e6..59599972 100644 --- a/SabreTools.Serialization.Writers/M1.cs +++ b/SabreTools.Serialization.Writers/M1.cs @@ -821,7 +821,7 @@ namespace SabreTools.Serialization.Writers { writer.WriteStartElement("sound"); - writer.WriteRequiredAttributeString("channels", obj.Channels); + writer.WriteRequiredAttributeString("channels", obj.Channels?.ToString()); writer.WriteEndElement(); } diff --git a/SabreTools.Serialization.Writers/Mess.cs b/SabreTools.Serialization.Writers/Mess.cs index c74c693a..c705d657 100644 --- a/SabreTools.Serialization.Writers/Mess.cs +++ b/SabreTools.Serialization.Writers/Mess.cs @@ -821,7 +821,7 @@ namespace SabreTools.Serialization.Writers { writer.WriteStartElement("sound"); - writer.WriteRequiredAttributeString("channels", obj.Channels); + writer.WriteRequiredAttributeString("channels", obj.Channels?.ToString()); writer.WriteEndElement(); } From 3c6cfef070daedd9ca8e62183bd91b985fdc0c69 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Thu, 2 Apr 2026 23:45:17 -0400 Subject: [PATCH 030/142] Convert size keys to size properties --- .../MetadataExtensions.cs | 8 +- SabreTools.Data.Models/ClrMamePro/Rom.cs | 2 +- SabreTools.Data.Models/DosCenter/File.cs | 2 +- SabreTools.Data.Models/EverdriveSMDB/Row.cs | 2 +- SabreTools.Data.Models/Listrom/Row.cs | 2 +- SabreTools.Data.Models/Listxml/Rom.cs | 3 +- SabreTools.Data.Models/Logiqx/Rom.cs | 2 +- SabreTools.Data.Models/Metadata/DataArea.cs | 5 +- SabreTools.Data.Models/Metadata/Rom.cs | 5 +- SabreTools.Data.Models/OfflineList/Game.cs | 2 +- SabreTools.Data.Models/RomCenter/Rom.cs | 2 +- SabreTools.Data.Models/SeparatedValue/Row.cs | 2 +- .../SoftwareList/DataArea.cs | 2 +- SabreTools.Data.Models/SoftwareList/Rom.cs | 2 +- .../DatFileTests.FromMetadata.cs | 8 +- .../DatFileTests.Splitting.cs | 114 ++++++------------ .../DatFileTests.ToMetadata.cs | 4 +- .../DatFileTests.cs | 78 ++++++------ .../DatStatisticsTests.cs | 2 +- .../FormatsTests.cs | 22 ++-- .../ItemDictionaryDBTests.cs | 65 ++++------ .../ItemDictionaryTests.cs | 65 ++++------ .../DatFile.FromMetadata.cs | 6 +- .../DatFile.ToMetadata.cs | 4 +- SabreTools.Metadata.DatFiles/DatFile.cs | 8 +- SabreTools.Metadata.DatFiles/DatStatistics.cs | 4 +- .../Formats/ClrMamePro.cs | 4 +- .../Formats/DosCenter.cs | 4 +- .../Formats/Listrom.cs | 4 +- .../Formats/Listxml.cs | 4 +- .../Formats/Logiqx.cs | 4 +- .../Formats/OfflineList.cs | 4 +- .../Formats/RomCenter.cs | 4 +- .../Formats/SeparatedValue.cs | 4 +- .../Formats/SoftwareList.cs | 6 +- .../ItemDictionary.cs | 4 +- .../ItemDictionaryDB.cs | 4 +- .../Formats/FileTests.cs | 2 +- .../Formats/DataArea.cs | 10 +- SabreTools.Metadata.DatItems/Formats/File.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Rom.cs | 16 ++- SabreTools.Metadata.Filter/FilterObject.cs | 6 + SabreTools.Metadata.Filter/FilterRunner.cs | 8 +- .../DictionaryBaseExtensionsTests.cs | 68 +++++------ .../DictionaryBaseExtensions.cs | 4 +- .../ArchiveDotOrgTests.cs | 4 +- .../ClrMameProTests.cs | 4 +- .../DosCenterTests.cs | 4 +- .../EverdriveSMDBTests.cs | 4 +- .../ListromTests.cs | 4 +- .../ListxmlTests.cs | 4 +- .../LogiqxTests.cs | 4 +- .../M1Tests.cs | 4 +- .../MessTests.cs | 4 +- .../OfflineListTests.cs | 4 +- .../RomCenterTests.cs | 4 +- .../SeparatedValueTests.cs | 4 +- .../SoftwareListTests.cs | 8 +- .../ArchiveDotOrg.Deserializer.cs | 2 +- .../ArchiveDotOrg.Serializer.cs | 3 +- .../ClrMamePro.Deserializer.cs | 2 +- .../ClrMamePro.Serializer.cs | 2 +- .../DosCenter.Deserializer.cs | 2 +- .../DosCenter.Serializer.cs | 2 +- .../EverdriveSMDB.Deserializer.cs | 2 +- .../EverdriveSMDB.Serializer.cs | 2 +- .../Listrom.Deserializer.cs | 2 +- .../Listrom.Serializer.cs | 2 +- .../Listxml.Deserializer.cs | 2 +- .../Listxml.Serializer.cs | 2 +- .../Logiqx.Deserializer.cs | 2 +- .../Logiqx.Serializer.cs | 2 +- .../OfflineList.Deserializer.cs | 4 +- .../OfflineList.Serializer.cs | 2 +- .../RomCenter.Deserializer.cs | 2 +- .../RomCenter.Serializer.cs | 2 +- .../SeparatedValue.Deserializer.cs | 2 +- .../SeparatedValue.Serializer.cs | 2 +- .../SoftwareList.Deserializer.cs | 4 +- .../SoftwareList.Serializer.cs | 6 +- .../ClrMameProTests.cs | 4 +- .../DosCenterTests.cs | 4 +- .../EverdriveSMDBTests.cs | 4 +- .../ListromTests.cs | 8 +- .../ListxmlTests.cs | 4 +- .../LogiqxTests.cs | 4 +- .../M1Tests.cs | 4 +- .../MessTests.cs | 4 +- .../OfflineListTests.cs | 4 +- .../RomCenterTests.cs | 4 +- .../SeparatedValueTests.cs | 8 +- .../SoftwareListTests.cs | 8 +- .../ClrMamePro.cs | 2 +- SabreTools.Serialization.Readers/DosCenter.cs | 8 +- .../EverdriveSMDB.cs | 3 +- SabreTools.Serialization.Readers/Listrom.cs | 7 +- SabreTools.Serialization.Readers/Listxml.cs | 2 +- SabreTools.Serialization.Readers/Logiqx.cs | 3 +- SabreTools.Serialization.Readers/M1.cs | 2 +- SabreTools.Serialization.Readers/Mess.cs | 2 +- .../OfflineList.cs | 3 +- SabreTools.Serialization.Readers/RomCenter.cs | 3 +- .../SeparatedValue.cs | 5 +- .../SoftwareList.cs | 5 +- .../ClrMamePro.cs | 2 +- SabreTools.Serialization.Writers/DosCenter.cs | 2 +- .../EverdriveSMDB.cs | 2 +- SabreTools.Serialization.Writers/Listrom.cs | 2 +- SabreTools.Serialization.Writers/Listxml.cs | 2 +- SabreTools.Serialization.Writers/Logiqx.cs | 2 +- SabreTools.Serialization.Writers/M1.cs | 2 +- SabreTools.Serialization.Writers/Mess.cs | 2 +- .../OfflineList.cs | 2 +- .../SeparatedValue.cs | 4 +- .../SoftwareList.cs | 4 +- 115 files changed, 377 insertions(+), 446 deletions(-) diff --git a/SabreTools.Data.Extensions/MetadataExtensions.cs b/SabreTools.Data.Extensions/MetadataExtensions.cs index 77d4714f..cfdcb275 100644 --- a/SabreTools.Data.Extensions/MetadataExtensions.cs +++ b/SabreTools.Data.Extensions/MetadataExtensions.cs @@ -199,6 +199,7 @@ namespace SabreTools.Data.Extensions else if (self is DataArea selfDataArea && clone is DataArea cloneDataArea) { cloneDataArea.Endianness = selfDataArea.Endianness; + cloneDataArea.Size = selfDataArea.Size; } else if (self is Device selfDevice && clone is Device cloneDevice) { @@ -345,6 +346,7 @@ namespace SabreTools.Data.Extensions cloneRom.MIA = selfRom.MIA; cloneRom.OpenMSXMediaType = selfRom.OpenMSXMediaType; cloneRom.Optional = selfRom.Optional; + cloneRom.Size = selfRom.Size; cloneRom.SoundOnly = selfRom.SoundOnly; cloneRom.Status = selfRom.Status; cloneRom.Value = selfRom.Value; @@ -1037,10 +1039,10 @@ namespace SabreTools.Data.Extensions if (self is null || other is null) return; - long? selfSize = self.ReadLong(Rom.SizeKey); - long? otherSize = other.ReadLong(Rom.SizeKey); + long? selfSize = self.Size; + long? otherSize = other.Size; if (selfSize is null && otherSize is not null) - self[Rom.SizeKey] = otherSize; + self.Size = otherSize; string? selfCrc16 = self.ReadString(Rom.CRC16Key); string? otherCrc16 = other.ReadString(Rom.CRC16Key); diff --git a/SabreTools.Data.Models/ClrMamePro/Rom.cs b/SabreTools.Data.Models/ClrMamePro/Rom.cs index b84d1b68..329fa18e 100644 --- a/SabreTools.Data.Models/ClrMamePro/Rom.cs +++ b/SabreTools.Data.Models/ClrMamePro/Rom.cs @@ -13,7 +13,7 @@ namespace SabreTools.Data.Models.ClrMamePro /// size, Numeric [Required] - public string? Size { get; set; } + public long? Size { get; set; } /// crc public string? CRC { get; set; } diff --git a/SabreTools.Data.Models/DosCenter/File.cs b/SabreTools.Data.Models/DosCenter/File.cs index 7766ead6..99b30442 100644 --- a/SabreTools.Data.Models/DosCenter/File.cs +++ b/SabreTools.Data.Models/DosCenter/File.cs @@ -10,7 +10,7 @@ namespace SabreTools.Data.Models.DosCenter /// size, attribute, numeric [Required] - public string? Size { get; set; } + public long? Size { get; set; } /// crc, attribute [Required] diff --git a/SabreTools.Data.Models/EverdriveSMDB/Row.cs b/SabreTools.Data.Models/EverdriveSMDB/Row.cs index ddc19765..d81cc3fb 100644 --- a/SabreTools.Data.Models/EverdriveSMDB/Row.cs +++ b/SabreTools.Data.Models/EverdriveSMDB/Row.cs @@ -21,6 +21,6 @@ namespace SabreTools.Data.Models.EverdriveSMDB [Required] public string? CRC32 { get; set; } - public string? Size { get; set; } + public long? Size { get; set; } } } diff --git a/SabreTools.Data.Models/Listrom/Row.cs b/SabreTools.Data.Models/Listrom/Row.cs index 28e32499..a86bb239 100644 --- a/SabreTools.Data.Models/Listrom/Row.cs +++ b/SabreTools.Data.Models/Listrom/Row.cs @@ -18,7 +18,7 @@ namespace SabreTools.Data.Models.Listrom [Required] public string? Name { get; set; } - public string? Size { get; set; } + public long? Size { get; set; } public bool Bad { get; set; } diff --git a/SabreTools.Data.Models/Listxml/Rom.cs b/SabreTools.Data.Models/Listxml/Rom.cs index a2f60acc..d537ea66 100644 --- a/SabreTools.Data.Models/Listxml/Rom.cs +++ b/SabreTools.Data.Models/Listxml/Rom.cs @@ -14,10 +14,9 @@ namespace SabreTools.Data.Models.Listxml [XmlAttribute("bios")] public string? Bios { get; set; } - /// Numeric [Required] [XmlAttribute("size")] - public string? Size { get; set; } + public long? Size { get; set; } [XmlAttribute("crc")] public string? CRC { get; set; } diff --git a/SabreTools.Data.Models/Logiqx/Rom.cs b/SabreTools.Data.Models/Logiqx/Rom.cs index ea05a3a8..bef09c1c 100644 --- a/SabreTools.Data.Models/Logiqx/Rom.cs +++ b/SabreTools.Data.Models/Logiqx/Rom.cs @@ -14,7 +14,7 @@ namespace SabreTools.Data.Models.Logiqx [Required] [XmlAttribute("size")] - public string? Size { get; set; } + public long? Size { get; set; } /// Hash extension [XmlAttribute("crc16")] diff --git a/SabreTools.Data.Models/Metadata/DataArea.cs b/SabreTools.Data.Models/Metadata/DataArea.cs index 07fe7cc1..9ca44103 100644 --- a/SabreTools.Data.Models/Metadata/DataArea.cs +++ b/SabreTools.Data.Models/Metadata/DataArea.cs @@ -13,6 +13,8 @@ namespace SabreTools.Data.Models.Metadata public string? Name { get; set; } + public long? Size { get; set; } + #endregion #region Keys @@ -21,9 +23,6 @@ namespace SabreTools.Data.Models.Metadata [NoFilter] public const string RomKey = "rom"; - /// long - public const string SizeKey = "size"; - /// (8|16|32|64) "8" /// TODO: Convert to enum public const string WidthKey = "width"; diff --git a/SabreTools.Data.Models/Metadata/Rom.cs b/SabreTools.Data.Models/Metadata/Rom.cs index 9217cfbd..d83a81bb 100644 --- a/SabreTools.Data.Models/Metadata/Rom.cs +++ b/SabreTools.Data.Models/Metadata/Rom.cs @@ -31,6 +31,8 @@ namespace SabreTools.Data.Models.Metadata /// (yes|no) "no" public bool? Optional { get; set; } + public long? Size { get; set; } + /// (yes|no) "no" public bool? SoundOnly { get; set; } @@ -223,9 +225,6 @@ namespace SabreTools.Data.Models.Metadata /// string public const string SHA512Key = "sha512"; - /// long - public const string SizeKey = "size"; - /// string; ArchiveDotOrg.File public const string SourceKey = "source"; diff --git a/SabreTools.Data.Models/OfflineList/Game.cs b/SabreTools.Data.Models/OfflineList/Game.cs index 508437f9..c86e68e0 100644 --- a/SabreTools.Data.Models/OfflineList/Game.cs +++ b/SabreTools.Data.Models/OfflineList/Game.cs @@ -20,7 +20,7 @@ namespace SabreTools.Data.Models.OfflineList /// Numeric [XmlElement("romSize")] - public string? RomSize { get; set; } + public long? RomSize { get; set; } [XmlElement("publisher")] public string? Publisher { get; set; } diff --git a/SabreTools.Data.Models/RomCenter/Rom.cs b/SabreTools.Data.Models/RomCenter/Rom.cs index f7db5251..c60d454f 100644 --- a/SabreTools.Data.Models/RomCenter/Rom.cs +++ b/SabreTools.Data.Models/RomCenter/Rom.cs @@ -22,7 +22,7 @@ namespace SabreTools.Data.Models.RomCenter public string? RomCRC { get; set; } /// 6 - public string? RomSize { get; set; } + public long? RomSize { get; set; } /// 7 public string? RomOf { get; set; } diff --git a/SabreTools.Data.Models/SeparatedValue/Row.cs b/SabreTools.Data.Models/SeparatedValue/Row.cs index 5fed32c0..d68461ee 100644 --- a/SabreTools.Data.Models/SeparatedValue/Row.cs +++ b/SabreTools.Data.Models/SeparatedValue/Row.cs @@ -35,7 +35,7 @@ namespace SabreTools.Data.Models.SeparatedValue public string? DiskName { get; set; } /// Size, Numeric - public string? Size { get; set; } + public long? Size { get; set; } /// CRC public string? CRC { get; set; } diff --git a/SabreTools.Data.Models/SoftwareList/DataArea.cs b/SabreTools.Data.Models/SoftwareList/DataArea.cs index dfe7dfee..58cf3219 100644 --- a/SabreTools.Data.Models/SoftwareList/DataArea.cs +++ b/SabreTools.Data.Models/SoftwareList/DataArea.cs @@ -13,7 +13,7 @@ namespace SabreTools.Data.Models.SoftwareList [Required] [XmlAttribute("size")] - public string? Size { get; set; } + public long? Size { get; set; } /// (8|16|32|64) "8" [XmlAttribute("width")] diff --git a/SabreTools.Data.Models/SoftwareList/Rom.cs b/SabreTools.Data.Models/SoftwareList/Rom.cs index 265f8127..67d7a8d1 100644 --- a/SabreTools.Data.Models/SoftwareList/Rom.cs +++ b/SabreTools.Data.Models/SoftwareList/Rom.cs @@ -12,7 +12,7 @@ namespace SabreTools.Data.Models.SoftwareList public string? Name { get; set; } [XmlAttribute("size")] - public string? Size { get; set; } + public long? Size { get; set; } [XmlAttribute("length")] public string? Length { get; set; } diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs index 947c6f36..09812fb1 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs @@ -542,7 +542,7 @@ namespace SabreTools.Metadata.DatFiles.Test Endianness = Data.Models.Metadata.Endianness.Big, Name = "name", [Data.Models.Metadata.DataArea.RomKey] = new Data.Models.Metadata.Rom[] { [] }, - [Data.Models.Metadata.DataArea.SizeKey] = 12345L, + Size = 12345L, [Data.Models.Metadata.DataArea.WidthKey] = 64, }; } @@ -838,7 +838,7 @@ namespace SabreTools.Metadata.DatFiles.Test [Data.Models.Metadata.Rom.SHA256Key] = HashType.SHA256.ZeroString, [Data.Models.Metadata.Rom.SHA384Key] = HashType.SHA384.ZeroString, [Data.Models.Metadata.Rom.SHA512Key] = HashType.SHA512.ZeroString, - [Data.Models.Metadata.Rom.SizeKey] = 12345L, + Size = 12345L, SoundOnly = true, [Data.Models.Metadata.Rom.SourceKey] = "source", [Data.Models.Metadata.Rom.SpamSumKey] = HashType.SpamSum.ZeroString, @@ -1253,7 +1253,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(dataArea); Assert.Equal(Data.Models.Metadata.Endianness.Big, dataArea.Endianness); Assert.Equal("name", dataArea.Name); - Assert.Equal(12345L, dataArea.ReadLong(Data.Models.Metadata.DataArea.SizeKey)); + Assert.Equal(12345L, dataArea.Size); Assert.Equal(64, dataArea.ReadLong(Data.Models.Metadata.DataArea.WidthKey)); } @@ -1558,7 +1558,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal(HashType.SHA256.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.SHA256Key)); Assert.Equal(HashType.SHA384.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.SHA384Key)); Assert.Equal(HashType.SHA512.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.SHA512Key)); - Assert.Equal(12345L, rom.ReadLong(Data.Models.Metadata.Rom.SizeKey)); + Assert.Equal(12345L, rom.Size); Assert.True(rom.SoundOnly); Assert.Equal("source", rom.ReadString(Data.Models.Metadata.Rom.SourceKey)); Assert.Equal(HashType.SpamSum.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.SpamSumKey)); diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.Splitting.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.Splitting.cs index 62c11937..fa405df6 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.Splitting.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.Splitting.cs @@ -22,23 +22,20 @@ namespace SabreTools.Metadata.DatFiles.Test childMachine.Write(Data.Models.Metadata.Machine.CloneOfKey, "parent"); childMachine.IsBios = true; - DatItem parentItem = new Rom(); + DatItem parentItem = new Rom() { Size = 12345 }; parentItem.SetName("parent_rom"); - parentItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); parentItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); parentItem.Machine = parentMachine; parentItem.Source = source; - DatItem matchChildItem = new Rom(); + DatItem matchChildItem = new Rom() { Size = 12345 }; matchChildItem.SetName("match_child_rom"); - matchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); matchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); matchChildItem.Machine = childMachine; matchChildItem.Source = source; - DatItem noMatchChildItem = new Rom(); + DatItem noMatchChildItem = new Rom() { Size = 12345 }; noMatchChildItem.SetName("no_match_child_rom"); - noMatchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); noMatchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "beefdead"); noMatchChildItem.Machine = childMachine; noMatchChildItem.Source = source; @@ -67,23 +64,20 @@ namespace SabreTools.Metadata.DatFiles.Test childMachine.Write(Data.Models.Metadata.Machine.CloneOfKey, "parent"); childMachine.IsBios = true; - DatItem parentItem = new Rom(); + DatItem parentItem = new Rom() { Size = 12345 }; parentItem.SetName("parent_rom"); - parentItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); parentItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); parentItem.Machine = parentMachine; parentItem.Source = source; - DatItem matchChildItem = new Rom(); + DatItem matchChildItem = new Rom() { Size = 12345 }; matchChildItem.SetName("match_child_rom"); - matchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); matchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); matchChildItem.Machine = childMachine; matchChildItem.Source = source; - DatItem noMatchChildItem = new Rom(); + DatItem noMatchChildItem = new Rom() { Size = 12345 }; noMatchChildItem.SetName("no_match_child_rom"); - noMatchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); noMatchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "beefdead"); noMatchChildItem.Machine = childMachine; noMatchChildItem.Source = source; @@ -112,23 +106,20 @@ namespace SabreTools.Metadata.DatFiles.Test childMachine.Write(Data.Models.Metadata.Machine.CloneOfKey, "parent"); childMachine.IsBios = true; - DatItem parentItem = new Rom(); + DatItem parentItem = new Rom() { Size = 12345 }; parentItem.SetName("parent_rom"); - parentItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); parentItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); parentItem.Machine = parentMachine; parentItem.Source = source; - DatItem matchChildItem = new Rom(); + DatItem matchChildItem = new Rom() { Size = 12345 }; matchChildItem.SetName("match_child_rom"); - matchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); matchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); matchChildItem.Machine = childMachine; matchChildItem.Source = source; - DatItem noMatchChildItem = new Rom(); + DatItem noMatchChildItem = new Rom() { Size = 12345 }; noMatchChildItem.SetName("no_match_child_rom"); - noMatchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); noMatchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "beefdead"); noMatchChildItem.Machine = childMachine; noMatchChildItem.Source = source; @@ -160,23 +151,20 @@ namespace SabreTools.Metadata.DatFiles.Test childMachine.Write(Data.Models.Metadata.Machine.CloneOfKey, "parent"); childMachine.IsBios = true; - DatItem parentItem = new Rom(); + DatItem parentItem = new Rom() { Size = 12345 }; parentItem.SetName("parent_rom"); - parentItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); parentItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); parentItem.Machine = parentMachine; parentItem.Source = source; - DatItem matchChildItem = new Rom(); + DatItem matchChildItem = new Rom() { Size = 12345 }; matchChildItem.SetName("match_child_rom"); - matchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); matchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); matchChildItem.Machine = childMachine; matchChildItem.Source = source; - DatItem noMatchChildItem = new Rom(); + DatItem noMatchChildItem = new Rom() { Size = 12345 }; noMatchChildItem.SetName("no_match_child_rom"); - noMatchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); noMatchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "beefdead"); noMatchChildItem.Machine = childMachine; noMatchChildItem.Source = source; @@ -212,23 +200,20 @@ namespace SabreTools.Metadata.DatFiles.Test childMachine.Write(Data.Models.Metadata.Machine.CloneOfKey, "parent"); childMachine.IsBios = true; - DatItem parentItem = new Rom(); + DatItem parentItem = new Rom() { Size = 12345 }; parentItem.SetName("parent_rom"); - parentItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); parentItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); parentItem.Machine = parentMachine; parentItem.Source = source; - DatItem matchChildItem = new Rom(); + DatItem matchChildItem = new Rom() { Size = 12345 }; matchChildItem.SetName("match_child_rom"); - matchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); matchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); matchChildItem.Machine = childMachine; matchChildItem.Source = source; - DatItem noMatchChildItem = new Rom(); + DatItem noMatchChildItem = new Rom() { Size = 12345 }; noMatchChildItem.SetName("no_match_child_rom"); - noMatchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); noMatchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "beefdead"); noMatchChildItem.Machine = childMachine; noMatchChildItem.Source = source; @@ -257,23 +242,20 @@ namespace SabreTools.Metadata.DatFiles.Test childMachine.Write(Data.Models.Metadata.Machine.CloneOfKey, "parent"); childMachine.IsBios = true; - DatItem parentItem = new Rom(); + DatItem parentItem = new Rom() { Size = 12345 }; parentItem.SetName("parent_rom"); - parentItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); parentItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); parentItem.Machine = parentMachine; parentItem.Source = source; - DatItem matchChildItem = new Rom(); + DatItem matchChildItem = new Rom() { Size = 12345 }; matchChildItem.SetName("match_child_rom"); - matchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); matchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); matchChildItem.Machine = childMachine; matchChildItem.Source = source; - DatItem noMatchChildItem = new Rom(); + DatItem noMatchChildItem = new Rom() { Size = 12345 }; noMatchChildItem.SetName("no_match_child_rom"); - noMatchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); noMatchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "beefdead"); noMatchChildItem.Machine = childMachine; noMatchChildItem.Source = source; @@ -325,9 +307,8 @@ namespace SabreTools.Metadata.DatFiles.Test slotOptionItem.Machine = slotOptionMachine; slotOptionItem.Source = source; - DatItem datItem = new Rom(); + DatItem datItem = new Rom() { Size = 12345 }; datItem.SetName("rom"); - datItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); datItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); datItem.Machine = itemMachine; datItem.Source = source; @@ -380,9 +361,8 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem slotOptionItem = new Sample(); slotOptionItem.SetName("slot_option_item"); - DatItem datItem = new Rom(); + DatItem datItem = new Rom() { Size = 12345 }; datItem.SetName("rom"); - datItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); datItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); DatItem deviceRef = new DeviceRef(); @@ -425,23 +405,20 @@ namespace SabreTools.Metadata.DatFiles.Test childMachine.Write(Data.Models.Metadata.Machine.RomOfKey, "parent"); childMachine.IsBios = true; - DatItem parentItem = new Rom(); + DatItem parentItem = new Rom() { Size = 12345 }; parentItem.SetName("parent_rom"); - parentItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); parentItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); parentItem.Machine = parentMachine; parentItem.Source = source; - DatItem matchChildItem = new Rom(); + DatItem matchChildItem = new Rom() { Size = 12345 }; matchChildItem.SetName("match_child_rom"); - matchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); matchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); matchChildItem.Machine = childMachine; matchChildItem.Source = source; - DatItem noMatchChildItem = new Rom(); + DatItem noMatchChildItem = new Rom() { Size = 12345 }; noMatchChildItem.SetName("no_match_child_rom"); - noMatchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); noMatchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "beefdead"); noMatchChildItem.Machine = childMachine; noMatchChildItem.Source = source; @@ -470,23 +447,20 @@ namespace SabreTools.Metadata.DatFiles.Test childMachine.Write(Data.Models.Metadata.Machine.RomOfKey, "parent"); childMachine.IsBios = true; - DatItem parentItem = new Rom(); + DatItem parentItem = new Rom() { Size = 12345 }; parentItem.SetName("parent_rom"); - parentItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); parentItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); parentItem.Machine = parentMachine; parentItem.Source = source; - DatItem matchChildItem = new Rom(); + DatItem matchChildItem = new Rom() { Size = 12345 }; matchChildItem.SetName("match_child_rom"); - matchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); matchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); matchChildItem.Machine = childMachine; matchChildItem.Source = source; - DatItem noMatchChildItem = new Rom(); + DatItem noMatchChildItem = new Rom() { Size = 12345 }; noMatchChildItem.SetName("no_match_child_rom"); - noMatchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); noMatchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "beefdead"); noMatchChildItem.Machine = childMachine; noMatchChildItem.Source = source; @@ -587,23 +561,20 @@ namespace SabreTools.Metadata.DatFiles.Test childMachine.Name = "child"; childMachine.Write(Data.Models.Metadata.Machine.CloneOfKey, "parent"); - DatItem parentItem = new Rom(); + DatItem parentItem = new Rom() { Size = 12345 }; parentItem.SetName("parent_rom"); - parentItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); parentItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); parentItem.Machine = parentMachine; parentItem.Source = source; - DatItem matchChildItem = new Rom(); + DatItem matchChildItem = new Rom() { Size = 12345 }; matchChildItem.SetName("match_child_rom"); - matchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); matchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); matchChildItem.Machine = childMachine; matchChildItem.Source = source; - DatItem noMatchChildItem = new Rom(); + DatItem noMatchChildItem = new Rom() { Size = 12345 }; noMatchChildItem.SetName("no_match_child_rom"); - noMatchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); noMatchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "beefdead"); noMatchChildItem.Machine = childMachine; noMatchChildItem.Source = source; @@ -637,23 +608,20 @@ namespace SabreTools.Metadata.DatFiles.Test childMachine.Name = "child"; childMachine.Write(Data.Models.Metadata.Machine.CloneOfKey, "parent"); - DatItem parentItem = new Rom(); + DatItem parentItem = new Rom() { Size = 12345 }; parentItem.SetName("parent_rom"); - parentItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); parentItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); parentItem.Machine = parentMachine; parentItem.Source = source; - DatItem matchChildItem = new Rom(); + DatItem matchChildItem = new Rom() { Size = 12345 }; matchChildItem.SetName("match_child_rom"); - matchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); matchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); matchChildItem.Machine = childMachine; matchChildItem.Source = source; - DatItem noMatchChildItem = new Rom(); + DatItem noMatchChildItem = new Rom() { Size = 12345 }; noMatchChildItem.SetName("no_match_child_rom"); - noMatchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); noMatchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "beefdead"); noMatchChildItem.Machine = childMachine; noMatchChildItem.Source = source; @@ -694,23 +662,20 @@ namespace SabreTools.Metadata.DatFiles.Test childMachine.Write(Data.Models.Metadata.Machine.RomOfKey, "parent"); childMachine.IsBios = true; - DatItem parentItem = new Rom(); + DatItem parentItem = new Rom() { Size = 12345 }; parentItem.SetName("parent_rom"); - parentItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); parentItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); parentItem.Machine = parentMachine; parentItem.Source = source; - DatItem matchChildItem = new Rom(); + DatItem matchChildItem = new Rom() { Size = 12345 }; matchChildItem.SetName("match_child_rom"); - matchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); matchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); matchChildItem.Machine = childMachine; matchChildItem.Source = source; - DatItem noMatchChildItem = new Rom(); + DatItem noMatchChildItem = new Rom() { Size = 12345 }; noMatchChildItem.SetName("no_match_child_rom"); - noMatchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); noMatchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "beefdead"); noMatchChildItem.Machine = childMachine; noMatchChildItem.Source = source; @@ -743,23 +708,20 @@ namespace SabreTools.Metadata.DatFiles.Test childMachine.Write(Data.Models.Metadata.Machine.RomOfKey, "parent"); childMachine.IsBios = true; - DatItem parentItem = new Rom(); + DatItem parentItem = new Rom() { Size = 12345 }; parentItem.SetName("parent_rom"); - parentItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); parentItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); parentItem.Machine = parentMachine; parentItem.Source = source; - DatItem matchChildItem = new Rom(); + DatItem matchChildItem = new Rom() { Size = 12345 }; matchChildItem.SetName("match_child_rom"); - matchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); matchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); matchChildItem.Machine = childMachine; matchChildItem.Source = source; - DatItem noMatchChildItem = new Rom(); + DatItem noMatchChildItem = new Rom() { Size = 12345 }; noMatchChildItem.SetName("no_match_child_rom"); - noMatchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); noMatchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "beefdead"); noMatchChildItem.Machine = childMachine; noMatchChildItem.Source = source; diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs index d12014b2..f286010a 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs @@ -760,7 +760,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(dataArea); Assert.Equal(Data.Models.Metadata.Endianness.Big, dataArea.Endianness); Assert.Equal("name", dataArea.Name); - Assert.Equal(12345, dataArea.ReadLong(Data.Models.Metadata.DataArea.SizeKey)); + Assert.Equal(12345, dataArea.Size); Assert.Equal(64, dataArea.ReadLong(Data.Models.Metadata.DataArea.WidthKey)); Data.Models.Metadata.Rom[]? roms = dataArea.ReadArray(Data.Models.Metadata.DataArea.RomKey); @@ -1103,7 +1103,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal(HashType.SHA256.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.SHA256Key)); Assert.Equal(HashType.SHA384.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.SHA384Key)); Assert.Equal(HashType.SHA512.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.SHA512Key)); - Assert.Equal(12345, rom.ReadLong(Data.Models.Metadata.Rom.SizeKey)); + Assert.Equal(12345, rom.Size); Assert.True(rom.SoundOnly); Assert.Equal("source", rom.ReadString(Data.Models.Metadata.Rom.SourceKey)); Assert.Equal(HashType.SpamSum.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.SpamSumKey)); diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.cs index 0987c682..b773c286 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.cs @@ -1368,9 +1368,8 @@ namespace SabreTools.Metadata.DatFiles.Test machine.Write(Data.Models.Metadata.Machine.PublisherKey, "publisher"); machine.Write(Data.Models.Metadata.Machine.CategoryKey, "category"); - DatItem item = new Rom(); + DatItem item = new Rom() { Size = 12345 }; item.SetName("name"); - item.Write(Data.Models.Metadata.Rom.SizeKey, 12345); item.Write(Data.Models.Metadata.Rom.CRC16Key, "crc16"); item.Write(Data.Models.Metadata.Rom.CRCKey, "crc"); item.Write(Data.Models.Metadata.Rom.CRC64Key, "crc64"); @@ -1472,9 +1471,8 @@ namespace SabreTools.Metadata.DatFiles.Test machine.Write(Data.Models.Metadata.Machine.PublisherKey, "publisher"); machine.Write(Data.Models.Metadata.Machine.CategoryKey, "category"); - DatItem item = new Rom(); + DatItem item = new Rom() { Size = 12345 }; item.SetName("name"); - item.Write(Data.Models.Metadata.Rom.SizeKey, 12345); item.Write(Data.Models.Metadata.Rom.CRC16Key, "crc16"); item.Write(Data.Models.Metadata.Rom.CRCKey, "crc"); item.Write(Data.Models.Metadata.Rom.CRC64Key, "crc64"); @@ -1505,7 +1503,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem actual = DatFile.ProcessNullifiedItem(item); Sample? sample = actual as Sample; Assert.NotNull(sample); - Assert.Null(sample.ReadLong(Data.Models.Metadata.Rom.SizeKey)); + Assert.Null(sample.ReadString("size")); Assert.Null(sample.ReadString(Data.Models.Metadata.Rom.CRC16Key)); Assert.Null(sample.ReadString(Data.Models.Metadata.Rom.CRCKey)); Assert.Null(sample.ReadString(Data.Models.Metadata.Rom.CRC64Key)); @@ -1524,13 +1522,12 @@ namespace SabreTools.Metadata.DatFiles.Test [Fact] public void ProcessNullifiedItem_SizeNonNull() { - DatItem item = new Rom(); - item.Write(Data.Models.Metadata.Rom.SizeKey, 12345); + DatItem item = new Rom() { Size = 12345 }; DatItem actual = DatFile.ProcessNullifiedItem(item); Rom? rom = actual as Rom; Assert.NotNull(rom); - Assert.Equal(12345, rom.ReadLong(Data.Models.Metadata.Rom.SizeKey)); + Assert.Equal(12345, rom.Size); Assert.Null(rom.ReadString(Data.Models.Metadata.Rom.CRC16Key)); Assert.Null(rom.ReadString(Data.Models.Metadata.Rom.CRCKey)); Assert.Null(rom.ReadString(Data.Models.Metadata.Rom.CRC64Key)); @@ -1555,7 +1552,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem actual = DatFile.ProcessNullifiedItem(item); Rom? rom = actual as Rom; Assert.NotNull(rom); - Assert.Null(rom.ReadLong(Data.Models.Metadata.Rom.SizeKey)); + Assert.Null(rom.Size); Assert.Equal(HashType.CRC32.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.CRCKey)); Assert.Null(rom.ReadString(Data.Models.Metadata.Rom.MD2Key)); Assert.Null(rom.ReadString(Data.Models.Metadata.Rom.MD4Key)); @@ -1590,7 +1587,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem actual = DatFile.ProcessNullifiedItem(item); Rom? rom = actual as Rom; Assert.NotNull(rom); - Assert.Equal(0, rom.ReadLong(Data.Models.Metadata.Rom.SizeKey)); + Assert.Equal(0, rom.Size); Assert.Equal(HashType.CRC16.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.CRC16Key)); Assert.Equal(HashType.CRC32.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.CRCKey)); Assert.Equal(HashType.CRC64.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.CRC64Key)); @@ -1958,7 +1955,7 @@ namespace SabreTools.Metadata.DatFiles.Test Rom romA = new Rom(); romA.SetName("name"); - romA.Write(Data.Models.Metadata.Rom.SizeKey, 12345); + romA.Size = 12345; romA.Write(Data.Models.Metadata.Rom.CRCKey, "crc"); romA.Machine = (Machine)machine.Clone(); romA.Source = (Source)source.Clone(); @@ -1972,7 +1969,7 @@ namespace SabreTools.Metadata.DatFiles.Test Rom? actualRomA = actualItemA as Rom; Assert.NotNull(actualRomA); Assert.Equal("name", actualRomA.Name); - Assert.Equal(12345, actualRomA.ReadLong(Data.Models.Metadata.Rom.SizeKey)); + Assert.Equal(12345, actualRomA.Size); Assert.Equal("crc", actualRomA.ReadString(Data.Models.Metadata.Rom.CRCKey)); } @@ -1986,14 +1983,14 @@ namespace SabreTools.Metadata.DatFiles.Test Rom romA = new Rom(); romA.SetName("romA"); - romA.Write(Data.Models.Metadata.Rom.SizeKey, 12345); + romA.Size = 12345; romA.Write(Data.Models.Metadata.Rom.CRCKey, "crc"); romA.Machine = (Machine)machine.Clone(); romA.Source = (Source)source.Clone(); Rom romB = new Rom(); romB.SetName("romB"); - romB.Write(Data.Models.Metadata.Rom.SizeKey, 23456); + romB.Size = 23456; romB.Write(Data.Models.Metadata.Rom.CRCKey, "crc2"); romB.Machine = (Machine)machine.Clone(); romB.Source = (Source)source.Clone(); @@ -2008,13 +2005,13 @@ namespace SabreTools.Metadata.DatFiles.Test Rom? actualRomA = actual[0] as Rom; Assert.NotNull(actualRomA); Assert.Equal("romA", actualRomA.Name); - Assert.Equal(12345, actualRomA.ReadLong(Data.Models.Metadata.Rom.SizeKey)); + Assert.Equal(12345, actualRomA.Size); Assert.Equal("crc", actualRomA.ReadString(Data.Models.Metadata.Rom.CRCKey)); Rom? actualRomB = actual[1] as Rom; Assert.NotNull(actualRomB); Assert.Equal("romB", actualRomB.Name); - Assert.Equal(23456, actualRomB.ReadLong(Data.Models.Metadata.Rom.SizeKey)); + Assert.Equal(23456, actualRomB.Size); Assert.Equal("crc2", actualRomB.ReadString(Data.Models.Metadata.Rom.CRCKey)); } @@ -2028,14 +2025,14 @@ namespace SabreTools.Metadata.DatFiles.Test Rom romA = new Rom(); romA.SetName("rom"); - romA.Write(Data.Models.Metadata.Rom.SizeKey, 12345); + romA.Size = 12345; romA.Write(Data.Models.Metadata.Rom.CRCKey, "crc"); romA.Machine = (Machine)machine.Clone(); romA.Source = (Source)source.Clone(); Rom romB = new Rom(); romB.SetName("rom"); - romB.Write(Data.Models.Metadata.Rom.SizeKey, 12345); + romB.Size = 12345; romB.Write(Data.Models.Metadata.Rom.CRCKey, "crc"); romB.Machine = (Machine)machine.Clone(); romB.Source = (Source)source.Clone(); @@ -2049,7 +2046,7 @@ namespace SabreTools.Metadata.DatFiles.Test Rom? actualRomA = actualItemA as Rom; Assert.NotNull(actualRomA); Assert.Equal("rom", actualRomA.Name); - Assert.Equal(12345, actualRomA.ReadLong(Data.Models.Metadata.Rom.SizeKey)); + Assert.Equal(12345, actualRomA.Size); Assert.Equal("crc", actualRomA.ReadString(Data.Models.Metadata.Rom.CRCKey)); } @@ -2063,14 +2060,14 @@ namespace SabreTools.Metadata.DatFiles.Test Rom romA = new Rom(); romA.SetName("rom"); - romA.Write(Data.Models.Metadata.Rom.SizeKey, 12345); + romA.Size = 12345; romA.Write(Data.Models.Metadata.Rom.CRCKey, "crc"); romA.Machine = (Machine)machine.Clone(); romA.Source = (Source)source.Clone(); Rom romB = new Rom(); romB.SetName("rom"); - romB.Write(Data.Models.Metadata.Rom.SizeKey, 23456); + romB.Size = 23456; romB.Write(Data.Models.Metadata.Rom.CRCKey, "crc2"); romB.Machine = (Machine)machine.Clone(); romB.Source = (Source)source.Clone(); @@ -2085,13 +2082,13 @@ namespace SabreTools.Metadata.DatFiles.Test Rom? actualRomA = actual[0] as Rom; Assert.NotNull(actualRomA); Assert.Equal("rom", actualRomA.Name); - Assert.Equal(12345, actualRomA.ReadLong(Data.Models.Metadata.Rom.SizeKey)); + Assert.Equal(12345, actualRomA.Size); Assert.Equal("crc", actualRomA.ReadString(Data.Models.Metadata.Rom.CRCKey)); Rom? actualRomB = actual[1] as Rom; Assert.NotNull(actualRomB); Assert.Equal("rom_crc2", actualRomB.Name); - Assert.Equal(23456, actualRomB.ReadLong(Data.Models.Metadata.Rom.SizeKey)); + Assert.Equal(23456, actualRomB.Size); Assert.Equal("crc2", actualRomB.ReadString(Data.Models.Metadata.Rom.CRCKey)); } @@ -2120,7 +2117,7 @@ namespace SabreTools.Metadata.DatFiles.Test Rom romA = new Rom(); romA.SetName("name"); - romA.Write(Data.Models.Metadata.Rom.SizeKey, 12345); + romA.Size = 12345; romA.Write(Data.Models.Metadata.Rom.CRCKey, "crc"); romA.Machine = (Machine)machine.Clone(); romA.Source = (Source)source.Clone(); @@ -2136,7 +2133,7 @@ namespace SabreTools.Metadata.DatFiles.Test Rom? actualRomA = actualItemA.Value as Rom; Assert.NotNull(actualRomA); Assert.Equal("name", actualRomA.Name); - Assert.Equal(12345, actualRomA.ReadLong(Data.Models.Metadata.Rom.SizeKey)); + Assert.Equal(12345, actualRomA.Size); Assert.Equal("crc", actualRomA.ReadString(Data.Models.Metadata.Rom.CRCKey)); } @@ -2150,14 +2147,14 @@ namespace SabreTools.Metadata.DatFiles.Test Rom romA = new Rom(); romA.SetName("romA"); - romA.Write(Data.Models.Metadata.Rom.SizeKey, 12345); + romA.Size = 12345; romA.Write(Data.Models.Metadata.Rom.CRCKey, "crc"); romA.Machine = (Machine)machine.Clone(); romA.Source = (Source)source.Clone(); Rom romB = new Rom(); romB.SetName("romB"); - romB.Write(Data.Models.Metadata.Rom.SizeKey, 23456); + romB.Size = 23456; romB.Write(Data.Models.Metadata.Rom.CRCKey, "crc2"); romB.Machine = (Machine)machine.Clone(); romB.Source = (Source)source.Clone(); @@ -2175,13 +2172,13 @@ namespace SabreTools.Metadata.DatFiles.Test Rom? actualRomA = actual[0].Value as Rom; Assert.NotNull(actualRomA); Assert.Equal("romA", actualRomA.Name); - Assert.Equal(12345, actualRomA.ReadLong(Data.Models.Metadata.Rom.SizeKey)); + Assert.Equal(12345, actualRomA.Size); Assert.Equal("crc", actualRomA.ReadString(Data.Models.Metadata.Rom.CRCKey)); Rom? actualRomB = actual[1].Value as Rom; Assert.NotNull(actualRomB); Assert.Equal("romB", actualRomB.Name); - Assert.Equal(23456, actualRomB.ReadLong(Data.Models.Metadata.Rom.SizeKey)); + Assert.Equal(23456, actualRomB.Size); Assert.Equal("crc2", actualRomB.ReadString(Data.Models.Metadata.Rom.CRCKey)); } @@ -2199,13 +2196,13 @@ namespace SabreTools.Metadata.DatFiles.Test Rom romA = new Rom(); romA.SetName("rom"); - romA.Write(Data.Models.Metadata.Rom.SizeKey, 12345); + romA.Size = 12345; romA.Write(Data.Models.Metadata.Rom.CRCKey, "crc"); long romAIndex = datFile.AddItemDB(romA, machineIndex, sourceIndex, statsOnly: false); Rom romB = new Rom(); romB.SetName("rom"); - romB.Write(Data.Models.Metadata.Rom.SizeKey, 12345); + romB.Size = 12345; romB.Write(Data.Models.Metadata.Rom.CRCKey, "crc"); long romBIndex = datFile.AddItemDB(romB, machineIndex, sourceIndex, statsOnly: false); @@ -2220,7 +2217,7 @@ namespace SabreTools.Metadata.DatFiles.Test Rom? actualRomA = actualItemA.Value as Rom; Assert.NotNull(actualRomA); Assert.Equal("rom", actualRomA.Name); - Assert.Equal(12345, actualRomA.ReadLong(Data.Models.Metadata.Rom.SizeKey)); + Assert.Equal(12345, actualRomA.Size); Assert.Equal("crc", actualRomA.ReadString(Data.Models.Metadata.Rom.CRCKey)); } @@ -2234,14 +2231,14 @@ namespace SabreTools.Metadata.DatFiles.Test Rom romA = new Rom(); romA.SetName("rom"); - romA.Write(Data.Models.Metadata.Rom.SizeKey, 12345); + romA.Size = 12345; romA.Write(Data.Models.Metadata.Rom.CRCKey, "crc"); romA.Machine = (Machine)machine.Clone(); romA.Source = (Source)source.Clone(); Rom romB = new Rom(); romB.SetName("rom"); - romB.Write(Data.Models.Metadata.Rom.SizeKey, 23456); + romB.Size = 23456; romB.Write(Data.Models.Metadata.Rom.CRCKey, "crc2"); romB.Machine = (Machine)machine.Clone(); romB.Source = (Source)source.Clone(); @@ -2259,13 +2256,13 @@ namespace SabreTools.Metadata.DatFiles.Test Rom? actualRomA = actual[0].Value as Rom; Assert.NotNull(actualRomA); Assert.Equal("rom", actualRomA.Name); - Assert.Equal(12345, actualRomA.ReadLong(Data.Models.Metadata.Rom.SizeKey)); + Assert.Equal(12345, actualRomA.Size); Assert.Equal("crc", actualRomA.ReadString(Data.Models.Metadata.Rom.CRCKey)); Rom? actualRomB = actual[1].Value as Rom; Assert.NotNull(actualRomB); Assert.Equal("rom_crc2", actualRomB.Name); - Assert.Equal(23456, actualRomB.ReadLong(Data.Models.Metadata.Rom.SizeKey)); + Assert.Equal(23456, actualRomB.Size); Assert.Equal("crc2", actualRomB.ReadString(Data.Models.Metadata.Rom.CRCKey)); } @@ -2317,9 +2314,8 @@ namespace SabreTools.Metadata.DatFiles.Test [Fact] public void ShouldIgnore_NoIgnoreBlanksZeroRom_False() { - DatItem? datItem = new Rom(); + DatItem? datItem = new Rom() { Size = 12345 }; datItem.SetName("name"); - datItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); datItem.Write(Data.Models.Metadata.Rom.CRCKey, "crc"); DatFile datFile = new Logiqx(null, useGame: false); @@ -2340,9 +2336,8 @@ namespace SabreTools.Metadata.DatFiles.Test [Fact] public void ShouldIgnore_MissingRequired_True() { - DatItem? datItem = new Rom(); + DatItem? datItem = new Rom() { Size = 12345 }; datItem.SetName("name"); - datItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); DatFile datFile = new Logiqx(null, useGame: false); bool actual = datFile.ShouldIgnore(datItem, ignoreBlanks: true); @@ -2352,9 +2347,8 @@ namespace SabreTools.Metadata.DatFiles.Test [Fact] public void ShouldIgnore_AllVerified_False() { - DatItem? datItem = new Rom(); + DatItem? datItem = new Rom() { Size = 12345 }; datItem.SetName("name"); - datItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); datItem.Write(Data.Models.Metadata.Rom.CRCKey, "crc"); datItem.Write(Data.Models.Metadata.Rom.MD2Key, "crc"); datItem.Write(Data.Models.Metadata.Rom.MD4Key, "crc"); diff --git a/SabreTools.Metadata.DatFiles.Test/DatStatisticsTests.cs b/SabreTools.Metadata.DatFiles.Test/DatStatisticsTests.cs index cfb8ead3..3e9827f3 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatStatisticsTests.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatStatisticsTests.cs @@ -300,7 +300,7 @@ namespace SabreTools.Metadata.DatFiles.Test var rom = new Rom(); rom.Status = ItemStatus.Good; - rom.Write(Data.Models.Metadata.Rom.SizeKey, 1); + rom.Size = 1; rom.Write(Data.Models.Metadata.Rom.CRC16Key, HashType.CRC16.ZeroString); rom.Write(Data.Models.Metadata.Rom.CRCKey, HashType.CRC32.ZeroString); rom.Write(Data.Models.Metadata.Rom.CRC64Key, HashType.CRC64.ZeroString); diff --git a/SabreTools.Metadata.DatFiles.Test/FormatsTests.cs b/SabreTools.Metadata.DatFiles.Test/FormatsTests.cs index 5e0d3f74..8ebb40fb 100644 --- a/SabreTools.Metadata.DatFiles.Test/FormatsTests.cs +++ b/SabreTools.Metadata.DatFiles.Test/FormatsTests.cs @@ -127,7 +127,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ nameof(Data.Models.Metadata.Rom.Name), - Data.Models.Metadata.Rom.SizeKey, + nameof(Data.Models.Metadata.Rom.Size), Data.Models.Metadata.Rom.SHA1Key, ])); } @@ -288,7 +288,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ nameof(Data.Models.Metadata.Rom.Name), - Data.Models.Metadata.Rom.SizeKey, + nameof(Data.Models.Metadata.Rom.Size), Data.Models.Metadata.Rom.CRCKey, ])); } @@ -741,7 +741,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ nameof(Data.Models.Metadata.Rom.Name), - Data.Models.Metadata.Rom.SizeKey, + nameof(Data.Models.Metadata.Rom.Size), Data.Models.Metadata.Rom.CRCKey, Data.Models.Metadata.Rom.SHA1Key, ])); @@ -806,7 +806,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ nameof(Data.Models.Metadata.Rom.Name), - Data.Models.Metadata.Rom.SizeKey, + nameof(Data.Models.Metadata.Rom.Size), Data.Models.Metadata.Rom.SHA1Key, ])); } @@ -1123,7 +1123,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ nameof(Data.Models.Metadata.Rom.Name), - Data.Models.Metadata.Rom.SizeKey, + nameof(Data.Models.Metadata.Rom.Size), Data.Models.Metadata.Rom.SHA1Key, ])); } @@ -1276,7 +1276,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Rom.SizeKey, + nameof(Data.Models.Metadata.Rom.Size), Data.Models.Metadata.Rom.CRCKey, ])); } @@ -1336,7 +1336,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.True(actual.SequenceEqual([ nameof(Data.Models.Metadata.Rom.Name), Data.Models.Metadata.Rom.CRCKey, - Data.Models.Metadata.Rom.SizeKey, + nameof(Data.Models.Metadata.Rom.Size), ])); } @@ -1421,7 +1421,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ nameof(Data.Models.Metadata.Rom.Name), - Data.Models.Metadata.Rom.SizeKey, + nameof(Data.Models.Metadata.Rom.Size), Data.Models.Metadata.Rom.SHA1Key, ])); } @@ -1479,7 +1479,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ nameof(Data.Models.Metadata.Rom.Name), - Data.Models.Metadata.Rom.SizeKey, + nameof(Data.Models.Metadata.Rom.Size), Data.Models.Metadata.Rom.SHA1Key, ])); } @@ -1537,7 +1537,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ nameof(Data.Models.Metadata.Rom.Name), - Data.Models.Metadata.Rom.SizeKey, + nameof(Data.Models.Metadata.Rom.Size), Data.Models.Metadata.Rom.SHA1Key, ])); } @@ -1623,7 +1623,7 @@ namespace SabreTools.Metadata.DatFiles.Test nameof(Data.Models.Metadata.Part.Name), nameof(Data.Models.Metadata.Part.Interface), nameof(Data.Models.Metadata.DataArea.Name), - Data.Models.Metadata.DataArea.SizeKey, + nameof(Data.Models.Metadata.DataArea.Size), ])); } diff --git a/SabreTools.Metadata.DatFiles.Test/ItemDictionaryDBTests.cs b/SabreTools.Metadata.DatFiles.Test/ItemDictionaryDBTests.cs index 069df989..4e249bff 100644 --- a/SabreTools.Metadata.DatFiles.Test/ItemDictionaryDBTests.cs +++ b/SabreTools.Metadata.DatFiles.Test/ItemDictionaryDBTests.cs @@ -135,9 +135,8 @@ namespace SabreTools.Metadata.DatFiles.Test Source source = new Source(0, source: null); Machine machine = new Machine(); - DatItem rom = new Rom(); + DatItem rom = new Rom() { Size = 12345 }; rom.SetName("item"); - rom.Write(Data.Models.Metadata.Rom.SizeKey, 12345); rom.Write(Data.Models.Metadata.Rom.SHA1Key, "deadbeef"); var dict = new ItemDictionaryDB(); @@ -148,7 +147,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem actual = Assert.Single(dict.GetItemsForBucket("default")).Value; Rom? actualRom = actual as Rom; Assert.NotNull(actualRom); - Assert.Equal(12345, actual.ReadLong(Data.Models.Metadata.Rom.SizeKey)); + Assert.Equal(12345, actualRom.Size); Assert.Equal("deadbeef", actual.ReadString(Data.Models.Metadata.Rom.SHA1Key)); Assert.Equal(Data.Models.Metadata.ItemStatus.None, actualRom.Status); } @@ -159,9 +158,8 @@ namespace SabreTools.Metadata.DatFiles.Test Source source = new Source(0, source: null); Machine machine = new Machine(); - DatItem rom = new Rom(); + DatItem rom = new Rom() { Size = 12345 }; rom.SetName("item"); - rom.Write(Data.Models.Metadata.Rom.SizeKey, 12345); var dict = new ItemDictionaryDB(); long sourceIndex = dict.AddSource(source); @@ -171,7 +169,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem actual = Assert.Single(dict.GetItemsForBucket("default")).Value; Rom? actualRom = actual as Rom; Assert.NotNull(actualRom); - Assert.Equal(12345, actual.ReadLong(Data.Models.Metadata.Rom.SizeKey)); + Assert.Equal(12345, actualRom.Size); Assert.Null(actual.ReadString(Data.Models.Metadata.Rom.SHA1Key)); Assert.Equal(Data.Models.Metadata.ItemStatus.Nodump, actualRom.Status); } @@ -194,7 +192,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem actual = Assert.Single(dict.GetItemsForBucket("default")).Value; Rom? actualRom = actual as Rom; Assert.NotNull(actualRom); - Assert.Null(actual.ReadLong(Data.Models.Metadata.Rom.SizeKey)); + Assert.Null(actualRom.Size); Assert.Equal("deadbeef", actual.ReadString(Data.Models.Metadata.Rom.SHA1Key)); Assert.Equal(Data.Models.Metadata.ItemStatus.None, actualRom.Status); } @@ -216,7 +214,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem actual = Assert.Single(dict.GetItemsForBucket("default")).Value; Rom? actualRom = actual as Rom; Assert.NotNull(actualRom); - Assert.Equal(0, actual.ReadLong(Data.Models.Metadata.Rom.SizeKey)); + Assert.Equal(0, actualRom.Size); Assert.Equal(HashType.SHA1.ZeroString, actual.ReadString(Data.Models.Metadata.Rom.SHA1Key)); Assert.Equal(Data.Models.Metadata.ItemStatus.None, actualRom.Status); } @@ -298,18 +296,16 @@ namespace SabreTools.Metadata.DatFiles.Test Machine machine = new Machine(); machine.Name = "game-1"; - DatItem rom1 = new Rom(); + DatItem rom1 = new Rom() { Size = 1024 }; rom1.SetName("rom-1"); rom1.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); rom1.Write(Data.Models.Metadata.Rom.SHA1Key, "0000000fbbb37f8488100b1b4697012de631a5e6"); - rom1.Write(Data.Models.Metadata.Rom.SizeKey, "1024"); - DatItem rom2 = new Rom(); + DatItem rom2 = new Rom() { Size = 1024 }; rom2.SetName("rom-2"); rom2.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); rom2.RemoveFlag = true; rom2.Write(Data.Models.Metadata.Rom.SHA1Key, "000000e948edcb4f7704b8af85a77a3339ecce44"); - rom2.Write(Data.Models.Metadata.Rom.SizeKey, "1024"); // Setup the dictionary var dict = new ItemDictionaryDB(); @@ -548,11 +544,10 @@ namespace SabreTools.Metadata.DatFiles.Test Machine machine = new Machine(); machine.Name = "game-1"; - DatItem datItem = new Rom(); + DatItem datItem = new Rom() { Size = 1024 }; datItem.SetName("rom-1"); datItem.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); datItem.Write(Data.Models.Metadata.Rom.SHA1Key, "0000000fbbb37f8488100b1b4697012de631a5e6"); - datItem.Write(Data.Models.Metadata.Rom.SizeKey, "1024"); var dict = new ItemDictionaryDB(); long sourceIndex = dict.AddSource(source); @@ -576,11 +571,10 @@ namespace SabreTools.Metadata.DatFiles.Test Machine machine = new Machine(); machine.Name = "game-1"; - DatItem datItem = new Rom(); + DatItem datItem = new Rom() { Size = 1024 }; datItem.SetName("rom-1"); datItem.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); datItem.Write(Data.Models.Metadata.Rom.SHA1Key, "0000000fbbb37f8488100b1b4697012de631a5e6"); - datItem.Write(Data.Models.Metadata.Rom.SizeKey, "1024"); var dict = new ItemDictionaryDB(); long sourceIndex = dict.AddSource(source); @@ -628,29 +622,25 @@ namespace SabreTools.Metadata.DatFiles.Test Machine machine2 = new Machine(); machine2.Name = "game-2"; - DatItem rom1 = new Rom(); + DatItem rom1 = new Rom() { Size = 1024 }; rom1.SetName("rom-1"); rom1.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); rom1.Write(Data.Models.Metadata.Rom.SHA1Key, "0000000fbbb37f8488100b1b4697012de631a5e6"); - rom1.Write(Data.Models.Metadata.Rom.SizeKey, "1024"); - DatItem rom2 = new Rom(); + DatItem rom2 = new Rom() { Size = 1024 }; rom2.SetName("rom-2"); rom2.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); rom2.Write(Data.Models.Metadata.Rom.SHA1Key, "000000e948edcb4f7704b8af85a77a3339ecce44"); - rom2.Write(Data.Models.Metadata.Rom.SizeKey, "1024"); - DatItem rom3 = new Rom(); + DatItem rom3 = new Rom() { Size = 1024 }; rom3.SetName("rom-3"); rom3.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); rom3.Write(Data.Models.Metadata.Rom.SHA1Key, "00000ea4014ce66679e7e17d56ac510f67e39e26"); - rom3.Write(Data.Models.Metadata.Rom.SizeKey, "1024"); - DatItem rom4 = new Rom(); + DatItem rom4 = new Rom() { Size = 1024 }; rom4.SetName("rom-4"); rom4.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); rom4.Write(Data.Models.Metadata.Rom.SHA1Key, "00000151d437442e74e5134023fab8bf694a2487"); - rom4.Write(Data.Models.Metadata.Rom.SizeKey, "1024"); // Setup the dictionary var dict = new ItemDictionaryDB(); @@ -679,15 +669,13 @@ namespace SabreTools.Metadata.DatFiles.Test Machine machine = new Machine(); machine.Name = "game-1"; - DatItem rom1 = new Rom(); + DatItem rom1 = new Rom() { Size = 1024 }; rom1.SetName("rom-1"); rom1.Write(Data.Models.Metadata.Rom.SHA1Key, "0000000fbbb37f8488100b1b4697012de631a5e6"); - rom1.Write(Data.Models.Metadata.Rom.SizeKey, "1024"); - DatItem rom2 = new Rom(); + DatItem rom2 = new Rom() { Size = 1024 }; rom2.SetName("rom-2"); rom2.Write(Data.Models.Metadata.Rom.SHA1Key, "0000000fbbb37f8488100b1b4697012de631a5e6"); - rom2.Write(Data.Models.Metadata.Rom.SizeKey, "1024"); // Setup the dictionary var dict = new ItemDictionaryDB(); @@ -918,15 +906,13 @@ namespace SabreTools.Metadata.DatFiles.Test Machine machine = new Machine(); machine.Name = "game-1"; - DatItem rom1 = new Rom(); + DatItem rom1 = new Rom() { Size = 1024 }; rom1.SetName("rom-1"); rom1.Write(Data.Models.Metadata.Rom.SHA1Key, "0000000fbbb37f8488100b1b4697012de631a5e6"); - rom1.Write(Data.Models.Metadata.Rom.SizeKey, "1024"); - DatItem rom2 = new Rom(); + DatItem rom2 = new Rom() { Size = 1024 }; rom2.SetName("rom-2"); rom2.Write(Data.Models.Metadata.Rom.SHA1Key, "000000e948edcb4f7704b8af85a77a3339ecce44"); - rom2.Write(Data.Models.Metadata.Rom.SizeKey, "1024"); // Setup the dictionary var dict = new ItemDictionaryDB(); @@ -936,10 +922,9 @@ namespace SabreTools.Metadata.DatFiles.Test dict.AddItem(rom2, machineIndex, sourceIndex, statsOnly: false); // Setup the test item - DatItem rom = new Rom(); + DatItem rom = new Rom() { Size = hasDuplicate ? 1024 : 2048 }; rom.SetName("rom-1"); rom.Write(Data.Models.Metadata.Rom.SHA1Key, "0000000fbbb37f8488100b1b4697012de631a5e6"); - rom.Write(Data.Models.Metadata.Rom.SizeKey, hasDuplicate ? "1024" : "2048"); var actual = dict.GetDuplicates(new KeyValuePair(-1, rom)); Assert.Equal(expected, actual.Count); @@ -960,15 +945,13 @@ namespace SabreTools.Metadata.DatFiles.Test Machine machine = new Machine(); machine.Name = "game-1"; - DatItem rom1 = new Rom(); + DatItem rom1 = new Rom() { Size = 1024 }; rom1.SetName("rom-1"); rom1.Write(Data.Models.Metadata.Rom.SHA1Key, "0000000fbbb37f8488100b1b4697012de631a5e6"); - rom1.Write(Data.Models.Metadata.Rom.SizeKey, "1024"); - DatItem rom2 = new Rom(); + DatItem rom2 = new Rom() { Size = 1024 }; rom2.SetName("rom-2"); rom2.Write(Data.Models.Metadata.Rom.SHA1Key, "000000e948edcb4f7704b8af85a77a3339ecce44"); - rom2.Write(Data.Models.Metadata.Rom.SizeKey, "1024"); // Setup the dictionary var dict = new ItemDictionaryDB(); @@ -978,10 +961,9 @@ namespace SabreTools.Metadata.DatFiles.Test dict.AddItem(rom2, machineIndex, sourceIndex, statsOnly: false); // Setup the test item - DatItem rom = new Rom(); + DatItem rom = new Rom() { Size = expected ? 1024 : 2048 }; rom.SetName("rom-1"); rom.Write(Data.Models.Metadata.Rom.SHA1Key, "0000000fbbb37f8488100b1b4697012de631a5e6"); - rom.Write(Data.Models.Metadata.Rom.SizeKey, expected ? "1024" : "2048"); bool actual = dict.HasDuplicates(new KeyValuePair(-1, rom)); Assert.Equal(expected, actual); @@ -999,9 +981,8 @@ namespace SabreTools.Metadata.DatFiles.Test Machine machine = new Machine(); machine.Name = "machine"; - DatItem item = new Rom(); + DatItem item = new Rom() { Size = 12345 }; item.SetName("rom"); - item.Write(Data.Models.Metadata.Rom.SizeKey, 12345); item.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); var dict = new ItemDictionaryDB(); diff --git a/SabreTools.Metadata.DatFiles.Test/ItemDictionaryTests.cs b/SabreTools.Metadata.DatFiles.Test/ItemDictionaryTests.cs index 2a40441c..b92fd822 100644 --- a/SabreTools.Metadata.DatFiles.Test/ItemDictionaryTests.cs +++ b/SabreTools.Metadata.DatFiles.Test/ItemDictionaryTests.cs @@ -135,9 +135,8 @@ namespace SabreTools.Metadata.DatFiles.Test Source source = new Source(0, source: null); Machine machine = new Machine(); - DatItem rom = new Rom(); + DatItem rom = new Rom() { Size = 12345 }; rom.SetName("item"); - rom.Write(Data.Models.Metadata.Rom.SizeKey, 12345); rom.Write(Data.Models.Metadata.Rom.SHA1Key, "deadbeef"); rom.Source = source; rom.Machine = machine; @@ -148,7 +147,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem actual = Assert.Single(dict.GetItemsForBucket("default")); Rom? actualRom = actual as Rom; Assert.NotNull(actualRom); - Assert.Equal(12345, actual.ReadLong(Data.Models.Metadata.Rom.SizeKey)); + Assert.Equal(12345, actualRom.Size); Assert.Equal("deadbeef", actual.ReadString(Data.Models.Metadata.Rom.SHA1Key)); Assert.Equal(Data.Models.Metadata.ItemStatus.None, actualRom.Status); } @@ -159,9 +158,8 @@ namespace SabreTools.Metadata.DatFiles.Test Source source = new Source(0, source: null); Machine machine = new Machine(); - DatItem rom = new Rom(); + DatItem rom = new Rom() { Size = 12345 }; rom.SetName("item"); - rom.Write(Data.Models.Metadata.Rom.SizeKey, 12345); rom.Source = source; rom.Machine = machine; @@ -171,7 +169,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem actual = Assert.Single(dict.GetItemsForBucket("default")); Rom? actualRom = actual as Rom; Assert.NotNull(actualRom); - Assert.Equal(12345, actual.ReadLong(Data.Models.Metadata.Rom.SizeKey)); + Assert.Equal(12345, actualRom.Size); Assert.Null(actual.ReadString(Data.Models.Metadata.Rom.SHA1Key)); Assert.Equal(Data.Models.Metadata.ItemStatus.Nodump, actualRom.Status); } @@ -194,7 +192,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem actual = Assert.Single(dict.GetItemsForBucket("default")); Rom? actualRom = actual as Rom; Assert.NotNull(actualRom); - Assert.Null(actual.ReadLong(Data.Models.Metadata.Rom.SizeKey)); + Assert.Null(actualRom.Size); Assert.Equal("deadbeef", actual.ReadString(Data.Models.Metadata.Rom.SHA1Key)); Assert.Equal(Data.Models.Metadata.ItemStatus.None, actualRom.Status); } @@ -216,7 +214,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem actual = Assert.Single(dict.GetItemsForBucket("default")); Rom? actualRom = actual as Rom; Assert.NotNull(actualRom); - Assert.Equal(0, actual.ReadLong(Data.Models.Metadata.Rom.SizeKey)); + Assert.Equal(0, actualRom.Size); Assert.Equal(HashType.SHA1.ZeroString, actual.ReadString(Data.Models.Metadata.Rom.SHA1Key)); Assert.Equal(Data.Models.Metadata.ItemStatus.None, actualRom.Status); } @@ -266,19 +264,17 @@ namespace SabreTools.Metadata.DatFiles.Test Machine machine = new Machine(); machine.Name = "game-1"; - DatItem rom1 = new Rom(); + DatItem rom1 = new Rom() { Size = 1024 }; rom1.SetName("rom-1"); rom1.Write(Data.Models.Metadata.Rom.CRCKey, "DEAEEF"); rom1.Write(Data.Models.Metadata.Rom.SHA1Key, "0000000fbbb37f8488100b1b4697012de631a5e6"); - rom1.Write(Data.Models.Metadata.Rom.SizeKey, "1024"); rom1.CopyMachineInformation(machine); - DatItem rom2 = new Rom(); + DatItem rom2 = new Rom() { Size = 1024 }; rom2.SetName("rom-2"); rom2.Write(Data.Models.Metadata.Rom.CRCKey, "DEAEEF"); rom2.RemoveFlag = true; rom2.Write(Data.Models.Metadata.Rom.SHA1Key, "000000e948edcb4f7704b8af85a77a3339ecce44"); - rom2.Write(Data.Models.Metadata.Rom.SizeKey, "1024"); rom2.CopyMachineInformation(machine); // Setup the dictionary @@ -408,11 +404,10 @@ namespace SabreTools.Metadata.DatFiles.Test Machine machine = new Machine(); machine.Name = "game-1"; - DatItem datItem = new Rom(); + DatItem datItem = new Rom() { Size = 1024 }; datItem.SetName("rom-1"); datItem.Write(Data.Models.Metadata.Rom.CRCKey, "DEAEEF"); datItem.Write(Data.Models.Metadata.Rom.SHA1Key, "0000000fbbb37f8488100b1b4697012de631a5e6"); - datItem.Write(Data.Models.Metadata.Rom.SizeKey, "1024"); datItem.CopyMachineInformation(machine); var dict = new ItemDictionary(); @@ -434,11 +429,10 @@ namespace SabreTools.Metadata.DatFiles.Test Machine machine = new Machine(); machine.Name = "game-1"; - DatItem datItem = new Rom(); + DatItem datItem = new Rom() { Size = 1024 }; datItem.SetName("rom-1"); datItem.Write(Data.Models.Metadata.Rom.CRCKey, "DEAEEF"); datItem.Write(Data.Models.Metadata.Rom.SHA1Key, "0000000fbbb37f8488100b1b4697012de631a5e6"); - datItem.Write(Data.Models.Metadata.Rom.SizeKey, "1024"); datItem.CopyMachineInformation(machine); var dict = new ItemDictionary(); @@ -468,32 +462,28 @@ namespace SabreTools.Metadata.DatFiles.Test Machine machine2 = new Machine(); machine2.Name = "game-2"; - DatItem rom1 = new Rom(); + DatItem rom1 = new Rom() { Size = 1024 }; rom1.SetName("rom-1"); rom1.Write(Data.Models.Metadata.Rom.CRCKey, "DEAEEF"); rom1.Write(Data.Models.Metadata.Rom.SHA1Key, "0000000fbbb37f8488100b1b4697012de631a5e6"); - rom1.Write(Data.Models.Metadata.Rom.SizeKey, "1024"); rom1.CopyMachineInformation(machine1); - DatItem rom2 = new Rom(); + DatItem rom2 = new Rom() { Size = 1024 }; rom2.SetName("rom-2"); rom2.Write(Data.Models.Metadata.Rom.CRCKey, "DEAEEF"); rom2.Write(Data.Models.Metadata.Rom.SHA1Key, "000000e948edcb4f7704b8af85a77a3339ecce44"); - rom2.Write(Data.Models.Metadata.Rom.SizeKey, "1024"); rom1.CopyMachineInformation(machine1); - DatItem rom3 = new Rom(); + DatItem rom3 = new Rom() { Size = 1024 }; rom3.SetName("rom-3"); rom3.Write(Data.Models.Metadata.Rom.CRCKey, "DEAEEF"); rom3.Write(Data.Models.Metadata.Rom.SHA1Key, "00000ea4014ce66679e7e17d56ac510f67e39e26"); - rom3.Write(Data.Models.Metadata.Rom.SizeKey, "1024"); rom1.CopyMachineInformation(machine2); - DatItem rom4 = new Rom(); + DatItem rom4 = new Rom() { Size = 1024 }; rom4.SetName("rom-4"); rom4.Write(Data.Models.Metadata.Rom.CRCKey, "DEAEEF"); rom4.Write(Data.Models.Metadata.Rom.SHA1Key, "00000151d437442e74e5134023fab8bf694a2487"); - rom4.Write(Data.Models.Metadata.Rom.SizeKey, "1024"); rom1.CopyMachineInformation(machine2); // Setup the dictionary @@ -518,16 +508,14 @@ namespace SabreTools.Metadata.DatFiles.Test Machine machine = new Machine(); machine.Name = "game-1"; - DatItem rom1 = new Rom(); + DatItem rom1 = new Rom() { Size = 1024 }; rom1.SetName("rom-1"); rom1.Write(Data.Models.Metadata.Rom.SHA1Key, "0000000fbbb37f8488100b1b4697012de631a5e6"); - rom1.Write(Data.Models.Metadata.Rom.SizeKey, "1024"); rom1.CopyMachineInformation(machine); - DatItem rom2 = new Rom(); + DatItem rom2 = new Rom() { Size = 1024 }; rom2.SetName("rom-2"); rom2.Write(Data.Models.Metadata.Rom.SHA1Key, "0000000fbbb37f8488100b1b4697012de631a5e6"); - rom2.Write(Data.Models.Metadata.Rom.SizeKey, "1024"); rom2.CopyMachineInformation(machine); // Setup the dictionary @@ -711,16 +699,14 @@ namespace SabreTools.Metadata.DatFiles.Test Machine machine = new Machine(); machine.Name = "game-1"; - DatItem rom1 = new Rom(); + DatItem rom1 = new Rom() { Size = 1024 }; rom1.SetName("rom-1"); rom1.Write(Data.Models.Metadata.Rom.SHA1Key, "0000000fbbb37f8488100b1b4697012de631a5e6"); - rom1.Write(Data.Models.Metadata.Rom.SizeKey, "1024"); rom1.CopyMachineInformation(machine); - DatItem rom2 = new Rom(); + DatItem rom2 = new Rom() { Size = 1024 }; rom2.SetName("rom-2"); rom2.Write(Data.Models.Metadata.Rom.SHA1Key, "000000e948edcb4f7704b8af85a77a3339ecce44"); - rom2.Write(Data.Models.Metadata.Rom.SizeKey, "1024"); rom2.CopyMachineInformation(machine); // Setup the dictionary @@ -729,10 +715,9 @@ namespace SabreTools.Metadata.DatFiles.Test dict.AddItem(rom2, statsOnly: false); // Setup the test item - DatItem rom = new Rom(); + DatItem rom = new Rom() { Size = hasDuplicate ? 1024 : 2048 }; rom.SetName("rom-1"); rom.Write(Data.Models.Metadata.Rom.SHA1Key, "0000000fbbb37f8488100b1b4697012de631a5e6"); - rom.Write(Data.Models.Metadata.Rom.SizeKey, hasDuplicate ? "1024" : "2048"); rom.CopyMachineInformation(machine); var actual = dict.GetDuplicates(rom); @@ -752,16 +737,14 @@ namespace SabreTools.Metadata.DatFiles.Test Machine machine = new Machine(); machine.Name = "game-1"; - DatItem rom1 = new Rom(); + DatItem rom1 = new Rom() { Size = 1024 }; rom1.SetName("rom-1"); rom1.Write(Data.Models.Metadata.Rom.SHA1Key, "0000000fbbb37f8488100b1b4697012de631a5e6"); - rom1.Write(Data.Models.Metadata.Rom.SizeKey, "1024"); rom1.CopyMachineInformation(machine); - DatItem rom2 = new Rom(); + DatItem rom2 = new Rom() { Size = 1024 }; rom2.SetName("rom-2"); rom2.Write(Data.Models.Metadata.Rom.SHA1Key, "000000e948edcb4f7704b8af85a77a3339ecce44"); - rom2.Write(Data.Models.Metadata.Rom.SizeKey, "1024"); rom1.CopyMachineInformation(machine); // Setup the dictionary @@ -770,10 +753,9 @@ namespace SabreTools.Metadata.DatFiles.Test dict.AddItem("game-1", rom2); // Setup the test item - DatItem rom = new Rom(); + DatItem rom = new Rom() { Size = expected ? 1024 : 2048 }; rom.SetName("rom-1"); rom.Write(Data.Models.Metadata.Rom.SHA1Key, "0000000fbbb37f8488100b1b4697012de631a5e6"); - rom.Write(Data.Models.Metadata.Rom.SizeKey, expected ? "1024" : "2048"); rom1.CopyMachineInformation(machine); bool actual = dict.HasDuplicates(rom); @@ -792,9 +774,8 @@ namespace SabreTools.Metadata.DatFiles.Test Machine machine = new Machine(); machine.Name = "machine"; - DatItem item = new Rom(); + DatItem item = new Rom() { Size = 12345 }; item.SetName("rom"); - item.Write(Data.Models.Metadata.Rom.SizeKey, 12345); item.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); item.Source = source; item.Machine = machine; diff --git a/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs b/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs index d935a962..212c1add 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs @@ -609,7 +609,7 @@ namespace SabreTools.Metadata.DatFiles // Convert the item var romItem = new Rom(rom, machine, source); - long? size = romItem.ReadLong(Data.Models.Metadata.Rom.SizeKey); + long? size = romItem.Size; // If the rom is a continue or ignore Data.Models.Metadata.LoadFlag? loadFlag = rom.LoadFlag; @@ -618,8 +618,8 @@ namespace SabreTools.Metadata.DatFiles || loadFlag == Data.Models.Metadata.LoadFlag.Ignore)) { var lastRom = addRoms[addRoms.Count - 1]; - long? lastSize = lastRom.ReadLong(Data.Models.Metadata.Rom.SizeKey); - lastRom.Write(Data.Models.Metadata.Rom.SizeKey, lastSize + size); + long? lastSize = lastRom.Size; + lastRom.Size = lastSize + size; continue; } diff --git a/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs b/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs index 0e3dcd98..59a833ec 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs @@ -360,7 +360,7 @@ namespace SabreTools.Metadata.DatFiles aggregateDataArea = []; aggregateDataArea.Endianness = dataArea.Endianness; aggregateDataArea.Name = dataArea.Name; - aggregateDataArea[Data.Models.Metadata.DataArea.SizeKey] = dataArea.ReadString(Data.Models.Metadata.DataArea.SizeKey); + aggregateDataArea.Size = dataArea.Size; aggregateDataArea[Data.Models.Metadata.DataArea.WidthKey] = dataArea.ReadString(Data.Models.Metadata.DataArea.WidthKey); } @@ -786,7 +786,7 @@ namespace SabreTools.Metadata.DatFiles aggregateDataArea = []; aggregateDataArea.Endianness = dataArea.Endianness; aggregateDataArea.Name = dataArea.Name; - aggregateDataArea[Data.Models.Metadata.DataArea.SizeKey] = dataArea.ReadString(Data.Models.Metadata.DataArea.SizeKey); + aggregateDataArea.Size = dataArea.Size; aggregateDataArea[Data.Models.Metadata.DataArea.WidthKey] = dataArea.ReadString(Data.Models.Metadata.DataArea.WidthKey); } diff --git a/SabreTools.Metadata.DatFiles/DatFile.cs b/SabreTools.Metadata.DatFiles/DatFile.cs index 6ce84666..150560c7 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.cs @@ -639,7 +639,7 @@ namespace SabreTools.Metadata.DatFiles sha256 = rom.ReadString(Data.Models.Metadata.Rom.SHA256Key) ?? string.Empty; sha384 = rom.ReadString(Data.Models.Metadata.Rom.SHA384Key) ?? string.Empty; sha512 = rom.ReadString(Data.Models.Metadata.Rom.SHA512Key) ?? string.Empty; - size = rom.ReadLong(Data.Models.Metadata.Rom.SizeKey).ToString() ?? string.Empty; + size = rom.Size.ToString() ?? string.Empty; spamsum = rom.ReadString(Data.Models.Metadata.Rom.SpamSumKey) ?? string.Empty; } @@ -681,7 +681,7 @@ namespace SabreTools.Metadata.DatFiles return item; // If the item has a size - if (rom.ReadLong(Data.Models.Metadata.Rom.SizeKey) is not null) + if (rom.Size is not null) return rom; // If the item CRC isn't "null" @@ -690,7 +690,7 @@ namespace SabreTools.Metadata.DatFiles // If the Rom has "null" characteristics, ensure all fields rom.Name = rom.Name == "null" ? "-" : rom.Name; - rom.Write(Data.Models.Metadata.Rom.SizeKey, "0"); + rom.Size = 0; rom.Write(Data.Models.Metadata.Rom.CRC16Key, rom.ReadString(Data.Models.Metadata.Rom.CRC16Key) == "null" ? HashType.CRC16.ZeroString : null); rom.Write(Data.Models.Metadata.Rom.CRCKey, @@ -999,7 +999,7 @@ namespace SabreTools.Metadata.DatFiles if (ignoreBlanks && datItem is Rom rom) { // If we have a 0-size or blank rom, then we ignore - long? size = rom.ReadLong(Data.Models.Metadata.Rom.SizeKey); + long? size = rom.Size; if (size == 0 || size is null) { string itemString = JsonConvert.SerializeObject(datItem, Formatting.None); diff --git a/SabreTools.Metadata.DatFiles/DatStatistics.cs b/SabreTools.Metadata.DatFiles/DatStatistics.cs index 8dcd2dab..146f6f95 100644 --- a/SabreTools.Metadata.DatFiles/DatStatistics.cs +++ b/SabreTools.Metadata.DatFiles/DatStatistics.cs @@ -374,7 +374,7 @@ namespace SabreTools.Metadata.DatFiles ItemStatus? status = rom.Status; if (status != ItemStatus.Nodump) { - TotalSize += rom.ReadLong(Data.Models.Metadata.Rom.SizeKey) ?? 0; + TotalSize += rom.Size ?? 0; AddHashCount(HashType.CRC16, string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.CRC16Key)) ? 0 : 1); AddHashCount(HashType.CRC32, string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.CRCKey)) ? 0 : 1); AddHashCount(HashType.CRC64, string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.CRC64Key)) ? 0 : 1); @@ -503,7 +503,7 @@ namespace SabreTools.Metadata.DatFiles ItemStatus? status = rom.Status; if (status != ItemStatus.Nodump) { - TotalSize -= rom.ReadLong(Data.Models.Metadata.Rom.SizeKey) ?? 0; + TotalSize -= rom.Size ?? 0; RemoveHashCount(HashType.CRC16, string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.CRC16Key)) ? 0 : 1); RemoveHashCount(HashType.CRC32, string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.CRCKey)) ? 0 : 1); RemoveHashCount(HashType.CRC64, string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.CRC64Key)) ? 0 : 1); diff --git a/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs b/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs index c11b02e0..d1af7ab7 100644 --- a/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs +++ b/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs @@ -90,8 +90,8 @@ namespace SabreTools.Metadata.DatFiles.Formats case Rom rom: if (string.IsNullOrEmpty(rom.Name)) missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); - if (rom.ReadLong(Data.Models.Metadata.Rom.SizeKey) is null || rom.ReadLong(Data.Models.Metadata.Rom.SizeKey) < 0) - missingFields.Add(Data.Models.Metadata.Rom.SizeKey); + if (rom.Size is null || rom.Size < 0) + missingFields.Add(nameof(Data.Models.Metadata.Rom.Size)); if (string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.CRC16Key)) && string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.CRCKey)) && string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.CRC64Key)) diff --git a/SabreTools.Metadata.DatFiles/Formats/DosCenter.cs b/SabreTools.Metadata.DatFiles/Formats/DosCenter.cs index 37bda622..30af27c7 100644 --- a/SabreTools.Metadata.DatFiles/Formats/DosCenter.cs +++ b/SabreTools.Metadata.DatFiles/Formats/DosCenter.cs @@ -36,8 +36,8 @@ namespace SabreTools.Metadata.DatFiles.Formats switch (datItem) { case Rom rom: - if (rom.ReadLong(Data.Models.Metadata.Rom.SizeKey) is null || rom.ReadLong(Data.Models.Metadata.Rom.SizeKey) < 0) - missingFields.Add(Data.Models.Metadata.Rom.SizeKey); + if (rom.Size is null || rom.Size < 0) + missingFields.Add(nameof(Data.Models.Metadata.Rom.Size)); // if (string.IsNullOrEmpty(rom.Date)) // missingFields.Add(Data.Models.Metadata.Rom.DateKey); if (string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.CRCKey))) diff --git a/SabreTools.Metadata.DatFiles/Formats/Listrom.cs b/SabreTools.Metadata.DatFiles/Formats/Listrom.cs index 8a5ef1cc..1c12704f 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Listrom.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Listrom.cs @@ -46,8 +46,8 @@ namespace SabreTools.Metadata.DatFiles.Formats break; case Rom rom: - if (rom.ReadLong(Data.Models.Metadata.Rom.SizeKey) is null || rom.ReadLong(Data.Models.Metadata.Rom.SizeKey) < 0) - missingFields.Add(Data.Models.Metadata.Rom.SizeKey); + if (rom.Size is null || rom.Size < 0) + missingFields.Add(nameof(Data.Models.Metadata.Rom.Size)); if (string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.CRCKey))) missingFields.Add(Data.Models.Metadata.Rom.CRCKey); if (string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.SHA1Key))) diff --git a/SabreTools.Metadata.DatFiles/Formats/Listxml.cs b/SabreTools.Metadata.DatFiles/Formats/Listxml.cs index 27e985fe..711ea24c 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Listxml.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Listxml.cs @@ -269,8 +269,8 @@ namespace SabreTools.Metadata.DatFiles.Formats case Rom rom: if (string.IsNullOrEmpty(rom.Name)) missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); - if (rom.ReadLong(Data.Models.Metadata.Rom.SizeKey) is null || rom.ReadLong(Data.Models.Metadata.Rom.SizeKey) < 0) - missingFields.Add(Data.Models.Metadata.Rom.SizeKey); + if (rom.Size is null || rom.Size < 0) + missingFields.Add(nameof(Data.Models.Metadata.Rom.Size)); if (string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.CRCKey)) && string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.SHA1Key))) { diff --git a/SabreTools.Metadata.DatFiles/Formats/Logiqx.cs b/SabreTools.Metadata.DatFiles/Formats/Logiqx.cs index dbc731cd..aa421835 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Logiqx.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Logiqx.cs @@ -282,8 +282,8 @@ namespace SabreTools.Metadata.DatFiles.Formats case Rom rom: if (string.IsNullOrEmpty(rom.Name)) missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); - if (rom.ReadLong(Data.Models.Metadata.Rom.SizeKey) is null || rom.ReadLong(Data.Models.Metadata.Rom.SizeKey) < 0) - missingFields.Add(Data.Models.Metadata.Rom.SizeKey); + if (rom.Size is null || rom.Size < 0) + missingFields.Add(nameof(Data.Models.Metadata.Rom.Size)); if (string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.CRC16Key)) && string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.CRCKey)) && string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.CRC64Key)) diff --git a/SabreTools.Metadata.DatFiles/Formats/OfflineList.cs b/SabreTools.Metadata.DatFiles/Formats/OfflineList.cs index 3539fbfe..dfd9668f 100644 --- a/SabreTools.Metadata.DatFiles/Formats/OfflineList.cs +++ b/SabreTools.Metadata.DatFiles/Formats/OfflineList.cs @@ -32,8 +32,8 @@ namespace SabreTools.Metadata.DatFiles.Formats switch (datItem) { case Rom rom: - if (rom.ReadLong(Data.Models.Metadata.Rom.SizeKey) is null || rom.ReadLong(Data.Models.Metadata.Rom.SizeKey) < 0) - missingFields.Add(Data.Models.Metadata.Rom.SizeKey); + if (rom.Size is null || rom.Size < 0) + missingFields.Add(nameof(Data.Models.Metadata.Rom.Size)); if (string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.CRCKey))) missingFields.Add(Data.Models.Metadata.Rom.CRCKey); break; diff --git a/SabreTools.Metadata.DatFiles/Formats/RomCenter.cs b/SabreTools.Metadata.DatFiles/Formats/RomCenter.cs index 2a73074b..5e53ac89 100644 --- a/SabreTools.Metadata.DatFiles/Formats/RomCenter.cs +++ b/SabreTools.Metadata.DatFiles/Formats/RomCenter.cs @@ -38,8 +38,8 @@ namespace SabreTools.Metadata.DatFiles.Formats case Rom rom: if (string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.CRCKey))) missingFields.Add(Data.Models.Metadata.Rom.CRCKey); - if (rom.ReadLong(Data.Models.Metadata.Rom.SizeKey) is null || rom.ReadLong(Data.Models.Metadata.Rom.SizeKey) < 0) - missingFields.Add(Data.Models.Metadata.Rom.SizeKey); + if (rom.Size is null || rom.Size < 0) + missingFields.Add(nameof(Data.Models.Metadata.Rom.Size)); break; default: diff --git a/SabreTools.Metadata.DatFiles/Formats/SeparatedValue.cs b/SabreTools.Metadata.DatFiles/Formats/SeparatedValue.cs index 4345d918..52613e24 100644 --- a/SabreTools.Metadata.DatFiles/Formats/SeparatedValue.cs +++ b/SabreTools.Metadata.DatFiles/Formats/SeparatedValue.cs @@ -93,8 +93,8 @@ namespace SabreTools.Metadata.DatFiles.Formats break; case Rom rom: - if (rom.ReadLong(Data.Models.Metadata.Rom.SizeKey) is null || rom.ReadLong(Data.Models.Metadata.Rom.SizeKey) < 0) - missingFields.Add(Data.Models.Metadata.Rom.SizeKey); + if (rom.Size is null || rom.Size < 0) + missingFields.Add(nameof(Data.Models.Metadata.Rom.Size)); if (string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.CRCKey)) && string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.MD5Key)) && string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.SHA1Key)) diff --git a/SabreTools.Metadata.DatFiles/Formats/SoftwareList.cs b/SabreTools.Metadata.DatFiles/Formats/SoftwareList.cs index a0fc9f15..3dbeea76 100644 --- a/SabreTools.Metadata.DatFiles/Formats/SoftwareList.cs +++ b/SabreTools.Metadata.DatFiles/Formats/SoftwareList.cs @@ -187,14 +187,14 @@ namespace SabreTools.Metadata.DatFiles.Formats if (!rom.DataAreaSpecified) { missingFields.Add(nameof(Data.Models.Metadata.DataArea.Name)); - missingFields.Add(Data.Models.Metadata.DataArea.SizeKey); + missingFields.Add(nameof(Data.Models.Metadata.DataArea.Size)); } else { if (string.IsNullOrEmpty(rom.Read(Rom.DataAreaKey)!.Name)) missingFields.Add(nameof(Data.Models.Metadata.DataArea.Name)); - if (rom.Read(Rom.DataAreaKey)!.ReadLong(Data.Models.Metadata.DataArea.SizeKey) is null) - missingFields.Add(Data.Models.Metadata.DataArea.SizeKey); + if (rom.Read(Rom.DataAreaKey)!.Size is null) + missingFields.Add(nameof(Data.Models.Metadata.DataArea.Size)); } break; diff --git a/SabreTools.Metadata.DatFiles/ItemDictionary.cs b/SabreTools.Metadata.DatFiles/ItemDictionary.cs index 3f3c30a8..acd8c9f9 100644 --- a/SabreTools.Metadata.DatFiles/ItemDictionary.cs +++ b/SabreTools.Metadata.DatFiles/ItemDictionary.cs @@ -136,7 +136,7 @@ namespace SabreTools.Metadata.DatFiles } else if (item is Rom rom) { - long? size = rom.ReadLong(Data.Models.Metadata.Rom.SizeKey); + long? size = rom.Size; // If we have the case where there is SHA-1 and nothing else, we don't fill in any other part of the data if (size is null && !string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.SHA1Key))) @@ -149,7 +149,7 @@ namespace SabreTools.Metadata.DatFiles else if ((size == 0 || size is null) && (string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.CRCKey)) || rom.HasZeroHash())) { - rom.Write(Data.Models.Metadata.Rom.SizeKey, "0"); + rom.Size = 0; rom.Write(Data.Models.Metadata.Rom.CRC16Key, null); // HashType.CRC16.ZeroString rom.Write(Data.Models.Metadata.Rom.CRCKey, HashType.CRC32.ZeroString); rom.Write(Data.Models.Metadata.Rom.CRC64Key, null); // HashType.CRC64.ZeroString diff --git a/SabreTools.Metadata.DatFiles/ItemDictionaryDB.cs b/SabreTools.Metadata.DatFiles/ItemDictionaryDB.cs index f9ded0ea..f75d98e4 100644 --- a/SabreTools.Metadata.DatFiles/ItemDictionaryDB.cs +++ b/SabreTools.Metadata.DatFiles/ItemDictionaryDB.cs @@ -225,7 +225,7 @@ namespace SabreTools.Metadata.DatFiles } else if (item is Rom rom) { - long? size = rom.ReadLong(Data.Models.Metadata.Rom.SizeKey); + long? size = rom.Size; // If we have the case where there is SHA-1 and nothing else, we don't fill in any other part of the data if (size is null && !string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.SHA1Key))) @@ -238,7 +238,7 @@ namespace SabreTools.Metadata.DatFiles else if ((size == 0 || size is null) && (string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.CRCKey)) || rom.HasZeroHash())) { - rom.Write(Data.Models.Metadata.Rom.SizeKey, "0"); + rom.Size = 0; rom.Write(Data.Models.Metadata.Rom.CRC16Key, null); // HashType.CRC16.ZeroString rom.Write(Data.Models.Metadata.Rom.CRCKey, HashType.CRC32.ZeroString); rom.Write(Data.Models.Metadata.Rom.CRC64Key, null); // HashType.CRC64.ZeroString diff --git a/SabreTools.Metadata.DatItems.Test/Formats/FileTests.cs b/SabreTools.Metadata.DatItems.Test/Formats/FileTests.cs index 48a8eb8c..b5fb4214 100644 --- a/SabreTools.Metadata.DatItems.Test/Formats/FileTests.cs +++ b/SabreTools.Metadata.DatItems.Test/Formats/FileTests.cs @@ -36,7 +36,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Rom actual = file.ConvertToRom(); Assert.Equal("XXXXXX.XXXXXX", actual.GetName()); - Assert.Equal(12345, actual.ReadLong(Data.Models.Metadata.Rom.SizeKey)); + Assert.Equal(12345, actual.Size); Assert.Equal("deadbeef", actual.ReadString(Data.Models.Metadata.Rom.CRCKey)); Assert.Equal("000000000000000000000000deadbeef", actual.ReadString(Data.Models.Metadata.Rom.MD5Key)); Assert.Equal("00000000000000000000000000000000deadbeef", actual.ReadString(Data.Models.Metadata.Rom.SHA1Key)); diff --git a/SabreTools.Metadata.DatItems/Formats/DataArea.cs b/SabreTools.Metadata.DatItems/Formats/DataArea.cs index 7c184987..5bbb67ee 100644 --- a/SabreTools.Metadata.DatItems/Formats/DataArea.cs +++ b/SabreTools.Metadata.DatItems/Formats/DataArea.cs @@ -29,6 +29,12 @@ namespace SabreTools.Metadata.DatItems.Formats set => (_internal as Data.Models.Metadata.DataArea)?.Name = value; } + public long? Size + { + get => (_internal as Data.Models.Metadata.DataArea)?.Size; + set => (_internal as Data.Models.Metadata.DataArea)?.Size = value; + } + #endregion #region Constructors @@ -38,10 +44,6 @@ namespace SabreTools.Metadata.DatItems.Formats public DataArea(Data.Models.Metadata.DataArea item) : base(item) { // Process flag values - long? size = ReadLong(Data.Models.Metadata.DataArea.SizeKey); - if (size is not null) - Write(Data.Models.Metadata.DataArea.SizeKey, size.ToString()); - long? width = ReadLong(Data.Models.Metadata.DataArea.WidthKey); if (width is not null) Write(Data.Models.Metadata.DataArea.WidthKey, width.ToString()); diff --git a/SabreTools.Metadata.DatItems/Formats/File.cs b/SabreTools.Metadata.DatItems/Formats/File.cs index aba4ee09..65929857 100644 --- a/SabreTools.Metadata.DatItems/Formats/File.cs +++ b/SabreTools.Metadata.DatItems/Formats/File.cs @@ -137,7 +137,7 @@ namespace SabreTools.Metadata.DatItems.Formats var rom = new Rom(); rom.SetName($"{Id}.{Extension}"); - rom.Write(Data.Models.Metadata.Rom.SizeKey, Size); + rom.Size = Size; rom.Write(Data.Models.Metadata.Rom.CRCKey, CRC); rom.Write(Data.Models.Metadata.Rom.MD5Key, MD5); rom.Write(Data.Models.Metadata.Rom.SHA1Key, SHA1); diff --git a/SabreTools.Metadata.DatItems/Formats/Rom.cs b/SabreTools.Metadata.DatItems/Formats/Rom.cs index 5581774c..6a412e9f 100644 --- a/SabreTools.Metadata.DatItems/Formats/Rom.cs +++ b/SabreTools.Metadata.DatItems/Formats/Rom.cs @@ -36,7 +36,7 @@ namespace SabreTools.Metadata.DatItems.Formats var dataArea = Read(DataAreaKey); return dataArea is not null && (!string.IsNullOrEmpty(dataArea.Name) - || dataArea.ReadLong(Data.Models.Metadata.DataArea.SizeKey) is not null + || dataArea.Size is not null || dataArea.ReadLong(Data.Models.Metadata.DataArea.WidthKey) is not null || dataArea.Endianness is not null); } @@ -115,6 +115,12 @@ namespace SabreTools.Metadata.DatItems.Formats } } + public long? Size + { + get => (_internal as Data.Models.Metadata.Rom)?.Size; + set => (_internal as Data.Models.Metadata.Rom)?.Size = value; + } + public bool? SoundOnly { get => (_internal as Data.Models.Metadata.Rom)?.SoundOnly; @@ -193,10 +199,6 @@ namespace SabreTools.Metadata.DatItems.Formats CopyMachineInformation(machine); // Process hash values - long? size = ReadLong(Data.Models.Metadata.Rom.SizeKey); - if (size is not null) - Write(Data.Models.Metadata.Rom.SizeKey, size.ToString()); - // TODO: This should be normalized to CRC-16 string? crc16 = ReadString(Data.Models.Metadata.Rom.CRC16Key); if (crc16 is not null) @@ -253,10 +255,6 @@ namespace SabreTools.Metadata.DatItems.Formats DupeType = 0x00; // Process hash values - long? size = ReadLong(Data.Models.Metadata.Rom.SizeKey); - if (size is not null) - Write(Data.Models.Metadata.Rom.SizeKey, size.ToString()); - // TODO: This should be normalized to CRC-16 string? crc16 = ReadString(Data.Models.Metadata.Rom.CRC16Key); if (crc16 is not null) diff --git a/SabreTools.Metadata.Filter/FilterObject.cs b/SabreTools.Metadata.Filter/FilterObject.cs index aa13aa9a..7e6f844d 100644 --- a/SabreTools.Metadata.Filter/FilterObject.cs +++ b/SabreTools.Metadata.Filter/FilterObject.cs @@ -418,6 +418,9 @@ namespace SabreTools.Metadata.Filter case DataArea item when fieldName == "endianness": checkValue = item.Endianness?.AsStringValue(); return true; + case DataArea item when fieldName == "size": + checkValue = item.Size?.ToString(); + return true; case Device item when fieldName == "type": checkValue = item.DeviceType?.AsStringValue(); @@ -701,6 +704,9 @@ namespace SabreTools.Metadata.Filter case Rom item when fieldName == "optional": checkValue = item.Optional.FromYesNo(); return true; + case Rom item when fieldName == "size": + checkValue = item.Size?.ToString(); + return true; case Rom item when fieldName == "soundonly": checkValue = item.SoundOnly.FromYesNo(); return true; diff --git a/SabreTools.Metadata.Filter/FilterRunner.cs b/SabreTools.Metadata.Filter/FilterRunner.cs index 5c373e94..ddbe82ee 100644 --- a/SabreTools.Metadata.Filter/FilterRunner.cs +++ b/SabreTools.Metadata.Filter/FilterRunner.cs @@ -84,13 +84,11 @@ namespace SabreTools.Metadata.Filter GroupType groupType = GroupType.OR; // Special case for size - if (filter.Key.ItemName == "item" && filter.Key.FieldName == DataArea.SizeKey) + if (filter.Key.ItemName == "item" && filter.Key.FieldName == "size") groupType = GroupType.AND; - else if (filter.Key.ItemName == "item" && filter.Key.FieldName == Rom.SizeKey) + else if (filter.Key.ItemName == "dataarea" && filter.Key.FieldName == "size") groupType = GroupType.AND; - if (filter.Key.ItemName == "dataarea" && filter.Key.FieldName == DataArea.SizeKey) - groupType = GroupType.AND; - else if (filter.Key.ItemName == "rom" && filter.Key.FieldName == Rom.SizeKey) + else if (filter.Key.ItemName == "rom" && filter.Key.FieldName == "size") groupType = GroupType.AND; // Ensure the key exists diff --git a/SabreTools.Metadata.Test/DictionaryBaseExtensionsTests.cs b/SabreTools.Metadata.Test/DictionaryBaseExtensionsTests.cs index 399726ba..fcc21628 100644 --- a/SabreTools.Metadata.Test/DictionaryBaseExtensionsTests.cs +++ b/SabreTools.Metadata.Test/DictionaryBaseExtensionsTests.cs @@ -270,7 +270,7 @@ namespace SabreTools.Metadata.Test { Status = ItemStatus.Nodump, Name = "name", - [Rom.SizeKey] = 12345, + Size = 12345, [Rom.CRC16Key] = string.Empty, [Rom.CRCKey] = string.Empty, [Rom.CRC64Key] = string.Empty, @@ -289,7 +289,7 @@ namespace SabreTools.Metadata.Test { Status = ItemStatus.Nodump, Name = "name", - [Rom.SizeKey] = 12345, + Size = 12345, [Rom.CRC16Key] = string.Empty, [Rom.CRCKey] = string.Empty, [Rom.CRC64Key] = string.Empty, @@ -315,7 +315,7 @@ namespace SabreTools.Metadata.Test DictionaryBase self = new Rom { Name = "name", - [Rom.SizeKey] = 12345, + Size = 12345, [Rom.CRC16Key] = "XXXXXX", [Rom.CRCKey] = string.Empty, [Rom.CRC64Key] = "XXXXXX", @@ -333,7 +333,7 @@ namespace SabreTools.Metadata.Test DictionaryBase other = new Rom { Name = "name", - [Rom.SizeKey] = 12345, + Size = 12345, [Rom.CRC16Key] = string.Empty, [Rom.CRCKey] = "XXXXXX", [Rom.CRC64Key] = string.Empty, @@ -376,7 +376,7 @@ namespace SabreTools.Metadata.Test DictionaryBase other = new Rom { Name = "XXXXXX2", - [Rom.SizeKey] = 12345, + Size = 12345, [Rom.CRC16Key] = "XXXXXX", [Rom.CRCKey] = "XXXXXX", [Rom.CRC64Key] = "XXXXXX", @@ -402,7 +402,7 @@ namespace SabreTools.Metadata.Test DictionaryBase self = new Rom { Name = "XXXXXX1", - [Rom.SizeKey] = 12345, + Size = 12345, [Rom.CRC16Key] = "XXXXXX", [Rom.CRCKey] = "XXXXXX", [Rom.CRC64Key] = "XXXXXX", @@ -445,7 +445,7 @@ namespace SabreTools.Metadata.Test DictionaryBase self = new Rom { Name = "XXXXXX1", - [Rom.SizeKey] = 12345, + Size = 12345, [Rom.CRC16Key] = "XXXXXX", [Rom.CRCKey] = string.Empty, [Rom.CRC64Key] = string.Empty, @@ -463,7 +463,7 @@ namespace SabreTools.Metadata.Test DictionaryBase other = new Rom { Name = "XXXXXX2", - [Rom.SizeKey] = 12345, + Size = 12345, [Rom.CRC16Key] = "XXXXXX", [Rom.CRCKey] = "XXXXXX", [Rom.CRC64Key] = "XXXXXX", @@ -489,7 +489,7 @@ namespace SabreTools.Metadata.Test DictionaryBase self = new Rom { Name = "XXXXXX1", - [Rom.SizeKey] = 12345, + Size = 12345, [Rom.CRC16Key] = string.Empty, [Rom.CRCKey] = "XXXXXX", [Rom.CRC64Key] = string.Empty, @@ -507,7 +507,7 @@ namespace SabreTools.Metadata.Test DictionaryBase other = new Rom { Name = "XXXXXX2", - [Rom.SizeKey] = 12345, + Size = 12345, [Rom.CRC16Key] = "XXXXXX", [Rom.CRCKey] = "XXXXXX", [Rom.CRC64Key] = "XXXXXX", @@ -533,7 +533,7 @@ namespace SabreTools.Metadata.Test DictionaryBase self = new Rom { Name = "XXXXXX1", - [Rom.SizeKey] = 12345, + Size = 12345, [Rom.CRC16Key] = string.Empty, [Rom.CRCKey] = string.Empty, [Rom.CRC64Key] = "XXXXXX", @@ -551,7 +551,7 @@ namespace SabreTools.Metadata.Test DictionaryBase other = new Rom { Name = "XXXXXX2", - [Rom.SizeKey] = 12345, + Size = 12345, [Rom.CRC16Key] = "XXXXXX", [Rom.CRCKey] = "XXXXXX", [Rom.CRC64Key] = "XXXXXX", @@ -577,7 +577,7 @@ namespace SabreTools.Metadata.Test DictionaryBase self = new Rom { Name = "XXXXXX1", - [Rom.SizeKey] = 12345, + Size = 12345, [Rom.CRC16Key] = string.Empty, [Rom.CRCKey] = string.Empty, [Rom.CRC64Key] = string.Empty, @@ -595,7 +595,7 @@ namespace SabreTools.Metadata.Test DictionaryBase other = new Rom { Name = "XXXXXX2", - [Rom.SizeKey] = 12345, + Size = 12345, [Rom.CRC16Key] = "XXXXXX", [Rom.CRCKey] = "XXXXXX", [Rom.CRC64Key] = "XXXXXX", @@ -621,7 +621,7 @@ namespace SabreTools.Metadata.Test DictionaryBase self = new Rom { Name = "XXXXXX1", - [Rom.SizeKey] = 12345, + Size = 12345, [Rom.CRC16Key] = string.Empty, [Rom.CRCKey] = string.Empty, [Rom.CRC64Key] = string.Empty, @@ -639,7 +639,7 @@ namespace SabreTools.Metadata.Test DictionaryBase other = new Rom { Name = "XXXXXX2", - [Rom.SizeKey] = 12345, + Size = 12345, [Rom.CRC16Key] = "XXXXXX", [Rom.CRCKey] = "XXXXXX", [Rom.CRC64Key] = "XXXXXX", @@ -665,7 +665,7 @@ namespace SabreTools.Metadata.Test DictionaryBase self = new Rom { Name = "XXXXXX1", - [Rom.SizeKey] = 12345, + Size = 12345, [Rom.CRC16Key] = string.Empty, [Rom.CRCKey] = string.Empty, [Rom.CRC64Key] = string.Empty, @@ -683,7 +683,7 @@ namespace SabreTools.Metadata.Test DictionaryBase other = new Rom { Name = "XXXXXX2", - [Rom.SizeKey] = 12345, + Size = 12345, [Rom.CRC16Key] = "XXXXXX", [Rom.CRCKey] = "XXXXXX", [Rom.CRC64Key] = "XXXXXX", @@ -709,7 +709,7 @@ namespace SabreTools.Metadata.Test DictionaryBase self = new Rom { Name = "XXXXXX1", - [Rom.SizeKey] = 12345, + Size = 12345, [Rom.CRC16Key] = string.Empty, [Rom.CRCKey] = string.Empty, [Rom.CRC64Key] = string.Empty, @@ -727,7 +727,7 @@ namespace SabreTools.Metadata.Test DictionaryBase other = new Rom { Name = "XXXXXX2", - [Rom.SizeKey] = 12345, + Size = 12345, [Rom.CRC16Key] = "XXXXXX", [Rom.CRCKey] = "XXXXXX", [Rom.CRC64Key] = "XXXXXX", @@ -753,7 +753,7 @@ namespace SabreTools.Metadata.Test DictionaryBase self = new Rom { Name = "XXXXXX1", - [Rom.SizeKey] = 12345, + Size = 12345, [Rom.CRC16Key] = string.Empty, [Rom.CRCKey] = string.Empty, [Rom.CRC64Key] = string.Empty, @@ -771,7 +771,7 @@ namespace SabreTools.Metadata.Test DictionaryBase other = new Rom { Name = "XXXXXX2", - [Rom.SizeKey] = 12345, + Size = 12345, [Rom.CRC16Key] = "XXXXXX", [Rom.CRCKey] = "XXXXXX", [Rom.CRC64Key] = "XXXXXX", @@ -797,7 +797,7 @@ namespace SabreTools.Metadata.Test DictionaryBase self = new Rom { Name = "XXXXXX1", - [Rom.SizeKey] = 12345, + Size = 12345, [Rom.CRC16Key] = string.Empty, [Rom.CRCKey] = string.Empty, [Rom.CRC64Key] = string.Empty, @@ -815,7 +815,7 @@ namespace SabreTools.Metadata.Test DictionaryBase other = new Rom { Name = "XXXXXX2", - [Rom.SizeKey] = 12345, + Size = 12345, [Rom.CRC16Key] = "XXXXXX", [Rom.CRCKey] = "XXXXXX", [Rom.CRC64Key] = "XXXXXX", @@ -841,7 +841,7 @@ namespace SabreTools.Metadata.Test DictionaryBase self = new Rom { Name = "XXXXXX1", - [Rom.SizeKey] = 12345, + Size = 12345, [Rom.CRC16Key] = string.Empty, [Rom.CRCKey] = string.Empty, [Rom.CRC64Key] = string.Empty, @@ -859,7 +859,7 @@ namespace SabreTools.Metadata.Test DictionaryBase other = new Rom { Name = "XXXXXX2", - [Rom.SizeKey] = 12345, + Size = 12345, [Rom.CRC16Key] = "XXXXXX", [Rom.CRCKey] = "XXXXXX", [Rom.CRC64Key] = "XXXXXX", @@ -885,7 +885,7 @@ namespace SabreTools.Metadata.Test DictionaryBase self = new Rom { Name = "XXXXXX1", - [Rom.SizeKey] = 12345, + Size = 12345, [Rom.CRC16Key] = string.Empty, [Rom.CRCKey] = string.Empty, [Rom.CRC64Key] = string.Empty, @@ -903,7 +903,7 @@ namespace SabreTools.Metadata.Test DictionaryBase other = new Rom { Name = "XXXXXX2", - [Rom.SizeKey] = 12345, + Size = 12345, [Rom.CRC16Key] = "XXXXXX", [Rom.CRCKey] = "XXXXXX", [Rom.CRC64Key] = "XXXXXX", @@ -929,7 +929,7 @@ namespace SabreTools.Metadata.Test DictionaryBase self = new Rom { Name = "XXXXXX1", - [Rom.SizeKey] = 12345, + Size = 12345, [Rom.CRC16Key] = string.Empty, [Rom.CRCKey] = string.Empty, [Rom.CRC64Key] = string.Empty, @@ -947,7 +947,7 @@ namespace SabreTools.Metadata.Test DictionaryBase other = new Rom { Name = "XXXXXX2", - [Rom.SizeKey] = 12345, + Size = 12345, [Rom.CRC16Key] = "XXXXXX", [Rom.CRCKey] = "XXXXXX", [Rom.CRC64Key] = "XXXXXX", @@ -973,7 +973,7 @@ namespace SabreTools.Metadata.Test DictionaryBase self = new Rom { Name = "XXXXXX1", - [Rom.SizeKey] = 12345, + Size = 12345, [Rom.CRC16Key] = string.Empty, [Rom.CRCKey] = string.Empty, [Rom.CRC64Key] = string.Empty, @@ -991,7 +991,7 @@ namespace SabreTools.Metadata.Test DictionaryBase other = new Rom { Name = "XXXXXX2", - [Rom.SizeKey] = 12345, + Size = 12345, [Rom.CRC16Key] = "XXXXXX", [Rom.CRCKey] = "XXXXXX", [Rom.CRC64Key] = "XXXXXX", @@ -1017,7 +1017,7 @@ namespace SabreTools.Metadata.Test DictionaryBase self = new Rom { Name = "XXXXXX1", - [Rom.SizeKey] = 12345, + Size = 12345, [Rom.CRC16Key] = "XXXXXX", [Rom.CRCKey] = "XXXXXX", [Rom.CRC64Key] = "XXXXXX", @@ -1035,7 +1035,7 @@ namespace SabreTools.Metadata.Test DictionaryBase other = new Rom { Name = "XXXXXX2", - [Rom.SizeKey] = 12345, + Size = 12345, [Rom.CRC16Key] = "XXXXXX", [Rom.CRCKey] = "XXXXXX", [Rom.CRC64Key] = "XXXXXX", diff --git a/SabreTools.Metadata/DictionaryBaseExtensions.cs b/SabreTools.Metadata/DictionaryBaseExtensions.cs index 5af2c364..21649bff 100644 --- a/SabreTools.Metadata/DictionaryBaseExtensions.cs +++ b/SabreTools.Metadata/DictionaryBaseExtensions.cs @@ -498,8 +498,8 @@ namespace SabreTools.Metadata string? selfName = self.Name; string? otherName = other.Name; - long? selfSize = self.ReadLong(Rom.SizeKey); - long? otherSize = other.ReadLong(Rom.SizeKey); + long? selfSize = self.Size; + long? otherSize = other.Size; // If all hashes are empty but they're both nodump and the names match, then they're dupes if (selfStatus == ItemStatus.Nodump diff --git a/SabreTools.Serialization.CrossModel.Test/ArchiveDotOrgTests.cs b/SabreTools.Serialization.CrossModel.Test/ArchiveDotOrgTests.cs index 4b829eb1..863930c9 100644 --- a/SabreTools.Serialization.CrossModel.Test/ArchiveDotOrgTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/ArchiveDotOrgTests.cs @@ -38,7 +38,7 @@ namespace SabreTools.Serialization.CrossModel.Test Source = "XXXXXX", BitTorrentMagnetHash = "XXXXXX", LastModifiedTime = "XXXXXX", - Size = "XXXXXX", + Size = "12345", MD5 = "XXXXXX", CRC32 = "XXXXXX", SHA1 = "XXXXXX", @@ -112,7 +112,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", file.Source); Assert.Equal("XXXXXX", file.BitTorrentMagnetHash); Assert.Equal("XXXXXX", file.LastModifiedTime); - Assert.Equal("XXXXXX", file.Size); + Assert.Equal("12345", file.Size); Assert.Equal("XXXXXX", file.MD5); Assert.Equal("XXXXXX", file.CRC32); Assert.Equal("XXXXXX", file.SHA1); diff --git a/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs b/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs index 14ff0570..5077fd63 100644 --- a/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs @@ -97,7 +97,7 @@ namespace SabreTools.Serialization.CrossModel.Test var rom = new Data.Models.ClrMamePro.Rom { Name = "name", - Size = "XXXXXX", + Size = 12345L, CRC16 = "XXXXXX", CRC = "XXXXXX", CRC64 = "XXXXXX", @@ -360,7 +360,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(rom); Assert.Equal("name", rom.Name); - Assert.Equal("XXXXXX", rom.Size); + Assert.Equal(12345L, rom.Size); Assert.Equal("XXXXXX", rom.CRC16); Assert.Equal("XXXXXX", rom.CRC); Assert.Equal("XXXXXX", rom.CRC64); diff --git a/SabreTools.Serialization.CrossModel.Test/DosCenterTests.cs b/SabreTools.Serialization.CrossModel.Test/DosCenterTests.cs index 1299669c..e51dbebb 100644 --- a/SabreTools.Serialization.CrossModel.Test/DosCenterTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/DosCenterTests.cs @@ -47,7 +47,7 @@ namespace SabreTools.Serialization.CrossModel.Test var file = new Data.Models.DosCenter.File { Name = "name", - Size = "XXXXXX", + Size = 12345L, CRC = "XXXXXX", SHA1 = "XXXXXX", Date = "XXXXXX", @@ -101,7 +101,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(rom); Assert.Equal("name", rom.Name); - Assert.Equal("XXXXXX", rom.Size); + Assert.Equal(12345L, rom.Size); Assert.Equal("XXXXXX", rom.CRC); Assert.Equal("XXXXXX", rom.SHA1); Assert.Equal("XXXXXX", rom.Date); diff --git a/SabreTools.Serialization.CrossModel.Test/EverdriveSMDBTests.cs b/SabreTools.Serialization.CrossModel.Test/EverdriveSMDBTests.cs index 2d19837c..b3e7ca0c 100644 --- a/SabreTools.Serialization.CrossModel.Test/EverdriveSMDBTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/EverdriveSMDBTests.cs @@ -39,7 +39,7 @@ namespace SabreTools.Serialization.CrossModel.Test SHA1 = "XXXXXX", MD5 = "XXXXXX", CRC32 = "XXXXXX", - Size = "XXXXXX", + Size = 12345L, }; return new Data.Models.EverdriveSMDB.MetadataFile @@ -59,7 +59,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", row.SHA1); Assert.Equal("XXXXXX", row.MD5); Assert.Equal("XXXXXX", row.CRC32); - Assert.Equal("XXXXXX", row.Size); + Assert.Equal(12345L, row.Size); } } } diff --git a/SabreTools.Serialization.CrossModel.Test/ListromTests.cs b/SabreTools.Serialization.CrossModel.Test/ListromTests.cs index dc7e6b8a..16fba80d 100644 --- a/SabreTools.Serialization.CrossModel.Test/ListromTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/ListromTests.cs @@ -37,7 +37,7 @@ namespace SabreTools.Serialization.CrossModel.Test var rom = new Data.Models.Listrom.Row { Name = "name", - Size = "XXXXXX", + Size = 12345L, Bad = true, CRC = "XXXXXX", SHA1 = "XXXXXX", @@ -104,7 +104,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(row); Assert.Equal("name", row.Name); - Assert.Equal("XXXXXX", row.Size); + Assert.Equal(12345L, row.Size); Assert.True(row.Bad); Assert.Equal("XXXXXX", row.CRC); Assert.Equal("XXXXXX", row.SHA1); diff --git a/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs b/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs index f8d265c8..fbc8d6c6 100644 --- a/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs @@ -74,7 +74,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Name = "name", Bios = "XXXXXX", - Size = "XXXXXX", + Size = 12345L, CRC = "XXXXXX", SHA1 = "XXXXXX", Merge = "XXXXXX", @@ -486,7 +486,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(rom); Assert.Equal("name", rom.Name); Assert.Equal("XXXXXX", rom.Bios); - Assert.Equal("XXXXXX", rom.Size); + Assert.Equal(12345L, rom.Size); Assert.Equal("XXXXXX", rom.CRC); Assert.Equal("XXXXXX", rom.SHA1); Assert.Equal("XXXXXX", rom.Merge); diff --git a/SabreTools.Serialization.CrossModel.Test/LogiqxTests.cs b/SabreTools.Serialization.CrossModel.Test/LogiqxTests.cs index b72c9725..b06c0000 100644 --- a/SabreTools.Serialization.CrossModel.Test/LogiqxTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/LogiqxTests.cs @@ -148,7 +148,7 @@ namespace SabreTools.Serialization.CrossModel.Test var rom = new Data.Models.Logiqx.Rom { Name = "name", - Size = "XXXXXX", + Size = 12345L, CRC16 = "XXXXXX", CRC = "XXXXXX", CRC64 = "XXXXXX", @@ -464,7 +464,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(rom); Assert.Equal("name", rom.Name); - Assert.Equal("XXXXXX", rom.Size); + Assert.Equal(12345L, rom.Size); Assert.Equal("XXXXXX", rom.CRC16); Assert.Equal("XXXXXX", rom.CRC); Assert.Equal("XXXXXX", rom.CRC64); diff --git a/SabreTools.Serialization.CrossModel.Test/M1Tests.cs b/SabreTools.Serialization.CrossModel.Test/M1Tests.cs index d3b3bbda..57eb1005 100644 --- a/SabreTools.Serialization.CrossModel.Test/M1Tests.cs +++ b/SabreTools.Serialization.CrossModel.Test/M1Tests.cs @@ -70,7 +70,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Name = "name", Bios = "XXXXXX", - Size = "XXXXXX", + Size = 12345L, CRC = "XXXXXX", SHA1 = "XXXXXX", Merge = "XXXXXX", @@ -480,7 +480,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(rom); Assert.Equal("name", rom.Name); Assert.Equal("XXXXXX", rom.Bios); - Assert.Equal("XXXXXX", rom.Size); + Assert.Equal(12345L, rom.Size); Assert.Equal("XXXXXX", rom.CRC); Assert.Equal("XXXXXX", rom.SHA1); Assert.Equal("XXXXXX", rom.Merge); diff --git a/SabreTools.Serialization.CrossModel.Test/MessTests.cs b/SabreTools.Serialization.CrossModel.Test/MessTests.cs index d8107b27..d1fedb5e 100644 --- a/SabreTools.Serialization.CrossModel.Test/MessTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/MessTests.cs @@ -70,7 +70,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Name = "name", Bios = "XXXXXX", - Size = "XXXXXX", + Size = 12345L, CRC = "XXXXXX", SHA1 = "XXXXXX", Merge = "XXXXXX", @@ -480,7 +480,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(rom); Assert.Equal("name", rom.Name); Assert.Equal("XXXXXX", rom.Bios); - Assert.Equal("XXXXXX", rom.Size); + Assert.Equal(12345L, rom.Size); Assert.Equal("XXXXXX", rom.CRC); Assert.Equal("XXXXXX", rom.SHA1); Assert.Equal("XXXXXX", rom.Merge); diff --git a/SabreTools.Serialization.CrossModel.Test/OfflineListTests.cs b/SabreTools.Serialization.CrossModel.Test/OfflineListTests.cs index b2d42112..24d7909f 100644 --- a/SabreTools.Serialization.CrossModel.Test/OfflineListTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/OfflineListTests.cs @@ -191,7 +191,7 @@ namespace SabreTools.Serialization.CrossModel.Test ReleaseNumber = "XXXXXX", Title = "XXXXXX", SaveType = "XXXXXX", - RomSize = "XXXXXX", + RomSize = 12345L, Publisher = "XXXXXX", Location = "XXXXXX", SourceRom = "XXXXXX", @@ -379,7 +379,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", game.ReleaseNumber); Assert.Equal("XXXXXX", game.Title); Assert.Equal("XXXXXX", game.SaveType); - Assert.Equal("0", game.RomSize); // Converted due to filtering + Assert.Equal(12345L, game.RomSize); Assert.Equal("XXXXXX", game.Publisher); Assert.Equal("XXXXXX", game.Location); Assert.Equal("XXXXXX", game.SourceRom); diff --git a/SabreTools.Serialization.CrossModel.Test/RomCenterTests.cs b/SabreTools.Serialization.CrossModel.Test/RomCenterTests.cs index 86bfa6c5..96d18db9 100644 --- a/SabreTools.Serialization.CrossModel.Test/RomCenterTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/RomCenterTests.cs @@ -66,7 +66,7 @@ namespace SabreTools.Serialization.CrossModel.Test GameDescription = "description", RomName = "XXXXXX", RomCRC = "XXXXXX", - RomSize = "XXXXXX", + RomSize = 12345L, RomOf = "XXXXXX", MergeName = "XXXXXX", }; @@ -145,7 +145,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("description", rom.GameDescription); Assert.Equal("XXXXXX", rom.RomName); Assert.Equal("XXXXXX", rom.RomCRC); - Assert.Equal("XXXXXX", rom.RomSize); + Assert.Equal(12345L, rom.RomSize); Assert.Equal("XXXXXX", rom.RomOf); Assert.Equal("XXXXXX", rom.MergeName); } diff --git a/SabreTools.Serialization.CrossModel.Test/SeparatedValueTests.cs b/SabreTools.Serialization.CrossModel.Test/SeparatedValueTests.cs index c64a9ca1..83448455 100644 --- a/SabreTools.Serialization.CrossModel.Test/SeparatedValueTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/SeparatedValueTests.cs @@ -76,7 +76,7 @@ namespace SabreTools.Serialization.CrossModel.Test GameDescription = "description", Type = "rom", RomName = "XXXXXX", - Size = "XXXXXX", + Size = 12345L, CRC = "XXXXXX", MD5 = "XXXXXX", SHA1 = "XXXXXX", @@ -168,7 +168,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("rom", row.Type); Assert.Equal("XXXXXX", row.RomName); Assert.Null(row.DiskName); - Assert.Equal("XXXXXX", row.Size); + Assert.Equal(12345L, row.Size); Assert.Equal("XXXXXX", row.CRC); Assert.Equal("XXXXXX", row.MD5); Assert.Equal("XXXXXX", row.SHA1); diff --git a/SabreTools.Serialization.CrossModel.Test/SoftwareListTests.cs b/SabreTools.Serialization.CrossModel.Test/SoftwareListTests.cs index 0106999e..9a13de11 100644 --- a/SabreTools.Serialization.CrossModel.Test/SoftwareListTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/SoftwareListTests.cs @@ -57,7 +57,7 @@ namespace SabreTools.Serialization.CrossModel.Test var rom = new Data.Models.SoftwareList.Rom { Name = "name", - Size = "XXXXXX", + Size = 12345L, Length = "XXXXXX", CRC = "XXXXXX", SHA1 = "XXXXXX", @@ -70,7 +70,7 @@ namespace SabreTools.Serialization.CrossModel.Test var dataarea = new Data.Models.SoftwareList.DataArea { Name = "name", - Size = "XXXXXX", + Size = 12345L, Width = "XXXXXX", Endianness = Data.Models.Metadata.Endianness.Big, Rom = [rom], @@ -229,7 +229,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(dataarea); Assert.Equal("name", dataarea.Name); - Assert.Equal("XXXXXX", dataarea.Size); + Assert.Equal(12345L, dataarea.Size); Assert.Equal("XXXXXX", dataarea.Width); Assert.Equal(Data.Models.Metadata.Endianness.Big, dataarea.Endianness); @@ -245,7 +245,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(rom); Assert.Equal("name", rom.Name); - Assert.Equal("XXXXXX", rom.Size); + Assert.Equal(12345L, rom.Size); Assert.Equal("XXXXXX", rom.Length); Assert.Equal("XXXXXX", rom.CRC); Assert.Equal("XXXXXX", rom.SHA1); diff --git a/SabreTools.Serialization.CrossModel/ArchiveDotOrg.Deserializer.cs b/SabreTools.Serialization.CrossModel/ArchiveDotOrg.Deserializer.cs index f194e1f0..fbf426f2 100644 --- a/SabreTools.Serialization.CrossModel/ArchiveDotOrg.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/ArchiveDotOrg.Deserializer.cs @@ -48,7 +48,7 @@ namespace SabreTools.Serialization.CrossModel Source = item.ReadString(Data.Models.Metadata.Rom.SourceKey), BitTorrentMagnetHash = item.ReadString(Data.Models.Metadata.Rom.BitTorrentMagnetHashKey), LastModifiedTime = item.ReadString(Data.Models.Metadata.Rom.LastModifiedTimeKey), - Size = item.ReadString(Data.Models.Metadata.Rom.SizeKey), + Size = item.Size?.ToString(), MD5 = item.ReadString(Data.Models.Metadata.Rom.MD5Key), CRC32 = item.ReadString(Data.Models.Metadata.Rom.CRCKey), SHA1 = item.ReadString(Data.Models.Metadata.Rom.SHA1Key), diff --git a/SabreTools.Serialization.CrossModel/ArchiveDotOrg.Serializer.cs b/SabreTools.Serialization.CrossModel/ArchiveDotOrg.Serializer.cs index 21fdf3f4..7b76d5c0 100644 --- a/SabreTools.Serialization.CrossModel/ArchiveDotOrg.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/ArchiveDotOrg.Serializer.cs @@ -1,5 +1,6 @@ using System; using SabreTools.Data.Models.ArchiveDotOrg; +using SabreTools.Text.Extensions; namespace SabreTools.Serialization.CrossModel { @@ -65,7 +66,7 @@ namespace SabreTools.Serialization.CrossModel [Data.Models.Metadata.Rom.SourceKey] = item.Source, [Data.Models.Metadata.Rom.BitTorrentMagnetHashKey] = item.BitTorrentMagnetHash, [Data.Models.Metadata.Rom.LastModifiedTimeKey] = item.LastModifiedTime, - [Data.Models.Metadata.Rom.SizeKey] = item.Size, + Size = NumberHelper.ConvertToInt64(item.Size), [Data.Models.Metadata.Rom.MD5Key] = item.MD5, [Data.Models.Metadata.Rom.CRCKey] = item.CRC32, [Data.Models.Metadata.Rom.SHA1Key] = item.SHA1, diff --git a/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs b/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs index abc250fb..a18265e7 100644 --- a/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs @@ -279,7 +279,7 @@ namespace SabreTools.Serialization.CrossModel var rom = new Rom { Name = item.Name, - Size = item.ReadString(Data.Models.Metadata.Rom.SizeKey), + Size = item.Size, CRC16 = item.ReadString(Data.Models.Metadata.Rom.CRC16Key), CRC = item.ReadString(Data.Models.Metadata.Rom.CRCKey), CRC64 = item.ReadString(Data.Models.Metadata.Rom.CRC64Key), diff --git a/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs b/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs index 99b281ce..f333c50f 100644 --- a/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs @@ -292,7 +292,7 @@ namespace SabreTools.Serialization.CrossModel var rom = new Data.Models.Metadata.Rom { Name = item.Name, - [Data.Models.Metadata.Rom.SizeKey] = item.Size, + Size = item.Size, [Data.Models.Metadata.Rom.CRC16Key] = item.CRC16, [Data.Models.Metadata.Rom.CRCKey] = item.CRC, [Data.Models.Metadata.Rom.CRC64Key] = item.CRC64, diff --git a/SabreTools.Serialization.CrossModel/DosCenter.Deserializer.cs b/SabreTools.Serialization.CrossModel/DosCenter.Deserializer.cs index 2192f6bf..abe0dcfc 100644 --- a/SabreTools.Serialization.CrossModel/DosCenter.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/DosCenter.Deserializer.cs @@ -67,7 +67,7 @@ namespace SabreTools.Serialization.CrossModel var file = new File { Name = item.Name, - Size = item.ReadString(Data.Models.Metadata.Rom.SizeKey), + Size = item.Size, CRC = item.ReadString(Data.Models.Metadata.Rom.CRCKey), SHA1 = item.ReadString(Data.Models.Metadata.Rom.SHA1Key), Date = item.ReadString(Data.Models.Metadata.Rom.DateKey), diff --git a/SabreTools.Serialization.CrossModel/DosCenter.Serializer.cs b/SabreTools.Serialization.CrossModel/DosCenter.Serializer.cs index 2fa7c5d2..b4d2faee 100644 --- a/SabreTools.Serialization.CrossModel/DosCenter.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/DosCenter.Serializer.cs @@ -70,7 +70,7 @@ namespace SabreTools.Serialization.CrossModel var rom = new Data.Models.Metadata.Rom { Name = item.Name, - [Data.Models.Metadata.Rom.SizeKey] = item.Size, + Size = item.Size, [Data.Models.Metadata.Rom.CRCKey] = item.CRC, [Data.Models.Metadata.Rom.SHA1Key] = item.SHA1, [Data.Models.Metadata.Rom.DateKey] = item.Date, diff --git a/SabreTools.Serialization.CrossModel/EverdriveSMDB.Deserializer.cs b/SabreTools.Serialization.CrossModel/EverdriveSMDB.Deserializer.cs index bbb8bf43..c0bc3ce2 100644 --- a/SabreTools.Serialization.CrossModel/EverdriveSMDB.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/EverdriveSMDB.Deserializer.cs @@ -50,7 +50,7 @@ namespace SabreTools.Serialization.CrossModel SHA1 = item.ReadString(Data.Models.Metadata.Rom.SHA1Key), MD5 = item.ReadString(Data.Models.Metadata.Rom.MD5Key), CRC32 = item.ReadString(Data.Models.Metadata.Rom.CRCKey), - Size = item.ReadString(Data.Models.Metadata.Rom.SizeKey), + Size = item.Size, }; return row; } diff --git a/SabreTools.Serialization.CrossModel/EverdriveSMDB.Serializer.cs b/SabreTools.Serialization.CrossModel/EverdriveSMDB.Serializer.cs index 89b6f060..66b6f9f6 100644 --- a/SabreTools.Serialization.CrossModel/EverdriveSMDB.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/EverdriveSMDB.Serializer.cs @@ -61,7 +61,7 @@ namespace SabreTools.Serialization.CrossModel [Data.Models.Metadata.Rom.SHA1Key] = item.SHA1, [Data.Models.Metadata.Rom.MD5Key] = item.MD5, [Data.Models.Metadata.Rom.CRCKey] = item.CRC32, - [Data.Models.Metadata.Rom.SizeKey] = item.Size, + Size = item.Size, }; return rom; } diff --git a/SabreTools.Serialization.CrossModel/Listrom.Deserializer.cs b/SabreTools.Serialization.CrossModel/Listrom.Deserializer.cs index 5e7d0428..e37f8aa3 100644 --- a/SabreTools.Serialization.CrossModel/Listrom.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Listrom.Deserializer.cs @@ -76,7 +76,7 @@ namespace SabreTools.Serialization.CrossModel var row = new Row { Name = item.Name, - Size = item.ReadString(Data.Models.Metadata.Rom.SizeKey), + Size = item.Size, CRC = item.ReadString(Data.Models.Metadata.Rom.CRCKey), SHA1 = item.ReadString(Data.Models.Metadata.Rom.SHA1Key), }; diff --git a/SabreTools.Serialization.CrossModel/Listrom.Serializer.cs b/SabreTools.Serialization.CrossModel/Listrom.Serializer.cs index d696ad0a..94c44e35 100644 --- a/SabreTools.Serialization.CrossModel/Listrom.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Listrom.Serializer.cs @@ -100,7 +100,7 @@ namespace SabreTools.Serialization.CrossModel var rom = new Data.Models.Metadata.Rom { Name = item.Name, - [Data.Models.Metadata.Rom.SizeKey] = item.Size, + Size = item.Size, [Data.Models.Metadata.Rom.CRCKey] = item.CRC, [Data.Models.Metadata.Rom.SHA1Key] = item.SHA1, }; diff --git a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs index 15058bcd..40e0bc67 100644 --- a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs @@ -567,7 +567,7 @@ namespace SabreTools.Serialization.CrossModel { Name = item.Name, Bios = item.ReadString(Data.Models.Metadata.Rom.BiosKey), - Size = item.ReadString(Data.Models.Metadata.Rom.SizeKey), + Size = item.Size, CRC = item.ReadString(Data.Models.Metadata.Rom.CRCKey), SHA1 = item.ReadString(Data.Models.Metadata.Rom.SHA1Key), Merge = item.ReadString(Data.Models.Metadata.Rom.MergeKey), diff --git a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs index c4687ff2..2d05c97e 100644 --- a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs @@ -606,7 +606,7 @@ namespace SabreTools.Serialization.CrossModel { Name = item.Name, [Data.Models.Metadata.Rom.BiosKey] = item.Bios, - [Data.Models.Metadata.Rom.SizeKey] = item.Size, + Size = item.Size, [Data.Models.Metadata.Rom.CRCKey] = item.CRC, [Data.Models.Metadata.Rom.SHA1Key] = item.SHA1, [Data.Models.Metadata.Rom.MergeKey] = item.Merge, diff --git a/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs b/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs index 6c2ed3d7..aeeca2bc 100644 --- a/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs @@ -301,7 +301,7 @@ namespace SabreTools.Serialization.CrossModel var rom = new Rom { Name = item.Name, - Size = item.ReadString(Data.Models.Metadata.Rom.SizeKey), + Size = item.Size, CRC16 = item.ReadString(Data.Models.Metadata.Rom.CRC16Key), CRC = item.ReadString(Data.Models.Metadata.Rom.CRCKey), CRC64 = item.ReadString(Data.Models.Metadata.Rom.CRC64Key), diff --git a/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs b/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs index ef4a60ae..7ef34233 100644 --- a/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs @@ -295,7 +295,7 @@ namespace SabreTools.Serialization.CrossModel var rom = new Data.Models.Metadata.Rom { Name = item.Name, - [Data.Models.Metadata.Rom.SizeKey] = item.Size, + Size = item.Size, [Data.Models.Metadata.Rom.CRC16Key] = item.CRC16, [Data.Models.Metadata.Rom.CRCKey] = item.CRC, [Data.Models.Metadata.Rom.CRC64Key] = item.CRC64, diff --git a/SabreTools.Serialization.CrossModel/OfflineList.Deserializer.cs b/SabreTools.Serialization.CrossModel/OfflineList.Deserializer.cs index 554073a1..dec6856c 100644 --- a/SabreTools.Serialization.CrossModel/OfflineList.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/OfflineList.Deserializer.cs @@ -99,8 +99,8 @@ namespace SabreTools.Serialization.CrossModel var roms = item.Read(Data.Models.Metadata.Machine.RomKey); if (roms is not null && roms.Length > 0) { - var romSizes = Array.ConvertAll(roms, r => r.ReadLong(Data.Models.Metadata.Rom.SizeKey) ?? -1); - game.RomSize = Array.Find(romSizes, s => s > -1).ToString(); + var romSizes = Array.ConvertAll(roms, r => r.Size ?? -1); + game.RomSize = Array.Find(romSizes, s => s > -1); var romCRCs = Array.ConvertAll(roms, ConvertFromInternalModel); game.Files = new Files { RomCRC = romCRCs }; diff --git a/SabreTools.Serialization.CrossModel/OfflineList.Serializer.cs b/SabreTools.Serialization.CrossModel/OfflineList.Serializer.cs index 70436b2f..5a77b9d9 100644 --- a/SabreTools.Serialization.CrossModel/OfflineList.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/OfflineList.Serializer.cs @@ -85,7 +85,7 @@ namespace SabreTools.Serialization.CrossModel = Array.ConvertAll(item.Files.RomCRC, romCRC => { var rom = ConvertToInternalModel(romCRC); - rom[Data.Models.Metadata.Rom.SizeKey] = item.RomSize; + rom.Size = item.RomSize; return rom; }); } diff --git a/SabreTools.Serialization.CrossModel/RomCenter.Deserializer.cs b/SabreTools.Serialization.CrossModel/RomCenter.Deserializer.cs index b5ffef2d..5160815e 100644 --- a/SabreTools.Serialization.CrossModel/RomCenter.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/RomCenter.Deserializer.cs @@ -104,7 +104,7 @@ namespace SabreTools.Serialization.CrossModel GameDescription = parent.Description, RomName = item.Name, RomCRC = item.ReadString(Data.Models.Metadata.Rom.CRCKey), - RomSize = item.ReadString(Data.Models.Metadata.Rom.SizeKey), + RomSize = item.Size, RomOf = parent.ReadString(Data.Models.Metadata.Machine.RomOfKey), MergeName = item.ReadString(Data.Models.Metadata.Rom.MergeKey), }; diff --git a/SabreTools.Serialization.CrossModel/RomCenter.Serializer.cs b/SabreTools.Serialization.CrossModel/RomCenter.Serializer.cs index d6eff885..029adf4d 100644 --- a/SabreTools.Serialization.CrossModel/RomCenter.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/RomCenter.Serializer.cs @@ -90,7 +90,7 @@ namespace SabreTools.Serialization.CrossModel { Name = item.RomName, [Data.Models.Metadata.Rom.CRCKey] = item.RomCRC, - [Data.Models.Metadata.Rom.SizeKey] = item.RomSize, + Size = item.RomSize, [Data.Models.Metadata.Rom.MergeKey] = item.MergeName, }; return rom; diff --git a/SabreTools.Serialization.CrossModel/SeparatedValue.Deserializer.cs b/SabreTools.Serialization.CrossModel/SeparatedValue.Deserializer.cs index 5f6c3d09..2d9c5377 100644 --- a/SabreTools.Serialization.CrossModel/SeparatedValue.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/SeparatedValue.Deserializer.cs @@ -139,7 +139,7 @@ namespace SabreTools.Serialization.CrossModel Type = "rom", RomName = item.Name, DiskName = null, - Size = item.ReadString(Data.Models.Metadata.Rom.SizeKey), + Size = item.Size, CRC = item.ReadString(Data.Models.Metadata.Rom.CRCKey), MD5 = item.ReadString(Data.Models.Metadata.Rom.MD5Key), SHA1 = item.ReadString(Data.Models.Metadata.Rom.SHA1Key), diff --git a/SabreTools.Serialization.CrossModel/SeparatedValue.Serializer.cs b/SabreTools.Serialization.CrossModel/SeparatedValue.Serializer.cs index 6a9382e2..a3fb9f8e 100644 --- a/SabreTools.Serialization.CrossModel/SeparatedValue.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/SeparatedValue.Serializer.cs @@ -105,7 +105,7 @@ namespace SabreTools.Serialization.CrossModel "rom" => new Data.Models.Metadata.Rom { Name = item.RomName, - [Data.Models.Metadata.Rom.SizeKey] = item.Size, + Size = item.Size, [Data.Models.Metadata.Rom.CRCKey] = item.CRC, [Data.Models.Metadata.Rom.MD5Key] = item.MD5, [Data.Models.Metadata.Rom.SHA1Key] = item.SHA1, diff --git a/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs b/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs index 5d388721..72d4ac87 100644 --- a/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs @@ -74,7 +74,7 @@ namespace SabreTools.Serialization.CrossModel var dataArea = new DataArea { Name = item.Name, - Size = item.ReadString(Data.Models.Metadata.DataArea.SizeKey), + Size = item.Size, Width = item.ReadString(Data.Models.Metadata.DataArea.WidthKey), Endianness = item.Endianness, }; @@ -216,7 +216,7 @@ namespace SabreTools.Serialization.CrossModel var rom = new Rom { Name = item.Name, - Size = item.ReadString(Data.Models.Metadata.Rom.SizeKey), + Size = item.Size, Length = item.ReadString(Data.Models.Metadata.Rom.LengthKey), CRC = item.ReadString(Data.Models.Metadata.Rom.CRCKey), SHA1 = item.ReadString(Data.Models.Metadata.Rom.SHA1Key), diff --git a/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs b/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs index 64403020..155b9125 100644 --- a/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs @@ -32,7 +32,7 @@ namespace SabreTools.Serialization.CrossModel { var header = new Data.Models.Metadata.Header { - Name = item.Name, + Name = item.Name, Description = item.Description, Notes = item.Notes, }; @@ -75,7 +75,7 @@ namespace SabreTools.Serialization.CrossModel var dataArea = new Data.Models.Metadata.DataArea { Name = item.Name, - [Data.Models.Metadata.DataArea.SizeKey] = item.Size, + Size = item.Size, [Data.Models.Metadata.DataArea.WidthKey] = item.Width, Endianness = item.Endianness, }; @@ -210,7 +210,7 @@ namespace SabreTools.Serialization.CrossModel var rom = new Data.Models.Metadata.Rom { Name = item.Name, - [Data.Models.Metadata.Rom.SizeKey] = item.Size, + Size = item.Size, [Data.Models.Metadata.Rom.LengthKey] = item.Length, [Data.Models.Metadata.Rom.CRCKey] = item.CRC, [Data.Models.Metadata.Rom.SHA1Key] = item.SHA1, diff --git a/SabreTools.Serialization.Readers.Test/ClrMameProTests.cs b/SabreTools.Serialization.Readers.Test/ClrMameProTests.cs index afe24853..d39a222c 100644 --- a/SabreTools.Serialization.Readers.Test/ClrMameProTests.cs +++ b/SabreTools.Serialization.Readers.Test/ClrMameProTests.cs @@ -214,7 +214,7 @@ namespace SabreTools.Serialization.Readers.Test var rom = new Data.Models.ClrMamePro.Rom { Name = "name", - Size = "XXXXXX", + Size = 12345L, CRC16 = "XXXXXX", CRC = "XXXXXX", CRC64 = "XXXXXX", @@ -477,7 +477,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(rom); Assert.Equal("name", rom.Name); - Assert.Equal("XXXXXX", rom.Size); + Assert.Equal(12345L, rom.Size); Assert.Equal("XXXXXX", rom.CRC16); Assert.Equal("XXXXXX", rom.CRC); Assert.Equal("XXXXXX", rom.CRC64); diff --git a/SabreTools.Serialization.Readers.Test/DosCenterTests.cs b/SabreTools.Serialization.Readers.Test/DosCenterTests.cs index 0332eee7..40e43160 100644 --- a/SabreTools.Serialization.Readers.Test/DosCenterTests.cs +++ b/SabreTools.Serialization.Readers.Test/DosCenterTests.cs @@ -113,7 +113,7 @@ namespace SabreTools.Serialization.Readers.Test var file = new Data.Models.DosCenter.File { Name = "name", - Size = "XXXXXX", + Size = 12345L, CRC = "XXXXXX", SHA1 = "XXXXXX", Date = "XXXXXX XXXXXX", @@ -167,7 +167,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(rom); Assert.Equal("name", rom.Name); - Assert.Equal("XXXXXX", rom.Size); + Assert.Equal(12345L, rom.Size); Assert.Equal("XXXXXX", rom.CRC); Assert.Equal("XXXXXX", rom.SHA1); Assert.Equal("XXXXXX XXXXXX", rom.Date); diff --git a/SabreTools.Serialization.Readers.Test/EverdriveSMDBTests.cs b/SabreTools.Serialization.Readers.Test/EverdriveSMDBTests.cs index 63b2c334..d109d09b 100644 --- a/SabreTools.Serialization.Readers.Test/EverdriveSMDBTests.cs +++ b/SabreTools.Serialization.Readers.Test/EverdriveSMDBTests.cs @@ -105,7 +105,7 @@ namespace SabreTools.Serialization.Readers.Test SHA1 = "XXXXXX", MD5 = "XXXXXX", CRC32 = "XXXXXX", - Size = "XXXXXX", + Size = 12345L, }; return new Data.Models.EverdriveSMDB.MetadataFile @@ -125,7 +125,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", row.SHA1); Assert.Equal("XXXXXX", row.MD5); Assert.Equal("XXXXXX", row.CRC32); - Assert.Equal("XXXXXX", row.Size); + Assert.Equal(12345L, row.Size); } } } diff --git a/SabreTools.Serialization.Readers.Test/ListromTests.cs b/SabreTools.Serialization.Readers.Test/ListromTests.cs index 6e5b9991..aefdefcc 100644 --- a/SabreTools.Serialization.Readers.Test/ListromTests.cs +++ b/SabreTools.Serialization.Readers.Test/ListromTests.cs @@ -103,7 +103,7 @@ namespace SabreTools.Serialization.Readers.Test var romGood = new Data.Models.Listrom.Row { Name = "name", - Size = "12345", + Size = 12345L, Bad = false, CRC = Hashing.HashType.CRC32.ZeroString, SHA1 = Hashing.HashType.SHA1.ZeroString, @@ -113,7 +113,7 @@ namespace SabreTools.Serialization.Readers.Test var romBad = new Data.Models.Listrom.Row { Name = "name", - Size = "12345", + Size = 12345L, Bad = true, CRC = Hashing.HashType.CRC32.ZeroString, SHA1 = Hashing.HashType.SHA1.ZeroString, @@ -203,7 +203,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(row); Assert.Equal("name", row.Name); - Assert.Equal("12345", row.Size); + Assert.Equal(12345L, row.Size); Assert.False(row.Bad); Assert.Equal(Hashing.HashType.CRC32.ZeroString, row.CRC); Assert.Equal(Hashing.HashType.SHA1.ZeroString, row.SHA1); @@ -217,7 +217,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(row); Assert.Equal("name", row.Name); - Assert.Equal("12345", row.Size); + Assert.Equal(12345L, row.Size); Assert.True(row.Bad); Assert.Equal(Hashing.HashType.CRC32.ZeroString, row.CRC); Assert.Equal(Hashing.HashType.SHA1.ZeroString, row.SHA1); diff --git a/SabreTools.Serialization.Readers.Test/ListxmlTests.cs b/SabreTools.Serialization.Readers.Test/ListxmlTests.cs index de443527..a540749f 100644 --- a/SabreTools.Serialization.Readers.Test/ListxmlTests.cs +++ b/SabreTools.Serialization.Readers.Test/ListxmlTests.cs @@ -141,7 +141,7 @@ namespace SabreTools.Serialization.Readers.Test { Name = "name", Bios = "XXXXXX", - Size = "XXXXXX", + Size = 12345L, CRC = "XXXXXX", SHA1 = "XXXXXX", Merge = "XXXXXX", @@ -553,7 +553,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(rom); Assert.Equal("name", rom.Name); Assert.Equal("XXXXXX", rom.Bios); - Assert.Equal("XXXXXX", rom.Size); + Assert.Equal(12345L, rom.Size); Assert.Equal("XXXXXX", rom.CRC); Assert.Equal("XXXXXX", rom.SHA1); Assert.Equal("XXXXXX", rom.Merge); diff --git a/SabreTools.Serialization.Readers.Test/LogiqxTests.cs b/SabreTools.Serialization.Readers.Test/LogiqxTests.cs index 88e48ebb..415951e5 100644 --- a/SabreTools.Serialization.Readers.Test/LogiqxTests.cs +++ b/SabreTools.Serialization.Readers.Test/LogiqxTests.cs @@ -213,7 +213,7 @@ namespace SabreTools.Serialization.Readers.Test var rom = new Data.Models.Logiqx.Rom { Name = "name", - Size = "XXXXXX", + Size = 12345L, CRC16 = "XXXXXX", CRC = "XXXXXX", CRC64 = "XXXXXX", @@ -514,7 +514,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(rom); Assert.Equal("name", rom.Name); - Assert.Equal("XXXXXX", rom.Size); + Assert.Equal(12345L, rom.Size); Assert.Equal("XXXXXX", rom.CRC); Assert.Equal("XXXXXX", rom.MD2); Assert.Equal("XXXXXX", rom.MD4); diff --git a/SabreTools.Serialization.Readers.Test/M1Tests.cs b/SabreTools.Serialization.Readers.Test/M1Tests.cs index 64c85fea..b4bc6e9c 100644 --- a/SabreTools.Serialization.Readers.Test/M1Tests.cs +++ b/SabreTools.Serialization.Readers.Test/M1Tests.cs @@ -137,7 +137,7 @@ namespace SabreTools.Serialization.Readers.Test { Name = "name", Bios = "XXXXXX", - Size = "XXXXXX", + Size = 12345L, CRC = "XXXXXX", SHA1 = "XXXXXX", Merge = "XXXXXX", @@ -547,7 +547,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(rom); Assert.Equal("name", rom.Name); Assert.Equal("XXXXXX", rom.Bios); - Assert.Equal("XXXXXX", rom.Size); + Assert.Equal(12345L, rom.Size); Assert.Equal("XXXXXX", rom.CRC); Assert.Equal("XXXXXX", rom.SHA1); Assert.Equal("XXXXXX", rom.Merge); diff --git a/SabreTools.Serialization.Readers.Test/MessTests.cs b/SabreTools.Serialization.Readers.Test/MessTests.cs index 5570a6b8..1d3f4744 100644 --- a/SabreTools.Serialization.Readers.Test/MessTests.cs +++ b/SabreTools.Serialization.Readers.Test/MessTests.cs @@ -137,7 +137,7 @@ namespace SabreTools.Serialization.Readers.Test { Name = "name", Bios = "XXXXXX", - Size = "XXXXXX", + Size = 12345L, CRC = "XXXXXX", SHA1 = "XXXXXX", Merge = "XXXXXX", @@ -547,7 +547,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(rom); Assert.Equal("name", rom.Name); Assert.Equal("XXXXXX", rom.Bios); - Assert.Equal("XXXXXX", rom.Size); + Assert.Equal(12345L, rom.Size); Assert.Equal("XXXXXX", rom.CRC); Assert.Equal("XXXXXX", rom.SHA1); Assert.Equal("XXXXXX", rom.Merge); diff --git a/SabreTools.Serialization.Readers.Test/OfflineListTests.cs b/SabreTools.Serialization.Readers.Test/OfflineListTests.cs index ff8b557d..74edbda6 100644 --- a/SabreTools.Serialization.Readers.Test/OfflineListTests.cs +++ b/SabreTools.Serialization.Readers.Test/OfflineListTests.cs @@ -257,7 +257,7 @@ namespace SabreTools.Serialization.Readers.Test ReleaseNumber = "XXXXXX", Title = "XXXXXX", SaveType = "XXXXXX", - RomSize = "XXXXXX", + RomSize = 12345L, Publisher = "XXXXXX", Location = "XXXXXX", SourceRom = "XXXXXX", @@ -445,7 +445,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", game.ReleaseNumber); Assert.Equal("XXXXXX", game.Title); Assert.Equal("XXXXXX", game.SaveType); - Assert.Equal("XXXXXX", game.RomSize); + Assert.Equal(12345L, game.RomSize); Assert.Equal("XXXXXX", game.Publisher); Assert.Equal("XXXXXX", game.Location); Assert.Equal("XXXXXX", game.SourceRom); diff --git a/SabreTools.Serialization.Readers.Test/RomCenterTests.cs b/SabreTools.Serialization.Readers.Test/RomCenterTests.cs index 40ebaaee..0ee45882 100644 --- a/SabreTools.Serialization.Readers.Test/RomCenterTests.cs +++ b/SabreTools.Serialization.Readers.Test/RomCenterTests.cs @@ -132,7 +132,7 @@ namespace SabreTools.Serialization.Readers.Test GameDescription = "description", RomName = "XXXXXX", RomCRC = "XXXXXX", - RomSize = "XXXXXX", + RomSize = 12345L, RomOf = "XXXXXX", MergeName = "XXXXXX", }; @@ -211,7 +211,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("description", rom.GameDescription); Assert.Equal("XXXXXX", rom.RomName); Assert.Equal("XXXXXX", rom.RomCRC); - Assert.Equal("XXXXXX", rom.RomSize); + Assert.Equal(12345L, rom.RomSize); Assert.Equal("XXXXXX", rom.RomOf); Assert.Equal("XXXXXX", rom.MergeName); } diff --git a/SabreTools.Serialization.Readers.Test/SeparatedValueTests.cs b/SabreTools.Serialization.Readers.Test/SeparatedValueTests.cs index c1319527..b671d7fd 100644 --- a/SabreTools.Serialization.Readers.Test/SeparatedValueTests.cs +++ b/SabreTools.Serialization.Readers.Test/SeparatedValueTests.cs @@ -171,7 +171,7 @@ namespace SabreTools.Serialization.Readers.Test GameDescription = "description", Type = "rom", RomName = "XXXXXX", - Size = "XXXXXX", + Size = 12345L, CRC = "XXXXXX", MD5 = "XXXXXX", SHA1 = "XXXXXX", @@ -215,7 +215,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("disk", row.Type); Assert.NotNull(row.RomName); Assert.Empty(row.RomName); Assert.Equal("XXXXXX", row.DiskName); - Assert.NotNull(row.Size); Assert.Empty(row.Size); + Assert.Null(row.Size); Assert.NotNull(row.CRC); Assert.Empty(row.CRC); Assert.Equal("XXXXXX", row.MD5); Assert.Equal("XXXXXX", row.SHA1); @@ -250,7 +250,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("media", row.Type); Assert.NotNull(row.RomName); Assert.Empty(row.RomName); Assert.Equal("XXXXXX", row.DiskName); - Assert.NotNull(row.Size); Assert.Empty(row.Size); + Assert.Null(row.Size); Assert.NotNull(row.CRC); Assert.Empty(row.CRC); Assert.Equal("XXXXXX", row.MD5); Assert.Equal("XXXXXX", row.SHA1); @@ -286,7 +286,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", row.RomName); Assert.NotNull(row.DiskName); Assert.Empty(row.DiskName); - Assert.Equal("XXXXXX", row.Size); + Assert.Equal(12345L, row.Size); Assert.Equal("XXXXXX", row.CRC); Assert.Equal("XXXXXX", row.MD5); Assert.Equal("XXXXXX", row.SHA1); diff --git a/SabreTools.Serialization.Readers.Test/SoftwareListTests.cs b/SabreTools.Serialization.Readers.Test/SoftwareListTests.cs index bcac0896..37f02e65 100644 --- a/SabreTools.Serialization.Readers.Test/SoftwareListTests.cs +++ b/SabreTools.Serialization.Readers.Test/SoftwareListTests.cs @@ -130,7 +130,7 @@ namespace SabreTools.Serialization.Readers.Test var rom = new Data.Models.SoftwareList.Rom { Name = "name", - Size = "XXXXXX", + Size = 12345L, Length = "XXXXXX", CRC = "XXXXXX", SHA1 = "XXXXXX", @@ -143,7 +143,7 @@ namespace SabreTools.Serialization.Readers.Test var dataarea = new Data.Models.SoftwareList.DataArea { Name = "name", - Size = "XXXXXX", + Size = 12345L, Width = "XXXXXX", Endianness = Data.Models.Metadata.Endianness.Big, Rom = [rom], @@ -302,7 +302,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(dataarea); Assert.Equal("name", dataarea.Name); - Assert.Equal("XXXXXX", dataarea.Size); + Assert.Equal(12345L, dataarea.Size); Assert.Equal("XXXXXX", dataarea.Width); Assert.Equal(Data.Models.Metadata.Endianness.Big, dataarea.Endianness); @@ -318,7 +318,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(rom); Assert.Equal("name", rom.Name); - Assert.Equal("XXXXXX", rom.Size); + Assert.Equal(12345L, rom.Size); Assert.Equal("XXXXXX", rom.Length); Assert.Equal("XXXXXX", rom.CRC); Assert.Equal("XXXXXX", rom.SHA1); diff --git a/SabreTools.Serialization.Readers/ClrMamePro.cs b/SabreTools.Serialization.Readers/ClrMamePro.cs index 2761c576..68ebc68b 100644 --- a/SabreTools.Serialization.Readers/ClrMamePro.cs +++ b/SabreTools.Serialization.Readers/ClrMamePro.cs @@ -530,7 +530,7 @@ namespace SabreTools.Serialization.Readers rom.Name = kvp.Value; break; case "size": - rom.Size = kvp.Value; + rom.Size = NumberHelper.ConvertToInt64(kvp.Value); break; case "crc": rom.CRC = kvp.Value; diff --git a/SabreTools.Serialization.Readers/DosCenter.cs b/SabreTools.Serialization.Readers/DosCenter.cs index 0480c926..e7d7ddeb 100644 --- a/SabreTools.Serialization.Readers/DosCenter.cs +++ b/SabreTools.Serialization.Readers/DosCenter.cs @@ -1,8 +1,10 @@ +using System; using System.Collections.Generic; using System.IO; using System.Text; using SabreTools.Data.Models.DosCenter; using SabreTools.Text.ClrMamePro; +using SabreTools.Text.Extensions; namespace SabreTools.Serialization.Readers { @@ -176,7 +178,7 @@ namespace SabreTools.Serialization.Readers /// /// ClrMameProReader representing the metadata file /// File object created from the reader context - private static Data.Models.DosCenter.File? CreateFile(Reader reader) + private Data.Models.DosCenter.File? CreateFile(Reader reader) { if (reader.Internal is null) return null; @@ -190,7 +192,7 @@ namespace SabreTools.Serialization.Readers file.Name = kvp.Value; break; case "size": - file.Size = kvp.Value; + file.Size = NumberHelper.ConvertToInt64(kvp.Value); break; case "crc": file.CRC = kvp.Value; @@ -202,7 +204,7 @@ namespace SabreTools.Serialization.Readers file.Date = kvp.Value; break; default: - // TODO: Log invalid values + if (Debug) Console.Error.WriteLine($"'{kvp.Key}' is an unrecognized field"); break; } } diff --git a/SabreTools.Serialization.Readers/EverdriveSMDB.cs b/SabreTools.Serialization.Readers/EverdriveSMDB.cs index 100579b2..5031b142 100644 --- a/SabreTools.Serialization.Readers/EverdriveSMDB.cs +++ b/SabreTools.Serialization.Readers/EverdriveSMDB.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.IO; using System.Text; using SabreTools.Data.Models.EverdriveSMDB; +using SabreTools.Text.Extensions; using SabreTools.Text.SeparatedValue; namespace SabreTools.Serialization.Readers @@ -50,7 +51,7 @@ namespace SabreTools.Serialization.Readers // If we have the size field if (reader.Line.Count > 5) - row.Size = reader.Line[5]; + row.Size = NumberHelper.ConvertToInt64(reader.Line[5]); rows.Add(row); } diff --git a/SabreTools.Serialization.Readers/Listrom.cs b/SabreTools.Serialization.Readers/Listrom.cs index 205a9aec..1c219b5e 100644 --- a/SabreTools.Serialization.Readers/Listrom.cs +++ b/SabreTools.Serialization.Readers/Listrom.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.IO; using System.Text; using SabreTools.Data.Models.Listrom; +using SabreTools.Text.Extensions; #pragma warning disable IDE0057 // Use range operator namespace SabreTools.Serialization.Readers @@ -146,7 +147,7 @@ namespace SabreTools.Serialization.Readers // Normal ROM (Name, Size, CRC, MD5/SHA1) case 3 when line.Contains("CRC"): row.Name = name; - row.Size = lineParts[0]; + row.Size = NumberHelper.ConvertToInt64(lineParts[0]); #if NETCOREAPP || NETSTANDARD2_1_OR_GREATER row.CRC = lineParts[1]["CRC".Length..].Trim('(', ')'); #else @@ -193,7 +194,7 @@ namespace SabreTools.Serialization.Readers // Bad ROM (Name, Size, BAD, CRC, MD5/SHA1, BAD_DUMP) case 5 when line.Contains("BAD_DUMP"): row.Name = name; - row.Size = lineParts[0]; + row.Size = NumberHelper.ConvertToInt64(lineParts[0]); row.Bad = true; #if NETCOREAPP || NETSTANDARD2_1_OR_GREATER row.CRC = lineParts[2]["CRC".Length..].Trim('(', ')'); @@ -217,7 +218,7 @@ namespace SabreTools.Serialization.Readers // Nodump ROM (Name, Size, NO GOOD DUMP KNOWN) case 5 when line.Contains("NO GOOD DUMP KNOWN"): row.Name = name; - row.Size = lineParts[0]; + row.Size = NumberHelper.ConvertToInt64(lineParts[0]); row.NoGoodDumpKnown = true; break; diff --git a/SabreTools.Serialization.Readers/Listxml.cs b/SabreTools.Serialization.Readers/Listxml.cs index aaa70299..b2fa98bb 100644 --- a/SabreTools.Serialization.Readers/Listxml.cs +++ b/SabreTools.Serialization.Readers/Listxml.cs @@ -1047,7 +1047,7 @@ namespace SabreTools.Serialization.Readers obj.Name = reader.GetAttribute("name"); obj.Bios = reader.GetAttribute("bios"); - obj.Size = reader.GetAttribute("size"); + obj.Size = NumberHelper.ConvertToInt64(reader.GetAttribute("size")); obj.CRC = reader.GetAttribute("crc"); obj.SHA1 = reader.GetAttribute("sha1"); obj.Merge = reader.GetAttribute("merge"); diff --git a/SabreTools.Serialization.Readers/Logiqx.cs b/SabreTools.Serialization.Readers/Logiqx.cs index 37c05445..25c6e534 100644 --- a/SabreTools.Serialization.Readers/Logiqx.cs +++ b/SabreTools.Serialization.Readers/Logiqx.cs @@ -4,6 +4,7 @@ using System.IO; using System.Xml; using SabreTools.Data.Extensions; using SabreTools.Data.Models.Logiqx; +using SabreTools.Text.Extensions; namespace SabreTools.Serialization.Readers { @@ -689,7 +690,7 @@ namespace SabreTools.Serialization.Readers var obj = new Rom(); obj.Name = reader.GetAttribute("name"); - obj.Size = reader.GetAttribute("size"); + obj.Size = NumberHelper.ConvertToInt64(reader.GetAttribute("size")); obj.CRC16 = reader.GetAttribute("crc16"); obj.CRC = reader.GetAttribute("crc"); obj.CRC64 = reader.GetAttribute("crc64"); diff --git a/SabreTools.Serialization.Readers/M1.cs b/SabreTools.Serialization.Readers/M1.cs index 5a2b94df..308a17b8 100644 --- a/SabreTools.Serialization.Readers/M1.cs +++ b/SabreTools.Serialization.Readers/M1.cs @@ -1045,7 +1045,7 @@ namespace SabreTools.Serialization.Readers obj.Name = reader.GetAttribute("name"); obj.Bios = reader.GetAttribute("bios"); - obj.Size = reader.GetAttribute("size"); + obj.Size = NumberHelper.ConvertToInt64(reader.GetAttribute("size")); obj.CRC = reader.GetAttribute("crc"); obj.SHA1 = reader.GetAttribute("sha1"); obj.Merge = reader.GetAttribute("merge"); diff --git a/SabreTools.Serialization.Readers/Mess.cs b/SabreTools.Serialization.Readers/Mess.cs index 534a9717..5b93bf45 100644 --- a/SabreTools.Serialization.Readers/Mess.cs +++ b/SabreTools.Serialization.Readers/Mess.cs @@ -1045,7 +1045,7 @@ namespace SabreTools.Serialization.Readers obj.Name = reader.GetAttribute("name"); obj.Bios = reader.GetAttribute("bios"); - obj.Size = reader.GetAttribute("size"); + obj.Size = NumberHelper.ConvertToInt64(reader.GetAttribute("size")); obj.CRC = reader.GetAttribute("crc"); obj.SHA1 = reader.GetAttribute("sha1"); obj.Merge = reader.GetAttribute("merge"); diff --git a/SabreTools.Serialization.Readers/OfflineList.cs b/SabreTools.Serialization.Readers/OfflineList.cs index 2a469d3e..58892a50 100644 --- a/SabreTools.Serialization.Readers/OfflineList.cs +++ b/SabreTools.Serialization.Readers/OfflineList.cs @@ -4,6 +4,7 @@ using System.IO; using System.Xml; using SabreTools.Data.Extensions; using SabreTools.Data.Models.OfflineList; +using SabreTools.Text.Extensions; namespace SabreTools.Serialization.Readers { @@ -416,7 +417,7 @@ namespace SabreTools.Serialization.Readers if (obj.RomSize is not null && Debug) Console.WriteLine($"'{reader.Name}' element already found, overwriting"); - obj.RomSize = reader.ReadElementContentAsString(); + obj.RomSize = NumberHelper.ConvertToInt64(reader.ReadElementContentAsString()); break; case "publisher": if (obj.Publisher is not null && Debug) diff --git a/SabreTools.Serialization.Readers/RomCenter.cs b/SabreTools.Serialization.Readers/RomCenter.cs index 22791773..020277e8 100644 --- a/SabreTools.Serialization.Readers/RomCenter.cs +++ b/SabreTools.Serialization.Readers/RomCenter.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.IO; using System.Text; using SabreTools.Data.Models.RomCenter; +using SabreTools.Text.Extensions; using SabreTools.Text.INI; #pragma warning disable CA1847 // Use char literal for a single character lookup @@ -166,7 +167,7 @@ namespace SabreTools.Serialization.Readers GameDescription = splitLine[4], RomName = splitLine[5], RomCRC = splitLine[6], - RomSize = splitLine[7], + RomSize = NumberHelper.ConvertToInt64(splitLine[7]), RomOf = splitLine[8], MergeName = splitLine[9], // EMPTY = splitLine[10] diff --git a/SabreTools.Serialization.Readers/SeparatedValue.cs b/SabreTools.Serialization.Readers/SeparatedValue.cs index a4b27ce8..9a9a0d40 100644 --- a/SabreTools.Serialization.Readers/SeparatedValue.cs +++ b/SabreTools.Serialization.Readers/SeparatedValue.cs @@ -3,6 +3,7 @@ using System.IO; using System.Text; using SabreTools.Data.Extensions; using SabreTools.Data.Models.SeparatedValue; +using SabreTools.Text.Extensions; using SabreTools.Text.SeparatedValue; #pragma warning disable CA1822 // Mark members as static @@ -122,7 +123,7 @@ namespace SabreTools.Serialization.Readers Type = reader.Line[5], RomName = reader.Line[6], DiskName = reader.Line[7], - Size = reader.Line[8], + Size = NumberHelper.ConvertToInt64(reader.Line[8]), CRC = reader.Line[9], MD5 = reader.Line[10], SHA1 = reader.Line[11], @@ -142,7 +143,7 @@ namespace SabreTools.Serialization.Readers Type = reader.Line[5], RomName = reader.Line[6], DiskName = reader.Line[7], - Size = reader.Line[8], + Size = NumberHelper.ConvertToInt64(reader.Line[8]), CRC = reader.Line[9], MD5 = reader.Line[10], SHA1 = reader.Line[11], diff --git a/SabreTools.Serialization.Readers/SoftwareList.cs b/SabreTools.Serialization.Readers/SoftwareList.cs index cf3db223..f79c12bb 100644 --- a/SabreTools.Serialization.Readers/SoftwareList.cs +++ b/SabreTools.Serialization.Readers/SoftwareList.cs @@ -4,6 +4,7 @@ using System.IO; using System.Xml; using SabreTools.Data.Extensions; using SabreTools.Data.Models.SoftwareList; +using SabreTools.Text.Extensions; namespace SabreTools.Serialization.Readers { @@ -125,7 +126,7 @@ namespace SabreTools.Serialization.Readers var obj = new DataArea(); obj.Name = reader.GetAttribute("name"); - obj.Size = reader.GetAttribute("size"); + obj.Size = NumberHelper.ConvertToInt64(reader.GetAttribute("size")); obj.Width = reader.GetAttribute("width"); obj.Endianness = reader.GetAttribute("endianness").AsEndianness(); @@ -413,7 +414,7 @@ namespace SabreTools.Serialization.Readers var obj = new Rom(); obj.Name = reader.GetAttribute("name"); - obj.Size = reader.GetAttribute("size"); + obj.Size = NumberHelper.ConvertToInt64(reader.GetAttribute("size")); obj.Length = reader.GetAttribute("length"); obj.CRC = reader.GetAttribute("crc"); obj.SHA1 = reader.GetAttribute("sha1"); diff --git a/SabreTools.Serialization.Writers/ClrMamePro.cs b/SabreTools.Serialization.Writers/ClrMamePro.cs index cd4f9df1..0a6ee433 100644 --- a/SabreTools.Serialization.Writers/ClrMamePro.cs +++ b/SabreTools.Serialization.Writers/ClrMamePro.cs @@ -261,7 +261,7 @@ namespace SabreTools.Serialization.Writers { writer.WriteStartElement("rom"); writer.WriteRequiredAttributeString("name", rom.Name, throwOnError: true); - writer.WriteRequiredAttributeString("size", rom.Size, throwOnError: true); + writer.WriteRequiredAttributeString("size", rom.Size?.ToString(), throwOnError: true); writer.WriteOptionalAttributeString("crc16", rom.CRC16); writer.WriteOptionalAttributeString("crc", rom.CRC); writer.WriteOptionalAttributeString("crc64", rom.CRC64); diff --git a/SabreTools.Serialization.Writers/DosCenter.cs b/SabreTools.Serialization.Writers/DosCenter.cs index 09b1dae8..000b6601 100644 --- a/SabreTools.Serialization.Writers/DosCenter.cs +++ b/SabreTools.Serialization.Writers/DosCenter.cs @@ -115,7 +115,7 @@ namespace SabreTools.Serialization.Writers writer.WriteStartElement("file"); writer.WriteRequiredAttributeString("name", file.Name, throwOnError: true); - writer.WriteRequiredAttributeString("size", file.Size, throwOnError: true); + writer.WriteRequiredAttributeString("size", file.Size?.ToString(), throwOnError: true); writer.WriteOptionalAttributeString("date", file.Date); writer.WriteRequiredAttributeString("crc", file.CRC?.ToUpperInvariant(), throwOnError: true); writer.WriteRequiredAttributeString("sha1", file.SHA1?.ToUpperInvariant()); diff --git a/SabreTools.Serialization.Writers/EverdriveSMDB.cs b/SabreTools.Serialization.Writers/EverdriveSMDB.cs index c7f56504..87139c88 100644 --- a/SabreTools.Serialization.Writers/EverdriveSMDB.cs +++ b/SabreTools.Serialization.Writers/EverdriveSMDB.cs @@ -55,7 +55,7 @@ namespace SabreTools.Serialization.Writers }; if (row.Size is not null) - rowArray.Add(row.Size); + rowArray.Add(row.Size?.ToString()); writer.WriteValues([.. rowArray]); writer.Flush(); diff --git a/SabreTools.Serialization.Writers/Listrom.cs b/SabreTools.Serialization.Writers/Listrom.cs index 36bad621..f18e6bd4 100644 --- a/SabreTools.Serialization.Writers/Listrom.cs +++ b/SabreTools.Serialization.Writers/Listrom.cs @@ -116,7 +116,7 @@ namespace SabreTools.Serialization.Writers var rowBuilder = new StringBuilder(); - int padding = 40 - (row.Size?.Length ?? 0); + int padding = 40 - (row.Size?.ToString()?.Length ?? 0); if (padding < row.Name!.Length) padding = row.Name.Length + 2; diff --git a/SabreTools.Serialization.Writers/Listxml.cs b/SabreTools.Serialization.Writers/Listxml.cs index edb20f88..d32b5bb2 100644 --- a/SabreTools.Serialization.Writers/Listxml.cs +++ b/SabreTools.Serialization.Writers/Listxml.cs @@ -731,7 +731,7 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("name", obj.Name); writer.WriteOptionalAttributeString("bios", obj.Bios); - writer.WriteRequiredAttributeString("size", obj.Size); + writer.WriteRequiredAttributeString("size", obj.Size?.ToString()); writer.WriteOptionalAttributeString("crc", obj.CRC); writer.WriteOptionalAttributeString("sha1", obj.SHA1); writer.WriteOptionalAttributeString("merge", obj.Merge); diff --git a/SabreTools.Serialization.Writers/Logiqx.cs b/SabreTools.Serialization.Writers/Logiqx.cs index c02d18a5..7ecfd167 100644 --- a/SabreTools.Serialization.Writers/Logiqx.cs +++ b/SabreTools.Serialization.Writers/Logiqx.cs @@ -489,7 +489,7 @@ namespace SabreTools.Serialization.Writers writer.WriteStartElement("rom"); writer.WriteRequiredAttributeString("name", obj.Name); - writer.WriteRequiredAttributeString("size", obj.Size); + writer.WriteRequiredAttributeString("size", obj.Size?.ToString()); writer.WriteOptionalAttributeString("crc16", obj.CRC16); writer.WriteOptionalAttributeString("crc", obj.CRC); writer.WriteOptionalAttributeString("crc64", obj.CRC64); diff --git a/SabreTools.Serialization.Writers/M1.cs b/SabreTools.Serialization.Writers/M1.cs index 59599972..fe698b6d 100644 --- a/SabreTools.Serialization.Writers/M1.cs +++ b/SabreTools.Serialization.Writers/M1.cs @@ -729,7 +729,7 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("name", obj.Name); writer.WriteOptionalAttributeString("bios", obj.Bios); - writer.WriteRequiredAttributeString("size", obj.Size); + writer.WriteRequiredAttributeString("size", obj.Size?.ToString()); writer.WriteOptionalAttributeString("crc", obj.CRC); writer.WriteOptionalAttributeString("sha1", obj.SHA1); writer.WriteOptionalAttributeString("merge", obj.Merge); diff --git a/SabreTools.Serialization.Writers/Mess.cs b/SabreTools.Serialization.Writers/Mess.cs index c705d657..19f7d305 100644 --- a/SabreTools.Serialization.Writers/Mess.cs +++ b/SabreTools.Serialization.Writers/Mess.cs @@ -729,7 +729,7 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("name", obj.Name); writer.WriteOptionalAttributeString("bios", obj.Bios); - writer.WriteRequiredAttributeString("size", obj.Size); + writer.WriteRequiredAttributeString("size", obj.Size?.ToString()); writer.WriteOptionalAttributeString("crc", obj.CRC); writer.WriteOptionalAttributeString("sha1", obj.SHA1); writer.WriteOptionalAttributeString("merge", obj.Merge); diff --git a/SabreTools.Serialization.Writers/OfflineList.cs b/SabreTools.Serialization.Writers/OfflineList.cs index 0ff67661..7d0ed061 100644 --- a/SabreTools.Serialization.Writers/OfflineList.cs +++ b/SabreTools.Serialization.Writers/OfflineList.cs @@ -201,7 +201,7 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalElementString("releaseNumber", obj.ReleaseNumber); writer.WriteOptionalElementString("title", obj.Title); writer.WriteOptionalElementString("saveType", obj.SaveType); - writer.WriteOptionalElementString("romSize", obj.RomSize); + writer.WriteOptionalElementString("romSize", obj.RomSize?.ToString()); writer.WriteOptionalElementString("publisher", obj.Publisher); writer.WriteOptionalElementString("location", obj.Location); writer.WriteOptionalElementString("sourceRom", obj.SourceRom); diff --git a/SabreTools.Serialization.Writers/SeparatedValue.cs b/SabreTools.Serialization.Writers/SeparatedValue.cs index 2f7a90b2..7ff3ee7d 100644 --- a/SabreTools.Serialization.Writers/SeparatedValue.cs +++ b/SabreTools.Serialization.Writers/SeparatedValue.cs @@ -170,7 +170,7 @@ namespace SabreTools.Serialization.Writers row.Type, row.RomName, row.DiskName, - row.Size, + row.Size?.ToString(), row.CRC, row.MD5, row.SHA1, @@ -193,7 +193,7 @@ namespace SabreTools.Serialization.Writers row.Type, row.RomName, row.DiskName, - row.Size, + row.Size?.ToString(), row.CRC, row.MD5, row.SHA1, diff --git a/SabreTools.Serialization.Writers/SoftwareList.cs b/SabreTools.Serialization.Writers/SoftwareList.cs index 57ef70c0..7c4e3bc4 100644 --- a/SabreTools.Serialization.Writers/SoftwareList.cs +++ b/SabreTools.Serialization.Writers/SoftwareList.cs @@ -104,7 +104,7 @@ namespace SabreTools.Serialization.Writers writer.WriteStartElement("dataarea"); writer.WriteRequiredAttributeString("name", obj.Name); - writer.WriteRequiredAttributeString("size", obj.Size); + writer.WriteRequiredAttributeString("size", obj.Size?.ToString()); writer.WriteOptionalAttributeString("width", obj.Width); writer.WriteOptionalAttributeString("endianness", obj.Endianness?.AsStringValue()); @@ -286,7 +286,7 @@ namespace SabreTools.Serialization.Writers writer.WriteStartElement("rom"); writer.WriteRequiredAttributeString("name", obj.Name); - writer.WriteOptionalAttributeString("size", obj.Size); + writer.WriteOptionalAttributeString("size", obj.Size?.ToString()); writer.WriteOptionalAttributeString("length", obj.Length); writer.WriteOptionalAttributeString("crc", obj.CRC); writer.WriteOptionalAttributeString("sha1", obj.SHA1); From 08e0aa5b775bf0eda142ced5914d7ed3ee025034 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Fri, 3 Apr 2026 00:04:11 -0400 Subject: [PATCH 031/142] Convert refresh rates to properties, fix format --- SabreTools.Data.Extensions/MetadataExtensions.cs | 2 ++ SabreTools.Data.Models/ClrMamePro/Video.cs | 2 +- SabreTools.Data.Models/Listxml/Display.cs | 3 +-- SabreTools.Data.Models/Listxml/Video.cs | 2 +- SabreTools.Data.Models/Metadata/Display.cs | 5 ++--- SabreTools.Data.Models/Metadata/Video.cs | 6 +++--- .../DatFileTests.FromMetadata.cs | 8 ++++---- .../DatFileTests.ToMetadata.cs | 4 ++-- .../FormatsTests.cs | 2 +- .../DatFile.ToMetadata.cs | 2 +- SabreTools.Metadata.DatFiles/Formats/Listxml.cs | 4 ++-- SabreTools.Metadata.DatItems/Formats/Display.cs | 16 +++++++--------- SabreTools.Metadata.Filter/FilterObject.cs | 6 ++++++ SabreTools.Metadata/ModelBackedItemT.cs | 2 ++ .../ClrMameProTests.cs | 4 ++-- .../ListxmlTests.cs | 8 ++++---- .../M1Tests.cs | 8 ++++---- .../MessTests.cs | 8 ++++---- .../ClrMamePro.Deserializer.cs | 2 +- .../ClrMamePro.Serializer.cs | 2 +- .../Listxml.Deserializer.cs | 4 ++-- .../Listxml.Serializer.cs | 4 ++-- .../ClrMameProTests.cs | 4 ++-- .../ListxmlTests.cs | 8 ++++---- SabreTools.Serialization.Readers.Test/M1Tests.cs | 8 ++++---- .../MessTests.cs | 8 ++++---- SabreTools.Serialization.Readers/ClrMamePro.cs | 2 +- SabreTools.Serialization.Readers/Listxml.cs | 4 ++-- SabreTools.Serialization.Readers/M1.cs | 4 ++-- SabreTools.Serialization.Readers/Mess.cs | 4 ++-- SabreTools.Serialization.Writers/ClrMamePro.cs | 2 +- SabreTools.Serialization.Writers/Listxml.cs | 4 ++-- SabreTools.Serialization.Writers/M1.cs | 4 ++-- SabreTools.Serialization.Writers/Mess.cs | 4 ++-- 34 files changed, 83 insertions(+), 77 deletions(-) diff --git a/SabreTools.Data.Extensions/MetadataExtensions.cs b/SabreTools.Data.Extensions/MetadataExtensions.cs index cfdcb275..f299e141 100644 --- a/SabreTools.Data.Extensions/MetadataExtensions.cs +++ b/SabreTools.Data.Extensions/MetadataExtensions.cs @@ -234,6 +234,7 @@ namespace SabreTools.Data.Extensions { cloneDisplay.DisplayType = selfDisplay.DisplayType; cloneDisplay.FlipX = selfDisplay.FlipX; + cloneDisplay.Refresh = selfDisplay.Refresh; cloneDisplay.Tag = selfDisplay.Tag; } else if (self is Driver selfDriver && clone is Driver cloneDriver) @@ -377,6 +378,7 @@ namespace SabreTools.Data.Extensions } else if (self is Video selfVideo && clone is Video cloneVideo) { + cloneVideo.Refresh = selfVideo.Refresh; cloneVideo.Screen = selfVideo.Screen; } diff --git a/SabreTools.Data.Models/ClrMamePro/Video.cs b/SabreTools.Data.Models/ClrMamePro/Video.cs index 2fd3fe5a..1cfec8b7 100644 --- a/SabreTools.Data.Models/ClrMamePro/Video.cs +++ b/SabreTools.Data.Models/ClrMamePro/Video.cs @@ -27,6 +27,6 @@ namespace SabreTools.Data.Models.ClrMamePro public string? AspectY { get; set; } /// freq, Numeric? - public string? Freq { get; set; } + public double? Freq { get; set; } } } diff --git a/SabreTools.Data.Models/Listxml/Display.cs b/SabreTools.Data.Models/Listxml/Display.cs index 5f873dcd..92994746 100644 --- a/SabreTools.Data.Models/Listxml/Display.cs +++ b/SabreTools.Data.Models/Listxml/Display.cs @@ -31,10 +31,9 @@ namespace SabreTools.Data.Models.Listxml [XmlAttribute("height")] public string? Height { get; set; } - /// Numeric [Required] [XmlAttribute("refresh")] - public string? Refresh { get; set; } + public double? Refresh { get; set; } /// Numeric [XmlAttribute("pixclock")] diff --git a/SabreTools.Data.Models/Listxml/Video.cs b/SabreTools.Data.Models/Listxml/Video.cs index 8db62b97..015a1b90 100644 --- a/SabreTools.Data.Models/Listxml/Video.cs +++ b/SabreTools.Data.Models/Listxml/Video.cs @@ -35,6 +35,6 @@ namespace SabreTools.Data.Models.Listxml /// Numeric [XmlAttribute("refresh")] - public string? Refresh { get; set; } + public double? Refresh { get; set; } } } diff --git a/SabreTools.Data.Models/Metadata/Display.cs b/SabreTools.Data.Models/Metadata/Display.cs index c9e8d06e..58586060 100644 --- a/SabreTools.Data.Models/Metadata/Display.cs +++ b/SabreTools.Data.Models/Metadata/Display.cs @@ -14,6 +14,8 @@ namespace SabreTools.Data.Models.Metadata /// (yes|no) "no" public bool? FlipX { get; set; } + public double? Refresh { get; set; } + public string? Tag { get; set; } #endregion @@ -35,9 +37,6 @@ namespace SabreTools.Data.Models.Metadata /// long public const string PixClockKey = "pixclock"; - /// double - public const string RefreshKey = "refresh"; - /// (0|90|180|270) /// TODO: Convert to enum public const string RotateKey = "rotate"; diff --git a/SabreTools.Data.Models/Metadata/Video.cs b/SabreTools.Data.Models/Metadata/Video.cs index 39754186..421eb4c7 100644 --- a/SabreTools.Data.Models/Metadata/Video.cs +++ b/SabreTools.Data.Models/Metadata/Video.cs @@ -8,6 +8,9 @@ namespace SabreTools.Data.Models.Metadata { #region Properties + /// Originally "freq" + public double? Refresh { get; set; } + /// (raster|vector) public DisplayType? Screen { get; set; } @@ -27,9 +30,6 @@ namespace SabreTools.Data.Models.Metadata /// (vertical|horizontal) public const string OrientationKey = "orientation"; - /// double; Originally "freq" - public const string RefreshKey = "refresh"; - /// long; Originally "x" public const string WidthKey = "width"; diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs index 09812fb1..961c3976 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs @@ -582,7 +582,7 @@ namespace SabreTools.Metadata.DatFiles.Test [Data.Models.Metadata.Display.HeightKey] = 12345L, [Data.Models.Metadata.Display.HTotalKey] = 12345L, [Data.Models.Metadata.Display.PixClockKey] = 12345L, - [Data.Models.Metadata.Display.RefreshKey] = 12345L, + Refresh = 123.45, [Data.Models.Metadata.Display.RotateKey] = 90, Tag = "tag", DisplayType = Data.Models.Metadata.DisplayType.Vector, @@ -1025,7 +1025,7 @@ namespace SabreTools.Metadata.DatFiles.Test [Data.Models.Metadata.Video.AspectYKey] = 12345L, [Data.Models.Metadata.Video.HeightKey] = 12345L, [Data.Models.Metadata.Video.OrientationKey] = "vertical", - [Data.Models.Metadata.Video.RefreshKey] = 12345L, + Refresh = 123.45, Screen = Data.Models.Metadata.DisplayType.Vector, [Data.Models.Metadata.Video.WidthKey] = 12345L, }; @@ -1356,7 +1356,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Display.HeightKey)); Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Display.HTotalKey)); Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Display.PixClockKey)); - Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Display.RefreshKey)); + Assert.Equal(123.45, display.Refresh); Assert.Equal(90, display.ReadLong(Data.Models.Metadata.Display.RotateKey)); Assert.Equal("tag", display.Tag); Assert.Equal(Data.Models.Metadata.DisplayType.Vector, display.DisplayType); @@ -1665,7 +1665,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Video.AspectYKey)); Assert.Equal(Data.Models.Metadata.DisplayType.Vector, display.DisplayType); Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Display.HeightKey)); - Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Display.RefreshKey)); + Assert.Equal(123.45, display.Refresh); Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Display.WidthKey)); Assert.Equal(90, display.ReadLong(Data.Models.Metadata.Display.RotateKey)); } diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs index f286010a..8bf51cf1 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs @@ -873,7 +873,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal(12345, display.ReadLong(Data.Models.Metadata.Display.HeightKey)); Assert.Equal(12345, display.ReadLong(Data.Models.Metadata.Display.HTotalKey)); Assert.Equal(12345, display.ReadLong(Data.Models.Metadata.Display.PixClockKey)); - Assert.Equal(12345, display.ReadLong(Data.Models.Metadata.Display.RefreshKey)); + Assert.Equal(123.45, display.Refresh); Assert.Equal(90, display.ReadLong(Data.Models.Metadata.Display.RotateKey)); Assert.Equal("tag", display.Tag); Assert.Equal(Data.Models.Metadata.DisplayType.Vector, display.DisplayType); @@ -1258,7 +1258,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal(12345, video.ReadLong(Data.Models.Metadata.Video.AspectYKey)); Assert.Equal(12345, video.ReadLong(Data.Models.Metadata.Video.HeightKey)); Assert.Equal("vertical", video.ReadString(Data.Models.Metadata.Video.OrientationKey)); - Assert.Equal(12345, video.ReadLong(Data.Models.Metadata.Video.RefreshKey)); + Assert.Equal(123.45, video.Refresh); Assert.Equal(Data.Models.Metadata.DisplayType.Vector, video.Screen); Assert.Equal(12345, video.ReadLong(Data.Models.Metadata.Video.WidthKey)); } diff --git a/SabreTools.Metadata.DatFiles.Test/FormatsTests.cs b/SabreTools.Metadata.DatFiles.Test/FormatsTests.cs index 8ebb40fb..25af40d0 100644 --- a/SabreTools.Metadata.DatFiles.Test/FormatsTests.cs +++ b/SabreTools.Metadata.DatFiles.Test/FormatsTests.cs @@ -880,7 +880,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ nameof(Data.Models.Metadata.Display.DisplayType), - Data.Models.Metadata.Display.RefreshKey, + nameof(Data.Models.Metadata.Display.Refresh), ])); } diff --git a/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs b/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs index 59a833ec..97a9d6b4 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs @@ -936,7 +936,7 @@ namespace SabreTools.Metadata.DatFiles [Data.Models.Metadata.Video.AspectXKey] = displayItem.ReadLong(Data.Models.Metadata.Video.AspectXKey).ToString(), [Data.Models.Metadata.Video.AspectYKey] = displayItem.ReadLong(Data.Models.Metadata.Video.AspectYKey).ToString(), [Data.Models.Metadata.Video.HeightKey] = displayItem.ReadLong(Data.Models.Metadata.Display.HeightKey).ToString(), - [Data.Models.Metadata.Video.RefreshKey] = displayItem.ReadDouble(Data.Models.Metadata.Display.RefreshKey).ToString(), + Refresh = displayItem.Refresh, Screen = displayItem.DisplayType, [Data.Models.Metadata.Video.WidthKey] = displayItem.ReadLong(Data.Models.Metadata.Display.WidthKey).ToString() }; diff --git a/SabreTools.Metadata.DatFiles/Formats/Listxml.cs b/SabreTools.Metadata.DatFiles/Formats/Listxml.cs index 711ea24c..9f902b1a 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Listxml.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Listxml.cs @@ -310,8 +310,8 @@ namespace SabreTools.Metadata.DatFiles.Formats case Display display: if (display.DisplayType is null) missingFields.Add(nameof(Data.Models.Metadata.Display.DisplayType)); - if (display.ReadDouble(Data.Models.Metadata.Display.RefreshKey) is null) - missingFields.Add(Data.Models.Metadata.Display.RefreshKey); + if (display.Refresh is null) + missingFields.Add(nameof(Data.Models.Metadata.Display.Refresh)); break; case Sound sound: diff --git a/SabreTools.Metadata.DatItems/Formats/Display.cs b/SabreTools.Metadata.DatItems/Formats/Display.cs index e83ac235..fbdfe243 100644 --- a/SabreTools.Metadata.DatItems/Formats/Display.cs +++ b/SabreTools.Metadata.DatItems/Formats/Display.cs @@ -29,6 +29,12 @@ namespace SabreTools.Metadata.DatItems.Formats public override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Display; + public double? Refresh + { + get => (_internal as Data.Models.Metadata.Display)?.Refresh; + set => (_internal as Data.Models.Metadata.Display)?.Refresh = value; + } + public string? Tag { get => (_internal as Data.Models.Metadata.Display)?.Tag; @@ -64,10 +70,6 @@ namespace SabreTools.Metadata.DatItems.Formats if (pixClock is not null) Write(Data.Models.Metadata.Display.PixClockKey, pixClock.ToString()); - double? refresh = ReadDouble(Data.Models.Metadata.Display.RefreshKey); - if (refresh is not null) - Write(Data.Models.Metadata.Display.RefreshKey, refresh.ToString()); - long? rotate = ReadLong(Data.Models.Metadata.Display.RotateKey); if (rotate is not null) Write(Data.Models.Metadata.Display.RotateKey, rotate.ToString()); @@ -102,7 +104,7 @@ namespace SabreTools.Metadata.DatItems.Formats Write(Data.Models.Metadata.Video.AspectYKey, NumberHelper.ConvertToInt64(item.ReadString(Data.Models.Metadata.Video.AspectYKey))); DisplayType = item.Screen; Write(Data.Models.Metadata.Display.HeightKey, NumberHelper.ConvertToInt64(item.ReadString(Data.Models.Metadata.Video.HeightKey))); - Write(Data.Models.Metadata.Display.RefreshKey, NumberHelper.ConvertToDouble(item.ReadString(Data.Models.Metadata.Video.RefreshKey))); + Refresh = item.Refresh; Write(Data.Models.Metadata.Display.WidthKey, NumberHelper.ConvertToInt64(item.ReadString(Data.Models.Metadata.Video.WidthKey))); switch (item.ReadString(Data.Models.Metadata.Video.OrientationKey)) @@ -131,10 +133,6 @@ namespace SabreTools.Metadata.DatItems.Formats if (height is not null) Write(Data.Models.Metadata.Display.HeightKey, height.ToString()); - double? refresh = ReadDouble(Data.Models.Metadata.Video.RefreshKey); - if (refresh is not null) - Write(Data.Models.Metadata.Display.RefreshKey, refresh.ToString()); - long? width = ReadLong(Data.Models.Metadata.Video.WidthKey); if (width is not null) Write(Data.Models.Metadata.Display.WidthKey, width.ToString()); diff --git a/SabreTools.Metadata.Filter/FilterObject.cs b/SabreTools.Metadata.Filter/FilterObject.cs index 7e6f844d..4119d9fa 100644 --- a/SabreTools.Metadata.Filter/FilterObject.cs +++ b/SabreTools.Metadata.Filter/FilterObject.cs @@ -476,6 +476,9 @@ namespace SabreTools.Metadata.Filter case Display item when fieldName == "flipx": checkValue = item.FlipX.FromYesNo(); return true; + case Display item when fieldName == "refresh": + checkValue = item.Refresh?.ToString(); + return true; case Display item when fieldName == "type": checkValue = item.DisplayType?.AsStringValue(); return true; @@ -749,6 +752,9 @@ namespace SabreTools.Metadata.Filter checkValue = item.Channels?.ToString(); return true; + case Video item when fieldName == "refresh": + checkValue = item.Refresh?.ToString(); + return true; case Video item when fieldName == "screen": checkValue = item.Screen?.AsStringValue(); return true; diff --git a/SabreTools.Metadata/ModelBackedItemT.cs b/SabreTools.Metadata/ModelBackedItemT.cs index cd7fd26f..fb3ecef3 100644 --- a/SabreTools.Metadata/ModelBackedItemT.cs +++ b/SabreTools.Metadata/ModelBackedItemT.cs @@ -40,6 +40,7 @@ namespace SabreTools.Metadata /// /// Field to retrieve /// Value from the field, if possible + /// TODO: Determine if this can be removed public bool? ReadBool(string fieldName) => _internal.ReadBool(fieldName); @@ -48,6 +49,7 @@ namespace SabreTools.Metadata /// /// Field to retrieve /// Value from the field, if possible + /// TODO: Determine if this can be removed public double? ReadDouble(string fieldName) => _internal.ReadDouble(fieldName); diff --git a/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs b/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs index 5077fd63..67cdb08c 100644 --- a/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs @@ -170,7 +170,7 @@ namespace SabreTools.Serialization.CrossModel.Test Y = "XXXXXX", AspectX = "XXXXXX", AspectY = "XXXXXX", - Freq = "XXXXXX", + Freq = 123.45, }; var sound = new Data.Models.ClrMamePro.Sound @@ -457,7 +457,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", video.Y); Assert.Equal("XXXXXX", video.AspectX); Assert.Equal("XXXXXX", video.AspectY); - Assert.Equal("XXXXXX", video.Freq); + Assert.Equal(123.45, video.Freq); } /// diff --git a/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs b/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs index fbc8d6c6..80b6682e 100644 --- a/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs @@ -126,7 +126,7 @@ namespace SabreTools.Serialization.CrossModel.Test FlipX = true, Width = "XXXXXX", Height = "XXXXXX", - Refresh = "XXXXXX", + Refresh = 123.45, PixClock = "XXXXXX", HTotal = "XXXXXX", HBEnd = "XXXXXX", @@ -144,7 +144,7 @@ namespace SabreTools.Serialization.CrossModel.Test Height = "XXXXXX", AspectX = "XXXXXX", AspectY = "XXXXXX", - Refresh = "XXXXXX", + Refresh = 123.45, }; var sound = new Data.Models.Listxml.Sound @@ -558,7 +558,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal(true, display.FlipX); Assert.Equal("XXXXXX", display.Width); Assert.Equal("XXXXXX", display.Height); - Assert.Equal("XXXXXX", display.Refresh); + Assert.Equal(123.45, display.Refresh); Assert.Equal("XXXXXX", display.PixClock); Assert.Equal("XXXXXX", display.HTotal); Assert.Equal("XXXXXX", display.HBEnd); @@ -580,7 +580,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", video.Height); Assert.Equal("XXXXXX", video.AspectX); Assert.Equal("XXXXXX", video.AspectY); - Assert.Equal("XXXXXX", video.Refresh); + Assert.Equal(123.45, video.Refresh); } /// diff --git a/SabreTools.Serialization.CrossModel.Test/M1Tests.cs b/SabreTools.Serialization.CrossModel.Test/M1Tests.cs index 57eb1005..d4a5ec0d 100644 --- a/SabreTools.Serialization.CrossModel.Test/M1Tests.cs +++ b/SabreTools.Serialization.CrossModel.Test/M1Tests.cs @@ -122,7 +122,7 @@ namespace SabreTools.Serialization.CrossModel.Test FlipX = true, Width = "XXXXXX", Height = "XXXXXX", - Refresh = "XXXXXX", + Refresh = 123.45, PixClock = "XXXXXX", HTotal = "XXXXXX", HBEnd = "XXXXXX", @@ -140,7 +140,7 @@ namespace SabreTools.Serialization.CrossModel.Test Height = "XXXXXX", AspectX = "XXXXXX", AspectY = "XXXXXX", - Refresh = "XXXXXX", + Refresh = 123.45, }; var sound = new Data.Models.Listxml.Sound @@ -552,7 +552,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal(true, display.FlipX); Assert.Equal("XXXXXX", display.Width); Assert.Equal("XXXXXX", display.Height); - Assert.Equal("XXXXXX", display.Refresh); + Assert.Equal(123.45, display.Refresh); Assert.Equal("XXXXXX", display.PixClock); Assert.Equal("XXXXXX", display.HTotal); Assert.Equal("XXXXXX", display.HBEnd); @@ -574,7 +574,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", video.Height); Assert.Equal("XXXXXX", video.AspectX); Assert.Equal("XXXXXX", video.AspectY); - Assert.Equal("XXXXXX", video.Refresh); + Assert.Equal(123.45, video.Refresh); } /// diff --git a/SabreTools.Serialization.CrossModel.Test/MessTests.cs b/SabreTools.Serialization.CrossModel.Test/MessTests.cs index d1fedb5e..0bc11c0e 100644 --- a/SabreTools.Serialization.CrossModel.Test/MessTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/MessTests.cs @@ -122,7 +122,7 @@ namespace SabreTools.Serialization.CrossModel.Test FlipX = true, Width = "XXXXXX", Height = "XXXXXX", - Refresh = "XXXXXX", + Refresh = 123.45, PixClock = "XXXXXX", HTotal = "XXXXXX", HBEnd = "XXXXXX", @@ -140,7 +140,7 @@ namespace SabreTools.Serialization.CrossModel.Test Height = "XXXXXX", AspectX = "XXXXXX", AspectY = "XXXXXX", - Refresh = "XXXXXX", + Refresh = 123.45, }; var sound = new Data.Models.Listxml.Sound @@ -552,7 +552,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal(true, display.FlipX); Assert.Equal("XXXXXX", display.Width); Assert.Equal("XXXXXX", display.Height); - Assert.Equal("XXXXXX", display.Refresh); + Assert.Equal(123.45, display.Refresh); Assert.Equal("XXXXXX", display.PixClock); Assert.Equal("XXXXXX", display.HTotal); Assert.Equal("XXXXXX", display.HBEnd); @@ -574,7 +574,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", video.Height); Assert.Equal("XXXXXX", video.AspectX); Assert.Equal("XXXXXX", video.AspectY); - Assert.Equal("XXXXXX", video.Refresh); + Assert.Equal(123.45, video.Refresh); } /// diff --git a/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs b/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs index a18265e7..27aa5c67 100644 --- a/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs @@ -346,7 +346,7 @@ namespace SabreTools.Serialization.CrossModel Y = item.ReadString(Data.Models.Metadata.Video.HeightKey), AspectX = item.ReadString(Data.Models.Metadata.Video.AspectXKey), AspectY = item.ReadString(Data.Models.Metadata.Video.AspectYKey), - Freq = item.ReadString(Data.Models.Metadata.Video.RefreshKey), + Freq = item.Refresh, }; return video; } diff --git a/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs b/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs index f333c50f..66c50528 100644 --- a/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs @@ -359,7 +359,7 @@ namespace SabreTools.Serialization.CrossModel [Data.Models.Metadata.Video.HeightKey] = item.Y, [Data.Models.Metadata.Video.AspectXKey] = item.AspectX, [Data.Models.Metadata.Video.AspectYKey] = item.AspectY, - [Data.Models.Metadata.Video.RefreshKey] = item.Freq, + Refresh = item.Freq, }; return video; } diff --git a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs index 40e0bc67..bc686163 100644 --- a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs @@ -429,7 +429,7 @@ namespace SabreTools.Serialization.CrossModel FlipX = item.FlipX, Width = item.ReadString(Data.Models.Metadata.Display.WidthKey), Height = item.ReadString(Data.Models.Metadata.Display.HeightKey), - Refresh = item.ReadString(Data.Models.Metadata.Display.RefreshKey), + Refresh = item.Refresh, PixClock = item.ReadString(Data.Models.Metadata.Display.PixClockKey), HTotal = item.ReadString(Data.Models.Metadata.Display.HTotalKey), HBEnd = item.ReadString(Data.Models.Metadata.Display.HBEndKey), @@ -664,7 +664,7 @@ namespace SabreTools.Serialization.CrossModel Height = item.ReadString(Data.Models.Metadata.Video.HeightKey), AspectX = item.ReadString(Data.Models.Metadata.Video.AspectXKey), AspectY = item.ReadString(Data.Models.Metadata.Video.AspectYKey), - Refresh = item.ReadString(Data.Models.Metadata.Video.RefreshKey), + Refresh = item.Refresh, }; return video; } diff --git a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs index 2d05c97e..506ad714 100644 --- a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs @@ -467,7 +467,7 @@ namespace SabreTools.Serialization.CrossModel FlipX = item.FlipX, [Data.Models.Metadata.Display.WidthKey] = item.Width, [Data.Models.Metadata.Display.HeightKey] = item.Height, - [Data.Models.Metadata.Display.RefreshKey] = item.Refresh, + Refresh = item.Refresh, [Data.Models.Metadata.Display.PixClockKey] = item.PixClock, [Data.Models.Metadata.Display.HTotalKey] = item.HTotal, [Data.Models.Metadata.Display.HBEndKey] = item.HBEnd, @@ -705,7 +705,7 @@ namespace SabreTools.Serialization.CrossModel [Data.Models.Metadata.Video.HeightKey] = item.Height, [Data.Models.Metadata.Video.AspectXKey] = item.AspectX, [Data.Models.Metadata.Video.AspectYKey] = item.AspectY, - [Data.Models.Metadata.Video.RefreshKey] = item.Refresh, + Refresh = item.Refresh, }; return video; } diff --git a/SabreTools.Serialization.Readers.Test/ClrMameProTests.cs b/SabreTools.Serialization.Readers.Test/ClrMameProTests.cs index d39a222c..3fab116b 100644 --- a/SabreTools.Serialization.Readers.Test/ClrMameProTests.cs +++ b/SabreTools.Serialization.Readers.Test/ClrMameProTests.cs @@ -287,7 +287,7 @@ namespace SabreTools.Serialization.Readers.Test Y = "XXXXXX", AspectX = "XXXXXX", AspectY = "XXXXXX", - Freq = "XXXXXX", + Freq = 123.45, }; var sound = new Data.Models.ClrMamePro.Sound @@ -574,7 +574,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", video.Y); Assert.Equal("XXXXXX", video.AspectX); Assert.Equal("XXXXXX", video.AspectY); - Assert.Equal("XXXXXX", video.Freq); + Assert.Equal(123.45, video.Freq); } /// diff --git a/SabreTools.Serialization.Readers.Test/ListxmlTests.cs b/SabreTools.Serialization.Readers.Test/ListxmlTests.cs index a540749f..e061a3b8 100644 --- a/SabreTools.Serialization.Readers.Test/ListxmlTests.cs +++ b/SabreTools.Serialization.Readers.Test/ListxmlTests.cs @@ -193,7 +193,7 @@ namespace SabreTools.Serialization.Readers.Test FlipX = true, Width = "XXXXXX", Height = "XXXXXX", - Refresh = "XXXXXX", + Refresh = 123.45, PixClock = "XXXXXX", HTotal = "XXXXXX", HBEnd = "XXXXXX", @@ -211,7 +211,7 @@ namespace SabreTools.Serialization.Readers.Test Height = "XXXXXX", AspectX = "XXXXXX", AspectY = "XXXXXX", - Refresh = "XXXXXX", + Refresh = 123.45, }; var sound = new Data.Models.Listxml.Sound @@ -625,7 +625,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal(true, display.FlipX); Assert.Equal("XXXXXX", display.Width); Assert.Equal("XXXXXX", display.Height); - Assert.Equal("XXXXXX", display.Refresh); + Assert.Equal(123.45, display.Refresh); Assert.Equal("XXXXXX", display.PixClock); Assert.Equal("XXXXXX", display.HTotal); Assert.Equal("XXXXXX", display.HBEnd); @@ -647,7 +647,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", video.Height); Assert.Equal("XXXXXX", video.AspectX); Assert.Equal("XXXXXX", video.AspectY); - Assert.Equal("XXXXXX", video.Refresh); + Assert.Equal(123.45, video.Refresh); } /// diff --git a/SabreTools.Serialization.Readers.Test/M1Tests.cs b/SabreTools.Serialization.Readers.Test/M1Tests.cs index b4bc6e9c..05e64fba 100644 --- a/SabreTools.Serialization.Readers.Test/M1Tests.cs +++ b/SabreTools.Serialization.Readers.Test/M1Tests.cs @@ -189,7 +189,7 @@ namespace SabreTools.Serialization.Readers.Test FlipX = true, Width = "XXXXXX", Height = "XXXXXX", - Refresh = "XXXXXX", + Refresh = 123.45, PixClock = "XXXXXX", HTotal = "XXXXXX", HBEnd = "XXXXXX", @@ -207,7 +207,7 @@ namespace SabreTools.Serialization.Readers.Test Height = "XXXXXX", AspectX = "XXXXXX", AspectY = "XXXXXX", - Refresh = "XXXXXX", + Refresh = 123.45, }; var sound = new Data.Models.Listxml.Sound @@ -619,7 +619,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal(true, display.FlipX); Assert.Equal("XXXXXX", display.Width); Assert.Equal("XXXXXX", display.Height); - Assert.Equal("XXXXXX", display.Refresh); + Assert.Equal(123.45, display.Refresh); Assert.Equal("XXXXXX", display.PixClock); Assert.Equal("XXXXXX", display.HTotal); Assert.Equal("XXXXXX", display.HBEnd); @@ -641,7 +641,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", video.Height); Assert.Equal("XXXXXX", video.AspectX); Assert.Equal("XXXXXX", video.AspectY); - Assert.Equal("XXXXXX", video.Refresh); + Assert.Equal(123.45, video.Refresh); } /// diff --git a/SabreTools.Serialization.Readers.Test/MessTests.cs b/SabreTools.Serialization.Readers.Test/MessTests.cs index 1d3f4744..c325136e 100644 --- a/SabreTools.Serialization.Readers.Test/MessTests.cs +++ b/SabreTools.Serialization.Readers.Test/MessTests.cs @@ -189,7 +189,7 @@ namespace SabreTools.Serialization.Readers.Test FlipX = true, Width = "XXXXXX", Height = "XXXXXX", - Refresh = "XXXXXX", + Refresh = 123.45, PixClock = "XXXXXX", HTotal = "XXXXXX", HBEnd = "XXXXXX", @@ -207,7 +207,7 @@ namespace SabreTools.Serialization.Readers.Test Height = "XXXXXX", AspectX = "XXXXXX", AspectY = "XXXXXX", - Refresh = "XXXXXX", + Refresh = 123.45, }; var sound = new Data.Models.Listxml.Sound @@ -619,7 +619,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal(true, display.FlipX); Assert.Equal("XXXXXX", display.Width); Assert.Equal("XXXXXX", display.Height); - Assert.Equal("XXXXXX", display.Refresh); + Assert.Equal(123.45, display.Refresh); Assert.Equal("XXXXXX", display.PixClock); Assert.Equal("XXXXXX", display.HTotal); Assert.Equal("XXXXXX", display.HBEnd); @@ -641,7 +641,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", video.Height); Assert.Equal("XXXXXX", video.AspectX); Assert.Equal("XXXXXX", video.AspectY); - Assert.Equal("XXXXXX", video.Refresh); + Assert.Equal(123.45, video.Refresh); } /// diff --git a/SabreTools.Serialization.Readers/ClrMamePro.cs b/SabreTools.Serialization.Readers/ClrMamePro.cs index 68ebc68b..f2454b1d 100644 --- a/SabreTools.Serialization.Readers/ClrMamePro.cs +++ b/SabreTools.Serialization.Readers/ClrMamePro.cs @@ -821,7 +821,7 @@ namespace SabreTools.Serialization.Readers video.AspectY = kvp.Value; break; case "freq": - video.Freq = kvp.Value; + video.Freq = NumberHelper.ConvertToDouble(kvp.Value); break; default: // TODO: Log invalid values diff --git a/SabreTools.Serialization.Readers/Listxml.cs b/SabreTools.Serialization.Readers/Listxml.cs index b2fa98bb..ff1c7632 100644 --- a/SabreTools.Serialization.Readers/Listxml.cs +++ b/SabreTools.Serialization.Readers/Listxml.cs @@ -580,7 +580,7 @@ namespace SabreTools.Serialization.Readers obj.FlipX = reader.GetAttribute("flipx").AsYesNo(); obj.Width = reader.GetAttribute("width"); obj.Height = reader.GetAttribute("height"); - obj.Refresh = reader.GetAttribute("refresh"); + obj.Refresh = NumberHelper.ConvertToDouble(reader.GetAttribute("refresh")); obj.PixClock = reader.GetAttribute("pixclock"); obj.HTotal = reader.GetAttribute("htotal"); obj.HBEnd = reader.GetAttribute("hbend"); @@ -1181,7 +1181,7 @@ namespace SabreTools.Serialization.Readers obj.Height = reader.GetAttribute("height"); obj.AspectX = reader.GetAttribute("aspectx"); obj.AspectY = reader.GetAttribute("aspecty"); - obj.Refresh = reader.GetAttribute("refresh"); + obj.Refresh = NumberHelper.ConvertToDouble(reader.GetAttribute("refresh")); return obj; } diff --git a/SabreTools.Serialization.Readers/M1.cs b/SabreTools.Serialization.Readers/M1.cs index 308a17b8..fff3aadd 100644 --- a/SabreTools.Serialization.Readers/M1.cs +++ b/SabreTools.Serialization.Readers/M1.cs @@ -578,7 +578,7 @@ namespace SabreTools.Serialization.Readers obj.FlipX = reader.GetAttribute("flipx").AsYesNo(); obj.Width = reader.GetAttribute("width"); obj.Height = reader.GetAttribute("height"); - obj.Refresh = reader.GetAttribute("refresh"); + obj.Refresh = NumberHelper.ConvertToDouble(reader.GetAttribute("refresh")); obj.PixClock = reader.GetAttribute("pixclock"); obj.HTotal = reader.GetAttribute("htotal"); obj.HBEnd = reader.GetAttribute("hbend"); @@ -1179,7 +1179,7 @@ namespace SabreTools.Serialization.Readers obj.Height = reader.GetAttribute("height"); obj.AspectX = reader.GetAttribute("aspectx"); obj.AspectY = reader.GetAttribute("aspecty"); - obj.Refresh = reader.GetAttribute("refresh"); + obj.Refresh = NumberHelper.ConvertToDouble(reader.GetAttribute("refresh")); return obj; } diff --git a/SabreTools.Serialization.Readers/Mess.cs b/SabreTools.Serialization.Readers/Mess.cs index 5b93bf45..ef0719a1 100644 --- a/SabreTools.Serialization.Readers/Mess.cs +++ b/SabreTools.Serialization.Readers/Mess.cs @@ -578,7 +578,7 @@ namespace SabreTools.Serialization.Readers obj.FlipX = reader.GetAttribute("flipx").AsYesNo(); obj.Width = reader.GetAttribute("width"); obj.Height = reader.GetAttribute("height"); - obj.Refresh = reader.GetAttribute("refresh"); + obj.Refresh = NumberHelper.ConvertToDouble(reader.GetAttribute("refresh")); obj.PixClock = reader.GetAttribute("pixclock"); obj.HTotal = reader.GetAttribute("htotal"); obj.HBEnd = reader.GetAttribute("hbend"); @@ -1179,7 +1179,7 @@ namespace SabreTools.Serialization.Readers obj.Height = reader.GetAttribute("height"); obj.AspectX = reader.GetAttribute("aspectx"); obj.AspectY = reader.GetAttribute("aspecty"); - obj.Refresh = reader.GetAttribute("refresh"); + obj.Refresh = NumberHelper.ConvertToDouble(reader.GetAttribute("refresh")); return obj; } diff --git a/SabreTools.Serialization.Writers/ClrMamePro.cs b/SabreTools.Serialization.Writers/ClrMamePro.cs index 0a6ee433..1a066d65 100644 --- a/SabreTools.Serialization.Writers/ClrMamePro.cs +++ b/SabreTools.Serialization.Writers/ClrMamePro.cs @@ -418,7 +418,7 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalAttributeString("y", video.Y); writer.WriteOptionalAttributeString("aspectx", video.AspectX); writer.WriteOptionalAttributeString("aspecty", video.AspectY); - writer.WriteOptionalAttributeString("freq", video.Freq); + writer.WriteOptionalAttributeString("freq", video.Freq?.ToString("0.000000")); writer.WriteEndElement(); // video } } diff --git a/SabreTools.Serialization.Writers/Listxml.cs b/SabreTools.Serialization.Writers/Listxml.cs index d32b5bb2..cd9e4498 100644 --- a/SabreTools.Serialization.Writers/Listxml.cs +++ b/SabreTools.Serialization.Writers/Listxml.cs @@ -395,7 +395,7 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalAttributeString("flipx", obj.FlipX.FromYesNo()); writer.WriteOptionalAttributeString("width", obj.Width); writer.WriteOptionalAttributeString("height", obj.Height); - writer.WriteRequiredAttributeString("refresh", obj.Refresh); + writer.WriteRequiredAttributeString("refresh", obj.Refresh?.ToString("0.000000")); writer.WriteOptionalAttributeString("pixclock", obj.PixClock); writer.WriteOptionalAttributeString("htotal", obj.HTotal); writer.WriteOptionalAttributeString("hbend", obj.HBEnd); @@ -843,7 +843,7 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalAttributeString("height", obj.Height); writer.WriteOptionalAttributeString("aspectx", obj.AspectX); writer.WriteOptionalAttributeString("aspecty", obj.AspectY); - writer.WriteRequiredAttributeString("refresh", obj.Refresh); + writer.WriteRequiredAttributeString("refresh", obj.Refresh?.ToString("0.000000")); writer.WriteEndElement(); } diff --git a/SabreTools.Serialization.Writers/M1.cs b/SabreTools.Serialization.Writers/M1.cs index fe698b6d..cd05a5a8 100644 --- a/SabreTools.Serialization.Writers/M1.cs +++ b/SabreTools.Serialization.Writers/M1.cs @@ -393,7 +393,7 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalAttributeString("flipx", obj.FlipX.FromYesNo()); writer.WriteOptionalAttributeString("width", obj.Width); writer.WriteOptionalAttributeString("height", obj.Height); - writer.WriteRequiredAttributeString("refresh", obj.Refresh); + writer.WriteRequiredAttributeString("refresh", obj.Refresh?.ToString("0.000000")); writer.WriteOptionalAttributeString("pixclock", obj.PixClock); writer.WriteOptionalAttributeString("htotal", obj.HTotal); writer.WriteOptionalAttributeString("hbend", obj.HBEnd); @@ -841,7 +841,7 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalAttributeString("height", obj.Height); writer.WriteOptionalAttributeString("aspectx", obj.AspectX); writer.WriteOptionalAttributeString("aspecty", obj.AspectY); - writer.WriteRequiredAttributeString("refresh", obj.Refresh); + writer.WriteRequiredAttributeString("refresh", obj.Refresh?.ToString("0.000000")); writer.WriteEndElement(); } diff --git a/SabreTools.Serialization.Writers/Mess.cs b/SabreTools.Serialization.Writers/Mess.cs index 19f7d305..ff2e2190 100644 --- a/SabreTools.Serialization.Writers/Mess.cs +++ b/SabreTools.Serialization.Writers/Mess.cs @@ -393,7 +393,7 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalAttributeString("flipx", obj.FlipX.FromYesNo()); writer.WriteOptionalAttributeString("width", obj.Width); writer.WriteOptionalAttributeString("height", obj.Height); - writer.WriteRequiredAttributeString("refresh", obj.Refresh); + writer.WriteRequiredAttributeString("refresh", obj.Refresh?.ToString("0.000000")); writer.WriteOptionalAttributeString("pixclock", obj.PixClock); writer.WriteOptionalAttributeString("htotal", obj.HTotal); writer.WriteOptionalAttributeString("hbend", obj.HBEnd); @@ -841,7 +841,7 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalAttributeString("height", obj.Height); writer.WriteOptionalAttributeString("aspectx", obj.AspectX); writer.WriteOptionalAttributeString("aspecty", obj.AspectY); - writer.WriteRequiredAttributeString("refresh", obj.Refresh); + writer.WriteRequiredAttributeString("refresh", obj.Refresh?.ToString("0.000000")); writer.WriteEndElement(); } From 3f823129431bd326a11f85ee7a056e8c8597da2d Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Fri, 3 Apr 2026 09:46:10 -0400 Subject: [PATCH 032/142] Convert Control fully over to properties --- .../MetadataExtensions.cs | 10 ++ SabreTools.Data.Models/Listxml/Control.cs | 24 ++--- SabreTools.Data.Models/Metadata/Control.cs | 46 ++++------ .../DatFileTests.FromMetadata.cs | 40 ++++---- .../DatFileTests.ToMetadata.cs | 20 ++-- .../Formats/Control.cs | 92 ++++++++++++------- SabreTools.Metadata.Filter/FilterObject.cs | 30 ++++++ .../ListxmlTests.cs | 40 ++++---- .../M1Tests.cs | 40 ++++---- .../MessTests.cs | 40 ++++---- .../Listxml.Deserializer.cs | 20 ++-- .../Listxml.Serializer.cs | 20 ++-- .../ListxmlTests.cs | 40 ++++---- .../M1Tests.cs | 40 ++++---- .../MessTests.cs | 40 ++++---- SabreTools.Serialization.Readers/Listxml.cs | 14 +-- SabreTools.Serialization.Readers/M1.cs | 14 +-- SabreTools.Serialization.Readers/Mess.cs | 14 +-- SabreTools.Serialization.Writers/Listxml.cs | 14 +-- SabreTools.Serialization.Writers/M1.cs | 14 +-- SabreTools.Serialization.Writers/Mess.cs | 14 +-- 21 files changed, 336 insertions(+), 290 deletions(-) diff --git a/SabreTools.Data.Extensions/MetadataExtensions.cs b/SabreTools.Data.Extensions/MetadataExtensions.cs index f299e141..8ece4688 100644 --- a/SabreTools.Data.Extensions/MetadataExtensions.cs +++ b/SabreTools.Data.Extensions/MetadataExtensions.cs @@ -193,8 +193,18 @@ namespace SabreTools.Data.Extensions } else if (self is Control selfControl && clone is Control cloneControl) { + cloneControl.Buttons = selfControl.Buttons; cloneControl.ControlType = selfControl.ControlType; + cloneControl.KeyDelta = selfControl.KeyDelta; + cloneControl.Maximum = selfControl.Maximum; + cloneControl.Minimum = selfControl.Minimum; + cloneControl.Player = selfControl.Player; + cloneControl.ReqButtons = selfControl.ReqButtons; cloneControl.Reverse = selfControl.Reverse; + cloneControl.Sensitivity = selfControl.Sensitivity; + cloneControl.Ways = selfControl.Ways; + cloneControl.Ways2 = selfControl.Ways2; + cloneControl.Ways3 = selfControl.Ways3; } else if (self is DataArea selfDataArea && clone is DataArea cloneDataArea) { diff --git a/SabreTools.Data.Models/Listxml/Control.cs b/SabreTools.Data.Models/Listxml/Control.cs index 24d2c29e..b1be6a26 100644 --- a/SabreTools.Data.Models/Listxml/Control.cs +++ b/SabreTools.Data.Models/Listxml/Control.cs @@ -12,47 +12,37 @@ namespace SabreTools.Data.Models.Listxml [XmlAttribute("type")] public ControlType? Type { get; set; } - /// Numeric [XmlAttribute("player")] - public string? Player { get; set; } + public long? Player { get; set; } - /// Numeric [XmlAttribute("buttons")] - public string? Buttons { get; set; } + public long? Buttons { get; set; } - /// Numeric [XmlAttribute("reqbuttons")] - public string? ReqButtons { get; set; } + public long? ReqButtons { get; set; } - /// Numeric [XmlAttribute("minimum")] - public string? Minimum { get; set; } + public long? Minimum { get; set; } - /// Numeric [XmlAttribute("maximum")] - public string? Maximum { get; set; } + public long? Maximum { get; set; } - /// Numeric [XmlAttribute("sensitivity")] - public string? Sensitivity { get; set; } + public long? Sensitivity { get; set; } - /// Numeric [XmlAttribute("keydelta")] - public string? KeyDelta { get; set; } + public long? KeyDelta { get; set; } /// (yes|no) "no" [XmlAttribute("reverse")] public bool? Reverse { get; set; } - /// Numeric? [XmlAttribute("ways")] public string? Ways { get; set; } - /// Numeric? [XmlAttribute("ways2")] public string? Ways2 { get; set; } - /// Numeric? [XmlAttribute("ways3")] public string? Ways3 { get; set; } } diff --git a/SabreTools.Data.Models/Metadata/Control.cs b/SabreTools.Data.Models/Metadata/Control.cs index 98c0fd58..1640899a 100644 --- a/SabreTools.Data.Models/Metadata/Control.cs +++ b/SabreTools.Data.Models/Metadata/Control.cs @@ -8,45 +8,31 @@ namespace SabreTools.Data.Models.Metadata { #region Properties + public long? Buttons { get; set; } + /// (joy|stick|paddle|pedal|lightgun|positional|dial|trackball|mouse|only_buttons|keypad|keyboard|mahjong|hanafuda|gambling) public ControlType? ControlType { get; set; } + public long? KeyDelta { get; set; } + + public long? Maximum { get; set; } + + public long? Minimum { get; set; } + + public long? Player { get; set; } + + public long? ReqButtons { get; set; } + /// (yes|no) "no" public bool? Reverse { get; set; } - #endregion + public long? Sensitivity { get; set; } - #region Keys + public string? Ways { get; set; } - /// long - public const string ButtonsKey = "buttons"; + public string? Ways2 { get; set; } - /// long - public const string KeyDeltaKey = "keydelta"; - - /// long - public const string MaximumKey = "maximum"; - - /// long - public const string MinimumKey = "minimum"; - - /// long - public const string PlayerKey = "player"; - - /// long - public const string ReqButtonsKey = "reqbuttons"; - - /// long - public const string SensitivityKey = "sensitivity"; - - /// string, possibly long - public const string WaysKey = "ways"; - - /// string, possibly long - public const string Ways2Key = "ways2"; - - /// string, possibly long - public const string Ways3Key = "ways3"; + public string? Ways3 { get; set; } #endregion diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs index 961c3976..df57d032 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs @@ -462,18 +462,18 @@ namespace SabreTools.Metadata.DatFiles.Test { return new Data.Models.Metadata.Control { - [Data.Models.Metadata.Control.ButtonsKey] = 12345L, - [Data.Models.Metadata.Control.KeyDeltaKey] = 12345L, - [Data.Models.Metadata.Control.MaximumKey] = 12345L, - [Data.Models.Metadata.Control.MinimumKey] = 12345L, - [Data.Models.Metadata.Control.PlayerKey] = 12345L, - [Data.Models.Metadata.Control.ReqButtonsKey] = 12345L, + Buttons = 12345L, + KeyDelta = 12345L, + Maximum = 12345L, + Minimum = 12345L, + Player = 12345L, + ReqButtons = 12345L, Reverse = true, - [Data.Models.Metadata.Control.SensitivityKey] = 12345L, + Sensitivity = 12345L, ControlType = Data.Models.Metadata.ControlType.Lightgun, - [Data.Models.Metadata.Control.WaysKey] = "ways", - [Data.Models.Metadata.Control.Ways2Key] = "ways2", - [Data.Models.Metadata.Control.Ways3Key] = "ways3", + Ways = "ways", + Ways2 = "ways2", + Ways3 = "ways3", }; } @@ -1234,18 +1234,18 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateControl(Control? control) { Assert.NotNull(control); - Assert.Equal(12345L, control.ReadLong(Data.Models.Metadata.Control.ButtonsKey)); - Assert.Equal(12345L, control.ReadLong(Data.Models.Metadata.Control.KeyDeltaKey)); - Assert.Equal(12345L, control.ReadLong(Data.Models.Metadata.Control.MaximumKey)); - Assert.Equal(12345L, control.ReadLong(Data.Models.Metadata.Control.MinimumKey)); - Assert.Equal(12345L, control.ReadLong(Data.Models.Metadata.Control.PlayerKey)); - Assert.Equal(12345L, control.ReadLong(Data.Models.Metadata.Control.ReqButtonsKey)); + Assert.Equal(12345L, control.Buttons); + Assert.Equal(12345L, control.KeyDelta); + Assert.Equal(12345L, control.Maximum); + Assert.Equal(12345L, control.Minimum); + Assert.Equal(12345L, control.Player); + Assert.Equal(12345L, control.ReqButtons); Assert.True(control.Reverse); - Assert.Equal(12345L, control.ReadLong(Data.Models.Metadata.Control.SensitivityKey)); + Assert.Equal(12345L, control.Sensitivity); Assert.Equal(Data.Models.Metadata.ControlType.Lightgun, control.ControlType); - Assert.Equal("ways", control.ReadString(Data.Models.Metadata.Control.WaysKey)); - Assert.Equal("ways2", control.ReadString(Data.Models.Metadata.Control.Ways2Key)); - Assert.Equal("ways3", control.ReadString(Data.Models.Metadata.Control.Ways3Key)); + Assert.Equal("ways", control.Ways); + Assert.Equal("ways2", control.Ways2); + Assert.Equal("ways3", control.Ways3); } private static void ValidateDataArea(DataArea? dataArea) diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs index 8bf51cf1..6c3f053f 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs @@ -741,18 +741,18 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateMetadataControl(Data.Models.Metadata.Control? control) { Assert.NotNull(control); - Assert.Equal(12345, control.ReadLong(Data.Models.Metadata.Control.ButtonsKey)); - Assert.Equal(12345, control.ReadLong(Data.Models.Metadata.Control.KeyDeltaKey)); - Assert.Equal(12345, control.ReadLong(Data.Models.Metadata.Control.MaximumKey)); - Assert.Equal(12345, control.ReadLong(Data.Models.Metadata.Control.MinimumKey)); - Assert.Equal(12345, control.ReadLong(Data.Models.Metadata.Control.PlayerKey)); - Assert.Equal(12345, control.ReadLong(Data.Models.Metadata.Control.ReqButtonsKey)); + Assert.Equal(12345, control.Buttons); + Assert.Equal(12345, control.KeyDelta); + Assert.Equal(12345, control.Maximum); + Assert.Equal(12345, control.Minimum); + Assert.Equal(12345, control.Player); + Assert.Equal(12345, control.ReqButtons); Assert.True(control.Reverse); - Assert.Equal(12345, control.ReadLong(Data.Models.Metadata.Control.SensitivityKey)); + Assert.Equal(12345, control.Sensitivity); Assert.Equal(Data.Models.Metadata.ControlType.Lightgun, control.ControlType); - Assert.Equal("ways", control.ReadString(Data.Models.Metadata.Control.WaysKey)); - Assert.Equal("ways2", control.ReadString(Data.Models.Metadata.Control.Ways2Key)); - Assert.Equal("ways3", control.ReadString(Data.Models.Metadata.Control.Ways3Key)); + Assert.Equal("ways", control.Ways); + Assert.Equal("ways2", control.Ways2); + Assert.Equal("ways3", control.Ways3); } private static void ValidateMetadataDataArea(Data.Models.Metadata.DataArea? dataArea) diff --git a/SabreTools.Metadata.DatItems/Formats/Control.cs b/SabreTools.Metadata.DatItems/Formats/Control.cs index 794e43ac..91af5964 100644 --- a/SabreTools.Metadata.DatItems/Formats/Control.cs +++ b/SabreTools.Metadata.DatItems/Formats/Control.cs @@ -12,6 +12,12 @@ namespace SabreTools.Metadata.DatItems.Formats { #region Fields + public long? Buttons + { + get => (_internal as Data.Models.Metadata.Control)?.Buttons; + set => (_internal as Data.Models.Metadata.Control)?.Buttons = value; + } + public Data.Models.Metadata.ControlType? ControlType { get => (_internal as Data.Models.Metadata.Control)?.ControlType; @@ -22,49 +28,73 @@ namespace SabreTools.Metadata.DatItems.Formats public override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Control; + public long? KeyDelta + { + get => (_internal as Data.Models.Metadata.Control)?.KeyDelta; + set => (_internal as Data.Models.Metadata.Control)?.KeyDelta = value; + } + + public long? Maximum + { + get => (_internal as Data.Models.Metadata.Control)?.Maximum; + set => (_internal as Data.Models.Metadata.Control)?.Maximum = value; + } + + public long? Minimum + { + get => (_internal as Data.Models.Metadata.Control)?.Minimum; + set => (_internal as Data.Models.Metadata.Control)?.Minimum = value; + } + + public long? Player + { + get => (_internal as Data.Models.Metadata.Control)?.Player; + set => (_internal as Data.Models.Metadata.Control)?.Player = value; + } + + public long? ReqButtons + { + get => (_internal as Data.Models.Metadata.Control)?.ReqButtons; + set => (_internal as Data.Models.Metadata.Control)?.ReqButtons = value; + } + public bool? Reverse { get => (_internal as Data.Models.Metadata.Control)?.Reverse; set => (_internal as Data.Models.Metadata.Control)?.Reverse = value; } + public long? Sensitivity + { + get => (_internal as Data.Models.Metadata.Control)?.Sensitivity; + set => (_internal as Data.Models.Metadata.Control)?.Sensitivity = value; + } + + public string? Ways + { + get => (_internal as Data.Models.Metadata.Control)?.Ways; + set => (_internal as Data.Models.Metadata.Control)?.Ways = value; + } + + public string? Ways2 + { + get => (_internal as Data.Models.Metadata.Control)?.Ways2; + set => (_internal as Data.Models.Metadata.Control)?.Ways2 = value; + } + + public string? Ways3 + { + get => (_internal as Data.Models.Metadata.Control)?.Ways3; + set => (_internal as Data.Models.Metadata.Control)?.Ways3 = value; + } + #endregion #region Constructors public Control() : base() { } - public Control(Data.Models.Metadata.Control item) : base(item) - { - // Process flag values - long? buttons = ReadLong(Data.Models.Metadata.Control.ButtonsKey); - if (buttons is not null) - Write(Data.Models.Metadata.Control.ButtonsKey, buttons.ToString()); - - long? keyDelta = ReadLong(Data.Models.Metadata.Control.KeyDeltaKey); - if (keyDelta is not null) - Write(Data.Models.Metadata.Control.KeyDeltaKey, keyDelta.ToString()); - - long? maximum = ReadLong(Data.Models.Metadata.Control.MaximumKey); - if (maximum is not null) - Write(Data.Models.Metadata.Control.MaximumKey, maximum.ToString()); - - long? minimum = ReadLong(Data.Models.Metadata.Control.MinimumKey); - if (minimum is not null) - Write(Data.Models.Metadata.Control.MinimumKey, minimum.ToString()); - - long? player = ReadLong(Data.Models.Metadata.Control.PlayerKey); - if (player is not null) - Write(Data.Models.Metadata.Control.PlayerKey, player.ToString()); - - long? reqButtons = ReadLong(Data.Models.Metadata.Control.ReqButtonsKey); - if (reqButtons is not null) - Write(Data.Models.Metadata.Control.ReqButtonsKey, reqButtons.ToString()); - - long? sensitivity = ReadLong(Data.Models.Metadata.Control.SensitivityKey); - if (sensitivity is not null) - Write(Data.Models.Metadata.Control.SensitivityKey, sensitivity.ToString()); - } + public Control(Data.Models.Metadata.Control item) : base(item) { } public Control(Data.Models.Metadata.Control item, Machine machine, Source source) : this(item) { diff --git a/SabreTools.Metadata.Filter/FilterObject.cs b/SabreTools.Metadata.Filter/FilterObject.cs index 4119d9fa..d00091ed 100644 --- a/SabreTools.Metadata.Filter/FilterObject.cs +++ b/SabreTools.Metadata.Filter/FilterObject.cs @@ -408,12 +408,42 @@ namespace SabreTools.Metadata.Filter checkValue = item.Value; return true; + case Control item when fieldName == "buttons": + checkValue = item.Buttons?.ToString(); + return true; case Control item when fieldName == "type": checkValue = item.ControlType?.AsStringValue(); return true; + case Control item when fieldName == "keydelta": + checkValue = item.KeyDelta?.ToString(); + return true; + case Control item when fieldName == "maximum": + checkValue = item.Maximum?.ToString(); + return true; + case Control item when fieldName == "minimum": + checkValue = item.Minimum?.ToString(); + return true; + case Control item when fieldName == "player": + checkValue = item.Player?.ToString(); + return true; + case Control item when fieldName == "reqbuttons": + checkValue = item.ReqButtons?.ToString(); + return true; case Control item when fieldName == "reverse": checkValue = item.Reverse.FromYesNo(); return true; + case Control item when fieldName == "sensitivity": + checkValue = item.Sensitivity?.ToString(); + return true; + case Control item when fieldName == "ways": + checkValue = item.Ways; + return true; + case Control item when fieldName == "ways2": + checkValue = item.Ways2; + return true; + case Control item when fieldName == "ways3": + checkValue = item.Ways3; + return true; case DataArea item when fieldName == "endianness": checkValue = item.Endianness?.AsStringValue(); diff --git a/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs b/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs index 80b6682e..d8031044 100644 --- a/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs @@ -155,17 +155,17 @@ namespace SabreTools.Serialization.CrossModel.Test var control = new Data.Models.Listxml.Control { Type = Data.Models.Metadata.ControlType.Lightgun, - Player = "XXXXXX", - Buttons = "XXXXXX", - ReqButtons = "XXXXXX", - Minimum = "XXXXXX", - Maximum = "XXXXXX", - Sensitivity = "XXXXXX", - KeyDelta = "XXXXXX", + Player = 12345, + Buttons = 12345, + ReqButtons = 12345, + Minimum = 12345, + Maximum = 12345, + Sensitivity = 12345, + KeyDelta = 12345, Reverse = true, - Ways = "XXXXXX", - Ways2 = "XXXXXX", - Ways3 = "XXXXXX", + Ways = "ways", + Ways2 = "ways2", + Ways3 = "ways3", }; var input = new Data.Models.Listxml.Input @@ -617,17 +617,17 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(control); Assert.Equal(Data.Models.Metadata.ControlType.Lightgun, control.Type); - Assert.Equal("XXXXXX", control.Player); - Assert.Equal("XXXXXX", control.Buttons); - Assert.Equal("XXXXXX", control.ReqButtons); - Assert.Equal("XXXXXX", control.Minimum); - Assert.Equal("XXXXXX", control.Maximum); - Assert.Equal("XXXXXX", control.Sensitivity); - Assert.Equal("XXXXXX", control.KeyDelta); + Assert.Equal(12345, control.Player); + Assert.Equal(12345, control.Buttons); + Assert.Equal(12345, control.ReqButtons); + Assert.Equal(12345, control.Minimum); + Assert.Equal(12345, control.Maximum); + Assert.Equal(12345, control.Sensitivity); + Assert.Equal(12345, control.KeyDelta); Assert.Equal(true, control.Reverse); - Assert.Equal("XXXXXX", control.Ways); - Assert.Equal("XXXXXX", control.Ways2); - Assert.Equal("XXXXXX", control.Ways3); + Assert.Equal("ways", control.Ways); + Assert.Equal("ways2", control.Ways2); + Assert.Equal("ways3", control.Ways3); } /// diff --git a/SabreTools.Serialization.CrossModel.Test/M1Tests.cs b/SabreTools.Serialization.CrossModel.Test/M1Tests.cs index d4a5ec0d..2018128f 100644 --- a/SabreTools.Serialization.CrossModel.Test/M1Tests.cs +++ b/SabreTools.Serialization.CrossModel.Test/M1Tests.cs @@ -151,17 +151,17 @@ namespace SabreTools.Serialization.CrossModel.Test var control = new Data.Models.Listxml.Control { Type = Data.Models.Metadata.ControlType.Lightgun, - Player = "XXXXXX", - Buttons = "XXXXXX", - ReqButtons = "XXXXXX", - Minimum = "XXXXXX", - Maximum = "XXXXXX", - Sensitivity = "XXXXXX", - KeyDelta = "XXXXXX", + Player = 12345, + Buttons = 12345, + ReqButtons = 12345, + Minimum = 12345, + Maximum = 12345, + Sensitivity = 12345, + KeyDelta = 12345, Reverse = true, - Ways = "XXXXXX", - Ways2 = "XXXXXX", - Ways3 = "XXXXXX", + Ways = "ways", + Ways2 = "ways2", + Ways3 = "ways3", }; var input = new Data.Models.Listxml.Input @@ -611,17 +611,17 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(control); Assert.Equal(Data.Models.Metadata.ControlType.Lightgun, control.Type); - Assert.Equal("XXXXXX", control.Player); - Assert.Equal("XXXXXX", control.Buttons); - Assert.Equal("XXXXXX", control.ReqButtons); - Assert.Equal("XXXXXX", control.Minimum); - Assert.Equal("XXXXXX", control.Maximum); - Assert.Equal("XXXXXX", control.Sensitivity); - Assert.Equal("XXXXXX", control.KeyDelta); + Assert.Equal(12345, control.Player); + Assert.Equal(12345, control.Buttons); + Assert.Equal(12345, control.ReqButtons); + Assert.Equal(12345, control.Minimum); + Assert.Equal(12345, control.Maximum); + Assert.Equal(12345, control.Sensitivity); + Assert.Equal(12345, control.KeyDelta); Assert.Equal(true, control.Reverse); - Assert.Equal("XXXXXX", control.Ways); - Assert.Equal("XXXXXX", control.Ways2); - Assert.Equal("XXXXXX", control.Ways3); + Assert.Equal("ways", control.Ways); + Assert.Equal("ways2", control.Ways2); + Assert.Equal("ways3", control.Ways3); } /// diff --git a/SabreTools.Serialization.CrossModel.Test/MessTests.cs b/SabreTools.Serialization.CrossModel.Test/MessTests.cs index 0bc11c0e..1bb302a1 100644 --- a/SabreTools.Serialization.CrossModel.Test/MessTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/MessTests.cs @@ -151,17 +151,17 @@ namespace SabreTools.Serialization.CrossModel.Test var control = new Data.Models.Listxml.Control { Type = Data.Models.Metadata.ControlType.Lightgun, - Player = "XXXXXX", - Buttons = "XXXXXX", - ReqButtons = "XXXXXX", - Minimum = "XXXXXX", - Maximum = "XXXXXX", - Sensitivity = "XXXXXX", - KeyDelta = "XXXXXX", + Player = 12345, + Buttons = 12345, + ReqButtons = 12345, + Minimum = 12345, + Maximum = 12345, + Sensitivity = 12345, + KeyDelta = 12345, Reverse = true, - Ways = "XXXXXX", - Ways2 = "XXXXXX", - Ways3 = "XXXXXX", + Ways = "ways", + Ways2 = "ways2", + Ways3 = "ways3", }; var input = new Data.Models.Listxml.Input @@ -611,17 +611,17 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(control); Assert.Equal(Data.Models.Metadata.ControlType.Lightgun, control.Type); - Assert.Equal("XXXXXX", control.Player); - Assert.Equal("XXXXXX", control.Buttons); - Assert.Equal("XXXXXX", control.ReqButtons); - Assert.Equal("XXXXXX", control.Minimum); - Assert.Equal("XXXXXX", control.Maximum); - Assert.Equal("XXXXXX", control.Sensitivity); - Assert.Equal("XXXXXX", control.KeyDelta); + Assert.Equal(12345, control.Player); + Assert.Equal(12345, control.Buttons); + Assert.Equal(12345, control.ReqButtons); + Assert.Equal(12345, control.Minimum); + Assert.Equal(12345, control.Maximum); + Assert.Equal(12345, control.Sensitivity); + Assert.Equal(12345, control.KeyDelta); Assert.Equal(true, control.Reverse); - Assert.Equal("XXXXXX", control.Ways); - Assert.Equal("XXXXXX", control.Ways2); - Assert.Equal("XXXXXX", control.Ways3); + Assert.Equal("ways", control.Ways); + Assert.Equal("ways2", control.Ways2); + Assert.Equal("ways3", control.Ways3); } /// diff --git a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs index bc686163..375f0607 100644 --- a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs @@ -284,17 +284,17 @@ namespace SabreTools.Serialization.CrossModel var control = new Control { Type = item.ControlType, - Player = item.ReadString(Data.Models.Metadata.Control.PlayerKey), - Buttons = item.ReadString(Data.Models.Metadata.Control.ButtonsKey), - ReqButtons = item.ReadString(Data.Models.Metadata.Control.ReqButtonsKey), - Minimum = item.ReadString(Data.Models.Metadata.Control.MinimumKey), - Maximum = item.ReadString(Data.Models.Metadata.Control.MaximumKey), - Sensitivity = item.ReadString(Data.Models.Metadata.Control.SensitivityKey), - KeyDelta = item.ReadString(Data.Models.Metadata.Control.KeyDeltaKey), + Player = item.Player, + Buttons = item.Buttons, + ReqButtons = item.ReqButtons, + Minimum = item.Minimum, + Maximum = item.Maximum, + Sensitivity = item.Sensitivity, + KeyDelta = item.KeyDelta, Reverse = item.Reverse, - Ways = item.ReadString(Data.Models.Metadata.Control.WaysKey), - Ways2 = item.ReadString(Data.Models.Metadata.Control.Ways2Key), - Ways3 = item.ReadString(Data.Models.Metadata.Control.Ways3Key), + Ways = item.Ways, + Ways2 = item.Ways2, + Ways3 = item.Ways3, }; return control; } diff --git a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs index 506ad714..5d21682f 100644 --- a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs @@ -319,17 +319,17 @@ namespace SabreTools.Serialization.CrossModel var control = new Data.Models.Metadata.Control { ControlType = item.Type, - [Data.Models.Metadata.Control.PlayerKey] = item.Player, - [Data.Models.Metadata.Control.ButtonsKey] = item.Buttons, - [Data.Models.Metadata.Control.ReqButtonsKey] = item.ReqButtons, - [Data.Models.Metadata.Control.MinimumKey] = item.Minimum, - [Data.Models.Metadata.Control.MaximumKey] = item.Maximum, - [Data.Models.Metadata.Control.SensitivityKey] = item.Sensitivity, - [Data.Models.Metadata.Control.KeyDeltaKey] = item.KeyDelta, + Player = item.Player, + Buttons = item.Buttons, + ReqButtons = item.ReqButtons, + Minimum = item.Minimum, + Maximum = item.Maximum, + Sensitivity = item.Sensitivity, + KeyDelta = item.KeyDelta, Reverse = item.Reverse, - [Data.Models.Metadata.Control.WaysKey] = item.Ways, - [Data.Models.Metadata.Control.Ways2Key] = item.Ways2, - [Data.Models.Metadata.Control.Ways3Key] = item.Ways3, + Ways = item.Ways, + Ways2 = item.Ways2, + Ways3 = item.Ways3, }; return control; } diff --git a/SabreTools.Serialization.Readers.Test/ListxmlTests.cs b/SabreTools.Serialization.Readers.Test/ListxmlTests.cs index e061a3b8..111b1b23 100644 --- a/SabreTools.Serialization.Readers.Test/ListxmlTests.cs +++ b/SabreTools.Serialization.Readers.Test/ListxmlTests.cs @@ -222,17 +222,17 @@ namespace SabreTools.Serialization.Readers.Test var control = new Data.Models.Listxml.Control { Type = Data.Models.Metadata.ControlType.Lightgun, - Player = "XXXXXX", - Buttons = "XXXXXX", - ReqButtons = "XXXXXX", - Minimum = "XXXXXX", - Maximum = "XXXXXX", - Sensitivity = "XXXXXX", - KeyDelta = "XXXXXX", + Player = 12345, + Buttons = 12345, + ReqButtons = 12345, + Minimum = 12345, + Maximum = 12345, + Sensitivity = 12345, + KeyDelta = 12345, Reverse = true, - Ways = "XXXXXX", - Ways2 = "XXXXXX", - Ways3 = "XXXXXX", + Ways = "ways", + Ways2 = "ways2", + Ways3 = "ways3", }; var input = new Data.Models.Listxml.Input @@ -684,17 +684,17 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(control); Assert.Equal(Data.Models.Metadata.ControlType.Lightgun, control.Type); - Assert.Equal("XXXXXX", control.Player); - Assert.Equal("XXXXXX", control.Buttons); - Assert.Equal("XXXXXX", control.ReqButtons); - Assert.Equal("XXXXXX", control.Minimum); - Assert.Equal("XXXXXX", control.Maximum); - Assert.Equal("XXXXXX", control.Sensitivity); - Assert.Equal("XXXXXX", control.KeyDelta); + Assert.Equal(12345, control.Player); + Assert.Equal(12345, control.Buttons); + Assert.Equal(12345, control.ReqButtons); + Assert.Equal(12345, control.Minimum); + Assert.Equal(12345, control.Maximum); + Assert.Equal(12345, control.Sensitivity); + Assert.Equal(12345, control.KeyDelta); Assert.Equal(true, control.Reverse); - Assert.Equal("XXXXXX", control.Ways); - Assert.Equal("XXXXXX", control.Ways2); - Assert.Equal("XXXXXX", control.Ways3); + Assert.Equal("ways", control.Ways); + Assert.Equal("ways2", control.Ways2); + Assert.Equal("ways3", control.Ways3); } /// diff --git a/SabreTools.Serialization.Readers.Test/M1Tests.cs b/SabreTools.Serialization.Readers.Test/M1Tests.cs index 05e64fba..9c42212c 100644 --- a/SabreTools.Serialization.Readers.Test/M1Tests.cs +++ b/SabreTools.Serialization.Readers.Test/M1Tests.cs @@ -218,17 +218,17 @@ namespace SabreTools.Serialization.Readers.Test var control = new Data.Models.Listxml.Control { Type = Data.Models.Metadata.ControlType.Lightgun, - Player = "XXXXXX", - Buttons = "XXXXXX", - ReqButtons = "XXXXXX", - Minimum = "XXXXXX", - Maximum = "XXXXXX", - Sensitivity = "XXXXXX", - KeyDelta = "XXXXXX", + Player = 12345, + Buttons = 12345, + ReqButtons = 12345, + Minimum = 12345, + Maximum = 12345, + Sensitivity = 12345, + KeyDelta = 12345, Reverse = true, - Ways = "XXXXXX", - Ways2 = "XXXXXX", - Ways3 = "XXXXXX", + Ways = "ways", + Ways2 = "ways2", + Ways3 = "ways3", }; var input = new Data.Models.Listxml.Input @@ -678,17 +678,17 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(control); Assert.Equal(Data.Models.Metadata.ControlType.Lightgun, control.Type); - Assert.Equal("XXXXXX", control.Player); - Assert.Equal("XXXXXX", control.Buttons); - Assert.Equal("XXXXXX", control.ReqButtons); - Assert.Equal("XXXXXX", control.Minimum); - Assert.Equal("XXXXXX", control.Maximum); - Assert.Equal("XXXXXX", control.Sensitivity); - Assert.Equal("XXXXXX", control.KeyDelta); + Assert.Equal(12345, control.Player); + Assert.Equal(12345, control.Buttons); + Assert.Equal(12345, control.ReqButtons); + Assert.Equal(12345, control.Minimum); + Assert.Equal(12345, control.Maximum); + Assert.Equal(12345, control.Sensitivity); + Assert.Equal(12345, control.KeyDelta); Assert.Equal(true, control.Reverse); - Assert.Equal("XXXXXX", control.Ways); - Assert.Equal("XXXXXX", control.Ways2); - Assert.Equal("XXXXXX", control.Ways3); + Assert.Equal("ways", control.Ways); + Assert.Equal("ways2", control.Ways2); + Assert.Equal("ways3", control.Ways3); } /// diff --git a/SabreTools.Serialization.Readers.Test/MessTests.cs b/SabreTools.Serialization.Readers.Test/MessTests.cs index c325136e..146628c2 100644 --- a/SabreTools.Serialization.Readers.Test/MessTests.cs +++ b/SabreTools.Serialization.Readers.Test/MessTests.cs @@ -218,17 +218,17 @@ namespace SabreTools.Serialization.Readers.Test var control = new Data.Models.Listxml.Control { Type = Data.Models.Metadata.ControlType.Lightgun, - Player = "XXXXXX", - Buttons = "XXXXXX", - ReqButtons = "XXXXXX", - Minimum = "XXXXXX", - Maximum = "XXXXXX", - Sensitivity = "XXXXXX", - KeyDelta = "XXXXXX", + Player = 12345, + Buttons = 12345, + ReqButtons = 12345, + Minimum = 12345, + Maximum = 12345, + Sensitivity = 12345, + KeyDelta = 12345, Reverse = true, - Ways = "XXXXXX", - Ways2 = "XXXXXX", - Ways3 = "XXXXXX", + Ways = "ways", + Ways2 = "ways2", + Ways3 = "ways3", }; var input = new Data.Models.Listxml.Input @@ -678,17 +678,17 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(control); Assert.Equal(Data.Models.Metadata.ControlType.Lightgun, control.Type); - Assert.Equal("XXXXXX", control.Player); - Assert.Equal("XXXXXX", control.Buttons); - Assert.Equal("XXXXXX", control.ReqButtons); - Assert.Equal("XXXXXX", control.Minimum); - Assert.Equal("XXXXXX", control.Maximum); - Assert.Equal("XXXXXX", control.Sensitivity); - Assert.Equal("XXXXXX", control.KeyDelta); + Assert.Equal(12345, control.Player); + Assert.Equal(12345, control.Buttons); + Assert.Equal(12345, control.ReqButtons); + Assert.Equal(12345, control.Minimum); + Assert.Equal(12345, control.Maximum); + Assert.Equal(12345, control.Sensitivity); + Assert.Equal(12345, control.KeyDelta); Assert.Equal(true, control.Reverse); - Assert.Equal("XXXXXX", control.Ways); - Assert.Equal("XXXXXX", control.Ways2); - Assert.Equal("XXXXXX", control.Ways3); + Assert.Equal("ways", control.Ways); + Assert.Equal("ways2", control.Ways2); + Assert.Equal("ways3", control.Ways3); } /// diff --git a/SabreTools.Serialization.Readers/Listxml.cs b/SabreTools.Serialization.Readers/Listxml.cs index ff1c7632..1a55afa3 100644 --- a/SabreTools.Serialization.Readers/Listxml.cs +++ b/SabreTools.Serialization.Readers/Listxml.cs @@ -342,13 +342,13 @@ namespace SabreTools.Serialization.Readers var obj = new Control(); obj.Type = reader.GetAttribute("type").AsControlType(); - obj.Player = reader.GetAttribute("player"); - obj.Buttons = reader.GetAttribute("buttons"); - obj.ReqButtons = reader.GetAttribute("reqbuttons"); - obj.Minimum = reader.GetAttribute("minimum"); - obj.Maximum = reader.GetAttribute("maximum"); - obj.Sensitivity = reader.GetAttribute("sensitivity"); - obj.KeyDelta = reader.GetAttribute("keydelta"); + obj.Player = NumberHelper.ConvertToInt64(reader.GetAttribute("player")); + obj.Buttons = NumberHelper.ConvertToInt64(reader.GetAttribute("buttons")); + obj.ReqButtons = NumberHelper.ConvertToInt64(reader.GetAttribute("reqbuttons")); + obj.Minimum = NumberHelper.ConvertToInt64(reader.GetAttribute("minimum")); + obj.Maximum = NumberHelper.ConvertToInt64(reader.GetAttribute("maximum")); + obj.Sensitivity = NumberHelper.ConvertToInt64(reader.GetAttribute("sensitivity")); + obj.KeyDelta = NumberHelper.ConvertToInt64(reader.GetAttribute("keydelta")); obj.Reverse = reader.GetAttribute("reverse").AsYesNo(); obj.Ways = reader.GetAttribute("ways"); obj.Ways2 = reader.GetAttribute("ways2"); diff --git a/SabreTools.Serialization.Readers/M1.cs b/SabreTools.Serialization.Readers/M1.cs index fff3aadd..f8853d96 100644 --- a/SabreTools.Serialization.Readers/M1.cs +++ b/SabreTools.Serialization.Readers/M1.cs @@ -340,13 +340,13 @@ namespace SabreTools.Serialization.Readers var obj = new Control(); obj.Type = reader.GetAttribute("type").AsControlType(); - obj.Player = reader.GetAttribute("player"); - obj.Buttons = reader.GetAttribute("buttons"); - obj.ReqButtons = reader.GetAttribute("reqbuttons"); - obj.Minimum = reader.GetAttribute("minimum"); - obj.Maximum = reader.GetAttribute("maximum"); - obj.Sensitivity = reader.GetAttribute("sensitivity"); - obj.KeyDelta = reader.GetAttribute("keydelta"); + obj.Player = NumberHelper.ConvertToInt64(reader.GetAttribute("player")); + obj.Buttons = NumberHelper.ConvertToInt64(reader.GetAttribute("buttons")); + obj.ReqButtons = NumberHelper.ConvertToInt64(reader.GetAttribute("reqbuttons")); + obj.Minimum = NumberHelper.ConvertToInt64(reader.GetAttribute("minimum")); + obj.Maximum = NumberHelper.ConvertToInt64(reader.GetAttribute("maximum")); + obj.Sensitivity = NumberHelper.ConvertToInt64(reader.GetAttribute("sensitivity")); + obj.KeyDelta = NumberHelper.ConvertToInt64(reader.GetAttribute("keydelta")); obj.Reverse = reader.GetAttribute("reverse").AsYesNo(); obj.Ways = reader.GetAttribute("ways"); obj.Ways2 = reader.GetAttribute("ways2"); diff --git a/SabreTools.Serialization.Readers/Mess.cs b/SabreTools.Serialization.Readers/Mess.cs index ef0719a1..3c6346dc 100644 --- a/SabreTools.Serialization.Readers/Mess.cs +++ b/SabreTools.Serialization.Readers/Mess.cs @@ -340,13 +340,13 @@ namespace SabreTools.Serialization.Readers var obj = new Control(); obj.Type = reader.GetAttribute("type").AsControlType(); - obj.Player = reader.GetAttribute("player"); - obj.Buttons = reader.GetAttribute("buttons"); - obj.ReqButtons = reader.GetAttribute("reqbuttons"); - obj.Minimum = reader.GetAttribute("minimum"); - obj.Maximum = reader.GetAttribute("maximum"); - obj.Sensitivity = reader.GetAttribute("sensitivity"); - obj.KeyDelta = reader.GetAttribute("keydelta"); + obj.Player = NumberHelper.ConvertToInt64(reader.GetAttribute("player")); + obj.Buttons = NumberHelper.ConvertToInt64(reader.GetAttribute("buttons")); + obj.ReqButtons = NumberHelper.ConvertToInt64(reader.GetAttribute("reqbuttons")); + obj.Minimum = NumberHelper.ConvertToInt64(reader.GetAttribute("minimum")); + obj.Maximum = NumberHelper.ConvertToInt64(reader.GetAttribute("maximum")); + obj.Sensitivity = NumberHelper.ConvertToInt64(reader.GetAttribute("sensitivity")); + obj.KeyDelta = NumberHelper.ConvertToInt64(reader.GetAttribute("keydelta")); obj.Reverse = reader.GetAttribute("reverse").AsYesNo(); obj.Ways = reader.GetAttribute("ways"); obj.Ways2 = reader.GetAttribute("ways2"); diff --git a/SabreTools.Serialization.Writers/Listxml.cs b/SabreTools.Serialization.Writers/Listxml.cs index cd9e4498..4564fa6b 100644 --- a/SabreTools.Serialization.Writers/Listxml.cs +++ b/SabreTools.Serialization.Writers/Listxml.cs @@ -229,13 +229,13 @@ namespace SabreTools.Serialization.Writers writer.WriteStartElement("control"); writer.WriteRequiredAttributeString("type", obj.Type?.AsStringValue()); - writer.WriteOptionalAttributeString("player", obj.Player); - writer.WriteOptionalAttributeString("buttons", obj.Buttons); - writer.WriteOptionalAttributeString("reqbuttons", obj.ReqButtons); - writer.WriteOptionalAttributeString("minimum", obj.Minimum); - writer.WriteOptionalAttributeString("maximum", obj.Maximum); - writer.WriteOptionalAttributeString("sensitivity", obj.Sensitivity); - writer.WriteOptionalAttributeString("keydelta", obj.KeyDelta); + writer.WriteOptionalAttributeString("player", obj.Player?.ToString()); + writer.WriteOptionalAttributeString("buttons", obj.Buttons?.ToString()); + writer.WriteOptionalAttributeString("reqbuttons", obj.ReqButtons?.ToString()); + writer.WriteOptionalAttributeString("minimum", obj.Minimum?.ToString()); + writer.WriteOptionalAttributeString("maximum", obj.Maximum?.ToString()); + writer.WriteOptionalAttributeString("sensitivity", obj.Sensitivity?.ToString()); + writer.WriteOptionalAttributeString("keydelta", obj.KeyDelta?.ToString()); writer.WriteOptionalAttributeString("reverse", obj.Reverse.FromYesNo()); writer.WriteOptionalAttributeString("ways", obj.Ways); writer.WriteOptionalAttributeString("ways2", obj.Ways2); diff --git a/SabreTools.Serialization.Writers/M1.cs b/SabreTools.Serialization.Writers/M1.cs index cd05a5a8..065eefb6 100644 --- a/SabreTools.Serialization.Writers/M1.cs +++ b/SabreTools.Serialization.Writers/M1.cs @@ -227,13 +227,13 @@ namespace SabreTools.Serialization.Writers writer.WriteStartElement("control"); writer.WriteRequiredAttributeString("type", obj.Type?.AsStringValue()); - writer.WriteOptionalAttributeString("player", obj.Player); - writer.WriteOptionalAttributeString("buttons", obj.Buttons); - writer.WriteOptionalAttributeString("reqbuttons", obj.ReqButtons); - writer.WriteOptionalAttributeString("minimum", obj.Minimum); - writer.WriteOptionalAttributeString("maximum", obj.Maximum); - writer.WriteOptionalAttributeString("sensitivity", obj.Sensitivity); - writer.WriteOptionalAttributeString("keydelta", obj.KeyDelta); + writer.WriteOptionalAttributeString("player", obj.Player?.ToString()); + writer.WriteOptionalAttributeString("buttons", obj.Buttons?.ToString()); + writer.WriteOptionalAttributeString("reqbuttons", obj.ReqButtons?.ToString()); + writer.WriteOptionalAttributeString("minimum", obj.Minimum?.ToString()); + writer.WriteOptionalAttributeString("maximum", obj.Maximum?.ToString()); + writer.WriteOptionalAttributeString("sensitivity", obj.Sensitivity?.ToString()); + writer.WriteOptionalAttributeString("keydelta", obj.KeyDelta?.ToString()); writer.WriteOptionalAttributeString("reverse", obj.Reverse.FromYesNo()); writer.WriteOptionalAttributeString("ways", obj.Ways); writer.WriteOptionalAttributeString("ways2", obj.Ways2); diff --git a/SabreTools.Serialization.Writers/Mess.cs b/SabreTools.Serialization.Writers/Mess.cs index ff2e2190..ddaa7ad9 100644 --- a/SabreTools.Serialization.Writers/Mess.cs +++ b/SabreTools.Serialization.Writers/Mess.cs @@ -227,13 +227,13 @@ namespace SabreTools.Serialization.Writers writer.WriteStartElement("control"); writer.WriteRequiredAttributeString("type", obj.Type?.AsStringValue()); - writer.WriteOptionalAttributeString("player", obj.Player); - writer.WriteOptionalAttributeString("buttons", obj.Buttons); - writer.WriteOptionalAttributeString("reqbuttons", obj.ReqButtons); - writer.WriteOptionalAttributeString("minimum", obj.Minimum); - writer.WriteOptionalAttributeString("maximum", obj.Maximum); - writer.WriteOptionalAttributeString("sensitivity", obj.Sensitivity); - writer.WriteOptionalAttributeString("keydelta", obj.KeyDelta); + writer.WriteOptionalAttributeString("player", obj.Player?.ToString()); + writer.WriteOptionalAttributeString("buttons", obj.Buttons?.ToString()); + writer.WriteOptionalAttributeString("reqbuttons", obj.ReqButtons?.ToString()); + writer.WriteOptionalAttributeString("minimum", obj.Minimum?.ToString()); + writer.WriteOptionalAttributeString("maximum", obj.Maximum?.ToString()); + writer.WriteOptionalAttributeString("sensitivity", obj.Sensitivity?.ToString()); + writer.WriteOptionalAttributeString("keydelta", obj.KeyDelta?.ToString()); writer.WriteOptionalAttributeString("reverse", obj.Reverse.FromYesNo()); writer.WriteOptionalAttributeString("ways", obj.Ways); writer.WriteOptionalAttributeString("ways2", obj.Ways2); From 600b0a6dbda72f834d9267716134b2ceb0f08c8e Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Fri, 3 Apr 2026 10:04:32 -0400 Subject: [PATCH 033/142] Fill in some accidental gaps --- SabreTools.Data.Models/Metadata/Control.cs | 77 +++- SabreTools.Data.Models/Metadata/Sound.cs | 27 +- .../DictionaryBaseExtensions.cs | 328 +++++++++++------- 3 files changed, 311 insertions(+), 121 deletions(-) diff --git a/SabreTools.Data.Models/Metadata/Control.cs b/SabreTools.Data.Models/Metadata/Control.cs index 1640899a..11268628 100644 --- a/SabreTools.Data.Models/Metadata/Control.cs +++ b/SabreTools.Data.Models/Metadata/Control.cs @@ -1,10 +1,11 @@ +using System; using System.Xml.Serialization; using Newtonsoft.Json; namespace SabreTools.Data.Models.Metadata { [JsonObject("control"), XmlRoot("control")] - public class Control : DatItem + public class Control : DatItem, ICloneable, IEquatable { #region Properties @@ -37,5 +38,79 @@ namespace SabreTools.Data.Models.Metadata #endregion public Control() => ItemType = ItemType.Control; + + /// + public object Clone() + { + var obj = new Control(); + + obj.Buttons = Buttons; + obj.ControlType = ControlType; + obj.KeyDelta = KeyDelta; + obj.Maximum = Maximum; + obj.Minimum = Minimum; + obj.Player = Player; + obj.ReqButtons = ReqButtons; + obj.Reverse = Reverse; + obj.Sensitivity = Sensitivity; + obj.Ways = Ways; + obj.Ways2 = Ways2; + obj.Ways3 = Ways3; + + return obj; + } + + /// + public bool Equals(Control? other) + { + // Null never matches + if (other is null) + return false; + + // Properties + if (Buttons != other.Buttons) + return false; + + if (ControlType != other.ControlType) + return false; + + if (KeyDelta != other.KeyDelta) + return false; + + if (Maximum != other.Maximum) + return false; + + if (Minimum != other.Minimum) + return false; + + if (Player != other.Player) + return false; + + if (ReqButtons != other.ReqButtons) + return false; + + if (Reverse != other.Reverse) + return false; + + if (Sensitivity != other.Sensitivity) + return false; + + if ((Ways is null) ^ (other.Ways is null)) + return false; + else if (Ways is not null && !Ways.Equals(other.Ways, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((Ways2 is null) ^ (other.Ways2 is null)) + return false; + else if (Ways2 is not null && !Ways2.Equals(other.Ways2, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((Ways3 is null) ^ (other.Ways3 is null)) + return false; + else if (Ways3 is not null && !Ways3.Equals(other.Ways3, StringComparison.OrdinalIgnoreCase)) + return false; + + return true; + } } } diff --git a/SabreTools.Data.Models/Metadata/Sound.cs b/SabreTools.Data.Models/Metadata/Sound.cs index 2d14fee5..f12a6faf 100644 --- a/SabreTools.Data.Models/Metadata/Sound.cs +++ b/SabreTools.Data.Models/Metadata/Sound.cs @@ -1,10 +1,11 @@ +using System; using System.Xml.Serialization; using Newtonsoft.Json; namespace SabreTools.Data.Models.Metadata { [JsonObject("sound"), XmlRoot("sound")] - public class Sound : DatItem + public class Sound : DatItem, ICloneable, IEquatable { #region Properties @@ -13,5 +14,29 @@ namespace SabreTools.Data.Models.Metadata #endregion public Sound() => ItemType = ItemType.Sound; + + /// + public object Clone() + { + var obj = new Sound(); + + obj.Channels = Channels; + + return obj; + } + + /// + public bool Equals(Sound? other) + { + // Null never matches + if (other is null) + return false; + + // Properties + if (Channels != other.Channels) + return false; + + return true; + } } } diff --git a/SabreTools.Metadata/DictionaryBaseExtensions.cs b/SabreTools.Metadata/DictionaryBaseExtensions.cs index 21649bff..1ef7fbce 100644 --- a/SabreTools.Metadata/DictionaryBaseExtensions.cs +++ b/SabreTools.Metadata/DictionaryBaseExtensions.cs @@ -14,6 +14,7 @@ namespace SabreTools.Metadata /// Check equality of two DictionaryBase objects /// /// TODO: Fix equality checking with case sensitivity of string properties + /// TODO: Use IEquatable where possible public static bool EqualTo(this DictionaryBase self, DictionaryBase other) { // Check types first @@ -44,6 +45,8 @@ namespace SabreTools.Metadata /// /// Check equality of two DictionaryBase objects /// + /// TODO: Fix equality checking with case sensitivity of string properties + /// TODO: Use IEquatable where possible private static bool EqualsImpl(this DictionaryBase self, DictionaryBase other) { // If the number of key-value pairs doesn't match, they can't match @@ -61,275 +64,362 @@ namespace SabreTools.Metadata return false; // Handle individual type properties - if (self is Adjuster selfAdjuster && other is Adjuster cloneAdjuster) + if (self is Adjuster selfAdjuster && other is Adjuster otherAdjuster) { - if (selfAdjuster.Default != cloneAdjuster.Default) + if (selfAdjuster.Default != otherAdjuster.Default) return false; } - else if (self is Analog selfAnalog && other is Analog cloneAnalog) + else if (self is Analog selfAnalog && other is Analog otherAnalog) { - if (selfAnalog.Mask != cloneAnalog.Mask) + if (selfAnalog.Mask != otherAnalog.Mask) return false; } - else if (self is Archive selfArchive && other is Archive cloneArchive) + else if (self is Archive selfArchive && other is Archive otherArchive) { - if (selfArchive.Description != cloneArchive.Description) + if (selfArchive.Description != otherArchive.Description) return false; } - else if (self is BiosSet selfBiosSet && other is BiosSet cloneBiosSet) + else if (self is BiosSet selfBiosSet && other is BiosSet otherBiosSet) { - if (selfBiosSet.Default != cloneBiosSet.Default) + if (selfBiosSet.Default != otherBiosSet.Default) return false; - if (selfBiosSet.Description != cloneBiosSet.Description) + if (selfBiosSet.Description != otherBiosSet.Description) return false; } - else if (self is Chip selfChip && other is Chip cloneChip) + else if (self is Chip selfChip && other is Chip otherChip) { - if (selfChip.ChipType != cloneChip.ChipType) + if (selfChip.ChipType != otherChip.ChipType) return false; - if (selfChip.SoundOnly != cloneChip.SoundOnly) + if (selfChip.SoundOnly != otherChip.SoundOnly) return false; - if (selfChip.Tag != cloneChip.Tag) + if (selfChip.Tag != otherChip.Tag) return false; } - else if (self is Condition selfCondition && other is Condition cloneCondition) + else if (self is Condition selfCondition && other is Condition otherCondition) { - if (selfCondition.Mask != cloneCondition.Mask) + if (selfCondition.Mask != otherCondition.Mask) return false; - if (selfCondition.Relation != cloneCondition.Relation) + if (selfCondition.Relation != otherCondition.Relation) return false; - if (selfCondition.Tag != cloneCondition.Tag) + if (selfCondition.Tag != otherCondition.Tag) return false; - if (selfCondition.Value != cloneCondition.Value) + if (selfCondition.Value != otherCondition.Value) return false; } - else if (self is Configuration selfConfiguration && other is Configuration cloneConfiguration) + else if (self is Configuration selfConfiguration && other is Configuration otherConfiguration) { - if (selfConfiguration.Mask != cloneConfiguration.Mask) + if (selfConfiguration.Mask != otherConfiguration.Mask) return false; - if (selfConfiguration.Tag != cloneConfiguration.Tag) + if (selfConfiguration.Tag != otherConfiguration.Tag) return false; } - else if (self is ConfLocation selfConfLocation && other is ConfLocation cloneConfLocation) + else if (self is ConfLocation selfConfLocation && other is ConfLocation otherConfLocation) { - if (selfConfLocation.Inverted != cloneConfLocation.Inverted) + if (selfConfLocation.Inverted != otherConfLocation.Inverted) return false; } - else if (self is ConfSetting selfConfSetting && other is ConfSetting cloneConfSetting) + else if (self is ConfSetting selfConfSetting && other is ConfSetting otherConfSetting) { - if (selfConfSetting.Default != cloneConfSetting.Default) + if (selfConfSetting.Default != otherConfSetting.Default) return false; - if (selfConfSetting.Value != cloneConfSetting.Value) + if (selfConfSetting.Value != otherConfSetting.Value) return false; } - else if (self is Control selfControl && other is Control cloneControl) + else if (self is Control selfControl && other is Control otherControl) { - if (selfControl.ControlType != cloneControl.ControlType) + if (selfControl.Buttons != otherControl.Buttons) return false; - if (selfControl.Reverse != cloneControl.Reverse) + if (selfControl.ControlType != otherControl.ControlType) + return false; + if (selfControl.KeyDelta != otherControl.KeyDelta) + return false; + if (selfControl.Maximum != otherControl.Maximum) + return false; + if (selfControl.Minimum != otherControl.Minimum) + return false; + if (selfControl.Player != otherControl.Player) + return false; + if (selfControl.ReqButtons != otherControl.ReqButtons) + return false; + if (selfControl.Reverse != otherControl.Reverse) + return false; + if (selfControl.Sensitivity != otherControl.Sensitivity) + return false; + if (selfControl.Ways != otherControl.Ways) + return false; + if (selfControl.Ways2 != otherControl.Ways2) + return false; + if (selfControl.Ways3 != otherControl.Ways3) return false; } - else if (self is DataArea selfDataArea && other is DataArea cloneDataArea) + else if (self is DataArea selfDataArea && other is DataArea otherDataArea) { - if (selfDataArea.Endianness != cloneDataArea.Endianness) + if (selfDataArea.Endianness != otherDataArea.Endianness) + return false; + if (selfDataArea.Size != otherDataArea.Size) return false; } - else if (self is Device selfDevice && other is Device cloneDevice) + else if (self is Device selfDevice && other is Device otherDevice) { - if (selfDevice.DeviceType != cloneDevice.DeviceType) + if (selfDevice.DeviceType != otherDevice.DeviceType) return false; - if (selfDevice.FixedImage != cloneDevice.FixedImage) + if (selfDevice.FixedImage != otherDevice.FixedImage) return false; - if (selfDevice.Interface != cloneDevice.Interface) + if (selfDevice.Interface != otherDevice.Interface) return false; - if (selfDevice.Mandatory != cloneDevice.Mandatory) + if (selfDevice.Mandatory != otherDevice.Mandatory) return false; - if (selfDevice.Tag != cloneDevice.Tag) + if (selfDevice.Tag != otherDevice.Tag) return false; } - else if (self is DipLocation selfDipLocation && other is DipLocation cloneDipLocation) + else if (self is DipLocation selfDipLocation && other is DipLocation otherDipLocation) { - if (selfDipLocation.Inverted != cloneDipLocation.Inverted) + if (selfDipLocation.Inverted != otherDipLocation.Inverted) return false; } - else if (self is DipSwitch selfDipSwitch && other is DipSwitch cloneDipSwitch) + else if (self is DipSwitch selfDipSwitch && other is DipSwitch otherDipSwitch) { - if (selfDipSwitch.Default != cloneDipSwitch.Default) + if (selfDipSwitch.Default != otherDipSwitch.Default) return false; - if (selfDipSwitch.Mask != cloneDipSwitch.Mask) + if (selfDipSwitch.Mask != otherDipSwitch.Mask) return false; - if (selfDipSwitch.Tag != cloneDipSwitch.Tag) + if (selfDipSwitch.Tag != otherDipSwitch.Tag) return false; } - else if (self is DipValue selfDipValue && other is DipValue cloneDipValue) + else if (self is DipValue selfDipValue && other is DipValue otherDipValue) { - if (selfDipValue.Default != cloneDipValue.Default) + if (selfDipValue.Default != otherDipValue.Default) return false; - if (selfDipValue.Value != cloneDipValue.Value) + if (selfDipValue.Value != otherDipValue.Value) return false; } - else if (self is Display selfDisplay && other is Display cloneDisplay) + else if (self is Disk selfDisk && other is Disk otherDisk) { - if (selfDisplay.DisplayType != cloneDisplay.DisplayType) + // Intentionally skipped here + } + else if (self is Display selfDisplay && other is Display otherDisplay) + { + if (selfDisplay.DisplayType != otherDisplay.DisplayType) return false; - if (selfDisplay.FlipX != cloneDisplay.FlipX) + if (selfDisplay.FlipX != otherDisplay.FlipX) return false; - if (selfDisplay.Tag != cloneDisplay.Tag) + if (selfDisplay.Refresh != otherDisplay.Refresh) + return false; + if (selfDisplay.Tag != otherDisplay.Tag) return false; } - else if (self is Driver selfDriver && other is Driver cloneDriver) + else if (self is Driver selfDriver && other is Driver otherDriver) { - if (selfDriver.Blit != cloneDriver.Blit) + if (selfDriver.Blit != otherDriver.Blit) return false; - if (selfDriver.Cocktail != cloneDriver.Cocktail) + if (selfDriver.Cocktail != otherDriver.Cocktail) return false; - if (selfDriver.Color != cloneDriver.Color) + if (selfDriver.Color != otherDriver.Color) return false; - if (selfDriver.Emulation != cloneDriver.Emulation) + if (selfDriver.Emulation != otherDriver.Emulation) return false; - if (selfDriver.Incomplete != cloneDriver.Incomplete) + if (selfDriver.Incomplete != otherDriver.Incomplete) return false; - if (selfDriver.NoSoundHardware != cloneDriver.NoSoundHardware) + if (selfDriver.NoSoundHardware != otherDriver.NoSoundHardware) return false; - if (selfDriver.RequiresArtwork != cloneDriver.RequiresArtwork) + if (selfDriver.RequiresArtwork != otherDriver.RequiresArtwork) return false; - if (selfDriver.SaveState != cloneDriver.SaveState) + if (selfDriver.SaveState != otherDriver.SaveState) return false; - if (selfDriver.Sound != cloneDriver.Sound) + if (selfDriver.Sound != otherDriver.Sound) return false; - if (selfDriver.Status != cloneDriver.Status) + if (selfDriver.Status != otherDriver.Status) return false; - if (selfDriver.Unofficial != cloneDriver.Unofficial) + if (selfDriver.Unofficial != otherDriver.Unofficial) return false; } - else if (self is Feature selfFeature && other is Feature cloneFeature) + else if (self is Feature selfFeature && other is Feature otherFeature) { - if (selfFeature.FeatureType != cloneFeature.FeatureType) + if (selfFeature.FeatureType != otherFeature.FeatureType) return false; - if (selfFeature.Overall != cloneFeature.Overall) + if (selfFeature.Overall != otherFeature.Overall) return false; - if (selfFeature.Status != cloneFeature.Status) + if (selfFeature.Status != otherFeature.Status) return false; - if (selfFeature.Value != cloneFeature.Value) + if (selfFeature.Value != otherFeature.Value) return false; } - else if (self is Header selfHeader && other is Header cloneHeader) + else if (self is Header selfHeader && other is Header otherHeader) { - if (selfHeader.BiosMode != cloneHeader.BiosMode) + if (selfHeader.Author != otherHeader.Author) return false; - if (selfHeader.Debug != cloneHeader.Debug) + if (selfHeader.BiosMode != otherHeader.BiosMode) return false; - if (selfHeader.Description != cloneHeader.Description) + if (selfHeader.Build != otherHeader.Build) return false; - if (selfHeader.ForceMerging != cloneHeader.ForceMerging) + if (selfHeader.Category != otherHeader.Category) return false; - if (selfHeader.ForceNodump != cloneHeader.ForceNodump) + if (selfHeader.Comment != otherHeader.Comment) return false; - if (selfHeader.ForcePacking != cloneHeader.ForcePacking) + if (selfHeader.Date != otherHeader.Date) return false; - if (selfHeader.ForceZipping != cloneHeader.ForceZipping) + if (selfHeader.DatVersion != otherHeader.DatVersion) return false; - if (selfHeader.LockBiosMode != cloneHeader.LockBiosMode) + if (selfHeader.Debug != otherHeader.Debug) return false; - if (selfHeader.LockRomMode != cloneHeader.LockRomMode) + if (selfHeader.Description != otherHeader.Description) return false; - if (selfHeader.LockSampleMode != cloneHeader.LockSampleMode) + if (selfHeader.Email != otherHeader.Email) return false; - if (selfHeader.RomMode != cloneHeader.RomMode) + if (selfHeader.EmulatorVersion != otherHeader.EmulatorVersion) return false; - if (selfHeader.SampleMode != cloneHeader.SampleMode) + if (selfHeader.ForceMerging != otherHeader.ForceMerging) + return false; + if (selfHeader.ForceNodump != otherHeader.ForceNodump) + return false; + if (selfHeader.ForcePacking != otherHeader.ForcePacking) + return false; + if (selfHeader.ForceZipping != otherHeader.ForceZipping) + return false; + if (selfHeader.Homepage != otherHeader.Homepage) + return false; + if (selfHeader.Id != otherHeader.Id) + return false; + if (selfHeader.LockBiosMode != otherHeader.LockBiosMode) + return false; + if (selfHeader.LockRomMode != otherHeader.LockRomMode) + return false; + if (selfHeader.LockSampleMode != otherHeader.LockSampleMode) + return false; + if (selfHeader.MameConfig != otherHeader.MameConfig) + return false; + if (selfHeader.Name != otherHeader.Name) + return false; + if (selfHeader.Notes != otherHeader.Notes) + return false; + if (selfHeader.Plugin != otherHeader.Plugin) + return false; + if (selfHeader.RefName != otherHeader.RefName) + return false; + if (selfHeader.RomMode != otherHeader.RomMode) + return false; + if (selfHeader.RomTitle != otherHeader.RomTitle) + return false; + if (selfHeader.RootDir != otherHeader.RootDir) + return false; + if (selfHeader.SampleMode != otherHeader.SampleMode) + return false; + if (selfHeader.System != otherHeader.System) + return false; + if (selfHeader.Timestamp != otherHeader.Timestamp) + return false; + if (selfHeader.Type != otherHeader.Type) + return false; + if (selfHeader.Url != otherHeader.Url) + return false; + if (selfHeader.Version != otherHeader.Version) return false; } - else if (self is Info selfInfo && other is Info cloneInfo) + else if (self is Info selfInfo && other is Info otherInfo) { - if (selfInfo.Value != cloneInfo.Value) + if (selfInfo.Value != otherInfo.Value) return false; } - else if (self is Input selfInput && other is Input cloneInput) + else if (self is Input selfInput && other is Input otherInput) { - if (selfInput.Service != cloneInput.Service) + if (selfInput.Service != otherInput.Service) return false; - if (selfInput.Tilt != cloneInput.Tilt) + if (selfInput.Tilt != otherInput.Tilt) return false; } - else if (self is Instance selfInstance && other is Instance cloneInstance) + else if (self is Instance selfInstance && other is Instance otherInstance) { - if (selfInstance.BriefName != cloneInstance.BriefName) + if (selfInstance.BriefName != otherInstance.BriefName) return false; } - else if (self is Machine selfMachine && other is Machine cloneMachine) + else if (self is Machine selfMachine && other is Machine otherMachine) { - if (selfMachine.Description != cloneMachine.Description) + if (selfMachine.Description != otherMachine.Description) return false; - if (selfMachine.IsBios != cloneMachine.IsBios) + if (selfMachine.IsBios != otherMachine.IsBios) return false; - if (selfMachine.IsDevice != cloneMachine.IsDevice) + if (selfMachine.IsDevice != otherMachine.IsDevice) return false; - if (selfMachine.IsMechanical != cloneMachine.IsMechanical) + if (selfMachine.IsMechanical != otherMachine.IsMechanical) return false; - if (selfMachine.Runnable != cloneMachine.Runnable) + if (selfMachine.Runnable != otherMachine.Runnable) return false; - if (selfMachine.Supported != cloneMachine.Supported) + if (selfMachine.Supported != otherMachine.Supported) return false; } - else if (self is Original selfOriginal && other is Original cloneOriginal) + else if (self is Media selfMedia && other is Media otherMedia) { - if (selfOriginal.Content != cloneOriginal.Content) + // Intentionally skipped here + } + else if (self is Original selfOriginal && other is Original otherOriginal) + { + if (selfOriginal.Content != otherOriginal.Content) return false; } - else if (self is Part selfPart && other is Part clonePart) + else if (self is Part selfPart && other is Part otherPart) { - if (selfPart.Interface != clonePart.Interface) + if (selfPart.Interface != otherPart.Interface) return false; } - else if (self is Port selfPort && other is Port clonePort) + else if (self is Port selfPort && other is Port otherPort) { - if (selfPort.Tag != clonePort.Tag) + if (selfPort.Tag != otherPort.Tag) return false; } - else if (self is RamOption selfRamOption && other is RamOption cloneRamOption) + else if (self is RamOption selfRamOption && other is RamOption otherRamOption) { - if (selfRamOption.Content != cloneRamOption.Content) + if (selfRamOption.Content != otherRamOption.Content) return false; - if (selfRamOption.Default != cloneRamOption.Default) + if (selfRamOption.Default != otherRamOption.Default) return false; } - else if (self is Release selfRelease && other is Release cloneRelease) + else if (self is Release selfRelease && other is Release otherRelease) { - if (selfRelease.Default != cloneRelease.Default) + if (selfRelease.Default != otherRelease.Default) return false; } - else if (self is SharedFeat selfSharedFeat && other is SharedFeat cloneSharedFeat) + else if (self is Rom selfRom && other is Rom otherRom) { - if (selfSharedFeat.Value != cloneSharedFeat.Value) + // Intentionally skipped here + } + else if (self is SharedFeat selfSharedFeat && other is SharedFeat otherSharedFeat) + { + if (selfSharedFeat.Value != otherSharedFeat.Value) return false; } - else if (self is SlotOption selfSlotOption && other is SlotOption cloneSlotOption) + else if (self is SlotOption selfSlotOption && other is SlotOption otherSlotOption) { - if (selfSlotOption.Default != cloneSlotOption.Default) + if (selfSlotOption.Default != otherSlotOption.Default) return false; - if (selfSlotOption.DevName != cloneSlotOption.DevName) + if (selfSlotOption.DevName != otherSlotOption.DevName) return false; } - else if (self is Software selfSoftware && other is Software cloneSoftware) + else if (self is Software selfSoftware && other is Software otherSoftware) { - if (selfSoftware.Description != cloneSoftware.Description) + if (selfSoftware.Description != otherSoftware.Description) return false; - if (selfSoftware.Supported != cloneSoftware.Supported) + if (selfSoftware.Supported != otherSoftware.Supported) return false; } - else if (self is SoftwareList selfSoftwareList && other is SoftwareList cloneSoftwareList) + else if (self is SoftwareList selfSoftwareList && other is SoftwareList otherSoftwareList) { - if (selfSoftwareList.Description != cloneSoftwareList.Description) + if (selfSoftwareList.Description != otherSoftwareList.Description) return false; - if (selfSoftwareList.Status != cloneSoftwareList.Status) + if (selfSoftwareList.Status != otherSoftwareList.Status) return false; - if (selfSoftwareList.Tag != cloneSoftwareList.Tag) + if (selfSoftwareList.Tag != otherSoftwareList.Tag) return false; } - else if (self is Video selfVideo && other is Video cloneVideo) + else if (self is Sound selfSound && other is Sound otherSound) { - if (selfVideo.Screen != cloneVideo.Screen) + if (selfSound.Channels != otherSound.Channels) + return false; + } + else if (self is Video selfVideo && other is Video otherVideo) + { + if (selfVideo.Refresh != otherVideo.Refresh) + return false; + if (selfVideo.Screen != otherVideo.Screen) return false; } From cdb74a9e263147f827505c8983fcb789658cea8b Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Fri, 3 Apr 2026 10:10:34 -0400 Subject: [PATCH 034/142] Use IEquatable where possible --- .../DictionaryBaseExtensions.cs | 64 ++++--------------- 1 file changed, 11 insertions(+), 53 deletions(-) diff --git a/SabreTools.Metadata/DictionaryBaseExtensions.cs b/SabreTools.Metadata/DictionaryBaseExtensions.cs index 1ef7fbce..e31e2775 100644 --- a/SabreTools.Metadata/DictionaryBaseExtensions.cs +++ b/SabreTools.Metadata/DictionaryBaseExtensions.cs @@ -14,7 +14,6 @@ namespace SabreTools.Metadata /// Check equality of two DictionaryBase objects /// /// TODO: Fix equality checking with case sensitivity of string properties - /// TODO: Use IEquatable where possible public static bool EqualTo(this DictionaryBase self, DictionaryBase other) { // Check types first @@ -46,7 +45,6 @@ namespace SabreTools.Metadata /// Check equality of two DictionaryBase objects /// /// TODO: Fix equality checking with case sensitivity of string properties - /// TODO: Use IEquatable where possible private static bool EqualsImpl(this DictionaryBase self, DictionaryBase other) { // If the number of key-value pairs doesn't match, they can't match @@ -71,7 +69,7 @@ namespace SabreTools.Metadata } else if (self is Analog selfAnalog && other is Analog otherAnalog) { - if (selfAnalog.Mask != otherAnalog.Mask) + if (!selfAnalog.Equals(otherAnalog)) return false; } else if (self is Archive selfArchive && other is Archive otherArchive) @@ -81,9 +79,7 @@ namespace SabreTools.Metadata } else if (self is BiosSet selfBiosSet && other is BiosSet otherBiosSet) { - if (selfBiosSet.Default != otherBiosSet.Default) - return false; - if (selfBiosSet.Description != otherBiosSet.Description) + if (!selfBiosSet.Equals(otherBiosSet)) return false; } else if (self is Chip selfChip && other is Chip otherChip) @@ -97,13 +93,7 @@ namespace SabreTools.Metadata } else if (self is Condition selfCondition && other is Condition otherCondition) { - if (selfCondition.Mask != otherCondition.Mask) - return false; - if (selfCondition.Relation != otherCondition.Relation) - return false; - if (selfCondition.Tag != otherCondition.Tag) - return false; - if (selfCondition.Value != otherCondition.Value) + if (!selfCondition.Equals(otherCondition)) return false; } else if (self is Configuration selfConfiguration && other is Configuration otherConfiguration) @@ -127,29 +117,7 @@ namespace SabreTools.Metadata } else if (self is Control selfControl && other is Control otherControl) { - if (selfControl.Buttons != otherControl.Buttons) - return false; - if (selfControl.ControlType != otherControl.ControlType) - return false; - if (selfControl.KeyDelta != otherControl.KeyDelta) - return false; - if (selfControl.Maximum != otherControl.Maximum) - return false; - if (selfControl.Minimum != otherControl.Minimum) - return false; - if (selfControl.Player != otherControl.Player) - return false; - if (selfControl.ReqButtons != otherControl.ReqButtons) - return false; - if (selfControl.Reverse != otherControl.Reverse) - return false; - if (selfControl.Sensitivity != otherControl.Sensitivity) - return false; - if (selfControl.Ways != otherControl.Ways) - return false; - if (selfControl.Ways2 != otherControl.Ways2) - return false; - if (selfControl.Ways3 != otherControl.Ways3) + if (!selfControl.Equals(otherControl)) return false; } else if (self is DataArea selfDataArea && other is DataArea otherDataArea) @@ -235,13 +203,7 @@ namespace SabreTools.Metadata } else if (self is Feature selfFeature && other is Feature otherFeature) { - if (selfFeature.FeatureType != otherFeature.FeatureType) - return false; - if (selfFeature.Overall != otherFeature.Overall) - return false; - if (selfFeature.Status != otherFeature.Status) - return false; - if (selfFeature.Value != otherFeature.Value) + if (!selfFeature.Equals(otherFeature)) return false; } else if (self is Header selfHeader && other is Header otherHeader) @@ -317,7 +279,7 @@ namespace SabreTools.Metadata } else if (self is Info selfInfo && other is Info otherInfo) { - if (selfInfo.Value != otherInfo.Value) + if (!selfInfo.Equals(otherInfo)) return false; } else if (self is Input selfInput && other is Input otherInput) @@ -329,7 +291,7 @@ namespace SabreTools.Metadata } else if (self is Instance selfInstance && other is Instance otherInstance) { - if (selfInstance.BriefName != otherInstance.BriefName) + if (!selfInstance.Equals(otherInstance)) return false; } else if (self is Machine selfMachine && other is Machine otherMachine) @@ -368,9 +330,7 @@ namespace SabreTools.Metadata } else if (self is RamOption selfRamOption && other is RamOption otherRamOption) { - if (selfRamOption.Content != otherRamOption.Content) - return false; - if (selfRamOption.Default != otherRamOption.Default) + if (!selfRamOption.Equals(otherRamOption)) return false; } else if (self is Release selfRelease && other is Release otherRelease) @@ -384,14 +344,12 @@ namespace SabreTools.Metadata } else if (self is SharedFeat selfSharedFeat && other is SharedFeat otherSharedFeat) { - if (selfSharedFeat.Value != otherSharedFeat.Value) + if (!selfSharedFeat.Equals(otherSharedFeat)) return false; } else if (self is SlotOption selfSlotOption && other is SlotOption otherSlotOption) { - if (selfSlotOption.Default != otherSlotOption.Default) - return false; - if (selfSlotOption.DevName != otherSlotOption.DevName) + if (!selfSlotOption.Equals(otherSlotOption)) return false; } else if (self is Software selfSoftware && other is Software otherSoftware) @@ -412,7 +370,7 @@ namespace SabreTools.Metadata } else if (self is Sound selfSound && other is Sound otherSound) { - if (selfSound.Channels != otherSound.Channels) + if (!selfSound.Equals(otherSound)) return false; } else if (self is Video selfVideo && other is Video otherVideo) From dc773dba5e632ddfca2b40ba1dc63699688dc48d Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Fri, 3 Apr 2026 10:26:20 -0400 Subject: [PATCH 035/142] Convert Chip fully over to properties --- .../MetadataExtensions.cs | 2 + SabreTools.Data.Models/ClrMamePro/Chip.cs | 4 +- SabreTools.Data.Models/Listxml/Chip.cs | 2 +- SabreTools.Data.Models/Metadata/Chip.cs | 67 ++++++++++++++++--- .../DatFileTests.FromMetadata.cs | 8 +-- .../DatFileTests.ToMetadata.cs | 4 +- SabreTools.Metadata.DatItems/Formats/Chip.cs | 12 ++++ SabreTools.Metadata.Filter/FilterObject.cs | 6 ++ .../DictionaryBaseExtensions.cs | 6 +- .../ClrMameProTests.cs | 8 +-- .../ListxmlTests.cs | 4 +- .../M1Tests.cs | 4 +- .../MessTests.cs | 4 +- .../ClrMamePro.Deserializer.cs | 4 +- .../ClrMamePro.Serializer.cs | 4 +- .../Listxml.Deserializer.cs | 2 +- .../Listxml.Serializer.cs | 2 +- .../ClrMameProTests.cs | 8 +-- .../ListxmlTests.cs | 4 +- .../M1Tests.cs | 4 +- .../MessTests.cs | 4 +- .../ClrMamePro.cs | 2 +- SabreTools.Serialization.Readers/Listxml.cs | 2 +- SabreTools.Serialization.Readers/M1.cs | 2 +- SabreTools.Serialization.Readers/Mess.cs | 2 +- .../ClrMamePro.cs | 2 +- SabreTools.Serialization.Writers/Listxml.cs | 2 +- SabreTools.Serialization.Writers/M1.cs | 2 +- SabreTools.Serialization.Writers/Mess.cs | 2 +- 29 files changed, 120 insertions(+), 59 deletions(-) diff --git a/SabreTools.Data.Extensions/MetadataExtensions.cs b/SabreTools.Data.Extensions/MetadataExtensions.cs index 8ece4688..97c7711f 100644 --- a/SabreTools.Data.Extensions/MetadataExtensions.cs +++ b/SabreTools.Data.Extensions/MetadataExtensions.cs @@ -167,6 +167,8 @@ namespace SabreTools.Data.Extensions else if (self is Chip selfChip && clone is Chip cloneChip) { cloneChip.ChipType = selfChip.ChipType; + cloneChip.Clock = selfChip.Clock; + cloneChip.Flags = selfChip.Flags; cloneChip.SoundOnly = selfChip.SoundOnly; cloneChip.Tag = selfChip.Tag; } diff --git a/SabreTools.Data.Models/ClrMamePro/Chip.cs b/SabreTools.Data.Models/ClrMamePro/Chip.cs index 4c9c603b..282e53fe 100644 --- a/SabreTools.Data.Models/ClrMamePro/Chip.cs +++ b/SabreTools.Data.Models/ClrMamePro/Chip.cs @@ -17,7 +17,7 @@ namespace SabreTools.Data.Models.ClrMamePro /// flags public string? Flags { get; set; } - /// clock, Numeric? - public string? Clock { get; set; } + /// clock + public long? Clock { get; set; } } } diff --git a/SabreTools.Data.Models/Listxml/Chip.cs b/SabreTools.Data.Models/Listxml/Chip.cs index 1b19195b..b447e24c 100644 --- a/SabreTools.Data.Models/Listxml/Chip.cs +++ b/SabreTools.Data.Models/Listxml/Chip.cs @@ -24,6 +24,6 @@ namespace SabreTools.Data.Models.Listxml public bool? SoundOnly { get; set; } [XmlAttribute("clock")] - public string? Clock { get; set; } + public long? Clock { get; set; } } } diff --git a/SabreTools.Data.Models/Metadata/Chip.cs b/SabreTools.Data.Models/Metadata/Chip.cs index 89f851c2..e55ac97f 100644 --- a/SabreTools.Data.Models/Metadata/Chip.cs +++ b/SabreTools.Data.Models/Metadata/Chip.cs @@ -1,16 +1,21 @@ +using System; using System.Xml.Serialization; using Newtonsoft.Json; namespace SabreTools.Data.Models.Metadata { [JsonObject("chip"), XmlRoot("chip")] - public class Chip : DatItem + public class Chip : DatItem, ICloneable, IEquatable { #region Properties /// (cpu|audio) public ChipType? ChipType { get; set; } + public long? Clock { get; set; } + + public string? Flags { get; set; } + public string? Name { get; set; } /// (yes|no) "no" @@ -20,16 +25,56 @@ namespace SabreTools.Data.Models.Metadata #endregion - #region Keys - - /// long - public const string ClockKey = "clock"; - - /// string - public const string FlagsKey = "flags"; - - #endregion - public Chip() => ItemType = ItemType.Chip; + + /// + public object Clone() + { + var obj = new Chip(); + + obj.ChipType = ChipType; + obj.Clock = Clock; + obj.Flags = Flags; + obj.Name = Name; + obj.SoundOnly = SoundOnly; + obj.Tag = Tag; + + return obj; + } + + /// + public bool Equals(Chip? other) + { + // Null never matches + if (other is null) + return false; + + // Properties + if (ChipType != other.ChipType) + return false; + + if (Clock != other.Clock) + return false; + + if ((Flags is null) ^ (other.Flags is null)) + return false; + else if (Flags is not null && !Flags.Equals(other.Flags, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((Name is null) ^ (other.Name is null)) + return false; + else if (Name is not null && !Name.Equals(other.Name, StringComparison.OrdinalIgnoreCase)) + return false; + + if (SoundOnly != other.SoundOnly) + return false; + + if ((Tag is null) ^ (other.Tag is null)) + return false; + else if (Tag is not null && !Tag.Equals(other.Tag, StringComparison.OrdinalIgnoreCase)) + return false; + + return true; + } } } diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs index df57d032..cb9fba6a 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs @@ -404,8 +404,8 @@ namespace SabreTools.Metadata.DatFiles.Test { return new Data.Models.Metadata.Chip { - [Data.Models.Metadata.Chip.ClockKey] = 12345L, - [Data.Models.Metadata.Chip.FlagsKey] = "flags", + Clock = 12345L, + Flags = "flags", Name = "name", SoundOnly = true, Tag = "tag", @@ -1174,8 +1174,8 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateChip(Chip? chip) { Assert.NotNull(chip); - Assert.Equal(12345L, chip.ReadLong(Data.Models.Metadata.Chip.ClockKey)); - Assert.Equal("flags", chip.ReadString(Data.Models.Metadata.Chip.FlagsKey)); + Assert.Equal(12345L, chip.Clock); + Assert.Equal("flags", chip.Flags); Assert.Equal("name", chip.Name); Assert.True(chip.SoundOnly); Assert.Equal("tag", chip.Tag); diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs index 6c3f053f..1048ab62 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs @@ -681,8 +681,8 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateMetadataChip(Data.Models.Metadata.Chip? chip) { Assert.NotNull(chip); - Assert.Equal(12345, chip.ReadLong(Data.Models.Metadata.Chip.ClockKey)); - Assert.Equal("flags", chip.ReadString(Data.Models.Metadata.Chip.FlagsKey)); + Assert.Equal(12345, chip.Clock); + Assert.Equal("flags", chip.Flags); Assert.Equal("name", chip.Name); Assert.True(chip.SoundOnly); Assert.Equal("tag", chip.Tag); diff --git a/SabreTools.Metadata.DatItems/Formats/Chip.cs b/SabreTools.Metadata.DatItems/Formats/Chip.cs index 9dcfcd20..d0ae1be7 100644 --- a/SabreTools.Metadata.DatItems/Formats/Chip.cs +++ b/SabreTools.Metadata.DatItems/Formats/Chip.cs @@ -22,6 +22,18 @@ namespace SabreTools.Metadata.DatItems.Formats public override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Chip; + public long? Clock + { + get => (_internal as Data.Models.Metadata.Chip)?.Clock; + set => (_internal as Data.Models.Metadata.Chip)?.Clock = value; + } + + public string? Flags + { + get => (_internal as Data.Models.Metadata.Chip)?.Flags; + set => (_internal as Data.Models.Metadata.Chip)?.Flags = value; + } + public string? Name { get => (_internal as Data.Models.Metadata.Chip)?.Name; diff --git a/SabreTools.Metadata.Filter/FilterObject.cs b/SabreTools.Metadata.Filter/FilterObject.cs index d00091ed..dc33be38 100644 --- a/SabreTools.Metadata.Filter/FilterObject.cs +++ b/SabreTools.Metadata.Filter/FilterObject.cs @@ -370,6 +370,12 @@ namespace SabreTools.Metadata.Filter case Chip item when fieldName == "type": checkValue = item.ChipType?.AsStringValue(); return true; + case Chip item when fieldName == "clock": + checkValue = item.Clock?.ToString(); + return true; + case Chip item when fieldName == "flags": + checkValue = item.Flags; + return true; case Chip item when fieldName == "soundonly": checkValue = item.SoundOnly.FromYesNo(); return true; diff --git a/SabreTools.Metadata/DictionaryBaseExtensions.cs b/SabreTools.Metadata/DictionaryBaseExtensions.cs index e31e2775..bedc6c69 100644 --- a/SabreTools.Metadata/DictionaryBaseExtensions.cs +++ b/SabreTools.Metadata/DictionaryBaseExtensions.cs @@ -84,11 +84,7 @@ namespace SabreTools.Metadata } else if (self is Chip selfChip && other is Chip otherChip) { - if (selfChip.ChipType != otherChip.ChipType) - return false; - if (selfChip.SoundOnly != otherChip.SoundOnly) - return false; - if (selfChip.Tag != otherChip.Tag) + if (!selfChip.Equals(otherChip)) return false; } else if (self is Condition selfCondition && other is Condition otherCondition) diff --git a/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs b/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs index 67cdb08c..38149fa0 100644 --- a/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs @@ -158,8 +158,8 @@ namespace SabreTools.Serialization.CrossModel.Test { Type = Data.Models.Metadata.ChipType.CPU, Name = "name", - Flags = "XXXXXX", - Clock = "XXXXXX", + Flags = "flags", + Clock = 12345, }; var video = new Data.Models.ClrMamePro.Video @@ -441,8 +441,8 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(chip); Assert.Equal(Data.Models.Metadata.ChipType.CPU, chip.Type); Assert.Equal("name", chip.Name); - Assert.Equal("XXXXXX", chip.Flags); - Assert.Equal("XXXXXX", chip.Clock); + Assert.Equal("flags", chip.Flags); + Assert.Equal(12345, chip.Clock); } /// diff --git a/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs b/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs index d8031044..ba51404d 100644 --- a/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs @@ -115,7 +115,7 @@ namespace SabreTools.Serialization.CrossModel.Test Tag = "tag", Type = Data.Models.Metadata.ChipType.CPU, SoundOnly = true, - Clock = "XXXXXX", + Clock = 12345, }; var display = new Data.Models.Listxml.Display @@ -543,7 +543,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("tag", chip.Tag); Assert.Equal(Data.Models.Metadata.ChipType.CPU, chip.Type); Assert.Equal(true, chip.SoundOnly); - Assert.Equal("XXXXXX", chip.Clock); + Assert.Equal(12345, chip.Clock); } /// diff --git a/SabreTools.Serialization.CrossModel.Test/M1Tests.cs b/SabreTools.Serialization.CrossModel.Test/M1Tests.cs index 2018128f..2106dda8 100644 --- a/SabreTools.Serialization.CrossModel.Test/M1Tests.cs +++ b/SabreTools.Serialization.CrossModel.Test/M1Tests.cs @@ -111,7 +111,7 @@ namespace SabreTools.Serialization.CrossModel.Test Tag = "tag", Type = Data.Models.Metadata.ChipType.CPU, SoundOnly = true, - Clock = "XXXXXX", + Clock = 12345, }; var display = new Data.Models.Listxml.Display @@ -537,7 +537,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("tag", chip.Tag); Assert.Equal(Data.Models.Metadata.ChipType.CPU, chip.Type); Assert.Equal(true, chip.SoundOnly); - Assert.Equal("XXXXXX", chip.Clock); + Assert.Equal(12345, chip.Clock); } /// diff --git a/SabreTools.Serialization.CrossModel.Test/MessTests.cs b/SabreTools.Serialization.CrossModel.Test/MessTests.cs index 1bb302a1..65a1e2b3 100644 --- a/SabreTools.Serialization.CrossModel.Test/MessTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/MessTests.cs @@ -111,7 +111,7 @@ namespace SabreTools.Serialization.CrossModel.Test Tag = "tag", Type = Data.Models.Metadata.ChipType.CPU, SoundOnly = true, - Clock = "XXXXXX", + Clock = 12345, }; var display = new Data.Models.Listxml.Display @@ -537,7 +537,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("tag", chip.Tag); Assert.Equal(Data.Models.Metadata.ChipType.CPU, chip.Type); Assert.Equal(true, chip.SoundOnly); - Assert.Equal("XXXXXX", chip.Clock); + Assert.Equal(12345, chip.Clock); } /// diff --git a/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs b/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs index 27aa5c67..b08037f3 100644 --- a/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs @@ -169,8 +169,8 @@ namespace SabreTools.Serialization.CrossModel { Type = item.ChipType, Name = item.Name, - Flags = item.ReadString(Data.Models.Metadata.Chip.FlagsKey), - Clock = item.ReadString(Data.Models.Metadata.Chip.ClockKey), + Flags = item.Flags, + Clock = item.Clock, }; return chip; } diff --git a/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs b/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs index 66c50528..dd867657 100644 --- a/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs @@ -182,8 +182,8 @@ namespace SabreTools.Serialization.CrossModel { ChipType = item.Type, Name = item.Name, - [Data.Models.Metadata.Chip.FlagsKey] = item.Flags, - [Data.Models.Metadata.Chip.ClockKey] = item.Clock, + Flags = item.Flags, + Clock = item.Clock, }; return chip; } diff --git a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs index 375f0607..2113918e 100644 --- a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs @@ -196,7 +196,7 @@ namespace SabreTools.Serialization.CrossModel Tag = item.Tag, Type = item.ChipType, SoundOnly = item.SoundOnly, - Clock = item.ReadString(Data.Models.Metadata.Chip.ClockKey), + Clock = item.Clock, }; return chip; } diff --git a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs index 5d21682f..fc3fe690 100644 --- a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs @@ -229,7 +229,7 @@ namespace SabreTools.Serialization.CrossModel Tag = item.Tag, ChipType = item.Type, SoundOnly = item.SoundOnly, - [Data.Models.Metadata.Chip.ClockKey] = item.Clock, + Clock = item.Clock, }; return chip; } diff --git a/SabreTools.Serialization.Readers.Test/ClrMameProTests.cs b/SabreTools.Serialization.Readers.Test/ClrMameProTests.cs index 3fab116b..a47636c8 100644 --- a/SabreTools.Serialization.Readers.Test/ClrMameProTests.cs +++ b/SabreTools.Serialization.Readers.Test/ClrMameProTests.cs @@ -275,8 +275,8 @@ namespace SabreTools.Serialization.Readers.Test { Type = Data.Models.Metadata.ChipType.CPU, Name = "name", - Flags = "XXXXXX", - Clock = "XXXXXX", + Flags = "flags", + Clock = 12345, }; var video = new Data.Models.ClrMamePro.Video @@ -558,8 +558,8 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(chip); Assert.Equal(Data.Models.Metadata.ChipType.CPU, chip.Type); Assert.Equal("name", chip.Name); - Assert.Equal("XXXXXX", chip.Flags); - Assert.Equal("XXXXXX", chip.Clock); + Assert.Equal("flags", chip.Flags); + Assert.Equal(12345, chip.Clock); } /// diff --git a/SabreTools.Serialization.Readers.Test/ListxmlTests.cs b/SabreTools.Serialization.Readers.Test/ListxmlTests.cs index 111b1b23..986ad35c 100644 --- a/SabreTools.Serialization.Readers.Test/ListxmlTests.cs +++ b/SabreTools.Serialization.Readers.Test/ListxmlTests.cs @@ -182,7 +182,7 @@ namespace SabreTools.Serialization.Readers.Test Tag = "tag", Type = Data.Models.Metadata.ChipType.CPU, SoundOnly = true, - Clock = "XXXXXX", + Clock = 12345, }; var display = new Data.Models.Listxml.Display @@ -610,7 +610,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("tag", chip.Tag); Assert.Equal(Data.Models.Metadata.ChipType.CPU, chip.Type); Assert.Equal(true, chip.SoundOnly); - Assert.Equal("XXXXXX", chip.Clock); + Assert.Equal(12345, chip.Clock); } /// diff --git a/SabreTools.Serialization.Readers.Test/M1Tests.cs b/SabreTools.Serialization.Readers.Test/M1Tests.cs index 9c42212c..a394554b 100644 --- a/SabreTools.Serialization.Readers.Test/M1Tests.cs +++ b/SabreTools.Serialization.Readers.Test/M1Tests.cs @@ -178,7 +178,7 @@ namespace SabreTools.Serialization.Readers.Test Tag = "tag", Type = Data.Models.Metadata.ChipType.CPU, SoundOnly = true, - Clock = "XXXXXX", + Clock = 12345, }; var display = new Data.Models.Listxml.Display @@ -604,7 +604,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("tag", chip.Tag); Assert.Equal(Data.Models.Metadata.ChipType.CPU, chip.Type); Assert.Equal(true, chip.SoundOnly); - Assert.Equal("XXXXXX", chip.Clock); + Assert.Equal(12345, chip.Clock); } /// diff --git a/SabreTools.Serialization.Readers.Test/MessTests.cs b/SabreTools.Serialization.Readers.Test/MessTests.cs index 146628c2..8f1a3913 100644 --- a/SabreTools.Serialization.Readers.Test/MessTests.cs +++ b/SabreTools.Serialization.Readers.Test/MessTests.cs @@ -178,7 +178,7 @@ namespace SabreTools.Serialization.Readers.Test Tag = "tag", Type = Data.Models.Metadata.ChipType.CPU, SoundOnly = true, - Clock = "XXXXXX", + Clock = 12345, }; var display = new Data.Models.Listxml.Display @@ -604,7 +604,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("tag", chip.Tag); Assert.Equal(Data.Models.Metadata.ChipType.CPU, chip.Type); Assert.Equal(true, chip.SoundOnly); - Assert.Equal("XXXXXX", chip.Clock); + Assert.Equal(12345, chip.Clock); } /// diff --git a/SabreTools.Serialization.Readers/ClrMamePro.cs b/SabreTools.Serialization.Readers/ClrMamePro.cs index f2454b1d..6227cef7 100644 --- a/SabreTools.Serialization.Readers/ClrMamePro.cs +++ b/SabreTools.Serialization.Readers/ClrMamePro.cs @@ -776,7 +776,7 @@ namespace SabreTools.Serialization.Readers chip.Flags = kvp.Value; break; case "clock": - chip.Clock = kvp.Value; + chip.Clock = NumberHelper.ConvertToInt64(kvp.Value); break; default: // TODO: Log invalid values diff --git a/SabreTools.Serialization.Readers/Listxml.cs b/SabreTools.Serialization.Readers/Listxml.cs index 1a55afa3..750e4135 100644 --- a/SabreTools.Serialization.Readers/Listxml.cs +++ b/SabreTools.Serialization.Readers/Listxml.cs @@ -192,7 +192,7 @@ namespace SabreTools.Serialization.Readers obj.Tag = reader.GetAttribute("tag"); obj.Type = reader.GetAttribute("type").AsChipType(); obj.SoundOnly = reader.GetAttribute("soundonly").AsYesNo(); - obj.Clock = reader.GetAttribute("clock"); + obj.Clock = NumberHelper.ConvertToInt64(reader.GetAttribute("clock")); return obj; } diff --git a/SabreTools.Serialization.Readers/M1.cs b/SabreTools.Serialization.Readers/M1.cs index f8853d96..6420d027 100644 --- a/SabreTools.Serialization.Readers/M1.cs +++ b/SabreTools.Serialization.Readers/M1.cs @@ -190,7 +190,7 @@ namespace SabreTools.Serialization.Readers obj.Tag = reader.GetAttribute("tag"); obj.Type = reader.GetAttribute("type").AsChipType(); obj.SoundOnly = reader.GetAttribute("soundonly").AsYesNo(); - obj.Clock = reader.GetAttribute("clock"); + obj.Clock = NumberHelper.ConvertToInt64(reader.GetAttribute("clock")); return obj; } diff --git a/SabreTools.Serialization.Readers/Mess.cs b/SabreTools.Serialization.Readers/Mess.cs index 3c6346dc..c81db4d5 100644 --- a/SabreTools.Serialization.Readers/Mess.cs +++ b/SabreTools.Serialization.Readers/Mess.cs @@ -190,7 +190,7 @@ namespace SabreTools.Serialization.Readers obj.Tag = reader.GetAttribute("tag"); obj.Type = reader.GetAttribute("type").AsChipType(); obj.SoundOnly = reader.GetAttribute("soundonly").AsYesNo(); - obj.Clock = reader.GetAttribute("clock"); + obj.Clock = NumberHelper.ConvertToInt64(reader.GetAttribute("clock")); return obj; } diff --git a/SabreTools.Serialization.Writers/ClrMamePro.cs b/SabreTools.Serialization.Writers/ClrMamePro.cs index 1a066d65..392f8627 100644 --- a/SabreTools.Serialization.Writers/ClrMamePro.cs +++ b/SabreTools.Serialization.Writers/ClrMamePro.cs @@ -393,7 +393,7 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("type", chip.Type?.AsStringValue(), throwOnError: true); writer.WriteRequiredAttributeString("name", chip.Name, throwOnError: true); writer.WriteOptionalAttributeString("flags", chip.Flags); - writer.WriteOptionalAttributeString("clock", chip.Clock); + writer.WriteOptionalAttributeString("clock", chip.Clock?.ToString()); writer.WriteEndElement(); // chip } } diff --git a/SabreTools.Serialization.Writers/Listxml.cs b/SabreTools.Serialization.Writers/Listxml.cs index 4564fa6b..e3d701a0 100644 --- a/SabreTools.Serialization.Writers/Listxml.cs +++ b/SabreTools.Serialization.Writers/Listxml.cs @@ -127,7 +127,7 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalAttributeString("tag", obj.Tag); writer.WriteRequiredAttributeString("type", obj.Type?.AsStringValue()); writer.WriteOptionalAttributeString("soundonly", obj.SoundOnly.FromYesNo()); - writer.WriteOptionalAttributeString("clock", obj.Clock); + writer.WriteOptionalAttributeString("clock", obj.Clock?.ToString()); writer.WriteEndElement(); } diff --git a/SabreTools.Serialization.Writers/M1.cs b/SabreTools.Serialization.Writers/M1.cs index 065eefb6..9151b56c 100644 --- a/SabreTools.Serialization.Writers/M1.cs +++ b/SabreTools.Serialization.Writers/M1.cs @@ -125,7 +125,7 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalAttributeString("tag", obj.Tag); writer.WriteRequiredAttributeString("type", obj.Type?.AsStringValue()); writer.WriteOptionalAttributeString("soundonly", obj.SoundOnly.FromYesNo()); - writer.WriteOptionalAttributeString("clock", obj.Clock); + writer.WriteOptionalAttributeString("clock", obj.Clock?.ToString()); writer.WriteEndElement(); } diff --git a/SabreTools.Serialization.Writers/Mess.cs b/SabreTools.Serialization.Writers/Mess.cs index ddaa7ad9..45397c60 100644 --- a/SabreTools.Serialization.Writers/Mess.cs +++ b/SabreTools.Serialization.Writers/Mess.cs @@ -125,7 +125,7 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalAttributeString("tag", obj.Tag); writer.WriteRequiredAttributeString("type", obj.Type?.AsStringValue()); writer.WriteOptionalAttributeString("soundonly", obj.SoundOnly.FromYesNo()); - writer.WriteOptionalAttributeString("clock", obj.Clock); + writer.WriteOptionalAttributeString("clock", obj.Clock?.ToString()); writer.WriteEndElement(); } From 33958d37fd6d4fe58ad216cd8103c015f0efbce1 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Fri, 3 Apr 2026 10:33:10 -0400 Subject: [PATCH 036/142] Use ICloneable implementations in DeepClone --- .../MetadataExtensions.cs | 104 ++++++------------ 1 file changed, 32 insertions(+), 72 deletions(-) diff --git a/SabreTools.Data.Extensions/MetadataExtensions.cs b/SabreTools.Data.Extensions/MetadataExtensions.cs index 97c7711f..26e77d48 100644 --- a/SabreTools.Data.Extensions/MetadataExtensions.cs +++ b/SabreTools.Data.Extensions/MetadataExtensions.cs @@ -142,6 +142,38 @@ namespace SabreTools.Data.Extensions /// TODO: Move this to Clone methods in each file when keys go away entirely public static DictionaryBase? DeepClone(this DictionaryBase self) { + // Handle types that are cloneable + if (self is Analog analog) + return analog.Clone() as Analog; + else if (self is BiosSet biosSet) + return biosSet.Clone() as BiosSet; + else if (self is Blank blank) + return blank.Clone() as Blank; + else if (self is Chip chip) + return chip.Clone() as Chip; + else if (self is Condition condition) + return condition.Clone() as Condition; + else if (self is Control control) + return control.Clone() as Control; + else if (self is DeviceRef deviceRef) + return deviceRef.Clone() as DeviceRef; + else if (self is Extension extension) + return extension.Clone() as Extension; + else if (self is Feature feature) + return feature.Clone() as Feature; + else if (self is Info info) + return info.Clone() as Info; + else if (self is Instance instance) + return instance.Clone() as Instance; + else if (self is RamOption ramOption) + return ramOption.Clone() as RamOption; + else if (self is SharedFeat sharedFeat) + return sharedFeat.Clone() as SharedFeat; + else if (self is SlotOption slotOption) + return slotOption.Clone() as SlotOption; + else if (self is Sound sound) + return sound.Clone() as Sound; + // If construction failed, we can't do anything if (Activator.CreateInstance(self.GetType()) is not DictionaryBase clone) return null; @@ -151,34 +183,10 @@ namespace SabreTools.Data.Extensions { cloneAdjuster.Default = selfAdjuster.Default; } - else if (self is Analog selfAnalog && clone is Analog cloneAnalog) - { - cloneAnalog.Mask = selfAnalog.Mask; - } else if (self is Archive selfArchive && clone is Archive cloneArchive) { cloneArchive.Description = selfArchive.Description; } - else if (self is BiosSet selfBiosSet && clone is BiosSet cloneBiosSet) - { - cloneBiosSet.Default = selfBiosSet.Default; - cloneBiosSet.Description = selfBiosSet.Description; - } - else if (self is Chip selfChip && clone is Chip cloneChip) - { - cloneChip.ChipType = selfChip.ChipType; - cloneChip.Clock = selfChip.Clock; - cloneChip.Flags = selfChip.Flags; - cloneChip.SoundOnly = selfChip.SoundOnly; - cloneChip.Tag = selfChip.Tag; - } - else if (self is Condition selfCondition && clone is Condition cloneCondition) - { - cloneCondition.Mask = selfCondition.Mask; - cloneCondition.Relation = selfCondition.Relation; - cloneCondition.Tag = selfCondition.Tag; - cloneCondition.Value = selfCondition.Value; - } else if (self is Configuration selfConfiguration && clone is Configuration cloneConfiguration) { cloneConfiguration.Mask = selfConfiguration.Mask; @@ -193,21 +201,6 @@ namespace SabreTools.Data.Extensions cloneConfSetting.Default = selfConfSetting.Default; cloneConfSetting.Value = selfConfSetting.Value; } - else if (self is Control selfControl && clone is Control cloneControl) - { - cloneControl.Buttons = selfControl.Buttons; - cloneControl.ControlType = selfControl.ControlType; - cloneControl.KeyDelta = selfControl.KeyDelta; - cloneControl.Maximum = selfControl.Maximum; - cloneControl.Minimum = selfControl.Minimum; - cloneControl.Player = selfControl.Player; - cloneControl.ReqButtons = selfControl.ReqButtons; - cloneControl.Reverse = selfControl.Reverse; - cloneControl.Sensitivity = selfControl.Sensitivity; - cloneControl.Ways = selfControl.Ways; - cloneControl.Ways2 = selfControl.Ways2; - cloneControl.Ways3 = selfControl.Ways3; - } else if (self is DataArea selfDataArea && clone is DataArea cloneDataArea) { cloneDataArea.Endianness = selfDataArea.Endianness; @@ -263,13 +256,6 @@ namespace SabreTools.Data.Extensions cloneDriver.Status = selfDriver.Status; cloneDriver.Unofficial = selfDriver.Unofficial; } - else if (self is Feature selfFeature && clone is Feature cloneFeature) - { - cloneFeature.FeatureType = selfFeature.FeatureType; - cloneFeature.Overall = selfFeature.Overall; - cloneFeature.Status = selfFeature.Status; - cloneFeature.Value = selfFeature.Value; - } else if (self is Header selfHeader && clone is Header cloneHeader) { cloneHeader.Author = selfHeader.Author; @@ -307,19 +293,11 @@ namespace SabreTools.Data.Extensions cloneHeader.Url = selfHeader.Url; cloneHeader.Version = selfHeader.Version; } - else if (self is Info selfInfo && clone is Info cloneInfo) - { - cloneInfo.Value = selfInfo.Value; - } else if (self is Input selfInput && clone is Input cloneInput) { cloneInput.Service = selfInput.Service; cloneInput.Tilt = selfInput.Tilt; } - else if (self is Instance selfInstance && clone is Instance cloneInstance) - { - cloneInstance.BriefName = selfInstance.BriefName; - } else if (self is Machine selfMachine && clone is Machine cloneMachine) { cloneMachine.Description = selfMachine.Description; @@ -341,11 +319,6 @@ namespace SabreTools.Data.Extensions { clonePort.Tag = selfPort.Tag; } - else if (self is RamOption selfRamOption && clone is RamOption cloneRamOption) - { - cloneRamOption.Content = selfRamOption.Content; - cloneRamOption.Default = selfRamOption.Default; - } else if (self is Release selfRelease && clone is Release cloneRelease) { cloneRelease.Default = selfRelease.Default; @@ -364,15 +337,6 @@ namespace SabreTools.Data.Extensions cloneRom.Status = selfRom.Status; cloneRom.Value = selfRom.Value; } - else if (self is SharedFeat selfSharedFeat && clone is SharedFeat cloneSharedFeat) - { - cloneSharedFeat.Value = selfSharedFeat.Value; - } - else if (self is SlotOption selfSlotOption && clone is SlotOption cloneSlotOption) - { - cloneSlotOption.Default = selfSlotOption.Default; - cloneSlotOption.DevName = selfSlotOption.DevName; - } else if (self is Software selfSoftware && clone is Software cloneSoftware) { cloneSoftware.Description = selfSoftware.Description; @@ -384,10 +348,6 @@ namespace SabreTools.Data.Extensions cloneSoftwareList.Status = selfSoftwareList.Status; cloneSoftwareList.Tag = selfSoftwareList.Tag; } - else if (self is Sound selfSound && clone is Sound cloneSound) - { - cloneSound.Channels = selfSound.Channels; - } else if (self is Video selfVideo && clone is Video cloneVideo) { cloneVideo.Refresh = selfVideo.Refresh; From 280e65775a9d6431d8289e4ddf5f30ea426d6e4a Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Fri, 3 Apr 2026 10:59:04 -0400 Subject: [PATCH 037/142] Convert ConfLocation fully over to properties --- .../MetadataExtensions.cs | 6 +-- .../Listxml/ConfLocation.cs | 3 +- .../Metadata/ConfLocation.cs | 44 ++++++++++++++++--- .../DatFileTests.FromMetadata.cs | 4 +- .../DatFileTests.ToMetadata.cs | 2 +- .../Formats/ConfLocation.cs | 12 +++-- SabreTools.Metadata.Filter/FilterObject.cs | 3 ++ .../DictionaryBaseExtensions.cs | 2 +- .../ListxmlTests.cs | 4 +- .../M1Tests.cs | 4 +- .../MessTests.cs | 4 +- .../Listxml.Deserializer.cs | 2 +- .../Listxml.Serializer.cs | 2 +- .../ListxmlTests.cs | 4 +- .../M1Tests.cs | 4 +- .../MessTests.cs | 4 +- SabreTools.Serialization.Readers/Listxml.cs | 2 +- SabreTools.Serialization.Readers/M1.cs | 2 +- SabreTools.Serialization.Readers/Mess.cs | 2 +- SabreTools.Serialization.Writers/Listxml.cs | 2 +- SabreTools.Serialization.Writers/M1.cs | 2 +- SabreTools.Serialization.Writers/Mess.cs | 2 +- 22 files changed, 76 insertions(+), 40 deletions(-) diff --git a/SabreTools.Data.Extensions/MetadataExtensions.cs b/SabreTools.Data.Extensions/MetadataExtensions.cs index 26e77d48..bbc391ae 100644 --- a/SabreTools.Data.Extensions/MetadataExtensions.cs +++ b/SabreTools.Data.Extensions/MetadataExtensions.cs @@ -153,6 +153,8 @@ namespace SabreTools.Data.Extensions return chip.Clone() as Chip; else if (self is Condition condition) return condition.Clone() as Condition; + else if (self is ConfLocation confLocation) + return confLocation.Clone() as ConfLocation; else if (self is Control control) return control.Clone() as Control; else if (self is DeviceRef deviceRef) @@ -192,10 +194,6 @@ namespace SabreTools.Data.Extensions cloneConfiguration.Mask = selfConfiguration.Mask; cloneConfiguration.Tag = selfConfiguration.Tag; } - else if (self is ConfLocation selfConfLocation && clone is ConfLocation cloneConfLocation) - { - cloneConfLocation.Inverted = selfConfLocation.Inverted; - } else if (self is ConfSetting selfConfSetting && clone is ConfSetting cloneConfSetting) { cloneConfSetting.Default = selfConfSetting.Default; diff --git a/SabreTools.Data.Models/Listxml/ConfLocation.cs b/SabreTools.Data.Models/Listxml/ConfLocation.cs index b6fe99b3..de57786f 100644 --- a/SabreTools.Data.Models/Listxml/ConfLocation.cs +++ b/SabreTools.Data.Models/Listxml/ConfLocation.cs @@ -10,10 +10,9 @@ namespace SabreTools.Data.Models.Listxml [XmlAttribute("name")] public string? Name { get; set; } - /// Numeric? [Required] [XmlAttribute("number")] - public string? Number { get; set; } + public long? Number { get; set; } /// (yes|no) "no" [XmlAttribute("inverted")] diff --git a/SabreTools.Data.Models/Metadata/ConfLocation.cs b/SabreTools.Data.Models/Metadata/ConfLocation.cs index 211330c0..bea51e61 100644 --- a/SabreTools.Data.Models/Metadata/ConfLocation.cs +++ b/SabreTools.Data.Models/Metadata/ConfLocation.cs @@ -1,10 +1,11 @@ +using System; using System.Xml.Serialization; using Newtonsoft.Json; namespace SabreTools.Data.Models.Metadata { [JsonObject("conflocation"), XmlRoot("conflocation")] - public class ConfLocation : DatItem + public class ConfLocation : DatItem, ICloneable, IEquatable { #region Properties @@ -13,15 +14,44 @@ namespace SabreTools.Data.Models.Metadata public string? Name { get; set; } - #endregion - - #region Keys - - /// string, possibly long - public const string NumberKey = "number"; + public long? Number { get; set; } #endregion public ConfLocation() => ItemType = ItemType.ConfLocation; + + /// + public object Clone() + { + var obj = new ConfLocation(); + + obj.Inverted = Inverted; + obj.Name = Name; + obj.Number = Number; + + return obj; + } + + /// + public bool Equals(ConfLocation? other) + { + // Null never matches + if (other is null) + return false; + + // Properties + if (Inverted != other.Inverted) + return false; + + if ((Name is null) ^ (other.Name is null)) + return false; + else if (Name is not null && !Name.Equals(other.Name, StringComparison.OrdinalIgnoreCase)) + return false; + + if (Number != other.Number) + return false; + + return true; + } } } diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs index cb9fba6a..6a0f8eeb 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs @@ -443,7 +443,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Inverted = true, Name = "name", - [Data.Models.Metadata.ConfLocation.NumberKey] = "number", + Number = 12345, }; } @@ -1217,7 +1217,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(confLocation); Assert.True(confLocation.Inverted); Assert.Equal("name", confLocation.Name); - Assert.Equal("number", confLocation.ReadString(Data.Models.Metadata.ConfLocation.NumberKey)); + Assert.Equal(12345, confLocation.Number); } private static void ValidateConfSetting(ConfSetting? confSetting) diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs index 1048ab62..4f63dc38 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs @@ -724,7 +724,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(confLocation); Assert.True(confLocation.Inverted); Assert.Equal("name", confLocation.Name); - Assert.Equal("number", confLocation.ReadString(Data.Models.Metadata.ConfLocation.NumberKey)); + Assert.Equal(12345, confLocation.Number); } private static void ValidateMetadataConfSetting(Data.Models.Metadata.ConfSetting? confSetting) diff --git a/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs b/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs index d1f3296a..c7e5ec7f 100644 --- a/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs +++ b/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs @@ -16,16 +16,22 @@ namespace SabreTools.Metadata.DatItems.Formats public override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.ConfLocation; + public bool? Inverted + { + get => (_internal as Data.Models.Metadata.ConfLocation)?.Inverted; + set => (_internal as Data.Models.Metadata.ConfLocation)?.Inverted = value; + } + public string? Name { get => (_internal as Data.Models.Metadata.ConfLocation)?.Name; set => (_internal as Data.Models.Metadata.ConfLocation)?.Name = value; } - public bool? Inverted + public long? Number { - get => (_internal as Data.Models.Metadata.ConfLocation)?.Inverted; - set => (_internal as Data.Models.Metadata.ConfLocation)?.Inverted = value; + get => (_internal as Data.Models.Metadata.ConfLocation)?.Number; + set => (_internal as Data.Models.Metadata.ConfLocation)?.Number = value; } #endregion diff --git a/SabreTools.Metadata.Filter/FilterObject.cs b/SabreTools.Metadata.Filter/FilterObject.cs index dc33be38..08286036 100644 --- a/SabreTools.Metadata.Filter/FilterObject.cs +++ b/SabreTools.Metadata.Filter/FilterObject.cs @@ -406,6 +406,9 @@ namespace SabreTools.Metadata.Filter case ConfLocation item when fieldName == "inverted": checkValue = item.Inverted.FromYesNo(); return true; + case ConfLocation item when fieldName == "number": + checkValue = item.Number?.ToString(); + return true; case ConfSetting item when fieldName == "default": checkValue = item.Default.FromYesNo(); diff --git a/SabreTools.Metadata/DictionaryBaseExtensions.cs b/SabreTools.Metadata/DictionaryBaseExtensions.cs index bedc6c69..8753117f 100644 --- a/SabreTools.Metadata/DictionaryBaseExtensions.cs +++ b/SabreTools.Metadata/DictionaryBaseExtensions.cs @@ -101,7 +101,7 @@ namespace SabreTools.Metadata } else if (self is ConfLocation selfConfLocation && other is ConfLocation otherConfLocation) { - if (selfConfLocation.Inverted != otherConfLocation.Inverted) + if (!selfConfLocation.Equals(otherConfLocation)) return false; } else if (self is ConfSetting selfConfSetting && other is ConfSetting otherConfSetting) diff --git a/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs b/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs index ba51404d..923948d6 100644 --- a/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs @@ -215,7 +215,7 @@ namespace SabreTools.Serialization.CrossModel.Test var conflocation = new Data.Models.Listxml.ConfLocation { Name = "name", - Number = "XXXXXX", + Number = 12345, Inverted = true, }; @@ -712,7 +712,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(conflocation); Assert.Equal("name", conflocation.Name); - Assert.Equal("XXXXXX", conflocation.Number); + Assert.Equal(12345, conflocation.Number); Assert.Equal(true, conflocation.Inverted); } diff --git a/SabreTools.Serialization.CrossModel.Test/M1Tests.cs b/SabreTools.Serialization.CrossModel.Test/M1Tests.cs index 2106dda8..bd93c9f9 100644 --- a/SabreTools.Serialization.CrossModel.Test/M1Tests.cs +++ b/SabreTools.Serialization.CrossModel.Test/M1Tests.cs @@ -211,7 +211,7 @@ namespace SabreTools.Serialization.CrossModel.Test var conflocation = new Data.Models.Listxml.ConfLocation { Name = "name", - Number = "XXXXXX", + Number = 12345, Inverted = true, }; @@ -706,7 +706,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(conflocation); Assert.Equal("name", conflocation.Name); - Assert.Equal("XXXXXX", conflocation.Number); + Assert.Equal(12345, conflocation.Number); Assert.Equal(true, conflocation.Inverted); } diff --git a/SabreTools.Serialization.CrossModel.Test/MessTests.cs b/SabreTools.Serialization.CrossModel.Test/MessTests.cs index 65a1e2b3..73a2d3f3 100644 --- a/SabreTools.Serialization.CrossModel.Test/MessTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/MessTests.cs @@ -211,7 +211,7 @@ namespace SabreTools.Serialization.CrossModel.Test var conflocation = new Data.Models.Listxml.ConfLocation { Name = "name", - Number = "XXXXXX", + Number = 12345, Inverted = true, }; @@ -706,7 +706,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(conflocation); Assert.Equal("name", conflocation.Name); - Assert.Equal("XXXXXX", conflocation.Number); + Assert.Equal(12345, conflocation.Number); Assert.Equal(true, conflocation.Inverted); } diff --git a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs index 2113918e..1e1c156a 100644 --- a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs @@ -251,7 +251,7 @@ namespace SabreTools.Serialization.CrossModel var confLocation = new ConfLocation { Name = item.Name, - Number = item.ReadString(Data.Models.Metadata.ConfLocation.NumberKey), + Number = item.Number, Inverted = item.Inverted, }; return confLocation; diff --git a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs index fc3fe690..b5400bbf 100644 --- a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs @@ -287,7 +287,7 @@ namespace SabreTools.Serialization.CrossModel var confLocation = new Data.Models.Metadata.ConfLocation { Name = item.Name, - [Data.Models.Metadata.ConfLocation.NumberKey] = item.Number, + Number = item.Number, Inverted = item.Inverted, }; return confLocation; diff --git a/SabreTools.Serialization.Readers.Test/ListxmlTests.cs b/SabreTools.Serialization.Readers.Test/ListxmlTests.cs index 986ad35c..dcc48b90 100644 --- a/SabreTools.Serialization.Readers.Test/ListxmlTests.cs +++ b/SabreTools.Serialization.Readers.Test/ListxmlTests.cs @@ -282,7 +282,7 @@ namespace SabreTools.Serialization.Readers.Test var conflocation = new Data.Models.Listxml.ConfLocation { Name = "name", - Number = "XXXXXX", + Number = 12345, Inverted = true, }; @@ -779,7 +779,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(conflocation); Assert.Equal("name", conflocation.Name); - Assert.Equal("XXXXXX", conflocation.Number); + Assert.Equal(12345, conflocation.Number); Assert.Equal(true, conflocation.Inverted); } diff --git a/SabreTools.Serialization.Readers.Test/M1Tests.cs b/SabreTools.Serialization.Readers.Test/M1Tests.cs index a394554b..aac4ce63 100644 --- a/SabreTools.Serialization.Readers.Test/M1Tests.cs +++ b/SabreTools.Serialization.Readers.Test/M1Tests.cs @@ -278,7 +278,7 @@ namespace SabreTools.Serialization.Readers.Test var conflocation = new Data.Models.Listxml.ConfLocation { Name = "name", - Number = "XXXXXX", + Number = 12345, Inverted = true, }; @@ -773,7 +773,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(conflocation); Assert.Equal("name", conflocation.Name); - Assert.Equal("XXXXXX", conflocation.Number); + Assert.Equal(12345, conflocation.Number); Assert.Equal(true, conflocation.Inverted); } diff --git a/SabreTools.Serialization.Readers.Test/MessTests.cs b/SabreTools.Serialization.Readers.Test/MessTests.cs index 8f1a3913..a827b740 100644 --- a/SabreTools.Serialization.Readers.Test/MessTests.cs +++ b/SabreTools.Serialization.Readers.Test/MessTests.cs @@ -278,7 +278,7 @@ namespace SabreTools.Serialization.Readers.Test var conflocation = new Data.Models.Listxml.ConfLocation { Name = "name", - Number = "XXXXXX", + Number = 12345, Inverted = true, }; @@ -773,7 +773,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(conflocation); Assert.Equal("name", conflocation.Name); - Assert.Equal("XXXXXX", conflocation.Number); + Assert.Equal(12345, conflocation.Number); Assert.Equal(true, conflocation.Inverted); } diff --git a/SabreTools.Serialization.Readers/Listxml.cs b/SabreTools.Serialization.Readers/Listxml.cs index 750e4135..bd50890c 100644 --- a/SabreTools.Serialization.Readers/Listxml.cs +++ b/SabreTools.Serialization.Readers/Listxml.cs @@ -285,7 +285,7 @@ namespace SabreTools.Serialization.Readers var obj = new ConfLocation(); obj.Name = reader.GetAttribute("name"); - obj.Number = reader.GetAttribute("number"); + obj.Number = NumberHelper.ConvertToInt64(reader.GetAttribute("number")); obj.Inverted = reader.GetAttribute("inverted").AsYesNo(); return obj; diff --git a/SabreTools.Serialization.Readers/M1.cs b/SabreTools.Serialization.Readers/M1.cs index 6420d027..eb8fb0fd 100644 --- a/SabreTools.Serialization.Readers/M1.cs +++ b/SabreTools.Serialization.Readers/M1.cs @@ -283,7 +283,7 @@ namespace SabreTools.Serialization.Readers var obj = new ConfLocation(); obj.Name = reader.GetAttribute("name"); - obj.Number = reader.GetAttribute("number"); + obj.Number = NumberHelper.ConvertToInt64(reader.GetAttribute("number")); obj.Inverted = reader.GetAttribute("inverted").AsYesNo(); return obj; diff --git a/SabreTools.Serialization.Readers/Mess.cs b/SabreTools.Serialization.Readers/Mess.cs index c81db4d5..6f40d62b 100644 --- a/SabreTools.Serialization.Readers/Mess.cs +++ b/SabreTools.Serialization.Readers/Mess.cs @@ -283,7 +283,7 @@ namespace SabreTools.Serialization.Readers var obj = new ConfLocation(); obj.Name = reader.GetAttribute("name"); - obj.Number = reader.GetAttribute("number"); + obj.Number = NumberHelper.ConvertToInt64(reader.GetAttribute("number")); obj.Inverted = reader.GetAttribute("inverted").AsYesNo(); return obj; diff --git a/SabreTools.Serialization.Writers/Listxml.cs b/SabreTools.Serialization.Writers/Listxml.cs index e3d701a0..1da5df05 100644 --- a/SabreTools.Serialization.Writers/Listxml.cs +++ b/SabreTools.Serialization.Writers/Listxml.cs @@ -194,7 +194,7 @@ namespace SabreTools.Serialization.Writers writer.WriteStartElement("conflocation"); writer.WriteRequiredAttributeString("name", obj.Name); - writer.WriteRequiredAttributeString("number", obj.Number); + writer.WriteRequiredAttributeString("number", obj.Number?.ToString()); writer.WriteOptionalAttributeString("inverted", obj.Inverted.FromYesNo()); writer.WriteEndElement(); diff --git a/SabreTools.Serialization.Writers/M1.cs b/SabreTools.Serialization.Writers/M1.cs index 9151b56c..b9ab826e 100644 --- a/SabreTools.Serialization.Writers/M1.cs +++ b/SabreTools.Serialization.Writers/M1.cs @@ -192,7 +192,7 @@ namespace SabreTools.Serialization.Writers writer.WriteStartElement("conflocation"); writer.WriteRequiredAttributeString("name", obj.Name); - writer.WriteRequiredAttributeString("number", obj.Number); + writer.WriteRequiredAttributeString("number", obj.Number?.ToString()); writer.WriteOptionalAttributeString("inverted", obj.Inverted.FromYesNo()); writer.WriteEndElement(); diff --git a/SabreTools.Serialization.Writers/Mess.cs b/SabreTools.Serialization.Writers/Mess.cs index 45397c60..35620506 100644 --- a/SabreTools.Serialization.Writers/Mess.cs +++ b/SabreTools.Serialization.Writers/Mess.cs @@ -192,7 +192,7 @@ namespace SabreTools.Serialization.Writers writer.WriteStartElement("conflocation"); writer.WriteRequiredAttributeString("name", obj.Name); - writer.WriteRequiredAttributeString("number", obj.Number); + writer.WriteRequiredAttributeString("number", obj.Number?.ToString()); writer.WriteOptionalAttributeString("inverted", obj.Inverted.FromYesNo()); writer.WriteEndElement(); From e3d3fe7c1acc1c6840ce875754d49e22e857630b Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Fri, 3 Apr 2026 11:05:59 -0400 Subject: [PATCH 038/142] Fix broken tests --- SabreTools.Data.Extensions/MetadataExtensions.cs | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/SabreTools.Data.Extensions/MetadataExtensions.cs b/SabreTools.Data.Extensions/MetadataExtensions.cs index bbc391ae..151d7bf7 100644 --- a/SabreTools.Data.Extensions/MetadataExtensions.cs +++ b/SabreTools.Data.Extensions/MetadataExtensions.cs @@ -161,8 +161,9 @@ namespace SabreTools.Data.Extensions return deviceRef.Clone() as DeviceRef; else if (self is Extension extension) return extension.Clone() as Extension; - else if (self is Feature feature) - return feature.Clone() as Feature; + // TODO: Reenable when PartFeature no longer needs nesting + // else if (self is Feature feature) + // return feature.Clone() as Feature; else if (self is Info info) return info.Clone() as Info; else if (self is Instance instance) @@ -254,6 +255,15 @@ namespace SabreTools.Data.Extensions cloneDriver.Status = selfDriver.Status; cloneDriver.Unofficial = selfDriver.Unofficial; } + else if (self is Feature selfFeature && clone is Feature cloneFeature) + { + // TODO: Remove when PartFeature no longer needs nesting + cloneFeature.FeatureType = selfFeature.FeatureType; + cloneFeature.Name = selfFeature.Name; + cloneFeature.Overall = selfFeature.Overall; + cloneFeature.Status = selfFeature.Status; + cloneFeature.Value = selfFeature.Value; + } else if (self is Header selfHeader && clone is Header cloneHeader) { cloneHeader.Author = selfHeader.Author; From e604ef314b56fd8c752c7f74a9b5c7db5eeadefd Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Fri, 3 Apr 2026 11:15:57 -0400 Subject: [PATCH 039/142] Convert DipLocation fully over to properties --- .../MetadataExtensions.cs | 6 +-- SabreTools.Data.Models/Listxml/DipLocation.cs | 3 +- .../Metadata/DipLocation.cs | 44 ++++++++++++++++--- .../DatFileTests.FromMetadata.cs | 4 +- .../DatFileTests.ToMetadata.cs | 2 +- .../Formats/DipLocation.cs | 6 +++ SabreTools.Metadata.Filter/FilterObject.cs | 5 +-- .../DictionaryBaseExtensions.cs | 2 +- .../ListxmlTests.cs | 4 +- .../M1Tests.cs | 4 +- .../MessTests.cs | 4 +- .../Listxml.Deserializer.cs | 2 +- .../Listxml.Serializer.cs | 2 +- .../ListxmlTests.cs | 4 +- .../M1Tests.cs | 4 +- .../MessTests.cs | 4 +- SabreTools.Serialization.Readers/Listxml.cs | 2 +- SabreTools.Serialization.Readers/M1.cs | 2 +- SabreTools.Serialization.Readers/Mess.cs | 2 +- SabreTools.Serialization.Writers/Listxml.cs | 2 +- SabreTools.Serialization.Writers/M1.cs | 2 +- SabreTools.Serialization.Writers/Mess.cs | 2 +- 22 files changed, 72 insertions(+), 40 deletions(-) diff --git a/SabreTools.Data.Extensions/MetadataExtensions.cs b/SabreTools.Data.Extensions/MetadataExtensions.cs index 151d7bf7..b308ca77 100644 --- a/SabreTools.Data.Extensions/MetadataExtensions.cs +++ b/SabreTools.Data.Extensions/MetadataExtensions.cs @@ -159,6 +159,8 @@ namespace SabreTools.Data.Extensions return control.Clone() as Control; else if (self is DeviceRef deviceRef) return deviceRef.Clone() as DeviceRef; + else if (self is DipLocation dipLocation) + return dipLocation.Clone() as DipLocation; else if (self is Extension extension) return extension.Clone() as Extension; // TODO: Reenable when PartFeature no longer needs nesting @@ -213,10 +215,6 @@ namespace SabreTools.Data.Extensions cloneDevice.Mandatory = selfDevice.Mandatory; cloneDevice.Tag = selfDevice.Tag; } - else if (self is DipLocation selfDipLocation && clone is DipLocation cloneDipLocation) - { - cloneDipLocation.Inverted = selfDipLocation.Inverted; - } else if (self is DipSwitch selfDipSwitch && clone is DipSwitch cloneDipSwitch) { cloneDipSwitch.Default = selfDipSwitch.Default; diff --git a/SabreTools.Data.Models/Listxml/DipLocation.cs b/SabreTools.Data.Models/Listxml/DipLocation.cs index 597ffc4a..cdbdf653 100644 --- a/SabreTools.Data.Models/Listxml/DipLocation.cs +++ b/SabreTools.Data.Models/Listxml/DipLocation.cs @@ -10,10 +10,9 @@ namespace SabreTools.Data.Models.Listxml [XmlAttribute("name")] public string? Name { get; set; } - /// Numeric? [Required] [XmlAttribute("number")] - public string? Number { get; set; } + public long? Number { get; set; } /// (yes|no) "no" [XmlAttribute("inverted")] diff --git a/SabreTools.Data.Models/Metadata/DipLocation.cs b/SabreTools.Data.Models/Metadata/DipLocation.cs index 65c36fbc..5926d140 100644 --- a/SabreTools.Data.Models/Metadata/DipLocation.cs +++ b/SabreTools.Data.Models/Metadata/DipLocation.cs @@ -1,10 +1,11 @@ +using System; using System.Xml.Serialization; using Newtonsoft.Json; namespace SabreTools.Data.Models.Metadata { [JsonObject("diplocation"), XmlRoot("diplocation")] - public class DipLocation : DatItem + public class DipLocation : DatItem, ICloneable, IEquatable { #region Properties @@ -13,15 +14,44 @@ namespace SabreTools.Data.Models.Metadata public string? Name { get; set; } - #endregion - - #region Keys - - /// string, possibly long - public const string NumberKey = "number"; + public long? Number { get; set; } #endregion public DipLocation() => ItemType = ItemType.DipLocation; + + /// + public object Clone() + { + var obj = new DipLocation(); + + obj.Inverted = Inverted; + obj.Name = Name; + obj.Number = Number; + + return obj; + } + + /// + public bool Equals(DipLocation? other) + { + // Null never matches + if (other is null) + return false; + + // Properties + if (Inverted != other.Inverted) + return false; + + if ((Name is null) ^ (other.Name is null)) + return false; + else if (Name is not null && !Name.Equals(other.Name, StringComparison.OrdinalIgnoreCase)) + return false; + + if (Number != other.Number) + return false; + + return true; + } } } diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs index 6a0f8eeb..4a0cde0d 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs @@ -505,7 +505,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Inverted = true, Name = "name", - [Data.Models.Metadata.DipLocation.NumberKey] = "number", + Number = 12345, }; } @@ -1286,7 +1286,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(dipLocation); Assert.True(dipLocation.Inverted); Assert.Equal("name", dipLocation.Name); - Assert.Equal("number", dipLocation.ReadString(Data.Models.Metadata.DipLocation.NumberKey)); + Assert.Equal(12345, dipLocation.Number); } private static void ValidateDipSwitch(DipSwitch? dipSwitch) diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs index 4f63dc38..4fc21d47 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs @@ -798,7 +798,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(dipLocation); Assert.True(dipLocation.Inverted); Assert.Equal("name", dipLocation.Name); - Assert.Equal("number", dipLocation.ReadString(Data.Models.Metadata.DipLocation.NumberKey)); + Assert.Equal(12345, dipLocation.Number); } private static void ValidateMetadataDipSwitch(Data.Models.Metadata.DipSwitch? dipSwitch) diff --git a/SabreTools.Metadata.DatItems/Formats/DipLocation.cs b/SabreTools.Metadata.DatItems/Formats/DipLocation.cs index 1ac9e7fb..ee5f1e00 100644 --- a/SabreTools.Metadata.DatItems/Formats/DipLocation.cs +++ b/SabreTools.Metadata.DatItems/Formats/DipLocation.cs @@ -28,6 +28,12 @@ namespace SabreTools.Metadata.DatItems.Formats set => (_internal as Data.Models.Metadata.DipLocation)?.Name = value; } + public long? Number + { + get => (_internal as Data.Models.Metadata.DipLocation)?.Number; + set => (_internal as Data.Models.Metadata.DipLocation)?.Number = value; + } + #endregion #region Constructors diff --git a/SabreTools.Metadata.Filter/FilterObject.cs b/SabreTools.Metadata.Filter/FilterObject.cs index 08286036..082a6642 100644 --- a/SabreTools.Metadata.Filter/FilterObject.cs +++ b/SabreTools.Metadata.Filter/FilterObject.cs @@ -480,9 +480,8 @@ namespace SabreTools.Metadata.Filter case DipLocation item when fieldName == "inverted": checkValue = item.Inverted.FromYesNo(); return true; - - case DipLocation item when fieldName == "invertwed": - checkValue = item.Inverted.FromYesNo(); + case DipLocation item when fieldName == "number": + checkValue = item.Number?.ToString(); return true; case DipSwitch item when fieldName == "default": diff --git a/SabreTools.Metadata/DictionaryBaseExtensions.cs b/SabreTools.Metadata/DictionaryBaseExtensions.cs index 8753117f..f01def6f 100644 --- a/SabreTools.Metadata/DictionaryBaseExtensions.cs +++ b/SabreTools.Metadata/DictionaryBaseExtensions.cs @@ -138,7 +138,7 @@ namespace SabreTools.Metadata } else if (self is DipLocation selfDipLocation && other is DipLocation otherDipLocation) { - if (selfDipLocation.Inverted != otherDipLocation.Inverted) + if (!selfDipLocation.Equals(otherDipLocation)) return false; } else if (self is DipSwitch selfDipSwitch && other is DipSwitch otherDipSwitch) diff --git a/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs b/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs index 923948d6..4cec022f 100644 --- a/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs @@ -190,7 +190,7 @@ namespace SabreTools.Serialization.CrossModel.Test var diplocation = new Data.Models.Listxml.DipLocation { Name = "name", - Number = "XXXXXX", + Number = 12345, Inverted = true, }; @@ -669,7 +669,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(diplocation); Assert.Equal("name", diplocation.Name); - Assert.Equal("XXXXXX", diplocation.Number); + Assert.Equal(12345, diplocation.Number); Assert.Equal(true, diplocation.Inverted); } diff --git a/SabreTools.Serialization.CrossModel.Test/M1Tests.cs b/SabreTools.Serialization.CrossModel.Test/M1Tests.cs index bd93c9f9..708ff79e 100644 --- a/SabreTools.Serialization.CrossModel.Test/M1Tests.cs +++ b/SabreTools.Serialization.CrossModel.Test/M1Tests.cs @@ -186,7 +186,7 @@ namespace SabreTools.Serialization.CrossModel.Test var diplocation = new Data.Models.Listxml.DipLocation { Name = "name", - Number = "XXXXXX", + Number = 12345, Inverted = true, }; @@ -663,7 +663,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(diplocation); Assert.Equal("name", diplocation.Name); - Assert.Equal("XXXXXX", diplocation.Number); + Assert.Equal(12345, diplocation.Number); Assert.Equal(true, diplocation.Inverted); } diff --git a/SabreTools.Serialization.CrossModel.Test/MessTests.cs b/SabreTools.Serialization.CrossModel.Test/MessTests.cs index 73a2d3f3..ca6e5d12 100644 --- a/SabreTools.Serialization.CrossModel.Test/MessTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/MessTests.cs @@ -186,7 +186,7 @@ namespace SabreTools.Serialization.CrossModel.Test var diplocation = new Data.Models.Listxml.DipLocation { Name = "name", - Number = "XXXXXX", + Number = 12345, Inverted = true, }; @@ -663,7 +663,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(diplocation); Assert.Equal("name", diplocation.Name); - Assert.Equal("XXXXXX", diplocation.Number); + Assert.Equal(12345, diplocation.Number); Assert.Equal(true, diplocation.Inverted); } diff --git a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs index 1e1c156a..110e346c 100644 --- a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs @@ -344,7 +344,7 @@ namespace SabreTools.Serialization.CrossModel var dipLocation = new DipLocation { Name = item.Name, - Number = item.ReadString(Data.Models.Metadata.DipLocation.NumberKey), + Number = item.Number, Inverted = item.Inverted, }; return dipLocation; diff --git a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs index b5400bbf..0fdb74fe 100644 --- a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs @@ -380,7 +380,7 @@ namespace SabreTools.Serialization.CrossModel var dipLocation = new Data.Models.Metadata.DipLocation { Name = item.Name, - [Data.Models.Metadata.DipLocation.NumberKey] = item.Number, + Number = item.Number, Inverted = item.Inverted, }; return dipLocation; diff --git a/SabreTools.Serialization.Readers.Test/ListxmlTests.cs b/SabreTools.Serialization.Readers.Test/ListxmlTests.cs index dcc48b90..619e4620 100644 --- a/SabreTools.Serialization.Readers.Test/ListxmlTests.cs +++ b/SabreTools.Serialization.Readers.Test/ListxmlTests.cs @@ -257,7 +257,7 @@ namespace SabreTools.Serialization.Readers.Test var diplocation = new Data.Models.Listxml.DipLocation { Name = "name", - Number = "XXXXXX", + Number = 12345, Inverted = true, }; @@ -736,7 +736,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(diplocation); Assert.Equal("name", diplocation.Name); - Assert.Equal("XXXXXX", diplocation.Number); + Assert.Equal(12345, diplocation.Number); Assert.Equal(true, diplocation.Inverted); } diff --git a/SabreTools.Serialization.Readers.Test/M1Tests.cs b/SabreTools.Serialization.Readers.Test/M1Tests.cs index aac4ce63..b71ccaed 100644 --- a/SabreTools.Serialization.Readers.Test/M1Tests.cs +++ b/SabreTools.Serialization.Readers.Test/M1Tests.cs @@ -253,7 +253,7 @@ namespace SabreTools.Serialization.Readers.Test var diplocation = new Data.Models.Listxml.DipLocation { Name = "name", - Number = "XXXXXX", + Number = 12345, Inverted = true, }; @@ -730,7 +730,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(diplocation); Assert.Equal("name", diplocation.Name); - Assert.Equal("XXXXXX", diplocation.Number); + Assert.Equal(12345, diplocation.Number); Assert.Equal(true, diplocation.Inverted); } diff --git a/SabreTools.Serialization.Readers.Test/MessTests.cs b/SabreTools.Serialization.Readers.Test/MessTests.cs index a827b740..365ccc61 100644 --- a/SabreTools.Serialization.Readers.Test/MessTests.cs +++ b/SabreTools.Serialization.Readers.Test/MessTests.cs @@ -253,7 +253,7 @@ namespace SabreTools.Serialization.Readers.Test var diplocation = new Data.Models.Listxml.DipLocation { Name = "name", - Number = "XXXXXX", + Number = 12345, Inverted = true, }; @@ -730,7 +730,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(diplocation); Assert.Equal("name", diplocation.Name); - Assert.Equal("XXXXXX", diplocation.Number); + Assert.Equal(12345, diplocation.Number); Assert.Equal(true, diplocation.Inverted); } diff --git a/SabreTools.Serialization.Readers/Listxml.cs b/SabreTools.Serialization.Readers/Listxml.cs index bd50890c..ececc78c 100644 --- a/SabreTools.Serialization.Readers/Listxml.cs +++ b/SabreTools.Serialization.Readers/Listxml.cs @@ -435,7 +435,7 @@ namespace SabreTools.Serialization.Readers var obj = new DipLocation(); obj.Name = reader.GetAttribute("name"); - obj.Number = reader.GetAttribute("number"); + obj.Number = NumberHelper.ConvertToInt64(reader.GetAttribute("number")); obj.Inverted = reader.GetAttribute("inverted").AsYesNo(); return obj; diff --git a/SabreTools.Serialization.Readers/M1.cs b/SabreTools.Serialization.Readers/M1.cs index eb8fb0fd..4f16ee3e 100644 --- a/SabreTools.Serialization.Readers/M1.cs +++ b/SabreTools.Serialization.Readers/M1.cs @@ -433,7 +433,7 @@ namespace SabreTools.Serialization.Readers var obj = new DipLocation(); obj.Name = reader.GetAttribute("name"); - obj.Number = reader.GetAttribute("number"); + obj.Number = NumberHelper.ConvertToInt64(reader.GetAttribute("number")); obj.Inverted = reader.GetAttribute("inverted").AsYesNo(); return obj; diff --git a/SabreTools.Serialization.Readers/Mess.cs b/SabreTools.Serialization.Readers/Mess.cs index 6f40d62b..dad755ab 100644 --- a/SabreTools.Serialization.Readers/Mess.cs +++ b/SabreTools.Serialization.Readers/Mess.cs @@ -433,7 +433,7 @@ namespace SabreTools.Serialization.Readers var obj = new DipLocation(); obj.Name = reader.GetAttribute("name"); - obj.Number = reader.GetAttribute("number"); + obj.Number = NumberHelper.ConvertToInt64(reader.GetAttribute("number")); obj.Inverted = reader.GetAttribute("inverted").AsYesNo(); return obj; diff --git a/SabreTools.Serialization.Writers/Listxml.cs b/SabreTools.Serialization.Writers/Listxml.cs index 1da5df05..e8f4b791 100644 --- a/SabreTools.Serialization.Writers/Listxml.cs +++ b/SabreTools.Serialization.Writers/Listxml.cs @@ -298,7 +298,7 @@ namespace SabreTools.Serialization.Writers writer.WriteStartElement("diplocation"); writer.WriteRequiredAttributeString("name", obj.Name); - writer.WriteRequiredAttributeString("number", obj.Number); + writer.WriteRequiredAttributeString("number", obj.Number?.ToString()); writer.WriteOptionalAttributeString("inverted", obj.Inverted.FromYesNo()); writer.WriteEndElement(); diff --git a/SabreTools.Serialization.Writers/M1.cs b/SabreTools.Serialization.Writers/M1.cs index b9ab826e..6077aad0 100644 --- a/SabreTools.Serialization.Writers/M1.cs +++ b/SabreTools.Serialization.Writers/M1.cs @@ -296,7 +296,7 @@ namespace SabreTools.Serialization.Writers writer.WriteStartElement("diplocation"); writer.WriteRequiredAttributeString("name", obj.Name); - writer.WriteRequiredAttributeString("number", obj.Number); + writer.WriteRequiredAttributeString("number", obj.Number?.ToString()); writer.WriteOptionalAttributeString("inverted", obj.Inverted.FromYesNo()); writer.WriteEndElement(); diff --git a/SabreTools.Serialization.Writers/Mess.cs b/SabreTools.Serialization.Writers/Mess.cs index 35620506..5bd9d91d 100644 --- a/SabreTools.Serialization.Writers/Mess.cs +++ b/SabreTools.Serialization.Writers/Mess.cs @@ -296,7 +296,7 @@ namespace SabreTools.Serialization.Writers writer.WriteStartElement("diplocation"); writer.WriteRequiredAttributeString("name", obj.Name); - writer.WriteRequiredAttributeString("number", obj.Number); + writer.WriteRequiredAttributeString("number", obj.Number?.ToString()); writer.WriteOptionalAttributeString("inverted", obj.Inverted.FromYesNo()); writer.WriteEndElement(); From c9c31af8ea562d1b3b3d9ac74e5a2eb1a74c1253 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Fri, 3 Apr 2026 11:57:30 -0400 Subject: [PATCH 040/142] Convert Display mostly over to properties --- .../MetadataExtensions.cs | 9 ++ SabreTools.Data.Models/Listxml/Display.cs | 27 ++--- SabreTools.Data.Models/Metadata/Display.cs | 45 ++++---- .../DatFileTests.FromMetadata.cs | 40 +++---- .../DatFileTests.ToMetadata.cs | 18 ++-- .../DatFile.ToMetadata.cs | 4 +- .../Formats/Display.cs | 102 ++++++++++-------- SabreTools.Metadata.Filter/FilterObject.cs | 27 +++++ .../DictionaryBaseExtensions.cs | 18 ++++ .../ListxmlTests.cs | 36 +++---- .../M1Tests.cs | 36 +++---- .../MessTests.cs | 36 +++---- .../Listxml.Deserializer.cs | 18 ++-- .../Listxml.Serializer.cs | 18 ++-- .../ListxmlTests.cs | 36 +++---- .../M1Tests.cs | 36 +++---- .../MessTests.cs | 36 +++---- SabreTools.Serialization.Readers/Listxml.cs | 18 ++-- SabreTools.Serialization.Readers/M1.cs | 18 ++-- SabreTools.Serialization.Readers/Mess.cs | 18 ++-- SabreTools.Serialization.Writers/Listxml.cs | 18 ++-- SabreTools.Serialization.Writers/M1.cs | 18 ++-- SabreTools.Serialization.Writers/Mess.cs | 18 ++-- 23 files changed, 348 insertions(+), 302 deletions(-) diff --git a/SabreTools.Data.Extensions/MetadataExtensions.cs b/SabreTools.Data.Extensions/MetadataExtensions.cs index b308ca77..29c95cd8 100644 --- a/SabreTools.Data.Extensions/MetadataExtensions.cs +++ b/SabreTools.Data.Extensions/MetadataExtensions.cs @@ -236,8 +236,17 @@ namespace SabreTools.Data.Extensions { cloneDisplay.DisplayType = selfDisplay.DisplayType; cloneDisplay.FlipX = selfDisplay.FlipX; + cloneDisplay.HBEnd = selfDisplay.HBEnd; + cloneDisplay.HBStart = selfDisplay.HBStart; + cloneDisplay.Height = selfDisplay.Height; + cloneDisplay.HTotal = selfDisplay.HTotal; + cloneDisplay.PixClock = selfDisplay.PixClock; cloneDisplay.Refresh = selfDisplay.Refresh; cloneDisplay.Tag = selfDisplay.Tag; + cloneDisplay.VBEnd = selfDisplay.VBEnd; + cloneDisplay.VBStart = selfDisplay.VBStart; + cloneDisplay.VTotal = selfDisplay.VTotal; + cloneDisplay.Width = selfDisplay.Width; } else if (self is Driver selfDriver && clone is Driver cloneDriver) { diff --git a/SabreTools.Data.Models/Listxml/Display.cs b/SabreTools.Data.Models/Listxml/Display.cs index 92994746..41c48fe7 100644 --- a/SabreTools.Data.Models/Listxml/Display.cs +++ b/SabreTools.Data.Models/Listxml/Display.cs @@ -23,44 +23,35 @@ namespace SabreTools.Data.Models.Listxml [XmlAttribute("flipx")] public bool? FlipX { get; set; } - /// Numeric [XmlAttribute("width")] - public string? Width { get; set; } + public long? Width { get; set; } - /// Numeric [XmlAttribute("height")] - public string? Height { get; set; } + public long? Height { get; set; } [Required] [XmlAttribute("refresh")] public double? Refresh { get; set; } - /// Numeric [XmlAttribute("pixclock")] - public string? PixClock { get; set; } + public long? PixClock { get; set; } - /// Numeric [XmlAttribute("htotal")] - public string? HTotal { get; set; } + public long? HTotal { get; set; } - /// Numeric [XmlAttribute("hbend")] - public string? HBEnd { get; set; } + public long? HBEnd { get; set; } - /// Numeric [XmlAttribute("hbstart")] - public string? HBStart { get; set; } + public long? HBStart { get; set; } - /// Numeric [XmlAttribute("vtotal")] - public string? VTotal { get; set; } + public long? VTotal { get; set; } - /// Numeric [XmlAttribute("vbend")] - public string? VBEnd { get; set; } + public long? VBEnd { get; set; } - /// Numeric [XmlAttribute("vbstart")] - public string? VBStart { get; set; } + public long? VBStart { get; set; } } } diff --git a/SabreTools.Data.Models/Metadata/Display.cs b/SabreTools.Data.Models/Metadata/Display.cs index 58586060..a8cb0632 100644 --- a/SabreTools.Data.Models/Metadata/Display.cs +++ b/SabreTools.Data.Models/Metadata/Display.cs @@ -14,45 +14,36 @@ namespace SabreTools.Data.Models.Metadata /// (yes|no) "no" public bool? FlipX { get; set; } + public long? HBEnd { get; set; } + + public long? HBStart { get; set; } + + public long? Height { get; set; } + + public long? HTotal { get; set; } + + public long? PixClock { get; set; } + public double? Refresh { get; set; } public string? Tag { get; set; } + public long? VBEnd { get; set; } + + public long? VBStart { get; set; } + + public long? VTotal { get; set; } + + public long? Width { get; set; } + #endregion #region Keys - /// long - public const string HBEndKey = "hbend"; - - /// long - public const string HBStartKey = "hbstart"; - - /// long - public const string HeightKey = "height"; - - /// long - public const string HTotalKey = "htotal"; - - /// long - public const string PixClockKey = "pixclock"; - /// (0|90|180|270) /// TODO: Convert to enum public const string RotateKey = "rotate"; - /// long - public const string VBEndKey = "vbend"; - - /// long - public const string VBStartKey = "vbstart"; - - /// long - public const string VTotalKey = "vtotal"; - - /// long - public const string WidthKey = "width"; - #endregion public Display() => ItemType = ItemType.Display; diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs index 4a0cde0d..0087fe07 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs @@ -577,19 +577,19 @@ namespace SabreTools.Metadata.DatFiles.Test return new Data.Models.Metadata.Display { FlipX = true, - [Data.Models.Metadata.Display.HBEndKey] = 12345L, - [Data.Models.Metadata.Display.HBStartKey] = 12345L, - [Data.Models.Metadata.Display.HeightKey] = 12345L, - [Data.Models.Metadata.Display.HTotalKey] = 12345L, - [Data.Models.Metadata.Display.PixClockKey] = 12345L, + HBEnd = 12345L, + HBStart = 12345L, + Height = 12345L, + HTotal = 12345L, + PixClock = 12345L, Refresh = 123.45, [Data.Models.Metadata.Display.RotateKey] = 90, Tag = "tag", DisplayType = Data.Models.Metadata.DisplayType.Vector, - [Data.Models.Metadata.Display.VBEndKey] = 12345L, - [Data.Models.Metadata.Display.VBStartKey] = 12345L, - [Data.Models.Metadata.Display.VTotalKey] = 12345L, - [Data.Models.Metadata.Display.WidthKey] = 12345L, + VBEnd = 12345L, + VBStart = 12345L, + VTotal = 12345L, + Width = 12345L, }; } @@ -1351,19 +1351,19 @@ namespace SabreTools.Metadata.DatFiles.Test { Assert.NotNull(display); Assert.True(display.FlipX); - Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Display.HBEndKey)); - Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Display.HBStartKey)); - Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Display.HeightKey)); - Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Display.HTotalKey)); - Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Display.PixClockKey)); + Assert.Equal(12345L, display.HBEnd); + Assert.Equal(12345L, display.HBStart); + Assert.Equal(12345L, display.Height); + Assert.Equal(12345L, display.HTotal); + Assert.Equal(12345L, display.PixClock); Assert.Equal(123.45, display.Refresh); Assert.Equal(90, display.ReadLong(Data.Models.Metadata.Display.RotateKey)); Assert.Equal("tag", display.Tag); Assert.Equal(Data.Models.Metadata.DisplayType.Vector, display.DisplayType); - Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Display.VBEndKey)); - Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Display.VBStartKey)); - Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Display.VTotalKey)); - Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Display.WidthKey)); + Assert.Equal(12345L, display.VBEnd); + Assert.Equal(12345L, display.VBStart); + Assert.Equal(12345L, display.VTotal); + Assert.Equal(12345L, display.Width); } private static void ValidateDriver(Driver? driver) @@ -1664,9 +1664,9 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Video.AspectXKey)); Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Video.AspectYKey)); Assert.Equal(Data.Models.Metadata.DisplayType.Vector, display.DisplayType); - Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Display.HeightKey)); + Assert.Equal(12345L, display.Height); Assert.Equal(123.45, display.Refresh); - Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Display.WidthKey)); + Assert.Equal(12345L, display.Width); Assert.Equal(90, display.ReadLong(Data.Models.Metadata.Display.RotateKey)); } diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs index 4fc21d47..14f7127b 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs @@ -868,19 +868,19 @@ namespace SabreTools.Metadata.DatFiles.Test { Assert.NotNull(display); Assert.True(display.FlipX); - Assert.Equal(12345, display.ReadLong(Data.Models.Metadata.Display.HBEndKey)); - Assert.Equal(12345, display.ReadLong(Data.Models.Metadata.Display.HBStartKey)); - Assert.Equal(12345, display.ReadLong(Data.Models.Metadata.Display.HeightKey)); - Assert.Equal(12345, display.ReadLong(Data.Models.Metadata.Display.HTotalKey)); - Assert.Equal(12345, display.ReadLong(Data.Models.Metadata.Display.PixClockKey)); + Assert.Equal(12345, display.HBEnd); + Assert.Equal(12345, display.HBStart); + Assert.Equal(12345, display.Height); + Assert.Equal(12345, display.HTotal); + Assert.Equal(12345, display.PixClock); Assert.Equal(123.45, display.Refresh); Assert.Equal(90, display.ReadLong(Data.Models.Metadata.Display.RotateKey)); Assert.Equal("tag", display.Tag); Assert.Equal(Data.Models.Metadata.DisplayType.Vector, display.DisplayType); - Assert.Equal(12345, display.ReadLong(Data.Models.Metadata.Display.VBEndKey)); - Assert.Equal(12345, display.ReadLong(Data.Models.Metadata.Display.VBStartKey)); - Assert.Equal(12345, display.ReadLong(Data.Models.Metadata.Display.VTotalKey)); - Assert.Equal(12345, display.ReadLong(Data.Models.Metadata.Display.WidthKey)); + Assert.Equal(12345, display.VBEnd); + Assert.Equal(12345, display.VBStart); + Assert.Equal(12345, display.VTotal); + Assert.Equal(12345, display.Width); } private static void ValidateMetadataDriver(Data.Models.Metadata.Driver? driver) diff --git a/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs b/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs index 97a9d6b4..d62fd3d4 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs @@ -935,10 +935,10 @@ namespace SabreTools.Metadata.DatFiles { [Data.Models.Metadata.Video.AspectXKey] = displayItem.ReadLong(Data.Models.Metadata.Video.AspectXKey).ToString(), [Data.Models.Metadata.Video.AspectYKey] = displayItem.ReadLong(Data.Models.Metadata.Video.AspectYKey).ToString(), - [Data.Models.Metadata.Video.HeightKey] = displayItem.ReadLong(Data.Models.Metadata.Display.HeightKey).ToString(), + [Data.Models.Metadata.Video.HeightKey] = displayItem.Height.ToString(), Refresh = displayItem.Refresh, Screen = displayItem.DisplayType, - [Data.Models.Metadata.Video.WidthKey] = displayItem.ReadLong(Data.Models.Metadata.Display.WidthKey).ToString() + [Data.Models.Metadata.Video.WidthKey] = displayItem.Width.ToString() }; switch (displayItem.ReadLong(Data.Models.Metadata.Display.RotateKey)) diff --git a/SabreTools.Metadata.DatItems/Formats/Display.cs b/SabreTools.Metadata.DatItems/Formats/Display.cs index fbdfe243..75a24100 100644 --- a/SabreTools.Metadata.DatItems/Formats/Display.cs +++ b/SabreTools.Metadata.DatItems/Formats/Display.cs @@ -25,10 +25,40 @@ namespace SabreTools.Metadata.DatItems.Formats set => (_internal as Data.Models.Metadata.Display)?.FlipX = value; } + public long? HBEnd + { + get => (_internal as Data.Models.Metadata.Display)?.HBEnd; + set => (_internal as Data.Models.Metadata.Display)?.HBEnd = value; + } + + public long? HBStart + { + get => (_internal as Data.Models.Metadata.Display)?.HBStart; + set => (_internal as Data.Models.Metadata.Display)?.HBStart = value; + } + + public long? Height + { + get => (_internal as Data.Models.Metadata.Display)?.Height; + set => (_internal as Data.Models.Metadata.Display)?.Height = value; + } + + public long? HTotal + { + get => (_internal as Data.Models.Metadata.Display)?.HTotal; + set => (_internal as Data.Models.Metadata.Display)?.HTotal = value; + } + /// /> public override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Display; + public long? PixClock + { + get => (_internal as Data.Models.Metadata.Display)?.PixClock; + set => (_internal as Data.Models.Metadata.Display)?.PixClock = value; + } + public double? Refresh { get => (_internal as Data.Models.Metadata.Display)?.Refresh; @@ -41,6 +71,30 @@ namespace SabreTools.Metadata.DatItems.Formats set => (_internal as Data.Models.Metadata.Display)?.Tag = value; } + public long? VBEnd + { + get => (_internal as Data.Models.Metadata.Display)?.VBEnd; + set => (_internal as Data.Models.Metadata.Display)?.VBEnd = value; + } + + public long? VBStart + { + get => (_internal as Data.Models.Metadata.Display)?.VBStart; + set => (_internal as Data.Models.Metadata.Display)?.VBStart = value; + } + + public long? VTotal + { + get => (_internal as Data.Models.Metadata.Display)?.VTotal; + set => (_internal as Data.Models.Metadata.Display)?.VTotal = value; + } + + public long? Width + { + get => (_internal as Data.Models.Metadata.Display)?.Width; + set => (_internal as Data.Models.Metadata.Display)?.Width = value; + } + #endregion #region Constructors @@ -50,45 +104,9 @@ namespace SabreTools.Metadata.DatItems.Formats public Display(Data.Models.Metadata.Display item) : base(item) { // Process flag values - long? hbEnd = ReadLong(Data.Models.Metadata.Display.HBEndKey); - if (hbEnd is not null) - Write(Data.Models.Metadata.Display.HBEndKey, hbEnd.ToString()); - - long? hbStart = ReadLong(Data.Models.Metadata.Display.HBStartKey); - if (hbStart is not null) - Write(Data.Models.Metadata.Display.HBStartKey, hbStart.ToString()); - - long? height = ReadLong(Data.Models.Metadata.Display.HeightKey); - if (height is not null) - Write(Data.Models.Metadata.Display.HeightKey, height.ToString()); - - long? hTotal = ReadLong(Data.Models.Metadata.Display.HTotalKey); - if (hTotal is not null) - Write(Data.Models.Metadata.Display.HTotalKey, hTotal.ToString()); - - long? pixClock = ReadLong(Data.Models.Metadata.Display.PixClockKey); - if (pixClock is not null) - Write(Data.Models.Metadata.Display.PixClockKey, pixClock.ToString()); - long? rotate = ReadLong(Data.Models.Metadata.Display.RotateKey); if (rotate is not null) Write(Data.Models.Metadata.Display.RotateKey, rotate.ToString()); - - long? vbEnd = ReadLong(Data.Models.Metadata.Display.VBEndKey); - if (vbEnd is not null) - Write(Data.Models.Metadata.Display.VBEndKey, vbEnd.ToString()); - - long? vbStart = ReadLong(Data.Models.Metadata.Display.VBStartKey); - if (vbStart is not null) - Write(Data.Models.Metadata.Display.VBStartKey, vbStart.ToString()); - - long? vTotal = ReadLong(Data.Models.Metadata.Display.VTotalKey); - if (vTotal is not null) - Write(Data.Models.Metadata.Display.VTotalKey, vTotal.ToString()); - - long? width = ReadLong(Data.Models.Metadata.Display.WidthKey); - if (width is not null) - Write(Data.Models.Metadata.Display.WidthKey, width.ToString()); } public Display(Data.Models.Metadata.Display item, Machine machine, Source source) : this(item) @@ -103,9 +121,9 @@ namespace SabreTools.Metadata.DatItems.Formats Write(Data.Models.Metadata.Video.AspectXKey, NumberHelper.ConvertToInt64(item.ReadString(Data.Models.Metadata.Video.AspectXKey))); Write(Data.Models.Metadata.Video.AspectYKey, NumberHelper.ConvertToInt64(item.ReadString(Data.Models.Metadata.Video.AspectYKey))); DisplayType = item.Screen; - Write(Data.Models.Metadata.Display.HeightKey, NumberHelper.ConvertToInt64(item.ReadString(Data.Models.Metadata.Video.HeightKey))); + Height = NumberHelper.ConvertToInt64(item.ReadString(Data.Models.Metadata.Video.HeightKey)); Refresh = item.Refresh; - Write(Data.Models.Metadata.Display.WidthKey, NumberHelper.ConvertToInt64(item.ReadString(Data.Models.Metadata.Video.WidthKey))); + Width = NumberHelper.ConvertToInt64(item.ReadString(Data.Models.Metadata.Video.WidthKey)); switch (item.ReadString(Data.Models.Metadata.Video.OrientationKey)) { @@ -128,14 +146,6 @@ namespace SabreTools.Metadata.DatItems.Formats long? aspectY = ReadLong(Data.Models.Metadata.Video.AspectYKey); if (aspectY is not null) Write(Data.Models.Metadata.Video.AspectYKey, aspectY.ToString()); - - long? height = ReadLong(Data.Models.Metadata.Video.HeightKey); - if (height is not null) - Write(Data.Models.Metadata.Display.HeightKey, height.ToString()); - - long? width = ReadLong(Data.Models.Metadata.Video.WidthKey); - if (width is not null) - Write(Data.Models.Metadata.Display.WidthKey, width.ToString()); } public Display(Data.Models.Metadata.Video item, Machine machine, Source source) : this(item) diff --git a/SabreTools.Metadata.Filter/FilterObject.cs b/SabreTools.Metadata.Filter/FilterObject.cs index 082a6642..7fd359c3 100644 --- a/SabreTools.Metadata.Filter/FilterObject.cs +++ b/SabreTools.Metadata.Filter/FilterObject.cs @@ -514,6 +514,21 @@ namespace SabreTools.Metadata.Filter case Display item when fieldName == "flipx": checkValue = item.FlipX.FromYesNo(); return true; + case Display item when fieldName == "hbend": + checkValue = item.HBEnd?.ToString(); + return true; + case Display item when fieldName == "hbstart": + checkValue = item.HBStart?.ToString(); + return true; + case Display item when fieldName == "height": + checkValue = item.Height?.ToString(); + return true; + case Display item when fieldName == "htotal": + checkValue = item.HTotal?.ToString(); + return true; + case Display item when fieldName == "pixclock": + checkValue = item.PixClock?.ToString(); + return true; case Display item when fieldName == "refresh": checkValue = item.Refresh?.ToString(); return true; @@ -523,6 +538,18 @@ namespace SabreTools.Metadata.Filter case Display item when fieldName == "tag": checkValue = item.Tag; return true; + case Display item when fieldName == "vbend": + checkValue = item.VBEnd?.ToString(); + return true; + case Display item when fieldName == "vbstart": + checkValue = item.VBStart?.ToString(); + return true; + case Display item when fieldName == "vtotal": + checkValue = item.VTotal?.ToString(); + return true; + case Display item when fieldName == "width": + checkValue = item.Width?.ToString(); + return true; case Driver item when fieldName == "blit": checkValue = item.Blit?.AsStringValue(); diff --git a/SabreTools.Metadata/DictionaryBaseExtensions.cs b/SabreTools.Metadata/DictionaryBaseExtensions.cs index f01def6f..7bd9b982 100644 --- a/SabreTools.Metadata/DictionaryBaseExtensions.cs +++ b/SabreTools.Metadata/DictionaryBaseExtensions.cs @@ -167,10 +167,28 @@ namespace SabreTools.Metadata return false; if (selfDisplay.FlipX != otherDisplay.FlipX) return false; + if (selfDisplay.HBEnd != otherDisplay.HBEnd) + return false; + if (selfDisplay.HBStart != otherDisplay.HBStart) + return false; + if (selfDisplay.Height != otherDisplay.Height) + return false; + if (selfDisplay.HTotal != otherDisplay.HTotal) + return false; + if (selfDisplay.PixClock != otherDisplay.PixClock) + return false; if (selfDisplay.Refresh != otherDisplay.Refresh) return false; if (selfDisplay.Tag != otherDisplay.Tag) return false; + if (selfDisplay.VBEnd != otherDisplay.VBEnd) + return false; + if (selfDisplay.VBStart != otherDisplay.VBStart) + return false; + if (selfDisplay.VTotal != otherDisplay.VTotal) + return false; + if (selfDisplay.Width != otherDisplay.Width) + return false; } else if (self is Driver selfDriver && other is Driver otherDriver) { diff --git a/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs b/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs index 4cec022f..28f566ae 100644 --- a/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs @@ -124,16 +124,16 @@ namespace SabreTools.Serialization.CrossModel.Test Type = Data.Models.Metadata.DisplayType.Vector, Rotate = "XXXXXX", FlipX = true, - Width = "XXXXXX", - Height = "XXXXXX", + Width = 12345, + Height = 12345, Refresh = 123.45, - PixClock = "XXXXXX", - HTotal = "XXXXXX", - HBEnd = "XXXXXX", - HBStart = "XXXXXX", - VTotal = "XXXXXX", - VBEnd = "XXXXXX", - VBStart = "XXXXXX", + PixClock = 12345, + HTotal = 12345, + HBEnd = 12345, + HBStart = 12345, + VTotal = 12345, + VBEnd = 12345, + VBStart = 12345, }; var video = new Data.Models.Listxml.Video @@ -556,16 +556,16 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal(Data.Models.Metadata.DisplayType.Vector, display.Type); Assert.Equal("XXXXXX", display.Rotate); Assert.Equal(true, display.FlipX); - Assert.Equal("XXXXXX", display.Width); - Assert.Equal("XXXXXX", display.Height); + Assert.Equal(12345, display.Width); + Assert.Equal(12345, display.Height); Assert.Equal(123.45, display.Refresh); - Assert.Equal("XXXXXX", display.PixClock); - Assert.Equal("XXXXXX", display.HTotal); - Assert.Equal("XXXXXX", display.HBEnd); - Assert.Equal("XXXXXX", display.HBStart); - Assert.Equal("XXXXXX", display.VTotal); - Assert.Equal("XXXXXX", display.VBEnd); - Assert.Equal("XXXXXX", display.VBStart); + Assert.Equal(12345, display.PixClock); + Assert.Equal(12345, display.HTotal); + Assert.Equal(12345, display.HBEnd); + Assert.Equal(12345, display.HBStart); + Assert.Equal(12345, display.VTotal); + Assert.Equal(12345, display.VBEnd); + Assert.Equal(12345, display.VBStart); } /// diff --git a/SabreTools.Serialization.CrossModel.Test/M1Tests.cs b/SabreTools.Serialization.CrossModel.Test/M1Tests.cs index 708ff79e..e096aed5 100644 --- a/SabreTools.Serialization.CrossModel.Test/M1Tests.cs +++ b/SabreTools.Serialization.CrossModel.Test/M1Tests.cs @@ -120,16 +120,16 @@ namespace SabreTools.Serialization.CrossModel.Test Type = Data.Models.Metadata.DisplayType.Vector, Rotate = "XXXXXX", FlipX = true, - Width = "XXXXXX", - Height = "XXXXXX", + Width = 12345, + Height = 12345, Refresh = 123.45, - PixClock = "XXXXXX", - HTotal = "XXXXXX", - HBEnd = "XXXXXX", - HBStart = "XXXXXX", - VTotal = "XXXXXX", - VBEnd = "XXXXXX", - VBStart = "XXXXXX", + PixClock = 12345, + HTotal = 12345, + HBEnd = 12345, + HBStart = 12345, + VTotal = 12345, + VBEnd = 12345, + VBStart = 12345, }; var video = new Data.Models.Listxml.Video @@ -550,16 +550,16 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal(Data.Models.Metadata.DisplayType.Vector, display.Type); Assert.Equal("XXXXXX", display.Rotate); Assert.Equal(true, display.FlipX); - Assert.Equal("XXXXXX", display.Width); - Assert.Equal("XXXXXX", display.Height); + Assert.Equal(12345, display.Width); + Assert.Equal(12345, display.Height); Assert.Equal(123.45, display.Refresh); - Assert.Equal("XXXXXX", display.PixClock); - Assert.Equal("XXXXXX", display.HTotal); - Assert.Equal("XXXXXX", display.HBEnd); - Assert.Equal("XXXXXX", display.HBStart); - Assert.Equal("XXXXXX", display.VTotal); - Assert.Equal("XXXXXX", display.VBEnd); - Assert.Equal("XXXXXX", display.VBStart); + Assert.Equal(12345, display.PixClock); + Assert.Equal(12345, display.HTotal); + Assert.Equal(12345, display.HBEnd); + Assert.Equal(12345, display.HBStart); + Assert.Equal(12345, display.VTotal); + Assert.Equal(12345, display.VBEnd); + Assert.Equal(12345, display.VBStart); } /// diff --git a/SabreTools.Serialization.CrossModel.Test/MessTests.cs b/SabreTools.Serialization.CrossModel.Test/MessTests.cs index ca6e5d12..91d46766 100644 --- a/SabreTools.Serialization.CrossModel.Test/MessTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/MessTests.cs @@ -120,16 +120,16 @@ namespace SabreTools.Serialization.CrossModel.Test Type = Data.Models.Metadata.DisplayType.Vector, Rotate = "XXXXXX", FlipX = true, - Width = "XXXXXX", - Height = "XXXXXX", + Width = 12345, + Height = 12345, Refresh = 123.45, - PixClock = "XXXXXX", - HTotal = "XXXXXX", - HBEnd = "XXXXXX", - HBStart = "XXXXXX", - VTotal = "XXXXXX", - VBEnd = "XXXXXX", - VBStart = "XXXXXX", + PixClock = 12345, + HTotal = 12345, + HBEnd = 12345, + HBStart = 12345, + VTotal = 12345, + VBEnd = 12345, + VBStart = 12345, }; var video = new Data.Models.Listxml.Video @@ -550,16 +550,16 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal(Data.Models.Metadata.DisplayType.Vector, display.Type); Assert.Equal("XXXXXX", display.Rotate); Assert.Equal(true, display.FlipX); - Assert.Equal("XXXXXX", display.Width); - Assert.Equal("XXXXXX", display.Height); + Assert.Equal(12345, display.Width); + Assert.Equal(12345, display.Height); Assert.Equal(123.45, display.Refresh); - Assert.Equal("XXXXXX", display.PixClock); - Assert.Equal("XXXXXX", display.HTotal); - Assert.Equal("XXXXXX", display.HBEnd); - Assert.Equal("XXXXXX", display.HBStart); - Assert.Equal("XXXXXX", display.VTotal); - Assert.Equal("XXXXXX", display.VBEnd); - Assert.Equal("XXXXXX", display.VBStart); + Assert.Equal(12345, display.PixClock); + Assert.Equal(12345, display.HTotal); + Assert.Equal(12345, display.HBEnd); + Assert.Equal(12345, display.HBStart); + Assert.Equal(12345, display.VTotal); + Assert.Equal(12345, display.VBEnd); + Assert.Equal(12345, display.VBStart); } /// diff --git a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs index 110e346c..56154c51 100644 --- a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs @@ -427,16 +427,16 @@ namespace SabreTools.Serialization.CrossModel Type = item.DisplayType, Rotate = item.ReadString(Data.Models.Metadata.Display.RotateKey), FlipX = item.FlipX, - Width = item.ReadString(Data.Models.Metadata.Display.WidthKey), - Height = item.ReadString(Data.Models.Metadata.Display.HeightKey), + Width = item.Width, + Height = item.Height, Refresh = item.Refresh, - PixClock = item.ReadString(Data.Models.Metadata.Display.PixClockKey), - HTotal = item.ReadString(Data.Models.Metadata.Display.HTotalKey), - HBEnd = item.ReadString(Data.Models.Metadata.Display.HBEndKey), - HBStart = item.ReadString(Data.Models.Metadata.Display.HBStartKey), - VTotal = item.ReadString(Data.Models.Metadata.Display.VTotalKey), - VBEnd = item.ReadString(Data.Models.Metadata.Display.VBEndKey), - VBStart = item.ReadString(Data.Models.Metadata.Display.VBStartKey), + PixClock = item.PixClock, + HTotal = item.HTotal, + HBEnd = item.HBEnd, + HBStart = item.HBStart, + VTotal = item.VTotal, + VBEnd = item.VBEnd, + VBStart = item.VBStart, }; return display; } diff --git a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs index 0fdb74fe..3304c5e7 100644 --- a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs @@ -465,16 +465,16 @@ namespace SabreTools.Serialization.CrossModel DisplayType = item.Type, [Data.Models.Metadata.Display.RotateKey] = item.Rotate, FlipX = item.FlipX, - [Data.Models.Metadata.Display.WidthKey] = item.Width, - [Data.Models.Metadata.Display.HeightKey] = item.Height, + Width = item.Width, + Height = item.Height, Refresh = item.Refresh, - [Data.Models.Metadata.Display.PixClockKey] = item.PixClock, - [Data.Models.Metadata.Display.HTotalKey] = item.HTotal, - [Data.Models.Metadata.Display.HBEndKey] = item.HBEnd, - [Data.Models.Metadata.Display.HBStartKey] = item.HBStart, - [Data.Models.Metadata.Display.VTotalKey] = item.VTotal, - [Data.Models.Metadata.Display.VBEndKey] = item.VBEnd, - [Data.Models.Metadata.Display.VBStartKey] = item.VBStart, + PixClock = item.PixClock, + HTotal = item.HTotal, + HBEnd = item.HBEnd, + HBStart = item.HBStart, + VTotal = item.VTotal, + VBEnd = item.VBEnd, + VBStart = item.VBStart, }; return display; } diff --git a/SabreTools.Serialization.Readers.Test/ListxmlTests.cs b/SabreTools.Serialization.Readers.Test/ListxmlTests.cs index 619e4620..b15a0335 100644 --- a/SabreTools.Serialization.Readers.Test/ListxmlTests.cs +++ b/SabreTools.Serialization.Readers.Test/ListxmlTests.cs @@ -191,16 +191,16 @@ namespace SabreTools.Serialization.Readers.Test Type = Data.Models.Metadata.DisplayType.Vector, Rotate = "XXXXXX", FlipX = true, - Width = "XXXXXX", - Height = "XXXXXX", + Width = 12345, + Height = 12345, Refresh = 123.45, - PixClock = "XXXXXX", - HTotal = "XXXXXX", - HBEnd = "XXXXXX", - HBStart = "XXXXXX", - VTotal = "XXXXXX", - VBEnd = "XXXXXX", - VBStart = "XXXXXX", + PixClock = 12345, + HTotal = 12345, + HBEnd = 12345, + HBStart = 12345, + VTotal = 12345, + VBEnd = 12345, + VBStart = 12345, }; var video = new Data.Models.Listxml.Video @@ -623,16 +623,16 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal(Data.Models.Metadata.DisplayType.Vector, display.Type); Assert.Equal("XXXXXX", display.Rotate); Assert.Equal(true, display.FlipX); - Assert.Equal("XXXXXX", display.Width); - Assert.Equal("XXXXXX", display.Height); + Assert.Equal(12345, display.Width); + Assert.Equal(12345, display.Height); Assert.Equal(123.45, display.Refresh); - Assert.Equal("XXXXXX", display.PixClock); - Assert.Equal("XXXXXX", display.HTotal); - Assert.Equal("XXXXXX", display.HBEnd); - Assert.Equal("XXXXXX", display.HBStart); - Assert.Equal("XXXXXX", display.VTotal); - Assert.Equal("XXXXXX", display.VBEnd); - Assert.Equal("XXXXXX", display.VBStart); + Assert.Equal(12345, display.PixClock); + Assert.Equal(12345, display.HTotal); + Assert.Equal(12345, display.HBEnd); + Assert.Equal(12345, display.HBStart); + Assert.Equal(12345, display.VTotal); + Assert.Equal(12345, display.VBEnd); + Assert.Equal(12345, display.VBStart); } /// diff --git a/SabreTools.Serialization.Readers.Test/M1Tests.cs b/SabreTools.Serialization.Readers.Test/M1Tests.cs index b71ccaed..b759f62f 100644 --- a/SabreTools.Serialization.Readers.Test/M1Tests.cs +++ b/SabreTools.Serialization.Readers.Test/M1Tests.cs @@ -187,16 +187,16 @@ namespace SabreTools.Serialization.Readers.Test Type = Data.Models.Metadata.DisplayType.Vector, Rotate = "XXXXXX", FlipX = true, - Width = "XXXXXX", - Height = "XXXXXX", + Width = 12345, + Height = 12345, Refresh = 123.45, - PixClock = "XXXXXX", - HTotal = "XXXXXX", - HBEnd = "XXXXXX", - HBStart = "XXXXXX", - VTotal = "XXXXXX", - VBEnd = "XXXXXX", - VBStart = "XXXXXX", + PixClock = 12345, + HTotal = 12345, + HBEnd = 12345, + HBStart = 12345, + VTotal = 12345, + VBEnd = 12345, + VBStart = 12345, }; var video = new Data.Models.Listxml.Video @@ -617,16 +617,16 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal(Data.Models.Metadata.DisplayType.Vector, display.Type); Assert.Equal("XXXXXX", display.Rotate); Assert.Equal(true, display.FlipX); - Assert.Equal("XXXXXX", display.Width); - Assert.Equal("XXXXXX", display.Height); + Assert.Equal(12345, display.Width); + Assert.Equal(12345, display.Height); Assert.Equal(123.45, display.Refresh); - Assert.Equal("XXXXXX", display.PixClock); - Assert.Equal("XXXXXX", display.HTotal); - Assert.Equal("XXXXXX", display.HBEnd); - Assert.Equal("XXXXXX", display.HBStart); - Assert.Equal("XXXXXX", display.VTotal); - Assert.Equal("XXXXXX", display.VBEnd); - Assert.Equal("XXXXXX", display.VBStart); + Assert.Equal(12345, display.PixClock); + Assert.Equal(12345, display.HTotal); + Assert.Equal(12345, display.HBEnd); + Assert.Equal(12345, display.HBStart); + Assert.Equal(12345, display.VTotal); + Assert.Equal(12345, display.VBEnd); + Assert.Equal(12345, display.VBStart); } /// diff --git a/SabreTools.Serialization.Readers.Test/MessTests.cs b/SabreTools.Serialization.Readers.Test/MessTests.cs index 365ccc61..7f0bd148 100644 --- a/SabreTools.Serialization.Readers.Test/MessTests.cs +++ b/SabreTools.Serialization.Readers.Test/MessTests.cs @@ -187,16 +187,16 @@ namespace SabreTools.Serialization.Readers.Test Type = Data.Models.Metadata.DisplayType.Vector, Rotate = "XXXXXX", FlipX = true, - Width = "XXXXXX", - Height = "XXXXXX", + Width = 12345, + Height = 12345, Refresh = 123.45, - PixClock = "XXXXXX", - HTotal = "XXXXXX", - HBEnd = "XXXXXX", - HBStart = "XXXXXX", - VTotal = "XXXXXX", - VBEnd = "XXXXXX", - VBStart = "XXXXXX", + PixClock = 12345, + HTotal = 12345, + HBEnd = 12345, + HBStart = 12345, + VTotal = 12345, + VBEnd = 12345, + VBStart = 12345, }; var video = new Data.Models.Listxml.Video @@ -617,16 +617,16 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal(Data.Models.Metadata.DisplayType.Vector, display.Type); Assert.Equal("XXXXXX", display.Rotate); Assert.Equal(true, display.FlipX); - Assert.Equal("XXXXXX", display.Width); - Assert.Equal("XXXXXX", display.Height); + Assert.Equal(12345, display.Width); + Assert.Equal(12345, display.Height); Assert.Equal(123.45, display.Refresh); - Assert.Equal("XXXXXX", display.PixClock); - Assert.Equal("XXXXXX", display.HTotal); - Assert.Equal("XXXXXX", display.HBEnd); - Assert.Equal("XXXXXX", display.HBStart); - Assert.Equal("XXXXXX", display.VTotal); - Assert.Equal("XXXXXX", display.VBEnd); - Assert.Equal("XXXXXX", display.VBStart); + Assert.Equal(12345, display.PixClock); + Assert.Equal(12345, display.HTotal); + Assert.Equal(12345, display.HBEnd); + Assert.Equal(12345, display.HBStart); + Assert.Equal(12345, display.VTotal); + Assert.Equal(12345, display.VBEnd); + Assert.Equal(12345, display.VBStart); } /// diff --git a/SabreTools.Serialization.Readers/Listxml.cs b/SabreTools.Serialization.Readers/Listxml.cs index ececc78c..eba1a94e 100644 --- a/SabreTools.Serialization.Readers/Listxml.cs +++ b/SabreTools.Serialization.Readers/Listxml.cs @@ -578,16 +578,16 @@ namespace SabreTools.Serialization.Readers obj.Type = reader.GetAttribute("type").AsDisplayType(); obj.Rotate = reader.GetAttribute("rotate"); obj.FlipX = reader.GetAttribute("flipx").AsYesNo(); - obj.Width = reader.GetAttribute("width"); - obj.Height = reader.GetAttribute("height"); + obj.Width = NumberHelper.ConvertToInt64(reader.GetAttribute("width")); + obj.Height = NumberHelper.ConvertToInt64(reader.GetAttribute("height")); obj.Refresh = NumberHelper.ConvertToDouble(reader.GetAttribute("refresh")); - obj.PixClock = reader.GetAttribute("pixclock"); - obj.HTotal = reader.GetAttribute("htotal"); - obj.HBEnd = reader.GetAttribute("hbend"); - obj.HBStart = reader.GetAttribute("hbstart"); - obj.VTotal = reader.GetAttribute("vtotal"); - obj.VBEnd = reader.GetAttribute("vbend"); - obj.VBStart = reader.GetAttribute("vbstart"); + obj.PixClock = NumberHelper.ConvertToInt64(reader.GetAttribute("pixclock")); + obj.HTotal = NumberHelper.ConvertToInt64(reader.GetAttribute("htotal")); + obj.HBEnd = NumberHelper.ConvertToInt64(reader.GetAttribute("hbend")); + obj.HBStart = NumberHelper.ConvertToInt64(reader.GetAttribute("hbstart")); + obj.VTotal = NumberHelper.ConvertToInt64(reader.GetAttribute("vtotal")); + obj.VBEnd = NumberHelper.ConvertToInt64(reader.GetAttribute("vbend")); + obj.VBStart = NumberHelper.ConvertToInt64(reader.GetAttribute("vbstart")); return obj; } diff --git a/SabreTools.Serialization.Readers/M1.cs b/SabreTools.Serialization.Readers/M1.cs index 4f16ee3e..fb511c22 100644 --- a/SabreTools.Serialization.Readers/M1.cs +++ b/SabreTools.Serialization.Readers/M1.cs @@ -576,16 +576,16 @@ namespace SabreTools.Serialization.Readers obj.Type = reader.GetAttribute("type").AsDisplayType(); obj.Rotate = reader.GetAttribute("rotate"); obj.FlipX = reader.GetAttribute("flipx").AsYesNo(); - obj.Width = reader.GetAttribute("width"); - obj.Height = reader.GetAttribute("height"); + obj.Width = NumberHelper.ConvertToInt64(reader.GetAttribute("width")); + obj.Height = NumberHelper.ConvertToInt64(reader.GetAttribute("height")); obj.Refresh = NumberHelper.ConvertToDouble(reader.GetAttribute("refresh")); - obj.PixClock = reader.GetAttribute("pixclock"); - obj.HTotal = reader.GetAttribute("htotal"); - obj.HBEnd = reader.GetAttribute("hbend"); - obj.HBStart = reader.GetAttribute("hbstart"); - obj.VTotal = reader.GetAttribute("vtotal"); - obj.VBEnd = reader.GetAttribute("vbend"); - obj.VBStart = reader.GetAttribute("vbstart"); + obj.PixClock = NumberHelper.ConvertToInt64(reader.GetAttribute("pixclock")); + obj.HTotal = NumberHelper.ConvertToInt64(reader.GetAttribute("htotal")); + obj.HBEnd = NumberHelper.ConvertToInt64(reader.GetAttribute("hbend")); + obj.HBStart = NumberHelper.ConvertToInt64(reader.GetAttribute("hbstart")); + obj.VTotal = NumberHelper.ConvertToInt64(reader.GetAttribute("vtotal")); + obj.VBEnd = NumberHelper.ConvertToInt64(reader.GetAttribute("vbend")); + obj.VBStart = NumberHelper.ConvertToInt64(reader.GetAttribute("vbstart")); return obj; } diff --git a/SabreTools.Serialization.Readers/Mess.cs b/SabreTools.Serialization.Readers/Mess.cs index dad755ab..85c441eb 100644 --- a/SabreTools.Serialization.Readers/Mess.cs +++ b/SabreTools.Serialization.Readers/Mess.cs @@ -576,16 +576,16 @@ namespace SabreTools.Serialization.Readers obj.Type = reader.GetAttribute("type").AsDisplayType(); obj.Rotate = reader.GetAttribute("rotate"); obj.FlipX = reader.GetAttribute("flipx").AsYesNo(); - obj.Width = reader.GetAttribute("width"); - obj.Height = reader.GetAttribute("height"); + obj.Width = NumberHelper.ConvertToInt64(reader.GetAttribute("width")); + obj.Height = NumberHelper.ConvertToInt64(reader.GetAttribute("height")); obj.Refresh = NumberHelper.ConvertToDouble(reader.GetAttribute("refresh")); - obj.PixClock = reader.GetAttribute("pixclock"); - obj.HTotal = reader.GetAttribute("htotal"); - obj.HBEnd = reader.GetAttribute("hbend"); - obj.HBStart = reader.GetAttribute("hbstart"); - obj.VTotal = reader.GetAttribute("vtotal"); - obj.VBEnd = reader.GetAttribute("vbend"); - obj.VBStart = reader.GetAttribute("vbstart"); + obj.PixClock = NumberHelper.ConvertToInt64(reader.GetAttribute("pixclock")); + obj.HTotal = NumberHelper.ConvertToInt64(reader.GetAttribute("htotal")); + obj.HBEnd = NumberHelper.ConvertToInt64(reader.GetAttribute("hbend")); + obj.HBStart = NumberHelper.ConvertToInt64(reader.GetAttribute("hbstart")); + obj.VTotal = NumberHelper.ConvertToInt64(reader.GetAttribute("vtotal")); + obj.VBEnd = NumberHelper.ConvertToInt64(reader.GetAttribute("vbend")); + obj.VBStart = NumberHelper.ConvertToInt64(reader.GetAttribute("vbstart")); return obj; } diff --git a/SabreTools.Serialization.Writers/Listxml.cs b/SabreTools.Serialization.Writers/Listxml.cs index e8f4b791..3c534975 100644 --- a/SabreTools.Serialization.Writers/Listxml.cs +++ b/SabreTools.Serialization.Writers/Listxml.cs @@ -393,16 +393,16 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("type", obj.Type?.AsStringValue()); writer.WriteOptionalAttributeString("rotate", obj.Rotate); writer.WriteOptionalAttributeString("flipx", obj.FlipX.FromYesNo()); - writer.WriteOptionalAttributeString("width", obj.Width); - writer.WriteOptionalAttributeString("height", obj.Height); + writer.WriteOptionalAttributeString("width", obj.Width?.ToString()); + writer.WriteOptionalAttributeString("height", obj.Height?.ToString()); writer.WriteRequiredAttributeString("refresh", obj.Refresh?.ToString("0.000000")); - writer.WriteOptionalAttributeString("pixclock", obj.PixClock); - writer.WriteOptionalAttributeString("htotal", obj.HTotal); - writer.WriteOptionalAttributeString("hbend", obj.HBEnd); - writer.WriteOptionalAttributeString("hbstart", obj.HBStart); - writer.WriteOptionalAttributeString("vtotal", obj.VTotal); - writer.WriteOptionalAttributeString("vbend", obj.VBEnd); - writer.WriteOptionalAttributeString("vbstart", obj.VBStart); + writer.WriteOptionalAttributeString("pixclock", obj.PixClock?.ToString()); + writer.WriteOptionalAttributeString("htotal", obj.HTotal?.ToString()); + writer.WriteOptionalAttributeString("hbend", obj.HBEnd?.ToString()); + writer.WriteOptionalAttributeString("hbstart", obj.HBStart?.ToString()); + writer.WriteOptionalAttributeString("vtotal", obj.VTotal?.ToString()); + writer.WriteOptionalAttributeString("vbend", obj.VBEnd?.ToString()); + writer.WriteOptionalAttributeString("vbstart", obj.VBStart?.ToString()); writer.WriteEndElement(); } diff --git a/SabreTools.Serialization.Writers/M1.cs b/SabreTools.Serialization.Writers/M1.cs index 6077aad0..a2a53f40 100644 --- a/SabreTools.Serialization.Writers/M1.cs +++ b/SabreTools.Serialization.Writers/M1.cs @@ -391,16 +391,16 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("type", obj.Type?.AsStringValue()); writer.WriteOptionalAttributeString("rotate", obj.Rotate); writer.WriteOptionalAttributeString("flipx", obj.FlipX.FromYesNo()); - writer.WriteOptionalAttributeString("width", obj.Width); - writer.WriteOptionalAttributeString("height", obj.Height); + writer.WriteOptionalAttributeString("width", obj.Width?.ToString()); + writer.WriteOptionalAttributeString("height", obj.Height?.ToString()); writer.WriteRequiredAttributeString("refresh", obj.Refresh?.ToString("0.000000")); - writer.WriteOptionalAttributeString("pixclock", obj.PixClock); - writer.WriteOptionalAttributeString("htotal", obj.HTotal); - writer.WriteOptionalAttributeString("hbend", obj.HBEnd); - writer.WriteOptionalAttributeString("hbstart", obj.HBStart); - writer.WriteOptionalAttributeString("vtotal", obj.VTotal); - writer.WriteOptionalAttributeString("vbend", obj.VBEnd); - writer.WriteOptionalAttributeString("vbstart", obj.VBStart); + writer.WriteOptionalAttributeString("pixclock", obj.PixClock?.ToString()); + writer.WriteOptionalAttributeString("htotal", obj.HTotal?.ToString()); + writer.WriteOptionalAttributeString("hbend", obj.HBEnd?.ToString()); + writer.WriteOptionalAttributeString("hbstart", obj.HBStart?.ToString()); + writer.WriteOptionalAttributeString("vtotal", obj.VTotal?.ToString()); + writer.WriteOptionalAttributeString("vbend", obj.VBEnd?.ToString()); + writer.WriteOptionalAttributeString("vbstart", obj.VBStart?.ToString()); writer.WriteEndElement(); } diff --git a/SabreTools.Serialization.Writers/Mess.cs b/SabreTools.Serialization.Writers/Mess.cs index 5bd9d91d..eceae2c1 100644 --- a/SabreTools.Serialization.Writers/Mess.cs +++ b/SabreTools.Serialization.Writers/Mess.cs @@ -391,16 +391,16 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("type", obj.Type?.AsStringValue()); writer.WriteOptionalAttributeString("rotate", obj.Rotate); writer.WriteOptionalAttributeString("flipx", obj.FlipX.FromYesNo()); - writer.WriteOptionalAttributeString("width", obj.Width); - writer.WriteOptionalAttributeString("height", obj.Height); + writer.WriteOptionalAttributeString("width", obj.Width?.ToString()); + writer.WriteOptionalAttributeString("height", obj.Height?.ToString()); writer.WriteRequiredAttributeString("refresh", obj.Refresh?.ToString("0.000000")); - writer.WriteOptionalAttributeString("pixclock", obj.PixClock); - writer.WriteOptionalAttributeString("htotal", obj.HTotal); - writer.WriteOptionalAttributeString("hbend", obj.HBEnd); - writer.WriteOptionalAttributeString("hbstart", obj.HBStart); - writer.WriteOptionalAttributeString("vtotal", obj.VTotal); - writer.WriteOptionalAttributeString("vbend", obj.VBEnd); - writer.WriteOptionalAttributeString("vbstart", obj.VBStart); + writer.WriteOptionalAttributeString("pixclock", obj.PixClock?.ToString()); + writer.WriteOptionalAttributeString("htotal", obj.HTotal?.ToString()); + writer.WriteOptionalAttributeString("hbend", obj.HBEnd?.ToString()); + writer.WriteOptionalAttributeString("hbstart", obj.HBStart?.ToString()); + writer.WriteOptionalAttributeString("vtotal", obj.VTotal?.ToString()); + writer.WriteOptionalAttributeString("vbend", obj.VBEnd?.ToString()); + writer.WriteOptionalAttributeString("vbstart", obj.VBStart?.ToString()); writer.WriteEndElement(); } From 4fecf8b498079373116b6dec2f96888c2d600e82 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Fri, 3 Apr 2026 12:02:24 -0400 Subject: [PATCH 041/142] Remove long specifier for concrete values --- .../DatFileTests.FromMetadata.cs | 84 +++++++++---------- .../ClrMameProTests.cs | 8 +- .../DosCenterTests.cs | 4 +- .../EverdriveSMDBTests.cs | 4 +- .../ListromTests.cs | 4 +- .../ListxmlTests.cs | 8 +- .../LogiqxTests.cs | 4 +- .../M1Tests.cs | 8 +- .../MessTests.cs | 8 +- .../OfflineListTests.cs | 4 +- .../RomCenterTests.cs | 4 +- .../SeparatedValueTests.cs | 4 +- .../SoftwareListTests.cs | 8 +- .../ClrMameProTests.cs | 8 +- .../DosCenterTests.cs | 4 +- .../EverdriveSMDBTests.cs | 4 +- .../ListromTests.cs | 8 +- .../ListxmlTests.cs | 8 +- .../LogiqxTests.cs | 4 +- .../M1Tests.cs | 8 +- .../MessTests.cs | 8 +- .../OfflineListTests.cs | 4 +- .../RomCenterTests.cs | 4 +- .../SeparatedValueTests.cs | 4 +- .../SoftwareListTests.cs | 8 +- 25 files changed, 112 insertions(+), 112 deletions(-) diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs index 0087fe07..d8b7c529 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs @@ -404,7 +404,7 @@ namespace SabreTools.Metadata.DatFiles.Test { return new Data.Models.Metadata.Chip { - Clock = 12345L, + Clock = 12345, Flags = "flags", Name = "name", SoundOnly = true, @@ -462,14 +462,14 @@ namespace SabreTools.Metadata.DatFiles.Test { return new Data.Models.Metadata.Control { - Buttons = 12345L, - KeyDelta = 12345L, - Maximum = 12345L, - Minimum = 12345L, - Player = 12345L, - ReqButtons = 12345L, + Buttons = 12345, + KeyDelta = 12345, + Maximum = 12345, + Minimum = 12345, + Player = 12345, + ReqButtons = 12345, Reverse = true, - Sensitivity = 12345L, + Sensitivity = 12345, ControlType = Data.Models.Metadata.ControlType.Lightgun, Ways = "ways", Ways2 = "ways2", @@ -542,7 +542,7 @@ namespace SabreTools.Metadata.DatFiles.Test Endianness = Data.Models.Metadata.Endianness.Big, Name = "name", [Data.Models.Metadata.DataArea.RomKey] = new Data.Models.Metadata.Rom[] { [] }, - Size = 12345L, + Size = 12345, [Data.Models.Metadata.DataArea.WidthKey] = 64, }; } @@ -577,19 +577,19 @@ namespace SabreTools.Metadata.DatFiles.Test return new Data.Models.Metadata.Display { FlipX = true, - HBEnd = 12345L, - HBStart = 12345L, - Height = 12345L, - HTotal = 12345L, - PixClock = 12345L, + HBEnd = 12345, + HBStart = 12345, + Height = 12345, + HTotal = 12345, + PixClock = 12345, Refresh = 123.45, [Data.Models.Metadata.Display.RotateKey] = 90, Tag = "tag", DisplayType = Data.Models.Metadata.DisplayType.Vector, - VBEnd = 12345L, - VBStart = 12345L, - VTotal = 12345L, - Width = 12345L, + VBEnd = 12345, + VBStart = 12345, + VTotal = 12345, + Width = 12345, }; } @@ -838,7 +838,7 @@ namespace SabreTools.Metadata.DatFiles.Test [Data.Models.Metadata.Rom.SHA256Key] = HashType.SHA256.ZeroString, [Data.Models.Metadata.Rom.SHA384Key] = HashType.SHA384.ZeroString, [Data.Models.Metadata.Rom.SHA512Key] = HashType.SHA512.ZeroString, - Size = 12345L, + Size = 12345, SoundOnly = true, [Data.Models.Metadata.Rom.SourceKey] = "source", [Data.Models.Metadata.Rom.SpamSumKey] = HashType.SpamSum.ZeroString, @@ -961,7 +961,7 @@ namespace SabreTools.Metadata.DatFiles.Test { return new Data.Models.Metadata.Sound { - Channels = 12345L, + Channels = 12345, }; } @@ -1174,7 +1174,7 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateChip(Chip? chip) { Assert.NotNull(chip); - Assert.Equal(12345L, chip.Clock); + Assert.Equal(12345, chip.Clock); Assert.Equal("flags", chip.Flags); Assert.Equal("name", chip.Name); Assert.True(chip.SoundOnly); @@ -1234,14 +1234,14 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateControl(Control? control) { Assert.NotNull(control); - Assert.Equal(12345L, control.Buttons); - Assert.Equal(12345L, control.KeyDelta); - Assert.Equal(12345L, control.Maximum); - Assert.Equal(12345L, control.Minimum); - Assert.Equal(12345L, control.Player); - Assert.Equal(12345L, control.ReqButtons); + Assert.Equal(12345, control.Buttons); + Assert.Equal(12345, control.KeyDelta); + Assert.Equal(12345, control.Maximum); + Assert.Equal(12345, control.Minimum); + Assert.Equal(12345, control.Player); + Assert.Equal(12345, control.ReqButtons); Assert.True(control.Reverse); - Assert.Equal(12345L, control.Sensitivity); + Assert.Equal(12345, control.Sensitivity); Assert.Equal(Data.Models.Metadata.ControlType.Lightgun, control.ControlType); Assert.Equal("ways", control.Ways); Assert.Equal("ways2", control.Ways2); @@ -1253,7 +1253,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(dataArea); Assert.Equal(Data.Models.Metadata.Endianness.Big, dataArea.Endianness); Assert.Equal("name", dataArea.Name); - Assert.Equal(12345L, dataArea.Size); + Assert.Equal(12345, dataArea.Size); Assert.Equal(64, dataArea.ReadLong(Data.Models.Metadata.DataArea.WidthKey)); } @@ -1351,19 +1351,19 @@ namespace SabreTools.Metadata.DatFiles.Test { Assert.NotNull(display); Assert.True(display.FlipX); - Assert.Equal(12345L, display.HBEnd); - Assert.Equal(12345L, display.HBStart); - Assert.Equal(12345L, display.Height); - Assert.Equal(12345L, display.HTotal); - Assert.Equal(12345L, display.PixClock); + Assert.Equal(12345, display.HBEnd); + Assert.Equal(12345, display.HBStart); + Assert.Equal(12345, display.Height); + Assert.Equal(12345, display.HTotal); + Assert.Equal(12345, display.PixClock); Assert.Equal(123.45, display.Refresh); Assert.Equal(90, display.ReadLong(Data.Models.Metadata.Display.RotateKey)); Assert.Equal("tag", display.Tag); Assert.Equal(Data.Models.Metadata.DisplayType.Vector, display.DisplayType); - Assert.Equal(12345L, display.VBEnd); - Assert.Equal(12345L, display.VBStart); - Assert.Equal(12345L, display.VTotal); - Assert.Equal(12345L, display.Width); + Assert.Equal(12345, display.VBEnd); + Assert.Equal(12345, display.VBStart); + Assert.Equal(12345, display.VTotal); + Assert.Equal(12345, display.Width); } private static void ValidateDriver(Driver? driver) @@ -1558,7 +1558,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal(HashType.SHA256.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.SHA256Key)); Assert.Equal(HashType.SHA384.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.SHA384Key)); Assert.Equal(HashType.SHA512.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.SHA512Key)); - Assert.Equal(12345L, rom.Size); + Assert.Equal(12345, rom.Size); Assert.True(rom.SoundOnly); Assert.Equal("source", rom.ReadString(Data.Models.Metadata.Rom.SourceKey)); Assert.Equal(HashType.SpamSum.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.SpamSumKey)); @@ -1635,7 +1635,7 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateSound(Sound? sound) { Assert.NotNull(sound); - Assert.Equal(12345L, sound.Channels); + Assert.Equal(12345, sound.Channels); } // TODO: Figure out why so many fields are omitted @@ -1664,9 +1664,9 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Video.AspectXKey)); Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Video.AspectYKey)); Assert.Equal(Data.Models.Metadata.DisplayType.Vector, display.DisplayType); - Assert.Equal(12345L, display.Height); + Assert.Equal(12345, display.Height); Assert.Equal(123.45, display.Refresh); - Assert.Equal(12345L, display.Width); + Assert.Equal(12345, display.Width); Assert.Equal(90, display.ReadLong(Data.Models.Metadata.Display.RotateKey)); } diff --git a/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs b/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs index 38149fa0..17a6c784 100644 --- a/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs @@ -97,7 +97,7 @@ namespace SabreTools.Serialization.CrossModel.Test var rom = new Data.Models.ClrMamePro.Rom { Name = "name", - Size = 12345L, + Size = 12345, CRC16 = "XXXXXX", CRC = "XXXXXX", CRC64 = "XXXXXX", @@ -175,7 +175,7 @@ namespace SabreTools.Serialization.CrossModel.Test var sound = new Data.Models.ClrMamePro.Sound { - Channels = 12345L, + Channels = 12345, }; var input = new Data.Models.ClrMamePro.Input @@ -360,7 +360,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(rom); Assert.Equal("name", rom.Name); - Assert.Equal(12345L, rom.Size); + Assert.Equal(12345, rom.Size); Assert.Equal("XXXXXX", rom.CRC16); Assert.Equal("XXXXXX", rom.CRC); Assert.Equal("XXXXXX", rom.CRC64); @@ -466,7 +466,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.ClrMamePro.Sound? sound) { Assert.NotNull(sound); - Assert.Equal(12345L, sound.Channels); + Assert.Equal(12345, sound.Channels); } /// diff --git a/SabreTools.Serialization.CrossModel.Test/DosCenterTests.cs b/SabreTools.Serialization.CrossModel.Test/DosCenterTests.cs index e51dbebb..0afa4b12 100644 --- a/SabreTools.Serialization.CrossModel.Test/DosCenterTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/DosCenterTests.cs @@ -47,7 +47,7 @@ namespace SabreTools.Serialization.CrossModel.Test var file = new Data.Models.DosCenter.File { Name = "name", - Size = 12345L, + Size = 12345, CRC = "XXXXXX", SHA1 = "XXXXXX", Date = "XXXXXX", @@ -101,7 +101,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(rom); Assert.Equal("name", rom.Name); - Assert.Equal(12345L, rom.Size); + Assert.Equal(12345, rom.Size); Assert.Equal("XXXXXX", rom.CRC); Assert.Equal("XXXXXX", rom.SHA1); Assert.Equal("XXXXXX", rom.Date); diff --git a/SabreTools.Serialization.CrossModel.Test/EverdriveSMDBTests.cs b/SabreTools.Serialization.CrossModel.Test/EverdriveSMDBTests.cs index b3e7ca0c..66ad2fb2 100644 --- a/SabreTools.Serialization.CrossModel.Test/EverdriveSMDBTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/EverdriveSMDBTests.cs @@ -39,7 +39,7 @@ namespace SabreTools.Serialization.CrossModel.Test SHA1 = "XXXXXX", MD5 = "XXXXXX", CRC32 = "XXXXXX", - Size = 12345L, + Size = 12345, }; return new Data.Models.EverdriveSMDB.MetadataFile @@ -59,7 +59,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", row.SHA1); Assert.Equal("XXXXXX", row.MD5); Assert.Equal("XXXXXX", row.CRC32); - Assert.Equal(12345L, row.Size); + Assert.Equal(12345, row.Size); } } } diff --git a/SabreTools.Serialization.CrossModel.Test/ListromTests.cs b/SabreTools.Serialization.CrossModel.Test/ListromTests.cs index 16fba80d..790ae2fc 100644 --- a/SabreTools.Serialization.CrossModel.Test/ListromTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/ListromTests.cs @@ -37,7 +37,7 @@ namespace SabreTools.Serialization.CrossModel.Test var rom = new Data.Models.Listrom.Row { Name = "name", - Size = 12345L, + Size = 12345, Bad = true, CRC = "XXXXXX", SHA1 = "XXXXXX", @@ -104,7 +104,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(row); Assert.Equal("name", row.Name); - Assert.Equal(12345L, row.Size); + Assert.Equal(12345, row.Size); Assert.True(row.Bad); Assert.Equal("XXXXXX", row.CRC); Assert.Equal("XXXXXX", row.SHA1); diff --git a/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs b/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs index 28f566ae..1cc288df 100644 --- a/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs @@ -74,7 +74,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Name = "name", Bios = "XXXXXX", - Size = 12345L, + Size = 12345, CRC = "XXXXXX", SHA1 = "XXXXXX", Merge = "XXXXXX", @@ -149,7 +149,7 @@ namespace SabreTools.Serialization.CrossModel.Test var sound = new Data.Models.Listxml.Sound { - Channels = 12345L, + Channels = 12345, }; var control = new Data.Models.Listxml.Control @@ -486,7 +486,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(rom); Assert.Equal("name", rom.Name); Assert.Equal("XXXXXX", rom.Bios); - Assert.Equal(12345L, rom.Size); + Assert.Equal(12345, rom.Size); Assert.Equal("XXXXXX", rom.CRC); Assert.Equal("XXXXXX", rom.SHA1); Assert.Equal("XXXXXX", rom.Merge); @@ -589,7 +589,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Sound? sound) { Assert.NotNull(sound); - Assert.Equal(12345L, sound.Channels); + Assert.Equal(12345, sound.Channels); } /// diff --git a/SabreTools.Serialization.CrossModel.Test/LogiqxTests.cs b/SabreTools.Serialization.CrossModel.Test/LogiqxTests.cs index b06c0000..c3b2ecaf 100644 --- a/SabreTools.Serialization.CrossModel.Test/LogiqxTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/LogiqxTests.cs @@ -148,7 +148,7 @@ namespace SabreTools.Serialization.CrossModel.Test var rom = new Data.Models.Logiqx.Rom { Name = "name", - Size = 12345L, + Size = 12345, CRC16 = "XXXXXX", CRC = "XXXXXX", CRC64 = "XXXXXX", @@ -464,7 +464,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(rom); Assert.Equal("name", rom.Name); - Assert.Equal(12345L, rom.Size); + Assert.Equal(12345, rom.Size); Assert.Equal("XXXXXX", rom.CRC16); Assert.Equal("XXXXXX", rom.CRC); Assert.Equal("XXXXXX", rom.CRC64); diff --git a/SabreTools.Serialization.CrossModel.Test/M1Tests.cs b/SabreTools.Serialization.CrossModel.Test/M1Tests.cs index e096aed5..620f47cd 100644 --- a/SabreTools.Serialization.CrossModel.Test/M1Tests.cs +++ b/SabreTools.Serialization.CrossModel.Test/M1Tests.cs @@ -70,7 +70,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Name = "name", Bios = "XXXXXX", - Size = 12345L, + Size = 12345, CRC = "XXXXXX", SHA1 = "XXXXXX", Merge = "XXXXXX", @@ -145,7 +145,7 @@ namespace SabreTools.Serialization.CrossModel.Test var sound = new Data.Models.Listxml.Sound { - Channels = 12345L, + Channels = 12345, }; var control = new Data.Models.Listxml.Control @@ -480,7 +480,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(rom); Assert.Equal("name", rom.Name); Assert.Equal("XXXXXX", rom.Bios); - Assert.Equal(12345L, rom.Size); + Assert.Equal(12345, rom.Size); Assert.Equal("XXXXXX", rom.CRC); Assert.Equal("XXXXXX", rom.SHA1); Assert.Equal("XXXXXX", rom.Merge); @@ -583,7 +583,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Sound? sound) { Assert.NotNull(sound); - Assert.Equal(12345L, sound.Channels); + Assert.Equal(12345, sound.Channels); } /// diff --git a/SabreTools.Serialization.CrossModel.Test/MessTests.cs b/SabreTools.Serialization.CrossModel.Test/MessTests.cs index 91d46766..01861dfd 100644 --- a/SabreTools.Serialization.CrossModel.Test/MessTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/MessTests.cs @@ -70,7 +70,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Name = "name", Bios = "XXXXXX", - Size = 12345L, + Size = 12345, CRC = "XXXXXX", SHA1 = "XXXXXX", Merge = "XXXXXX", @@ -145,7 +145,7 @@ namespace SabreTools.Serialization.CrossModel.Test var sound = new Data.Models.Listxml.Sound { - Channels = 12345L, + Channels = 12345, }; var control = new Data.Models.Listxml.Control @@ -480,7 +480,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(rom); Assert.Equal("name", rom.Name); Assert.Equal("XXXXXX", rom.Bios); - Assert.Equal(12345L, rom.Size); + Assert.Equal(12345, rom.Size); Assert.Equal("XXXXXX", rom.CRC); Assert.Equal("XXXXXX", rom.SHA1); Assert.Equal("XXXXXX", rom.Merge); @@ -583,7 +583,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Sound? sound) { Assert.NotNull(sound); - Assert.Equal(12345L, sound.Channels); + Assert.Equal(12345, sound.Channels); } /// diff --git a/SabreTools.Serialization.CrossModel.Test/OfflineListTests.cs b/SabreTools.Serialization.CrossModel.Test/OfflineListTests.cs index 24d7909f..899e221a 100644 --- a/SabreTools.Serialization.CrossModel.Test/OfflineListTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/OfflineListTests.cs @@ -191,7 +191,7 @@ namespace SabreTools.Serialization.CrossModel.Test ReleaseNumber = "XXXXXX", Title = "XXXXXX", SaveType = "XXXXXX", - RomSize = 12345L, + RomSize = 12345, Publisher = "XXXXXX", Location = "XXXXXX", SourceRom = "XXXXXX", @@ -379,7 +379,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", game.ReleaseNumber); Assert.Equal("XXXXXX", game.Title); Assert.Equal("XXXXXX", game.SaveType); - Assert.Equal(12345L, game.RomSize); + Assert.Equal(12345, game.RomSize); Assert.Equal("XXXXXX", game.Publisher); Assert.Equal("XXXXXX", game.Location); Assert.Equal("XXXXXX", game.SourceRom); diff --git a/SabreTools.Serialization.CrossModel.Test/RomCenterTests.cs b/SabreTools.Serialization.CrossModel.Test/RomCenterTests.cs index 96d18db9..7d321c3b 100644 --- a/SabreTools.Serialization.CrossModel.Test/RomCenterTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/RomCenterTests.cs @@ -66,7 +66,7 @@ namespace SabreTools.Serialization.CrossModel.Test GameDescription = "description", RomName = "XXXXXX", RomCRC = "XXXXXX", - RomSize = 12345L, + RomSize = 12345, RomOf = "XXXXXX", MergeName = "XXXXXX", }; @@ -145,7 +145,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("description", rom.GameDescription); Assert.Equal("XXXXXX", rom.RomName); Assert.Equal("XXXXXX", rom.RomCRC); - Assert.Equal(12345L, rom.RomSize); + Assert.Equal(12345, rom.RomSize); Assert.Equal("XXXXXX", rom.RomOf); Assert.Equal("XXXXXX", rom.MergeName); } diff --git a/SabreTools.Serialization.CrossModel.Test/SeparatedValueTests.cs b/SabreTools.Serialization.CrossModel.Test/SeparatedValueTests.cs index 83448455..3afef91f 100644 --- a/SabreTools.Serialization.CrossModel.Test/SeparatedValueTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/SeparatedValueTests.cs @@ -76,7 +76,7 @@ namespace SabreTools.Serialization.CrossModel.Test GameDescription = "description", Type = "rom", RomName = "XXXXXX", - Size = 12345L, + Size = 12345, CRC = "XXXXXX", MD5 = "XXXXXX", SHA1 = "XXXXXX", @@ -168,7 +168,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("rom", row.Type); Assert.Equal("XXXXXX", row.RomName); Assert.Null(row.DiskName); - Assert.Equal(12345L, row.Size); + Assert.Equal(12345, row.Size); Assert.Equal("XXXXXX", row.CRC); Assert.Equal("XXXXXX", row.MD5); Assert.Equal("XXXXXX", row.SHA1); diff --git a/SabreTools.Serialization.CrossModel.Test/SoftwareListTests.cs b/SabreTools.Serialization.CrossModel.Test/SoftwareListTests.cs index 9a13de11..3d3eb904 100644 --- a/SabreTools.Serialization.CrossModel.Test/SoftwareListTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/SoftwareListTests.cs @@ -57,7 +57,7 @@ namespace SabreTools.Serialization.CrossModel.Test var rom = new Data.Models.SoftwareList.Rom { Name = "name", - Size = 12345L, + Size = 12345, Length = "XXXXXX", CRC = "XXXXXX", SHA1 = "XXXXXX", @@ -70,7 +70,7 @@ namespace SabreTools.Serialization.CrossModel.Test var dataarea = new Data.Models.SoftwareList.DataArea { Name = "name", - Size = 12345L, + Size = 12345, Width = "XXXXXX", Endianness = Data.Models.Metadata.Endianness.Big, Rom = [rom], @@ -229,7 +229,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(dataarea); Assert.Equal("name", dataarea.Name); - Assert.Equal(12345L, dataarea.Size); + Assert.Equal(12345, dataarea.Size); Assert.Equal("XXXXXX", dataarea.Width); Assert.Equal(Data.Models.Metadata.Endianness.Big, dataarea.Endianness); @@ -245,7 +245,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(rom); Assert.Equal("name", rom.Name); - Assert.Equal(12345L, rom.Size); + Assert.Equal(12345, rom.Size); Assert.Equal("XXXXXX", rom.Length); Assert.Equal("XXXXXX", rom.CRC); Assert.Equal("XXXXXX", rom.SHA1); diff --git a/SabreTools.Serialization.Readers.Test/ClrMameProTests.cs b/SabreTools.Serialization.Readers.Test/ClrMameProTests.cs index a47636c8..b2eb58de 100644 --- a/SabreTools.Serialization.Readers.Test/ClrMameProTests.cs +++ b/SabreTools.Serialization.Readers.Test/ClrMameProTests.cs @@ -214,7 +214,7 @@ namespace SabreTools.Serialization.Readers.Test var rom = new Data.Models.ClrMamePro.Rom { Name = "name", - Size = 12345L, + Size = 12345, CRC16 = "XXXXXX", CRC = "XXXXXX", CRC64 = "XXXXXX", @@ -292,7 +292,7 @@ namespace SabreTools.Serialization.Readers.Test var sound = new Data.Models.ClrMamePro.Sound { - Channels = 12345L, + Channels = 12345 }; var input = new Data.Models.ClrMamePro.Input @@ -477,7 +477,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(rom); Assert.Equal("name", rom.Name); - Assert.Equal(12345L, rom.Size); + Assert.Equal(12345, rom.Size); Assert.Equal("XXXXXX", rom.CRC16); Assert.Equal("XXXXXX", rom.CRC); Assert.Equal("XXXXXX", rom.CRC64); @@ -583,7 +583,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.ClrMamePro.Sound? sound) { Assert.NotNull(sound); - Assert.Equal(12345L, sound.Channels); + Assert.Equal(12345, sound.Channels); } /// diff --git a/SabreTools.Serialization.Readers.Test/DosCenterTests.cs b/SabreTools.Serialization.Readers.Test/DosCenterTests.cs index 40e43160..6b8c48eb 100644 --- a/SabreTools.Serialization.Readers.Test/DosCenterTests.cs +++ b/SabreTools.Serialization.Readers.Test/DosCenterTests.cs @@ -113,7 +113,7 @@ namespace SabreTools.Serialization.Readers.Test var file = new Data.Models.DosCenter.File { Name = "name", - Size = 12345L, + Size = 12345, CRC = "XXXXXX", SHA1 = "XXXXXX", Date = "XXXXXX XXXXXX", @@ -167,7 +167,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(rom); Assert.Equal("name", rom.Name); - Assert.Equal(12345L, rom.Size); + Assert.Equal(12345, rom.Size); Assert.Equal("XXXXXX", rom.CRC); Assert.Equal("XXXXXX", rom.SHA1); Assert.Equal("XXXXXX XXXXXX", rom.Date); diff --git a/SabreTools.Serialization.Readers.Test/EverdriveSMDBTests.cs b/SabreTools.Serialization.Readers.Test/EverdriveSMDBTests.cs index d109d09b..7f755d1a 100644 --- a/SabreTools.Serialization.Readers.Test/EverdriveSMDBTests.cs +++ b/SabreTools.Serialization.Readers.Test/EverdriveSMDBTests.cs @@ -105,7 +105,7 @@ namespace SabreTools.Serialization.Readers.Test SHA1 = "XXXXXX", MD5 = "XXXXXX", CRC32 = "XXXXXX", - Size = 12345L, + Size = 12345, }; return new Data.Models.EverdriveSMDB.MetadataFile @@ -125,7 +125,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", row.SHA1); Assert.Equal("XXXXXX", row.MD5); Assert.Equal("XXXXXX", row.CRC32); - Assert.Equal(12345L, row.Size); + Assert.Equal(12345, row.Size); } } } diff --git a/SabreTools.Serialization.Readers.Test/ListromTests.cs b/SabreTools.Serialization.Readers.Test/ListromTests.cs index aefdefcc..8f3b27c4 100644 --- a/SabreTools.Serialization.Readers.Test/ListromTests.cs +++ b/SabreTools.Serialization.Readers.Test/ListromTests.cs @@ -103,7 +103,7 @@ namespace SabreTools.Serialization.Readers.Test var romGood = new Data.Models.Listrom.Row { Name = "name", - Size = 12345L, + Size = 12345, Bad = false, CRC = Hashing.HashType.CRC32.ZeroString, SHA1 = Hashing.HashType.SHA1.ZeroString, @@ -113,7 +113,7 @@ namespace SabreTools.Serialization.Readers.Test var romBad = new Data.Models.Listrom.Row { Name = "name", - Size = 12345L, + Size = 12345, Bad = true, CRC = Hashing.HashType.CRC32.ZeroString, SHA1 = Hashing.HashType.SHA1.ZeroString, @@ -203,7 +203,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(row); Assert.Equal("name", row.Name); - Assert.Equal(12345L, row.Size); + Assert.Equal(12345, row.Size); Assert.False(row.Bad); Assert.Equal(Hashing.HashType.CRC32.ZeroString, row.CRC); Assert.Equal(Hashing.HashType.SHA1.ZeroString, row.SHA1); @@ -217,7 +217,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(row); Assert.Equal("name", row.Name); - Assert.Equal(12345L, row.Size); + Assert.Equal(12345, row.Size); Assert.True(row.Bad); Assert.Equal(Hashing.HashType.CRC32.ZeroString, row.CRC); Assert.Equal(Hashing.HashType.SHA1.ZeroString, row.SHA1); diff --git a/SabreTools.Serialization.Readers.Test/ListxmlTests.cs b/SabreTools.Serialization.Readers.Test/ListxmlTests.cs index b15a0335..ebcc67fa 100644 --- a/SabreTools.Serialization.Readers.Test/ListxmlTests.cs +++ b/SabreTools.Serialization.Readers.Test/ListxmlTests.cs @@ -141,7 +141,7 @@ namespace SabreTools.Serialization.Readers.Test { Name = "name", Bios = "XXXXXX", - Size = 12345L, + Size = 12345, CRC = "XXXXXX", SHA1 = "XXXXXX", Merge = "XXXXXX", @@ -216,7 +216,7 @@ namespace SabreTools.Serialization.Readers.Test var sound = new Data.Models.Listxml.Sound { - Channels = 12345L, + Channels = 12345, }; var control = new Data.Models.Listxml.Control @@ -553,7 +553,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(rom); Assert.Equal("name", rom.Name); Assert.Equal("XXXXXX", rom.Bios); - Assert.Equal(12345L, rom.Size); + Assert.Equal(12345, rom.Size); Assert.Equal("XXXXXX", rom.CRC); Assert.Equal("XXXXXX", rom.SHA1); Assert.Equal("XXXXXX", rom.Merge); @@ -656,7 +656,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Sound? sound) { Assert.NotNull(sound); - Assert.Equal(12345L, sound.Channels); + Assert.Equal(12345, sound.Channels); } /// diff --git a/SabreTools.Serialization.Readers.Test/LogiqxTests.cs b/SabreTools.Serialization.Readers.Test/LogiqxTests.cs index 415951e5..7334a420 100644 --- a/SabreTools.Serialization.Readers.Test/LogiqxTests.cs +++ b/SabreTools.Serialization.Readers.Test/LogiqxTests.cs @@ -213,7 +213,7 @@ namespace SabreTools.Serialization.Readers.Test var rom = new Data.Models.Logiqx.Rom { Name = "name", - Size = 12345L, + Size = 12345, CRC16 = "XXXXXX", CRC = "XXXXXX", CRC64 = "XXXXXX", @@ -514,7 +514,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(rom); Assert.Equal("name", rom.Name); - Assert.Equal(12345L, rom.Size); + Assert.Equal(12345, rom.Size); Assert.Equal("XXXXXX", rom.CRC); Assert.Equal("XXXXXX", rom.MD2); Assert.Equal("XXXXXX", rom.MD4); diff --git a/SabreTools.Serialization.Readers.Test/M1Tests.cs b/SabreTools.Serialization.Readers.Test/M1Tests.cs index b759f62f..9e905028 100644 --- a/SabreTools.Serialization.Readers.Test/M1Tests.cs +++ b/SabreTools.Serialization.Readers.Test/M1Tests.cs @@ -137,7 +137,7 @@ namespace SabreTools.Serialization.Readers.Test { Name = "name", Bios = "XXXXXX", - Size = 12345L, + Size = 12345, CRC = "XXXXXX", SHA1 = "XXXXXX", Merge = "XXXXXX", @@ -212,7 +212,7 @@ namespace SabreTools.Serialization.Readers.Test var sound = new Data.Models.Listxml.Sound { - Channels = 12345L, + Channels = 12345, }; var control = new Data.Models.Listxml.Control @@ -547,7 +547,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(rom); Assert.Equal("name", rom.Name); Assert.Equal("XXXXXX", rom.Bios); - Assert.Equal(12345L, rom.Size); + Assert.Equal(12345, rom.Size); Assert.Equal("XXXXXX", rom.CRC); Assert.Equal("XXXXXX", rom.SHA1); Assert.Equal("XXXXXX", rom.Merge); @@ -650,7 +650,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Sound? sound) { Assert.NotNull(sound); - Assert.Equal(12345L, sound.Channels); + Assert.Equal(12345, sound.Channels); } /// diff --git a/SabreTools.Serialization.Readers.Test/MessTests.cs b/SabreTools.Serialization.Readers.Test/MessTests.cs index 7f0bd148..77389109 100644 --- a/SabreTools.Serialization.Readers.Test/MessTests.cs +++ b/SabreTools.Serialization.Readers.Test/MessTests.cs @@ -137,7 +137,7 @@ namespace SabreTools.Serialization.Readers.Test { Name = "name", Bios = "XXXXXX", - Size = 12345L, + Size = 12345, CRC = "XXXXXX", SHA1 = "XXXXXX", Merge = "XXXXXX", @@ -212,7 +212,7 @@ namespace SabreTools.Serialization.Readers.Test var sound = new Data.Models.Listxml.Sound { - Channels = 12345L, + Channels = 12345, }; var control = new Data.Models.Listxml.Control @@ -547,7 +547,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(rom); Assert.Equal("name", rom.Name); Assert.Equal("XXXXXX", rom.Bios); - Assert.Equal(12345L, rom.Size); + Assert.Equal(12345, rom.Size); Assert.Equal("XXXXXX", rom.CRC); Assert.Equal("XXXXXX", rom.SHA1); Assert.Equal("XXXXXX", rom.Merge); @@ -650,7 +650,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Sound? sound) { Assert.NotNull(sound); - Assert.Equal(12345L, sound.Channels); + Assert.Equal(12345, sound.Channels); } /// diff --git a/SabreTools.Serialization.Readers.Test/OfflineListTests.cs b/SabreTools.Serialization.Readers.Test/OfflineListTests.cs index 74edbda6..d2df1e6b 100644 --- a/SabreTools.Serialization.Readers.Test/OfflineListTests.cs +++ b/SabreTools.Serialization.Readers.Test/OfflineListTests.cs @@ -257,7 +257,7 @@ namespace SabreTools.Serialization.Readers.Test ReleaseNumber = "XXXXXX", Title = "XXXXXX", SaveType = "XXXXXX", - RomSize = 12345L, + RomSize = 12345, Publisher = "XXXXXX", Location = "XXXXXX", SourceRom = "XXXXXX", @@ -445,7 +445,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", game.ReleaseNumber); Assert.Equal("XXXXXX", game.Title); Assert.Equal("XXXXXX", game.SaveType); - Assert.Equal(12345L, game.RomSize); + Assert.Equal(12345, game.RomSize); Assert.Equal("XXXXXX", game.Publisher); Assert.Equal("XXXXXX", game.Location); Assert.Equal("XXXXXX", game.SourceRom); diff --git a/SabreTools.Serialization.Readers.Test/RomCenterTests.cs b/SabreTools.Serialization.Readers.Test/RomCenterTests.cs index 0ee45882..64c1b84e 100644 --- a/SabreTools.Serialization.Readers.Test/RomCenterTests.cs +++ b/SabreTools.Serialization.Readers.Test/RomCenterTests.cs @@ -132,7 +132,7 @@ namespace SabreTools.Serialization.Readers.Test GameDescription = "description", RomName = "XXXXXX", RomCRC = "XXXXXX", - RomSize = 12345L, + RomSize = 12345, RomOf = "XXXXXX", MergeName = "XXXXXX", }; @@ -211,7 +211,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("description", rom.GameDescription); Assert.Equal("XXXXXX", rom.RomName); Assert.Equal("XXXXXX", rom.RomCRC); - Assert.Equal(12345L, rom.RomSize); + Assert.Equal(12345, rom.RomSize); Assert.Equal("XXXXXX", rom.RomOf); Assert.Equal("XXXXXX", rom.MergeName); } diff --git a/SabreTools.Serialization.Readers.Test/SeparatedValueTests.cs b/SabreTools.Serialization.Readers.Test/SeparatedValueTests.cs index b671d7fd..9a91d9fe 100644 --- a/SabreTools.Serialization.Readers.Test/SeparatedValueTests.cs +++ b/SabreTools.Serialization.Readers.Test/SeparatedValueTests.cs @@ -171,7 +171,7 @@ namespace SabreTools.Serialization.Readers.Test GameDescription = "description", Type = "rom", RomName = "XXXXXX", - Size = 12345L, + Size = 12345, CRC = "XXXXXX", MD5 = "XXXXXX", SHA1 = "XXXXXX", @@ -286,7 +286,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", row.RomName); Assert.NotNull(row.DiskName); Assert.Empty(row.DiskName); - Assert.Equal(12345L, row.Size); + Assert.Equal(12345, row.Size); Assert.Equal("XXXXXX", row.CRC); Assert.Equal("XXXXXX", row.MD5); Assert.Equal("XXXXXX", row.SHA1); diff --git a/SabreTools.Serialization.Readers.Test/SoftwareListTests.cs b/SabreTools.Serialization.Readers.Test/SoftwareListTests.cs index 37f02e65..bf51cd5c 100644 --- a/SabreTools.Serialization.Readers.Test/SoftwareListTests.cs +++ b/SabreTools.Serialization.Readers.Test/SoftwareListTests.cs @@ -130,7 +130,7 @@ namespace SabreTools.Serialization.Readers.Test var rom = new Data.Models.SoftwareList.Rom { Name = "name", - Size = 12345L, + Size = 12345, Length = "XXXXXX", CRC = "XXXXXX", SHA1 = "XXXXXX", @@ -143,7 +143,7 @@ namespace SabreTools.Serialization.Readers.Test var dataarea = new Data.Models.SoftwareList.DataArea { Name = "name", - Size = 12345L, + Size = 12345, Width = "XXXXXX", Endianness = Data.Models.Metadata.Endianness.Big, Rom = [rom], @@ -302,7 +302,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(dataarea); Assert.Equal("name", dataarea.Name); - Assert.Equal(12345L, dataarea.Size); + Assert.Equal(12345, dataarea.Size); Assert.Equal("XXXXXX", dataarea.Width); Assert.Equal(Data.Models.Metadata.Endianness.Big, dataarea.Endianness); @@ -318,7 +318,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(rom); Assert.Equal("name", rom.Name); - Assert.Equal(12345L, rom.Size); + Assert.Equal(12345, rom.Size); Assert.Equal("XXXXXX", rom.Length); Assert.Equal("XXXXXX", rom.CRC); Assert.Equal("XXXXXX", rom.SHA1); From 2ed0c1f73231d3cb60522525fa64b7b05bccb240 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Fri, 3 Apr 2026 12:31:24 -0400 Subject: [PATCH 042/142] Convert Video mostly over to properties --- .../MetadataExtensions.cs | 6 ++++ SabreTools.Data.Models/ClrMamePro/Video.cs | 18 +++++------ SabreTools.Data.Models/Listxml/Video.cs | 13 +++----- SabreTools.Data.Models/Metadata/Display.cs | 6 ++++ SabreTools.Data.Models/Metadata/Video.cs | 22 ++++++------- .../DatFileTests.FromMetadata.cs | 20 +++++++----- .../DatFileTests.ToMetadata.cs | 12 ++++--- .../DatFile.ToMetadata.cs | 10 +++--- .../Formats/Display.cs | 31 ++++++++++--------- SabreTools.Metadata.Filter/FilterObject.cs | 26 +++++++++++++--- .../DictionaryBaseExtensions.cs | 8 +++++ .../ClrMameProTests.cs | 16 +++++----- .../ListxmlTests.cs | 16 +++++----- .../M1Tests.cs | 16 +++++----- .../MessTests.cs | 16 +++++----- .../ClrMamePro.Deserializer.cs | 8 ++--- .../ClrMamePro.Serializer.cs | 8 ++--- .../Listxml.Deserializer.cs | 8 ++--- .../Listxml.Serializer.cs | 8 ++--- .../ClrMameProTests.cs | 16 +++++----- .../ListxmlTests.cs | 16 +++++----- .../M1Tests.cs | 16 +++++----- .../MessTests.cs | 16 +++++----- .../ClrMamePro.cs | 8 ++--- SabreTools.Serialization.Readers/Listxml.cs | 8 ++--- SabreTools.Serialization.Readers/M1.cs | 8 ++--- SabreTools.Serialization.Readers/Mess.cs | 8 ++--- .../ClrMamePro.cs | 8 ++--- SabreTools.Serialization.Writers/Listxml.cs | 8 ++--- SabreTools.Serialization.Writers/M1.cs | 8 ++--- SabreTools.Serialization.Writers/Mess.cs | 8 ++--- 31 files changed, 217 insertions(+), 179 deletions(-) diff --git a/SabreTools.Data.Extensions/MetadataExtensions.cs b/SabreTools.Data.Extensions/MetadataExtensions.cs index 29c95cd8..6716d528 100644 --- a/SabreTools.Data.Extensions/MetadataExtensions.cs +++ b/SabreTools.Data.Extensions/MetadataExtensions.cs @@ -234,6 +234,8 @@ namespace SabreTools.Data.Extensions } else if (self is Display selfDisplay && clone is Display cloneDisplay) { + cloneDisplay.AspectX = selfDisplay.AspectX; + cloneDisplay.AspectY = selfDisplay.AspectY; cloneDisplay.DisplayType = selfDisplay.DisplayType; cloneDisplay.FlipX = selfDisplay.FlipX; cloneDisplay.HBEnd = selfDisplay.HBEnd; @@ -365,8 +367,12 @@ namespace SabreTools.Data.Extensions } else if (self is Video selfVideo && clone is Video cloneVideo) { + cloneVideo.AspectX = selfVideo.AspectX; + cloneVideo.AspectY = selfVideo.AspectY; + cloneVideo.Height = selfVideo.Height; cloneVideo.Refresh = selfVideo.Refresh; cloneVideo.Screen = selfVideo.Screen; + cloneVideo.Width = selfVideo.Width; } // Handle known properties diff --git a/SabreTools.Data.Models/ClrMamePro/Video.cs b/SabreTools.Data.Models/ClrMamePro/Video.cs index 1cfec8b7..b5652170 100644 --- a/SabreTools.Data.Models/ClrMamePro/Video.cs +++ b/SabreTools.Data.Models/ClrMamePro/Video.cs @@ -14,19 +14,19 @@ namespace SabreTools.Data.Models.ClrMamePro [Required] public string? Orientation { get; set; } - /// x, Numeric? - public string? X { get; set; } + /// x + public long? X { get; set; } - /// y, Numeric? - public string? Y { get; set; } + /// y + public long? Y { get; set; } - /// aspectx, Numeric? - public string? AspectX { get; set; } + /// aspectx + public long? AspectX { get; set; } - /// aspecty, Numeric? - public string? AspectY { get; set; } + /// aspecty + public long? AspectY { get; set; } - /// freq, Numeric? + /// freq public double? Freq { get; set; } } } diff --git a/SabreTools.Data.Models/Listxml/Video.cs b/SabreTools.Data.Models/Listxml/Video.cs index 015a1b90..679bff82 100644 --- a/SabreTools.Data.Models/Listxml/Video.cs +++ b/SabreTools.Data.Models/Listxml/Video.cs @@ -17,23 +17,18 @@ namespace SabreTools.Data.Models.Listxml [XmlAttribute("orientation")] public string? Orientation { get; set; } - /// Numeric [XmlAttribute("width")] - public string? Width { get; set; } + public long? Width { get; set; } - /// Numeric [XmlAttribute("height")] - public string? Height { get; set; } + public long? Height { get; set; } - /// Numeric [XmlAttribute("aspectx")] - public string? AspectX { get; set; } + public long? AspectX { get; set; } - /// Numeric [XmlAttribute("aspecty")] - public string? AspectY { get; set; } + public long? AspectY { get; set; } - /// Numeric [XmlAttribute("refresh")] public double? Refresh { get; set; } } diff --git a/SabreTools.Data.Models/Metadata/Display.cs b/SabreTools.Data.Models/Metadata/Display.cs index a8cb0632..7f34c784 100644 --- a/SabreTools.Data.Models/Metadata/Display.cs +++ b/SabreTools.Data.Models/Metadata/Display.cs @@ -8,6 +8,12 @@ namespace SabreTools.Data.Models.Metadata { #region Properties + /// Only found in Video + public long? AspectX { get; set; } + + /// Only found in Video + public long? AspectY { get; set; } + /// (raster|vector|lcd|svg|unknown) public DisplayType? DisplayType { get; set; } diff --git a/SabreTools.Data.Models/Metadata/Video.cs b/SabreTools.Data.Models/Metadata/Video.cs index 421eb4c7..5a9ed874 100644 --- a/SabreTools.Data.Models/Metadata/Video.cs +++ b/SabreTools.Data.Models/Metadata/Video.cs @@ -8,31 +8,29 @@ namespace SabreTools.Data.Models.Metadata { #region Properties + public long? AspectX { get; set; } + + public long? AspectY { get; set; } + + /// Originally "y" + public long? Height { get; set; } + /// Originally "freq" public double? Refresh { get; set; } /// (raster|vector) public DisplayType? Screen { get; set; } + /// Originally "x" + public long? Width { get; set; } + #endregion #region Keys - /// long - public const string AspectXKey = "aspectx"; - - /// long - public const string AspectYKey = "aspecty"; - - /// long; Originally "y" - public const string HeightKey = "height"; - /// (vertical|horizontal) public const string OrientationKey = "orientation"; - /// long; Originally "x" - public const string WidthKey = "width"; - #endregion public Video() => ItemType = ItemType.Video; diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs index d8b7c529..4baee9dc 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs @@ -101,7 +101,7 @@ namespace SabreTools.Metadata.DatFiles.Test Disk? disk = Array.Find(datItems, item => item is Disk disk && !disk.DiskAreaSpecified && !disk.PartSpecified) as Disk; ValidateDisk(disk); - Display? display = Array.Find(datItems, item => item is Display display && display.ReadLong(Data.Models.Metadata.Video.AspectXKey) is null) as Display; + Display? display = Array.Find(datItems, item => item is Display display && display.AspectX is null) as Display; ValidateDisplay(display); Driver? driver = Array.Find(datItems, item => item is Driver) as Driver; @@ -176,7 +176,7 @@ namespace SabreTools.Metadata.DatFiles.Test Sound? sound = Array.Find(datItems, item => item is Sound) as Sound; ValidateSound(sound); - Display? video = Array.Find(datItems, item => item is Display display && display.ReadLong(Data.Models.Metadata.Video.AspectXKey) is not null) as Display; + Display? video = Array.Find(datItems, item => item is Display display && display.AspectX is not null) as Display; ValidateVideo(video); } @@ -576,6 +576,8 @@ namespace SabreTools.Metadata.DatFiles.Test { return new Data.Models.Metadata.Display { + AspectX = 12345, + AspectY = 12345, FlipX = true, HBEnd = 12345, HBStart = 12345, @@ -1021,13 +1023,13 @@ namespace SabreTools.Metadata.DatFiles.Test { return new Data.Models.Metadata.Video { - [Data.Models.Metadata.Video.AspectXKey] = 12345L, - [Data.Models.Metadata.Video.AspectYKey] = 12345L, - [Data.Models.Metadata.Video.HeightKey] = 12345L, + AspectX = 12345, + AspectY = 12345, + Height = 12345, [Data.Models.Metadata.Video.OrientationKey] = "vertical", Refresh = 123.45, Screen = Data.Models.Metadata.DisplayType.Vector, - [Data.Models.Metadata.Video.WidthKey] = 12345L, + Width = 12345, }; } @@ -1350,6 +1352,8 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateDisplay(Display? display) { Assert.NotNull(display); + Assert.Null(display.AspectX); + Assert.Null(display.AspectY); Assert.True(display.FlipX); Assert.Equal(12345, display.HBEnd); Assert.Equal(12345, display.HBStart); @@ -1661,8 +1665,8 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateVideo(Display? display) { Assert.NotNull(display); - Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Video.AspectXKey)); - Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Video.AspectYKey)); + Assert.Equal(12345L, display.AspectX); + Assert.Equal(12345L, display.AspectY); Assert.Equal(Data.Models.Metadata.DisplayType.Vector, display.DisplayType); Assert.Equal(12345, display.Height); Assert.Equal(123.45, display.Refresh); diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs index 14f7127b..3c1df829 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs @@ -521,7 +521,7 @@ namespace SabreTools.Metadata.DatFiles.Test Data.Models.Metadata.Display[]? displays = machine.ReadArray(Data.Models.Metadata.Machine.DisplayKey); Assert.NotNull(displays); Assert.Equal(2, displays.Length); - Data.Models.Metadata.Display? display = Array.Find(displays, d => !d.ContainsKey(Data.Models.Metadata.Video.AspectXKey)); + Data.Models.Metadata.Display? display = Array.Find(displays, d => d.AspectX == null); ValidateMetadataDisplay(display); Data.Models.Metadata.Driver[]? drivers = machine.ReadArray(Data.Models.Metadata.Machine.DriverKey); @@ -867,6 +867,8 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateMetadataDisplay(Data.Models.Metadata.Display? display) { Assert.NotNull(display); + Assert.Null(display.AspectX); + Assert.Null(display.AspectY); Assert.True(display.FlipX); Assert.Equal(12345, display.HBEnd); Assert.Equal(12345, display.HBStart); @@ -1254,13 +1256,13 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateMetadataVideo(Data.Models.Metadata.Video? video) { Assert.NotNull(video); - Assert.Equal(12345, video.ReadLong(Data.Models.Metadata.Video.AspectXKey)); - Assert.Equal(12345, video.ReadLong(Data.Models.Metadata.Video.AspectYKey)); - Assert.Equal(12345, video.ReadLong(Data.Models.Metadata.Video.HeightKey)); + Assert.Equal(12345, video.AspectX); + Assert.Equal(12345, video.AspectY); + Assert.Equal(12345, video.Height); Assert.Equal("vertical", video.ReadString(Data.Models.Metadata.Video.OrientationKey)); Assert.Equal(123.45, video.Refresh); Assert.Equal(Data.Models.Metadata.DisplayType.Vector, video.Screen); - Assert.Equal(12345, video.ReadLong(Data.Models.Metadata.Video.WidthKey)); + Assert.Equal(12345, video.Width); } #endregion diff --git a/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs b/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs index d62fd3d4..345d44a3 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs @@ -929,16 +929,16 @@ namespace SabreTools.Metadata.DatFiles var displayItem = item.GetInternalClone(); // Create a Video for any item that has specific fields - if (displayItem.ContainsKey(Data.Models.Metadata.Video.AspectXKey)) + if (displayItem.AspectX != null) { var videoItem = new Data.Models.Metadata.Video { - [Data.Models.Metadata.Video.AspectXKey] = displayItem.ReadLong(Data.Models.Metadata.Video.AspectXKey).ToString(), - [Data.Models.Metadata.Video.AspectYKey] = displayItem.ReadLong(Data.Models.Metadata.Video.AspectYKey).ToString(), - [Data.Models.Metadata.Video.HeightKey] = displayItem.Height.ToString(), + AspectX = displayItem.AspectX, + AspectY = displayItem.AspectY, + Height = displayItem.Height, Refresh = displayItem.Refresh, Screen = displayItem.DisplayType, - [Data.Models.Metadata.Video.WidthKey] = displayItem.Width.ToString() + Width = displayItem.Width, }; switch (displayItem.ReadLong(Data.Models.Metadata.Display.RotateKey)) diff --git a/SabreTools.Metadata.DatItems/Formats/Display.cs b/SabreTools.Metadata.DatItems/Formats/Display.cs index 75a24100..d142b6e9 100644 --- a/SabreTools.Metadata.DatItems/Formats/Display.cs +++ b/SabreTools.Metadata.DatItems/Formats/Display.cs @@ -1,7 +1,6 @@ using System.Xml.Serialization; using Newtonsoft.Json; using SabreTools.Data.Extensions; -using SabreTools.Text.Extensions; namespace SabreTools.Metadata.DatItems.Formats { @@ -13,6 +12,18 @@ namespace SabreTools.Metadata.DatItems.Formats { #region Fields + public long? AspectX + { + get => (_internal as Data.Models.Metadata.Display)?.AspectX; + set => (_internal as Data.Models.Metadata.Display)?.AspectX = value; + } + + public long? AspectY + { + get => (_internal as Data.Models.Metadata.Display)?.AspectY; + set => (_internal as Data.Models.Metadata.Display)?.AspectY = value; + } + public Data.Models.Metadata.DisplayType? DisplayType { get => (_internal as Data.Models.Metadata.Display)?.DisplayType; @@ -117,13 +128,12 @@ namespace SabreTools.Metadata.DatItems.Formats public Display(Data.Models.Metadata.Video item) : base() { - // TODO: Convert this block to more traditional set of if/then - Write(Data.Models.Metadata.Video.AspectXKey, NumberHelper.ConvertToInt64(item.ReadString(Data.Models.Metadata.Video.AspectXKey))); - Write(Data.Models.Metadata.Video.AspectYKey, NumberHelper.ConvertToInt64(item.ReadString(Data.Models.Metadata.Video.AspectYKey))); + AspectX = item.AspectX; + AspectY = item.AspectY; DisplayType = item.Screen; - Height = NumberHelper.ConvertToInt64(item.ReadString(Data.Models.Metadata.Video.HeightKey)); + Height = item.Height; Refresh = item.Refresh; - Width = NumberHelper.ConvertToInt64(item.ReadString(Data.Models.Metadata.Video.WidthKey)); + Width = item.Width; switch (item.ReadString(Data.Models.Metadata.Video.OrientationKey)) { @@ -137,15 +147,6 @@ namespace SabreTools.Metadata.DatItems.Formats // TODO: Log invalid values break; } - - // Process flag values - long? aspectX = ReadLong(Data.Models.Metadata.Video.AspectXKey); - if (aspectX is not null) - Write(Data.Models.Metadata.Video.AspectXKey, aspectX.ToString()); - - long? aspectY = ReadLong(Data.Models.Metadata.Video.AspectYKey); - if (aspectY is not null) - Write(Data.Models.Metadata.Video.AspectYKey, aspectY.ToString()); } public Display(Data.Models.Metadata.Video item, Machine machine, Source source) : this(item) diff --git a/SabreTools.Metadata.Filter/FilterObject.cs b/SabreTools.Metadata.Filter/FilterObject.cs index 7fd359c3..840bb9d2 100644 --- a/SabreTools.Metadata.Filter/FilterObject.cs +++ b/SabreTools.Metadata.Filter/FilterObject.cs @@ -511,6 +511,12 @@ namespace SabreTools.Metadata.Filter checkValue = item.Writable.FromYesNo(); return true; + case Display item when fieldName == "aspectx": + checkValue = item.AspectX?.ToString(); + return true; + case Display item when fieldName == "aspecty": + checkValue = item.AspectY?.ToString(); + return true; case Display item when fieldName == "flipx": checkValue = item.FlipX.FromYesNo(); return true; @@ -520,7 +526,7 @@ namespace SabreTools.Metadata.Filter case Display item when fieldName == "hbstart": checkValue = item.HBStart?.ToString(); return true; - case Display item when fieldName == "height": + case Display item when fieldName == "height" || fieldName == "y": checkValue = item.Height?.ToString(); return true; case Display item when fieldName == "htotal": @@ -529,7 +535,7 @@ namespace SabreTools.Metadata.Filter case Display item when fieldName == "pixclock": checkValue = item.PixClock?.ToString(); return true; - case Display item when fieldName == "refresh": + case Display item when fieldName == "refresh" || fieldName == "freq": checkValue = item.Refresh?.ToString(); return true; case Display item when fieldName == "type": @@ -547,7 +553,7 @@ namespace SabreTools.Metadata.Filter case Display item when fieldName == "vtotal": checkValue = item.VTotal?.ToString(); return true; - case Display item when fieldName == "width": + case Display item when fieldName == "width" || fieldName == "x": checkValue = item.Width?.ToString(); return true; @@ -817,12 +823,24 @@ namespace SabreTools.Metadata.Filter checkValue = item.Channels?.ToString(); return true; - case Video item when fieldName == "refresh": + case Video item when fieldName == "aspectx": + checkValue = item.AspectX?.ToString(); + return true; + case Video item when fieldName == "aspecty": + checkValue = item.AspectY?.ToString(); + return true; + case Video item when fieldName == "height" || fieldName == "y": + checkValue = item.Height?.ToString(); + return true; + case Video item when fieldName == "refresh" || fieldName == "freq": checkValue = item.Refresh?.ToString(); return true; case Video item when fieldName == "screen": checkValue = item.Screen?.AsStringValue(); return true; + case Video item when fieldName == "width" || fieldName == "x": + checkValue = item.Width?.ToString(); + return true; // Fallthrough to Dictionary-based checking default: break; diff --git a/SabreTools.Metadata/DictionaryBaseExtensions.cs b/SabreTools.Metadata/DictionaryBaseExtensions.cs index 7bd9b982..713d92cb 100644 --- a/SabreTools.Metadata/DictionaryBaseExtensions.cs +++ b/SabreTools.Metadata/DictionaryBaseExtensions.cs @@ -389,10 +389,18 @@ namespace SabreTools.Metadata } else if (self is Video selfVideo && other is Video otherVideo) { + if (selfVideo.AspectX != otherVideo.AspectX) + return false; + if (selfVideo.AspectY != otherVideo.AspectY) + return false; + if (selfVideo.Height != otherVideo.Height) + return false; if (selfVideo.Refresh != otherVideo.Refresh) return false; if (selfVideo.Screen != otherVideo.Screen) return false; + if (selfVideo.Width != otherVideo.Width) + return false; } // Check all pairs to see if they're equal diff --git a/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs b/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs index 17a6c784..33e0edfe 100644 --- a/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs @@ -166,10 +166,10 @@ namespace SabreTools.Serialization.CrossModel.Test { Screen = Data.Models.Metadata.DisplayType.Vector, Orientation = "XXXXXX", - X = "XXXXXX", - Y = "XXXXXX", - AspectX = "XXXXXX", - AspectY = "XXXXXX", + X = 12345, + Y = 12345, + AspectX = 12345, + AspectY = 12345, Freq = 123.45, }; @@ -453,10 +453,10 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(video); Assert.Equal(Data.Models.Metadata.DisplayType.Vector, video.Screen); Assert.Equal("XXXXXX", video.Orientation); - Assert.Equal("XXXXXX", video.X); - Assert.Equal("XXXXXX", video.Y); - Assert.Equal("XXXXXX", video.AspectX); - Assert.Equal("XXXXXX", video.AspectY); + Assert.Equal(12345, video.X); + Assert.Equal(12345, video.Y); + Assert.Equal(12345, video.AspectX); + Assert.Equal(12345, video.AspectY); Assert.Equal(123.45, video.Freq); } diff --git a/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs b/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs index 1cc288df..43e7a4a7 100644 --- a/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs @@ -140,10 +140,10 @@ namespace SabreTools.Serialization.CrossModel.Test { Screen = Data.Models.Metadata.DisplayType.Vector, Orientation = "XXXXXX", - Width = "XXXXXX", - Height = "XXXXXX", - AspectX = "XXXXXX", - AspectY = "XXXXXX", + Width = 12345, + Height = 12345, + AspectX = 12345, + AspectY = 12345, Refresh = 123.45, }; @@ -576,10 +576,10 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(video); Assert.Equal(Data.Models.Metadata.DisplayType.Vector, video.Screen); Assert.Equal("XXXXXX", video.Orientation); - Assert.Equal("XXXXXX", video.Width); - Assert.Equal("XXXXXX", video.Height); - Assert.Equal("XXXXXX", video.AspectX); - Assert.Equal("XXXXXX", video.AspectY); + Assert.Equal(12345, video.Width); + Assert.Equal(12345, video.Height); + Assert.Equal(12345, video.AspectX); + Assert.Equal(12345, video.AspectY); Assert.Equal(123.45, video.Refresh); } diff --git a/SabreTools.Serialization.CrossModel.Test/M1Tests.cs b/SabreTools.Serialization.CrossModel.Test/M1Tests.cs index 620f47cd..f867f8b0 100644 --- a/SabreTools.Serialization.CrossModel.Test/M1Tests.cs +++ b/SabreTools.Serialization.CrossModel.Test/M1Tests.cs @@ -136,10 +136,10 @@ namespace SabreTools.Serialization.CrossModel.Test { Screen = Data.Models.Metadata.DisplayType.Vector, Orientation = "XXXXXX", - Width = "XXXXXX", - Height = "XXXXXX", - AspectX = "XXXXXX", - AspectY = "XXXXXX", + Width = 12345, + Height = 12345, + AspectX = 12345, + AspectY = 12345, Refresh = 123.45, }; @@ -570,10 +570,10 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(video); Assert.Equal(Data.Models.Metadata.DisplayType.Vector, video.Screen); Assert.Equal("XXXXXX", video.Orientation); - Assert.Equal("XXXXXX", video.Width); - Assert.Equal("XXXXXX", video.Height); - Assert.Equal("XXXXXX", video.AspectX); - Assert.Equal("XXXXXX", video.AspectY); + Assert.Equal(12345, video.Width); + Assert.Equal(12345, video.Height); + Assert.Equal(12345, video.AspectX); + Assert.Equal(12345, video.AspectY); Assert.Equal(123.45, video.Refresh); } diff --git a/SabreTools.Serialization.CrossModel.Test/MessTests.cs b/SabreTools.Serialization.CrossModel.Test/MessTests.cs index 01861dfd..acdfa589 100644 --- a/SabreTools.Serialization.CrossModel.Test/MessTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/MessTests.cs @@ -136,10 +136,10 @@ namespace SabreTools.Serialization.CrossModel.Test { Screen = Data.Models.Metadata.DisplayType.Vector, Orientation = "XXXXXX", - Width = "XXXXXX", - Height = "XXXXXX", - AspectX = "XXXXXX", - AspectY = "XXXXXX", + Width = 12345, + Height = 12345, + AspectX = 12345, + AspectY = 12345, Refresh = 123.45, }; @@ -570,10 +570,10 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(video); Assert.Equal(Data.Models.Metadata.DisplayType.Vector, video.Screen); Assert.Equal("XXXXXX", video.Orientation); - Assert.Equal("XXXXXX", video.Width); - Assert.Equal("XXXXXX", video.Height); - Assert.Equal("XXXXXX", video.AspectX); - Assert.Equal("XXXXXX", video.AspectY); + Assert.Equal(12345, video.Width); + Assert.Equal(12345, video.Height); + Assert.Equal(12345, video.AspectX); + Assert.Equal(12345, video.AspectY); Assert.Equal(123.45, video.Refresh); } diff --git a/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs b/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs index b08037f3..06bb0beb 100644 --- a/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs @@ -342,10 +342,10 @@ namespace SabreTools.Serialization.CrossModel { Screen = item.Screen, Orientation = item.ReadString(Data.Models.Metadata.Video.OrientationKey), - X = item.ReadString(Data.Models.Metadata.Video.WidthKey), - Y = item.ReadString(Data.Models.Metadata.Video.HeightKey), - AspectX = item.ReadString(Data.Models.Metadata.Video.AspectXKey), - AspectY = item.ReadString(Data.Models.Metadata.Video.AspectYKey), + X = item.Width, + Y = item.Height, + AspectX = item.AspectX, + AspectY = item.AspectY, Freq = item.Refresh, }; return video; diff --git a/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs b/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs index dd867657..7ef9f37c 100644 --- a/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs @@ -355,10 +355,10 @@ namespace SabreTools.Serialization.CrossModel { Screen = item.Screen, [Data.Models.Metadata.Video.OrientationKey] = item.Orientation, - [Data.Models.Metadata.Video.WidthKey] = item.X, - [Data.Models.Metadata.Video.HeightKey] = item.Y, - [Data.Models.Metadata.Video.AspectXKey] = item.AspectX, - [Data.Models.Metadata.Video.AspectYKey] = item.AspectY, + Width = item.X, + Height = item.Y, + AspectX = item.AspectX, + AspectY = item.AspectY, Refresh = item.Freq, }; return video; diff --git a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs index 56154c51..308907e0 100644 --- a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs @@ -660,10 +660,10 @@ namespace SabreTools.Serialization.CrossModel { Screen = item.Screen, Orientation = item.ReadString(Data.Models.Metadata.Video.OrientationKey), - Width = item.ReadString(Data.Models.Metadata.Video.WidthKey), - Height = item.ReadString(Data.Models.Metadata.Video.HeightKey), - AspectX = item.ReadString(Data.Models.Metadata.Video.AspectXKey), - AspectY = item.ReadString(Data.Models.Metadata.Video.AspectYKey), + Width = item.Width, + Height = item.Height, + AspectX = item.AspectX, + AspectY = item.AspectY, Refresh = item.Refresh, }; return video; diff --git a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs index 3304c5e7..07c2156e 100644 --- a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs @@ -701,10 +701,10 @@ namespace SabreTools.Serialization.CrossModel { Screen = item.Screen, [Data.Models.Metadata.Video.OrientationKey] = item.Orientation, - [Data.Models.Metadata.Video.WidthKey] = item.Width, - [Data.Models.Metadata.Video.HeightKey] = item.Height, - [Data.Models.Metadata.Video.AspectXKey] = item.AspectX, - [Data.Models.Metadata.Video.AspectYKey] = item.AspectY, + Width = item.Width, + Height = item.Height, + AspectX = item.AspectX, + AspectY = item.AspectY, Refresh = item.Refresh, }; return video; diff --git a/SabreTools.Serialization.Readers.Test/ClrMameProTests.cs b/SabreTools.Serialization.Readers.Test/ClrMameProTests.cs index b2eb58de..da040978 100644 --- a/SabreTools.Serialization.Readers.Test/ClrMameProTests.cs +++ b/SabreTools.Serialization.Readers.Test/ClrMameProTests.cs @@ -283,10 +283,10 @@ namespace SabreTools.Serialization.Readers.Test { Screen = Data.Models.Metadata.DisplayType.Vector, Orientation = "XXXXXX", - X = "XXXXXX", - Y = "XXXXXX", - AspectX = "XXXXXX", - AspectY = "XXXXXX", + X = 12345, + Y = 12345, + AspectX = 12345, + AspectY = 12345, Freq = 123.45, }; @@ -570,10 +570,10 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(video); Assert.Equal(Data.Models.Metadata.DisplayType.Vector, video.Screen); Assert.Equal("XXXXXX", video.Orientation); - Assert.Equal("XXXXXX", video.X); - Assert.Equal("XXXXXX", video.Y); - Assert.Equal("XXXXXX", video.AspectX); - Assert.Equal("XXXXXX", video.AspectY); + Assert.Equal(12345, video.X); + Assert.Equal(12345, video.Y); + Assert.Equal(12345, video.AspectX); + Assert.Equal(12345, video.AspectY); Assert.Equal(123.45, video.Freq); } diff --git a/SabreTools.Serialization.Readers.Test/ListxmlTests.cs b/SabreTools.Serialization.Readers.Test/ListxmlTests.cs index ebcc67fa..aa8f37ec 100644 --- a/SabreTools.Serialization.Readers.Test/ListxmlTests.cs +++ b/SabreTools.Serialization.Readers.Test/ListxmlTests.cs @@ -207,10 +207,10 @@ namespace SabreTools.Serialization.Readers.Test { Screen = Data.Models.Metadata.DisplayType.Vector, Orientation = "XXXXXX", - Width = "XXXXXX", - Height = "XXXXXX", - AspectX = "XXXXXX", - AspectY = "XXXXXX", + Width = 12345, + Height = 12345, + AspectX = 12345, + AspectY = 12345, Refresh = 123.45, }; @@ -643,10 +643,10 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(video); Assert.Equal(Data.Models.Metadata.DisplayType.Vector, video.Screen); Assert.Equal("XXXXXX", video.Orientation); - Assert.Equal("XXXXXX", video.Width); - Assert.Equal("XXXXXX", video.Height); - Assert.Equal("XXXXXX", video.AspectX); - Assert.Equal("XXXXXX", video.AspectY); + Assert.Equal(12345, video.Width); + Assert.Equal(12345, video.Height); + Assert.Equal(12345, video.AspectX); + Assert.Equal(12345, video.AspectY); Assert.Equal(123.45, video.Refresh); } diff --git a/SabreTools.Serialization.Readers.Test/M1Tests.cs b/SabreTools.Serialization.Readers.Test/M1Tests.cs index 9e905028..282d4489 100644 --- a/SabreTools.Serialization.Readers.Test/M1Tests.cs +++ b/SabreTools.Serialization.Readers.Test/M1Tests.cs @@ -203,10 +203,10 @@ namespace SabreTools.Serialization.Readers.Test { Screen = Data.Models.Metadata.DisplayType.Vector, Orientation = "XXXXXX", - Width = "XXXXXX", - Height = "XXXXXX", - AspectX = "XXXXXX", - AspectY = "XXXXXX", + Width = 12345, + Height = 12345, + AspectX = 12345, + AspectY = 12345, Refresh = 123.45, }; @@ -637,10 +637,10 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(video); Assert.Equal(Data.Models.Metadata.DisplayType.Vector, video.Screen); Assert.Equal("XXXXXX", video.Orientation); - Assert.Equal("XXXXXX", video.Width); - Assert.Equal("XXXXXX", video.Height); - Assert.Equal("XXXXXX", video.AspectX); - Assert.Equal("XXXXXX", video.AspectY); + Assert.Equal(12345, video.Width); + Assert.Equal(12345, video.Height); + Assert.Equal(12345, video.AspectX); + Assert.Equal(12345, video.AspectY); Assert.Equal(123.45, video.Refresh); } diff --git a/SabreTools.Serialization.Readers.Test/MessTests.cs b/SabreTools.Serialization.Readers.Test/MessTests.cs index 77389109..28ad0f7f 100644 --- a/SabreTools.Serialization.Readers.Test/MessTests.cs +++ b/SabreTools.Serialization.Readers.Test/MessTests.cs @@ -203,10 +203,10 @@ namespace SabreTools.Serialization.Readers.Test { Screen = Data.Models.Metadata.DisplayType.Vector, Orientation = "XXXXXX", - Width = "XXXXXX", - Height = "XXXXXX", - AspectX = "XXXXXX", - AspectY = "XXXXXX", + Width = 12345, + Height = 12345, + AspectX = 12345, + AspectY = 12345, Refresh = 123.45, }; @@ -637,10 +637,10 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(video); Assert.Equal(Data.Models.Metadata.DisplayType.Vector, video.Screen); Assert.Equal("XXXXXX", video.Orientation); - Assert.Equal("XXXXXX", video.Width); - Assert.Equal("XXXXXX", video.Height); - Assert.Equal("XXXXXX", video.AspectX); - Assert.Equal("XXXXXX", video.AspectY); + Assert.Equal(12345, video.Width); + Assert.Equal(12345, video.Height); + Assert.Equal(12345, video.AspectX); + Assert.Equal(12345, video.AspectY); Assert.Equal(123.45, video.Refresh); } diff --git a/SabreTools.Serialization.Readers/ClrMamePro.cs b/SabreTools.Serialization.Readers/ClrMamePro.cs index 6227cef7..110d9514 100644 --- a/SabreTools.Serialization.Readers/ClrMamePro.cs +++ b/SabreTools.Serialization.Readers/ClrMamePro.cs @@ -809,16 +809,16 @@ namespace SabreTools.Serialization.Readers video.Orientation = kvp.Value; break; case "x": - video.X = kvp.Value; + video.X = NumberHelper.ConvertToInt64(kvp.Value); break; case "y": - video.Y = kvp.Value; + video.Y = NumberHelper.ConvertToInt64(kvp.Value); break; case "aspectx": - video.AspectX = kvp.Value; + video.AspectX = NumberHelper.ConvertToInt64(kvp.Value); break; case "aspecty": - video.AspectY = kvp.Value; + video.AspectY = NumberHelper.ConvertToInt64(kvp.Value); break; case "freq": video.Freq = NumberHelper.ConvertToDouble(kvp.Value); diff --git a/SabreTools.Serialization.Readers/Listxml.cs b/SabreTools.Serialization.Readers/Listxml.cs index eba1a94e..3c0531c0 100644 --- a/SabreTools.Serialization.Readers/Listxml.cs +++ b/SabreTools.Serialization.Readers/Listxml.cs @@ -1177,10 +1177,10 @@ namespace SabreTools.Serialization.Readers obj.Screen = reader.GetAttribute("screen").AsDisplayType(); obj.Orientation = reader.GetAttribute("orientation"); - obj.Width = reader.GetAttribute("width"); - obj.Height = reader.GetAttribute("height"); - obj.AspectX = reader.GetAttribute("aspectx"); - obj.AspectY = reader.GetAttribute("aspecty"); + obj.Width = NumberHelper.ConvertToInt64(reader.GetAttribute("width")); + obj.Height = NumberHelper.ConvertToInt64(reader.GetAttribute("height")); + obj.AspectX = NumberHelper.ConvertToInt64(reader.GetAttribute("aspectx")); + obj.AspectY = NumberHelper.ConvertToInt64(reader.GetAttribute("aspecty")); obj.Refresh = NumberHelper.ConvertToDouble(reader.GetAttribute("refresh")); return obj; diff --git a/SabreTools.Serialization.Readers/M1.cs b/SabreTools.Serialization.Readers/M1.cs index fb511c22..8cd453f9 100644 --- a/SabreTools.Serialization.Readers/M1.cs +++ b/SabreTools.Serialization.Readers/M1.cs @@ -1175,10 +1175,10 @@ namespace SabreTools.Serialization.Readers obj.Screen = reader.GetAttribute("screen").AsDisplayType(); obj.Orientation = reader.GetAttribute("orientation"); - obj.Width = reader.GetAttribute("width"); - obj.Height = reader.GetAttribute("height"); - obj.AspectX = reader.GetAttribute("aspectx"); - obj.AspectY = reader.GetAttribute("aspecty"); + obj.Width = NumberHelper.ConvertToInt64(reader.GetAttribute("width")); + obj.Height = NumberHelper.ConvertToInt64(reader.GetAttribute("height")); + obj.AspectX = NumberHelper.ConvertToInt64(reader.GetAttribute("aspectx")); + obj.AspectY = NumberHelper.ConvertToInt64(reader.GetAttribute("aspecty")); obj.Refresh = NumberHelper.ConvertToDouble(reader.GetAttribute("refresh")); return obj; diff --git a/SabreTools.Serialization.Readers/Mess.cs b/SabreTools.Serialization.Readers/Mess.cs index 85c441eb..9e6a4f78 100644 --- a/SabreTools.Serialization.Readers/Mess.cs +++ b/SabreTools.Serialization.Readers/Mess.cs @@ -1175,10 +1175,10 @@ namespace SabreTools.Serialization.Readers obj.Screen = reader.GetAttribute("screen").AsDisplayType(); obj.Orientation = reader.GetAttribute("orientation"); - obj.Width = reader.GetAttribute("width"); - obj.Height = reader.GetAttribute("height"); - obj.AspectX = reader.GetAttribute("aspectx"); - obj.AspectY = reader.GetAttribute("aspecty"); + obj.Width = NumberHelper.ConvertToInt64(reader.GetAttribute("width")); + obj.Height = NumberHelper.ConvertToInt64(reader.GetAttribute("height")); + obj.AspectX = NumberHelper.ConvertToInt64(reader.GetAttribute("aspectx")); + obj.AspectY = NumberHelper.ConvertToInt64(reader.GetAttribute("aspecty")); obj.Refresh = NumberHelper.ConvertToDouble(reader.GetAttribute("refresh")); return obj; diff --git a/SabreTools.Serialization.Writers/ClrMamePro.cs b/SabreTools.Serialization.Writers/ClrMamePro.cs index 392f8627..c218515e 100644 --- a/SabreTools.Serialization.Writers/ClrMamePro.cs +++ b/SabreTools.Serialization.Writers/ClrMamePro.cs @@ -414,10 +414,10 @@ namespace SabreTools.Serialization.Writers writer.WriteStartElement("video"); writer.WriteRequiredAttributeString("screen", video.Screen?.AsStringValue(), throwOnError: true); writer.WriteRequiredAttributeString("orientation", video.Orientation, throwOnError: true); - writer.WriteOptionalAttributeString("x", video.X); - writer.WriteOptionalAttributeString("y", video.Y); - writer.WriteOptionalAttributeString("aspectx", video.AspectX); - writer.WriteOptionalAttributeString("aspecty", video.AspectY); + writer.WriteOptionalAttributeString("x", video.X?.ToString()); + writer.WriteOptionalAttributeString("y", video.Y.ToString()); + writer.WriteOptionalAttributeString("aspectx", video.AspectX.ToString()); + writer.WriteOptionalAttributeString("aspecty", video.AspectY.ToString()); writer.WriteOptionalAttributeString("freq", video.Freq?.ToString("0.000000")); writer.WriteEndElement(); // video } diff --git a/SabreTools.Serialization.Writers/Listxml.cs b/SabreTools.Serialization.Writers/Listxml.cs index 3c534975..d9d01652 100644 --- a/SabreTools.Serialization.Writers/Listxml.cs +++ b/SabreTools.Serialization.Writers/Listxml.cs @@ -839,10 +839,10 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("screen", obj.Screen?.AsStringValue()); writer.WriteRequiredAttributeString("orientation", obj.Orientation); - writer.WriteOptionalAttributeString("width", obj.Width); - writer.WriteOptionalAttributeString("height", obj.Height); - writer.WriteOptionalAttributeString("aspectx", obj.AspectX); - writer.WriteOptionalAttributeString("aspecty", obj.AspectY); + writer.WriteOptionalAttributeString("width", obj.Width.ToString()); + writer.WriteOptionalAttributeString("height", obj.Height.ToString()); + writer.WriteOptionalAttributeString("aspectx", obj.AspectX.ToString()); + writer.WriteOptionalAttributeString("aspecty", obj.AspectY.ToString()); writer.WriteRequiredAttributeString("refresh", obj.Refresh?.ToString("0.000000")); writer.WriteEndElement(); diff --git a/SabreTools.Serialization.Writers/M1.cs b/SabreTools.Serialization.Writers/M1.cs index a2a53f40..fa2e3fe6 100644 --- a/SabreTools.Serialization.Writers/M1.cs +++ b/SabreTools.Serialization.Writers/M1.cs @@ -837,10 +837,10 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("screen", obj.Screen?.AsStringValue()); writer.WriteRequiredAttributeString("orientation", obj.Orientation); - writer.WriteOptionalAttributeString("width", obj.Width); - writer.WriteOptionalAttributeString("height", obj.Height); - writer.WriteOptionalAttributeString("aspectx", obj.AspectX); - writer.WriteOptionalAttributeString("aspecty", obj.AspectY); + writer.WriteOptionalAttributeString("width", obj.Width.ToString()); + writer.WriteOptionalAttributeString("height", obj.Height.ToString()); + writer.WriteOptionalAttributeString("aspectx", obj.AspectX.ToString()); + writer.WriteOptionalAttributeString("aspecty", obj.AspectY.ToString()); writer.WriteRequiredAttributeString("refresh", obj.Refresh?.ToString("0.000000")); writer.WriteEndElement(); diff --git a/SabreTools.Serialization.Writers/Mess.cs b/SabreTools.Serialization.Writers/Mess.cs index eceae2c1..a924071e 100644 --- a/SabreTools.Serialization.Writers/Mess.cs +++ b/SabreTools.Serialization.Writers/Mess.cs @@ -837,10 +837,10 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("screen", obj.Screen?.AsStringValue()); writer.WriteRequiredAttributeString("orientation", obj.Orientation); - writer.WriteOptionalAttributeString("width", obj.Width); - writer.WriteOptionalAttributeString("height", obj.Height); - writer.WriteOptionalAttributeString("aspectx", obj.AspectX); - writer.WriteOptionalAttributeString("aspecty", obj.AspectY); + writer.WriteOptionalAttributeString("width", obj.Width.ToString()); + writer.WriteOptionalAttributeString("height", obj.Height.ToString()); + writer.WriteOptionalAttributeString("aspectx", obj.AspectX.ToString()); + writer.WriteOptionalAttributeString("aspecty", obj.AspectY.ToString()); writer.WriteRequiredAttributeString("refresh", obj.Refresh?.ToString("0.000000")); writer.WriteEndElement(); From 32dd30adab231cdb2804062d284d3aecd64925b1 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Fri, 3 Apr 2026 12:31:33 -0400 Subject: [PATCH 043/142] Fix test --- .../DatFileTests.FromMetadata.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs index 4baee9dc..10b2ff46 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs @@ -576,8 +576,8 @@ namespace SabreTools.Metadata.DatFiles.Test { return new Data.Models.Metadata.Display { - AspectX = 12345, - AspectY = 12345, + AspectX = null, // Null to ensure it is not Video + AspectY = null, // Null to ensure it is not Video FlipX = true, HBEnd = 12345, HBStart = 12345, From 1d5514b29d935acf0c3cebcf8c48ec11d934dc6e Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Fri, 3 Apr 2026 13:08:36 -0400 Subject: [PATCH 044/142] Convert Display and Video fully over to properties --- .../MetadataExtensionsTests.cs | 33 +++++ .../MetadataExtensions.cs | 65 +++++---- SabreTools.Data.Models/ClrMamePro/Video.cs | 2 +- SabreTools.Data.Models/Listxml/Display.cs | 2 +- SabreTools.Data.Models/Listxml/Video.cs | 2 +- SabreTools.Data.Models/Metadata/Display.cs | 126 ++++++++++++++++-- SabreTools.Data.Models/Metadata/Enums.cs | 18 +++ SabreTools.Data.Models/Metadata/Video.cs | 93 +++++++++++-- .../DatFileTests.FromMetadata.cs | 8 +- .../DatFileTests.ToMetadata.cs | 4 +- .../FormatsTests.cs | 2 +- .../DatFile.ToMetadata.cs | 16 +-- .../Formats/ClrMamePro.cs | 4 +- .../Formats/Display.cs | 28 ++-- SabreTools.Metadata.Filter/FilterObject.cs | 10 +- .../DictionaryBaseExtensions.cs | 38 +----- .../ClrMameProTests.cs | 4 +- .../ListxmlTests.cs | 8 +- .../M1Tests.cs | 8 +- .../MessTests.cs | 8 +- .../ClrMamePro.Deserializer.cs | 2 +- .../ClrMamePro.Serializer.cs | 2 +- .../Listxml.Deserializer.cs | 4 +- .../Listxml.Serializer.cs | 4 +- .../ClrMameProTests.cs | 4 +- .../ListxmlTests.cs | 8 +- .../M1Tests.cs | 8 +- .../MessTests.cs | 8 +- .../ClrMamePro.cs | 2 +- SabreTools.Serialization.Readers/Listxml.cs | 4 +- SabreTools.Serialization.Readers/M1.cs | 4 +- SabreTools.Serialization.Readers/Mess.cs | 4 +- .../ClrMamePro.cs | 2 +- SabreTools.Serialization.Writers/Listxml.cs | 4 +- SabreTools.Serialization.Writers/M1.cs | 4 +- SabreTools.Serialization.Writers/Mess.cs | 4 +- 36 files changed, 370 insertions(+), 177 deletions(-) diff --git a/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs b/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs index 3f2d116e..c706f3c1 100644 --- a/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs +++ b/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs @@ -1815,6 +1815,24 @@ namespace SabreTools.Data.Extensions.Test Assert.Equal(expected, actual); } + [Theory] + [InlineData(null, null)] + [InlineData("0", Rotation.North)] + [InlineData("north", Rotation.North)] + [InlineData("vertical", Rotation.North)] + [InlineData("90", Rotation.East)] + [InlineData("east", Rotation.East)] + [InlineData("horizontal", Rotation.East)] + [InlineData("180", Rotation.South)] + [InlineData("south", Rotation.South)] + [InlineData("270", Rotation.West)] + [InlineData("west", Rotation.West)] + public void AsRotationTest(string? field, Rotation? expected) + { + Rotation? actual = field.AsRotation(); + Assert.Equal(expected, actual); + } + [Theory] [InlineData(null, null)] [InlineData("no", Runnable.No)] @@ -2124,6 +2142,21 @@ namespace SabreTools.Data.Extensions.Test Assert.Equal(expected, actual); } + [Theory] + [InlineData(Rotation.North, true, "vertical")] + [InlineData(Rotation.North, false, "0")] + [InlineData(Rotation.East, true, "horizontal")] + [InlineData(Rotation.East, false, "90")] + [InlineData(Rotation.South, true, "vertical")] + [InlineData(Rotation.South, false, "180")] + [InlineData(Rotation.West, true, "horizontal")] + [InlineData(Rotation.West, false, "270")] + public void FromRotationTest(Rotation field, bool useSecond, string? expected) + { + string? actual = field.AsStringValue(useSecond); + Assert.Equal(expected, actual); + } + [Theory] [InlineData((Runnable)int.MaxValue, null)] [InlineData(Runnable.No, "no")] diff --git a/SabreTools.Data.Extensions/MetadataExtensions.cs b/SabreTools.Data.Extensions/MetadataExtensions.cs index 6716d528..9aadc864 100644 --- a/SabreTools.Data.Extensions/MetadataExtensions.cs +++ b/SabreTools.Data.Extensions/MetadataExtensions.cs @@ -161,6 +161,8 @@ namespace SabreTools.Data.Extensions return deviceRef.Clone() as DeviceRef; else if (self is DipLocation dipLocation) return dipLocation.Clone() as DipLocation; + else if (self is Display display) + return display.Clone() as Display; else if (self is Extension extension) return extension.Clone() as Extension; // TODO: Reenable when PartFeature no longer needs nesting @@ -178,6 +180,8 @@ namespace SabreTools.Data.Extensions return slotOption.Clone() as SlotOption; else if (self is Sound sound) return sound.Clone() as Sound; + else if (self is Video video) + return video.Clone() as Video; // If construction failed, we can't do anything if (Activator.CreateInstance(self.GetType()) is not DictionaryBase clone) @@ -232,24 +236,6 @@ namespace SabreTools.Data.Extensions cloneDisk.Status = selfDisk.Status; cloneDisk.Writable = selfDisk.Writable; } - else if (self is Display selfDisplay && clone is Display cloneDisplay) - { - cloneDisplay.AspectX = selfDisplay.AspectX; - cloneDisplay.AspectY = selfDisplay.AspectY; - cloneDisplay.DisplayType = selfDisplay.DisplayType; - cloneDisplay.FlipX = selfDisplay.FlipX; - cloneDisplay.HBEnd = selfDisplay.HBEnd; - cloneDisplay.HBStart = selfDisplay.HBStart; - cloneDisplay.Height = selfDisplay.Height; - cloneDisplay.HTotal = selfDisplay.HTotal; - cloneDisplay.PixClock = selfDisplay.PixClock; - cloneDisplay.Refresh = selfDisplay.Refresh; - cloneDisplay.Tag = selfDisplay.Tag; - cloneDisplay.VBEnd = selfDisplay.VBEnd; - cloneDisplay.VBStart = selfDisplay.VBStart; - cloneDisplay.VTotal = selfDisplay.VTotal; - cloneDisplay.Width = selfDisplay.Width; - } else if (self is Driver selfDriver && clone is Driver cloneDriver) { cloneDriver.Blit = selfDriver.Blit; @@ -365,15 +351,6 @@ namespace SabreTools.Data.Extensions cloneSoftwareList.Status = selfSoftwareList.Status; cloneSoftwareList.Tag = selfSoftwareList.Tag; } - else if (self is Video selfVideo && clone is Video cloneVideo) - { - cloneVideo.AspectX = selfVideo.AspectX; - cloneVideo.AspectY = selfVideo.AspectY; - cloneVideo.Height = selfVideo.Height; - cloneVideo.Refresh = selfVideo.Refresh; - cloneVideo.Screen = selfVideo.Screen; - cloneVideo.Width = selfVideo.Width; - } // Handle known properties clone.SetName(self.GetName()); @@ -1412,6 +1389,23 @@ namespace SabreTools.Data.Extensions }; } + /// + /// Get the enum value for an input string, if possible + /// + /// String value to parse/param> + /// Enum value representing the input, null on error + public static Rotation? AsRotation(this string? value) + { + return value?.ToLowerInvariant() switch + { + "0" or "north" or "vertical" => Rotation.North, + "90" or "east" or "horizontal" => Rotation.East, + "180" or "south" => Rotation.South, + "270" or "west" => Rotation.West, + _ => null, + }; + } + /// /// Get the enum value for an input string, if possible /// @@ -1801,6 +1795,23 @@ namespace SabreTools.Data.Extensions }; } + /// + /// Get the string value for an input enum, if possible + /// + /// Enum value to parse/param> + /// String value representing the input, null on error + public static string? AsStringValue(this Rotation value, bool useSecond = false) + { + return value switch + { + Rotation.North => useSecond ? "vertical" : "0", + Rotation.East => useSecond ? "horizontal" : "90", + Rotation.South => useSecond ? "vertical" : "180", + Rotation.West => useSecond ? "horizontal" : "270", + _ => null, + }; + } + /// /// Get the string value for an input enum, if possible /// diff --git a/SabreTools.Data.Models/ClrMamePro/Video.cs b/SabreTools.Data.Models/ClrMamePro/Video.cs index b5652170..0c53a151 100644 --- a/SabreTools.Data.Models/ClrMamePro/Video.cs +++ b/SabreTools.Data.Models/ClrMamePro/Video.cs @@ -12,7 +12,7 @@ namespace SabreTools.Data.Models.ClrMamePro /// orientation, (vertical|horizontal) [Required] - public string? Orientation { get; set; } + public Rotation? Orientation { get; set; } /// x public long? X { get; set; } diff --git a/SabreTools.Data.Models/Listxml/Display.cs b/SabreTools.Data.Models/Listxml/Display.cs index 41c48fe7..2da2f7c0 100644 --- a/SabreTools.Data.Models/Listxml/Display.cs +++ b/SabreTools.Data.Models/Listxml/Display.cs @@ -17,7 +17,7 @@ namespace SabreTools.Data.Models.Listxml /// (0|90|180|270) [XmlAttribute("rotate")] - public string? Rotate { get; set; } + public Rotation? Rotate { get; set; } /// (yes|no) "no" [XmlAttribute("flipx")] diff --git a/SabreTools.Data.Models/Listxml/Video.cs b/SabreTools.Data.Models/Listxml/Video.cs index 679bff82..9c0f0e15 100644 --- a/SabreTools.Data.Models/Listxml/Video.cs +++ b/SabreTools.Data.Models/Listxml/Video.cs @@ -15,7 +15,7 @@ namespace SabreTools.Data.Models.Listxml /// (vertical|horizontal) [Required] [XmlAttribute("orientation")] - public string? Orientation { get; set; } + public Rotation? Orientation { get; set; } [XmlAttribute("width")] public long? Width { get; set; } diff --git a/SabreTools.Data.Models/Metadata/Display.cs b/SabreTools.Data.Models/Metadata/Display.cs index 7f34c784..a4d594d2 100644 --- a/SabreTools.Data.Models/Metadata/Display.cs +++ b/SabreTools.Data.Models/Metadata/Display.cs @@ -1,10 +1,11 @@ +using System; using System.Xml.Serialization; using Newtonsoft.Json; namespace SabreTools.Data.Models.Metadata { [JsonObject("display"), XmlRoot("display")] - public class Display : DatItem + public class Display : DatItem, ICloneable, IEquatable, IEquatable private static string GetDuplicateSuffix(Disk datItem) { - string? md5 = datItem.ReadString(Data.Models.Metadata.Disk.MD5Key); + string? md5 = datItem.MD5; if (!string.IsNullOrEmpty(md5)) return $"_{md5}"; - string? sha1 = datItem.ReadString(Data.Models.Metadata.Disk.SHA1Key); + string? sha1 = datItem.SHA1; if (!string.IsNullOrEmpty(sha1)) return $"_{sha1}"; diff --git a/SabreTools.Metadata.DatFiles/DatStatistics.cs b/SabreTools.Metadata.DatFiles/DatStatistics.cs index 2cc3a271..7bb127eb 100644 --- a/SabreTools.Metadata.DatFiles/DatStatistics.cs +++ b/SabreTools.Metadata.DatFiles/DatStatistics.cs @@ -330,8 +330,8 @@ namespace SabreTools.Metadata.DatFiles ItemStatus? status = disk.Status; if (status != ItemStatus.Nodump) { - AddHashCount(HashType.MD5, string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key)) ? 0 : 1); - AddHashCount(HashType.SHA1, string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.SHA1Key)) ? 0 : 1); + AddHashCount(HashType.MD5, string.IsNullOrEmpty(disk.MD5) ? 0 : 1); + AddHashCount(HashType.SHA1, string.IsNullOrEmpty(disk.SHA1) ? 0 : 1); } AddStatusCount(ItemStatus.BadDump, status == ItemStatus.BadDump ? 1 : 0); @@ -459,8 +459,8 @@ namespace SabreTools.Metadata.DatFiles ItemStatus? status = disk.Status; if (status != ItemStatus.Nodump) { - RemoveHashCount(HashType.MD5, string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key)) ? 0 : 1); - RemoveHashCount(HashType.SHA1, string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.SHA1Key)) ? 0 : 1); + RemoveHashCount(HashType.MD5, string.IsNullOrEmpty(disk.MD5) ? 0 : 1); + RemoveHashCount(HashType.SHA1, string.IsNullOrEmpty(disk.SHA1) ? 0 : 1); } RemoveStatusCount(ItemStatus.BadDump, status == ItemStatus.BadDump ? 1 : 0); diff --git a/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs b/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs index a2912b25..767cabe8 100644 --- a/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs +++ b/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs @@ -114,10 +114,10 @@ namespace SabreTools.Metadata.DatFiles.Formats case Disk disk: if (string.IsNullOrEmpty(disk.Name)) missingFields.Add(nameof(Data.Models.Metadata.Disk.Name)); - if (string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key)) - && string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.SHA1Key))) + if (string.IsNullOrEmpty(disk.MD5) + && string.IsNullOrEmpty(disk.SHA1)) { - missingFields.Add(Data.Models.Metadata.Disk.SHA1Key); + missingFields.Add(nameof(Data.Models.Metadata.Disk.SHA1)); } break; diff --git a/SabreTools.Metadata.DatFiles/Formats/Listrom.cs b/SabreTools.Metadata.DatFiles/Formats/Listrom.cs index 1c12704f..290caf11 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Listrom.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Listrom.cs @@ -37,10 +37,10 @@ namespace SabreTools.Metadata.DatFiles.Formats switch (datItem) { case Disk disk: - if (string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key)) - && string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.SHA1Key))) + if (string.IsNullOrEmpty(disk.MD5) + && string.IsNullOrEmpty(disk.SHA1)) { - missingFields.Add(Data.Models.Metadata.Disk.SHA1Key); + missingFields.Add(nameof(Data.Models.Metadata.Disk.SHA1)); } break; diff --git a/SabreTools.Metadata.DatFiles/Formats/Listxml.cs b/SabreTools.Metadata.DatFiles/Formats/Listxml.cs index 6188a981..65b7eb7c 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Listxml.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Listxml.cs @@ -282,10 +282,10 @@ namespace SabreTools.Metadata.DatFiles.Formats case Disk disk: if (string.IsNullOrEmpty(disk.Name)) missingFields.Add(nameof(Data.Models.Metadata.Disk.Name)); - if (string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key)) - && string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.SHA1Key))) + if (string.IsNullOrEmpty(disk.MD5) + && string.IsNullOrEmpty(disk.SHA1)) { - missingFields.Add(Data.Models.Metadata.Disk.SHA1Key); + missingFields.Add(nameof(Data.Models.Metadata.Disk.SHA1)); } break; diff --git a/SabreTools.Metadata.DatFiles/Formats/Logiqx.cs b/SabreTools.Metadata.DatFiles/Formats/Logiqx.cs index e57375ed..7e5c0385 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Logiqx.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Logiqx.cs @@ -306,10 +306,10 @@ namespace SabreTools.Metadata.DatFiles.Formats case Disk disk: if (string.IsNullOrEmpty(disk.Name)) missingFields.Add(nameof(Data.Models.Metadata.Disk.Name)); - if (string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key)) - && string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.SHA1Key))) + if (string.IsNullOrEmpty(disk.MD5) + && string.IsNullOrEmpty(disk.SHA1)) { - missingFields.Add(Data.Models.Metadata.Disk.SHA1Key); + missingFields.Add(nameof(Data.Models.Metadata.Disk.SHA1)); } break; diff --git a/SabreTools.Metadata.DatFiles/Formats/Md5File.cs b/SabreTools.Metadata.DatFiles/Formats/Md5File.cs index 1814519f..bfa09d09 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Md5File.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Md5File.cs @@ -40,8 +40,8 @@ namespace SabreTools.Metadata.DatFiles.Formats switch (datItem) { case Disk disk: - if (string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key))) - missingFields.Add(Data.Models.Metadata.Disk.MD5Key); + if (string.IsNullOrEmpty(disk.MD5)) + missingFields.Add(nameof(Data.Models.Metadata.Disk.MD5)); break; case Media medium: diff --git a/SabreTools.Metadata.DatFiles/Formats/SeparatedValue.cs b/SabreTools.Metadata.DatFiles/Formats/SeparatedValue.cs index f8309329..1c253b65 100644 --- a/SabreTools.Metadata.DatFiles/Formats/SeparatedValue.cs +++ b/SabreTools.Metadata.DatFiles/Formats/SeparatedValue.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using SabreTools.Metadata.DatItems; using SabreTools.Metadata.DatItems.Formats; @@ -73,10 +73,10 @@ namespace SabreTools.Metadata.DatFiles.Formats switch (datItem) { case Disk disk: - if (string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key)) - && string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.SHA1Key))) + if (string.IsNullOrEmpty(disk.MD5) + && string.IsNullOrEmpty(disk.SHA1)) { - missingFields.Add(Data.Models.Metadata.Disk.SHA1Key); + missingFields.Add(nameof(Data.Models.Metadata.Disk.SHA1)); } break; diff --git a/SabreTools.Metadata.DatFiles/Formats/Sha1File.cs b/SabreTools.Metadata.DatFiles/Formats/Sha1File.cs index d8a4296d..8cb8a639 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Sha1File.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Sha1File.cs @@ -40,8 +40,8 @@ namespace SabreTools.Metadata.DatFiles.Formats switch (datItem) { case Disk disk: - if (string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.SHA1Key))) - missingFields.Add(Data.Models.Metadata.Disk.SHA1Key); + if (string.IsNullOrEmpty(disk.SHA1)) + missingFields.Add(nameof(Data.Models.Metadata.Disk.SHA1)); break; case Media medium: diff --git a/SabreTools.Metadata.DatFiles/Formats/SoftwareList.cs b/SabreTools.Metadata.DatFiles/Formats/SoftwareList.cs index 6120b5e0..871dce80 100644 --- a/SabreTools.Metadata.DatFiles/Formats/SoftwareList.cs +++ b/SabreTools.Metadata.DatFiles/Formats/SoftwareList.cs @@ -145,9 +145,9 @@ namespace SabreTools.Metadata.DatFiles.Formats } else { - if (string.IsNullOrEmpty(disk.Read(Disk.PartKey)!.Name)) + if (string.IsNullOrEmpty(disk.Part!.Name)) missingFields.Add(nameof(Data.Models.Metadata.Part.Name)); - if (string.IsNullOrEmpty(disk.Read(Disk.PartKey)!.Interface)) + if (string.IsNullOrEmpty(disk.Part.Interface)) missingFields.Add(nameof(Data.Models.Metadata.Part.Interface)); } @@ -157,7 +157,7 @@ namespace SabreTools.Metadata.DatFiles.Formats } else { - if (string.IsNullOrEmpty(disk.Read(Disk.DiskAreaKey)!.Name)) + if (string.IsNullOrEmpty(disk.DiskArea!.Name)) missingFields.Add(nameof(Data.Models.Metadata.DiskArea.Name)); } diff --git a/SabreTools.Metadata.DatFiles/ItemDictionary.cs b/SabreTools.Metadata.DatFiles/ItemDictionary.cs index 7525cbcf..809205eb 100644 --- a/SabreTools.Metadata.DatFiles/ItemDictionary.cs +++ b/SabreTools.Metadata.DatFiles/ItemDictionary.cs @@ -99,8 +99,8 @@ namespace SabreTools.Metadata.DatFiles { // If the file has aboslutely no hashes, skip and log if (disk.Status != ItemStatus.Nodump - && string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key)) - && string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.SHA1Key))) + && string.IsNullOrEmpty(disk.MD5) + && string.IsNullOrEmpty(disk.SHA1)) { _logger.Verbose($"Incomplete entry for '{disk.Name}' will be output as nodump"); disk.Status = ItemStatus.Nodump; diff --git a/SabreTools.Metadata.DatFiles/ItemDictionaryDB.cs b/SabreTools.Metadata.DatFiles/ItemDictionaryDB.cs index 859bb236..87fbb4a3 100644 --- a/SabreTools.Metadata.DatFiles/ItemDictionaryDB.cs +++ b/SabreTools.Metadata.DatFiles/ItemDictionaryDB.cs @@ -188,8 +188,8 @@ namespace SabreTools.Metadata.DatFiles { // If the file has aboslutely no hashes, skip and log if (disk.Status != ItemStatus.Nodump - && string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key)) - && string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.SHA1Key))) + && string.IsNullOrEmpty(disk.MD5) + && string.IsNullOrEmpty(disk.SHA1)) { _logger.Verbose($"Incomplete entry for '{disk.Name}' will be output as nodump"); disk.Status = ItemStatus.Nodump; diff --git a/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs b/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs index a47ba12d..ecaddbed 100644 --- a/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs +++ b/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs @@ -10,39 +10,36 @@ namespace SabreTools.Metadata.DatItems.Formats.Test [Fact] public void ConvertToRomTest() { - DiskArea diskArea = new DiskArea - { - Name = "name" - }; + DiskArea diskArea = new DiskArea { Name = "name" }; Machine machine = new Machine { Name = "name" }; - Part part = new Part + Part part = new Part { Name = "name" }; + + Source source = new Source(0, "source"); + + Disk disk = new Disk { - Name = "name" + Name = "name", + DiskArea = diskArea, + Merge = "merge", + Region = "region", + Status = Data.Models.Metadata.ItemStatus.Good, + Optional = true, + MD5 = HashType.MD5.ZeroString, + SHA1 = HashType.SHA1.ZeroString, + DupeType = DupeType.All | DupeType.External, + Machine = machine, + Part = part, + RemoveFlag = false, + Source = source, }; - Source source = new Source(0, "XXXXXX"); - - Disk disk = new Disk { Name = "name" }; - disk.Write(Disk.DiskAreaKey, diskArea); - disk.Write(Data.Models.Metadata.Disk.MergeKey, "XXXXXX"); - disk.Write(Data.Models.Metadata.Disk.RegionKey, "XXXXXX"); - disk.Status = Data.Models.Metadata.ItemStatus.Good; - disk.Optional = true; - disk.Write(Data.Models.Metadata.Disk.MD5Key, HashType.MD5.ZeroString); - disk.Write(Data.Models.Metadata.Disk.SHA1Key, HashType.SHA1.ZeroString); - disk.DupeType = DupeType.All | DupeType.External; - disk.Machine = machine; - disk.Write(Disk.PartKey, part); - disk.RemoveFlag = false; - disk.Source = source; - Rom actual = disk.ConvertToRom(); Assert.Equal("name.chd", actual.Name); - Assert.Equal("XXXXXX", actual.ReadString(Data.Models.Metadata.Rom.MergeKey)); - Assert.Equal("XXXXXX", actual.ReadString(Data.Models.Metadata.Rom.RegionKey)); + Assert.Equal("merge", actual.ReadString(Data.Models.Metadata.Rom.MergeKey)); + Assert.Equal("region", actual.ReadString(Data.Models.Metadata.Rom.RegionKey)); Assert.Equal(Data.Models.Metadata.ItemStatus.Good, actual.Status); Assert.Equal(true, actual.Optional); Assert.Equal(HashType.MD5.ZeroString, actual.ReadString(Data.Models.Metadata.Rom.MD5Key)); @@ -66,7 +63,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Source? actualSource = actual.Source; Assert.NotNull(actualSource); Assert.Equal(0, actualSource.Index); - Assert.Equal("XXXXXX", actualSource.Name); + Assert.Equal("source", actualSource.Name); } #endregion @@ -81,8 +78,8 @@ namespace SabreTools.Metadata.DatItems.Formats.Test self.FillMissingInformation(other); - Assert.Null(self.ReadString(Data.Models.Metadata.Disk.MD5Key)); - Assert.Null(self.ReadString(Data.Models.Metadata.Disk.SHA1Key)); + Assert.Null(self.MD5); + Assert.Null(self.SHA1); } [Fact] @@ -90,14 +87,16 @@ namespace SabreTools.Metadata.DatItems.Formats.Test { Disk self = new Disk(); - Disk other = new Disk(); - other.Write(Data.Models.Metadata.Disk.MD5Key, "XXXXXX"); - other.Write(Data.Models.Metadata.Disk.SHA1Key, "XXXXXX"); + Disk other = new Disk + { + MD5 = "md5", + SHA1 = "sha1", + }; self.FillMissingInformation(other); - Assert.Equal("XXXXXX", self.ReadString(Data.Models.Metadata.Disk.MD5Key)); - Assert.Equal("XXXXXX", self.ReadString(Data.Models.Metadata.Disk.SHA1Key)); + Assert.Equal("md5", self.MD5); + Assert.Equal("sha1", self.SHA1); } #endregion @@ -115,9 +114,11 @@ namespace SabreTools.Metadata.DatItems.Formats.Test [Fact] public void HasHashes_MD5_True() { - Disk self = new Disk(); - self.Write(Data.Models.Metadata.Disk.MD5Key, "XXXXXX"); - self.Write(Data.Models.Metadata.Disk.SHA1Key, string.Empty); + Disk self = new Disk + { + MD5 = "md5", + SHA1 = string.Empty, + }; bool actual = self.HasHashes(); Assert.True(actual); @@ -126,9 +127,11 @@ namespace SabreTools.Metadata.DatItems.Formats.Test [Fact] public void HasHashes_SHA1_True() { - Disk self = new Disk(); - self.Write(Data.Models.Metadata.Disk.MD5Key, string.Empty); - self.Write(Data.Models.Metadata.Disk.SHA1Key, "XXXXXX"); + Disk self = new Disk + { + MD5 = string.Empty, + SHA1 = "sha1", + }; bool actual = self.HasHashes(); Assert.True(actual); @@ -137,9 +140,11 @@ namespace SabreTools.Metadata.DatItems.Formats.Test [Fact] public void HasHashes_All_True() { - Disk self = new Disk(); - self.Write(Data.Models.Metadata.Disk.MD5Key, "XXXXXX"); - self.Write(Data.Models.Metadata.Disk.SHA1Key, "XXXXXX"); + Disk self = new Disk + { + MD5 = "md5", + SHA1 = "sha1", + }; bool actual = self.HasHashes(); Assert.True(actual); @@ -160,9 +165,11 @@ namespace SabreTools.Metadata.DatItems.Formats.Test [Fact] public void HasZeroHash_NonZeroHash_False() { - Disk self = new Disk(); - self.Write(Data.Models.Metadata.Disk.MD5Key, "DEADBEEF"); - self.Write(Data.Models.Metadata.Disk.SHA1Key, "DEADBEEF"); + Disk self = new Disk + { + MD5 = "DEADBEEF", + SHA1 = "DEADBEEF", + }; bool actual = self.HasZeroHash(); Assert.False(actual); @@ -171,9 +178,11 @@ namespace SabreTools.Metadata.DatItems.Formats.Test [Fact] public void HasZeroHash_ZeroMD5_True() { - Disk self = new Disk(); - self.Write(Data.Models.Metadata.Disk.MD5Key, HashType.MD5.ZeroString); - self.Write(Data.Models.Metadata.Disk.SHA1Key, string.Empty); + Disk self = new Disk + { + MD5 = HashType.MD5.ZeroString, + SHA1 = string.Empty, + }; bool actual = self.HasZeroHash(); Assert.True(actual); @@ -182,9 +191,11 @@ namespace SabreTools.Metadata.DatItems.Formats.Test [Fact] public void HasZeroHash_ZeroSHA1_True() { - Disk self = new Disk(); - self.Write(Data.Models.Metadata.Disk.MD5Key, string.Empty); - self.Write(Data.Models.Metadata.Disk.SHA1Key, HashType.SHA1.ZeroString); + Disk self = new Disk + { + MD5 = string.Empty, + SHA1 = HashType.SHA1.ZeroString, + }; bool actual = self.HasZeroHash(); Assert.True(actual); @@ -193,9 +204,11 @@ namespace SabreTools.Metadata.DatItems.Formats.Test [Fact] public void HasZeroHash_ZeroAll_True() { - Disk self = new Disk(); - self.Write(Data.Models.Metadata.Disk.MD5Key, HashType.MD5.ZeroString); - self.Write(Data.Models.Metadata.Disk.SHA1Key, HashType.SHA1.ZeroString); + Disk self = new Disk + { + MD5 = HashType.MD5.ZeroString, + SHA1 = HashType.SHA1.ZeroString, + }; bool actual = self.HasZeroHash(); Assert.True(actual); @@ -257,9 +270,11 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Machine machine = new Machine { Name = "Machine" }; - DatItem datItem = new Disk(); - datItem.Write(Data.Models.Metadata.Disk.MD5Key, "DEADBEEF"); - datItem.Write(Data.Models.Metadata.Disk.SHA1Key, "DEADBEEF"); + DatItem datItem = new Disk + { + MD5 = "DEADBEEF", + SHA1 = "DEADBEEF", + }; string actual = datItem.GetKey(bucketedBy, machine, source, lower, norename); Assert.Equal(expected, actual); diff --git a/SabreTools.Metadata.DatItems/Formats/Disk.cs b/SabreTools.Metadata.DatItems/Formats/Disk.cs index 74bcc47d..fb7caf1d 100644 --- a/SabreTools.Metadata.DatItems/Formats/Disk.cs +++ b/SabreTools.Metadata.DatItems/Formats/Disk.cs @@ -12,35 +12,41 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("disk"), XmlRoot("disk")] public sealed class Disk : DatItem { - #region Constants - - /// - /// Non-standard key for inverted logic - /// - public const string DiskAreaKey = "DISKAREA"; - - /// - /// Non-standard key for inverted logic - /// - public const string PartKey = "PART"; - - #endregion - #region Fields + public DiskArea? DiskArea { get; set; } + [JsonIgnore] public bool DiskAreaSpecified + => DiskArea is not null && !string.IsNullOrEmpty(DiskArea.Name); + + public string? Flags { - get - { - var diskArea = Read(DiskAreaKey); - return diskArea is not null && !string.IsNullOrEmpty(diskArea.Name); - } + get => (_internal as Data.Models.Metadata.Disk)?.Flags; + set => (_internal as Data.Models.Metadata.Disk)?.Flags = value; + } + + public long? Index + { + get => (_internal as Data.Models.Metadata.Disk)?.Index; + set => (_internal as Data.Models.Metadata.Disk)?.Index = value; } /// /> public override ItemType ItemType => ItemType.Disk; + public string? MD5 + { + get => (_internal as Data.Models.Metadata.Disk)?.MD5; + set => (_internal as Data.Models.Metadata.Disk)?.MD5 = value; + } + + public string? Merge + { + get => (_internal as Data.Models.Metadata.Disk)?.Merge; + set => (_internal as Data.Models.Metadata.Disk)?.Merge = value; + } + public string? Name { get => (_internal as Data.Models.Metadata.Disk)?.Name; @@ -53,18 +59,31 @@ namespace SabreTools.Metadata.DatItems.Formats set => (_internal as Data.Models.Metadata.Disk)?.Optional = value; } + public Part? Part { get; set; } + [JsonIgnore] public bool PartSpecified { get { - var part = Read(PartKey); - return part is not null - && (!string.IsNullOrEmpty(part.Name) - || !string.IsNullOrEmpty(part.Interface)); + return Part is not null + && (!string.IsNullOrEmpty(Part.Name) + || !string.IsNullOrEmpty(Part.Interface)); } } + public string? Region + { + get => (_internal as Data.Models.Metadata.Disk)?.Region; + set => (_internal as Data.Models.Metadata.Disk)?.Region = value; + } + + public string? SHA1 + { + get => (_internal as Data.Models.Metadata.Disk)?.SHA1; + set => (_internal as Data.Models.Metadata.Disk)?.SHA1 = value; + } + public ItemStatus? Status { get => (_internal as Data.Models.Metadata.Disk)?.Status; @@ -92,13 +111,11 @@ namespace SabreTools.Metadata.DatItems.Formats DupeType = 0x00; // Process hash values - string? md5 = ReadString(Data.Models.Metadata.Disk.MD5Key); - if (md5 is not null) - Write(Data.Models.Metadata.Disk.MD5Key, TextHelper.NormalizeMD5(md5)); + if (MD5 is not null) + MD5 = TextHelper.NormalizeMD5(MD5); - string? sha1 = ReadString(Data.Models.Metadata.Disk.SHA1Key); - if (sha1 is not null) - Write(Data.Models.Metadata.Disk.SHA1Key, TextHelper.NormalizeSHA1(sha1)); + if (SHA1 is not null) + SHA1 = TextHelper.NormalizeSHA1(SHA1); } public Disk(Data.Models.Metadata.Disk item, Machine machine, Source source) : this(item) @@ -123,18 +140,15 @@ namespace SabreTools.Metadata.DatItems.Formats var rom = new Rom(_internal.ConvertToRom()!); // Create a DataArea if there was an existing DiskArea - var diskArea = Read(DiskAreaKey); - if (diskArea is not null) + if (DiskArea is not null) { - var dataArea = new DataArea(); - dataArea.Name = diskArea.Name; - + var dataArea = new DataArea { Name = DiskArea.Name }; rom.Write(Rom.DataAreaKey, dataArea); } rom.DupeType = DupeType; rom.Machine = Machine?.Clone() as Machine; - rom.Write(Rom.PartKey, Read(PartKey)?.Clone() as Part); + rom.Write(Rom.PartKey, Part?.Clone() as Part); rom.RemoveFlag = RemoveFlag; rom.Source = Source?.Clone() as Source; @@ -179,11 +193,11 @@ namespace SabreTools.Metadata.DatItems.Formats switch (bucketedBy) { case ItemKey.MD5: - key = ReadString(Data.Models.Metadata.Disk.MD5Key); + key = MD5; break; case ItemKey.SHA1: - key = ReadString(Data.Models.Metadata.Disk.SHA1Key); + key = SHA1; break; // Let the base handle generic stuff diff --git a/SabreTools.Metadata.Filter/FilterObject.cs b/SabreTools.Metadata.Filter/FilterObject.cs index c8f9b298..e1cdb2d7 100644 --- a/SabreTools.Metadata.Filter/FilterObject.cs +++ b/SabreTools.Metadata.Filter/FilterObject.cs @@ -504,9 +504,27 @@ namespace SabreTools.Metadata.Filter checkValue = item.Value; return true; + case Disk item when fieldName == "flags": + checkValue = item.Flags; + return true; + case Disk item when fieldName == "index": + checkValue = item.Index?.ToString(); + return true; + case Disk item when fieldName == "md5": + checkValue = item.MD5; + return true; + case Disk item when fieldName == "merge": + checkValue = item.Merge; + return true; case Disk item when fieldName == "optional": checkValue = item.Optional.FromYesNo(); return true; + case Disk item when fieldName == "region": + checkValue = item.Region; + return true; + case Disk item when fieldName == "sha1": + checkValue = item.SHA1; + return true; case Disk item when fieldName == "status": checkValue = item.Status?.AsStringValue(); return true; diff --git a/SabreTools.Metadata.Test/DictionaryBaseExtensionsTests.cs b/SabreTools.Metadata.Test/DictionaryBaseExtensionsTests.cs index 4eba1f60..e17b7629 100644 --- a/SabreTools.Metadata.Test/DictionaryBaseExtensionsTests.cs +++ b/SabreTools.Metadata.Test/DictionaryBaseExtensionsTests.cs @@ -24,15 +24,15 @@ namespace SabreTools.Metadata.Test { Status = ItemStatus.Nodump, Name = "name", - [Disk.MD5Key] = string.Empty, - [Disk.SHA1Key] = string.Empty, + MD5 = string.Empty, + SHA1 = string.Empty, }; DictionaryBase other = new Disk { Status = ItemStatus.Nodump, Name = "name", - [Disk.MD5Key] = string.Empty, - [Disk.SHA1Key] = string.Empty, + MD5 = string.Empty, + SHA1 = string.Empty, }; bool actual = self.EqualTo(other); @@ -45,14 +45,14 @@ namespace SabreTools.Metadata.Test DictionaryBase self = new Disk { Name = "name", - [Disk.MD5Key] = "XXXXXX", - [Disk.SHA1Key] = string.Empty, + MD5 = "XXXXXX", + SHA1 = string.Empty, }; DictionaryBase other = new Disk { Name = "name", - [Disk.MD5Key] = string.Empty, - [Disk.SHA1Key] = "XXXXXX", + MD5 = string.Empty, + SHA1 = "XXXXXX", }; bool actual = self.EqualTo(other); @@ -65,14 +65,14 @@ namespace SabreTools.Metadata.Test DictionaryBase self = new Disk { Name = "XXXXXX1", - [Disk.MD5Key] = "XXXXXX", - [Disk.SHA1Key] = string.Empty, + MD5 = "XXXXXX", + SHA1 = string.Empty, }; DictionaryBase other = new Disk { Name = "XXXXXX2", - [Disk.MD5Key] = "XXXXXX", - [Disk.SHA1Key] = "XXXXXX", + MD5 = "XXXXXX", + SHA1 = "XXXXXX", }; bool actual = self.EqualTo(other); @@ -85,14 +85,14 @@ namespace SabreTools.Metadata.Test DictionaryBase self = new Disk { Name = "XXXXXX1", - [Disk.MD5Key] = string.Empty, - [Disk.SHA1Key] = "XXXXXX", + MD5 = string.Empty, + SHA1 = "XXXXXX", }; DictionaryBase other = new Disk { Name = "XXXXXX2", - [Disk.MD5Key] = "XXXXXX", - [Disk.SHA1Key] = "XXXXXX", + MD5 = "XXXXXX", + SHA1 = "XXXXXX", }; bool actual = self.EqualTo(other); @@ -105,14 +105,14 @@ namespace SabreTools.Metadata.Test DictionaryBase self = new Disk { Name = "XXXXXX1", - [Disk.MD5Key] = "XXXXXX", - [Disk.SHA1Key] = "XXXXXX", + MD5 = "XXXXXX", + SHA1 = "XXXXXX", }; DictionaryBase other = new Disk { Name = "XXXXXX2", - [Disk.MD5Key] = "XXXXXX", - [Disk.SHA1Key] = "XXXXXX", + MD5 = "XXXXXX", + SHA1 = "XXXXXX", }; bool actual = self.EqualTo(other); diff --git a/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs b/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs index e585e699..9dc537d1 100644 --- a/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs @@ -128,11 +128,11 @@ namespace SabreTools.Serialization.CrossModel.Test var disk = new Data.Models.ClrMamePro.Disk { Name = "name", - MD5 = "XXXXXX", - SHA1 = "XXXXXX", - Merge = "XXXXXX", + MD5 = "md5", + SHA1 = "sha1", + Merge = "merge", Status = Data.Models.Metadata.ItemStatus.Good, - Flags = "XXXXXX", + Flags = "flags", }; var sample = new Data.Models.ClrMamePro.Sample @@ -395,11 +395,11 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(disk); Assert.Equal("name", disk.Name); - Assert.Equal("XXXXXX", disk.MD5); - Assert.Equal("XXXXXX", disk.SHA1); - Assert.Equal("XXXXXX", disk.Merge); + Assert.Equal("md5", disk.MD5); + Assert.Equal("sha1", disk.SHA1); + Assert.Equal("merge", disk.Merge); Assert.Equal(Data.Models.Metadata.ItemStatus.Good, disk.Status); - Assert.Equal("XXXXXX", disk.Flags); + Assert.Equal("flags", disk.Flags); } /// diff --git a/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs b/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs index 525728fc..f5cfc37c 100644 --- a/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs @@ -89,11 +89,11 @@ namespace SabreTools.Serialization.CrossModel.Test var disk = new Data.Models.Listxml.Disk { Name = "name", - MD5 = "XXXXXX", - SHA1 = "XXXXXX", - Merge = "XXXXXX", - Region = "XXXXXX", - Index = "XXXXXX", + MD5 = "md5", + SHA1 = "sha1", + Merge = "merge", + Region = "region", + Index = 12345, Writable = true, Status = Data.Models.Metadata.ItemStatus.Good, Optional = true, @@ -505,11 +505,11 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(disk); Assert.Equal("name", disk.Name); - Assert.Equal("XXXXXX", disk.MD5); - Assert.Equal("XXXXXX", disk.SHA1); - Assert.Equal("XXXXXX", disk.Merge); - Assert.Equal("XXXXXX", disk.Region); - Assert.Equal("XXXXXX", disk.Index); + Assert.Equal("md5", disk.MD5); + Assert.Equal("sha1", disk.SHA1); + Assert.Equal("merge", disk.Merge); + Assert.Equal("region", disk.Region); + Assert.Equal(12345, disk.Index); Assert.Equal(true, disk.Writable); Assert.Equal(Data.Models.Metadata.ItemStatus.Good, disk.Status); Assert.Equal(true, disk.Optional); diff --git a/SabreTools.Serialization.CrossModel.Test/M1Tests.cs b/SabreTools.Serialization.CrossModel.Test/M1Tests.cs index 73453a6b..4f8d42ad 100644 --- a/SabreTools.Serialization.CrossModel.Test/M1Tests.cs +++ b/SabreTools.Serialization.CrossModel.Test/M1Tests.cs @@ -85,11 +85,11 @@ namespace SabreTools.Serialization.CrossModel.Test var disk = new Data.Models.Listxml.Disk { Name = "name", - MD5 = "XXXXXX", - SHA1 = "XXXXXX", - Merge = "XXXXXX", - Region = "XXXXXX", - Index = "XXXXXX", + MD5 = "md5", + SHA1 = "sha1", + Merge = "merge", + Region = "region", + Index = 12345, Writable = true, Status = Data.Models.Metadata.ItemStatus.Good, Optional = true, @@ -499,11 +499,11 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(disk); Assert.Equal("name", disk.Name); - Assert.Equal("XXXXXX", disk.MD5); - Assert.Equal("XXXXXX", disk.SHA1); - Assert.Equal("XXXXXX", disk.Merge); - Assert.Equal("XXXXXX", disk.Region); - Assert.Equal("XXXXXX", disk.Index); + Assert.Equal("md5", disk.MD5); + Assert.Equal("sha1", disk.SHA1); + Assert.Equal("merge", disk.Merge); + Assert.Equal("region", disk.Region); + Assert.Equal(12345, disk.Index); Assert.Equal(true, disk.Writable); Assert.Equal(Data.Models.Metadata.ItemStatus.Good, disk.Status); Assert.Equal(true, disk.Optional); diff --git a/SabreTools.Serialization.CrossModel.Test/MessTests.cs b/SabreTools.Serialization.CrossModel.Test/MessTests.cs index cefd38d2..d42345ff 100644 --- a/SabreTools.Serialization.CrossModel.Test/MessTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/MessTests.cs @@ -85,11 +85,11 @@ namespace SabreTools.Serialization.CrossModel.Test var disk = new Data.Models.Listxml.Disk { Name = "name", - MD5 = "XXXXXX", - SHA1 = "XXXXXX", - Merge = "XXXXXX", - Region = "XXXXXX", - Index = "XXXXXX", + MD5 = "md5", + SHA1 = "sha1", + Merge = "merge", + Region = "region", + Index = 12345, Writable = true, Status = Data.Models.Metadata.ItemStatus.Good, Optional = true, @@ -499,11 +499,11 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(disk); Assert.Equal("name", disk.Name); - Assert.Equal("XXXXXX", disk.MD5); - Assert.Equal("XXXXXX", disk.SHA1); - Assert.Equal("XXXXXX", disk.Merge); - Assert.Equal("XXXXXX", disk.Region); - Assert.Equal("XXXXXX", disk.Index); + Assert.Equal("md5", disk.MD5); + Assert.Equal("sha1", disk.SHA1); + Assert.Equal("merge", disk.Merge); + Assert.Equal("region", disk.Region); + Assert.Equal(12345, disk.Index); Assert.Equal(true, disk.Writable); Assert.Equal(Data.Models.Metadata.ItemStatus.Good, disk.Status); Assert.Equal(true, disk.Optional); diff --git a/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs b/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs index 512753d8..ed56c002 100644 --- a/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs @@ -197,11 +197,11 @@ namespace SabreTools.Serialization.CrossModel var disk = new Disk { Name = item.Name, - MD5 = item.ReadString(Data.Models.Metadata.Disk.MD5Key), - SHA1 = item.ReadString(Data.Models.Metadata.Disk.SHA1Key), - Merge = item.ReadString(Data.Models.Metadata.Disk.MergeKey), + MD5 = item.MD5, + SHA1 = item.SHA1, + Merge = item.Merge, Status = item.Status, - Flags = item.ReadString(Data.Models.Metadata.Disk.FlagsKey), + Flags = item.Flags, }; return disk; } diff --git a/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs b/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs index cf3e28ea..1381c51d 100644 --- a/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs @@ -210,11 +210,11 @@ namespace SabreTools.Serialization.CrossModel var disk = new Data.Models.Metadata.Disk { Name = item.Name, - [Data.Models.Metadata.Disk.MD5Key] = item.MD5, - [Data.Models.Metadata.Disk.SHA1Key] = item.SHA1, - [Data.Models.Metadata.Disk.MergeKey] = item.Merge, + MD5 = item.MD5, + SHA1 = item.SHA1, + Merge = item.Merge, Status = item.Status, - [Data.Models.Metadata.Disk.FlagsKey] = item.Flags, + Flags = item.Flags, }; return disk; } diff --git a/SabreTools.Serialization.CrossModel/Listrom.Deserializer.cs b/SabreTools.Serialization.CrossModel/Listrom.Deserializer.cs index e37f8aa3..db875814 100644 --- a/SabreTools.Serialization.CrossModel/Listrom.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Listrom.Deserializer.cs @@ -56,8 +56,8 @@ namespace SabreTools.Serialization.CrossModel var row = new Row { Name = item.Name, - MD5 = item.ReadString(Data.Models.Metadata.Disk.MD5Key), - SHA1 = item.ReadString(Data.Models.Metadata.Disk.SHA1Key), + MD5 = item.MD5, + SHA1 = item.SHA1, }; if (item.Status == Data.Models.Metadata.ItemStatus.Nodump) diff --git a/SabreTools.Serialization.CrossModel/Listrom.Serializer.cs b/SabreTools.Serialization.CrossModel/Listrom.Serializer.cs index 94c44e35..6419e27f 100644 --- a/SabreTools.Serialization.CrossModel/Listrom.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Listrom.Serializer.cs @@ -84,8 +84,8 @@ namespace SabreTools.Serialization.CrossModel var disk = new Data.Models.Metadata.Disk { Name = item.Name, - [Data.Models.Metadata.Disk.MD5Key] = item.MD5, - [Data.Models.Metadata.Disk.SHA1Key] = item.SHA1, + MD5 = item.MD5, + SHA1 = item.SHA1, }; if (item.NoGoodDumpKnown) diff --git a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs index 095d4997..3ac33a38 100644 --- a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs @@ -404,11 +404,11 @@ namespace SabreTools.Serialization.CrossModel var disk = new Disk { Name = item.Name, - MD5 = item.ReadString(Data.Models.Metadata.Disk.MD5Key), - SHA1 = item.ReadString(Data.Models.Metadata.Disk.SHA1Key), - Merge = item.ReadString(Data.Models.Metadata.Disk.MergeKey), - Region = item.ReadString(Data.Models.Metadata.Disk.RegionKey), - Index = item.ReadString(Data.Models.Metadata.Disk.IndexKey), + MD5 = item.MD5, + SHA1 = item.SHA1, + Merge = item.Merge, + Region = item.Region, + Index = item.Index, Writable = item.Writable, Status = item.Status, Optional = item.Optional, diff --git a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs index b810bfd2..6a5a8a82 100644 --- a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs @@ -427,11 +427,11 @@ namespace SabreTools.Serialization.CrossModel var disk = new Data.Models.Metadata.Disk { Name = item.Name, - [Data.Models.Metadata.Disk.MD5Key] = item.MD5, - [Data.Models.Metadata.Disk.SHA1Key] = item.SHA1, - [Data.Models.Metadata.Disk.MergeKey] = item.Merge, - [Data.Models.Metadata.Disk.RegionKey] = item.Region, - [Data.Models.Metadata.Disk.IndexKey] = item.Index, + MD5 = item.MD5, + SHA1 = item.SHA1, + Merge = item.Merge, + Region = item.Region, + Index = item.Index, Writable = item.Writable, Status = item.Status, Optional = item.Optional, diff --git a/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs b/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs index 126d84b0..06f44fd3 100644 --- a/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs @@ -233,11 +233,11 @@ namespace SabreTools.Serialization.CrossModel var disk = new Disk { Name = item.Name, - MD5 = item.ReadString(Data.Models.Metadata.Disk.MD5Key), - SHA1 = item.ReadString(Data.Models.Metadata.Disk.SHA1Key), - Merge = item.ReadString(Data.Models.Metadata.Disk.MergeKey), + MD5 = item.MD5, + SHA1 = item.SHA1, + Merge = item.Merge, Status = item.Status, - Region = item.ReadString(Data.Models.Metadata.Disk.RegionKey), + Region = item.Region, }; return disk; } diff --git a/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs b/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs index 9d4fc753..6887a903 100644 --- a/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs @@ -227,11 +227,11 @@ namespace SabreTools.Serialization.CrossModel var disk = new Data.Models.Metadata.Disk { Name = item.Name, - [Data.Models.Metadata.Disk.MD5Key] = item.MD5, - [Data.Models.Metadata.Disk.SHA1Key] = item.SHA1, - [Data.Models.Metadata.Disk.MergeKey] = item.Merge, + MD5 = item.MD5, + SHA1 = item.SHA1, + Merge = item.Merge, Status = item.Status, - [Data.Models.Metadata.Disk.RegionKey] = item.Region, + Region = item.Region, }; return disk; } diff --git a/SabreTools.Serialization.CrossModel/SeparatedValue.Deserializer.cs b/SabreTools.Serialization.CrossModel/SeparatedValue.Deserializer.cs index acc2cfdc..664c4757 100644 --- a/SabreTools.Serialization.CrossModel/SeparatedValue.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/SeparatedValue.Deserializer.cs @@ -86,8 +86,8 @@ namespace SabreTools.Serialization.CrossModel DiskName = item.Name, Size = null, CRC = null, - MD5 = item.ReadString(Data.Models.Metadata.Disk.MD5Key), - SHA1 = item.ReadString(Data.Models.Metadata.Disk.SHA1Key), + MD5 = item.MD5, + SHA1 = item.SHA1, SHA256 = null, SHA384 = null, SHA512 = null, diff --git a/SabreTools.Serialization.CrossModel/SeparatedValue.Serializer.cs b/SabreTools.Serialization.CrossModel/SeparatedValue.Serializer.cs index 89ce378a..bd9257e6 100644 --- a/SabreTools.Serialization.CrossModel/SeparatedValue.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/SeparatedValue.Serializer.cs @@ -90,8 +90,8 @@ namespace SabreTools.Serialization.CrossModel "disk" => new Data.Models.Metadata.Disk { Name = item.DiskName, - [Data.Models.Metadata.Disk.MD5Key] = item.MD5, - [Data.Models.Metadata.Disk.SHA1Key] = item.SHA1, + MD5 = item.MD5, + SHA1 = item.SHA1, Status = item.Status, }, "media" => new Data.Models.Metadata.Media diff --git a/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs b/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs index 6493fb8d..864ea791 100644 --- a/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs @@ -127,8 +127,8 @@ namespace SabreTools.Serialization.CrossModel var disk = new Disk { Name = item.Name, - MD5 = item.ReadString(Data.Models.Metadata.Disk.MD5Key), - SHA1 = item.ReadString(Data.Models.Metadata.Disk.SHA1Key), + MD5 = item.MD5, + SHA1 = item.SHA1, Status = item.Status, Writeable = item.Writable, }; diff --git a/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs b/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs index 0dc4888c..ab8d821a 100644 --- a/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs @@ -126,8 +126,8 @@ namespace SabreTools.Serialization.CrossModel var disk = new Data.Models.Metadata.Disk { Name = item.Name, - [Data.Models.Metadata.Disk.MD5Key] = item.MD5, - [Data.Models.Metadata.Disk.SHA1Key] = item.SHA1, + MD5 = item.MD5, + SHA1 = item.SHA1, Status = item.Status, Writable = item.Writeable, }; diff --git a/SabreTools.Serialization.Readers.Test/ListxmlTests.cs b/SabreTools.Serialization.Readers.Test/ListxmlTests.cs index a4997294..aef932cc 100644 --- a/SabreTools.Serialization.Readers.Test/ListxmlTests.cs +++ b/SabreTools.Serialization.Readers.Test/ListxmlTests.cs @@ -156,11 +156,11 @@ namespace SabreTools.Serialization.Readers.Test var disk = new Data.Models.Listxml.Disk { Name = "name", - MD5 = "XXXXXX", - SHA1 = "XXXXXX", - Merge = "XXXXXX", - Region = "XXXXXX", - Index = "XXXXXX", + MD5 = "md5", + SHA1 = "sha1", + Merge = "merge", + Region = "region", + Index = 12345, Writable = true, Status = Data.Models.Metadata.ItemStatus.Good, Optional = true, @@ -572,11 +572,11 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(disk); Assert.Equal("name", disk.Name); - Assert.Equal("XXXXXX", disk.MD5); - Assert.Equal("XXXXXX", disk.SHA1); - Assert.Equal("XXXXXX", disk.Merge); - Assert.Equal("XXXXXX", disk.Region); - Assert.Equal("XXXXXX", disk.Index); + Assert.Equal("md5", disk.MD5); + Assert.Equal("sha1", disk.SHA1); + Assert.Equal("merge", disk.Merge); + Assert.Equal("region", disk.Region); + Assert.Equal(12345, disk.Index); Assert.Equal(true, disk.Writable); Assert.Equal(Data.Models.Metadata.ItemStatus.Good, disk.Status); Assert.Equal(true, disk.Optional); diff --git a/SabreTools.Serialization.Readers.Test/M1Tests.cs b/SabreTools.Serialization.Readers.Test/M1Tests.cs index 3f581a31..8c5ed64e 100644 --- a/SabreTools.Serialization.Readers.Test/M1Tests.cs +++ b/SabreTools.Serialization.Readers.Test/M1Tests.cs @@ -152,11 +152,11 @@ namespace SabreTools.Serialization.Readers.Test var disk = new Data.Models.Listxml.Disk { Name = "name", - MD5 = "XXXXXX", - SHA1 = "XXXXXX", - Merge = "XXXXXX", - Region = "XXXXXX", - Index = "XXXXXX", + MD5 = "md5", + SHA1 = "sha1", + Merge = "merge", + Region = "region", + Index = 12345, Writable = true, Status = Data.Models.Metadata.ItemStatus.Good, Optional = true, @@ -566,11 +566,11 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(disk); Assert.Equal("name", disk.Name); - Assert.Equal("XXXXXX", disk.MD5); - Assert.Equal("XXXXXX", disk.SHA1); - Assert.Equal("XXXXXX", disk.Merge); - Assert.Equal("XXXXXX", disk.Region); - Assert.Equal("XXXXXX", disk.Index); + Assert.Equal("md5", disk.MD5); + Assert.Equal("sha1", disk.SHA1); + Assert.Equal("merge", disk.Merge); + Assert.Equal("region", disk.Region); + Assert.Equal(12345, disk.Index); Assert.Equal(true, disk.Writable); Assert.Equal(Data.Models.Metadata.ItemStatus.Good, disk.Status); Assert.Equal(true, disk.Optional); diff --git a/SabreTools.Serialization.Readers.Test/MessTests.cs b/SabreTools.Serialization.Readers.Test/MessTests.cs index 4d18462d..f9b1ae56 100644 --- a/SabreTools.Serialization.Readers.Test/MessTests.cs +++ b/SabreTools.Serialization.Readers.Test/MessTests.cs @@ -152,11 +152,11 @@ namespace SabreTools.Serialization.Readers.Test var disk = new Data.Models.Listxml.Disk { Name = "name", - MD5 = "XXXXXX", - SHA1 = "XXXXXX", - Merge = "XXXXXX", - Region = "XXXXXX", - Index = "XXXXXX", + MD5 = "md5", + SHA1 = "sha1", + Merge = "merge", + Region = "region", + Index = 12345, Writable = true, Status = Data.Models.Metadata.ItemStatus.Good, Optional = true, @@ -566,11 +566,11 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(disk); Assert.Equal("name", disk.Name); - Assert.Equal("XXXXXX", disk.MD5); - Assert.Equal("XXXXXX", disk.SHA1); - Assert.Equal("XXXXXX", disk.Merge); - Assert.Equal("XXXXXX", disk.Region); - Assert.Equal("XXXXXX", disk.Index); + Assert.Equal("md5", disk.MD5); + Assert.Equal("sha1", disk.SHA1); + Assert.Equal("merge", disk.Merge); + Assert.Equal("region", disk.Region); + Assert.Equal(12345, disk.Index); Assert.Equal(true, disk.Writable); Assert.Equal(Data.Models.Metadata.ItemStatus.Good, disk.Status); Assert.Equal(true, disk.Optional); diff --git a/SabreTools.Serialization.Readers/Listxml.cs b/SabreTools.Serialization.Readers/Listxml.cs index 594d34d8..4b283090 100644 --- a/SabreTools.Serialization.Readers/Listxml.cs +++ b/SabreTools.Serialization.Readers/Listxml.cs @@ -557,7 +557,7 @@ namespace SabreTools.Serialization.Readers obj.SHA1 = reader.GetAttribute("sha1"); obj.Merge = reader.GetAttribute("merge"); obj.Region = reader.GetAttribute("region"); - obj.Index = reader.GetAttribute("index"); + obj.Index = NumberHelper.ConvertToInt64(reader.GetAttribute("index")); obj.Writable = reader.GetAttribute("writable").AsYesNo(); obj.Status = reader.GetAttribute("status").AsItemStatus(); obj.Optional = reader.GetAttribute("optional").AsYesNo(); diff --git a/SabreTools.Serialization.Readers/M1.cs b/SabreTools.Serialization.Readers/M1.cs index 83b3202a..2ccd1f22 100644 --- a/SabreTools.Serialization.Readers/M1.cs +++ b/SabreTools.Serialization.Readers/M1.cs @@ -555,7 +555,7 @@ namespace SabreTools.Serialization.Readers obj.SHA1 = reader.GetAttribute("sha1"); obj.Merge = reader.GetAttribute("merge"); obj.Region = reader.GetAttribute("region"); - obj.Index = reader.GetAttribute("index"); + obj.Index = NumberHelper.ConvertToInt64(reader.GetAttribute("index")); obj.Writable = reader.GetAttribute("writable").AsYesNo(); obj.Status = reader.GetAttribute("status").AsItemStatus(); obj.Optional = reader.GetAttribute("optional").AsYesNo(); diff --git a/SabreTools.Serialization.Readers/Mess.cs b/SabreTools.Serialization.Readers/Mess.cs index 97a581da..74637da8 100644 --- a/SabreTools.Serialization.Readers/Mess.cs +++ b/SabreTools.Serialization.Readers/Mess.cs @@ -555,7 +555,7 @@ namespace SabreTools.Serialization.Readers obj.SHA1 = reader.GetAttribute("sha1"); obj.Merge = reader.GetAttribute("merge"); obj.Region = reader.GetAttribute("region"); - obj.Index = reader.GetAttribute("index"); + obj.Index = NumberHelper.ConvertToInt64(reader.GetAttribute("index")); obj.Writable = reader.GetAttribute("writable").AsYesNo(); obj.Status = reader.GetAttribute("status").AsItemStatus(); obj.Optional = reader.GetAttribute("optional").AsYesNo(); diff --git a/SabreTools.Serialization.Writers/Listxml.cs b/SabreTools.Serialization.Writers/Listxml.cs index 78c12a3f..89b638e1 100644 --- a/SabreTools.Serialization.Writers/Listxml.cs +++ b/SabreTools.Serialization.Writers/Listxml.cs @@ -372,7 +372,7 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalAttributeString("sha1", obj.SHA1); writer.WriteOptionalAttributeString("merge", obj.Merge); writer.WriteOptionalAttributeString("region", obj.Region); - writer.WriteOptionalAttributeString("index", obj.Index); + writer.WriteOptionalAttributeString("index", obj.Index?.ToString()); writer.WriteOptionalAttributeString("writable", obj.Writable.FromYesNo()); writer.WriteOptionalAttributeString("status", obj.Status?.AsStringValue()); writer.WriteOptionalAttributeString("optional", obj.Optional.FromYesNo()); diff --git a/SabreTools.Serialization.Writers/M1.cs b/SabreTools.Serialization.Writers/M1.cs index 7fcbbcf3..af84c695 100644 --- a/SabreTools.Serialization.Writers/M1.cs +++ b/SabreTools.Serialization.Writers/M1.cs @@ -370,7 +370,7 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalAttributeString("sha1", obj.SHA1); writer.WriteOptionalAttributeString("merge", obj.Merge); writer.WriteOptionalAttributeString("region", obj.Region); - writer.WriteOptionalAttributeString("index", obj.Index); + writer.WriteOptionalAttributeString("index", obj.Index?.ToString()); writer.WriteOptionalAttributeString("writable", obj.Writable.FromYesNo()); writer.WriteOptionalAttributeString("status", obj.Status?.AsStringValue()); writer.WriteOptionalAttributeString("optional", obj.Optional.FromYesNo()); diff --git a/SabreTools.Serialization.Writers/Mess.cs b/SabreTools.Serialization.Writers/Mess.cs index f616b2b1..ada680f8 100644 --- a/SabreTools.Serialization.Writers/Mess.cs +++ b/SabreTools.Serialization.Writers/Mess.cs @@ -370,7 +370,7 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalAttributeString("sha1", obj.SHA1); writer.WriteOptionalAttributeString("merge", obj.Merge); writer.WriteOptionalAttributeString("region", obj.Region); - writer.WriteOptionalAttributeString("index", obj.Index); + writer.WriteOptionalAttributeString("index", obj.Index?.ToString()); writer.WriteOptionalAttributeString("writable", obj.Writable.FromYesNo()); writer.WriteOptionalAttributeString("status", obj.Status?.AsStringValue()); writer.WriteOptionalAttributeString("optional", obj.Optional.FromYesNo()); From 9e721c5c43389f9c1f912e9aa1f2153f98b389b7 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sat, 4 Apr 2026 01:28:17 -0400 Subject: [PATCH 066/142] Convert Input fully over to properties --- .../MetadataExtensions.cs | 20 ++---- SabreTools.Data.Models/Metadata/Input.cs | 63 ++++++++++++++++--- SabreTools.Data.Models/Metadata/Media.cs | 20 +++++- .../DatFileTests.FromMetadata.cs | 4 +- .../DatFileTests.ToMetadata.cs | 2 +- .../FormatsTests.cs | 2 +- .../Formats/ClrMamePro.cs | 4 +- SabreTools.Metadata.DatItems/Formats/Input.cs | 31 +++------ .../DictionaryBaseExtensions.cs | 12 +--- .../Listxml.Deserializer.cs | 2 +- .../Listxml.Serializer.cs | 5 +- 11 files changed, 94 insertions(+), 71 deletions(-) diff --git a/SabreTools.Data.Extensions/MetadataExtensions.cs b/SabreTools.Data.Extensions/MetadataExtensions.cs index 4bde6ffd..8bd06c05 100644 --- a/SabreTools.Data.Extensions/MetadataExtensions.cs +++ b/SabreTools.Data.Extensions/MetadataExtensions.cs @@ -186,8 +186,12 @@ namespace SabreTools.Data.Extensions // return feature.Clone() as Feature; else if (self is Info info) return info.Clone() as Info; + else if (self is Input input) + return input.Clone() as Input; else if (self is Instance instance) return instance.Clone() as Instance; + else if (self is Media media) + return media.Clone() as Media; else if (self is Original original) return original.Clone() as Original; else if (self is RamOption ramOption) @@ -272,15 +276,6 @@ namespace SabreTools.Data.Extensions cloneHeader.Url = selfHeader.Url; cloneHeader.Version = selfHeader.Version; } - else if (self is Input selfInput && clone is Input cloneInput) - { - cloneInput.Buttons = selfInput.Buttons; - cloneInput.Coins = selfInput.Coins; - cloneInput.ControlAttr = selfInput.ControlAttr; - cloneInput.Players = selfInput.Players; - cloneInput.Service = selfInput.Service; - cloneInput.Tilt = selfInput.Tilt; - } else if (self is Machine selfMachine && clone is Machine cloneMachine) { cloneMachine.Board = selfMachine.Board; @@ -332,13 +327,6 @@ namespace SabreTools.Data.Extensions cloneMachine.Url = selfMachine.Url; cloneMachine.Year = selfMachine.Year; } - else if (self is Media selfMedia && clone is Media cloneMedia) - { - cloneMedia.MD5 = selfMedia.MD5; - cloneMedia.SHA1 = selfMedia.SHA1; - cloneMedia.SHA256 = selfMedia.SHA256; - cloneMedia.SpamSum = selfMedia.SpamSum; - } else if (self is Part selfPart && clone is Part clonePart) { clonePart.Interface = selfPart.Interface; diff --git a/SabreTools.Data.Models/Metadata/Input.cs b/SabreTools.Data.Models/Metadata/Input.cs index 87072425..2e7368ee 100644 --- a/SabreTools.Data.Models/Metadata/Input.cs +++ b/SabreTools.Data.Models/Metadata/Input.cs @@ -1,10 +1,11 @@ +using System; using System.Xml.Serialization; using Newtonsoft.Json; namespace SabreTools.Data.Models.Metadata { [JsonObject("input"), XmlRoot("input")] - public class Input : DatItem + public class Input : DatItem, ICloneable, IEquatable { #region Properties @@ -12,6 +13,8 @@ namespace SabreTools.Data.Models.Metadata public long? Coins { get; set; } + public Control[]? Control { get; set; } + /// Attribute also named Control public string? ControlAttr { get; set; } @@ -25,13 +28,57 @@ namespace SabreTools.Data.Models.Metadata #endregion - #region Keys - - /// Control[] - public const string ControlKey = "control"; - - #endregion - public Input() => ItemType = ItemType.Input; + + /// + public object Clone() + { + var obj = new Input(); + + obj.Buttons = Buttons; + obj.Coins = Coins; + if (Control is not null) + obj.Control = Array.ConvertAll(Control, i => (Control)i.Clone()); + obj.ControlAttr = ControlAttr; + obj.Players = Players; + obj.Service = Service; + obj.Tilt = Tilt; + + return obj; + } + + /// + public bool Equals(Input? other) + { + // Null never matches + if (other is null) + return false; + + // Properties + if (Buttons != other.Buttons) + return false; + + if (Coins != other.Coins) + return false; + + if ((ControlAttr is null) ^ (other.ControlAttr is null)) + return false; + else if (ControlAttr is not null && !ControlAttr.Equals(other.ControlAttr, StringComparison.OrdinalIgnoreCase)) + return false; + + if (Players != other.Players) + return false; + + if (Service != other.Service) + return false; + + if (Tilt != other.Tilt) + return false; + + // Sub-items + // TODO: Figure out how to properly check arrays + + return true; + } } } diff --git a/SabreTools.Data.Models/Metadata/Media.cs b/SabreTools.Data.Models/Metadata/Media.cs index 3e6f2a86..3bf452c1 100644 --- a/SabreTools.Data.Models/Metadata/Media.cs +++ b/SabreTools.Data.Models/Metadata/Media.cs @@ -1,12 +1,12 @@ +using System; using System.Xml.Serialization; using Newtonsoft.Json; namespace SabreTools.Data.Models.Metadata { - // TODO: ICloneable - // TODO: IEquatable + // TODO: IEquatable [JsonObject("media"), XmlRoot("media")] - public class Media : DatItem + public class Media : DatItem, ICloneable { #region Properties @@ -23,5 +23,19 @@ namespace SabreTools.Data.Models.Metadata #endregion public Media() => ItemType = ItemType.Media; + + /// + public object Clone() + { + var obj = new Media(); + + obj.MD5 = MD5; + obj.Name = Name; + obj.SHA1 = SHA1; + obj.SHA256 = SHA256; + obj.SpamSum = SpamSum; + + return obj; + } } } diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs index 7dbb386b..637cd8b9 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs @@ -662,7 +662,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Buttons = 12345, Coins = 12345, - [Data.Models.Metadata.Input.ControlKey] = new Data.Models.Metadata.Control[] { CreateMetadataControl() }, + Control = [CreateMetadataControl()], ControlAttr = "controlattr", Players = 12345, Service = true, @@ -1393,7 +1393,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.True(input.Service); Assert.True(input.Tilt); - Control[]? controls = input.Read(Data.Models.Metadata.Input.ControlKey); + Control[]? controls = input.Control; Assert.NotNull(controls); Control? control = Assert.Single(controls); ValidateControl(control); diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs index 32a7b59a..3681e4a5 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs @@ -930,7 +930,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.True(input.Service); Assert.True(input.Tilt); - Data.Models.Metadata.Control[]? controls = input.ReadArray(Data.Models.Metadata.Input.ControlKey); + Data.Models.Metadata.Control[]? controls = input.Control; Assert.NotNull(controls); Data.Models.Metadata.Control? control = Assert.Single(controls); ValidateMetadataControl(control); diff --git a/SabreTools.Metadata.DatFiles.Test/FormatsTests.cs b/SabreTools.Metadata.DatFiles.Test/FormatsTests.cs index 5ea7c211..f2f9174c 100644 --- a/SabreTools.Metadata.DatFiles.Test/FormatsTests.cs +++ b/SabreTools.Metadata.DatFiles.Test/FormatsTests.cs @@ -230,7 +230,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ nameof(Data.Models.Metadata.Input.Players), - Data.Models.Metadata.Input.ControlKey, + nameof(Data.Models.Metadata.Input.Control), ])); } diff --git a/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs b/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs index 767cabe8..23fae2da 100644 --- a/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs +++ b/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs @@ -154,8 +154,8 @@ namespace SabreTools.Metadata.DatFiles.Formats case Input input: if (input.Players is null) missingFields.Add(nameof(Data.Models.Metadata.Input.Players)); - if (!input.ControlsSpecified) - missingFields.Add(Data.Models.Metadata.Input.ControlKey); + if (!input.ControlSpecified) + missingFields.Add(nameof(Data.Models.Metadata.Input.Control)); break; case DipSwitch dipswitch: diff --git a/SabreTools.Metadata.DatItems/Formats/Input.cs b/SabreTools.Metadata.DatItems/Formats/Input.cs index 3ab64efd..5885db4e 100644 --- a/SabreTools.Metadata.DatItems/Formats/Input.cs +++ b/SabreTools.Metadata.DatItems/Formats/Input.cs @@ -25,22 +25,17 @@ namespace SabreTools.Metadata.DatItems.Formats set => (_internal as Data.Models.Metadata.Input)?.Coins = value; } + public Control[]? Control { get; set; } + + [JsonIgnore] + public bool ControlSpecified => Control is not null && Control.Length > 0; + public string? ControlAttr { get => (_internal as Data.Models.Metadata.Input)?.ControlAttr; set => (_internal as Data.Models.Metadata.Input)?.ControlAttr = value; } - [JsonIgnore] - public bool ControlsSpecified - { - get - { - var controls = Read(Data.Models.Metadata.Input.ControlKey); - return controls is not null && controls.Length > 0; - } - } - /// /> public override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Input; @@ -72,12 +67,8 @@ namespace SabreTools.Metadata.DatItems.Formats public Input(Data.Models.Metadata.Input item) : base(item) { // Handle subitems - var controls = item.ReadArray(Data.Models.Metadata.Input.ControlKey); - if (controls is not null) - { - Control[] controlItems = Array.ConvertAll(controls, control => new Control(control)); - Write(Data.Models.Metadata.Input.ControlKey, controlItems); - } + if (item.Control is not null) + Control = Array.ConvertAll(item.Control, control => new Control(control)); } public Input(Data.Models.Metadata.Input item, Machine machine, Source source) : this(item) @@ -98,12 +89,8 @@ namespace SabreTools.Metadata.DatItems.Formats { var inputItem = base.GetInternalClone(); - var controls = Read(Data.Models.Metadata.Input.ControlKey); - if (controls is not null) - { - Data.Models.Metadata.Control[] controlItems = Array.ConvertAll(controls, control => control.GetInternalClone()); - inputItem[Data.Models.Metadata.Input.ControlKey] = controlItems; - } + if (Control is not null) + inputItem.Control = Array.ConvertAll(Control, control => control.GetInternalClone()); return inputItem; } diff --git a/SabreTools.Metadata/DictionaryBaseExtensions.cs b/SabreTools.Metadata/DictionaryBaseExtensions.cs index 940a913c..1b586053 100644 --- a/SabreTools.Metadata/DictionaryBaseExtensions.cs +++ b/SabreTools.Metadata/DictionaryBaseExtensions.cs @@ -238,17 +238,7 @@ namespace SabreTools.Metadata } else if (self is Input selfInput && other is Input otherInput) { - if (selfInput.Buttons != otherInput.Buttons) - return false; - if (selfInput.Coins != otherInput.Coins) - return false; - if (selfInput.ControlAttr != otherInput.ControlAttr) - return false; - if (selfInput.Players != otherInput.Players) - return false; - if (selfInput.Service != otherInput.Service) - return false; - if (selfInput.Tilt != otherInput.Tilt) + if (!selfInput.Equals(otherInput)) return false; } else if (self is Instance selfInstance && other is Instance otherInstance) diff --git a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs index 3ac33a38..b3187d51 100644 --- a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs @@ -504,7 +504,7 @@ namespace SabreTools.Serialization.CrossModel Coins = item.Coins, }; - var controls = item.Read(Data.Models.Metadata.Input.ControlKey); + var controls = item.Control; if (controls is not null && controls.Length > 0) input.Control = Array.ConvertAll(controls, ConvertFromInternalModel); diff --git a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs index 6a5a8a82..b69ce6bb 100644 --- a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs @@ -528,10 +528,7 @@ namespace SabreTools.Serialization.CrossModel }; if (item.Control is not null && item.Control.Length > 0) - { - input[Data.Models.Metadata.Input.ControlKey] - = Array.ConvertAll(item.Control, ConvertToInternalModel); - } + input.Control = Array.ConvertAll(item.Control, ConvertToInternalModel); return input; } From 4bb670ac152ddced6f07503ba848d8d548eaa502 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sat, 4 Apr 2026 01:36:42 -0400 Subject: [PATCH 067/142] Convert Port fully over to properties --- .../MetadataExtensions.cs | 6 +-- SabreTools.Data.Models/Metadata/Port.cs | 44 +++++++++++++++---- .../DatFileTests.FromMetadata.cs | 4 +- .../DatFileTests.ToMetadata.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Port.cs | 27 +++--------- .../DictionaryBaseExtensions.cs | 2 +- .../Listxml.Deserializer.cs | 2 +- .../Listxml.Serializer.cs | 5 +-- 8 files changed, 50 insertions(+), 42 deletions(-) diff --git a/SabreTools.Data.Extensions/MetadataExtensions.cs b/SabreTools.Data.Extensions/MetadataExtensions.cs index 8bd06c05..a5740844 100644 --- a/SabreTools.Data.Extensions/MetadataExtensions.cs +++ b/SabreTools.Data.Extensions/MetadataExtensions.cs @@ -194,6 +194,8 @@ namespace SabreTools.Data.Extensions return media.Clone() as Media; else if (self is Original original) return original.Clone() as Original; + else if (self is Port port) + return port.Clone() as Port; else if (self is RamOption ramOption) return ramOption.Clone() as RamOption; else if (self is Release release) @@ -331,10 +333,6 @@ namespace SabreTools.Data.Extensions { clonePart.Interface = selfPart.Interface; } - else if (self is Port selfPort && clone is Port clonePort) - { - clonePort.Tag = selfPort.Tag; - } else if (self is Rom selfRom && clone is Rom cloneRom) { cloneRom.Dispose = selfRom.Dispose; diff --git a/SabreTools.Data.Models/Metadata/Port.cs b/SabreTools.Data.Models/Metadata/Port.cs index 16c586ec..ed9540d5 100644 --- a/SabreTools.Data.Models/Metadata/Port.cs +++ b/SabreTools.Data.Models/Metadata/Port.cs @@ -1,25 +1,51 @@ +using System; using System.Xml.Serialization; using Newtonsoft.Json; namespace SabreTools.Data.Models.Metadata { [JsonObject("port"), XmlRoot("port")] - public class Port : DatItem + public class Port : DatItem, ICloneable, IEquatable { #region Properties + public Analog[]? Analog { get; set; } + public string? Tag { get; set; } #endregion - #region Keys - - /// Analog[] - [NoFilter] - public const string AnalogKey = "analog"; - - #endregion - public Port() => ItemType = ItemType.Port; + + /// + public object Clone() + { + var obj = new Port(); + + if (Analog is not null) + obj.Analog = Array.ConvertAll(Analog, i => (Analog)i.Clone()); + obj.Tag = Tag; + + return obj; + } + + /// + public bool Equals(Port? other) + { + // Null never matches + if (other is null) + return false; + + // Properties + if ((Tag is null) ^ (other.Tag is null)) + return false; + else if (Tag is not null && !Tag.Equals(other.Tag, StringComparison.OrdinalIgnoreCase)) + return false; + + // Sub-items + // TODO: Figure out how to properly check arrays + + return true; + } } } diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs index 637cd8b9..e6eb1785 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs @@ -717,7 +717,7 @@ namespace SabreTools.Metadata.DatFiles.Test { return new Data.Models.Metadata.Port { - [Data.Models.Metadata.Port.AnalogKey] = new Data.Models.Metadata.Analog[] { CreateMetadataAnalog() }, + Analog = [CreateMetadataAnalog()], Tag = "tag", }; } @@ -1441,7 +1441,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(port); Assert.Equal("tag", port.Tag); - Analog[]? dipValues = port.Read(Data.Models.Metadata.Port.AnalogKey); + Analog[]? dipValues = port.Analog; Assert.NotNull(dipValues); Analog? dipValue = Assert.Single(dipValues); ValidateAnalog(dipValue); diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs index 3681e4a5..16cbd3b4 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs @@ -985,7 +985,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(port); Assert.Equal("tag", port.Tag); - Data.Models.Metadata.Analog[]? dipValues = port.ReadArray(Data.Models.Metadata.Port.AnalogKey); + Data.Models.Metadata.Analog[]? dipValues = port.Analog; Assert.NotNull(dipValues); Data.Models.Metadata.Analog? dipValue = Assert.Single(dipValues); ValidateMetadataAnalog(dipValue); diff --git a/SabreTools.Metadata.DatItems/Formats/Port.cs b/SabreTools.Metadata.DatItems/Formats/Port.cs index eb19965f..c3c9b65c 100644 --- a/SabreTools.Metadata.DatItems/Formats/Port.cs +++ b/SabreTools.Metadata.DatItems/Formats/Port.cs @@ -13,15 +13,10 @@ namespace SabreTools.Metadata.DatItems.Formats { #region Fields + public Analog[]? Analog { get; set; } + [JsonIgnore] - public bool AnalogsSpecified - { - get - { - var analogs = Read(Data.Models.Metadata.Port.AnalogKey); - return analogs is not null && analogs.Length > 0; - } - } + public bool AnalogSpecified => Analog is not null && Analog.Length > 0; /// /> public override Data.Models.Metadata.ItemType ItemType @@ -42,12 +37,8 @@ namespace SabreTools.Metadata.DatItems.Formats public Port(Data.Models.Metadata.Port item) : base(item) { // Handle subitems - var analogs = item.ReadArray(Data.Models.Metadata.Port.AnalogKey); - if (analogs is not null) - { - Analog[] analogItems = Array.ConvertAll(analogs, analog => new Analog(analog)); - Write(Data.Models.Metadata.Port.AnalogKey, analogItems); - } + if (item.Analog is not null) + Analog = Array.ConvertAll(item.Analog, analog => new Analog(analog)); ; } public Port(Data.Models.Metadata.Port item, Machine machine, Source source) : this(item) @@ -68,12 +59,8 @@ namespace SabreTools.Metadata.DatItems.Formats { var portItem = base.GetInternalClone(); - var analogs = Read(Data.Models.Metadata.Port.AnalogKey); - if (analogs is not null) - { - Data.Models.Metadata.Analog[] analogItems = Array.ConvertAll(analogs, analog => analog.GetInternalClone()); - portItem[Data.Models.Metadata.Port.AnalogKey] = analogItems; - } + if (Analog is not null) + portItem.Analog = Array.ConvertAll(Analog, analog => analog.GetInternalClone()); return portItem; } diff --git a/SabreTools.Metadata/DictionaryBaseExtensions.cs b/SabreTools.Metadata/DictionaryBaseExtensions.cs index 1b586053..97fbcfc1 100644 --- a/SabreTools.Metadata/DictionaryBaseExtensions.cs +++ b/SabreTools.Metadata/DictionaryBaseExtensions.cs @@ -361,7 +361,7 @@ namespace SabreTools.Metadata } else if (self is Port selfPort && other is Port otherPort) { - if (selfPort.Tag != otherPort.Tag) + if (!selfPort.Equals(otherPort)) return false; } else if (self is RamOption selfRamOption && other is RamOption otherRamOption) diff --git a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs index b3187d51..63742f1a 100644 --- a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs @@ -534,7 +534,7 @@ namespace SabreTools.Serialization.CrossModel Tag = item.Tag, }; - var analogs = item.Read(Data.Models.Metadata.Port.AnalogKey); + var analogs = item.Analog; if (analogs is not null && analogs.Length > 0) port.Analog = Array.ConvertAll(analogs, ConvertFromInternalModel); diff --git a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs index b69ce6bb..7631b322 100644 --- a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs @@ -557,10 +557,7 @@ namespace SabreTools.Serialization.CrossModel }; if (item.Analog is not null && item.Analog.Length > 0) - { - port[Data.Models.Metadata.Port.AnalogKey] - = Array.ConvertAll(item.Analog, ConvertToInternalModel); - } + port.Analog = Array.ConvertAll(item.Analog, ConvertToInternalModel); return port; } From 3f3f73a56f65840aa7625145c5f10145d5c9e0c8 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sat, 4 Apr 2026 01:46:00 -0400 Subject: [PATCH 068/142] Convert Slot fully over to properties --- .../MetadataExtensions.cs | 2 + SabreTools.Data.Models/Metadata/Slot.cs | 42 +++++++++++++++---- .../DatFileTests.FromMetadata.cs | 6 +-- .../DatFileTests.ToMetadata.cs | 2 +- .../DatFile.Splitting.cs | 22 +++++----- SabreTools.Metadata.DatItems/Formats/Slot.cs | 27 ++++-------- .../DictionaryBaseExtensions.cs | 5 +++ .../Listxml.Deserializer.cs | 2 +- .../Listxml.Serializer.cs | 5 +-- 9 files changed, 64 insertions(+), 49 deletions(-) diff --git a/SabreTools.Data.Extensions/MetadataExtensions.cs b/SabreTools.Data.Extensions/MetadataExtensions.cs index a5740844..f5fb30cd 100644 --- a/SabreTools.Data.Extensions/MetadataExtensions.cs +++ b/SabreTools.Data.Extensions/MetadataExtensions.cs @@ -206,6 +206,8 @@ namespace SabreTools.Data.Extensions return serials.Clone() as Serials; else if (self is SharedFeat sharedFeat) return sharedFeat.Clone() as SharedFeat; + else if (self is Slot slot) + return slot.Clone() as Slot; else if (self is SlotOption slotOption) return slotOption.Clone() as SlotOption; else if (self is SoftwareList softwareList) diff --git a/SabreTools.Data.Models/Metadata/Slot.cs b/SabreTools.Data.Models/Metadata/Slot.cs index 5eb79f6a..605d7d42 100644 --- a/SabreTools.Data.Models/Metadata/Slot.cs +++ b/SabreTools.Data.Models/Metadata/Slot.cs @@ -1,25 +1,51 @@ +using System; using System.Xml.Serialization; using Newtonsoft.Json; namespace SabreTools.Data.Models.Metadata { [JsonObject("slot"), XmlRoot("slot")] - public class Slot : DatItem + public class Slot : DatItem, ICloneable, IEquatable { #region Properties public string? Name { get; set; } - #endregion - - #region Keys - - /// SlotOption[] - [NoFilter] - public const string SlotOptionKey = "slotoption"; + public SlotOption[]? SlotOption { get; set; } #endregion public Slot() => ItemType = ItemType.Slot; + + /// + public object Clone() + { + var obj = new Slot(); + + obj.Name = Name; + if (SlotOption is not null) + obj.SlotOption = Array.ConvertAll(SlotOption, i => (SlotOption)i.Clone()); + + return obj; + } + + /// + public bool Equals(Slot? other) + { + // Null never matches + if (other is null) + return false; + + // Properties + if ((Name is null) ^ (other.Name is null)) + return false; + else if (Name is not null && !Name.Equals(other.Name, StringComparison.OrdinalIgnoreCase)) + return false; + + // Sub-items + // TODO: Figure out how to properly check arrays + + return true; + } } } diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs index e6eb1785..ce8685b3 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs @@ -515,7 +515,7 @@ namespace SabreTools.Metadata.DatFiles.Test Default = true, DipLocation = [CreateMetadataDipLocation()], DipValue = [CreateMetadataDipValue()], - Entry = new string[] { "entry" }, + Entry = ["entry"], Mask = "mask", Name = "name", Tag = "tag", @@ -913,7 +913,7 @@ namespace SabreTools.Metadata.DatFiles.Test return new Data.Models.Metadata.Slot { Name = "name", - [Data.Models.Metadata.Slot.SlotOptionKey] = new Data.Models.Metadata.SlotOption[] { CreateMetadataSlotOption() }, + SlotOption = [CreateMetadataSlotOption()], }; } @@ -1624,7 +1624,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(slot); Assert.Equal("name", slot.Name); - SlotOption[]? slotOptions = slot.Read(Data.Models.Metadata.Slot.SlotOptionKey); + SlotOption[]? slotOptions = slot.SlotOption; Assert.NotNull(slotOptions); SlotOption? slotOption = Assert.Single(slotOptions); ValidateSlotOption(slotOption); diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs index 16cbd3b4..b8899df2 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs @@ -1168,7 +1168,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(slot); Assert.Equal("name", slot.Name); - Data.Models.Metadata.SlotOption[]? slotOptions = slot.ReadArray(Data.Models.Metadata.Slot.SlotOptionKey); + Data.Models.Metadata.SlotOption[]? slotOptions = slot.SlotOption; Assert.NotNull(slotOptions); Data.Models.Metadata.SlotOption? slotOption = Assert.Single(slotOptions); ValidateMetadataSlotOption(slotOption); diff --git a/SabreTools.Metadata.DatFiles/DatFile.Splitting.cs b/SabreTools.Metadata.DatFiles/DatFile.Splitting.cs index 2bd079c9..2f179261 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.Splitting.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.Splitting.cs @@ -677,8 +677,8 @@ namespace SabreTools.Metadata.DatFiles slotOptions.UnionWith(datItems .FindAll(i => i is Slot) .ConvertAll(i => i as Slot) - .FindAll(s => s!.SlotOptionsSpecified) - .SelectMany(s => s!.Read(Data.Models.Metadata.Slot.SlotOptionKey)!) + .FindAll(s => s!.SlotOptionSpecified) + .SelectMany(s => s!.SlotOption!) .Select(so => so.DevName)); // If we're checking device references @@ -742,8 +742,8 @@ namespace SabreTools.Metadata.DatFiles newSlotOptions.UnionWith(slotItems .FindAll(i => i is Slot) - .FindAll(s => (s as Slot)!.SlotOptionsSpecified) - .SelectMany(s => (s as Slot)!.Read(Data.Models.Metadata.Slot.SlotOptionKey)!) + .FindAll(s => (s as Slot)!.SlotOptionSpecified) + .SelectMany(s => (s as Slot)!.SlotOption!) .Select(o => o.DevName!)); // Set new machine information and add to the current machine @@ -774,8 +774,7 @@ namespace SabreTools.Metadata.DatFiles var slotOptionItem = new SlotOption { DevName = slotOption }; slotOptionItem.CopyMachineInformation(copyFrom); - var slotItem = new Slot(); - slotItem.Write(Data.Models.Metadata.Slot.SlotOptionKey, [slotOptionItem]); + var slotItem = new Slot { SlotOption = [slotOptionItem] }; slotItem.CopyMachineInformation(copyFrom); Items.AddItem(slotItem, statsOnly: false); @@ -832,8 +831,8 @@ namespace SabreTools.Metadata.DatFiles List slotOptions = items.Values .Where(i => i is Slot) .Select(i => i as Slot) - .Where(s => s!.SlotOptionsSpecified) - .SelectMany(s => s!.Read(Data.Models.Metadata.Slot.SlotOptionKey)!) + .Where(s => s!.SlotOptionSpecified) + .SelectMany(s => s!.SlotOption!) .Select(so => so.DevName) .Distinct() .ToList(); @@ -910,8 +909,8 @@ namespace SabreTools.Metadata.DatFiles // Add to the list of new slot option names newSlotOptions.UnionWith(slotItems.Values .Where(i => i is Slot) - .Where(s => (s as Slot)!.SlotOptionsSpecified) - .SelectMany(s => (s as Slot)!.Read(Data.Models.Metadata.Slot.SlotOptionKey)!) + .Where(s => (s as Slot)!.SlotOptionSpecified) + .SelectMany(s => (s as Slot)!.SlotOption!) .Select(o => o.DevName!)); // Set new machine information and add to the current machine @@ -942,8 +941,7 @@ namespace SabreTools.Metadata.DatFiles { var slotOptionItem = new SlotOption { DevName = slotOption }; - var slotItem = new Slot(); - slotItem.Write(Data.Models.Metadata.Slot.SlotOptionKey, [slotOptionItem]); + var slotItem = new Slot { SlotOption = [slotOptionItem] }; ItemsDB.AddItem(slotItem, machine.Key, source.Key); } diff --git a/SabreTools.Metadata.DatItems/Formats/Slot.cs b/SabreTools.Metadata.DatItems/Formats/Slot.cs index 57ff8143..9051d991 100644 --- a/SabreTools.Metadata.DatItems/Formats/Slot.cs +++ b/SabreTools.Metadata.DatItems/Formats/Slot.cs @@ -23,15 +23,10 @@ namespace SabreTools.Metadata.DatItems.Formats set => (_internal as Data.Models.Metadata.Slot)?.Name = value; } + public SlotOption[]? SlotOption { get; set; } + [JsonIgnore] - public bool SlotOptionsSpecified - { - get - { - var slotOptions = Read(Data.Models.Metadata.Slot.SlotOptionKey); - return slotOptions is not null && slotOptions.Length > 0; - } - } + public bool SlotOptionSpecified => SlotOption is not null && SlotOption.Length > 0; #endregion @@ -42,12 +37,8 @@ namespace SabreTools.Metadata.DatItems.Formats public Slot(Data.Models.Metadata.Slot item) : base(item) { // Handle subitems - var slotOptions = item.ReadArray(Data.Models.Metadata.Slot.SlotOptionKey); - if (slotOptions is not null) - { - SlotOption[] slotOptionItems = Array.ConvertAll(slotOptions, slotOption => new SlotOption(slotOption)); - Write(Data.Models.Metadata.Slot.SlotOptionKey, slotOptionItems); - } + if (item.SlotOption is not null) + SlotOption = Array.ConvertAll(item.SlotOption, slotOption => new SlotOption(slotOption));; } public Slot(Data.Models.Metadata.Slot item, Machine machine, Source source) : this(item) @@ -68,12 +59,8 @@ namespace SabreTools.Metadata.DatItems.Formats { var slotItem = base.GetInternalClone(); - var slotOptions = Read(Data.Models.Metadata.Slot.SlotOptionKey); - if (slotOptions is not null) - { - Data.Models.Metadata.SlotOption[] slotOptionItems = Array.ConvertAll(slotOptions, slotOption => slotOption.GetInternalClone()); - slotItem[Data.Models.Metadata.Slot.SlotOptionKey] = slotOptionItems; - } + if (SlotOption is not null) + slotItem.SlotOption = Array.ConvertAll(SlotOption, slotOption => slotOption.GetInternalClone()); return slotItem; } diff --git a/SabreTools.Metadata/DictionaryBaseExtensions.cs b/SabreTools.Metadata/DictionaryBaseExtensions.cs index 97fbcfc1..d41e4054 100644 --- a/SabreTools.Metadata/DictionaryBaseExtensions.cs +++ b/SabreTools.Metadata/DictionaryBaseExtensions.cs @@ -393,6 +393,11 @@ namespace SabreTools.Metadata if (!selfSharedFeat.Equals(otherSharedFeat)) return false; } + else if (self is Slot selfSlot && other is Slot otherSlot) + { + if (!selfSlot.Equals(otherSlot)) + return false; + } else if (self is SlotOption selfSlotOption && other is SlotOption otherSlotOption) { if (!selfSlotOption.Equals(otherSlotOption)) diff --git a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs index 63742f1a..8759cde4 100644 --- a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs @@ -597,7 +597,7 @@ namespace SabreTools.Serialization.CrossModel Name = item.Name, }; - var slotOptions = item.Read(Data.Models.Metadata.Slot.SlotOptionKey); + var slotOptions = item.SlotOption; if (slotOptions is not null && slotOptions.Length > 0) slot.SlotOption = Array.ConvertAll(slotOptions, ConvertFromInternalModel); diff --git a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs index 7631b322..a1518e64 100644 --- a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs @@ -622,10 +622,7 @@ namespace SabreTools.Serialization.CrossModel }; if (item.SlotOption is not null && item.SlotOption.Length > 0) - { - slot[Data.Models.Metadata.Slot.SlotOptionKey] - = Array.ConvertAll(item.SlotOption, ConvertToInternalModel); - } + slot.SlotOption = Array.ConvertAll(item.SlotOption, ConvertToInternalModel); return slot; } From 845a0cb99833cb222ed1c747bd5cb8222187c4a2 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sat, 4 Apr 2026 02:18:55 -0400 Subject: [PATCH 069/142] Convert Archive fully over to properties --- .../MetadataExtensions.cs | 8 +- SabreTools.Data.Models/Metadata/Archive.cs | 365 +++++++++++++----- .../DatFileTests.FromMetadata.cs | 62 +-- .../DatFileTests.ToMetadata.cs | 62 +-- .../Formats/Archive.cs | 191 +++++++++ SabreTools.Metadata.Filter/FilterObject.cs | 93 +++++ .../DictionaryBaseExtensions.cs | 2 +- 7 files changed, 629 insertions(+), 154 deletions(-) diff --git a/SabreTools.Data.Extensions/MetadataExtensions.cs b/SabreTools.Data.Extensions/MetadataExtensions.cs index f5fb30cd..d4bfdab6 100644 --- a/SabreTools.Data.Extensions/MetadataExtensions.cs +++ b/SabreTools.Data.Extensions/MetadataExtensions.cs @@ -147,6 +147,8 @@ namespace SabreTools.Data.Extensions return adjuster.Clone() as Adjuster; else if (self is Analog analog) return analog.Clone() as Analog; + else if (self is Archive archive) + return archive.Clone() as Archive; else if (self is BiosSet biosSet) return biosSet.Clone() as BiosSet; else if (self is Blank blank) @@ -224,11 +226,7 @@ namespace SabreTools.Data.Extensions return null; // Handle individual type properties - if (self is Archive selfArchive && clone is Archive cloneArchive) - { - cloneArchive.Description = selfArchive.Description; - } - else if (self is DataArea selfDataArea && clone is DataArea cloneDataArea) + if (self is DataArea selfDataArea && clone is DataArea cloneDataArea) { cloneDataArea.Endianness = selfDataArea.Endianness; cloneDataArea.Size = selfDataArea.Size; diff --git a/SabreTools.Data.Models/Metadata/Archive.cs b/SabreTools.Data.Models/Metadata/Archive.cs index 35277983..d46641c2 100644 --- a/SabreTools.Data.Models/Metadata/Archive.cs +++ b/SabreTools.Data.Models/Metadata/Archive.cs @@ -1,117 +1,310 @@ -using System.Xml.Serialization; +using System; +using System.Xml.Serialization; using Newtonsoft.Json; namespace SabreTools.Data.Models.Metadata { [JsonObject("archive"), XmlRoot("archive")] - public class Archive : DatItem + public class Archive : DatItem, ICloneable, IEquatable { #region Properties + /// No-Intro DB extension + public string? Additional { get; set; } + + /// (0|1) "0", No-Intro DB extension + public bool? Adult { get; set; } + + /// (0|1) "0", No-Intro DB extension + public bool? Alt { get; set; } + + /// (0|1) "0", No-Intro DB extension + public bool? Bios { get; set; } + + /// No-Intro DB extension + public string? Categories { get; set; } + + /// No-Intro DB extension + public string? CloneTag { get; set; } + + /// (0|1) "0", No-Intro DB extension + public bool? Complete { get; set; } + + /// (0|1) "0", No-Intro DB extension + public bool? Dat { get; set; } + + /// No-Intro DB extension + public string? DatterNote { get; set; } + /// No-Intro DB extension public string? Description { get; set; } + /// No-Intro DB extension + public string? DevStatus { get; set; } + + /// No-Intro DB extension + public string? GameId1 { get; set; } + + /// No-Intro DB extension + public string? GameId2 { get; set; } + + /// No-Intro DB extension + public string? LangChecked { get; set; } + + /// No-Intro DB extension + public string? Languages { get; set; } + + /// (0|1) "0", No-Intro DB extension + public bool? Licensed { get; set; } + + /// (0|1) "0", No-Intro DB extension + public bool? Listed { get; set; } + + /// No-Intro DB extension + public string? MergeOf { get; set; } + + /// No-Intro DB extension + public string? MergeName { get; set; } + public string? Name { get; set; } - #endregion + /// No-Intro DB extension + public string? NameAlt { get; set; } - #region Keys + /// No-Intro DB extension + public string? Number { get; set; } - /// string, No-Intro DB extension - public const string NumberKey = "number"; + /// (0|1) "0", No-Intro DB extension + public bool? Physical { get; set; } - /// string, No-Intro DB extension - public const string CloneKey = "clone"; + /// (0|1) "0", No-Intro DB extension + public bool? Pirate { get; set; } - /// string, No-Intro DB extension - public const string RegParentKey = "regparent"; + /// (0|1) "0", No-Intro DB extension + public bool? Private { get; set; } - /// string, No-Intro DB extension - public const string MergeOfKey = "mergeof"; + /// No-Intro DB extension + public string? Region { get; set; } - /// string, No-Intro DB extension - public const string MergeNameKey = "mergename"; + /// No-Intro DB extension + public string? RegParent { get; set; } - /// string, No-Intro DB extension - public const string NameAltKey = "name_alt"; + /// (0|1) "0", No-Intro DB extension + public bool? ShowLang { get; set; } - /// string, No-Intro DB extension - public const string RegionKey = "region"; + /// No-Intro DB extension + public string? Special1 { get; set; } - /// string, No-Intro DB extension - public const string LanguagesKey = "languages"; + /// No-Intro DB extension + public string? Special2 { get; set; } - /// byte, No-Intro DB extension - public const string ShowLangKey = "showlang"; + /// No-Intro DB extension + public string? StickyNote { get; set; } - /// string, No-Intro DB extension - public const string LangCheckedKey = "langchecked"; + /// No-Intro DB extension + public string? Version1 { get; set; } - /// string, No-Intro DB extension - public const string Version1Key = "version1"; - - /// string, No-Intro DB extension - public const string Version2Key = "version2"; - - /// string, No-Intro DB extension - public const string DevStatusKey = "devstatus"; - - /// string, No-Intro DB extension - public const string AdditionalKey = "additional"; - - /// string, No-Intro DB extension - public const string Special1Key = "special1"; - - /// string, No-Intro DB extension - public const string Special2Key = "special2"; - - /// byte, No-Intro DB extension - public const string AltKey = "alt"; - - /// string, No-Intro DB extension - public const string GameId1Key = "gameid1"; - - /// string, No-Intro DB extension - public const string GameId2Key = "gameid2"; - - /// byte, No-Intro DB extension - public const string BiosKey = "bios"; - - /// byte, No-Intro DB extension - public const string LicensedKey = "licensed"; - - /// byte, No-Intro DB extension - public const string PirateKey = "pirate"; - - /// byte, No-Intro DB extension - public const string PhysicalKey = "physical"; - - /// byte, No-Intro DB extension - public const string CompleteKey = "complete"; - - /// byte, No-Intro DB extension - public const string AdultKey = "adult"; - - /// byte, No-Intro DB extension - public const string DatKey = "dat"; - - /// byte, No-Intro DB extension - public const string ListedKey = "listed"; - - /// byte, No-Intro DB extension - public const string PrivateKey = "private"; - - /// string, No-Intro DB extension - public const string StickyNoteKey = "stickynote"; - - /// string, No-Intro DB extension - public const string DatterNoteKey = "datternote"; - - /// string, No-Intro DB extension - public const string CategoriesKey = "categories"; + /// No-Intro DB extension + public string? Version2 { get; set; } #endregion public Archive() => ItemType = ItemType.Archive; + + /// + public object Clone() + { + var obj = new Archive(); + + obj.Additional = Additional; + obj.Adult = Adult; + obj.Alt = Alt; + obj.Bios = Bios; + obj.Categories = Categories; + obj.CloneTag = CloneTag; + obj.Complete = Complete; + obj.Dat = Dat; + obj.DatterNote = DatterNote; + obj.Description = Description; + obj.DevStatus = DevStatus; + obj.GameId1 = GameId1; + obj.GameId2 = GameId2; + obj.LangChecked = LangChecked; + obj.Languages = Languages; + obj.Licensed = Licensed; + obj.Listed = Listed; + obj.MergeOf = MergeOf; + obj.MergeName = MergeName; + obj.Name = Name; + obj.NameAlt = NameAlt; + obj.Number = Number; + obj.Physical = Physical; + obj.Pirate = Pirate; + obj.Private = Private; + obj.Region = Region; + obj.RegParent = RegParent; + obj.ShowLang = ShowLang; + obj.Special1 = Special1; + obj.Special2 = Special2; + obj.StickyNote = StickyNote; + obj.Version1 = Version1; + obj.Version2 = Version2; + + return obj; + } + + /// + public bool Equals(Archive? other) + { + // Null never matches + if (other is null) + return false; + + // Properties + if ((Additional is null) ^ (other.Additional is null)) + return false; + else if (Additional is not null && !Additional.Equals(other.Additional, StringComparison.OrdinalIgnoreCase)) + return false; + + if (Adult != other.Adult) + return false; + + if (Alt != other.Alt) + return false; + + if (Bios != other.Bios) + return false; + + if ((Categories is null) ^ (other.Categories is null)) + return false; + else if (Categories is not null && !Categories.Equals(other.Categories, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((CloneTag is null) ^ (other.CloneTag is null)) + return false; + else if (CloneTag is not null && !CloneTag.Equals(other.CloneTag, StringComparison.OrdinalIgnoreCase)) + return false; + + if (Complete != other.Complete) + return false; + + if (Dat != other.Dat) + return false; + + if ((DatterNote is null) ^ (other.DatterNote is null)) + return false; + else if (DatterNote is not null && !DatterNote.Equals(other.DatterNote, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((Description is null) ^ (other.Description is null)) + return false; + else if (Description is not null && !Description.Equals(other.Description, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((DevStatus is null) ^ (other.DevStatus is null)) + return false; + else if (DevStatus is not null && !DevStatus.Equals(other.DevStatus, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((GameId1 is null) ^ (other.GameId1 is null)) + return false; + else if (GameId1 is not null && !GameId1.Equals(other.GameId1, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((GameId2 is null) ^ (other.GameId2 is null)) + return false; + else if (GameId2 is not null && !GameId2.Equals(other.GameId2, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((LangChecked is null) ^ (other.LangChecked is null)) + return false; + else if (LangChecked is not null && !LangChecked.Equals(other.LangChecked, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((Languages is null) ^ (other.Languages is null)) + return false; + else if (Languages is not null && !Languages.Equals(other.Languages, StringComparison.OrdinalIgnoreCase)) + return false; + + if (Licensed != other.Licensed) + return false; + + if (Listed != other.Listed) + return false; + + if ((MergeOf is null) ^ (other.MergeOf is null)) + return false; + else if (MergeOf is not null && !MergeOf.Equals(other.MergeOf, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((MergeName is null) ^ (other.MergeName is null)) + return false; + else if (MergeName is not null && !MergeName.Equals(other.MergeName, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((Name is null) ^ (other.Name is null)) + return false; + else if (Name is not null && !Name.Equals(other.Name, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((NameAlt is null) ^ (other.NameAlt is null)) + return false; + else if (NameAlt is not null && !NameAlt.Equals(other.NameAlt, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((Number is null) ^ (other.Number is null)) + return false; + else if (Number is not null && !Number.Equals(other.Number, StringComparison.OrdinalIgnoreCase)) + return false; + + if (Physical != other.Physical) + return false; + + if (Pirate != other.Pirate) + return false; + + if (Private != other.Private) + return false; + + if ((Region is null) ^ (other.Region is null)) + return false; + else if (Region is not null && !Region.Equals(other.Region, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((RegParent is null) ^ (other.RegParent is null)) + return false; + else if (RegParent is not null && !RegParent.Equals(other.RegParent, StringComparison.OrdinalIgnoreCase)) + return false; + + if (ShowLang != other.ShowLang) + return false; + + if ((Special1 is null) ^ (other.Special1 is null)) + return false; + else if (Special1 is not null && !Special1.Equals(other.Special1, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((Special2 is null) ^ (other.Special2 is null)) + return false; + else if (Special2 is not null && !Special2.Equals(other.Special2, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((StickyNote is null) ^ (other.StickyNote is null)) + return false; + else if (StickyNote is not null && !StickyNote.Equals(other.StickyNote, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((Version1 is null) ^ (other.Version1 is null)) + return false; + else if (Version1 is not null && !Version1.Equals(other.Version1, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((Version2 is null) ^ (other.Version2 is null)) + return false; + else if (Version2 is not null && !Version2.Equals(other.Version2, StringComparison.OrdinalIgnoreCase)) + return false; + + return true; + } } } diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs index ce8685b3..f71b1e8a 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs @@ -352,39 +352,39 @@ namespace SabreTools.Metadata.DatFiles.Test { return new Data.Models.Metadata.Archive { - [Data.Models.Metadata.Archive.NumberKey] = "number", - [Data.Models.Metadata.Archive.CloneKey] = "clone", - [Data.Models.Metadata.Archive.RegParentKey] = "regparent", - [Data.Models.Metadata.Archive.MergeOfKey] = "mergeof", - [Data.Models.Metadata.Archive.MergeNameKey] = "mergename", + Number = "number", + CloneTag = "clone", + RegParent = "regparent", + MergeOf = "mergeof", + MergeName = "mergename", Name = "name", - [Data.Models.Metadata.Archive.NameAltKey] = "name_alt", - [Data.Models.Metadata.Archive.RegionKey] = "region", - [Data.Models.Metadata.Archive.LanguagesKey] = "languages", - [Data.Models.Metadata.Archive.ShowLangKey] = "showlang", - [Data.Models.Metadata.Archive.LangCheckedKey] = "langchecked", - [Data.Models.Metadata.Archive.Version1Key] = "version1", - [Data.Models.Metadata.Archive.Version2Key] = "version2", - [Data.Models.Metadata.Archive.DevStatusKey] = "devstatus", - [Data.Models.Metadata.Archive.AdditionalKey] = "additional", - [Data.Models.Metadata.Archive.Special1Key] = "special1", - [Data.Models.Metadata.Archive.Special2Key] = "special2", - [Data.Models.Metadata.Archive.AltKey] = "alt", - [Data.Models.Metadata.Archive.GameId1Key] = "gameid1", - [Data.Models.Metadata.Archive.GameId2Key] = "gameid2", + NameAlt = "name_alt", + Region = "region", + Languages = "languages", + ShowLang = true, + LangChecked = "langchecked", + Version1 = "version1", + Version2 = "version2", + DevStatus = "devstatus", + Additional = "additional", + Special1 = "special1", + Special2 = "special2", + Alt = true, + GameId1 = "gameid1", + GameId2 = "gameid2", Description = "description", - [Data.Models.Metadata.Archive.BiosKey] = "bios", - [Data.Models.Metadata.Archive.LicensedKey] = "licensed", - [Data.Models.Metadata.Archive.PirateKey] = "pirate", - [Data.Models.Metadata.Archive.PhysicalKey] = "physical", - [Data.Models.Metadata.Archive.CompleteKey] = "complete", - [Data.Models.Metadata.Archive.AdultKey] = "adult", - [Data.Models.Metadata.Archive.DatKey] = "dat", - [Data.Models.Metadata.Archive.ListedKey] = "listed", - [Data.Models.Metadata.Archive.PrivateKey] = "private", - [Data.Models.Metadata.Archive.StickyNoteKey] = "stickynote", - [Data.Models.Metadata.Archive.DatterNoteKey] = "datternote", - [Data.Models.Metadata.Archive.CategoriesKey] = "categories", + Bios = true, + Licensed = true, + Pirate = true, + Physical = true, + Complete = true, + Adult = true, + Dat = true, + Listed = true, + Private = true, + StickyNote = "stickynote", + DatterNote = "datternote", + Categories = "categories", }; } diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs index b8899df2..22f60775 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs @@ -635,39 +635,39 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateMetadataArchive(Data.Models.Metadata.Archive? archive) { Assert.NotNull(archive); - Assert.Equal("number", archive.ReadString(Data.Models.Metadata.Archive.NumberKey)); - Assert.Equal("clone", archive.ReadString(Data.Models.Metadata.Archive.CloneKey)); - Assert.Equal("regparent", archive.ReadString(Data.Models.Metadata.Archive.RegParentKey)); - Assert.Equal("mergeof", archive.ReadString(Data.Models.Metadata.Archive.MergeOfKey)); - Assert.Equal("mergename", archive.ReadString(Data.Models.Metadata.Archive.MergeNameKey)); + Assert.Equal("number", archive.Number); + Assert.Equal("clone", archive.CloneTag); + Assert.Equal("regparent", archive.RegParent); + Assert.Equal("mergeof", archive.MergeOf); + Assert.Equal("mergename", archive.MergeName); Assert.Equal("name", archive.Name); - Assert.Equal("name_alt", archive.ReadString(Data.Models.Metadata.Archive.NameAltKey)); - Assert.Equal("region", archive.ReadString(Data.Models.Metadata.Archive.RegionKey)); - Assert.Equal("languages", archive.ReadString(Data.Models.Metadata.Archive.LanguagesKey)); - Assert.Equal("showlang", archive.ReadString(Data.Models.Metadata.Archive.ShowLangKey)); - Assert.Equal("langchecked", archive.ReadString(Data.Models.Metadata.Archive.LangCheckedKey)); - Assert.Equal("version1", archive.ReadString(Data.Models.Metadata.Archive.Version1Key)); - Assert.Equal("version2", archive.ReadString(Data.Models.Metadata.Archive.Version2Key)); - Assert.Equal("devstatus", archive.ReadString(Data.Models.Metadata.Archive.DevStatusKey)); - Assert.Equal("additional", archive.ReadString(Data.Models.Metadata.Archive.AdditionalKey)); - Assert.Equal("special1", archive.ReadString(Data.Models.Metadata.Archive.Special1Key)); - Assert.Equal("special2", archive.ReadString(Data.Models.Metadata.Archive.Special2Key)); - Assert.Equal("alt", archive.ReadString(Data.Models.Metadata.Archive.AltKey)); - Assert.Equal("gameid1", archive.ReadString(Data.Models.Metadata.Archive.GameId1Key)); - Assert.Equal("gameid2", archive.ReadString(Data.Models.Metadata.Archive.GameId2Key)); + Assert.Equal("name_alt", archive.NameAlt); + Assert.Equal("region", archive.Region); + Assert.Equal("languages", archive.Languages); + Assert.Equal(true, archive.ShowLang); + Assert.Equal("langchecked", archive.LangChecked); + Assert.Equal("version1", archive.Version1); + Assert.Equal("version2", archive.Version2); + Assert.Equal("devstatus", archive.DevStatus); + Assert.Equal("additional", archive.Additional); + Assert.Equal("special1", archive.Special1); + Assert.Equal("special2", archive.Special2); + Assert.Equal(true, archive.Alt); + Assert.Equal("gameid1", archive.GameId1); + Assert.Equal("gameid2", archive.GameId2); Assert.Equal("description", archive.Description); - Assert.Equal("bios", archive.ReadString(Data.Models.Metadata.Archive.BiosKey)); - Assert.Equal("licensed", archive.ReadString(Data.Models.Metadata.Archive.LicensedKey)); - Assert.Equal("pirate", archive.ReadString(Data.Models.Metadata.Archive.PirateKey)); - Assert.Equal("physical", archive.ReadString(Data.Models.Metadata.Archive.PhysicalKey)); - Assert.Equal("complete", archive.ReadString(Data.Models.Metadata.Archive.CompleteKey)); - Assert.Equal("adult", archive.ReadString(Data.Models.Metadata.Archive.AdultKey)); - Assert.Equal("dat", archive.ReadString(Data.Models.Metadata.Archive.DatKey)); - Assert.Equal("listed", archive.ReadString(Data.Models.Metadata.Archive.ListedKey)); - Assert.Equal("private", archive.ReadString(Data.Models.Metadata.Archive.PrivateKey)); - Assert.Equal("stickynote", archive.ReadString(Data.Models.Metadata.Archive.StickyNoteKey)); - Assert.Equal("datternote", archive.ReadString(Data.Models.Metadata.Archive.DatterNoteKey)); - Assert.Equal("categories", archive.ReadString(Data.Models.Metadata.Archive.CategoriesKey)); + Assert.Equal(true, archive.Bios); + Assert.Equal(true, archive.Licensed); + Assert.Equal(true, archive.Pirate); + Assert.Equal(true, archive.Physical); + Assert.Equal(true, archive.Complete); + Assert.Equal(true, archive.Adult); + Assert.Equal(true, archive.Dat); + Assert.Equal(true, archive.Listed); + Assert.Equal(true, archive.Private); + Assert.Equal("stickynote", archive.StickyNote); + Assert.Equal("datternote", archive.DatterNote); + Assert.Equal("categories", archive.Categories); } private static void ValidateMetadataBiosSet(Data.Models.Metadata.BiosSet? biosSet) diff --git a/SabreTools.Metadata.DatItems/Formats/Archive.cs b/SabreTools.Metadata.DatItems/Formats/Archive.cs index 4a266c33..3b6348e1 100644 --- a/SabreTools.Metadata.DatItems/Formats/Archive.cs +++ b/SabreTools.Metadata.DatItems/Formats/Archive.cs @@ -12,16 +12,207 @@ namespace SabreTools.Metadata.DatItems.Formats { #region Fields + public string? Additional + { + get => (_internal as Data.Models.Metadata.Archive)?.Additional; + set => (_internal as Data.Models.Metadata.Archive)?.Additional = value; + } + + public bool? Adult + { + get => (_internal as Data.Models.Metadata.Archive)?.Adult; + set => (_internal as Data.Models.Metadata.Archive)?.Adult = value; + } + + public bool? Alt + { + get => (_internal as Data.Models.Metadata.Archive)?.Alt; + set => (_internal as Data.Models.Metadata.Archive)?.Alt = value; + } + + public bool? Bios + { + get => (_internal as Data.Models.Metadata.Archive)?.Bios; + set => (_internal as Data.Models.Metadata.Archive)?.Bios = value; + } + + public string? Categories + { + get => (_internal as Data.Models.Metadata.Archive)?.Categories; + set => (_internal as Data.Models.Metadata.Archive)?.Categories = value; + } + + public string? CloneTag + { + get => (_internal as Data.Models.Metadata.Archive)?.CloneTag; + set => (_internal as Data.Models.Metadata.Archive)?.CloneTag = value; + } + + public bool? Complete + { + get => (_internal as Data.Models.Metadata.Archive)?.Complete; + set => (_internal as Data.Models.Metadata.Archive)?.Complete = value; + } + + public bool? Dat + { + get => (_internal as Data.Models.Metadata.Archive)?.Dat; + set => (_internal as Data.Models.Metadata.Archive)?.Dat = value; + } + + public string? DatterNote + { + get => (_internal as Data.Models.Metadata.Archive)?.DatterNote; + set => (_internal as Data.Models.Metadata.Archive)?.DatterNote = value; + } + public string? Description + { + get => (_internal as Data.Models.Metadata.Archive)?.Description; + set => (_internal as Data.Models.Metadata.Archive)?.Description = value; + } + + public string? DevStatus + { + get => (_internal as Data.Models.Metadata.Archive)?.DevStatus; + set => (_internal as Data.Models.Metadata.Archive)?.DevStatus = value; + } + + public string? GameId1 + { + get => (_internal as Data.Models.Metadata.Archive)?.GameId1; + set => (_internal as Data.Models.Metadata.Archive)?.GameId1 = value; + } + + public string? GameId2 + { + get => (_internal as Data.Models.Metadata.Archive)?.GameId2; + set => (_internal as Data.Models.Metadata.Archive)?.GameId2 = value; + } + /// /> public override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Archive; + public string? LangChecked + { + get => (_internal as Data.Models.Metadata.Archive)?.LangChecked; + set => (_internal as Data.Models.Metadata.Archive)?.LangChecked = value; + } + + public string? Languages + { + get => (_internal as Data.Models.Metadata.Archive)?.Languages; + set => (_internal as Data.Models.Metadata.Archive)?.Languages = value; + } + + public bool? Licensed + { + get => (_internal as Data.Models.Metadata.Archive)?.Licensed; + set => (_internal as Data.Models.Metadata.Archive)?.Licensed = value; + } + + public bool? Listed + { + get => (_internal as Data.Models.Metadata.Archive)?.Listed; + set => (_internal as Data.Models.Metadata.Archive)?.Listed = value; + } + + public string? MergeOf + { + get => (_internal as Data.Models.Metadata.Archive)?.MergeOf; + set => (_internal as Data.Models.Metadata.Archive)?.MergeOf = value; + } + + public string? MergeName + { + get => (_internal as Data.Models.Metadata.Archive)?.MergeName; + set => (_internal as Data.Models.Metadata.Archive)?.MergeName = value; + } + public string? Name { get => (_internal as Data.Models.Metadata.Archive)?.Name; set => (_internal as Data.Models.Metadata.Archive)?.Name = value; } + public string? NameAlt + { + get => (_internal as Data.Models.Metadata.Archive)?.NameAlt; + set => (_internal as Data.Models.Metadata.Archive)?.NameAlt = value; + } + + public string? Number + { + get => (_internal as Data.Models.Metadata.Archive)?.Number; + set => (_internal as Data.Models.Metadata.Archive)?.Number = value; + } + + public bool? Physical + { + get => (_internal as Data.Models.Metadata.Archive)?.Physical; + set => (_internal as Data.Models.Metadata.Archive)?.Physical = value; + } + + public bool? Pirate + { + get => (_internal as Data.Models.Metadata.Archive)?.Pirate; + set => (_internal as Data.Models.Metadata.Archive)?.Pirate = value; + } + + public bool? Private + { + get => (_internal as Data.Models.Metadata.Archive)?.Private; + set => (_internal as Data.Models.Metadata.Archive)?.Private = value; + } + + public string? Region + { + get => (_internal as Data.Models.Metadata.Archive)?.Region; + set => (_internal as Data.Models.Metadata.Archive)?.Region = value; + } + + public string? RegParent + { + get => (_internal as Data.Models.Metadata.Archive)?.RegParent; + set => (_internal as Data.Models.Metadata.Archive)?.RegParent = value; + } + + public bool? ShowLang + { + get => (_internal as Data.Models.Metadata.Archive)?.ShowLang; + set => (_internal as Data.Models.Metadata.Archive)?.ShowLang = value; + } + + public string? Special1 + { + get => (_internal as Data.Models.Metadata.Archive)?.Special1; + set => (_internal as Data.Models.Metadata.Archive)?.Special1 = value; + } + + public string? Special2 + { + get => (_internal as Data.Models.Metadata.Archive)?.Special2; + set => (_internal as Data.Models.Metadata.Archive)?.Special2 = value; + } + + public string? StickyNote + { + get => (_internal as Data.Models.Metadata.Archive)?.StickyNote; + set => (_internal as Data.Models.Metadata.Archive)?.StickyNote = value; + } + + public string? Version1 + { + get => (_internal as Data.Models.Metadata.Archive)?.Version1; + set => (_internal as Data.Models.Metadata.Archive)?.Version1 = value; + } + + public string? Version2 + { + get => (_internal as Data.Models.Metadata.Archive)?.Version2; + set => (_internal as Data.Models.Metadata.Archive)?.Version2 = value; + } + #endregion #region Constructors diff --git a/SabreTools.Metadata.Filter/FilterObject.cs b/SabreTools.Metadata.Filter/FilterObject.cs index e1cdb2d7..77945415 100644 --- a/SabreTools.Metadata.Filter/FilterObject.cs +++ b/SabreTools.Metadata.Filter/FilterObject.cs @@ -356,9 +356,102 @@ namespace SabreTools.Metadata.Filter checkValue = item.Mask; return true; + case Archive item when fieldName == "additional": + checkValue = item.Additional; + return true; + case Archive item when fieldName == "adult": + checkValue = item.Adult is null ? null : (item.Adult == true ? "1" : "0"); + return true; + case Archive item when fieldName == "alt": + checkValue = item.Alt is null ? null : (item.Alt == true ? "1" : "0"); + return true; + case Archive item when fieldName == "bios": + checkValue = item.Bios is null ? null : (item.Bios == true ? "1" : "0"); + return true; + case Archive item when fieldName == "categories": + checkValue = item.Categories; + return true; + case Archive item when fieldName == "clone": + checkValue = item.CloneTag; + return true; + case Archive item when fieldName == "complete": + checkValue = item.Complete is null ? null : (item.Complete == true ? "1" : "0"); + return true; + case Archive item when fieldName == "dat": + checkValue = item.Dat is null ? null : (item.Dat == true ? "1" : "0"); + return true; + case Archive item when fieldName == "datternote": + checkValue = item.DatterNote; + return true; case Archive item when fieldName == "description": checkValue = item.Description; return true; + case Archive item when fieldName == "devstatus": + checkValue = item.DevStatus; + return true; + case Archive item when fieldName == "gameid1": + checkValue = item.GameId1; + return true; + case Archive item when fieldName == "gameid2": + checkValue = item.GameId2; + return true; + case Archive item when fieldName == "langchecked": + checkValue = item.LangChecked; + return true; + case Archive item when fieldName == "languages": + checkValue = item.Languages; + return true; + case Archive item when fieldName == "licensed": + checkValue = item.Licensed is null ? null : (item.Licensed == true ? "1" : "0"); + return true; + case Archive item when fieldName == "listed": + checkValue = item.Listed is null ? null : (item.Listed == true ? "1" : "0"); + return true; + case Archive item when fieldName == "mergeof": + checkValue = item.MergeOf; + return true; + case Archive item when fieldName == "mergename": + checkValue = item.MergeName; + return true; + case Archive item when fieldName == "namealt": + checkValue = item.NameAlt; + return true; + case Archive item when fieldName == "number": + checkValue = item.Number; + return true; + case Archive item when fieldName == "physical": + checkValue = item.Physical is null ? null : (item.Physical == true ? "1" : "0"); + return true; + case Archive item when fieldName == "pirate": + checkValue = item.Pirate is null ? null : (item.Pirate == true ? "1" : "0"); + return true; + case Archive item when fieldName == "private": + checkValue = item.Private is null ? null : (item.Private == true ? "1" : "0"); + return true; + case Archive item when fieldName == "region": + checkValue = item.Region; + return true; + case Archive item when fieldName == "regparent": + checkValue = item.RegParent; + return true; + case Archive item when fieldName == "showlang": + checkValue = item.ShowLang is null ? null : (item.ShowLang == true ? "1" : "0"); + return true; + case Archive item when fieldName == "special1": + checkValue = item.Special1; + return true; + case Archive item when fieldName == "special2": + checkValue = item.Special2; + return true; + case Archive item when fieldName == "stickynote": + checkValue = item.StickyNote; + return true; + case Archive item when fieldName == "version1": + checkValue = item.Version1; + return true; + case Archive item when fieldName == "version2": + checkValue = item.Version2; + return true; case BiosSet item when fieldName == "default": checkValue = item.Default.FromYesNo(); diff --git a/SabreTools.Metadata/DictionaryBaseExtensions.cs b/SabreTools.Metadata/DictionaryBaseExtensions.cs index d41e4054..865469c7 100644 --- a/SabreTools.Metadata/DictionaryBaseExtensions.cs +++ b/SabreTools.Metadata/DictionaryBaseExtensions.cs @@ -74,7 +74,7 @@ namespace SabreTools.Metadata } else if (self is Archive selfArchive && other is Archive otherArchive) { - if (selfArchive.Description != otherArchive.Description) + if (!selfArchive.Equals(otherArchive)) return false; } else if (self is BiosSet selfBiosSet && other is BiosSet otherBiosSet) From 872fdc2a10aeb23da070b1463d4658a562abf5ad Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sat, 4 Apr 2026 10:25:49 -0400 Subject: [PATCH 070/142] Reduce redirection for Name setters and getters --- SabreTools.Metadata.DatItems/DatItem.cs | 5 ++--- SabreTools.Metadata.DatItems/Formats/Adjuster.cs | 10 ++++++++++ SabreTools.Metadata.DatItems/Formats/Analog.cs | 10 ++++++++++ SabreTools.Metadata.DatItems/Formats/Archive.cs | 10 ++++++++++ SabreTools.Metadata.DatItems/Formats/BiosSet.cs | 10 ++++++++++ SabreTools.Metadata.DatItems/Formats/Blank.cs | 10 ++++++++++ SabreTools.Metadata.DatItems/Formats/Chip.cs | 10 ++++++++++ SabreTools.Metadata.DatItems/Formats/Condition.cs | 10 ++++++++++ SabreTools.Metadata.DatItems/Formats/ConfLocation.cs | 10 ++++++++++ SabreTools.Metadata.DatItems/Formats/ConfSetting.cs | 10 ++++++++++ .../Formats/Configuration.cs | 10 ++++++++++ SabreTools.Metadata.DatItems/Formats/Control.cs | 10 ++++++++++ SabreTools.Metadata.DatItems/Formats/DataArea.cs | 10 ++++++++++ SabreTools.Metadata.DatItems/Formats/Device.cs | 10 ++++++++++ SabreTools.Metadata.DatItems/Formats/DeviceRef.cs | 10 ++++++++++ SabreTools.Metadata.DatItems/Formats/DipLocation.cs | 10 ++++++++++ SabreTools.Metadata.DatItems/Formats/DipSwitch.cs | 10 ++++++++++ SabreTools.Metadata.DatItems/Formats/DipValue.cs | 10 ++++++++++ SabreTools.Metadata.DatItems/Formats/Disk.cs | 10 ++++++++++ SabreTools.Metadata.DatItems/Formats/DiskArea.cs | 10 ++++++++++ SabreTools.Metadata.DatItems/Formats/Display.cs | 10 ++++++++++ SabreTools.Metadata.DatItems/Formats/Driver.cs | 10 ++++++++++ SabreTools.Metadata.DatItems/Formats/Extension.cs | 10 ++++++++++ SabreTools.Metadata.DatItems/Formats/Feature.cs | 10 ++++++++++ SabreTools.Metadata.DatItems/Formats/File.cs | 11 +++++++++++ SabreTools.Metadata.DatItems/Formats/Info.cs | 10 ++++++++++ SabreTools.Metadata.DatItems/Formats/Input.cs | 10 ++++++++++ SabreTools.Metadata.DatItems/Formats/Instance.cs | 10 ++++++++++ SabreTools.Metadata.DatItems/Formats/Media.cs | 10 ++++++++++ SabreTools.Metadata.DatItems/Formats/Part.cs | 10 ++++++++++ SabreTools.Metadata.DatItems/Formats/PartFeature.cs | 10 ++++++++++ SabreTools.Metadata.DatItems/Formats/Port.cs | 10 ++++++++++ SabreTools.Metadata.DatItems/Formats/RamOption.cs | 10 ++++++++++ SabreTools.Metadata.DatItems/Formats/Release.cs | 10 ++++++++++ .../Formats/ReleaseDetails.cs | 10 ++++++++++ SabreTools.Metadata.DatItems/Formats/Rom.cs | 10 ++++++++++ SabreTools.Metadata.DatItems/Formats/Sample.cs | 10 ++++++++++ SabreTools.Metadata.DatItems/Formats/Serials.cs | 10 ++++++++++ SabreTools.Metadata.DatItems/Formats/SharedFeat.cs | 10 ++++++++++ SabreTools.Metadata.DatItems/Formats/Slot.cs | 12 +++++++++++- SabreTools.Metadata.DatItems/Formats/SlotOption.cs | 10 ++++++++++ SabreTools.Metadata.DatItems/Formats/SoftwareList.cs | 10 ++++++++++ SabreTools.Metadata.DatItems/Formats/Sound.cs | 10 ++++++++++ .../Formats/SourceDetails.cs | 10 ++++++++++ 44 files changed, 434 insertions(+), 4 deletions(-) diff --git a/SabreTools.Metadata.DatItems/DatItem.cs b/SabreTools.Metadata.DatItems/DatItem.cs index 604e2dec..dd1daa01 100644 --- a/SabreTools.Metadata.DatItems/DatItem.cs +++ b/SabreTools.Metadata.DatItems/DatItem.cs @@ -1,7 +1,6 @@ using System; using System.Xml.Serialization; using Newtonsoft.Json; -using SabreTools.Data.Extensions; using SabreTools.Hashing; using SabreTools.Logging; using SabreTools.Metadata.DatItems.Formats; @@ -101,13 +100,13 @@ namespace SabreTools.Metadata.DatItems /// Gets the name to use for a DatItem /// /// Name if available, null otherwise - public virtual string? GetName() => _internal.GetName(); + public abstract string? GetName(); /// /// Sets the name to use for a DatItem /// /// Name to set for the item - public virtual void SetName(string? name) => _internal.SetName(name); + public abstract void SetName(string? name); #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/Adjuster.cs b/SabreTools.Metadata.DatItems/Formats/Adjuster.cs index cc030b36..26200da3 100644 --- a/SabreTools.Metadata.DatItems/Formats/Adjuster.cs +++ b/SabreTools.Metadata.DatItems/Formats/Adjuster.cs @@ -54,6 +54,16 @@ namespace SabreTools.Metadata.DatItems.Formats #endregion + #region Accessors + + /// + public override string? GetName() => Name; + + /// + public override void SetName(string? name) => Name = name; + + #endregion + #region Cloning Methods /// diff --git a/SabreTools.Metadata.DatItems/Formats/Analog.cs b/SabreTools.Metadata.DatItems/Formats/Analog.cs index d4099c0f..15828727 100644 --- a/SabreTools.Metadata.DatItems/Formats/Analog.cs +++ b/SabreTools.Metadata.DatItems/Formats/Analog.cs @@ -38,6 +38,16 @@ namespace SabreTools.Metadata.DatItems.Formats #endregion + #region Accessors + + /// + public override string? GetName() => null; + + /// + public override void SetName(string? name) { } + + #endregion + #region Cloning Methods /// diff --git a/SabreTools.Metadata.DatItems/Formats/Archive.cs b/SabreTools.Metadata.DatItems/Formats/Archive.cs index 3b6348e1..b1a32822 100644 --- a/SabreTools.Metadata.DatItems/Formats/Archive.cs +++ b/SabreTools.Metadata.DatItems/Formats/Archive.cs @@ -229,6 +229,16 @@ namespace SabreTools.Metadata.DatItems.Formats #endregion + #region Accessors + + /// + public override string? GetName() => Name; + + /// + public override void SetName(string? name) => Name = name; + + #endregion + #region Cloning Methods /// diff --git a/SabreTools.Metadata.DatItems/Formats/BiosSet.cs b/SabreTools.Metadata.DatItems/Formats/BiosSet.cs index 6d636f81..6186aabc 100644 --- a/SabreTools.Metadata.DatItems/Formats/BiosSet.cs +++ b/SabreTools.Metadata.DatItems/Formats/BiosSet.cs @@ -50,6 +50,16 @@ namespace SabreTools.Metadata.DatItems.Formats #endregion + #region Accessors + + /// + public override string? GetName() => Name; + + /// + public override void SetName(string? name) => Name = name; + + #endregion + #region Cloning Methods /// diff --git a/SabreTools.Metadata.DatItems/Formats/Blank.cs b/SabreTools.Metadata.DatItems/Formats/Blank.cs index 7c16d36b..ff1254f3 100644 --- a/SabreTools.Metadata.DatItems/Formats/Blank.cs +++ b/SabreTools.Metadata.DatItems/Formats/Blank.cs @@ -32,6 +32,16 @@ namespace SabreTools.Metadata.DatItems.Formats #endregion + #region Accessors + + /// + public override string? GetName() => null; + + /// + public override void SetName(string? name) { } + + #endregion + #region Cloning Methods /// diff --git a/SabreTools.Metadata.DatItems/Formats/Chip.cs b/SabreTools.Metadata.DatItems/Formats/Chip.cs index d0ae1be7..addc3037 100644 --- a/SabreTools.Metadata.DatItems/Formats/Chip.cs +++ b/SabreTools.Metadata.DatItems/Formats/Chip.cs @@ -68,6 +68,16 @@ namespace SabreTools.Metadata.DatItems.Formats #endregion + #region Accessors + + /// + public override string? GetName() => Name; + + /// + public override void SetName(string? name) => Name = name; + + #endregion + #region Cloning Methods /// diff --git a/SabreTools.Metadata.DatItems/Formats/Condition.cs b/SabreTools.Metadata.DatItems/Formats/Condition.cs index 3ef6035d..83b850ef 100644 --- a/SabreTools.Metadata.DatItems/Formats/Condition.cs +++ b/SabreTools.Metadata.DatItems/Formats/Condition.cs @@ -56,6 +56,16 @@ namespace SabreTools.Metadata.DatItems.Formats #endregion + #region Accessors + + /// + public override string? GetName() => null; + + /// + public override void SetName(string? name) { } + + #endregion + #region Cloning Methods /// diff --git a/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs b/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs index c7e5ec7f..06068274 100644 --- a/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs +++ b/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs @@ -50,6 +50,16 @@ namespace SabreTools.Metadata.DatItems.Formats #endregion + #region Accessors + + /// + public override string? GetName() => Name; + + /// + public override void SetName(string? name) => Name = name; + + #endregion + #region Cloning Methods /// diff --git a/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs b/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs index 93b36953..ef585006 100644 --- a/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs +++ b/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs @@ -60,6 +60,16 @@ namespace SabreTools.Metadata.DatItems.Formats #endregion + #region Accessors + + /// + public override string? GetName() => Name; + + /// + public override void SetName(string? name) => Name = name; + + #endregion + #region Cloning Methods /// diff --git a/SabreTools.Metadata.DatItems/Formats/Configuration.cs b/SabreTools.Metadata.DatItems/Formats/Configuration.cs index 85205f1b..b6907dbd 100644 --- a/SabreTools.Metadata.DatItems/Formats/Configuration.cs +++ b/SabreTools.Metadata.DatItems/Formats/Configuration.cs @@ -77,6 +77,16 @@ namespace SabreTools.Metadata.DatItems.Formats #endregion + #region Accessors + + /// + public override string? GetName() => Name; + + /// + public override void SetName(string? name) => Name = name; + + #endregion + #region Cloning Methods /// diff --git a/SabreTools.Metadata.DatItems/Formats/Control.cs b/SabreTools.Metadata.DatItems/Formats/Control.cs index 91af5964..4eebafc5 100644 --- a/SabreTools.Metadata.DatItems/Formats/Control.cs +++ b/SabreTools.Metadata.DatItems/Formats/Control.cs @@ -104,6 +104,16 @@ namespace SabreTools.Metadata.DatItems.Formats #endregion + #region Accessors + + /// + public override string? GetName() => null; + + /// + public override void SetName(string? name) { } + + #endregion + #region Cloning Methods /// diff --git a/SabreTools.Metadata.DatItems/Formats/DataArea.cs b/SabreTools.Metadata.DatItems/Formats/DataArea.cs index f29196ae..50af1f05 100644 --- a/SabreTools.Metadata.DatItems/Formats/DataArea.cs +++ b/SabreTools.Metadata.DatItems/Formats/DataArea.cs @@ -57,6 +57,16 @@ namespace SabreTools.Metadata.DatItems.Formats #endregion + #region Accessors + + /// + public override string? GetName() => Name; + + /// + public override void SetName(string? name) => Name = name; + + #endregion + #region Cloning Methods /// diff --git a/SabreTools.Metadata.DatItems/Formats/Device.cs b/SabreTools.Metadata.DatItems/Formats/Device.cs index 5acefc14..4f79c740 100644 --- a/SabreTools.Metadata.DatItems/Formats/Device.cs +++ b/SabreTools.Metadata.DatItems/Formats/Device.cs @@ -81,6 +81,16 @@ namespace SabreTools.Metadata.DatItems.Formats #endregion + #region Accessors + + /// + public override string? GetName() => null; + + /// + public override void SetName(string? name) { } + + #endregion + #region Cloning Methods /// diff --git a/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs b/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs index 9e3b1ad8..24da2765 100644 --- a/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs +++ b/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs @@ -38,6 +38,16 @@ namespace SabreTools.Metadata.DatItems.Formats #endregion + #region Accessors + + /// + public override string? GetName() => Name; + + /// + public override void SetName(string? name) => Name = name; + + #endregion + #region Cloning Methods /// diff --git a/SabreTools.Metadata.DatItems/Formats/DipLocation.cs b/SabreTools.Metadata.DatItems/Formats/DipLocation.cs index ee5f1e00..9ea4b4c4 100644 --- a/SabreTools.Metadata.DatItems/Formats/DipLocation.cs +++ b/SabreTools.Metadata.DatItems/Formats/DipLocation.cs @@ -50,6 +50,16 @@ namespace SabreTools.Metadata.DatItems.Formats #endregion + #region Accessors + + /// + public override string? GetName() => Name; + + /// + public override void SetName(string? name) => Name = name; + + #endregion + #region Cloning Methods /// diff --git a/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs b/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs index 6f4ad5b8..72a398fa 100644 --- a/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs +++ b/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs @@ -104,6 +104,16 @@ namespace SabreTools.Metadata.DatItems.Formats #endregion + #region Accessors + + /// + public override string? GetName() => Name; + + /// + public override void SetName(string? name) => Name = name; + + #endregion + #region Cloning Methods /// diff --git a/SabreTools.Metadata.DatItems/Formats/DipValue.cs b/SabreTools.Metadata.DatItems/Formats/DipValue.cs index 916f1385..2c0a331b 100644 --- a/SabreTools.Metadata.DatItems/Formats/DipValue.cs +++ b/SabreTools.Metadata.DatItems/Formats/DipValue.cs @@ -60,6 +60,16 @@ namespace SabreTools.Metadata.DatItems.Formats #endregion + #region Accessors + + /// + public override string? GetName() => Name; + + /// + public override void SetName(string? name) => Name = name; + + #endregion + #region Cloning Methods /// diff --git a/SabreTools.Metadata.DatItems/Formats/Disk.cs b/SabreTools.Metadata.DatItems/Formats/Disk.cs index fb7caf1d..a85914a4 100644 --- a/SabreTools.Metadata.DatItems/Formats/Disk.cs +++ b/SabreTools.Metadata.DatItems/Formats/Disk.cs @@ -126,6 +126,16 @@ namespace SabreTools.Metadata.DatItems.Formats #endregion + #region Accessors + + /// + public override string? GetName() => Name; + + /// + public override void SetName(string? name) => Name = name; + + #endregion + #region Cloning Methods /// diff --git a/SabreTools.Metadata.DatItems/Formats/DiskArea.cs b/SabreTools.Metadata.DatItems/Formats/DiskArea.cs index bf556af4..d02ccb47 100644 --- a/SabreTools.Metadata.DatItems/Formats/DiskArea.cs +++ b/SabreTools.Metadata.DatItems/Formats/DiskArea.cs @@ -39,6 +39,16 @@ namespace SabreTools.Metadata.DatItems.Formats #endregion + #region Accessors + + /// + public override string? GetName() => Name; + + /// + public override void SetName(string? name) => Name = name; + + #endregion + #region Cloning Methods /// diff --git a/SabreTools.Metadata.DatItems/Formats/Display.cs b/SabreTools.Metadata.DatItems/Formats/Display.cs index 1516ee25..7c849e5e 100644 --- a/SabreTools.Metadata.DatItems/Formats/Display.cs +++ b/SabreTools.Metadata.DatItems/Formats/Display.cs @@ -145,6 +145,16 @@ namespace SabreTools.Metadata.DatItems.Formats #endregion + #region Accessors + + /// + public override string? GetName() => null; + + /// + public override void SetName(string? name) { } + + #endregion + #region Cloning Methods /// diff --git a/SabreTools.Metadata.DatItems/Formats/Driver.cs b/SabreTools.Metadata.DatItems/Formats/Driver.cs index 57fc77bb..ff5ff018 100644 --- a/SabreTools.Metadata.DatItems/Formats/Driver.cs +++ b/SabreTools.Metadata.DatItems/Formats/Driver.cs @@ -104,6 +104,16 @@ namespace SabreTools.Metadata.DatItems.Formats #endregion + #region Accessors + + /// + public override string? GetName() => null; + + /// + public override void SetName(string? name) { } + + #endregion + #region Cloning Methods /// diff --git a/SabreTools.Metadata.DatItems/Formats/Extension.cs b/SabreTools.Metadata.DatItems/Formats/Extension.cs index 718ad072..4762f4cc 100644 --- a/SabreTools.Metadata.DatItems/Formats/Extension.cs +++ b/SabreTools.Metadata.DatItems/Formats/Extension.cs @@ -38,6 +38,16 @@ namespace SabreTools.Metadata.DatItems.Formats #endregion + #region Accessors + + /// + public override string? GetName() => Name; + + /// + public override void SetName(string? name) => Name = name; + + #endregion + #region Cloning Methods /// diff --git a/SabreTools.Metadata.DatItems/Formats/Feature.cs b/SabreTools.Metadata.DatItems/Formats/Feature.cs index 15d0e2da..ad0d4913 100644 --- a/SabreTools.Metadata.DatItems/Formats/Feature.cs +++ b/SabreTools.Metadata.DatItems/Formats/Feature.cs @@ -62,6 +62,16 @@ namespace SabreTools.Metadata.DatItems.Formats #endregion + #region Accessors + + /// + public override string? GetName() => Name; + + /// + public override void SetName(string? name) => Name = name; + + #endregion + #region Cloning Methods /// diff --git a/SabreTools.Metadata.DatItems/Formats/File.cs b/SabreTools.Metadata.DatItems/Formats/File.cs index 24876f3e..e52b9e4c 100644 --- a/SabreTools.Metadata.DatItems/Formats/File.cs +++ b/SabreTools.Metadata.DatItems/Formats/File.cs @@ -7,6 +7,7 @@ using SabreTools.IO.Extensions; using SabreTools.Text.Extensions; // TODO: Add item mappings for all fields +// TODO: Investigate whether this is the "File" from NIDB namespace SabreTools.Metadata.DatItems.Formats { /// @@ -104,6 +105,16 @@ namespace SabreTools.Metadata.DatItems.Formats #endregion + #region Accessors + + /// + public override string? GetName() => null; + + /// + public override void SetName(string? name) { } + + #endregion + #region Cloning Methods /// diff --git a/SabreTools.Metadata.DatItems/Formats/Info.cs b/SabreTools.Metadata.DatItems/Formats/Info.cs index 45d2d836..9de391a2 100644 --- a/SabreTools.Metadata.DatItems/Formats/Info.cs +++ b/SabreTools.Metadata.DatItems/Formats/Info.cs @@ -44,6 +44,16 @@ namespace SabreTools.Metadata.DatItems.Formats #endregion + #region Accessors + + /// + public override string? GetName() => Name; + + /// + public override void SetName(string? name) => Name = name; + + #endregion + #region Cloning Methods /// diff --git a/SabreTools.Metadata.DatItems/Formats/Input.cs b/SabreTools.Metadata.DatItems/Formats/Input.cs index 5885db4e..0e72bd20 100644 --- a/SabreTools.Metadata.DatItems/Formats/Input.cs +++ b/SabreTools.Metadata.DatItems/Formats/Input.cs @@ -79,6 +79,16 @@ namespace SabreTools.Metadata.DatItems.Formats #endregion + #region Accessors + + /// + public override string? GetName() => null; + + /// + public override void SetName(string? name) { } + + #endregion + #region Cloning Methods /// diff --git a/SabreTools.Metadata.DatItems/Formats/Instance.cs b/SabreTools.Metadata.DatItems/Formats/Instance.cs index 82afeae6..10467c95 100644 --- a/SabreTools.Metadata.DatItems/Formats/Instance.cs +++ b/SabreTools.Metadata.DatItems/Formats/Instance.cs @@ -44,6 +44,16 @@ namespace SabreTools.Metadata.DatItems.Formats #endregion + #region Accessors + + /// + public override string? GetName() => Name; + + /// + public override void SetName(string? name) => Name = name; + + #endregion + #region Cloning Methods /// diff --git a/SabreTools.Metadata.DatItems/Formats/Media.cs b/SabreTools.Metadata.DatItems/Formats/Media.cs index fc949752..a375cdcd 100644 --- a/SabreTools.Metadata.DatItems/Formats/Media.cs +++ b/SabreTools.Metadata.DatItems/Formats/Media.cs @@ -79,6 +79,16 @@ namespace SabreTools.Metadata.DatItems.Formats #endregion + #region Accessors + + /// + public override string? GetName() => Name; + + /// + public override void SetName(string? name) => Name = name; + + #endregion + #region Cloning Methods /// diff --git a/SabreTools.Metadata.DatItems/Formats/Part.cs b/SabreTools.Metadata.DatItems/Formats/Part.cs index c61529f8..dd6f3dbc 100644 --- a/SabreTools.Metadata.DatItems/Formats/Part.cs +++ b/SabreTools.Metadata.DatItems/Formats/Part.cs @@ -56,6 +56,16 @@ namespace SabreTools.Metadata.DatItems.Formats #endregion + #region Accessors + + /// + public override string? GetName() => Name; + + /// + public override void SetName(string? name) => Name = name; + + #endregion + #region Cloning Methods /// diff --git a/SabreTools.Metadata.DatItems/Formats/PartFeature.cs b/SabreTools.Metadata.DatItems/Formats/PartFeature.cs index ac6f0689..ca8a6f6d 100644 --- a/SabreTools.Metadata.DatItems/Formats/PartFeature.cs +++ b/SabreTools.Metadata.DatItems/Formats/PartFeature.cs @@ -71,6 +71,16 @@ namespace SabreTools.Metadata.DatItems.Formats #endregion + #region Accessors + + /// + public override string? GetName() => Name; + + /// + public override void SetName(string? name) => Name = name; + + #endregion + #region Cloning Methods /// diff --git a/SabreTools.Metadata.DatItems/Formats/Port.cs b/SabreTools.Metadata.DatItems/Formats/Port.cs index c3c9b65c..4d67d41b 100644 --- a/SabreTools.Metadata.DatItems/Formats/Port.cs +++ b/SabreTools.Metadata.DatItems/Formats/Port.cs @@ -49,6 +49,16 @@ namespace SabreTools.Metadata.DatItems.Formats #endregion + #region Accessors + + /// + public override string? GetName() => null; + + /// + public override void SetName(string? name) { } + + #endregion + #region Cloning Methods /// diff --git a/SabreTools.Metadata.DatItems/Formats/RamOption.cs b/SabreTools.Metadata.DatItems/Formats/RamOption.cs index 3c33c5ad..b0360521 100644 --- a/SabreTools.Metadata.DatItems/Formats/RamOption.cs +++ b/SabreTools.Metadata.DatItems/Formats/RamOption.cs @@ -50,6 +50,16 @@ namespace SabreTools.Metadata.DatItems.Formats #endregion + #region Accessors + + /// + public override string? GetName() => Name; + + /// + public override void SetName(string? name) => Name = name; + + #endregion + #region Cloning Methods /// diff --git a/SabreTools.Metadata.DatItems/Formats/Release.cs b/SabreTools.Metadata.DatItems/Formats/Release.cs index 61acea52..faaa3207 100644 --- a/SabreTools.Metadata.DatItems/Formats/Release.cs +++ b/SabreTools.Metadata.DatItems/Formats/Release.cs @@ -62,6 +62,16 @@ namespace SabreTools.Metadata.DatItems.Formats #endregion + #region Accessors + + /// + public override string? GetName() => Name; + + /// + public override void SetName(string? name) => Name = name; + + #endregion + #region Cloning Methods /// diff --git a/SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs b/SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs index e3400c94..6668060b 100644 --- a/SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs +++ b/SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs @@ -127,6 +127,16 @@ namespace SabreTools.Metadata.DatItems.Formats } #endregion + #region Accessors + + /// + public override string? GetName() => null; + + /// + public override void SetName(string? name) { } + + #endregion + #region Cloning Methods /// diff --git a/SabreTools.Metadata.DatItems/Formats/Rom.cs b/SabreTools.Metadata.DatItems/Formats/Rom.cs index 5fa916c3..abe3d841 100644 --- a/SabreTools.Metadata.DatItems/Formats/Rom.cs +++ b/SabreTools.Metadata.DatItems/Formats/Rom.cs @@ -401,6 +401,16 @@ namespace SabreTools.Metadata.DatItems.Formats #endregion + #region Accessors + + /// + public override string? GetName() => Name; + + /// + public override void SetName(string? name) => Name = name; + + #endregion + #region Cloning Methods /// diff --git a/SabreTools.Metadata.DatItems/Formats/Sample.cs b/SabreTools.Metadata.DatItems/Formats/Sample.cs index a9a74652..45caa20d 100644 --- a/SabreTools.Metadata.DatItems/Formats/Sample.cs +++ b/SabreTools.Metadata.DatItems/Formats/Sample.cs @@ -38,6 +38,16 @@ namespace SabreTools.Metadata.DatItems.Formats #endregion + #region Accessors + + /// + public override string? GetName() => Name; + + /// + public override void SetName(string? name) => Name = name; + + #endregion + #region Cloning Methods /// diff --git a/SabreTools.Metadata.DatItems/Formats/Serials.cs b/SabreTools.Metadata.DatItems/Formats/Serials.cs index 16f7c562..5660d157 100644 --- a/SabreTools.Metadata.DatItems/Formats/Serials.cs +++ b/SabreTools.Metadata.DatItems/Formats/Serials.cs @@ -116,6 +116,16 @@ namespace SabreTools.Metadata.DatItems.Formats #endregion + #region Accessors + + /// + public override string? GetName() => null; + + /// + public override void SetName(string? name) { } + + #endregion + #region Cloning Methods /// diff --git a/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs b/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs index f8482b37..93e20006 100644 --- a/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs +++ b/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs @@ -44,6 +44,16 @@ namespace SabreTools.Metadata.DatItems.Formats #endregion + #region Accessors + + /// + public override string? GetName() => Name; + + /// + public override void SetName(string? name) => Name = name; + + #endregion + #region Cloning Methods /// diff --git a/SabreTools.Metadata.DatItems/Formats/Slot.cs b/SabreTools.Metadata.DatItems/Formats/Slot.cs index 9051d991..80f1aa04 100644 --- a/SabreTools.Metadata.DatItems/Formats/Slot.cs +++ b/SabreTools.Metadata.DatItems/Formats/Slot.cs @@ -38,7 +38,7 @@ namespace SabreTools.Metadata.DatItems.Formats { // Handle subitems if (item.SlotOption is not null) - SlotOption = Array.ConvertAll(item.SlotOption, slotOption => new SlotOption(slotOption));; + SlotOption = Array.ConvertAll(item.SlotOption, slotOption => new SlotOption(slotOption)); ; } public Slot(Data.Models.Metadata.Slot item, Machine machine, Source source) : this(item) @@ -49,6 +49,16 @@ namespace SabreTools.Metadata.DatItems.Formats #endregion + #region Accessors + + /// + public override string? GetName() => Name; + + /// + public override void SetName(string? name) => Name = name; + + #endregion + #region Cloning Methods /// diff --git a/SabreTools.Metadata.DatItems/Formats/SlotOption.cs b/SabreTools.Metadata.DatItems/Formats/SlotOption.cs index 7b69df2c..49a0b7c1 100644 --- a/SabreTools.Metadata.DatItems/Formats/SlotOption.cs +++ b/SabreTools.Metadata.DatItems/Formats/SlotOption.cs @@ -50,6 +50,16 @@ namespace SabreTools.Metadata.DatItems.Formats #endregion + #region Accessors + + /// + public override string? GetName() => Name; + + /// + public override void SetName(string? name) => Name = name; + + #endregion + #region Cloning Methods /// diff --git a/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs b/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs index 3d90fb67..7cb0a213 100644 --- a/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs +++ b/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs @@ -56,6 +56,16 @@ namespace SabreTools.Metadata.DatItems.Formats #endregion + #region Accessors + + /// + public override string? GetName() => Name; + + /// + public override void SetName(string? name) => Name = name; + + #endregion + #region Cloning Methods /// diff --git a/SabreTools.Metadata.DatItems/Formats/Sound.cs b/SabreTools.Metadata.DatItems/Formats/Sound.cs index f5db3d17..c3bdf427 100644 --- a/SabreTools.Metadata.DatItems/Formats/Sound.cs +++ b/SabreTools.Metadata.DatItems/Formats/Sound.cs @@ -38,6 +38,16 @@ namespace SabreTools.Metadata.DatItems.Formats #endregion + #region Accessors + + /// + public override string? GetName() => null; + + /// + public override void SetName(string? name) { } + + #endregion + #region Cloning Methods /// diff --git a/SabreTools.Metadata.DatItems/Formats/SourceDetails.cs b/SabreTools.Metadata.DatItems/Formats/SourceDetails.cs index 76914379..624c5b79 100644 --- a/SabreTools.Metadata.DatItems/Formats/SourceDetails.cs +++ b/SabreTools.Metadata.DatItems/Formats/SourceDetails.cs @@ -176,6 +176,16 @@ namespace SabreTools.Metadata.DatItems.Formats #endregion + #region Accessors + + /// + public override string? GetName() => null; + + /// + public override void SetName(string? name) { } + + #endregion + #region Cloning Methods /// From eb2f5babd9f594028172289b9b2252ae6e4f84a5 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sat, 4 Apr 2026 11:40:48 -0400 Subject: [PATCH 071/142] Migrate DataArea, DiskArea, and Part to property-driven --- .../MetadataExtensions.cs | 49 +---- SabreTools.Data.Models/Metadata/DataArea.cs | 56 ++++- SabreTools.Data.Models/Metadata/DiskArea.cs | 44 +++- SabreTools.Data.Models/Metadata/Part.cs | 74 +++++-- SabreTools.Data.Models/Metadata/Rom.cs | 194 +++++++++++++++++- .../DatFileTests.FromMetadata.cs | 18 +- .../DatFileTests.ToMetadata.cs | 18 +- .../DatFile.FromMetadata.cs | 24 ++- .../DatFile.ToMetadata.cs | 134 ++++-------- .../Formats/SoftwareList.cs | 8 +- .../Formats/DiskTests.cs | 4 +- .../Formats/DataArea.cs | 25 ++- SabreTools.Metadata.DatItems/Formats/Disk.cs | 4 +- .../Formats/DiskArea.cs | 25 ++- SabreTools.Metadata.DatItems/Formats/Part.cs | 74 ++++--- .../Formats/PartFeature.cs | 14 +- SabreTools.Metadata.DatItems/Formats/Rom.cs | 36 ++-- .../DictionaryBaseExtensions.cs | 13 +- .../SoftwareList.Deserializer.cs | 12 +- .../SoftwareList.Serializer.cs | 12 +- 20 files changed, 545 insertions(+), 293 deletions(-) diff --git a/SabreTools.Data.Extensions/MetadataExtensions.cs b/SabreTools.Data.Extensions/MetadataExtensions.cs index d4bfdab6..64f17a16 100644 --- a/SabreTools.Data.Extensions/MetadataExtensions.cs +++ b/SabreTools.Data.Extensions/MetadataExtensions.cs @@ -165,6 +165,8 @@ namespace SabreTools.Data.Extensions return confSetting.Clone() as ConfSetting; else if (self is Control control) return control.Clone() as Control; + else if (self is DataArea dataArea) + return dataArea.Clone() as DataArea; else if (self is Device device) return device.Clone() as Device; else if (self is DeviceRef deviceRef) @@ -177,15 +179,16 @@ namespace SabreTools.Data.Extensions return dipValue.Clone() as DipValue; else if (self is Disk disk) return disk.Clone() as Disk; + else if (self is DiskArea diskArea) + return diskArea.Clone() as DiskArea; else if (self is Display display) return display.Clone() as Display; else if (self is Driver driver) return driver.Clone() as Driver; else if (self is Extension extension) return extension.Clone() as Extension; - // TODO: Reenable when PartFeature no longer needs nesting - // else if (self is Feature feature) - // return feature.Clone() as Feature; + else if (self is Feature feature) + return feature.Clone() as Feature; else if (self is Info info) return info.Clone() as Info; else if (self is Input input) @@ -196,6 +199,8 @@ namespace SabreTools.Data.Extensions return media.Clone() as Media; else if (self is Original original) return original.Clone() as Original; + else if (self is Part part) + return part.Clone() as Part; else if (self is Port port) return port.Clone() as Port; else if (self is RamOption ramOption) @@ -204,6 +209,8 @@ namespace SabreTools.Data.Extensions return release.Clone() as Release; else if (self is ReleaseDetails releaseDetails) return releaseDetails.Clone() as ReleaseDetails; + else if (self is Rom rom) + return rom.Clone() as Rom; else if (self is Serials serials) return serials.Clone() as Serials; else if (self is SharedFeat sharedFeat) @@ -226,22 +233,7 @@ namespace SabreTools.Data.Extensions return null; // Handle individual type properties - if (self is DataArea selfDataArea && clone is DataArea cloneDataArea) - { - cloneDataArea.Endianness = selfDataArea.Endianness; - cloneDataArea.Size = selfDataArea.Size; - cloneDataArea.Width = selfDataArea.Width; - } - else if (self is Feature selfFeature && clone is Feature cloneFeature) - { - // TODO: Remove when PartFeature no longer needs nesting - cloneFeature.FeatureType = selfFeature.FeatureType; - cloneFeature.Name = selfFeature.Name; - cloneFeature.Overall = selfFeature.Overall; - cloneFeature.Status = selfFeature.Status; - cloneFeature.Value = selfFeature.Value; - } - else if (self is Header selfHeader && clone is Header cloneHeader) + if (self is Header selfHeader && clone is Header cloneHeader) { cloneHeader.Author = selfHeader.Author; cloneHeader.BiosMode = selfHeader.BiosMode; @@ -329,25 +321,6 @@ namespace SabreTools.Data.Extensions cloneMachine.Url = selfMachine.Url; cloneMachine.Year = selfMachine.Year; } - else if (self is Part selfPart && clone is Part clonePart) - { - clonePart.Interface = selfPart.Interface; - } - else if (self is Rom selfRom && clone is Rom cloneRom) - { - cloneRom.Dispose = selfRom.Dispose; - cloneRom.FileCount = selfRom.FileCount; - cloneRom.FileIsAvailable = selfRom.FileIsAvailable; - cloneRom.Inverted = selfRom.Inverted; - cloneRom.LoadFlag = selfRom.LoadFlag; - cloneRom.MIA = selfRom.MIA; - cloneRom.OpenMSXMediaType = selfRom.OpenMSXMediaType; - cloneRom.Optional = selfRom.Optional; - cloneRom.Size = selfRom.Size; - cloneRom.SoundOnly = selfRom.SoundOnly; - cloneRom.Status = selfRom.Status; - cloneRom.Value = selfRom.Value; - } // Handle known properties clone.SetName(self.GetName()); diff --git a/SabreTools.Data.Models/Metadata/DataArea.cs b/SabreTools.Data.Models/Metadata/DataArea.cs index be3f714c..cbbb9944 100644 --- a/SabreTools.Data.Models/Metadata/DataArea.cs +++ b/SabreTools.Data.Models/Metadata/DataArea.cs @@ -1,10 +1,11 @@ +using System; using System.Xml.Serialization; using Newtonsoft.Json; namespace SabreTools.Data.Models.Metadata { [JsonObject("dataarea"), XmlRoot("dataarea")] - public class DataArea : DatItem + public class DataArea : DatItem, ICloneable, IEquatable { #region Properties @@ -13,6 +14,8 @@ namespace SabreTools.Data.Models.Metadata public string? Name { get; set; } + public Rom[]? Rom { get; set; } + public long? Size { get; set; } /// (8|16|32|64) "8" @@ -20,14 +23,49 @@ namespace SabreTools.Data.Models.Metadata #endregion - #region Keys - - /// Rom[] - [NoFilter] - public const string RomKey = "rom"; - - #endregion - public DataArea() => ItemType = ItemType.DataArea; + + /// + public object Clone() + { + var obj = new DataArea(); + + obj.Endianness = Endianness; + obj.Name = Name; + if (Rom is not null) + obj.Rom = Array.ConvertAll(Rom, i => (Rom)i.Clone()); + obj.Size = Size; + obj.Width = Width; + + return obj; + } + + /// + public bool Equals(DataArea? other) + { + // Null never matches + if (other is null) + return false; + + // Properties + if (Endianness != other.Endianness) + return false; + + if ((Name is null) ^ (other.Name is null)) + return false; + else if (Name is not null && !Name.Equals(other.Name, StringComparison.OrdinalIgnoreCase)) + return false; + + if (Size != other.Size) + return false; + + if (Width != other.Width) + return false; + + // Sub-items + // TODO: Figure out how to properly check arrays + + return true; + } } } diff --git a/SabreTools.Data.Models/Metadata/DiskArea.cs b/SabreTools.Data.Models/Metadata/DiskArea.cs index 87e68a86..b82b168a 100644 --- a/SabreTools.Data.Models/Metadata/DiskArea.cs +++ b/SabreTools.Data.Models/Metadata/DiskArea.cs @@ -1,25 +1,51 @@ +using System; using System.Xml.Serialization; using Newtonsoft.Json; namespace SabreTools.Data.Models.Metadata { [JsonObject("diskarea"), XmlRoot("diskarea")] - public class DiskArea : DatItem + public class DiskArea : DatItem, ICloneable, IEquatable { #region Properties + public Disk[]? Disk { get; set; } + public string? Name { get; set; } #endregion - #region Keys - - /// Disk[] - [NoFilter] - public const string DiskKey = "disk"; - - #endregion - public DiskArea() => ItemType = ItemType.DiskArea; + + /// + public object Clone() + { + var obj = new DiskArea(); + + if (Disk is not null) + obj.Disk = Array.ConvertAll(Disk, i => (Disk)i.Clone()); + obj.Name = Name; + + return obj; + } + + /// + public bool Equals(DiskArea? other) + { + // Null never matches + if (other is null) + return false; + + // Properties + if ((Name is null) ^ (other.Name is null)) + return false; + else if (Name is not null && !Name.Equals(other.Name, StringComparison.OrdinalIgnoreCase)) + return false; + + // Sub-items + // TODO: Figure out how to properly check arrays + + return true; + } } } diff --git a/SabreTools.Data.Models/Metadata/Part.cs b/SabreTools.Data.Models/Metadata/Part.cs index eb093999..1be988b9 100644 --- a/SabreTools.Data.Models/Metadata/Part.cs +++ b/SabreTools.Data.Models/Metadata/Part.cs @@ -1,39 +1,71 @@ +using System; using System.Xml.Serialization; using Newtonsoft.Json; namespace SabreTools.Data.Models.Metadata { [JsonObject("part"), XmlRoot("part")] - public class Part : DatItem + public class Part : DatItem, ICloneable, IEquatable { #region Properties + public DataArea[]? DataArea { get; set; } + + public DiskArea[]? DiskArea { get; set; } + + public DipSwitch[]? DipSwitch { get; set; } + + public Feature[]? Feature { get; set; } + public string? Interface { get; set; } public string? Name { get; set; } #endregion - #region Keys - - /// DataArea[] - [NoFilter] - public const string DataAreaKey = "dataarea"; - - /// DiskArea[] - [NoFilter] - public const string DiskAreaKey = "diskarea"; - - /// DipSwitch[] - [NoFilter] - public const string DipSwitchKey = "dipswitch"; - - /// Feature[] - [NoFilter] - public const string FeatureKey = "feature"; - - #endregion - public Part() => ItemType = ItemType.Part; + + /// + public object Clone() + { + var obj = new Part(); + + if (DataArea is not null) + obj.DataArea = Array.ConvertAll(DataArea, i => (DataArea)i.Clone()); + if (DiskArea is not null) + obj.DiskArea = Array.ConvertAll(DiskArea, i => (DiskArea)i.Clone()); + if (DipSwitch is not null) + obj.DipSwitch = Array.ConvertAll(DipSwitch, i => (DipSwitch)i.Clone()); + if (Feature is not null) + obj.Feature = Array.ConvertAll(Feature, i => (Feature)i.Clone()); + obj.Interface = Interface; + obj.Name = Name; + + return obj; + } + + /// + public bool Equals(Part? other) + { + // Null never matches + if (other is null) + return false; + + // Properties + if ((Interface is null) ^ (other.Interface is null)) + return false; + else if (Interface is not null && !Interface.Equals(other.Interface, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((Name is null) ^ (other.Name is null)) + return false; + else if (Name is not null && !Name.Equals(other.Name, StringComparison.OrdinalIgnoreCase)) + return false; + + // Sub-items + // TODO: Figure out how to properly check arrays + + return true; + } } } diff --git a/SabreTools.Data.Models/Metadata/Rom.cs b/SabreTools.Data.Models/Metadata/Rom.cs index 190e65dd..a5ca4991 100644 --- a/SabreTools.Data.Models/Metadata/Rom.cs +++ b/SabreTools.Data.Models/Metadata/Rom.cs @@ -1,10 +1,12 @@ +using System; using System.Xml.Serialization; using Newtonsoft.Json; namespace SabreTools.Data.Models.Metadata { + // TODO: IEquatable [JsonObject("rom"), XmlRoot("rom")] - public class Rom : DatItem + public class Rom : DatItem, ICloneable { #region Properties @@ -300,5 +302,195 @@ namespace SabreTools.Data.Models.Metadata #endregion public Rom() => ItemType = ItemType.Rom; + + /// + public object Clone() + { + var obj = new Rom(); + + obj.Dispose = Dispose; + obj.FileCount = FileCount; + obj.FileIsAvailable = FileIsAvailable; + obj.Inverted = Inverted; + obj.LoadFlag = LoadFlag; + obj.MIA = MIA; + obj.Name = Name; + obj.OpenMSXMediaType = OpenMSXMediaType; + obj.Optional = Optional; + obj.Size = Size; + obj.SoundOnly = SoundOnly; + obj.Status = Status; + obj.Value = Value; + + // TODO: Replace these when moving away from keys + if (TryGetValue(AlbumKey, out var Album)) + obj[AlbumKey] = Album; + if (TryGetValue(AltRomnameKey, out var AltRomname)) + obj[AltRomnameKey] = AltRomname; + if (TryGetValue(AltTitleKey, out var AltTitle)) + obj[AltTitleKey] = AltTitle; + if (TryGetValue(ArtistKey, out var Artist)) + obj[ArtistKey] = Artist; + if (TryGetValue(ASRDetectedLangKey, out var ASRDetectedLang)) + obj[ASRDetectedLangKey] = ASRDetectedLang; + if (TryGetValue(ASRDetectedLangConfKey, out var ASRDetectedLangConf)) + obj[ASRDetectedLangConfKey] = ASRDetectedLangConf; + if (TryGetValue(ASRTranscribedLangKey, out var ASRTranscribedLang)) + obj[ASRTranscribedLangKey] = ASRTranscribedLang; + if (TryGetValue(BiosKey, out var Bios)) + obj[BiosKey] = Bios; + if (TryGetValue(BitrateKey, out var Bitrate)) + obj[BitrateKey] = Bitrate; + if (TryGetValue(BitTorrentMagnetHashKey, out var BitTorrentMagnetHash)) + obj[BitTorrentMagnetHashKey] = BitTorrentMagnetHash; + if (TryGetValue(ClothCoverDetectionModuleVersionKey, out var ClothCoverDetectionModuleVersion)) + obj[ClothCoverDetectionModuleVersionKey] = ClothCoverDetectionModuleVersion; + if (TryGetValue(CollectionCatalogNumberKey, out var CollectionCatalogNumber)) + obj[CollectionCatalogNumberKey] = CollectionCatalogNumber; + if (TryGetValue(CommentKey, out var Comment)) + obj[CommentKey] = Comment; + if (TryGetValue(CRCKey, out var CRC)) + obj[CRCKey] = CRC; + if (TryGetValue(CRC16Key, out var CRC16)) + obj[CRC16Key] = CRC16; + if (TryGetValue(CRC64Key, out var CRC64)) + obj[CRC64Key] = CRC64; + if (TryGetValue(CreatorKey, out var Creator)) + obj[CreatorKey] = Creator; + if (TryGetValue(DateKey, out var Date)) + obj[DateKey] = Date; + if (TryGetValue(ExtensionKey, out var Extension)) + obj[ExtensionKey] = Extension; + if (TryGetValue(FlagsKey, out var Flags)) + obj[FlagsKey] = Flags; + if (TryGetValue(FormatKey, out var Format)) + obj[FormatKey] = Format; + if (TryGetValue(HeaderKey, out var Header)) + obj[HeaderKey] = Header; + if (TryGetValue(HeightKey, out var Height)) + obj[HeightKey] = Height; + if (TryGetValue(hOCRCharToWordhOCRVersionKey, out var hOCRCharToWordhOCRVersion)) + obj[hOCRCharToWordhOCRVersionKey] = hOCRCharToWordhOCRVersion; + if (TryGetValue(hOCRCharToWordModuleVersionKey, out var hOCRCharToWordModuleVersion)) + obj[hOCRCharToWordModuleVersionKey] = hOCRCharToWordModuleVersion; + if (TryGetValue(hOCRFtsTexthOCRVersionKey, out var hOCRFtsTexthOCRVersion)) + obj[hOCRFtsTexthOCRVersionKey] = hOCRFtsTexthOCRVersion; + if (TryGetValue(hOCRFtsTextModuleVersionKey, out var hOCRFtsTextModuleVersion)) + obj[hOCRFtsTextModuleVersionKey] = hOCRFtsTextModuleVersion; + if (TryGetValue(hOCRPageIndexhOCRVersionKey, out var hOCRPageIndexhOCRVersion)) + obj[hOCRPageIndexhOCRVersionKey] = hOCRPageIndexhOCRVersion; + if (TryGetValue(hOCRPageIndexModuleVersionKey, out var hOCRPageIndexModuleVersion)) + obj[hOCRPageIndexModuleVersionKey] = hOCRPageIndexModuleVersion; + if (TryGetValue(LastModifiedTimeKey, out var LastModifiedTime)) + obj[LastModifiedTimeKey] = LastModifiedTime; + if (TryGetValue(LengthKey, out var Length)) + obj[LengthKey] = Length; + if (TryGetValue(MatrixNumberKey, out var MatrixNumber)) + obj[MatrixNumberKey] = MatrixNumber; + if (TryGetValue(MD2Key, out var MD2)) + obj[MD2Key] = MD2; + if (TryGetValue(MD4Key, out var MD4)) + obj[MD4Key] = MD4; + if (TryGetValue(MD5Key, out var MD5)) + obj[MD5Key] = MD5; + if (TryGetValue(MergeKey, out var Merge)) + obj[MergeKey] = Merge; + if (TryGetValue(TesseractOCRKey, out var TesseractOCR)) + obj[TesseractOCRKey] = TesseractOCR; + if (TryGetValue(TesseractOCRConvertedKey, out var TesseractOCRConverted)) + obj[TesseractOCRConvertedKey] = TesseractOCRConverted; + if (TryGetValue(TesseractOCRDetectedLangKey, out var TesseractOCRDetectedLang)) + obj[TesseractOCRDetectedLangKey] = TesseractOCRDetectedLang; + if (TryGetValue(TesseractOCRDetectedLangConfKey, out var TesseractOCRDetectedLangConf)) + obj[TesseractOCRDetectedLangConfKey] = TesseractOCRDetectedLangConf; + if (TryGetValue(TesseractOCRDetectedScriptKey, out var TesseractOCRDetectedScript)) + obj[TesseractOCRDetectedScriptKey] = TesseractOCRDetectedScript; + if (TryGetValue(TesseractOCRDetectedScriptConfKey, out var TesseractOCRDetectedScriptConf)) + obj[TesseractOCRDetectedScriptConfKey] = TesseractOCRDetectedScriptConf; + if (TryGetValue(TesseractOCRModuleVersionKey, out var TesseractOCRModuleVersion)) + obj[TesseractOCRModuleVersionKey] = TesseractOCRModuleVersion; + if (TryGetValue(TesseractOCRParametersKey, out var TesseractOCRParameters)) + obj[TesseractOCRParametersKey] = TesseractOCRParameters; + if (TryGetValue(OffsetKey, out var Offset)) + obj[OffsetKey] = Offset; + if (TryGetValue(OriginalKey, out var Original)) + obj[OriginalKey] = Original; + if (TryGetValue(PDFModuleVersionKey, out var PDFModuleVersion)) + obj[PDFModuleVersionKey] = PDFModuleVersion; + if (TryGetValue(PreviewImageKey, out var PreviewImage)) + obj[PreviewImageKey] = PreviewImage; + if (TryGetValue(PublisherKey, out var Publisher)) + obj[PublisherKey] = Publisher; + if (TryGetValue(RegionKey, out var Region)) + obj[RegionKey] = Region; + if (TryGetValue(RemarkKey, out var Remark)) + obj[RemarkKey] = Remark; + if (TryGetValue(RIPEMD128Key, out var RIPEMD128)) + obj[RIPEMD128Key] = RIPEMD128; + if (TryGetValue(RIPEMD160Key, out var RIPEMD160)) + obj[RIPEMD160Key] = RIPEMD160; + if (TryGetValue(RotationKey, out var Rotation)) + obj[RotationKey] = Rotation; + if (TryGetValue(SerialKey, out var Serial)) + obj[SerialKey] = Serial; + if (TryGetValue(SHA1Key, out var SHA1)) + obj[SHA1Key] = SHA1; + if (TryGetValue(SHA256Key, out var SHA256)) + obj[SHA256Key] = SHA256; + if (TryGetValue(SHA384Key, out var SHA384)) + obj[SHA384Key] = SHA384; + if (TryGetValue(SHA512Key, out var SHA512)) + obj[SHA512Key] = SHA512; + if (TryGetValue(SourceKey, out var Source)) + obj[SourceKey] = Source; + if (TryGetValue(SpamSumKey, out var SpamSum)) + obj[SpamSumKey] = SpamSum; + if (TryGetValue(StartKey, out var Start)) + obj[StartKey] = Start; + if (TryGetValue(SummationKey, out var Summation)) + obj[SummationKey] = Summation; + if (TryGetValue(TitleKey, out var Title)) + obj[TitleKey] = Title; + if (TryGetValue(TrackKey, out var Track)) + obj[TrackKey] = Track; + if (TryGetValue(OpenMSXType, out var OpenMSXTypeValue)) + obj[OpenMSXType] = OpenMSXTypeValue; + if (TryGetValue(WhisperASRModuleVersionKey, out var WhisperASRModuleVersion)) + obj[WhisperASRModuleVersionKey] = WhisperASRModuleVersion; + if (TryGetValue(WhisperModelHashKey, out var WhisperModelHash)) + obj[WhisperModelHashKey] = WhisperModelHash; + if (TryGetValue(WhisperModelNameKey, out var WhisperModelName)) + obj[WhisperModelNameKey] = WhisperModelName; + if (TryGetValue(WhisperVersionKey, out var WhisperVersion)) + obj[WhisperVersionKey] = WhisperVersion; + if (TryGetValue(WidthKey, out var Width)) + obj[WidthKey] = Width; + if (TryGetValue(WordConfidenceInterval0To10Key, out var WordConfidenceInterval0To10)) + obj[WordConfidenceInterval0To10Key] = WordConfidenceInterval0To10; + if (TryGetValue(WordConfidenceInterval11To20Key, out var WordConfidenceInterval11To20)) + obj[WordConfidenceInterval11To20Key] = WordConfidenceInterval11To20; + if (TryGetValue(WordConfidenceInterval21To30Key, out var WordConfidenceInterval21To30)) + obj[WordConfidenceInterval21To30Key] = WordConfidenceInterval21To30; + if (TryGetValue(WordConfidenceInterval31To40Key, out var WordConfidenceInterval31To40)) + obj[WordConfidenceInterval31To40Key] = WordConfidenceInterval31To40; + if (TryGetValue(WordConfidenceInterval41To50Key, out var WordConfidenceInterval41To50)) + obj[WordConfidenceInterval41To50Key] = WordConfidenceInterval41To50; + if (TryGetValue(WordConfidenceInterval51To60Key, out var WordConfidenceInterval51To60)) + obj[WordConfidenceInterval51To60Key] = WordConfidenceInterval51To60; + if (TryGetValue(WordConfidenceInterval61To70Key, out var WordConfidenceInterval61To70)) + obj[WordConfidenceInterval61To70Key] = WordConfidenceInterval61To70; + if (TryGetValue(WordConfidenceInterval71To80Key, out var WordConfidenceInterval71To80)) + obj[WordConfidenceInterval71To80Key] = WordConfidenceInterval71To80; + if (TryGetValue(WordConfidenceInterval81To90Key, out var WordConfidenceInterval81To90)) + obj[WordConfidenceInterval81To90Key] = WordConfidenceInterval81To90; + if (TryGetValue(WordConfidenceInterval91To100Key, out var WordConfidenceInterval91To100)) + obj[WordConfidenceInterval91To100Key] = WordConfidenceInterval91To100; + if (TryGetValue(xxHash364Key, out var xxHash364)) + obj[xxHash364Key] = xxHash364; + if (TryGetValue(xxHash3128Key, out var xxHash3128)) + obj[xxHash3128Key] = xxHash3128; + + return obj; + } } } diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs index f71b1e8a..629050b8 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs @@ -142,9 +142,9 @@ namespace SabreTools.Metadata.DatFiles.Test // All other fields are tested separately Rom? partRom = Array.Find(datItems, item => item is Rom rom && rom.DataAreaSpecified && rom.PartSpecified) as Rom; Assert.NotNull(partRom); - DataArea? romDataArea = partRom.Read(Rom.DataAreaKey); + DataArea? romDataArea = partRom.DataArea; ValidateDataArea(romDataArea); - Part? romPart = partRom.Read(Rom.PartKey); + Part? romPart = partRom.Part; ValidatePart(romPart); Port? port = Array.Find(datItems, item => item is Port) as Port; @@ -539,7 +539,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Endianness = Data.Models.Metadata.Endianness.Big, Name = "name", - [Data.Models.Metadata.DataArea.RomKey] = new Data.Models.Metadata.Rom[] { [] }, + Rom = [[]], Size = 12345, Width = Data.Models.Metadata.Width.Long, }; @@ -565,7 +565,7 @@ namespace SabreTools.Metadata.DatFiles.Test { return new Data.Models.Metadata.DiskArea { - [Data.Models.Metadata.DiskArea.DiskKey] = new Data.Models.Metadata.Disk[] { [] }, + Disk = [[]], Name = "name", }; } @@ -704,10 +704,10 @@ namespace SabreTools.Metadata.DatFiles.Test { return new Data.Models.Metadata.Part { - [Data.Models.Metadata.Part.DataAreaKey] = new Data.Models.Metadata.DataArea[] { CreateMetadataDataArea() }, - [Data.Models.Metadata.Part.DiskAreaKey] = new Data.Models.Metadata.DiskArea[] { CreateMetadataDiskArea() }, - [Data.Models.Metadata.Part.DipSwitchKey] = new Data.Models.Metadata.DipSwitch[] { [] }, - [Data.Models.Metadata.Part.FeatureKey] = new Data.Models.Metadata.Feature[] { CreateMetadataFeature() }, + DataArea = [CreateMetadataDataArea()], + DiskArea = [CreateMetadataDiskArea()], + DipSwitch = [[]], + Feature = [CreateMetadataFeature()], Interface = "interface", Name = "name", }; @@ -1432,7 +1432,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal(Data.Models.Metadata.FeatureType.Protection, partFeature.FeatureType); Assert.Equal("value", partFeature.Value); - Part? part = partFeature.Read(PartFeature.PartKey); + Part? part = partFeature.Part; ValidatePart(part); } diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs index 22f60775..33a92aa2 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs @@ -261,7 +261,7 @@ namespace SabreTools.Metadata.DatFiles.Test { PartFeature item = new PartFeature(CreateMetadataFeature()); item.CopyMachineInformation(machine); - item.Write(PartFeature.PartKey, CreatePart(machine)); + item.Part = CreatePart(machine); return item; } @@ -298,8 +298,8 @@ namespace SabreTools.Metadata.DatFiles.Test { Rom item = new Rom(CreateMetadataRom()); item.CopyMachineInformation(machine); - item.Write(Rom.DataAreaKey, CreateDataArea(machine)); - item.Write(Rom.PartKey, CreatePart(machine)); + item.DataArea = CreateDataArea(machine); + item.Part = CreatePart(machine); return item; } @@ -761,7 +761,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal(12345, dataArea.Size); Assert.Equal(Data.Models.Metadata.Width.Long, dataArea.Width); - Data.Models.Metadata.Rom[]? roms = dataArea.ReadArray(Data.Models.Metadata.DataArea.RomKey); + Data.Models.Metadata.Rom[]? roms = dataArea.Rom; Assert.NotNull(roms); Data.Models.Metadata.Rom? rom = Assert.Single(roms); ValidateMetadataRom(rom); @@ -853,7 +853,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(diskArea); Assert.Equal("name", diskArea.Name); - Data.Models.Metadata.Disk[]? disks = diskArea.ReadArray(Data.Models.Metadata.DiskArea.DiskKey); + Data.Models.Metadata.Disk[]? disks = diskArea.Disk; Assert.NotNull(disks); Data.Models.Metadata.Disk? disk = Assert.Single(disks); ValidateMetadataDisk(disk); @@ -959,22 +959,22 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("interface", part.Interface); Assert.Equal("name", part.Name); - Data.Models.Metadata.DataArea[]? dataAreas = part.ReadArray(Data.Models.Metadata.Part.DataAreaKey); + Data.Models.Metadata.DataArea[]? dataAreas = part.DataArea; Assert.NotNull(dataAreas); Data.Models.Metadata.DataArea? dataArea = Assert.Single(dataAreas); ValidateMetadataDataArea(dataArea); - Data.Models.Metadata.DiskArea[]? diskAreas = part.ReadArray(Data.Models.Metadata.Part.DiskAreaKey); + Data.Models.Metadata.DiskArea[]? diskAreas = part.DiskArea; Assert.NotNull(diskAreas); Data.Models.Metadata.DiskArea? diskArea = Assert.Single(diskAreas); ValidateMetadataDiskArea(diskArea); - Data.Models.Metadata.DipSwitch[]? dipSwitches = part.ReadArray(Data.Models.Metadata.Part.DipSwitchKey); + Data.Models.Metadata.DipSwitch[]? dipSwitches = part.DipSwitch; Assert.NotNull(dipSwitches); Data.Models.Metadata.DipSwitch? dipSwitch = Assert.Single(dipSwitches); ValidateMetadataDipSwitch(dipSwitch); - Data.Models.Metadata.Feature[]? features = part.ReadArray(Data.Models.Metadata.Part.FeatureKey); + Data.Models.Metadata.Feature[]? features = part.Feature; Assert.NotNull(features); Data.Models.Metadata.Feature? feature = Assert.Single(features); ValidateMetadataFeature(feature); diff --git a/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs b/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs index 4b04c48d..02320b1c 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs @@ -589,13 +589,13 @@ namespace SabreTools.Metadata.DatFiles var partItem = new Part(item, machine, source); // Handle subitems - var dataAreas = item.ReadArray(Data.Models.Metadata.Part.DataAreaKey); + var dataAreas = item.DataArea; if (dataAreas is not null) { foreach (var dataArea in dataAreas) { var dataAreaItem = new DataArea(dataArea, machine, source); - var roms = dataArea.ReadArray(Data.Models.Metadata.DataArea.RomKey); + var roms = dataArea.Rom; if (roms is null) continue; @@ -623,8 +623,8 @@ namespace SabreTools.Metadata.DatFiles continue; } - romItem.Write(Rom.DataAreaKey, dataAreaItem); - romItem.Write(Rom.PartKey, partItem); + romItem.DataArea = dataAreaItem; + romItem.Part = partItem; addRoms.Add(romItem); } @@ -638,13 +638,13 @@ namespace SabreTools.Metadata.DatFiles } } - var diskAreas = item.ReadArray(Data.Models.Metadata.Part.DiskAreaKey); + var diskAreas = item.DiskArea; if (diskAreas is not null) { foreach (var diskArea in diskAreas) { var diskAreaitem = new DiskArea(diskArea, machine, source); - var disks = diskArea.ReadArray(Data.Models.Metadata.DiskArea.DiskKey); + var disks = diskArea.Disk; if (disks is null) continue; @@ -666,7 +666,7 @@ namespace SabreTools.Metadata.DatFiles } } - var dipSwitches = item.ReadArray(Data.Models.Metadata.Part.DipSwitchKey); + var dipSwitches = item.DipSwitch; if (dipSwitches is not null) { foreach (var dipSwitch in dipSwitches) @@ -682,7 +682,7 @@ namespace SabreTools.Metadata.DatFiles } } - var partFeatures = item.ReadArray(Data.Models.Metadata.Part.FeatureKey); + var partFeatures = item.Feature; if (partFeatures is not null) { foreach (var partFeature in partFeatures) @@ -691,9 +691,11 @@ namespace SabreTools.Metadata.DatFiles if (filterRunner is not null && !filterRunner.Run(partFeature)) continue; - var partFeatureItem = new PartFeature(partFeature); - partFeatureItem.Write(PartFeature.PartKey, partItem); - partFeatureItem.Source = source; + var partFeatureItem = new PartFeature(partFeature) + { + Part = partItem, + Source = source, + }; partFeatureItem.CopyMachineInformation(machine); AddItem(partFeatureItem, statsOnly); diff --git a/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs b/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs index 2b9ee580..e60bb099 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs @@ -164,20 +164,11 @@ namespace SabreTools.Metadata.DatFiles AppendToMachineKey(machine, Data.Models.Metadata.Machine.DiskKey, diskItem); // Add Part and DiskArea mappings - bool diskContainsPart = disk.Part is not null; - bool diskContainsDiskArea = disk.DiskArea is not null; - if (diskContainsPart && diskContainsDiskArea) + if (disk.Part is not null && disk.DiskArea is not null) { - var partItem = disk.Part; - if (partItem is not null) - { - var partItemInternal = partItem.GetInternalClone(); - partMappings[partItemInternal] = diskItem; - - var diskAreaItem = disk.DiskArea; - if (diskAreaItem is not null) - diskAreaMappings[partItemInternal] = (diskAreaItem.GetInternalClone(), diskItem); - } + var partItemInternal = disk.Part.GetInternalClone(); + partMappings[partItemInternal] = diskItem; + diskAreaMappings[partItemInternal] = (disk.DiskArea.GetInternalClone(), diskItem); } break; @@ -217,13 +208,8 @@ namespace SabreTools.Metadata.DatFiles AppendToMachineKey(machine, Data.Models.Metadata.Machine.FeatureKey, partFeatureItem); // Add Part mapping - bool partFeatureContainsPart = partFeatureItem.ContainsKey(DatItems.Formats.PartFeature.PartKey); - if (partFeatureContainsPart) - { - var partItem = partFeatureItem.Read(DatItems.Formats.PartFeature.PartKey); - if (partItem is not null) - partMappings[partItem.GetInternalClone()] = partFeatureItem; - } + if (partFeature.Part is not null) + partMappings[partFeature.Part.GetInternalClone()] = partFeatureItem; break; case DatItems.Formats.Port port: @@ -247,20 +233,11 @@ namespace SabreTools.Metadata.DatFiles AppendToMachineKey(machine, Data.Models.Metadata.Machine.RomKey, romItem); // Add Part and DataArea mappings - bool romContainsPart = romItem.ContainsKey(DatItems.Formats.Rom.PartKey); - bool romContainsDataArea = romItem.ContainsKey(DatItems.Formats.Rom.DataAreaKey); - if (romContainsPart && romContainsDataArea) + if (rom.Part is not null && rom.DataArea is not null) { - var partItem = romItem.Read(DatItems.Formats.Rom.PartKey); - if (partItem is not null) - { - var partItemInternal = partItem.GetInternalClone(); - partMappings[partItemInternal] = romItem; - - var dataAreaItem = romItem.Read(DatItems.Formats.Rom.DataAreaKey); - if (dataAreaItem is not null) - dataAreaMappings[partItemInternal] = (dataAreaItem.GetInternalClone(), romItem); - } + var partItemInternal = rom.Part.GetInternalClone(); + partMappings[partItemInternal] = romItem; + dataAreaMappings[partItemInternal] = (rom.DataArea.GetInternalClone(), romItem); } break; @@ -339,7 +316,7 @@ namespace SabreTools.Metadata.DatFiles if (dataAreaName is not null) { // Get existing data areas as a list - var dataAreasArr = partItems[partName].Read(Data.Models.Metadata.Part.DataAreaKey) ?? []; + var dataAreasArr = partItems[partName].DataArea ?? []; List dataAreas = [.. dataAreasArr]; // Find the existing disk area to append to, otherwise create a new disk area @@ -362,14 +339,14 @@ namespace SabreTools.Metadata.DatFiles ClearEmptyKeys(aggregateDataArea); // Get existing roms as a list - var romsArr = aggregateDataArea.Read(Data.Models.Metadata.DataArea.RomKey) ?? []; + var romsArr = aggregateDataArea.Rom ?? []; List roms = [.. romsArr]; // Add the rom to the data area roms.Add(romItem); // Assign back the roms - aggregateDataArea[Data.Models.Metadata.DataArea.RomKey] = roms.ToArray(); + aggregateDataArea.Rom = roms.ToArray(); // Assign back the data area if (dataAreaIndex > -1) @@ -378,7 +355,7 @@ namespace SabreTools.Metadata.DatFiles dataAreas.Add(aggregateDataArea); // Assign back the data areas array - partItems[partName][Data.Models.Metadata.Part.DataAreaKey] = dataAreas.ToArray(); + partItems[partName].DataArea = dataAreas.ToArray(); } } @@ -396,7 +373,7 @@ namespace SabreTools.Metadata.DatFiles if (diskAreaName is not null) { // Get existing disk areas as a list - var diskAreasArr = partItems[partName].Read(Data.Models.Metadata.Part.DiskAreaKey) ?? []; + var diskAreasArr = partItems[partName].DiskArea ?? []; List diskAreas = [.. diskAreasArr]; // Find the existing disk area to append to, otherwise create a new disk area @@ -416,14 +393,14 @@ namespace SabreTools.Metadata.DatFiles ClearEmptyKeys(aggregateDiskArea); // Get existing disks as a list - var disksArr = aggregateDiskArea.Read(Data.Models.Metadata.DiskArea.DiskKey) ?? []; + var disksArr = aggregateDiskArea.Disk ?? []; List disks = [.. disksArr]; // Add the disk to the data area disks.Add(diskItem); // Assign back the disks - aggregateDiskArea[Data.Models.Metadata.DiskArea.DiskKey] = disks.ToArray(); + aggregateDiskArea.Disk = disks.ToArray(); // Assign back the disk area if (diskAreaIndex > -1) @@ -432,7 +409,7 @@ namespace SabreTools.Metadata.DatFiles diskAreas.Add(aggregateDiskArea); // Assign back the disk areas array - partItems[partName][Data.Models.Metadata.Part.DiskAreaKey] = diskAreas.ToArray(); + partItems[partName].DiskArea = diskAreas.ToArray(); } } @@ -440,7 +417,7 @@ namespace SabreTools.Metadata.DatFiles if (datItem is Data.Models.Metadata.DipSwitch dipSwitchItem) { // Get existing dipswitches as a list - var dipSwitchesArr = partItems[partName].Read(Data.Models.Metadata.Part.DipSwitchKey) ?? []; + var dipSwitchesArr = partItems[partName].DipSwitch ?? []; List dipSwitches = [.. dipSwitchesArr]; // Clear any empty fields @@ -450,14 +427,14 @@ namespace SabreTools.Metadata.DatFiles dipSwitches.Add(dipSwitchItem); // Assign back the dipswitches - partItems[partName][Data.Models.Metadata.Part.DipSwitchKey] = dipSwitches.ToArray(); + partItems[partName].DipSwitch = dipSwitches.ToArray(); } // If the item is a Feature else if (datItem is Data.Models.Metadata.Feature featureItem) { // Get existing features as a list - var featuresArr = partItems[partName].Read(Data.Models.Metadata.Part.FeatureKey) ?? []; + var featuresArr = partItems[partName].Feature ?? []; List features = [.. featuresArr]; // Clear any empty fields @@ -467,7 +444,7 @@ namespace SabreTools.Metadata.DatFiles features.Add(featureItem); // Assign back the features - partItems[partName][Data.Models.Metadata.Part.FeatureKey] = features.ToArray(); + partItems[partName].Feature = features.ToArray(); } } @@ -585,20 +562,11 @@ namespace SabreTools.Metadata.DatFiles AppendToMachineKey(machine, Data.Models.Metadata.Machine.DiskKey, diskItem); // Add Part and DiskArea mappings - bool diskContainsPart = disk.Part is not null; - bool diskContainsDiskArea = disk.DiskArea is not null; - if (diskContainsPart && diskContainsDiskArea) + if (disk.Part is not null && disk.DiskArea is not null) { - var partItem = disk.Part; - if (partItem is not null) - { - var partItemInternal = partItem.GetInternalClone(); - partMappings[partItemInternal] = diskItem; - - var diskAreaItem = disk.DiskArea; - if (diskAreaItem is not null) - diskAreaMappings[partItemInternal] = (diskAreaItem.GetInternalClone(), diskItem); - } + var partItemInternal = disk.Part.GetInternalClone(); + partMappings[partItemInternal] = diskItem; + diskAreaMappings[partItemInternal] = (disk.DiskArea.GetInternalClone(), diskItem); } break; @@ -638,13 +606,8 @@ namespace SabreTools.Metadata.DatFiles AppendToMachineKey(machine, Data.Models.Metadata.Machine.FeatureKey, partFeatureItem); // Add Part mapping - bool partFeatureContainsPart = partFeatureItem.ContainsKey(DatItems.Formats.PartFeature.PartKey); - if (partFeatureContainsPart) - { - var partItem = partFeatureItem.Read(DatItems.Formats.PartFeature.PartKey); - if (partItem is not null) - partMappings[partItem.GetInternalClone()] = partFeatureItem; - } + if (partFeature.Part is not null) + partMappings[partFeature.Part.GetInternalClone()] = partFeatureItem; break; case DatItems.Formats.Port port: @@ -668,20 +631,11 @@ namespace SabreTools.Metadata.DatFiles AppendToMachineKey(machine, Data.Models.Metadata.Machine.RomKey, romItem); // Add Part and DataArea mappings - bool romContainsPart = romItem.ContainsKey(DatItems.Formats.Rom.PartKey); - bool romContainsDataArea = romItem.ContainsKey(DatItems.Formats.Rom.DataAreaKey); - if (romContainsPart && romContainsDataArea) + if (rom.Part is not null && rom.DataArea is not null) { - var partItem = romItem.Read(DatItems.Formats.Rom.PartKey); - if (partItem is not null) - { - var partItemInternal = partItem.GetInternalClone(); - partMappings[partItemInternal] = romItem; - - var dataAreaItem = romItem.Read(DatItems.Formats.Rom.DataAreaKey); - if (dataAreaItem is not null) - dataAreaMappings[partItemInternal] = (dataAreaItem.GetInternalClone(), romItem); - } + var partItemInternal = rom.Part.GetInternalClone(); + partMappings[partItemInternal] = romItem; + dataAreaMappings[partItemInternal] = (rom.DataArea.GetInternalClone(), romItem); } break; @@ -760,7 +714,7 @@ namespace SabreTools.Metadata.DatFiles if (dataAreaName is not null) { // Get existing data areas as a list - var dataAreasArr = partItems[partName].Read(Data.Models.Metadata.Part.DataAreaKey) ?? []; + var dataAreasArr = partItems[partName].DataArea ?? []; List dataAreas = [.. dataAreasArr]; // Find the existing disk area to append to, otherwise create a new disk area @@ -783,14 +737,14 @@ namespace SabreTools.Metadata.DatFiles ClearEmptyKeys(aggregateDataArea); // Get existing roms as a list - var romsArr = aggregateDataArea.Read(Data.Models.Metadata.DataArea.RomKey) ?? []; + var romsArr = aggregateDataArea.Rom ?? []; List roms = [.. romsArr]; // Add the rom to the data area roms.Add(romItem); // Assign back the roms - aggregateDataArea[Data.Models.Metadata.DataArea.RomKey] = roms.ToArray(); + aggregateDataArea.Rom = roms.ToArray(); // Assign back the data area if (dataAreaIndex > -1) @@ -799,7 +753,7 @@ namespace SabreTools.Metadata.DatFiles dataAreas.Add(aggregateDataArea); // Assign back the data areas array - partItems[partName][Data.Models.Metadata.Part.DataAreaKey] = dataAreas.ToArray(); + partItems[partName].DataArea = dataAreas.ToArray(); } } @@ -817,7 +771,7 @@ namespace SabreTools.Metadata.DatFiles if (diskAreaName is not null) { // Get existing disk areas as a list - var diskAreasArr = partItems[partName].Read(Data.Models.Metadata.Part.DiskAreaKey) ?? []; + var diskAreasArr = partItems[partName].DiskArea ?? []; List diskAreas = [.. diskAreasArr]; // Find the existing disk area to append to, otherwise create a new disk area @@ -837,14 +791,14 @@ namespace SabreTools.Metadata.DatFiles ClearEmptyKeys(aggregateDiskArea); // Get existing disks as a list - var disksArr = aggregateDiskArea.Read(Data.Models.Metadata.DiskArea.DiskKey) ?? []; + var disksArr = aggregateDiskArea.Disk ?? []; List disks = [.. disksArr]; // Add the disk to the data area disks.Add(diskItem); // Assign back the disks - aggregateDiskArea[Data.Models.Metadata.DiskArea.DiskKey] = disks.ToArray(); + aggregateDiskArea.Disk = disks.ToArray(); // Assign back the disk area if (diskAreaIndex > -1) @@ -853,7 +807,7 @@ namespace SabreTools.Metadata.DatFiles diskAreas.Add(aggregateDiskArea); // Assign back the disk areas array - partItems[partName][Data.Models.Metadata.Part.DiskAreaKey] = diskAreas.ToArray(); + partItems[partName].DiskArea = diskAreas.ToArray(); } } @@ -861,7 +815,7 @@ namespace SabreTools.Metadata.DatFiles if (datItem is Data.Models.Metadata.DipSwitch dipSwitchItem) { // Get existing dipswitches as a list - var dipSwitchesArr = partItems[partName].Read(Data.Models.Metadata.Part.DipSwitchKey) ?? []; + var dipSwitchesArr = partItems[partName].DipSwitch ?? []; List dipSwitches = [.. dipSwitchesArr]; // Clear any empty fields @@ -871,14 +825,14 @@ namespace SabreTools.Metadata.DatFiles dipSwitches.Add(dipSwitchItem); // Assign back the dipswitches - partItems[partName][Data.Models.Metadata.Part.DipSwitchKey] = dipSwitches.ToArray(); + partItems[partName].DipSwitch = dipSwitches.ToArray(); } // If the item is a Feature else if (datItem is Data.Models.Metadata.Feature featureItem) { // Get existing features as a list - var featuresArr = partItems[partName].Read(Data.Models.Metadata.Part.FeatureKey) ?? []; + var featuresArr = partItems[partName].Feature ?? []; List features = [.. featuresArr]; // Clear any empty fields @@ -888,7 +842,7 @@ namespace SabreTools.Metadata.DatFiles features.Add(featureItem); // Assign back the features - partItems[partName][Data.Models.Metadata.Part.FeatureKey] = features.ToArray(); + partItems[partName].Feature = features.ToArray(); } } diff --git a/SabreTools.Metadata.DatFiles/Formats/SoftwareList.cs b/SabreTools.Metadata.DatFiles/Formats/SoftwareList.cs index 871dce80..058422c7 100644 --- a/SabreTools.Metadata.DatFiles/Formats/SoftwareList.cs +++ b/SabreTools.Metadata.DatFiles/Formats/SoftwareList.cs @@ -178,9 +178,9 @@ namespace SabreTools.Metadata.DatFiles.Formats } else { - if (string.IsNullOrEmpty(rom.Read(Rom.PartKey)!.Name)) + if (string.IsNullOrEmpty(rom.Part!.Name)) missingFields.Add(nameof(Data.Models.Metadata.Part.Name)); - if (string.IsNullOrEmpty(rom.Read(Rom.PartKey)!.Interface)) + if (string.IsNullOrEmpty(rom.Part!.Interface)) missingFields.Add(nameof(Data.Models.Metadata.Part.Interface)); } @@ -191,9 +191,9 @@ namespace SabreTools.Metadata.DatFiles.Formats } else { - if (string.IsNullOrEmpty(rom.Read(Rom.DataAreaKey)!.Name)) + if (string.IsNullOrEmpty(rom.DataArea!.Name)) missingFields.Add(nameof(Data.Models.Metadata.DataArea.Name)); - if (rom.Read(Rom.DataAreaKey)!.Size is null) + if (rom.DataArea!.Size is null) missingFields.Add(nameof(Data.Models.Metadata.DataArea.Size)); } diff --git a/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs b/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs index ecaddbed..c12dd141 100644 --- a/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs +++ b/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs @@ -46,7 +46,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Assert.Equal(HashType.SHA1.ZeroString, actual.ReadString(Data.Models.Metadata.Rom.SHA1Key)); Assert.Equal(DupeType.All | DupeType.External, actual.DupeType); - DataArea? actualDataArea = actual.Read(Rom.DataAreaKey); + DataArea? actualDataArea = actual.DataArea; Assert.NotNull(actualDataArea); Assert.Equal("name", actualDataArea.Name); @@ -56,7 +56,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Assert.False(actual.RemoveFlag); - Part? actualPart = actual.Read(Rom.PartKey); + Part? actualPart = actual.Part; Assert.NotNull(actualPart); Assert.Equal("name", actualPart.Name); diff --git a/SabreTools.Metadata.DatItems/Formats/DataArea.cs b/SabreTools.Metadata.DatItems/Formats/DataArea.cs index 50af1f05..e37ced8e 100644 --- a/SabreTools.Metadata.DatItems/Formats/DataArea.cs +++ b/SabreTools.Metadata.DatItems/Formats/DataArea.cs @@ -1,4 +1,5 @@ -using System.Xml.Serialization; +using System; +using System.Xml.Serialization; using Newtonsoft.Json; using SabreTools.Data.Extensions; @@ -29,6 +30,11 @@ namespace SabreTools.Metadata.DatItems.Formats set => (_internal as Data.Models.Metadata.DataArea)?.Name = value; } + public Rom[]? Rom { get; set; } + + [JsonIgnore] + public bool RomSpecified => Rom is not null && Rom.Length > 0; + public long? Size { get => (_internal as Data.Models.Metadata.DataArea)?.Size; @@ -47,7 +53,12 @@ namespace SabreTools.Metadata.DatItems.Formats public DataArea() : base() { } - public DataArea(Data.Models.Metadata.DataArea item) : base(item) { } + public DataArea(Data.Models.Metadata.DataArea item) : base(item) + { + // Handle subitems + if (item.Rom is not null) + Rom = Array.ConvertAll(item.Rom, rom => new Rom(rom)); + } public DataArea(Data.Models.Metadata.DataArea item, Machine machine, Source source) : this(item) { @@ -72,6 +83,16 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override object Clone() => new DataArea(_internal.DeepClone() as Data.Models.Metadata.DataArea ?? []); + public override Data.Models.Metadata.DataArea GetInternalClone() + { + var partItem = base.GetInternalClone(); + + if (Rom is not null) + partItem.Rom = Array.ConvertAll(Rom, rom => rom.GetInternalClone()); + + return partItem; + } + #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/Disk.cs b/SabreTools.Metadata.DatItems/Formats/Disk.cs index a85914a4..3816d277 100644 --- a/SabreTools.Metadata.DatItems/Formats/Disk.cs +++ b/SabreTools.Metadata.DatItems/Formats/Disk.cs @@ -153,12 +153,12 @@ namespace SabreTools.Metadata.DatItems.Formats if (DiskArea is not null) { var dataArea = new DataArea { Name = DiskArea.Name }; - rom.Write(Rom.DataAreaKey, dataArea); + rom.DataArea = dataArea; } rom.DupeType = DupeType; rom.Machine = Machine?.Clone() as Machine; - rom.Write(Rom.PartKey, Part?.Clone() as Part); + rom.Part = Part?.Clone() as Part; rom.RemoveFlag = RemoveFlag; rom.Source = Source?.Clone() as Source; diff --git a/SabreTools.Metadata.DatItems/Formats/DiskArea.cs b/SabreTools.Metadata.DatItems/Formats/DiskArea.cs index d02ccb47..bfeffe2d 100644 --- a/SabreTools.Metadata.DatItems/Formats/DiskArea.cs +++ b/SabreTools.Metadata.DatItems/Formats/DiskArea.cs @@ -1,4 +1,5 @@ -using System.Xml.Serialization; +using System; +using System.Xml.Serialization; using Newtonsoft.Json; using SabreTools.Data.Extensions; @@ -13,6 +14,11 @@ namespace SabreTools.Metadata.DatItems.Formats { #region Fields + public Disk[]? Disk { get; set; } + + [JsonIgnore] + public bool DiskSpecified => Disk is not null && Disk.Length > 0; + /// /> public override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.DiskArea; @@ -29,7 +35,12 @@ namespace SabreTools.Metadata.DatItems.Formats public DiskArea() : base() { } - public DiskArea(Data.Models.Metadata.DiskArea item) : base(item) { } + public DiskArea(Data.Models.Metadata.DiskArea item) : base(item) + { + // Handle subitems + if (item.Disk is not null) + Disk = Array.ConvertAll(item.Disk, rom => new Disk(rom)); + } public DiskArea(Data.Models.Metadata.DiskArea item, Machine machine, Source source) : this(item) { @@ -54,6 +65,16 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override object Clone() => new DiskArea(_internal.DeepClone() as Data.Models.Metadata.DiskArea ?? []); + public override Data.Models.Metadata.DiskArea GetInternalClone() + { + var partItem = base.GetInternalClone(); + + if (Disk is not null) + partItem.Disk = Array.ConvertAll(Disk, rom => rom.GetInternalClone()); + + return partItem; + } + #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/Part.cs b/SabreTools.Metadata.DatItems/Formats/Part.cs index dd6f3dbc..f2253d6a 100644 --- a/SabreTools.Metadata.DatItems/Formats/Part.cs +++ b/SabreTools.Metadata.DatItems/Formats/Part.cs @@ -14,15 +14,25 @@ namespace SabreTools.Metadata.DatItems.Formats { #region Fields + public DataArea[]? DataArea { get; set; } + [JsonIgnore] - public bool FeaturesSpecified - { - get - { - var features = Read(Data.Models.Metadata.Part.FeatureKey); - return features is not null && features.Length > 0; - } - } + public bool DataAreaSpecified => DataArea is not null && DataArea.Length > 0; + + public DiskArea[]? DiskArea { get; set; } + + [JsonIgnore] + public bool DiskAreaSpecified => DiskArea is not null && DiskArea.Length > 0; + + public DipSwitch[]? DipSwitch { get; set; } + + [JsonIgnore] + public bool DipSwitchSpecified => DipSwitch is not null && DipSwitch.Length > 0; + + public PartFeature[]? Feature { get; set; } + + [JsonIgnore] + public bool FeatureSpecified => Feature is not null && Feature.Length > 0; public string? Interface { @@ -46,7 +56,21 @@ namespace SabreTools.Metadata.DatItems.Formats public Part() : base() { } - public Part(Data.Models.Metadata.Part item) : base(item) { } + public Part(Data.Models.Metadata.Part item) : base(item) + { + // Handle subitems + if (item.DataArea is not null) + DataArea = Array.ConvertAll(item.DataArea, dataArea => new DataArea(dataArea)); + + if (item.DiskArea is not null) + DiskArea = Array.ConvertAll(item.DiskArea, diskArea => new DiskArea(diskArea)); + + if (item.DipSwitch is not null) + DipSwitch = Array.ConvertAll(item.DipSwitch, dipSwitch => new DipSwitch(dipSwitch)); + + if (item.Feature is not null) + Feature = Array.ConvertAll(item.Feature, feature => new PartFeature(feature)); + } public Part(Data.Models.Metadata.Part item, Machine machine, Source source) : this(item) { @@ -76,33 +100,17 @@ namespace SabreTools.Metadata.DatItems.Formats { 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; - } + if (DataArea is not null) + partItem.DataArea = Array.ConvertAll(DataArea, dataArea => dataArea.GetInternalClone()); - 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; - } + if (DiskArea is not null) + partItem.DiskArea = Array.ConvertAll(DiskArea, diskArea => diskArea.GetInternalClone()); - 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; - } + if (DipSwitch is not null) + partItem.DipSwitch = Array.ConvertAll(DipSwitch, dipSwitch => dipSwitch.GetInternalClone()); - 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; - } + if (Feature is not null) + partItem.Feature = Array.ConvertAll(Feature, feature => feature.GetInternalClone()); return partItem; } diff --git a/SabreTools.Metadata.DatItems/Formats/PartFeature.cs b/SabreTools.Metadata.DatItems/Formats/PartFeature.cs index ca8a6f6d..10972be5 100644 --- a/SabreTools.Metadata.DatItems/Formats/PartFeature.cs +++ b/SabreTools.Metadata.DatItems/Formats/PartFeature.cs @@ -10,15 +10,6 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("part_feature"), XmlRoot("part_feature")] public sealed class PartFeature : DatItem { - #region Constants - - /// - /// Non-standard key for inverted logic - /// - public const string PartKey = "PART"; - - #endregion - #region Fields public Data.Models.Metadata.FeatureType? FeatureType @@ -43,6 +34,11 @@ namespace SabreTools.Metadata.DatItems.Formats set => (_internal as Data.Models.Metadata.Feature)?.Overall = value; } + public Part? Part { get; set; } + + [JsonIgnore] + public bool PartSpecified => Part is not null; + public Data.Models.Metadata.FeatureStatus? Status { get => (_internal as Data.Models.Metadata.Feature)?.Status; diff --git a/SabreTools.Metadata.DatItems/Formats/Rom.cs b/SabreTools.Metadata.DatItems/Formats/Rom.cs index abe3d841..beb4ed44 100644 --- a/SabreTools.Metadata.DatItems/Formats/Rom.cs +++ b/SabreTools.Metadata.DatItems/Formats/Rom.cs @@ -12,33 +12,20 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("rom"), XmlRoot("rom")] public sealed class Rom : DatItem { - #region Constants - - /// - /// Non-standard key for inverted logic - /// - public const string DataAreaKey = "DATAAREA"; - - /// - /// Non-standard key for inverted logic - /// - public const string PartKey = "PART"; - - #endregion - #region Fields + public DataArea? DataArea { get; set; } + [JsonIgnore] public bool DataAreaSpecified { get { - var dataArea = Read(DataAreaKey); - return dataArea is not null - && (!string.IsNullOrEmpty(dataArea.Name) - || dataArea.Size is not null - || dataArea.Width is not null - || dataArea.Endianness is not null); + return DataArea is not null + && (!string.IsNullOrEmpty(DataArea.Name) + || DataArea.Size is not null + || DataArea.Width is not null + || DataArea.Endianness is not null); } } @@ -109,15 +96,16 @@ namespace SabreTools.Metadata.DatItems.Formats } } + public Part? Part { get; set; } + [JsonIgnore] public bool PartSpecified { get { - var part = Read(PartKey); - return part is not null - && (!string.IsNullOrEmpty(part.Name) - || !string.IsNullOrEmpty(part.Interface)); + return Part is not null + && (!string.IsNullOrEmpty(Part.Name) + || !string.IsNullOrEmpty(Part.Interface)); } } diff --git a/SabreTools.Metadata/DictionaryBaseExtensions.cs b/SabreTools.Metadata/DictionaryBaseExtensions.cs index 865469c7..47900bdd 100644 --- a/SabreTools.Metadata/DictionaryBaseExtensions.cs +++ b/SabreTools.Metadata/DictionaryBaseExtensions.cs @@ -114,11 +114,7 @@ namespace SabreTools.Metadata } else if (self is DataArea selfDataArea && other is DataArea otherDataArea) { - if (selfDataArea.Endianness != otherDataArea.Endianness) - return false; - if (selfDataArea.Size != otherDataArea.Size) - return false; - if (selfDataArea.Width != otherDataArea.Width) + if (!selfDataArea.Equals(otherDataArea)) return false; } else if (self is Device selfDevice && other is Device otherDevice) @@ -145,6 +141,11 @@ namespace SabreTools.Metadata { // Intentionally skipped here } + else if (self is DiskArea selfDiskArea && other is DiskArea otherDiskArea) + { + if (!selfDiskArea.Equals(otherDiskArea)) + return false; + } else if (self is Display selfDisplay && other is Display otherDisplay) { if (!selfDisplay.Equals(otherDisplay)) @@ -356,7 +357,7 @@ namespace SabreTools.Metadata } else if (self is Part selfPart && other is Part otherPart) { - if (selfPart.Interface != otherPart.Interface) + if (!selfPart.Equals(otherPart)) return false; } else if (self is Port selfPort && other is Port otherPort) diff --git a/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs b/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs index 864ea791..b024f6ef 100644 --- a/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs @@ -79,7 +79,7 @@ namespace SabreTools.Serialization.CrossModel Endianness = item.Endianness, }; - var roms = item.Read(Data.Models.Metadata.DataArea.RomKey); + var roms = item.Rom; if (roms is not null && roms.Length > 0) dataArea.Rom = Array.ConvertAll(roms, ConvertFromInternalModel); @@ -145,7 +145,7 @@ namespace SabreTools.Serialization.CrossModel Name = item.Name, }; - var disks = item.Read(Data.Models.Metadata.DiskArea.DiskKey); + var disks = item.Disk; if (disks is not null && disks.Length > 0) diskArea.Disk = Array.ConvertAll(disks, ConvertFromInternalModel); @@ -189,19 +189,19 @@ namespace SabreTools.Serialization.CrossModel Interface = item.Interface, }; - var features = item.Read(Data.Models.Metadata.Part.FeatureKey); + var features = item.Feature; if (features is not null && features.Length > 0) part.Feature = Array.ConvertAll(features, ConvertFromInternalModel); - var dataAreas = item.Read(Data.Models.Metadata.Part.DataAreaKey); + var dataAreas = item.DataArea; if (dataAreas is not null && dataAreas.Length > 0) part.DataArea = Array.ConvertAll(dataAreas, ConvertFromInternalModel); - var diskAreas = item.Read(Data.Models.Metadata.Part.DiskAreaKey); + var diskAreas = item.DiskArea; if (diskAreas is not null && diskAreas.Length > 0) part.DiskArea = Array.ConvertAll(diskAreas, ConvertFromInternalModel); - var dipSwitches = item.Read(Data.Models.Metadata.Part.DipSwitchKey); + var dipSwitches = item.DipSwitch; if (dipSwitches is not null && dipSwitches.Length > 0) part.DipSwitch = Array.ConvertAll(dipSwitches, ConvertFromInternalModel); diff --git a/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs b/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs index ab8d821a..dc526522 100644 --- a/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs @@ -81,7 +81,7 @@ namespace SabreTools.Serialization.CrossModel }; if (item.Rom is not null && item.Rom.Length > 0) - dataArea[Data.Models.Metadata.DataArea.RomKey] = Array.ConvertAll(item.Rom, ConvertToInternalModel); + dataArea.Rom = Array.ConvertAll(item.Rom, ConvertToInternalModel); return dataArea; } @@ -145,7 +145,7 @@ namespace SabreTools.Serialization.CrossModel }; if (item.Disk is not null && item.Disk.Length > 0) - diskArea[Data.Models.Metadata.DiskArea.DiskKey] = Array.ConvertAll(item.Disk, ConvertToInternalModel); + diskArea.Disk = Array.ConvertAll(item.Disk, ConvertToInternalModel); return diskArea; } @@ -188,16 +188,16 @@ namespace SabreTools.Serialization.CrossModel }; if (item.Feature is not null && item.Feature.Length > 0) - part[Data.Models.Metadata.Part.FeatureKey] = Array.ConvertAll(item.Feature, ConvertToInternalModel); + part.Feature = Array.ConvertAll(item.Feature, ConvertToInternalModel); if (item.DataArea is not null && item.DataArea.Length > 0) - part[Data.Models.Metadata.Part.DataAreaKey] = Array.ConvertAll(item.DataArea, ConvertToInternalModel); + part.DataArea = Array.ConvertAll(item.DataArea, ConvertToInternalModel); if (item.DiskArea is not null && item.DiskArea.Length > 0) - part[Data.Models.Metadata.Part.DiskAreaKey] = Array.ConvertAll(item.DiskArea, ConvertToInternalModel); + part.DiskArea = Array.ConvertAll(item.DiskArea, ConvertToInternalModel); if (item.DipSwitch is not null && item.DipSwitch.Length > 0) - part[Data.Models.Metadata.Part.DipSwitchKey] = Array.ConvertAll(item.DipSwitch, ConvertToInternalModel); + part.DipSwitch = Array.ConvertAll(item.DipSwitch, ConvertToInternalModel); return part; } From d72c7c9cc00e61c265592dab18db2e80ee251343 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sat, 4 Apr 2026 12:21:09 -0400 Subject: [PATCH 072/142] Convert most keys to properties for Machine --- SabreTools.Data.Models/Metadata/Machine.cs | 162 ++++------- .../DatFileTests.FromMetadata.cs | 54 ++-- .../DatFileTests.ToMetadata.cs | 63 +++-- .../DatFile.FromMetadata.cs | 135 +++++----- .../DatFile.ToMetadata.cs | 252 ++++++++---------- SabreTools.Metadata.DatItems/Machine.cs | 29 -- .../ArchiveDotOrg.Deserializer.cs | 2 +- .../ArchiveDotOrg.Serializer.cs | 2 +- .../AttractMode.Deserializer.cs | 2 +- .../AttractMode.Serializer.cs | 2 +- .../ClrMamePro.Deserializer.cs | 26 +- .../ClrMamePro.Serializer.cs | 58 +--- .../DosCenter.Deserializer.cs | 2 +- .../DosCenter.Serializer.cs | 2 +- .../EverdriveSMDB.Deserializer.cs | 2 +- .../EverdriveSMDB.Serializer.cs | 2 +- .../Hashfile.Deserializer.cs | 2 +- .../Hashfile.Serializer.cs | 22 +- .../Listrom.Deserializer.cs | 4 +- .../Listrom.Serializer.cs | 4 +- .../Listxml.Deserializer.cs | 40 +-- .../Listxml.Serializer.cs | 40 +-- .../Logiqx.Deserializer.cs | 20 +- .../Logiqx.Serializer.cs | 20 +- .../OfflineList.Deserializer.cs | 2 +- .../OfflineList.Serializer.cs | 2 +- .../OpenMSX.Deserializer.cs | 2 +- .../OpenMSX.Serializer.cs | 2 +- .../RomCenter.Deserializer.cs | 2 +- .../RomCenter.Serializer.cs | 4 +- .../SeparatedValue.Deserializer.cs | 6 +- .../SeparatedValue.Serializer.cs | 6 +- .../SoftwareList.Deserializer.cs | 6 +- .../SoftwareList.Serializer.cs | 6 +- 34 files changed, 405 insertions(+), 580 deletions(-) diff --git a/SabreTools.Data.Models/Metadata/Machine.cs b/SabreTools.Data.Models/Metadata/Machine.cs index dba91ba5..9fe850f1 100644 --- a/SabreTools.Data.Models/Metadata/Machine.cs +++ b/SabreTools.Data.Models/Metadata/Machine.cs @@ -8,28 +8,52 @@ namespace SabreTools.Data.Models.Metadata { #region Properties + public Adjuster[]? Adjuster { get; set; } + + public Archive[]? Archive { get; set; } + + public BiosSet[]? BiosSet { get; set; } + public string? Board { get; set; } public string? Buttons { get; set; } + public Chip[]? Chip { get; set; } + public string? CloneOf { get; set; } public string? CloneOfId { get; set; } public string? Company { get; set; } + public Configuration[]? Configuration { get; set; } + public string? Control { get; set; } public string? Country { get; set; } public string? Description { get; set; } + public Device[]? Device { get; set; } + + public DeviceRef[]? DeviceRef { get; set; } + + public DipSwitch[]? DipSwitch { get; set; } + public string? DirName { get; set; } + public Disk[]? Disk { get; set; } + + public Display[]? Display { get; set; } + public string? DisplayCount { get; set; } public string? DisplayType { get; set; } + public Driver? Driver { get; set; } + + public Dump[]? Dump { get; set; } + public string? DuplicateID { get; set; } public string? Emulator { get; set; } @@ -38,6 +62,8 @@ namespace SabreTools.Data.Models.Metadata public string? Favorite { get; set; } + public Feature[]? Feature { get; set; } + public string? GenMSXID { get; set; } public string? Hash { get; set; } @@ -52,6 +78,10 @@ namespace SabreTools.Data.Models.Metadata public string? ImageNumber { get; set; } + public Info[]? Info { get; set; } + + public Input? Input { get; set; } + /// (yes|no) "no" public bool? IsBios { get; set; } @@ -67,22 +97,34 @@ namespace SabreTools.Data.Models.Metadata public string? Manufacturer { get; set; } + public Media[]? Media { get; set; } + public string? Name { get; set; } public string? Notes { get; set; } + public Part[]? Part { get; set; } + public string? PlayedCount { get; set; } public string? PlayedTime { get; set; } public string? Players { get; set; } + public Port[]? Port { get; set; } + public string? Publisher { get; set; } + public RamOption[]? RamOption { get; set; } + public string? RebuildTo { get; set; } + public Release[]? Release { get; set; } + public string? ReleaseNumber { get; set; } + public Rom[]? Rom { get; set; } + public string? RomOf { get; set; } public string? Rotation { get; set; } @@ -90,10 +132,20 @@ namespace SabreTools.Data.Models.Metadata /// (yes|partial|no) "no" public Runnable? Runnable { get; set; } + public Sample[]? Sample { get; set; } + public string? SampleOf { get; set; } public string? SaveType { get; set; } + public SharedFeat[]? SharedFeat { get; set; } + + public Slot[]? Slot { get; set; } + + public SoftwareList[]? SoftwareList { get; set; } + + public Sound? Sound { get; set; } + public string? SourceFile { get; set; } public string? SourceRom { get; set; } @@ -109,131 +161,25 @@ namespace SabreTools.Data.Models.Metadata public string? Url { get; set; } + public Video[]? Video { get; set; } + public string? Year { get; set; } #endregion #region Keys - /// Adjuster[] - [NoFilter] - public const string AdjusterKey = "adjuster"; - - /// Archive[] - [NoFilter] - public const string ArchiveKey = "archive"; - - /// BiosSet[] - [NoFilter] - public const string BiosSetKey = "biosset"; - /// string, string[] public const string CategoryKey = "category"; - /// Chip[] - [NoFilter] - public const string ChipKey = "chip"; - /// string, string[] public const string CommentKey = "comment"; - /// Configuration[] - [NoFilter] - public const string ConfigurationKey = "configuration"; - - /// Device[] - [NoFilter] - public const string DeviceKey = "device"; - - /// DeviceRef[] - [NoFilter] - public const string DeviceRefKey = "device_ref"; - - /// DipSwitch[] - [NoFilter] - public const string DipSwitchKey = "dipswitch"; - - /// Disk[] - [NoFilter] - public const string DiskKey = "disk"; - - /// Display[] - [NoFilter] - public const string DisplayKey = "display"; - - /// Driver - [NoFilter] - public const string DriverKey = "driver"; - - /// Dump[] - [NoFilter] - public const string DumpKey = "dump"; - - /// Feature[] - [NoFilter] - public const string FeatureKey = "feature"; - - /// Info[] - [NoFilter] - public const string InfoKey = "info"; - - /// Input - [NoFilter] - public const string InputKey = "input"; - - /// Media[] - [NoFilter] - public const string MediaKey = "media"; - - /// Part[] - [NoFilter] - public const string PartKey = "part"; - - /// Port[] - [NoFilter] - public const string PortKey = "port"; - - /// RamOption[] - [NoFilter] - public const string RamOptionKey = "ramoption"; - - /// Release[] - [NoFilter] - public const string ReleaseKey = "release"; - - /// Rom[] - [NoFilter] - public const string RomKey = "rom"; - - /// Sample[] - [NoFilter] - public const string SampleKey = "sample"; - - /// SharedFeat[] - [NoFilter] - public const string SharedFeatKey = "sharedfeat"; - - /// Slot[] - [NoFilter] - public const string SlotKey = "slot"; - - /// SoftwareList[] - [NoFilter] - public const string SoftwareListKey = "softwarelist"; - - /// Sound - [NoFilter] - public const string SoundKey = "sound"; - /// TODO: This needs an internal model OR mapping to fields /// Trurip [NoFilter] public const string TruripKey = "trurip"; - /// Video[] - [NoFilter] - public const string VideoKey = "video"; - #endregion } } diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs index 629050b8..176ff0b8 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs @@ -250,74 +250,74 @@ namespace SabreTools.Metadata.DatFiles.Test { return new Data.Models.Metadata.Machine { - [Data.Models.Metadata.Machine.AdjusterKey] = new Data.Models.Metadata.Adjuster[] { CreateMetadataAdjuster() }, - [Data.Models.Metadata.Machine.ArchiveKey] = new Data.Models.Metadata.Archive[] { CreateMetadataArchive() }, - [Data.Models.Metadata.Machine.BiosSetKey] = new Data.Models.Metadata.BiosSet[] { CreateMetadataBiosSet() }, + Adjuster = [CreateMetadataAdjuster()], + Archive = [CreateMetadataArchive()], + BiosSet = [CreateMetadataBiosSet()], Board = "board", Buttons = "buttons", [Data.Models.Metadata.Machine.CategoryKey] = "category", - [Data.Models.Metadata.Machine.ChipKey] = new Data.Models.Metadata.Chip[] { CreateMetadataChip() }, + Chip = [CreateMetadataChip()], CloneOf = "cloneof", CloneOfId = "cloneofid", [Data.Models.Metadata.Machine.CommentKey] = "comment", Company = "company", - [Data.Models.Metadata.Machine.ConfigurationKey] = new Data.Models.Metadata.Configuration[] { CreateMetadataConfiguration() }, + Configuration = [CreateMetadataConfiguration()], Control = "control", Country = "country", Description = "description", - [Data.Models.Metadata.Machine.DeviceKey] = new Data.Models.Metadata.Device[] { CreateMetadataDevice() }, - [Data.Models.Metadata.Machine.DeviceRefKey] = new Data.Models.Metadata.DeviceRef[] { CreateMetadataDeviceRef() }, - [Data.Models.Metadata.Machine.DipSwitchKey] = new Data.Models.Metadata.DipSwitch[] { CreateMetadataDipSwitch() }, + Device = [CreateMetadataDevice()], + DeviceRef = [CreateMetadataDeviceRef()], + DipSwitch = [CreateMetadataDipSwitch()], DirName = "dirname", - [Data.Models.Metadata.Machine.DiskKey] = new Data.Models.Metadata.Disk[] { CreateMetadataDisk() }, + Disk = [CreateMetadataDisk()], DisplayCount = "displaycount", - [Data.Models.Metadata.Machine.DisplayKey] = new Data.Models.Metadata.Display[] { CreateMetadataDisplay() }, + Display = [CreateMetadataDisplay()], DisplayType = "displaytype", - [Data.Models.Metadata.Machine.DriverKey] = CreateMetadataDriver(), - [Data.Models.Metadata.Machine.DumpKey] = new Data.Models.Metadata.Dump[] { CreateMetadataDump() }, + Driver = CreateMetadataDriver(), + Dump = [CreateMetadataDump()], DuplicateID = "duplicateid", Emulator = "emulator", Extra = "extra", Favorite = "favorite", - [Data.Models.Metadata.Machine.FeatureKey] = new Data.Models.Metadata.Feature[] { CreateMetadataFeature() }, + Feature = [CreateMetadataFeature()], GenMSXID = "genmsxid", History = "history", Id = "id", Im1CRC = HashType.CRC32.ZeroString, Im2CRC = HashType.CRC32.ZeroString, ImageNumber = "imagenumber", - [Data.Models.Metadata.Machine.InfoKey] = new Data.Models.Metadata.Info[] { CreateMetadataInfo() }, - [Data.Models.Metadata.Machine.InputKey] = CreateMetadataInput(), + Info = [CreateMetadataInfo()], + Input = CreateMetadataInput(), IsBios = true, IsDevice = true, IsMechanical = true, Language = "language", Location = "location", Manufacturer = "manufacturer", - [Data.Models.Metadata.Machine.MediaKey] = new Data.Models.Metadata.Media[] { CreateMetadataMedia() }, + Media = [CreateMetadataMedia()], Name = "name", Notes = "notes", - [Data.Models.Metadata.Machine.PartKey] = new Data.Models.Metadata.Part[] { CreateMetadataPart() }, + Part = [CreateMetadataPart()], PlayedCount = "playedcount", PlayedTime = "playedtime", Players = "players", - [Data.Models.Metadata.Machine.PortKey] = new Data.Models.Metadata.Port[] { CreateMetadataPort() }, + Port = [CreateMetadataPort()], Publisher = "publisher", - [Data.Models.Metadata.Machine.RamOptionKey] = new Data.Models.Metadata.RamOption[] { CreateMetadataRamOption() }, + RamOption = [CreateMetadataRamOption()], RebuildTo = "rebuildto", - [Data.Models.Metadata.Machine.ReleaseKey] = new Data.Models.Metadata.Release[] { CreateMetadataRelease() }, + Release = [CreateMetadataRelease()], ReleaseNumber = "releasenumber", - [Data.Models.Metadata.Machine.RomKey] = new Data.Models.Metadata.Rom[] { CreateMetadataRom() }, + Rom = [CreateMetadataRom()], RomOf = "romof", Rotation = "rotation", Runnable = Data.Models.Metadata.Runnable.Yes, - [Data.Models.Metadata.Machine.SampleKey] = new Data.Models.Metadata.Sample[] { CreateMetadataSample() }, + Sample = [CreateMetadataSample()], SampleOf = "sampleof", SaveType = "savetype", - [Data.Models.Metadata.Machine.SharedFeatKey] = new Data.Models.Metadata.SharedFeat[] { CreateMetadataSharedFeat() }, - [Data.Models.Metadata.Machine.SlotKey] = new Data.Models.Metadata.Slot[] { CreateMetadataSlot() }, - [Data.Models.Metadata.Machine.SoftwareListKey] = new Data.Models.Metadata.SoftwareList[] { CreateMetadataSoftwareList() }, - [Data.Models.Metadata.Machine.SoundKey] = CreateMetadataSound(), + SharedFeat = [CreateMetadataSharedFeat()], + Slot = [CreateMetadataSlot()], + SoftwareList = [CreateMetadataSoftwareList()], + Sound = CreateMetadataSound(), SourceFile = "sourcefile", SourceRom = "sourcerom", Status = "status", @@ -325,7 +325,7 @@ namespace SabreTools.Metadata.DatFiles.Test System = "system", Tags = "tags", [Data.Models.Metadata.Machine.TruripKey] = CreateMetadataTrurip(), - [Data.Models.Metadata.Machine.VideoKey] = new Data.Models.Metadata.Video[] { CreateMetadataVideo() }, + Video = [CreateMetadataVideo()], Year = "year", }; } diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs index 33a92aa2..ee6c4ce5 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs @@ -471,146 +471,143 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("tags", machine.Tags); Assert.Equal("year", machine.Year); - Data.Models.Metadata.Adjuster[]? adjusters = machine.ReadArray(Data.Models.Metadata.Machine.AdjusterKey); + Data.Models.Metadata.Adjuster[]? adjusters = machine.Adjuster; Assert.NotNull(adjusters); Data.Models.Metadata.Adjuster adjuster = Assert.Single(adjusters); ValidateMetadataAdjuster(adjuster); - Data.Models.Metadata.Archive[]? archives = machine.ReadArray(Data.Models.Metadata.Machine.ArchiveKey); + Data.Models.Metadata.Archive[]? archives = machine.Archive; Assert.NotNull(archives); Data.Models.Metadata.Archive archive = Assert.Single(archives); ValidateMetadataArchive(archive); - Data.Models.Metadata.BiosSet[]? biosSets = machine.ReadArray(Data.Models.Metadata.Machine.BiosSetKey); + Data.Models.Metadata.BiosSet[]? biosSets = machine.BiosSet; Assert.NotNull(biosSets); Data.Models.Metadata.BiosSet biosSet = Assert.Single(biosSets); ValidateMetadataBiosSet(biosSet); - Data.Models.Metadata.Chip[]? chips = machine.ReadArray(Data.Models.Metadata.Machine.ChipKey); + Data.Models.Metadata.Chip[]? chips = machine.Chip; Assert.NotNull(chips); Data.Models.Metadata.Chip chip = Assert.Single(chips); ValidateMetadataChip(chip); - Data.Models.Metadata.Configuration[]? configurations = machine.ReadArray(Data.Models.Metadata.Machine.ConfigurationKey); + Data.Models.Metadata.Configuration[]? configurations = machine.Configuration; Assert.NotNull(configurations); Data.Models.Metadata.Configuration configuration = Assert.Single(configurations); ValidateMetadataConfiguration(configuration); - Data.Models.Metadata.Device[]? devices = machine.ReadArray(Data.Models.Metadata.Machine.DeviceKey); + Data.Models.Metadata.Device[]? devices = machine.Device; Assert.NotNull(devices); Data.Models.Metadata.Device device = Assert.Single(devices); ValidateMetadataDevice(device); - Data.Models.Metadata.DeviceRef[]? deviceRefs = machine.ReadArray(Data.Models.Metadata.Machine.DeviceRefKey); + Data.Models.Metadata.DeviceRef[]? deviceRefs = machine.DeviceRef; Assert.NotNull(deviceRefs); Data.Models.Metadata.DeviceRef deviceRef = Assert.Single(deviceRefs); ValidateMetadataDeviceRef(deviceRef); - Data.Models.Metadata.DipSwitch[]? dipSwitches = machine.ReadArray(Data.Models.Metadata.Machine.DipSwitchKey); + Data.Models.Metadata.DipSwitch[]? dipSwitches = machine.DipSwitch; Assert.NotNull(dipSwitches); Assert.Equal(2, dipSwitches.Length); Data.Models.Metadata.DipSwitch dipSwitch = dipSwitches[0]; ValidateMetadataDipSwitch(dipSwitch); - Data.Models.Metadata.Disk[]? disks = machine.ReadArray(Data.Models.Metadata.Machine.DiskKey); + Data.Models.Metadata.Disk[]? disks = machine.Disk; Assert.NotNull(disks); Assert.Equal(2, disks.Length); Data.Models.Metadata.Disk disk = disks[0]; ValidateMetadataDisk(disk); - Data.Models.Metadata.Display[]? displays = machine.ReadArray(Data.Models.Metadata.Machine.DisplayKey); + Data.Models.Metadata.Display[]? displays = machine.Display; Assert.NotNull(displays); Assert.Equal(2, displays.Length); Data.Models.Metadata.Display? display = Array.Find(displays, d => d.AspectX == null); ValidateMetadataDisplay(display); - Data.Models.Metadata.Driver[]? drivers = machine.ReadArray(Data.Models.Metadata.Machine.DriverKey); - Assert.NotNull(drivers); - Data.Models.Metadata.Driver driver = Assert.Single(drivers); + Data.Models.Metadata.Driver? driver = machine.Driver; + Assert.NotNull(driver); ValidateMetadataDriver(driver); // TODO: Implement this validation - // Data.Models.Metadata.Dump[]? dumps = machine.ReadArray(Data.Models.Metadata.Machine.DumpKey); + // Data.Models.Metadata.Dump[]? dumps = machine.Dump; // Assert.NotNull(dumps); // Data.Models.Metadata.Dump dump = Assert.Single(dumps); // ValidateMetadataDump(dump); - Data.Models.Metadata.Feature[]? features = machine.ReadArray(Data.Models.Metadata.Machine.FeatureKey); + Data.Models.Metadata.Feature[]? features = machine.Feature; Assert.NotNull(features); Assert.Equal(2, features.Length); Data.Models.Metadata.Feature feature = features[0]; ValidateMetadataFeature(feature); - Data.Models.Metadata.Info[]? infos = machine.ReadArray(Data.Models.Metadata.Machine.InfoKey); + Data.Models.Metadata.Info[]? infos = machine.Info; Assert.NotNull(infos); Data.Models.Metadata.Info info = Assert.Single(infos); ValidateMetadataInfo(info); - Data.Models.Metadata.Input[]? inputs = machine.ReadArray(Data.Models.Metadata.Machine.InputKey); - Assert.NotNull(inputs); - Data.Models.Metadata.Input input = Assert.Single(inputs); + Data.Models.Metadata.Input? input = machine.Input; + Assert.NotNull(input); ValidateMetadataInput(input); - Data.Models.Metadata.Media[]? media = machine.ReadArray(Data.Models.Metadata.Machine.MediaKey); + Data.Models.Metadata.Media[]? media = machine.Media; Assert.NotNull(media); Data.Models.Metadata.Media medium = Assert.Single(media); ValidateMetadataMedia(medium); - Data.Models.Metadata.Part[]? parts = machine.ReadArray(Data.Models.Metadata.Machine.PartKey); + Data.Models.Metadata.Part[]? parts = machine.Part; Assert.NotNull(parts); Data.Models.Metadata.Part part = Assert.Single(parts); ValidateMetadataPart(part); - Data.Models.Metadata.Port[]? ports = machine.ReadArray(Data.Models.Metadata.Machine.PortKey); + Data.Models.Metadata.Port[]? ports = machine.Port; Assert.NotNull(ports); Data.Models.Metadata.Port port = Assert.Single(ports); ValidateMetadataPort(port); - Data.Models.Metadata.RamOption[]? ramOptions = machine.ReadArray(Data.Models.Metadata.Machine.RamOptionKey); + Data.Models.Metadata.RamOption[]? ramOptions = machine.RamOption; Assert.NotNull(ramOptions); Data.Models.Metadata.RamOption ramOption = Assert.Single(ramOptions); ValidateMetadataRamOption(ramOption); - Data.Models.Metadata.Release[]? releases = machine.ReadArray(Data.Models.Metadata.Machine.ReleaseKey); + Data.Models.Metadata.Release[]? releases = machine.Release; Assert.NotNull(releases); Data.Models.Metadata.Release release = Assert.Single(releases); ValidateMetadataRelease(release); - Data.Models.Metadata.Rom[]? roms = machine.ReadArray(Data.Models.Metadata.Machine.RomKey); + Data.Models.Metadata.Rom[]? roms = machine.Rom; Assert.NotNull(roms); Assert.Equal(2, roms.Length); Data.Models.Metadata.Rom rom = roms[0]; ValidateMetadataRom(rom); - Data.Models.Metadata.Sample[]? samples = machine.ReadArray(Data.Models.Metadata.Machine.SampleKey); + Data.Models.Metadata.Sample[]? samples = machine.Sample; Assert.NotNull(samples); Data.Models.Metadata.Sample sample = Assert.Single(samples); ValidateMetadataSample(sample); - Data.Models.Metadata.SharedFeat[]? sharedFeats = machine.ReadArray(Data.Models.Metadata.Machine.SharedFeatKey); + Data.Models.Metadata.SharedFeat[]? sharedFeats = machine.SharedFeat; Assert.NotNull(sharedFeats); Data.Models.Metadata.SharedFeat sharedFeat = Assert.Single(sharedFeats); ValidateMetadataSharedFeat(sharedFeat); - Data.Models.Metadata.Slot[]? slots = machine.ReadArray(Data.Models.Metadata.Machine.SlotKey); + Data.Models.Metadata.Slot[]? slots = machine.Slot; Assert.NotNull(slots); Data.Models.Metadata.Slot slot = Assert.Single(slots); ValidateMetadataSlot(slot); - Data.Models.Metadata.SoftwareList[]? softwareLists = machine.ReadArray(Data.Models.Metadata.Machine.SoftwareListKey); + Data.Models.Metadata.SoftwareList[]? softwareLists = machine.SoftwareList; Assert.NotNull(softwareLists); Data.Models.Metadata.SoftwareList softwareList = Assert.Single(softwareLists); ValidateMetadataSoftwareList(softwareList); - Data.Models.Metadata.Sound[]? sounds = machine.ReadArray(Data.Models.Metadata.Machine.SoundKey); - Assert.NotNull(sounds); - Data.Models.Metadata.Sound sound = Assert.Single(sounds); + Data.Models.Metadata.Sound? sound = machine.Sound; + Assert.NotNull(sound); ValidateMetadataSound(sound); Data.Models.Logiqx.Trurip? trurip = machine.Read(Data.Models.Metadata.Machine.TruripKey); ValidateMetadataTrurip(trurip); - Data.Models.Metadata.Video[]? videos = machine.ReadArray(Data.Models.Metadata.Machine.VideoKey); + Data.Models.Metadata.Video[]? videos = machine.Video; Assert.NotNull(videos); Data.Models.Metadata.Video video = Assert.Single(videos); ValidateMetadataVideo(video); diff --git a/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs b/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs index 02320b1c..cd06ac80 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs @@ -237,9 +237,9 @@ namespace SabreTools.Metadata.DatFiles // long machineIndex = AddMachineDB(machine); // Convert items in the machine - if (item.ContainsKey(Data.Models.Metadata.Machine.AdjusterKey)) + if (item.Adjuster is not null) { - var items = item.ReadArray(Data.Models.Metadata.Machine.AdjusterKey) ?? []; + var items = item.Adjuster ?? []; var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item)); Array.ForEach(filtered, item => { @@ -249,9 +249,9 @@ namespace SabreTools.Metadata.DatFiles }); } - if (item.ContainsKey(Data.Models.Metadata.Machine.ArchiveKey)) + if (item.Archive is not null) { - var items = item.ReadArray(Data.Models.Metadata.Machine.ArchiveKey) ?? []; + var items = item.Archive ?? []; var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item)); Array.ForEach(filtered, item => { @@ -261,9 +261,9 @@ namespace SabreTools.Metadata.DatFiles }); } - if (item.ContainsKey(Data.Models.Metadata.Machine.BiosSetKey)) + if (item.BiosSet is not null) { - var items = item.ReadArray(Data.Models.Metadata.Machine.BiosSetKey) ?? []; + var items = item.BiosSet ?? []; var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item)); Array.ForEach(filtered, item => { @@ -273,9 +273,9 @@ namespace SabreTools.Metadata.DatFiles }); } - if (item.ContainsKey(Data.Models.Metadata.Machine.ChipKey)) + if (item.Chip is not null) { - var items = item.ReadArray(Data.Models.Metadata.Machine.ChipKey) ?? []; + var items = item.Chip ?? []; var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item)); Array.ForEach(filtered, item => { @@ -285,9 +285,9 @@ namespace SabreTools.Metadata.DatFiles }); } - if (item.ContainsKey(Data.Models.Metadata.Machine.ConfigurationKey)) + if (item.Configuration is not null) { - var items = item.ReadArray(Data.Models.Metadata.Machine.ConfigurationKey) ?? []; + var items = item.Configuration ?? []; var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item)); Array.ForEach(filtered, item => { @@ -297,9 +297,9 @@ namespace SabreTools.Metadata.DatFiles }); } - if (item.ContainsKey(Data.Models.Metadata.Machine.DeviceKey)) + if (item.Device is not null) { - var items = item.ReadArray(Data.Models.Metadata.Machine.DeviceKey) ?? []; + var items = item.Device ?? []; var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item)); Array.ForEach(filtered, item => { @@ -309,9 +309,9 @@ namespace SabreTools.Metadata.DatFiles }); } - if (item.ContainsKey(Data.Models.Metadata.Machine.DeviceRefKey)) + if (item.DeviceRef is not null) { - var items = item.ReadArray(Data.Models.Metadata.Machine.DeviceRefKey) ?? []; + var items = item.DeviceRef ?? []; // Do not filter these due to later use Array.ForEach(items, item => { @@ -321,9 +321,9 @@ namespace SabreTools.Metadata.DatFiles }); } - if (item.ContainsKey(Data.Models.Metadata.Machine.DipSwitchKey)) + if (item.DipSwitch is not null) { - var items = item.ReadArray(Data.Models.Metadata.Machine.DipSwitchKey) ?? []; + var items = item.DipSwitch ?? []; var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item)); Array.ForEach(filtered, item => { @@ -333,9 +333,9 @@ namespace SabreTools.Metadata.DatFiles }); } - if (item.ContainsKey(Data.Models.Metadata.Machine.DiskKey)) + if (item.Disk is not null) { - var items = item.ReadArray(Data.Models.Metadata.Machine.DiskKey) ?? []; + var items = item.Disk ?? []; var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item)); Array.ForEach(filtered, item => { @@ -345,9 +345,9 @@ namespace SabreTools.Metadata.DatFiles }); } - if (item.ContainsKey(Data.Models.Metadata.Machine.DisplayKey)) + if (item.Display is not null) { - var items = item.ReadArray(Data.Models.Metadata.Machine.DisplayKey) ?? []; + var items = item.Display ?? []; var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item)); Array.ForEach(filtered, item => { @@ -357,21 +357,16 @@ namespace SabreTools.Metadata.DatFiles }); } - if (item.ContainsKey(Data.Models.Metadata.Machine.DriverKey)) + if (item.Driver is not null && filterRunner?.Run(item.Driver) != false) { - var items = item.ReadArray(Data.Models.Metadata.Machine.DriverKey) ?? []; - var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item)); - Array.ForEach(filtered, item => - { - var datItem = new Driver(item, machine, source); - AddItem(datItem, statsOnly); - // AddItemDB(datItem, machineIndex, sourceIndex, statsOnly); - }); + var datItem = new Driver(item.Driver, machine, source); + AddItem(datItem, statsOnly); + // AddItemDB(datItem, machineIndex, sourceIndex, statsOnly); } - if (item.ContainsKey(Data.Models.Metadata.Machine.DumpKey)) + if (item.Dump is not null) { - var items = item.ReadArray(Data.Models.Metadata.Machine.DumpKey) ?? []; + var items = item.Dump ?? []; for (int i = 0; i < items.Length; i++) { var datItem = new Rom(items[i], machine, source, i); @@ -383,9 +378,9 @@ namespace SabreTools.Metadata.DatFiles } } - if (item.ContainsKey(Data.Models.Metadata.Machine.FeatureKey)) + if (item.Feature is not null) { - var items = item.ReadArray(Data.Models.Metadata.Machine.FeatureKey) ?? []; + var items = item.Feature ?? []; var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item)); Array.ForEach(filtered, item => { @@ -395,9 +390,9 @@ namespace SabreTools.Metadata.DatFiles }); } - if (item.ContainsKey(Data.Models.Metadata.Machine.InfoKey)) + if (item.Info is not null) { - var items = item.ReadArray(Data.Models.Metadata.Machine.InfoKey) ?? []; + var items = item.Info ?? []; var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item)); Array.ForEach(filtered, item => { @@ -407,21 +402,16 @@ namespace SabreTools.Metadata.DatFiles }); } - if (item.ContainsKey(Data.Models.Metadata.Machine.InputKey)) + if (item.Input is not null && filterRunner?.Run(item.Input) != false) { - var items = item.ReadArray(Data.Models.Metadata.Machine.InputKey) ?? []; - var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item)); - Array.ForEach(filtered, item => - { - var datItem = new Input(item, machine, source); - AddItem(datItem, statsOnly); - // AddItemDB(datItem, machineIndex, sourceIndex, statsOnly); - }); + var datItem = new Input(item.Input, machine, source); + AddItem(datItem, statsOnly); + // AddItemDB(datItem, machineIndex, sourceIndex, statsOnly); } - if (item.ContainsKey(Data.Models.Metadata.Machine.MediaKey)) + if (item.Media is not null) { - var items = item.ReadArray(Data.Models.Metadata.Machine.MediaKey) ?? []; + var items = item.Media ?? []; var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item)); Array.ForEach(filtered, item => { @@ -431,15 +421,15 @@ namespace SabreTools.Metadata.DatFiles }); } - if (item.ContainsKey(Data.Models.Metadata.Machine.PartKey)) + if (item.Part is not null) { - var items = item.ReadArray(Data.Models.Metadata.Machine.PartKey) ?? []; + var items = item.Part ?? []; ProcessItems(items, machine, machineIndex: 0, source, sourceIndex, statsOnly, filterRunner); } - if (item.ContainsKey(Data.Models.Metadata.Machine.PortKey)) + if (item.Port is not null) { - var items = item.ReadArray(Data.Models.Metadata.Machine.PortKey) ?? []; + var items = item.Port ?? []; var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item)); Array.ForEach(filtered, item => { @@ -449,9 +439,9 @@ namespace SabreTools.Metadata.DatFiles }); } - if (item.ContainsKey(Data.Models.Metadata.Machine.RamOptionKey)) + if (item.RamOption is not null) { - var items = item.ReadArray(Data.Models.Metadata.Machine.RamOptionKey) ?? []; + var items = item.RamOption ?? []; var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item)); Array.ForEach(filtered, item => { @@ -461,9 +451,9 @@ namespace SabreTools.Metadata.DatFiles }); } - if (item.ContainsKey(Data.Models.Metadata.Machine.ReleaseKey)) + if (item.Release is not null) { - var items = item.ReadArray(Data.Models.Metadata.Machine.ReleaseKey) ?? []; + var items = item.Release ?? []; var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item)); Array.ForEach(filtered, item => { @@ -473,9 +463,9 @@ namespace SabreTools.Metadata.DatFiles }); } - if (item.ContainsKey(Data.Models.Metadata.Machine.RomKey)) + if (item.Rom is not null) { - var items = item.ReadArray(Data.Models.Metadata.Machine.RomKey) ?? []; + var items = item.Rom ?? []; var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item)); Array.ForEach(filtered, item => { @@ -488,9 +478,9 @@ namespace SabreTools.Metadata.DatFiles }); } - if (item.ContainsKey(Data.Models.Metadata.Machine.SampleKey)) + if (item.Sample is not null) { - var items = item.ReadArray(Data.Models.Metadata.Machine.SampleKey) ?? []; + var items = item.Sample ?? []; var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item)); Array.ForEach(filtered, item => { @@ -500,9 +490,9 @@ namespace SabreTools.Metadata.DatFiles }); } - if (item.ContainsKey(Data.Models.Metadata.Machine.SharedFeatKey)) + if (item.SharedFeat is not null) { - var items = item.ReadArray(Data.Models.Metadata.Machine.SharedFeatKey) ?? []; + var items = item.SharedFeat ?? []; var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item)); Array.ForEach(filtered, item => { @@ -512,9 +502,9 @@ namespace SabreTools.Metadata.DatFiles }); } - if (item.ContainsKey(Data.Models.Metadata.Machine.SlotKey)) + if (item.Slot is not null) { - var items = item.ReadArray(Data.Models.Metadata.Machine.SlotKey) ?? []; + var items = item.Slot ?? []; // Do not filter these due to later use Array.ForEach(items, item => { @@ -524,9 +514,9 @@ namespace SabreTools.Metadata.DatFiles }); } - if (item.ContainsKey(Data.Models.Metadata.Machine.SoftwareListKey)) + if (item.SoftwareList is not null) { - var items = item.ReadArray(Data.Models.Metadata.Machine.SoftwareListKey) ?? []; + var items = item.SoftwareList ?? []; var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item)); Array.ForEach(filtered, item => { @@ -536,21 +526,16 @@ namespace SabreTools.Metadata.DatFiles }); } - if (item.ContainsKey(Data.Models.Metadata.Machine.SoundKey)) + if (item.Sound is not null && filterRunner?.Run(item.Sound) != false) { - var items = item.ReadArray(Data.Models.Metadata.Machine.SoundKey) ?? []; - var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item)); - Array.ForEach(filtered, item => - { - var datItem = new Sound(item, machine, source); - AddItem(datItem, statsOnly); - // AddItemDB(datItem, machineIndex, sourceIndex, statsOnly); - }); + var datItem = new Sound(item.Sound, machine, source); + AddItem(datItem, statsOnly); + // AddItemDB(datItem, machineIndex, sourceIndex, statsOnly); } - if (item.ContainsKey(Data.Models.Metadata.Machine.VideoKey)) + if (item.Video is not null) { - var items = item.ReadArray(Data.Models.Metadata.Machine.VideoKey) ?? []; + var items = item.Video ?? []; var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item)); Array.ForEach(filtered, item => { diff --git a/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs b/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs index e60bb099..3a412c84 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs @@ -115,43 +115,43 @@ namespace SabreTools.Metadata.DatFiles { case DatItems.Formats.Adjuster adjuster: var adjusterItem = adjuster.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.AdjusterKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.AdjusterKey, adjusterItem); + machine.Adjuster ??= []; + machine.Adjuster = [.. machine.Adjuster, adjusterItem]; break; case DatItems.Formats.Archive archive: var archiveItem = archive.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.ArchiveKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.ArchiveKey, archiveItem); + machine.Archive ??= []; + machine.Archive = [.. machine.Archive, archiveItem]; break; case DatItems.Formats.BiosSet biosSet: var biosSetItem = biosSet.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.BiosSetKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.BiosSetKey, biosSetItem); + machine.BiosSet ??= []; + machine.BiosSet = [.. machine.BiosSet, biosSetItem]; break; case DatItems.Formats.Chip chip: var chipItem = chip.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.ChipKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.ChipKey, chipItem); + machine.Chip ??= []; + machine.Chip = [.. machine.Chip, chipItem]; break; case DatItems.Formats.Configuration configuration: var configurationItem = configuration.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.ConfigurationKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.ConfigurationKey, configurationItem); + machine.Configuration ??= []; + machine.Configuration = [.. machine.Configuration, configurationItem]; break; case DatItems.Formats.Device device: var deviceItem = device.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.DeviceKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.DeviceKey, deviceItem); + machine.Device ??= []; + machine.Device = [.. machine.Device, deviceItem]; break; case DatItems.Formats.DeviceRef deviceRef: var deviceRefItem = deviceRef.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.DeviceRefKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.DeviceRefKey, deviceRefItem); + machine.DeviceRef ??= []; + machine.DeviceRef = [.. machine.DeviceRef, deviceRefItem]; break; case DatItems.Formats.DipSwitch dipSwitch: var dipSwitchItem = dipSwitch.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.DipSwitchKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.DipSwitchKey, dipSwitchItem); + machine.DipSwitch ??= []; + machine.DipSwitch = [.. machine.DipSwitch, dipSwitchItem]; // Add Part mapping if (dipSwitch.Part is not null) @@ -160,8 +160,8 @@ namespace SabreTools.Metadata.DatFiles break; case DatItems.Formats.Disk disk: var diskItem = disk.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.DiskKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.DiskKey, diskItem); + machine.Disk ??= []; + machine.Disk = [.. machine.Disk, diskItem]; // Add Part and DiskArea mappings if (disk.Part is not null && disk.DiskArea is not null) @@ -174,38 +174,34 @@ namespace SabreTools.Metadata.DatFiles break; case DatItems.Formats.Display display: var displayItem = ProcessItem(display, machine); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.DisplayKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.DisplayKey, displayItem); + machine.Display ??= []; + machine.Display = [.. machine.Display, displayItem]; break; case DatItems.Formats.Driver driver: - var driverItem = driver.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.DriverKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.DriverKey, driverItem); + machine.Driver = driver.GetInternalClone(); break; case DatItems.Formats.Feature feature: var featureItem = feature.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.FeatureKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.FeatureKey, featureItem); + machine.Feature ??= []; + machine.Feature = [.. machine.Feature, featureItem]; break; case DatItems.Formats.Info info: var infoItem = info.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.InfoKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.InfoKey, infoItem); + machine.Info ??= []; + machine.Info = [.. machine.Info, infoItem]; break; case DatItems.Formats.Input input: - var inputItem = input.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.InputKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.InputKey, inputItem); + machine.Input = input.GetInternalClone(); break; case DatItems.Formats.Media media: var mediaItem = media.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.MediaKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.MediaKey, mediaItem); + machine.Media ??= []; + machine.Media = [.. machine.Media, mediaItem]; break; case DatItems.Formats.PartFeature partFeature: var partFeatureItem = partFeature.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.FeatureKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.FeatureKey, partFeatureItem); + machine.Feature ??= []; + machine.Feature = [.. machine.Feature, partFeatureItem]; // Add Part mapping if (partFeature.Part is not null) @@ -214,23 +210,23 @@ namespace SabreTools.Metadata.DatFiles break; case DatItems.Formats.Port port: var portItem = port.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.PortKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.PortKey, portItem); + machine.Port ??= []; + machine.Port = [.. machine.Port, portItem]; break; case DatItems.Formats.RamOption ramOption: var ramOptionItem = ramOption.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.RamOptionKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.RamOptionKey, ramOptionItem); + machine.RamOption ??= []; + machine.RamOption = [.. machine.RamOption, ramOptionItem]; break; case DatItems.Formats.Release release: var releaseItem = release.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.ReleaseKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.ReleaseKey, releaseItem); + machine.Release ??= []; + machine.Release = [.. machine.Release, releaseItem]; break; case DatItems.Formats.Rom rom: var romItem = ProcessItem(rom, machine); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.RomKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.RomKey, romItem); + machine.Rom ??= []; + machine.Rom = [.. machine.Rom, romItem]; // Add Part and DataArea mappings if (rom.Part is not null && rom.DataArea is not null) @@ -243,28 +239,26 @@ namespace SabreTools.Metadata.DatFiles break; case DatItems.Formats.Sample sample: var sampleItem = sample.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.SampleKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.SampleKey, sampleItem); + machine.Sample ??= []; + machine.Sample = [.. machine.Sample, sampleItem]; break; case DatItems.Formats.SharedFeat sharedFeat: var sharedFeatItem = sharedFeat.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.SharedFeatKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.SharedFeatKey, sharedFeatItem); + machine.SharedFeat ??= []; + machine.SharedFeat = [.. machine.SharedFeat, sharedFeatItem]; break; case DatItems.Formats.Slot slot: var slotItem = slot.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.SlotKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.SlotKey, slotItem); + machine.Slot ??= []; + machine.Slot = [.. machine.Slot, slotItem]; break; case DatItems.Formats.SoftwareList softwareList: var softwareListItem = softwareList.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.SoftwareListKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.SoftwareListKey, softwareListItem); + machine.SoftwareList ??= []; + machine.SoftwareList = [.. machine.SoftwareList, softwareListItem]; break; case DatItems.Formats.Sound sound: - var soundItem = sound.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.SoundKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.SoundKey, soundItem); + machine.Sound = sound.GetInternalClone(); break; default: // This should never happen @@ -449,7 +443,7 @@ namespace SabreTools.Metadata.DatFiles } // Assign the part array to the machine - machine[Data.Models.Metadata.Machine.PartKey] = (Data.Models.Metadata.Part[])[.. partItems.Values]; + machine.Part = [.. partItems.Values]; } // Add the machine to the list @@ -513,43 +507,43 @@ namespace SabreTools.Metadata.DatFiles { case DatItems.Formats.Adjuster adjuster: var adjusterItem = adjuster.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.AdjusterKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.AdjusterKey, adjusterItem); + machine.Adjuster ??= []; + machine.Adjuster = [.. machine.Adjuster, adjusterItem]; break; case DatItems.Formats.Archive archive: var archiveItem = archive.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.ArchiveKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.ArchiveKey, archiveItem); + machine.Archive ??= []; + machine.Archive = [.. machine.Archive, archiveItem]; break; case DatItems.Formats.BiosSet biosSet: var biosSetItem = biosSet.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.BiosSetKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.BiosSetKey, biosSetItem); + machine.BiosSet ??= []; + machine.BiosSet = [.. machine.BiosSet, biosSetItem]; break; case DatItems.Formats.Chip chip: var chipItem = chip.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.ChipKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.ChipKey, chipItem); + machine.Chip ??= []; + machine.Chip = [.. machine.Chip, chipItem]; break; case DatItems.Formats.Configuration configuration: var configurationItem = configuration.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.ConfigurationKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.ConfigurationKey, configurationItem); + machine.Configuration ??= []; + machine.Configuration = [.. machine.Configuration, configurationItem]; break; case DatItems.Formats.Device device: var deviceItem = device.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.DeviceKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.DeviceKey, deviceItem); + machine.Device ??= []; + machine.Device = [.. machine.Device, deviceItem]; break; case DatItems.Formats.DeviceRef deviceRef: var deviceRefItem = deviceRef.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.DeviceRefKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.DeviceRefKey, deviceRefItem); + machine.DeviceRef ??= []; + machine.DeviceRef = [.. machine.DeviceRef, deviceRefItem]; break; case DatItems.Formats.DipSwitch dipSwitch: var dipSwitchItem = dipSwitch.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.DipSwitchKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.DipSwitchKey, dipSwitchItem); + machine.DipSwitch ??= []; + machine.DipSwitch = [.. machine.DipSwitch, dipSwitchItem]; // Add Part mapping if (dipSwitch.Part is not null) @@ -558,8 +552,8 @@ namespace SabreTools.Metadata.DatFiles break; case DatItems.Formats.Disk disk: var diskItem = disk.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.DiskKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.DiskKey, diskItem); + machine.Disk ??= []; + machine.Disk = [.. machine.Disk, diskItem]; // Add Part and DiskArea mappings if (disk.Part is not null && disk.DiskArea is not null) @@ -572,38 +566,34 @@ namespace SabreTools.Metadata.DatFiles break; case DatItems.Formats.Display display: var displayItem = ProcessItem(display, machine); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.DisplayKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.DisplayKey, displayItem); + machine.Display ??= []; + machine.Display = [.. machine.Display, displayItem]; break; case DatItems.Formats.Driver driver: - var driverItem = driver.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.DriverKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.DriverKey, driverItem); + machine.Driver = driver.GetInternalClone(); break; case DatItems.Formats.Feature feature: var featureItem = feature.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.FeatureKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.FeatureKey, featureItem); + machine.Feature ??= []; + machine.Feature = [.. machine.Feature, featureItem]; break; case DatItems.Formats.Info info: var infoItem = info.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.InfoKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.InfoKey, infoItem); + machine.Info ??= []; + machine.Info = [.. machine.Info, infoItem]; break; case DatItems.Formats.Input input: - var inputItem = input.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.InputKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.InputKey, inputItem); + machine.Input = input.GetInternalClone(); break; case DatItems.Formats.Media media: var mediaItem = media.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.MediaKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.MediaKey, mediaItem); + machine.Media ??= []; + machine.Media = [.. machine.Media, mediaItem]; break; case DatItems.Formats.PartFeature partFeature: var partFeatureItem = partFeature.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.FeatureKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.FeatureKey, partFeatureItem); + machine.Feature ??= []; + machine.Feature = [.. machine.Feature, partFeatureItem]; // Add Part mapping if (partFeature.Part is not null) @@ -612,23 +602,23 @@ namespace SabreTools.Metadata.DatFiles break; case DatItems.Formats.Port port: var portItem = port.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.PortKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.PortKey, portItem); + machine.Port ??= []; + machine.Port = [.. machine.Port, portItem]; break; case DatItems.Formats.RamOption ramOption: var ramOptionItem = ramOption.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.RamOptionKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.RamOptionKey, ramOptionItem); + machine.RamOption ??= []; + machine.RamOption = [.. machine.RamOption, ramOptionItem]; break; case DatItems.Formats.Release release: var releaseItem = release.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.ReleaseKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.ReleaseKey, releaseItem); + machine.Release ??= []; + machine.Release = [.. machine.Release, releaseItem]; break; case DatItems.Formats.Rom rom: var romItem = ProcessItem(rom, machine); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.RomKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.RomKey, romItem); + machine.Rom ??= []; + machine.Rom = [.. machine.Rom, romItem]; // Add Part and DataArea mappings if (rom.Part is not null && rom.DataArea is not null) @@ -641,28 +631,26 @@ namespace SabreTools.Metadata.DatFiles break; case DatItems.Formats.Sample sample: var sampleItem = sample.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.SampleKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.SampleKey, sampleItem); + machine.Sample ??= []; + machine.Sample = [.. machine.Sample, sampleItem]; break; case DatItems.Formats.SharedFeat sharedFeat: var sharedFeatItem = sharedFeat.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.SharedFeatKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.SharedFeatKey, sharedFeatItem); + machine.SharedFeat ??= []; + machine.SharedFeat = [.. machine.SharedFeat, sharedFeatItem]; break; case DatItems.Formats.Slot slot: var slotItem = slot.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.SlotKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.SlotKey, slotItem); + machine.Slot ??= []; + machine.Slot = [.. machine.Slot, slotItem]; break; case DatItems.Formats.SoftwareList softwareList: var softwareListItem = softwareList.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.SoftwareListKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.SoftwareListKey, softwareListItem); + machine.SoftwareList ??= []; + machine.SoftwareList = [.. machine.SoftwareList, softwareListItem]; break; case DatItems.Formats.Sound sound: - var soundItem = sound.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.SoundKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.SoundKey, soundItem); + machine.Sound = sound.GetInternalClone(); break; default: // This should never happen @@ -847,7 +835,7 @@ namespace SabreTools.Metadata.DatFiles } // Assign the part array to the machine - machine[Data.Models.Metadata.Machine.PartKey] = (Data.Models.Metadata.Part[])[.. partItems.Values]; + machine.Part = [.. partItems.Values]; } // Add the machine to the list @@ -885,8 +873,8 @@ namespace SabreTools.Metadata.DatFiles Width = displayItem.Width, }; - EnsureMachineKey(machine, Data.Models.Metadata.Machine.VideoKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.VideoKey, videoItem); + machine.Video ??= []; + machine.Video = [.. machine.Video, videoItem]; } return displayItem; @@ -932,8 +920,8 @@ namespace SabreTools.Metadata.DatFiles dumpRom[Data.Models.Metadata.Dump.OriginalKey] = newOriginal; } - EnsureMachineKey(machine, Data.Models.Metadata.Machine.DumpKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.DumpKey, dumpRom); + machine.Dump ??= []; + machine.Dump = [.. machine.Dump, dumpRom]; break; case OpenMSXSubType.MegaRom: @@ -960,8 +948,8 @@ namespace SabreTools.Metadata.DatFiles dumpMegaRom[Data.Models.Metadata.Dump.OriginalKey] = newOriginal; } - EnsureMachineKey(machine, Data.Models.Metadata.Machine.DumpKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.DumpKey, dumpMegaRom); + machine.Dump ??= []; + machine.Dump = [.. machine.Dump, dumpMegaRom]; break; case OpenMSXSubType.SCCPlusCart: @@ -988,8 +976,8 @@ namespace SabreTools.Metadata.DatFiles dumpSccPlusCart[Data.Models.Metadata.Dump.OriginalKey] = newOriginal; } - EnsureMachineKey(machine, Data.Models.Metadata.Machine.DumpKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.DumpKey, dumpSccPlusCart); + machine.Dump ??= []; + machine.Dump = [.. machine.Dump, dumpSccPlusCart]; break; default: // This should never happen @@ -999,38 +987,6 @@ namespace SabreTools.Metadata.DatFiles return romItem; } - /// - /// Ensure a key in a machine - /// - private static void EnsureMachineKey(Data.Models.Metadata.Machine machine, string key) - { - if (machine.Read(key) is null) -#if NET20 || NET35 || NET40 || NET452 - machine[key] = new T[0]; -#else - machine[key] = System.Array.Empty(); -#endif - } - - /// - /// Append to a machine key as if its an array - /// - private static void AppendToMachineKey(Data.Models.Metadata.Machine machine, string key, T value) where T : Data.Models.Metadata.DatItem - { - // Get the existing array - var arr = machine.Read(key); - if (arr is null) - return; - - // Trim all null fields - ClearEmptyKeys(value); - - // Add to the array - List list = [.. arr]; - list.Add(value); - machine[key] = list.ToArray(); - } - /// /// Clear empty keys from a DictionaryBase object /// diff --git a/SabreTools.Metadata.DatItems/Machine.cs b/SabreTools.Metadata.DatItems/Machine.cs index 07ea9691..f772c721 100644 --- a/SabreTools.Metadata.DatItems/Machine.cs +++ b/SabreTools.Metadata.DatItems/Machine.cs @@ -321,36 +321,7 @@ namespace SabreTools.Metadata.DatItems public Machine(Data.Models.Metadata.Machine machine) { _internal = machine.DeepClone() as Data.Models.Metadata.Machine ?? []; - - // Remove all inverted fields - Remove(Data.Models.Metadata.Machine.AdjusterKey); - Remove(Data.Models.Metadata.Machine.ArchiveKey); - Remove(Data.Models.Metadata.Machine.BiosSetKey); - Remove(Data.Models.Metadata.Machine.ChipKey); - Remove(Data.Models.Metadata.Machine.ConfigurationKey); - Remove(Data.Models.Metadata.Machine.DeviceKey); - Remove(Data.Models.Metadata.Machine.DeviceRefKey); - Remove(Data.Models.Metadata.Machine.DipSwitchKey); - Remove(Data.Models.Metadata.Machine.DiskKey); - Remove(Data.Models.Metadata.Machine.DisplayKey); - Remove(Data.Models.Metadata.Machine.DriverKey); - Remove(Data.Models.Metadata.Machine.DumpKey); - Remove(Data.Models.Metadata.Machine.FeatureKey); - Remove(Data.Models.Metadata.Machine.InfoKey); - Remove(Data.Models.Metadata.Machine.InputKey); - Remove(Data.Models.Metadata.Machine.MediaKey); - Remove(Data.Models.Metadata.Machine.PartKey); - Remove(Data.Models.Metadata.Machine.PortKey); - Remove(Data.Models.Metadata.Machine.RamOptionKey); - Remove(Data.Models.Metadata.Machine.ReleaseKey); - Remove(Data.Models.Metadata.Machine.RomKey); - Remove(Data.Models.Metadata.Machine.SampleKey); - Remove(Data.Models.Metadata.Machine.SharedFeatKey); - Remove(Data.Models.Metadata.Machine.SlotKey); - Remove(Data.Models.Metadata.Machine.SoftwareListKey); - Remove(Data.Models.Metadata.Machine.SoundKey); Remove(Data.Models.Metadata.Machine.TruripKey); - Remove(Data.Models.Metadata.Machine.VideoKey); // Process flag values if (Im1CRC is not null) diff --git a/SabreTools.Serialization.CrossModel/ArchiveDotOrg.Deserializer.cs b/SabreTools.Serialization.CrossModel/ArchiveDotOrg.Deserializer.cs index e955fd02..fd4293da 100644 --- a/SabreTools.Serialization.CrossModel/ArchiveDotOrg.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/ArchiveDotOrg.Deserializer.cs @@ -30,7 +30,7 @@ namespace SabreTools.Serialization.CrossModel /// private static File[] ConvertFromInternalModel(Data.Models.Metadata.Machine item) { - var roms = item.Read(Data.Models.Metadata.Machine.RomKey); + var roms = item.Rom; if (roms is null) return []; diff --git a/SabreTools.Serialization.CrossModel/ArchiveDotOrg.Serializer.cs b/SabreTools.Serialization.CrossModel/ArchiveDotOrg.Serializer.cs index 36706d9a..5e0125bc 100644 --- a/SabreTools.Serialization.CrossModel/ArchiveDotOrg.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/ArchiveDotOrg.Serializer.cs @@ -47,7 +47,7 @@ namespace SabreTools.Serialization.CrossModel var rom = ConvertToInternalModel(item); if (rom is not null) - machine[Data.Models.Metadata.Machine.RomKey] = new Data.Models.Metadata.Rom[] { rom }; + machine.Rom = new Data.Models.Metadata.Rom[] { rom }; return machine; } diff --git a/SabreTools.Serialization.CrossModel/AttractMode.Deserializer.cs b/SabreTools.Serialization.CrossModel/AttractMode.Deserializer.cs index f1a27c94..1c8f0dd4 100644 --- a/SabreTools.Serialization.CrossModel/AttractMode.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/AttractMode.Deserializer.cs @@ -43,7 +43,7 @@ namespace SabreTools.Serialization.CrossModel /// private static Row[] ConvertMachineFromInternalModel(Data.Models.Metadata.Machine item) { - var roms = item.Read(Data.Models.Metadata.Machine.RomKey); + var roms = item.Rom; if (roms is null || roms.Length == 0) return []; diff --git a/SabreTools.Serialization.CrossModel/AttractMode.Serializer.cs b/SabreTools.Serialization.CrossModel/AttractMode.Serializer.cs index 89fe2e0c..94e7fad3 100644 --- a/SabreTools.Serialization.CrossModel/AttractMode.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/AttractMode.Serializer.cs @@ -65,7 +65,7 @@ namespace SabreTools.Serialization.CrossModel Tags = item.Tags, PlayedCount = item.PlayedCount, PlayedTime = item.PlayedTime, - [Data.Models.Metadata.Machine.RomKey] = new Data.Models.Metadata.Rom[] { ConvertToInternalModel(item) }, + Rom = [ConvertToInternalModel(item)], }; return machine; } diff --git a/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs b/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs index ed56c002..61a4538f 100644 --- a/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs @@ -79,55 +79,55 @@ namespace SabreTools.Serialization.CrossModel gameBase.RomOf = item.RomOf; gameBase.SampleOf = item.SampleOf; - var releases = item.Read(Data.Models.Metadata.Machine.ReleaseKey); + var releases = item.Release; if (releases is not null && releases.Length > 0) gameBase.Release = Array.ConvertAll(releases, ConvertFromInternalModel); - var biosSets = item.Read(Data.Models.Metadata.Machine.BiosSetKey); + var biosSets = item.BiosSet; if (biosSets is not null && biosSets.Length > 0) gameBase.BiosSet = Array.ConvertAll(biosSets, ConvertFromInternalModel); - var roms = item.Read(Data.Models.Metadata.Machine.RomKey); + var roms = item.Rom; if (roms is not null && roms.Length > 0) gameBase.Rom = Array.ConvertAll(roms, ConvertFromInternalModel); - var disks = item.Read(Data.Models.Metadata.Machine.DiskKey); + var disks = item.Disk; if (disks is not null && disks.Length > 0) gameBase.Disk = Array.ConvertAll(disks, ConvertFromInternalModel); - var medias = item.Read(Data.Models.Metadata.Machine.MediaKey); + var medias = item.Media; if (medias is not null && medias.Length > 0) gameBase.Media = Array.ConvertAll(medias, ConvertFromInternalModel); - var samples = item.Read(Data.Models.Metadata.Machine.SampleKey); + var samples = item.Sample; if (samples is not null && samples.Length > 0) gameBase.Sample = Array.ConvertAll(samples, ConvertFromInternalModel); - var archives = item.Read(Data.Models.Metadata.Machine.ArchiveKey); + var archives = item.Archive; if (archives is not null && archives.Length > 0) gameBase.Archive = Array.ConvertAll(archives, ConvertFromInternalModel); - var chips = item.Read(Data.Models.Metadata.Machine.ChipKey); + var chips = item.Chip; if (chips is not null && chips.Length > 0) gameBase.Chip = Array.ConvertAll(chips, ConvertFromInternalModel); - var videos = item.Read(Data.Models.Metadata.Machine.VideoKey); + var videos = item.Video; if (videos is not null && videos.Length > 0) gameBase.Video = Array.ConvertAll(videos, ConvertFromInternalModel); - var sound = item.Read(Data.Models.Metadata.Machine.SoundKey); + var sound = item.Sound; if (sound is not null) gameBase.Sound = ConvertFromInternalModel(sound); - var input = item.Read(Data.Models.Metadata.Machine.InputKey); + var input = item.Input; if (input is not null) gameBase.Input = ConvertFromInternalModel(input); - var dipSwitches = item.Read(Data.Models.Metadata.Machine.DipSwitchKey); + var dipSwitches = item.DipSwitch; if (dipSwitches is not null && dipSwitches.Length > 0) gameBase.DipSwitch = Array.ConvertAll(dipSwitches, ConvertFromInternalModel); - var driver = item.Read(Data.Models.Metadata.Machine.DriverKey); + var driver = item.Driver; if (driver is not null) gameBase.Driver = ConvertFromInternalModel(driver); diff --git a/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs b/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs index 1381c51d..450c50e2 100644 --- a/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs @@ -66,7 +66,7 @@ namespace SabreTools.Serialization.CrossModel { Name = item.Name, Description = item.Description, - // [Data.Models.Metadata.Machine.DriverKey] = item.DriverStatus, // TODO: Needs metadata mapping + // Driver = item.DriverStatus, // TODO: Needs metadata mapping Year = item.Year, Manufacturer = item.Manufacturer, [Data.Models.Metadata.Machine.CategoryKey] = item.Category, @@ -76,73 +76,43 @@ namespace SabreTools.Serialization.CrossModel }; if (item.Release is not null && item.Release.Length > 0) - { - machine[Data.Models.Metadata.Machine.ReleaseKey] - = Array.ConvertAll(item.Release, ConvertToInternalModel); - } + machine.Release = Array.ConvertAll(item.Release, ConvertToInternalModel); if (item.BiosSet is not null && item.BiosSet.Length > 0) - { - machine[Data.Models.Metadata.Machine.BiosSetKey] - = Array.ConvertAll(item.BiosSet, ConvertToInternalModel); - } + machine.BiosSet = Array.ConvertAll(item.BiosSet, ConvertToInternalModel); if (item.Rom is not null && item.Rom.Length > 0) - { - machine[Data.Models.Metadata.Machine.RomKey] - = Array.ConvertAll(item.Rom, ConvertToInternalModel); - } + machine.Rom = Array.ConvertAll(item.Rom, ConvertToInternalModel); if (item.Disk is not null && item.Disk.Length > 0) - { - machine[Data.Models.Metadata.Machine.DiskKey] - = Array.ConvertAll(item.Disk, ConvertToInternalModel); - } + machine.Disk = Array.ConvertAll(item.Disk, ConvertToInternalModel); if (item.Media is not null && item.Media.Length > 0) - { - machine[Data.Models.Metadata.Machine.MediaKey] - = Array.ConvertAll(item.Media, ConvertToInternalModel); - } + machine.Media = Array.ConvertAll(item.Media, ConvertToInternalModel); if (item.Sample is not null && item.Sample.Length > 0) - { - machine[Data.Models.Metadata.Machine.SampleKey] - = Array.ConvertAll(item.Sample, ConvertToInternalModel); - } + machine.Sample = Array.ConvertAll(item.Sample, ConvertToInternalModel); if (item.Archive is not null && item.Archive.Length > 0) - { - machine[Data.Models.Metadata.Machine.ArchiveKey] - = Array.ConvertAll(item.Archive, ConvertToInternalModel); - } + machine.Archive = Array.ConvertAll(item.Archive, ConvertToInternalModel); if (item.Chip is not null && item.Chip.Length > 0) - { - machine[Data.Models.Metadata.Machine.ChipKey] - = Array.ConvertAll(item.Chip, ConvertToInternalModel); - } + machine.Chip = Array.ConvertAll(item.Chip, ConvertToInternalModel); if (item.Video is not null) - { - machine[Data.Models.Metadata.Machine.VideoKey] - = Array.ConvertAll(item.Video, ConvertToInternalModel); - } + machine.Video = Array.ConvertAll(item.Video, ConvertToInternalModel); if (item.Sound is not null) - machine[Data.Models.Metadata.Machine.SoundKey] = ConvertToInternalModel(item.Sound); + machine.Sound = ConvertToInternalModel(item.Sound); if (item.Input is not null) - machine[Data.Models.Metadata.Machine.InputKey] = ConvertToInternalModel(item.Input); + machine.Input = ConvertToInternalModel(item.Input); if (item.DipSwitch is not null && item.DipSwitch.Length > 0) - { - machine[Data.Models.Metadata.Machine.DipSwitchKey] - = Array.ConvertAll(item.DipSwitch, ConvertToInternalModel); - } + machine.DipSwitch = Array.ConvertAll(item.DipSwitch, ConvertToInternalModel); if (item.Driver is not null) - machine[Data.Models.Metadata.Machine.DriverKey] = ConvertToInternalModel(item.Driver); + machine.Driver = ConvertToInternalModel(item.Driver); return machine; } diff --git a/SabreTools.Serialization.CrossModel/DosCenter.Deserializer.cs b/SabreTools.Serialization.CrossModel/DosCenter.Deserializer.cs index abe0dcfc..aee163a9 100644 --- a/SabreTools.Serialization.CrossModel/DosCenter.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/DosCenter.Deserializer.cs @@ -52,7 +52,7 @@ namespace SabreTools.Serialization.CrossModel Name = item.Name, }; - var roms = item.Read(Data.Models.Metadata.Machine.RomKey); + var roms = item.Rom; if (roms is not null && roms.Length > 0) game.File = Array.ConvertAll(roms, ConvertFromInternalModel); diff --git a/SabreTools.Serialization.CrossModel/DosCenter.Serializer.cs b/SabreTools.Serialization.CrossModel/DosCenter.Serializer.cs index b4d2faee..48aec589 100644 --- a/SabreTools.Serialization.CrossModel/DosCenter.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/DosCenter.Serializer.cs @@ -55,7 +55,7 @@ namespace SabreTools.Serialization.CrossModel if (item.File is not null && item.File.Length > 0) { - machine[Data.Models.Metadata.Machine.RomKey] + machine.Rom = Array.ConvertAll(item.File, ConvertToInternalModel); } diff --git a/SabreTools.Serialization.CrossModel/EverdriveSMDB.Deserializer.cs b/SabreTools.Serialization.CrossModel/EverdriveSMDB.Deserializer.cs index c0bc3ce2..488275b9 100644 --- a/SabreTools.Serialization.CrossModel/EverdriveSMDB.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/EverdriveSMDB.Deserializer.cs @@ -31,7 +31,7 @@ namespace SabreTools.Serialization.CrossModel /// private static Row[] ConvertMachineFromInternalModel(Data.Models.Metadata.Machine item) { - var roms = item.Read(Data.Models.Metadata.Machine.RomKey); + var roms = item.Rom; if (roms is null || roms.Length == 0) return []; diff --git a/SabreTools.Serialization.CrossModel/EverdriveSMDB.Serializer.cs b/SabreTools.Serialization.CrossModel/EverdriveSMDB.Serializer.cs index 66b6f9f6..4dbc16a2 100644 --- a/SabreTools.Serialization.CrossModel/EverdriveSMDB.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/EverdriveSMDB.Serializer.cs @@ -44,7 +44,7 @@ namespace SabreTools.Serialization.CrossModel { var machine = new Data.Models.Metadata.Machine { - [Data.Models.Metadata.Machine.RomKey] = new Data.Models.Metadata.Rom[] { ConvertToInternalModel(item) }, + Rom = new Data.Models.Metadata.Rom[] { ConvertToInternalModel(item) }, }; return machine; } diff --git a/SabreTools.Serialization.CrossModel/Hashfile.Deserializer.cs b/SabreTools.Serialization.CrossModel/Hashfile.Deserializer.cs index 708360e6..e32eb948 100644 --- a/SabreTools.Serialization.CrossModel/Hashfile.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Hashfile.Deserializer.cs @@ -96,7 +96,7 @@ namespace SabreTools.Serialization.CrossModel /// private static Data.Models.Hashfile.Hashfile ConvertMachineFromInternalModel(Data.Models.Metadata.Machine item, HashType hash) { - var roms = item.Read(Data.Models.Metadata.Machine.RomKey); + var roms = item.Rom; if (roms is null) return new Data.Models.Hashfile.Hashfile(); diff --git a/SabreTools.Serialization.CrossModel/Hashfile.Serializer.cs b/SabreTools.Serialization.CrossModel/Hashfile.Serializer.cs index 49b86282..77124dda 100644 --- a/SabreTools.Serialization.CrossModel/Hashfile.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Hashfile.Serializer.cs @@ -42,27 +42,27 @@ namespace SabreTools.Serialization.CrossModel var machine = new Data.Models.Metadata.Machine(); if (item.SFV is not null && item.SFV.Length > 0) - machine[Data.Models.Metadata.Machine.RomKey] = Array.ConvertAll(item.SFV, ConvertToInternalModel); + machine.Rom = Array.ConvertAll(item.SFV, ConvertToInternalModel); else if (item.MD2 is not null && item.MD2.Length > 0) - machine[Data.Models.Metadata.Machine.RomKey] = Array.ConvertAll(item.MD2, ConvertToInternalModel); + machine.Rom = Array.ConvertAll(item.MD2, ConvertToInternalModel); else if (item.MD4 is not null && item.MD4.Length > 0) - machine[Data.Models.Metadata.Machine.RomKey] = Array.ConvertAll(item.MD4, ConvertToInternalModel); + machine.Rom = Array.ConvertAll(item.MD4, ConvertToInternalModel); else if (item.MD5 is not null && item.MD5.Length > 0) - machine[Data.Models.Metadata.Machine.RomKey] = Array.ConvertAll(item.MD5, ConvertToInternalModel); + machine.Rom = Array.ConvertAll(item.MD5, ConvertToInternalModel); else if (item.RIPEMD128 is not null && item.RIPEMD128.Length > 0) - machine[Data.Models.Metadata.Machine.RomKey] = Array.ConvertAll(item.RIPEMD128, ConvertToInternalModel); + machine.Rom = Array.ConvertAll(item.RIPEMD128, ConvertToInternalModel); else if (item.RIPEMD160 is not null && item.RIPEMD160.Length > 0) - machine[Data.Models.Metadata.Machine.RomKey] = Array.ConvertAll(item.RIPEMD160, ConvertToInternalModel); + machine.Rom = Array.ConvertAll(item.RIPEMD160, ConvertToInternalModel); else if (item.SHA1 is not null && item.SHA1.Length > 0) - machine[Data.Models.Metadata.Machine.RomKey] = Array.ConvertAll(item.SHA1, ConvertToInternalModel); + machine.Rom = Array.ConvertAll(item.SHA1, ConvertToInternalModel); else if (item.SHA256 is not null && item.SHA256.Length > 0) - machine[Data.Models.Metadata.Machine.RomKey] = Array.ConvertAll(item.SHA256, ConvertToInternalModel); + machine.Rom = Array.ConvertAll(item.SHA256, ConvertToInternalModel); else if (item.SHA384 is not null && item.SHA384.Length > 0) - machine[Data.Models.Metadata.Machine.RomKey] = Array.ConvertAll(item.SHA384, ConvertToInternalModel); + machine.Rom = Array.ConvertAll(item.SHA384, ConvertToInternalModel); else if (item.SHA512 is not null && item.SHA512.Length > 0) - machine[Data.Models.Metadata.Machine.RomKey] = Array.ConvertAll(item.SHA512, ConvertToInternalModel); + machine.Rom = Array.ConvertAll(item.SHA512, ConvertToInternalModel); else if (item.SpamSum is not null && item.SpamSum.Length > 0) - machine[Data.Models.Metadata.Machine.RomKey] = Array.ConvertAll(item.SpamSum, ConvertToInternalModel); + machine.Rom = Array.ConvertAll(item.SpamSum, ConvertToInternalModel); return machine; } diff --git a/SabreTools.Serialization.CrossModel/Listrom.Deserializer.cs b/SabreTools.Serialization.CrossModel/Listrom.Deserializer.cs index db875814..f947f3c5 100644 --- a/SabreTools.Serialization.CrossModel/Listrom.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Listrom.Deserializer.cs @@ -34,13 +34,13 @@ namespace SabreTools.Serialization.CrossModel var rowItems = new List(); - var roms = item.Read(Data.Models.Metadata.Machine.RomKey); + var roms = item.Rom; if (roms is not null) { rowItems.AddRange(Array.ConvertAll(roms, ConvertFromInternalModel)); } - var disks = item.Read(Data.Models.Metadata.Machine.DiskKey); + var disks = item.Disk; if (disks is not null) rowItems.AddRange(Array.ConvertAll(disks, ConvertFromInternalModel)); diff --git a/SabreTools.Serialization.CrossModel/Listrom.Serializer.cs b/SabreTools.Serialization.CrossModel/Listrom.Serializer.cs index 6419e27f..7c868a3a 100644 --- a/SabreTools.Serialization.CrossModel/Listrom.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Listrom.Serializer.cs @@ -67,8 +67,8 @@ namespace SabreTools.Serialization.CrossModel roms.Add(rom); } - machine[Data.Models.Metadata.Machine.DiskKey] = disks.ToArray(); - machine[Data.Models.Metadata.Machine.RomKey] = roms.ToArray(); + machine.Disk = disks.ToArray(); + machine.Rom = roms.ToArray(); } return machine; diff --git a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs index 8759cde4..2f670c2d 100644 --- a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs @@ -58,83 +58,83 @@ namespace SabreTools.Serialization.CrossModel History = item.History, }; - var biosSets = item.Read(Data.Models.Metadata.Machine.BiosSetKey); + var biosSets = item.BiosSet; if (biosSets is not null && biosSets.Length > 0) machine.BiosSet = Array.ConvertAll(biosSets, ConvertFromInternalModel); - var roms = item.Read(Data.Models.Metadata.Machine.RomKey); + var roms = item.Rom; if (roms is not null && roms.Length > 0) machine.Rom = Array.ConvertAll(roms, ConvertFromInternalModel); - var disks = item.Read(Data.Models.Metadata.Machine.DiskKey); + var disks = item.Disk; if (disks is not null && disks.Length > 0) machine.Disk = Array.ConvertAll(disks, ConvertFromInternalModel); - var deviceRefs = item.Read(Data.Models.Metadata.Machine.DeviceRefKey); + var deviceRefs = item.DeviceRef; if (deviceRefs is not null && deviceRefs.Length > 0) machine.DeviceRef = Array.ConvertAll(deviceRefs, ConvertFromInternalModel); - var samples = item.Read(Data.Models.Metadata.Machine.SampleKey); + var samples = item.Sample; if (samples is not null && samples.Length > 0) machine.Sample = Array.ConvertAll(samples, ConvertFromInternalModel); - var chips = item.Read(Data.Models.Metadata.Machine.ChipKey); + var chips = item.Chip; if (chips is not null && chips.Length > 0) machine.Chip = Array.ConvertAll(chips, ConvertFromInternalModel); - var displays = item.Read(Data.Models.Metadata.Machine.DisplayKey); + var displays = item.Display; if (displays is not null && displays.Length > 0) machine.Display = Array.ConvertAll(displays, ConvertFromInternalModel); - var videos = item.Read(Data.Models.Metadata.Machine.VideoKey); + var videos = item.Video; if (videos is not null && videos.Length > 0) machine.Video = Array.ConvertAll(videos, ConvertFromInternalModel); - var sound = item.Read(Data.Models.Metadata.Machine.SoundKey); + var sound = item.Sound; if (sound is not null) machine.Sound = ConvertFromInternalModel(sound); - var input = item.Read(Data.Models.Metadata.Machine.InputKey); + var input = item.Input; if (input is not null) machine.Input = ConvertFromInternalModel(input); - var dipSwitches = item.Read(Data.Models.Metadata.Machine.DipSwitchKey); + var dipSwitches = item.DipSwitch; if (dipSwitches is not null && dipSwitches.Length > 0) machine.DipSwitch = Array.ConvertAll(dipSwitches, ConvertFromInternalModel); - var configurations = item.Read(Data.Models.Metadata.Machine.ConfigurationKey); + var configurations = item.Configuration; if (configurations is not null && configurations.Length > 0) machine.Configuration = Array.ConvertAll(configurations, ConvertFromInternalModel); - var ports = item.Read(Data.Models.Metadata.Machine.PortKey); + var ports = item.Port; if (ports is not null && ports.Length > 0) machine.Port = Array.ConvertAll(ports, ConvertFromInternalModel); - var adjusters = item.Read(Data.Models.Metadata.Machine.AdjusterKey); + var adjusters = item.Adjuster; if (adjusters is not null && adjusters.Length > 0) machine.Adjuster = Array.ConvertAll(adjusters, ConvertFromInternalModel); - var driver = item.Read(Data.Models.Metadata.Machine.DriverKey); + var driver = item.Driver; if (driver is not null) machine.Driver = ConvertFromInternalModel(driver); - var features = item.Read(Data.Models.Metadata.Machine.FeatureKey); + var features = item.Feature; if (features is not null && features.Length > 0) machine.Feature = Array.ConvertAll(features, ConvertFromInternalModel); - var devices = item.Read(Data.Models.Metadata.Machine.DeviceKey); + var devices = item.Device; if (devices is not null && devices.Length > 0) machine.Device = Array.ConvertAll(devices, ConvertFromInternalModel); - var slots = item.Read(Data.Models.Metadata.Machine.SlotKey); + var slots = item.Slot; if (slots is not null && slots.Length > 0) machine.Slot = Array.ConvertAll(slots, ConvertFromInternalModel); - var softwareLists = item.Read(Data.Models.Metadata.Machine.SoftwareListKey); + var softwareLists = item.SoftwareList; if (softwareLists is not null && softwareLists.Length > 0) machine.SoftwareList = Array.ConvertAll(softwareLists, ConvertFromInternalModel); - var ramOptions = item.Read(Data.Models.Metadata.Machine.RamOptionKey); + var ramOptions = item.RamOption; if (ramOptions is not null && ramOptions.Length > 0) machine.RamOption = Array.ConvertAll(ramOptions, ConvertFromInternalModel); diff --git a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs index a1518e64..1989ec2c 100644 --- a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs @@ -63,112 +63,112 @@ namespace SabreTools.Serialization.CrossModel if (item.BiosSet is not null && item.BiosSet.Length > 0) { - machine[Data.Models.Metadata.Machine.BiosSetKey] + machine.BiosSet = Array.ConvertAll(item.BiosSet, ConvertToInternalModel); } if (item.Rom is not null && item.Rom.Length > 0) { - machine[Data.Models.Metadata.Machine.RomKey] + machine.Rom = Array.ConvertAll(item.Rom, ConvertToInternalModel); } if (item.Disk is not null && item.Disk.Length > 0) { - machine[Data.Models.Metadata.Machine.DiskKey] + machine.Disk = Array.ConvertAll(item.Disk, ConvertToInternalModel); } if (item.DeviceRef is not null && item.DeviceRef.Length > 0) { - machine[Data.Models.Metadata.Machine.DeviceRefKey] + machine.DeviceRef = Array.ConvertAll(item.DeviceRef, ConvertToInternalModel); } if (item.Sample is not null && item.Sample.Length > 0) { - machine[Data.Models.Metadata.Machine.SampleKey] + machine.Sample = Array.ConvertAll(item.Sample, ConvertToInternalModel); } if (item.Chip is not null && item.Chip.Length > 0) { - machine[Data.Models.Metadata.Machine.ChipKey] + machine.Chip = Array.ConvertAll(item.Chip, ConvertToInternalModel); } if (item.Display is not null && item.Display.Length > 0) { - machine[Data.Models.Metadata.Machine.DisplayKey] + machine.Display = Array.ConvertAll(item.Display, ConvertToInternalModel); } if (item.Video is not null && item.Video.Length > 0) { - machine[Data.Models.Metadata.Machine.VideoKey] + machine.Video = Array.ConvertAll(item.Video, ConvertToInternalModel); } if (item.Sound is not null) - machine[Data.Models.Metadata.Machine.SoundKey] = ConvertToInternalModel(item.Sound); + machine.Sound = ConvertToInternalModel(item.Sound); if (item.Input is not null) - machine[Data.Models.Metadata.Machine.InputKey] = ConvertToInternalModel(item.Input); + machine.Input = ConvertToInternalModel(item.Input); if (item.DipSwitch is not null && item.DipSwitch.Length > 0) { - machine[Data.Models.Metadata.Machine.DipSwitchKey] + machine.DipSwitch = Array.ConvertAll(item.DipSwitch, ConvertToInternalModel); } if (item.Configuration is not null && item.Configuration.Length > 0) { - machine[Data.Models.Metadata.Machine.ConfigurationKey] + machine.Configuration = Array.ConvertAll(item.Configuration, ConvertToInternalModel); } if (item.Port is not null && item.Port.Length > 0) { - machine[Data.Models.Metadata.Machine.PortKey] + machine.Port = Array.ConvertAll(item.Port, ConvertToInternalModel); } if (item.Adjuster is not null && item.Adjuster.Length > 0) { - machine[Data.Models.Metadata.Machine.AdjusterKey] + machine.Adjuster = Array.ConvertAll(item.Adjuster, ConvertToInternalModel); } if (item.Driver is not null) - machine[Data.Models.Metadata.Machine.DriverKey] = ConvertToInternalModel(item.Driver); + machine.Driver = ConvertToInternalModel(item.Driver); if (item.Feature is not null && item.Feature.Length > 0) { - machine[Data.Models.Metadata.Machine.FeatureKey] + machine.Feature = Array.ConvertAll(item.Feature, ConvertToInternalModel); } if (item.Device is not null && item.Device.Length > 0) { - machine[Data.Models.Metadata.Machine.DeviceKey] + machine.Device = Array.ConvertAll(item.Device, ConvertToInternalModel); } if (item.Slot is not null && item.Slot.Length > 0) { - machine[Data.Models.Metadata.Machine.SlotKey] + machine.Slot = Array.ConvertAll(item.Slot, ConvertToInternalModel); } if (item.SoftwareList is not null && item.SoftwareList.Length > 0) { - machine[Data.Models.Metadata.Machine.SoftwareListKey] + machine.SoftwareList = Array.ConvertAll(item.SoftwareList, ConvertToInternalModel); } if (item.RamOption is not null && item.RamOption.Length > 0) { - machine[Data.Models.Metadata.Machine.RamOptionKey] + machine.RamOption = Array.ConvertAll(item.RamOption, ConvertToInternalModel); } diff --git a/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs b/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs index 06f44fd3..7d474dfe 100644 --- a/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs @@ -144,43 +144,43 @@ namespace SabreTools.Serialization.CrossModel if (trurip is not null) gameBase.Trurip = trurip; - var releases = item.Read(Data.Models.Metadata.Machine.ReleaseKey); + var releases = item.Release; if (releases is not null && releases.Length > 0) gameBase.Release = Array.ConvertAll(releases, ConvertFromInternalModel); - var biosSets = item.Read(Data.Models.Metadata.Machine.BiosSetKey); + var biosSets = item.BiosSet; if (biosSets is not null && biosSets.Length > 0) gameBase.BiosSet = Array.ConvertAll(biosSets, ConvertFromInternalModel); - var roms = item.Read(Data.Models.Metadata.Machine.RomKey); + var roms = item.Rom; if (roms is not null && roms.Length > 0) gameBase.Rom = Array.ConvertAll(roms, ConvertFromInternalModel); - var disks = item.Read(Data.Models.Metadata.Machine.DiskKey); + var disks = item.Disk; if (disks is not null && disks.Length > 0) gameBase.Disk = Array.ConvertAll(disks, ConvertFromInternalModel); - var medias = item.Read(Data.Models.Metadata.Machine.MediaKey); + var medias = item.Media; if (medias is not null && medias.Length > 0) gameBase.Media = Array.ConvertAll(medias, ConvertFromInternalModel); - var deviceRefs = item.Read(Data.Models.Metadata.Machine.DeviceRefKey); + var deviceRefs = item.DeviceRef; if (deviceRefs is not null && deviceRefs.Length > 0) gameBase.DeviceRef = Array.ConvertAll(deviceRefs, ConvertFromInternalModel); - var samples = item.Read(Data.Models.Metadata.Machine.SampleKey); + var samples = item.Sample; if (samples is not null && samples.Length > 0) gameBase.Sample = Array.ConvertAll(samples, ConvertFromInternalModel); - var archives = item.Read(Data.Models.Metadata.Machine.ArchiveKey); + var archives = item.Archive; if (archives is not null && archives.Length > 0) gameBase.Archive = Array.ConvertAll(archives, ConvertFromInternalModel); - var driver = item.Read(Data.Models.Metadata.Machine.DriverKey); + var driver = item.Driver; if (driver is not null) gameBase.Driver = ConvertFromInternalModel(driver); - var softwareLists = item.Read(Data.Models.Metadata.Machine.SoftwareListKey); + var softwareLists = item.SoftwareList; if (softwareLists is not null && softwareLists.Length > 0) gameBase.SoftwareList = Array.ConvertAll(softwareLists, ConvertFromInternalModel); diff --git a/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs b/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs index 6887a903..12af46bd 100644 --- a/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs @@ -149,34 +149,34 @@ namespace SabreTools.Serialization.CrossModel }; if (item.Release is not null && item.Release.Length > 0) - machine[Data.Models.Metadata.Machine.ReleaseKey] = Array.ConvertAll(item.Release, ConvertToInternalModel); + machine.Release = Array.ConvertAll(item.Release, ConvertToInternalModel); if (item.BiosSet is not null && item.BiosSet.Length > 0) - machine[Data.Models.Metadata.Machine.BiosSetKey] = Array.ConvertAll(item.BiosSet, ConvertToInternalModel); + machine.BiosSet = Array.ConvertAll(item.BiosSet, ConvertToInternalModel); if (item.Rom is not null && item.Rom.Length > 0) - machine[Data.Models.Metadata.Machine.RomKey] = Array.ConvertAll(item.Rom, ConvertToInternalModel); + machine.Rom = Array.ConvertAll(item.Rom, ConvertToInternalModel); if (item.Disk is not null && item.Disk.Length > 0) - machine[Data.Models.Metadata.Machine.DiskKey] = Array.ConvertAll(item.Disk, ConvertToInternalModel); + machine.Disk = Array.ConvertAll(item.Disk, ConvertToInternalModel); if (item.Media is not null && item.Media.Length > 0) - machine[Data.Models.Metadata.Machine.MediaKey] = Array.ConvertAll(item.Media, ConvertToInternalModel); + machine.Media = Array.ConvertAll(item.Media, ConvertToInternalModel); if (item.DeviceRef is not null && item.DeviceRef.Length > 0) - machine[Data.Models.Metadata.Machine.DeviceRefKey] = Array.ConvertAll(item.DeviceRef, ConvertToInternalModel); + machine.DeviceRef = Array.ConvertAll(item.DeviceRef, ConvertToInternalModel); if (item.Sample is not null && item.Sample.Length > 0) - machine[Data.Models.Metadata.Machine.SampleKey] = Array.ConvertAll(item.Sample, ConvertToInternalModel); + machine.Sample = Array.ConvertAll(item.Sample, ConvertToInternalModel); if (item.Archive is not null && item.Archive.Length > 0) - machine[Data.Models.Metadata.Machine.ArchiveKey] = Array.ConvertAll(item.Archive, ConvertToInternalModel); + machine.Archive = Array.ConvertAll(item.Archive, ConvertToInternalModel); if (item.Driver is not null) - machine[Data.Models.Metadata.Machine.DriverKey] = ConvertToInternalModel(item.Driver); + machine.Driver = ConvertToInternalModel(item.Driver); if (item.SoftwareList is not null && item.SoftwareList.Length > 0) - machine[Data.Models.Metadata.Machine.SoftwareListKey] = Array.ConvertAll(item.SoftwareList, ConvertToInternalModel); + machine.SoftwareList = Array.ConvertAll(item.SoftwareList, ConvertToInternalModel); return machine; } diff --git a/SabreTools.Serialization.CrossModel/OfflineList.Deserializer.cs b/SabreTools.Serialization.CrossModel/OfflineList.Deserializer.cs index cebcb003..b5d88416 100644 --- a/SabreTools.Serialization.CrossModel/OfflineList.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/OfflineList.Deserializer.cs @@ -96,7 +96,7 @@ namespace SabreTools.Serialization.CrossModel DuplicateID = item.DuplicateID, }; - var roms = item.Read(Data.Models.Metadata.Machine.RomKey); + var roms = item.Rom; if (roms is not null && roms.Length > 0) { var romSizes = Array.ConvertAll(roms, r => r.Size ?? -1); diff --git a/SabreTools.Serialization.CrossModel/OfflineList.Serializer.cs b/SabreTools.Serialization.CrossModel/OfflineList.Serializer.cs index 9ca8f1db..d808522d 100644 --- a/SabreTools.Serialization.CrossModel/OfflineList.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/OfflineList.Serializer.cs @@ -81,7 +81,7 @@ namespace SabreTools.Serialization.CrossModel if (item.Files?.RomCRC is not null && item.Files.RomCRC.Length > 0) { - machine[Data.Models.Metadata.Machine.RomKey] + machine.Rom = Array.ConvertAll(item.Files.RomCRC, romCRC => { var rom = ConvertToInternalModel(romCRC); diff --git a/SabreTools.Serialization.CrossModel/OpenMSX.Deserializer.cs b/SabreTools.Serialization.CrossModel/OpenMSX.Deserializer.cs index 647a9963..5ef33342 100644 --- a/SabreTools.Serialization.CrossModel/OpenMSX.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/OpenMSX.Deserializer.cs @@ -48,7 +48,7 @@ namespace SabreTools.Serialization.CrossModel Country = item.Country, }; - var dumps = item.Read(Data.Models.Metadata.Machine.DumpKey); + var dumps = item.Dump; if (dumps is not null && dumps.Length > 0) game.Dump = Array.ConvertAll(dumps, ConvertFromInternalModel); diff --git a/SabreTools.Serialization.CrossModel/OpenMSX.Serializer.cs b/SabreTools.Serialization.CrossModel/OpenMSX.Serializer.cs index e63c7228..d2e21bcb 100644 --- a/SabreTools.Serialization.CrossModel/OpenMSX.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/OpenMSX.Serializer.cs @@ -54,7 +54,7 @@ namespace SabreTools.Serialization.CrossModel if (item.Dump is not null && item.Dump.Length > 0) { - machine[Data.Models.Metadata.Machine.DumpKey] + machine.Dump = Array.ConvertAll(item.Dump, ConvertToInternalModel); } diff --git a/SabreTools.Serialization.CrossModel/RomCenter.Deserializer.cs b/SabreTools.Serialization.CrossModel/RomCenter.Deserializer.cs index f207f977..48ec773c 100644 --- a/SabreTools.Serialization.CrossModel/RomCenter.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/RomCenter.Deserializer.cs @@ -84,7 +84,7 @@ namespace SabreTools.Serialization.CrossModel /// private static Rom[] ConvertMachineFromInternalModel(Data.Models.Metadata.Machine item) { - var roms = item.Read(Data.Models.Metadata.Machine.RomKey); + var roms = item.Rom; if (roms is null) return []; diff --git a/SabreTools.Serialization.CrossModel/RomCenter.Serializer.cs b/SabreTools.Serialization.CrossModel/RomCenter.Serializer.cs index 5a9fbba7..19c438ee 100644 --- a/SabreTools.Serialization.CrossModel/RomCenter.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/RomCenter.Serializer.cs @@ -72,10 +72,10 @@ namespace SabreTools.Serialization.CrossModel { RomOf = item.RomOf, CloneOf = item.ParentName, - //[Data.Models.Metadata.Machine.ParentDescriptionKey] = item.ParentDescription, // This is unmappable + //.ParentDescription = item.ParentDescription, // This is unmappable Name = item.GameName, Description = item.GameDescription, - [Data.Models.Metadata.Machine.RomKey] = new Data.Models.Metadata.Rom[] { ConvertToInternalModel(item) }, + Rom = new Data.Models.Metadata.Rom[] { ConvertToInternalModel(item) }, }; return machine; diff --git a/SabreTools.Serialization.CrossModel/SeparatedValue.Deserializer.cs b/SabreTools.Serialization.CrossModel/SeparatedValue.Deserializer.cs index 664c4757..1b339120 100644 --- a/SabreTools.Serialization.CrossModel/SeparatedValue.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/SeparatedValue.Deserializer.cs @@ -45,21 +45,21 @@ namespace SabreTools.Serialization.CrossModel { var rowItems = new List(); - var roms = item.Read(Data.Models.Metadata.Machine.RomKey); + var roms = item.Rom; if (roms is not null && roms.Length > 0) { rowItems.AddRange( Array.ConvertAll(roms, r => ConvertFromInternalModel(r, item, header))); } - var disks = item.Read(Data.Models.Metadata.Machine.DiskKey); + var disks = item.Disk; if (disks is not null && disks.Length > 0) { rowItems.AddRange( Array.ConvertAll(disks, d => ConvertFromInternalModel(d, item, header))); } - var media = item.Read(Data.Models.Metadata.Machine.MediaKey); + var media = item.Media; if (media is not null && media.Length > 0) { rowItems.AddRange( diff --git a/SabreTools.Serialization.CrossModel/SeparatedValue.Serializer.cs b/SabreTools.Serialization.CrossModel/SeparatedValue.Serializer.cs index bd9257e6..bd8c1729 100644 --- a/SabreTools.Serialization.CrossModel/SeparatedValue.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/SeparatedValue.Serializer.cs @@ -61,15 +61,15 @@ namespace SabreTools.Serialization.CrossModel switch (datItem) { case Data.Models.Metadata.Disk disk: - machine[Data.Models.Metadata.Machine.DiskKey] = new Data.Models.Metadata.Disk[] { disk }; + machine.Disk = new Data.Models.Metadata.Disk[] { disk }; break; case Data.Models.Metadata.Media media: - machine[Data.Models.Metadata.Machine.MediaKey] = new Data.Models.Metadata.Media[] { media }; + machine.Media = new Data.Models.Metadata.Media[] { media }; break; case Data.Models.Metadata.Rom rom: - machine[Data.Models.Metadata.Machine.RomKey] = new Data.Models.Metadata.Rom[] { rom }; + machine.Rom = new Data.Models.Metadata.Rom[] { rom }; break; default: diff --git a/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs b/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs index b024f6ef..0f1b8b4b 100644 --- a/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs @@ -51,15 +51,15 @@ namespace SabreTools.Serialization.CrossModel Notes = item.Notes, }; - var infos = item.Read(Data.Models.Metadata.Machine.InfoKey); + var infos = item.Info; if (infos is not null && infos.Length > 0) software.Info = Array.ConvertAll(infos, ConvertFromInternalModel); - var sharedFeats = item.Read(Data.Models.Metadata.Machine.SharedFeatKey); + var sharedFeats = item.SharedFeat; if (sharedFeats is not null && sharedFeats.Length > 0) software.SharedFeat = Array.ConvertAll(sharedFeats, ConvertFromInternalModel); - var parts = item.Read(Data.Models.Metadata.Machine.PartKey); + var parts = item.Part; if (parts is not null && parts.Length > 0) software.Part = Array.ConvertAll(parts, ConvertFromInternalModel); diff --git a/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs b/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs index dc526522..3c64bd17 100644 --- a/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs @@ -56,13 +56,13 @@ namespace SabreTools.Serialization.CrossModel }; if (item.Info is not null && item.Info.Length > 0) - machine[Data.Models.Metadata.Machine.InfoKey] = Array.ConvertAll(item.Info, ConvertToInternalModel); + machine.Info = Array.ConvertAll(item.Info, ConvertToInternalModel); if (item.SharedFeat is not null && item.SharedFeat.Length > 0) - machine[Data.Models.Metadata.Machine.SharedFeatKey] = Array.ConvertAll(item.SharedFeat, ConvertToInternalModel); + machine.SharedFeat = Array.ConvertAll(item.SharedFeat, ConvertToInternalModel); if (item.Part is not null && item.Part.Length > 0) - machine[Data.Models.Metadata.Machine.PartKey] = Array.ConvertAll(item.Part, ConvertToInternalModel); + machine.Part = Array.ConvertAll(item.Part, ConvertToInternalModel); return machine; } From 9828119bddde98ad754ed64cb708c93e3be3a5d2 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sat, 4 Apr 2026 12:31:47 -0400 Subject: [PATCH 073/142] Further reduce use of GetName and SetName --- .../MetadataExtensions.cs | 8 +- SabreTools.Metadata.Filter/FilterObject.cs | 103 ++++++++++++++++-- .../DictionaryBaseExtensions.cs | 4 +- 3 files changed, 103 insertions(+), 12 deletions(-) diff --git a/SabreTools.Data.Extensions/MetadataExtensions.cs b/SabreTools.Data.Extensions/MetadataExtensions.cs index 64f17a16..be23605c 100644 --- a/SabreTools.Data.Extensions/MetadataExtensions.cs +++ b/SabreTools.Data.Extensions/MetadataExtensions.cs @@ -15,6 +15,7 @@ namespace SabreTools.Data.Extensions /// /// Gets the name to use for a DictionaryBase or null /// + /// TODO: Determine if this can be removed public static string? GetName(this DictionaryBase self) { if (self is null) @@ -75,6 +76,7 @@ namespace SabreTools.Data.Extensions /// /// Gets the name to use for a DictionaryBase or null /// + /// TODO: Determine if this can be removed public static void SetName(this DictionaryBase self, string? name) { if (self is null || string.IsNullOrEmpty(name)) @@ -211,6 +213,8 @@ namespace SabreTools.Data.Extensions return releaseDetails.Clone() as ReleaseDetails; else if (self is Rom rom) return rom.Clone() as Rom; + else if (self is Sample sample) + return sample.Clone() as Sample; else if (self is Serials serials) return serials.Clone() as Serials; else if (self is SharedFeat sharedFeat) @@ -300,6 +304,7 @@ namespace SabreTools.Data.Extensions cloneMachine.Language = selfMachine.Language; cloneMachine.Location = selfMachine.Location; cloneMachine.Manufacturer = selfMachine.Manufacturer; + cloneMachine.Name = selfMachine.Name; cloneMachine.Notes = selfMachine.Notes; cloneMachine.PlayedCount = selfMachine.PlayedCount; cloneMachine.PlayedTime = selfMachine.PlayedTime; @@ -322,9 +327,6 @@ namespace SabreTools.Data.Extensions cloneMachine.Year = selfMachine.Year; } - // Handle known properties - clone.SetName(self.GetName()); - // Loop through and clone per type foreach (string key in self.Keys) { diff --git a/SabreTools.Metadata.Filter/FilterObject.cs b/SabreTools.Metadata.Filter/FilterObject.cs index 77945415..45426cad 100644 --- a/SabreTools.Metadata.Filter/FilterObject.cs +++ b/SabreTools.Metadata.Filter/FilterObject.cs @@ -338,19 +338,15 @@ namespace SabreTools.Metadata.Filter /// private static bool GetCheckValue(DictionaryBase dictionaryBase, string fieldName, out string? checkValue) { - // Handle the common name field - if (fieldName == "name") - { - checkValue = dictionaryBase.GetName(); - return true; - } - // Handle type-specific properties switch (dictionaryBase) { case Adjuster item when fieldName == "default": checkValue = item.Default.FromYesNo(); return true; + case Adjuster item when fieldName == "name": + checkValue = item.Name; + return true; case Analog item when fieldName == "mask": checkValue = item.Mask; @@ -413,6 +409,9 @@ namespace SabreTools.Metadata.Filter case Archive item when fieldName == "mergename": checkValue = item.MergeName; return true; + case Archive item when fieldName == "name": + checkValue = item.Name; + return true; case Archive item when fieldName == "namealt": checkValue = item.NameAlt; return true; @@ -459,6 +458,9 @@ namespace SabreTools.Metadata.Filter case BiosSet item when fieldName == "description": checkValue = item.Description; return true; + case BiosSet item when fieldName == "name": + checkValue = item.Name; + return true; case Chip item when fieldName == "type": checkValue = item.ChipType?.AsStringValue(); @@ -469,6 +471,9 @@ namespace SabreTools.Metadata.Filter case Chip item when fieldName == "flags": checkValue = item.Flags; return true; + case Chip item when fieldName == "name": + checkValue = item.Name; + return true; case Chip item when fieldName == "soundonly": checkValue = item.SoundOnly.FromYesNo(); return true; @@ -492,6 +497,9 @@ namespace SabreTools.Metadata.Filter case Configuration item when fieldName == "mask": checkValue = item.Mask; return true; + case Configuration item when fieldName == "name": + checkValue = item.Name; + return true; case Configuration item when fieldName == "tag": checkValue = item.Tag; return true; @@ -499,6 +507,9 @@ namespace SabreTools.Metadata.Filter case ConfLocation item when fieldName == "inverted": checkValue = item.Inverted.FromYesNo(); return true; + case ConfLocation item when fieldName == "name": + checkValue = item.Name; + return true; case ConfLocation item when fieldName == "number": checkValue = item.Number?.ToString(); return true; @@ -506,6 +517,9 @@ namespace SabreTools.Metadata.Filter case ConfSetting item when fieldName == "default": checkValue = item.Default.FromYesNo(); return true; + case ConfSetting item when fieldName == "name": + checkValue = item.Name; + return true; case ConfSetting item when fieldName == "value": checkValue = item.Value; return true; @@ -550,6 +564,9 @@ namespace SabreTools.Metadata.Filter case DataArea item when fieldName == "endianness": checkValue = item.Endianness?.AsStringValue(); return true; + case DataArea item when fieldName == "name": + checkValue = item.Name; + return true; case DataArea item when fieldName == "size": checkValue = item.Size?.ToString(); return true; @@ -573,9 +590,16 @@ namespace SabreTools.Metadata.Filter checkValue = item.Tag; return true; + case DeviceRef item when fieldName == "name": + checkValue = item.Name; + return true; + case DipLocation item when fieldName == "inverted": checkValue = item.Inverted.FromYesNo(); return true; + case DipLocation item when fieldName == "name": + checkValue = item.Name; + return true; case DipLocation item when fieldName == "number": checkValue = item.Number?.ToString(); return true; @@ -586,6 +610,9 @@ namespace SabreTools.Metadata.Filter case DipSwitch item when fieldName == "mask": checkValue = item.Mask; return true; + case DipSwitch item when fieldName == "name": + checkValue = item.Name; + return true; case DipSwitch item when fieldName == "tag": checkValue = item.Tag; return true; @@ -593,6 +620,9 @@ namespace SabreTools.Metadata.Filter case DipValue item when fieldName == "default": checkValue = item.Default.FromYesNo(); return true; + case DipValue item when fieldName == "name": + checkValue = item.Name; + return true; case DipValue item when fieldName == "value": checkValue = item.Value; return true; @@ -609,6 +639,9 @@ namespace SabreTools.Metadata.Filter case Disk item when fieldName == "merge": checkValue = item.Merge; return true; + case Disk item when fieldName == "name": + checkValue = item.Name; + return true; case Disk item when fieldName == "optional": checkValue = item.Optional.FromYesNo(); return true; @@ -625,6 +658,10 @@ namespace SabreTools.Metadata.Filter checkValue = item.Writable.FromYesNo(); return true; + case DiskArea item when fieldName == "name": + checkValue = item.Name; + return true; + case Display item when fieldName == "aspectx": checkValue = item.AspectX?.ToString(); return true; @@ -711,6 +748,13 @@ namespace SabreTools.Metadata.Filter checkValue = item.Unofficial.FromYesNo(); return true; + case Extension item when fieldName == "name": + checkValue = item.Name; + return true; + + case Feature item when fieldName == "name": + checkValue = item.Name; + return true; case Feature item when fieldName == "overall": checkValue = item.Overall?.AsStringValue(); return true; @@ -787,6 +831,9 @@ namespace SabreTools.Metadata.Filter case Header item when fieldName == "mameconfig": checkValue = item.MameConfig; return true; + case Header item when fieldName == "name": + checkValue = item.Name; + return true; case Header item when fieldName == "notes": checkValue = item.Notes; return true; @@ -824,6 +871,9 @@ namespace SabreTools.Metadata.Filter checkValue = item.Version; return true; + case Info item when fieldName == "name": + checkValue = item.Name; + return true; case Info item when fieldName == "value": checkValue = item.Value; return true; @@ -847,6 +897,10 @@ namespace SabreTools.Metadata.Filter checkValue = item.Tilt.FromYesNo(); return true; + case Instance item when fieldName == "name": + checkValue = item.Name; + return true; + case Machine item when fieldName == "board": checkValue = item.Board; return true; @@ -931,6 +985,9 @@ namespace SabreTools.Metadata.Filter case Machine item when fieldName == "manufacturer": checkValue = item.Manufacturer; return true; + case Machine item when fieldName == "name": + checkValue = item.Name; + return true; case Machine item when fieldName == "notes": checkValue = item.Notes; return true; @@ -995,6 +1052,9 @@ namespace SabreTools.Metadata.Filter case Media item when fieldName == "md5": checkValue = item.MD5; return true; + case Media item when fieldName == "name": + checkValue = item.Name; + return true; case Media item when fieldName == "sha1": checkValue = item.SHA1; return true; @@ -1015,6 +1075,9 @@ namespace SabreTools.Metadata.Filter case Part item when fieldName == "interface": checkValue = item.Interface; return true; + case Part item when fieldName == "name": + checkValue = item.Name; + return true; case Port item when fieldName == "tag": checkValue = item.Tag; @@ -1026,6 +1089,9 @@ namespace SabreTools.Metadata.Filter case RamOption item when fieldName == "default": checkValue = item.Default.FromYesNo(); return true; + case RamOption item when fieldName == "name": + checkValue = item.Name; + return true; case Release item when fieldName == "date": checkValue = item.Date; @@ -1036,6 +1102,9 @@ namespace SabreTools.Metadata.Filter case Release item when fieldName == "language": checkValue = item.Language; return true; + case Release item when fieldName == "name": + checkValue = item.Name; + return true; case Release item when fieldName == "region": checkValue = item.Region; return true; @@ -1110,6 +1179,9 @@ namespace SabreTools.Metadata.Filter case Rom item when fieldName == "mia": checkValue = item.MIA.FromYesNo(); return true; + case Rom item when fieldName == "name": + checkValue = item.Name; + return true; case Rom item when fieldName == "optional": checkValue = item.Optional.FromYesNo(); return true; @@ -1126,6 +1198,10 @@ namespace SabreTools.Metadata.Filter checkValue = item.Value; return true; + case Sample item when fieldName == "name": + checkValue = item.Name; + return true; + case Serials item when fieldName == "boxbarcode": checkValue = item.BoxBarcode; return true; @@ -1169,20 +1245,33 @@ namespace SabreTools.Metadata.Filter checkValue = item.SaveChipSerial; return true; + case SharedFeat item when fieldName == "name": + checkValue = item.Name; + return true; case SharedFeat item when fieldName == "value": checkValue = item.Value; return true; + case Slot item when fieldName == "name": + checkValue = item.Name; + return true; + case SlotOption item when fieldName == "default": checkValue = item.Default.FromYesNo(); return true; case SlotOption item when fieldName == "devname": checkValue = item.DevName; return true; + case SlotOption item when fieldName == "name": + checkValue = item.Name; + return true; case SoftwareList item when fieldName == "filter": checkValue = item.Filter; return true; + case SoftwareList item when fieldName == "name": + checkValue = item.Name; + 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 47900bdd..7c9fded8 100644 --- a/SabreTools.Metadata/DictionaryBaseExtensions.cs +++ b/SabreTools.Metadata/DictionaryBaseExtensions.cs @@ -58,8 +58,8 @@ namespace SabreTools.Metadata return false; // Check names - if (self.GetName() != other.GetName()) - return false; + // if (self.GetName() != other.GetName()) + // return false; // Handle individual type properties if (self is Adjuster selfAdjuster && other is Adjuster otherAdjuster) From ba371d971d0df6e522053739064467e7cf7282b3 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sat, 4 Apr 2026 12:41:36 -0400 Subject: [PATCH 074/142] Clean up EqualTo helpers --- .../DictionaryBaseExtensions.cs | 310 +++++++----------- 1 file changed, 111 insertions(+), 199 deletions(-) diff --git a/SabreTools.Metadata/DictionaryBaseExtensions.cs b/SabreTools.Metadata/DictionaryBaseExtensions.cs index 7c9fded8..5b7b0152 100644 --- a/SabreTools.Metadata/DictionaryBaseExtensions.cs +++ b/SabreTools.Metadata/DictionaryBaseExtensions.cs @@ -24,18 +24,126 @@ namespace SabreTools.Metadata #if NETCOREAPP || NETSTANDARD2_0_OR_GREATER return (self, other) switch { + (Adjuster selfAdjuster, Adjuster otherAdjuster) => selfAdjuster.Equals(otherAdjuster), + (Analog selfAnalog, Analog otherAnalog) => selfAnalog.Equals(otherAnalog), + (Archive selfArchive, Archive otherArchive) => selfArchive.Equals(otherArchive), + (BiosSet selfBiosSet, BiosSet otherBiosSet) => selfBiosSet.Equals(otherBiosSet), + (Chip selfChip, Chip otherChip) => selfChip.Equals(otherChip), + (Condition selfCondition, Condition otherCondition) => selfCondition.Equals(otherCondition), + (Configuration selfConfiguration, Configuration otherConfiguration) => selfConfiguration.Equals(otherConfiguration), + (ConfLocation selfConfLocation, ConfLocation otherConfLocation) => selfConfLocation.Equals(otherConfLocation), + (ConfSetting selfConfSetting, ConfSetting otherConfSetting) => selfConfSetting.Equals(otherConfSetting), + (Control selfControl, Control otherControl) => selfControl.Equals(otherControl), + (DataArea selfDataArea, DataArea otherDataArea) => selfDataArea.Equals(otherDataArea), + (Device selfDevice, Device otherDevice) => selfDevice.Equals(otherDevice), + (DipLocation selfDipLocation, DipLocation otherDipLocation) => selfDipLocation.Equals(otherDipLocation), + (DipSwitch selfDipSwitch, DipSwitch otherDipSwitch) => selfDipSwitch.Equals(otherDipSwitch), + (DipValue selfDipValue, DipValue otherDipValue) => selfDipValue.Equals(otherDipValue), (Disk diskSelf, Disk diskOther) => EqualsImpl(diskSelf, diskOther), + (DiskArea selfDiskArea, DiskArea otherDiskArea) => selfDiskArea.Equals(otherDiskArea), + (Display selfDisplay, Display otherDisplay) => selfDisplay.Equals(otherDisplay), + (Driver selfDriver, Driver otherDriver) => selfDriver.Equals(otherDriver), + (Feature selfFeature, Feature otherFeature) => selfFeature.Equals(otherFeature), + (Info selfInfo, Info otherInfo) => selfInfo.Equals(otherInfo), + (Input selfInput, Input otherInput) => selfInput.Equals(otherInput), + (Instance selfInstance, Instance otherInstance) => selfInstance.Equals(otherInstance), (Media mediaSelf, Media mediaOther) => EqualsImpl(mediaSelf, mediaOther), + (Original selfOriginal, Original otherOriginal) => selfOriginal.Equals(otherOriginal), + (Part selfPart, Part otherPart) => selfPart.Equals(otherPart), + (Port selfPort, Port otherPort) => selfPort.Equals(otherPort), + (RamOption selfRamOption, RamOption otherRamOption) => selfRamOption.Equals(otherRamOption), + (Release selfRelease, Release otherRelease) => selfRelease.Equals(otherRelease), + (ReleaseDetails selfReleaseDetails, ReleaseDetails otherReleaseDetails) => selfReleaseDetails.Equals(otherReleaseDetails), (Rom romSelf, Rom romOther) => EqualsImpl(romSelf, romOther), - _ => EqualsImpl(self, other), + (Serials selfSerials, Serials otherSerials) => selfSerials.Equals(otherSerials), + (SharedFeat selfSharedFeat, SharedFeat otherSharedFeat) => selfSharedFeat.Equals(otherSharedFeat), + (Slot selfSlot, Slot otherSlot) => selfSlot.Equals(otherSlot), + (SlotOption selfSlotOption, SlotOption otherSlotOption) => selfSlotOption.Equals(otherSlotOption), + (SoftwareList selfSoftwareList, SoftwareList otherSoftwareList) => selfSoftwareList.Equals(otherSoftwareList), + (Sound selfSound, Sound otherSound) => selfSound.Equals(otherSound), + (SourceDetails selfSourceDetails, SourceDetails otherSourceDetails) => selfSourceDetails.Equals(otherSourceDetails), + (Video videoSelf, Video videoOther) => EqualsImpl(videoSelf, videoOther), + _ => self.EqualsImpl(other), }; #else - if (self is Disk diskSelf && other is Disk diskOther) + if (self is Adjuster selfAdjuster && other is Adjuster otherAdjuster) + return selfAdjuster.Equals(otherAdjuster); + else if (self is Analog selfAnalog && other is Analog otherAnalog) + return selfAnalog.Equals(otherAnalog); + else if (self is Archive selfArchive && other is Archive otherArchive) + return selfArchive.Equals(otherArchive); + else if (self is BiosSet selfBiosSet && other is BiosSet otherBiosSet) + return selfBiosSet.Equals(otherBiosSet); + else if (self is Chip selfChip && other is Chip otherChip) + return selfChip.Equals(otherChip); + else if (self is Condition selfCondition && other is Condition otherCondition) + return selfCondition.Equals(otherCondition); + else if (self is Configuration selfConfiguration && other is Configuration otherConfiguration) + return selfConfiguration.Equals(otherConfiguration); + else if (self is ConfLocation selfConfLocation && other is ConfLocation otherConfLocation) + return selfConfLocation.Equals(otherConfLocation); + else if (self is ConfSetting selfConfSetting && other is ConfSetting otherConfSetting) + return selfConfSetting.Equals(otherConfSetting); + else if (self is Control selfControl && other is Control otherControl) + return selfControl.Equals(otherControl); + else if (self is DataArea selfDataArea && other is DataArea otherDataArea) + return selfDataArea.Equals(otherDataArea); + else if (self is Device selfDevice && other is Device otherDevice) + return selfDevice.Equals(otherDevice); + else if (self is DipLocation selfDipLocation && other is DipLocation otherDipLocation) + return selfDipLocation.Equals(otherDipLocation); + else if (self is DipSwitch selfDipSwitch && other is DipSwitch otherDipSwitch) + return selfDipSwitch.Equals(otherDipSwitch); + else if (self is DipValue selfDipValue && other is DipValue otherDipValue) + return selfDipValue.Equals(otherDipValue); + else if (self is Disk diskSelf && other is Disk diskOther) return EqualsImpl(diskSelf, diskOther); + else if (self is DiskArea selfDiskArea && other is DiskArea otherDiskArea) + return selfDiskArea.Equals(otherDiskArea); + else if (self is Display selfDisplay && other is Display otherDisplay) + return selfDisplay.Equals(otherDisplay); + else if (self is Driver selfDriver && other is Driver otherDriver) + return selfDriver.Equals(otherDriver); + else if (self is Feature selfFeature && other is Feature otherFeature) + return selfFeature.Equals(otherFeature); + else if (self is Info selfInfo && other is Info otherInfo) + return selfInfo.Equals(otherInfo); + else if (self is Input selfInput && other is Input otherInput) + return selfInput.Equals(otherInput); + else if (self is Instance selfInstance && other is Instance otherInstance) + return selfInstance.Equals(otherInstance); else if (self is Media mediaSelf && other is Media mediaOther) return EqualsImpl(mediaSelf, mediaOther); + else if (self is Original selfOriginal && other is Original otherOriginal) + return selfOriginal.Equals(otherOriginal); + else if (self is Part selfPart && other is Part otherPart) + return selfPart.Equals(otherPart); + else if (self is Port selfPort && other is Port otherPort) + return selfPort.Equals(otherPort); + else if (self is RamOption selfRamOption && other is RamOption otherRamOption) + return selfRamOption.Equals(otherRamOption); + else if (self is Release selfRelease && other is Release otherRelease) + return selfRelease.Equals(otherRelease); + else if (self is ReleaseDetails selfReleaseDetails && other is ReleaseDetails otherReleaseDetails) + return selfReleaseDetails.Equals(otherReleaseDetails); else if (self is Rom romSelf && other is Rom romOther) return EqualsImpl(romSelf, romOther); + else if (self is Serials selfSerials && other is Serials otherSerials) + return selfSerials.Equals(otherSerials); + else if (self is SharedFeat selfSharedFeat && other is SharedFeat otherSharedFeat) + return selfSharedFeat.Equals(otherSharedFeat); + else if (self is Slot selfSlot && other is Slot otherSlot) + return selfSlot.Equals(otherSlot); + else if (self is SlotOption selfSlotOption && other is SlotOption otherSlotOption) + return selfSlotOption.Equals(otherSlotOption); + else if (self is SoftwareList selfSoftwareList && other is SoftwareList otherSoftwareList) + return selfSoftwareList.Equals(otherSoftwareList); + else if (self is Sound selfSound && other is Sound otherSound) + return selfSound.Equals(otherSound); + else if (self is SourceDetails selfSourceDetails && other is SourceDetails otherSourceDetails) + return selfSourceDetails.Equals(otherSourceDetails); + else if (self is Video selfVideo && other is Video otherVideo) + return selfVideo.Equals(otherVideo); else return EqualsImpl(self, other); #endif @@ -57,111 +165,8 @@ namespace SabreTools.Metadata if (!selfKeys.SetEquals(otherKeys)) return false; - // Check names - // if (self.GetName() != other.GetName()) - // return false; - // Handle individual type properties - if (self is Adjuster selfAdjuster && other is Adjuster otherAdjuster) - { - if (!selfAdjuster.Equals(otherAdjuster)) - return false; - } - else if (self is Analog selfAnalog && other is Analog otherAnalog) - { - if (!selfAnalog.Equals(otherAnalog)) - return false; - } - else if (self is Archive selfArchive && other is Archive otherArchive) - { - if (!selfArchive.Equals(otherArchive)) - return false; - } - else if (self is BiosSet selfBiosSet && other is BiosSet otherBiosSet) - { - if (!selfBiosSet.Equals(otherBiosSet)) - return false; - } - else if (self is Chip selfChip && other is Chip otherChip) - { - if (!selfChip.Equals(otherChip)) - return false; - } - else if (self is Condition selfCondition && other is Condition otherCondition) - { - if (!selfCondition.Equals(otherCondition)) - return false; - } - else if (self is Configuration selfConfiguration && other is Configuration otherConfiguration) - { - if (!selfConfiguration.Equals(otherConfiguration)) - return false; - } - else if (self is ConfLocation selfConfLocation && other is ConfLocation otherConfLocation) - { - if (!selfConfLocation.Equals(otherConfLocation)) - return false; - } - else if (self is ConfSetting selfConfSetting && other is ConfSetting otherConfSetting) - { - if (!selfConfSetting.Equals(otherConfSetting)) - return false; - } - else if (self is Control selfControl && other is Control otherControl) - { - if (!selfControl.Equals(otherControl)) - return false; - } - else if (self is DataArea selfDataArea && other is DataArea otherDataArea) - { - if (!selfDataArea.Equals(otherDataArea)) - return false; - } - else if (self is Device selfDevice && other is Device otherDevice) - { - if (!selfDevice.Equals(otherDevice)) - return false; - } - else if (self is DipLocation selfDipLocation && other is DipLocation otherDipLocation) - { - if (!selfDipLocation.Equals(otherDipLocation)) - return false; - } - else if (self is DipSwitch selfDipSwitch && other is DipSwitch otherDipSwitch) - { - if (!selfDipSwitch.Equals(otherDipSwitch)) - return false; - } - else if (self is DipValue selfDipValue && other is DipValue otherDipValue) - { - if (!selfDipValue.Equals(otherDipValue)) - return false; - } - else if (self is Disk selfDisk && other is Disk otherDisk) - { - // Intentionally skipped here - } - else if (self is DiskArea selfDiskArea && other is DiskArea otherDiskArea) - { - if (!selfDiskArea.Equals(otherDiskArea)) - return false; - } - else if (self is Display selfDisplay && other is Display otherDisplay) - { - if (!selfDisplay.Equals(otherDisplay)) - return false; - } - else if (self is Driver selfDriver && other is Driver otherDriver) - { - if (!selfDriver.Equals(otherDriver)) - return false; - } - else if (self is Feature selfFeature && other is Feature otherFeature) - { - if (!selfFeature.Equals(otherFeature)) - return false; - } - else if (self is Header selfHeader && other is Header otherHeader) + if (self is Header selfHeader && other is Header otherHeader) { if (selfHeader.Author != otherHeader.Author) return false; @@ -232,21 +237,6 @@ namespace SabreTools.Metadata if (selfHeader.Version != otherHeader.Version) return false; } - else if (self is Info selfInfo && other is Info otherInfo) - { - if (!selfInfo.Equals(otherInfo)) - return false; - } - else if (self is Input selfInput && other is Input otherInput) - { - if (!selfInput.Equals(otherInput)) - return false; - } - else if (self is Instance selfInstance && other is Instance otherInstance) - { - if (!selfInstance.Equals(otherInstance)) - return false; - } else if (self is Machine selfMachine && other is Machine otherMachine) { if (selfMachine.Board != otherMachine.Board) @@ -346,84 +336,6 @@ namespace SabreTools.Metadata if (selfMachine.Year != otherMachine.Year) return false; } - else if (self is Media selfMedia && other is Media otherMedia) - { - // Intentionally skipped here - } - else if (self is Original selfOriginal && other is Original otherOriginal) - { - if (!selfOriginal.Equals(otherOriginal)) - return false; - } - else if (self is Part selfPart && other is Part otherPart) - { - if (!selfPart.Equals(otherPart)) - return false; - } - else if (self is Port selfPort && other is Port otherPort) - { - if (!selfPort.Equals(otherPort)) - return false; - } - else if (self is RamOption selfRamOption && other is RamOption otherRamOption) - { - if (!selfRamOption.Equals(otherRamOption)) - return false; - } - else if (self is Release selfRelease && other is Release otherRelease) - { - if (!selfRelease.Equals(otherRelease)) - return false; - } - else if (self is ReleaseDetails selfReleaseDetails && other is ReleaseDetails otherReleaseDetails) - { - if (!selfReleaseDetails.Equals(otherReleaseDetails)) - return false; - } - else if (self is Rom selfRom && other is Rom otherRom) - { - // Intentionally skipped here - } - else if (self is Serials selfSerials && other is Serials otherSerials) - { - if (!selfSerials.Equals(otherSerials)) - return false; - } - else if (self is SharedFeat selfSharedFeat && other is SharedFeat otherSharedFeat) - { - if (!selfSharedFeat.Equals(otherSharedFeat)) - return false; - } - else if (self is Slot selfSlot && other is Slot otherSlot) - { - if (!selfSlot.Equals(otherSlot)) - return false; - } - else if (self is SlotOption selfSlotOption && other is SlotOption otherSlotOption) - { - if (!selfSlotOption.Equals(otherSlotOption)) - return false; - } - else if (self is SoftwareList selfSoftwareList && other is SoftwareList otherSoftwareList) - { - if (!selfSoftwareList.Equals(otherSoftwareList)) - return false; - } - else if (self is Sound selfSound && other is Sound otherSound) - { - if (!selfSound.Equals(otherSound)) - return false; - } - else if (self is SourceDetails selfSourceDetails && other is SourceDetails otherSourceDetails) - { - if (!selfSourceDetails.Equals(otherSourceDetails)) - return false; - } - else if (self is Video selfVideo && other is Video otherVideo) - { - if (!selfVideo.Equals(otherVideo)) - return false; - } // Check all pairs to see if they're equal foreach (var kvp in self) From 9c1d2e7b9c982c069481fbaf65c213f8de9194b0 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sat, 4 Apr 2026 13:11:10 -0400 Subject: [PATCH 075/142] Streamline metadata cloning --- SabreTools.Metadata.DatItems.Test/DatItemTests.cs | 6 ++++++ SabreTools.Metadata.DatItems/DatItemT.cs | 3 +-- SabreTools.Metadata.DatItems/Formats/Adjuster.cs | 5 ++--- SabreTools.Metadata.DatItems/Formats/Analog.cs | 7 +++++-- SabreTools.Metadata.DatItems/Formats/Archive.cs | 7 +++++-- SabreTools.Metadata.DatItems/Formats/BiosSet.cs | 7 +++++-- SabreTools.Metadata.DatItems/Formats/Blank.cs | 7 +++++-- SabreTools.Metadata.DatItems/Formats/Chip.cs | 7 +++++-- SabreTools.Metadata.DatItems/Formats/Condition.cs | 7 +++++-- SabreTools.Metadata.DatItems/Formats/ConfLocation.cs | 7 +++++-- SabreTools.Metadata.DatItems/Formats/ConfSetting.cs | 5 ++--- SabreTools.Metadata.DatItems/Formats/Configuration.cs | 5 ++--- SabreTools.Metadata.DatItems/Formats/Control.cs | 7 +++++-- SabreTools.Metadata.DatItems/Formats/DataArea.cs | 5 ++--- SabreTools.Metadata.DatItems/Formats/Device.cs | 5 ++--- SabreTools.Metadata.DatItems/Formats/DeviceRef.cs | 7 +++++-- SabreTools.Metadata.DatItems/Formats/DipLocation.cs | 7 +++++-- SabreTools.Metadata.DatItems/Formats/DipSwitch.cs | 5 ++--- SabreTools.Metadata.DatItems/Formats/DipValue.cs | 5 ++--- SabreTools.Metadata.DatItems/Formats/Disk.cs | 6 +++++- SabreTools.Metadata.DatItems/Formats/DiskArea.cs | 5 ++--- SabreTools.Metadata.DatItems/Formats/Display.cs | 7 +++++-- SabreTools.Metadata.DatItems/Formats/Driver.cs | 7 +++++-- SabreTools.Metadata.DatItems/Formats/Extension.cs | 7 +++++-- SabreTools.Metadata.DatItems/Formats/Feature.cs | 9 ++++++--- SabreTools.Metadata.DatItems/Formats/Info.cs | 7 +++++-- SabreTools.Metadata.DatItems/Formats/Input.cs | 5 ++--- SabreTools.Metadata.DatItems/Formats/Instance.cs | 7 +++++-- SabreTools.Metadata.DatItems/Formats/Media.cs | 6 +++++- SabreTools.Metadata.DatItems/Formats/Part.cs | 5 ++--- SabreTools.Metadata.DatItems/Formats/PartFeature.cs | 7 +++++-- SabreTools.Metadata.DatItems/Formats/Port.cs | 5 ++--- SabreTools.Metadata.DatItems/Formats/RamOption.cs | 7 +++++-- SabreTools.Metadata.DatItems/Formats/Release.cs | 7 +++++-- SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs | 7 +++++-- SabreTools.Metadata.DatItems/Formats/Rom.cs | 6 +++++- SabreTools.Metadata.DatItems/Formats/Sample.cs | 7 +++++-- SabreTools.Metadata.DatItems/Formats/Serials.cs | 7 +++++-- SabreTools.Metadata.DatItems/Formats/SharedFeat.cs | 7 +++++-- SabreTools.Metadata.DatItems/Formats/Slot.cs | 5 ++--- SabreTools.Metadata.DatItems/Formats/SlotOption.cs | 7 +++++-- SabreTools.Metadata.DatItems/Formats/SoftwareList.cs | 7 +++++-- SabreTools.Metadata.DatItems/Formats/Sound.cs | 7 +++++-- SabreTools.Metadata.DatItems/Formats/SourceDetails.cs | 7 +++++-- 44 files changed, 182 insertions(+), 96 deletions(-) diff --git a/SabreTools.Metadata.DatItems.Test/DatItemTests.cs b/SabreTools.Metadata.DatItems.Test/DatItemTests.cs index 58969f46..32028d39 100644 --- a/SabreTools.Metadata.DatItems.Test/DatItemTests.cs +++ b/SabreTools.Metadata.DatItems.Test/DatItemTests.cs @@ -35,6 +35,12 @@ namespace SabreTools.Metadata.DatItems.Test _internal = _internal.DeepClone() as TestDatItemModel ?? [] }; + /// + public override TestDatItemModel GetInternalClone() + { + return _internal.DeepClone() as TestDatItemModel ?? []; + } + /// public override string? GetName() => _nameKey is not null ? _internal.ReadString(_nameKey) : null; diff --git a/SabreTools.Metadata.DatItems/DatItemT.cs b/SabreTools.Metadata.DatItems/DatItemT.cs index fb4eeefa..758a02d4 100644 --- a/SabreTools.Metadata.DatItems/DatItemT.cs +++ b/SabreTools.Metadata.DatItems/DatItemT.cs @@ -1,5 +1,4 @@ using System; -using SabreTools.Data.Extensions; namespace SabreTools.Metadata.DatItems { @@ -38,7 +37,7 @@ namespace SabreTools.Metadata.DatItems /// /// Get a clone of the current internal model /// - public virtual T GetInternalClone() => (_internal.DeepClone() as T)!; + public abstract T GetInternalClone(); #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/Adjuster.cs b/SabreTools.Metadata.DatItems/Formats/Adjuster.cs index 26200da3..60b1d536 100644 --- a/SabreTools.Metadata.DatItems/Formats/Adjuster.cs +++ b/SabreTools.Metadata.DatItems/Formats/Adjuster.cs @@ -1,6 +1,5 @@ using System.Xml.Serialization; using Newtonsoft.Json; -using SabreTools.Data.Extensions; namespace SabreTools.Metadata.DatItems.Formats { @@ -67,12 +66,12 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new Adjuster(_internal.DeepClone() as Data.Models.Metadata.Adjuster ?? []); + public override object Clone() => new Adjuster(GetInternalClone()); /// public override Data.Models.Metadata.Adjuster GetInternalClone() { - var adjusterItem = base.GetInternalClone(); + var adjusterItem = (_internal as Data.Models.Metadata.Adjuster)?.Clone() as Data.Models.Metadata.Adjuster ?? []; if (Condition is not null) adjusterItem.Condition = Condition.GetInternalClone(); diff --git a/SabreTools.Metadata.DatItems/Formats/Analog.cs b/SabreTools.Metadata.DatItems/Formats/Analog.cs index 15828727..fe068969 100644 --- a/SabreTools.Metadata.DatItems/Formats/Analog.cs +++ b/SabreTools.Metadata.DatItems/Formats/Analog.cs @@ -1,6 +1,5 @@ using System.Xml.Serialization; using Newtonsoft.Json; -using SabreTools.Data.Extensions; namespace SabreTools.Metadata.DatItems.Formats { @@ -51,7 +50,11 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new Analog(_internal.DeepClone() as Data.Models.Metadata.Analog ?? []); + public override object Clone() => new Analog(GetInternalClone()); + + /// + public override Data.Models.Metadata.Analog GetInternalClone() + => (_internal as Data.Models.Metadata.Analog)?.Clone() as Data.Models.Metadata.Analog ?? []; #endregion } diff --git a/SabreTools.Metadata.DatItems/Formats/Archive.cs b/SabreTools.Metadata.DatItems/Formats/Archive.cs index b1a32822..42ed0b54 100644 --- a/SabreTools.Metadata.DatItems/Formats/Archive.cs +++ b/SabreTools.Metadata.DatItems/Formats/Archive.cs @@ -1,6 +1,5 @@ using System.Xml.Serialization; using Newtonsoft.Json; -using SabreTools.Data.Extensions; namespace SabreTools.Metadata.DatItems.Formats { @@ -242,7 +241,11 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new Archive(_internal.DeepClone() as Data.Models.Metadata.Archive ?? []); + public override object Clone() => new Archive(GetInternalClone()); + + /// + public override Data.Models.Metadata.Archive GetInternalClone() + => (_internal as Data.Models.Metadata.Archive)?.Clone() as Data.Models.Metadata.Archive ?? []; #endregion } diff --git a/SabreTools.Metadata.DatItems/Formats/BiosSet.cs b/SabreTools.Metadata.DatItems/Formats/BiosSet.cs index 6186aabc..9cad0fe2 100644 --- a/SabreTools.Metadata.DatItems/Formats/BiosSet.cs +++ b/SabreTools.Metadata.DatItems/Formats/BiosSet.cs @@ -1,6 +1,5 @@ using System.Xml.Serialization; using Newtonsoft.Json; -using SabreTools.Data.Extensions; namespace SabreTools.Metadata.DatItems.Formats { @@ -63,7 +62,11 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new BiosSet(_internal.DeepClone() as Data.Models.Metadata.BiosSet ?? []); + public override object Clone() => new BiosSet(GetInternalClone()); + + /// + public override Data.Models.Metadata.BiosSet GetInternalClone() + => (_internal as Data.Models.Metadata.BiosSet)?.Clone() as Data.Models.Metadata.BiosSet ?? []; #endregion } diff --git a/SabreTools.Metadata.DatItems/Formats/Blank.cs b/SabreTools.Metadata.DatItems/Formats/Blank.cs index ff1254f3..b31e26f1 100644 --- a/SabreTools.Metadata.DatItems/Formats/Blank.cs +++ b/SabreTools.Metadata.DatItems/Formats/Blank.cs @@ -1,6 +1,5 @@ using System.Xml.Serialization; using Newtonsoft.Json; -using SabreTools.Data.Extensions; namespace SabreTools.Metadata.DatItems.Formats { @@ -45,7 +44,11 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new Blank(_internal.DeepClone() as Data.Models.Metadata.Blank ?? []); + public override object Clone() => new Blank(GetInternalClone()); + + /// + public override Data.Models.Metadata.Blank GetInternalClone() + => (_internal as Data.Models.Metadata.Blank)?.Clone() as Data.Models.Metadata.Blank ?? []; #endregion } diff --git a/SabreTools.Metadata.DatItems/Formats/Chip.cs b/SabreTools.Metadata.DatItems/Formats/Chip.cs index addc3037..ac0b6f8f 100644 --- a/SabreTools.Metadata.DatItems/Formats/Chip.cs +++ b/SabreTools.Metadata.DatItems/Formats/Chip.cs @@ -1,6 +1,5 @@ using System.Xml.Serialization; using Newtonsoft.Json; -using SabreTools.Data.Extensions; namespace SabreTools.Metadata.DatItems.Formats { @@ -81,7 +80,11 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new Chip(_internal.DeepClone() as Data.Models.Metadata.Chip ?? []); + public override object Clone() => new Chip(GetInternalClone()); + + /// + public override Data.Models.Metadata.Chip GetInternalClone() + => (_internal as Data.Models.Metadata.Chip)?.Clone() as Data.Models.Metadata.Chip ?? []; #endregion } diff --git a/SabreTools.Metadata.DatItems/Formats/Condition.cs b/SabreTools.Metadata.DatItems/Formats/Condition.cs index 83b850ef..0621276d 100644 --- a/SabreTools.Metadata.DatItems/Formats/Condition.cs +++ b/SabreTools.Metadata.DatItems/Formats/Condition.cs @@ -1,6 +1,5 @@ using System.Xml.Serialization; using Newtonsoft.Json; -using SabreTools.Data.Extensions; namespace SabreTools.Metadata.DatItems.Formats { @@ -69,7 +68,11 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new Condition(_internal.DeepClone() as Data.Models.Metadata.Condition ?? []); + public override object Clone() => new Condition(GetInternalClone()); + + /// + public override Data.Models.Metadata.Condition GetInternalClone() + => (_internal as Data.Models.Metadata.Condition)?.Clone() as Data.Models.Metadata.Condition ?? []; #endregion } diff --git a/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs b/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs index 06068274..cd5ce116 100644 --- a/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs +++ b/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs @@ -1,6 +1,5 @@ using System.Xml.Serialization; using Newtonsoft.Json; -using SabreTools.Data.Extensions; namespace SabreTools.Metadata.DatItems.Formats { @@ -63,7 +62,11 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new ConfLocation(_internal.DeepClone() as Data.Models.Metadata.ConfLocation ?? []); + public override object Clone() => new ConfLocation(GetInternalClone()); + + /// + public override Data.Models.Metadata.ConfLocation GetInternalClone() + => (_internal as Data.Models.Metadata.ConfLocation)?.Clone() as Data.Models.Metadata.ConfLocation ?? []; #endregion } diff --git a/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs b/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs index ef585006..6af0334c 100644 --- a/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs +++ b/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs @@ -1,6 +1,5 @@ using System.Xml.Serialization; using Newtonsoft.Json; -using SabreTools.Data.Extensions; namespace SabreTools.Metadata.DatItems.Formats { @@ -73,12 +72,12 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new ConfSetting(_internal.DeepClone() as Data.Models.Metadata.ConfSetting ?? []); + public override object Clone() => new ConfSetting(GetInternalClone()); /// public override Data.Models.Metadata.ConfSetting GetInternalClone() { - var confSettingItem = base.GetInternalClone(); + var confSettingItem = (_internal as Data.Models.Metadata.ConfSetting)?.Clone() as Data.Models.Metadata.ConfSetting ?? []; if (Condition is not null) confSettingItem.Condition = Condition.GetInternalClone(); diff --git a/SabreTools.Metadata.DatItems/Formats/Configuration.cs b/SabreTools.Metadata.DatItems/Formats/Configuration.cs index b6907dbd..2a96bdb1 100644 --- a/SabreTools.Metadata.DatItems/Formats/Configuration.cs +++ b/SabreTools.Metadata.DatItems/Formats/Configuration.cs @@ -1,7 +1,6 @@ using System; using System.Xml.Serialization; using Newtonsoft.Json; -using SabreTools.Data.Extensions; namespace SabreTools.Metadata.DatItems.Formats { @@ -90,12 +89,12 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new Configuration(_internal.DeepClone() as Data.Models.Metadata.Configuration ?? []); + public override object Clone() => new Configuration(GetInternalClone()); /// public override Data.Models.Metadata.Configuration GetInternalClone() { - var configurationItem = base.GetInternalClone(); + var configurationItem = (_internal as Data.Models.Metadata.Configuration)?.Clone() as Data.Models.Metadata.Configuration ?? []; if (Condition is not null) configurationItem.Condition = Condition.GetInternalClone(); diff --git a/SabreTools.Metadata.DatItems/Formats/Control.cs b/SabreTools.Metadata.DatItems/Formats/Control.cs index 4eebafc5..aaa21346 100644 --- a/SabreTools.Metadata.DatItems/Formats/Control.cs +++ b/SabreTools.Metadata.DatItems/Formats/Control.cs @@ -1,6 +1,5 @@ using System.Xml.Serialization; using Newtonsoft.Json; -using SabreTools.Data.Extensions; namespace SabreTools.Metadata.DatItems.Formats { @@ -117,7 +116,11 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new Control(_internal.DeepClone() as Data.Models.Metadata.Control ?? []); + public override object Clone() => new Control(GetInternalClone()); + + /// + public override Data.Models.Metadata.Control GetInternalClone() + => (_internal as Data.Models.Metadata.Control)?.Clone() as Data.Models.Metadata.Control ?? []; #endregion } diff --git a/SabreTools.Metadata.DatItems/Formats/DataArea.cs b/SabreTools.Metadata.DatItems/Formats/DataArea.cs index e37ced8e..5d1c4525 100644 --- a/SabreTools.Metadata.DatItems/Formats/DataArea.cs +++ b/SabreTools.Metadata.DatItems/Formats/DataArea.cs @@ -1,7 +1,6 @@ using System; using System.Xml.Serialization; using Newtonsoft.Json; -using SabreTools.Data.Extensions; namespace SabreTools.Metadata.DatItems.Formats { @@ -81,11 +80,11 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new DataArea(_internal.DeepClone() as Data.Models.Metadata.DataArea ?? []); + public override object Clone() => new DataArea(GetInternalClone()); public override Data.Models.Metadata.DataArea GetInternalClone() { - var partItem = base.GetInternalClone(); + var partItem = (_internal as Data.Models.Metadata.DataArea)?.Clone() as Data.Models.Metadata.DataArea ?? []; if (Rom is not null) partItem.Rom = Array.ConvertAll(Rom, rom => rom.GetInternalClone()); diff --git a/SabreTools.Metadata.DatItems/Formats/Device.cs b/SabreTools.Metadata.DatItems/Formats/Device.cs index 4f79c740..600965fa 100644 --- a/SabreTools.Metadata.DatItems/Formats/Device.cs +++ b/SabreTools.Metadata.DatItems/Formats/Device.cs @@ -1,7 +1,6 @@ using System; using System.Xml.Serialization; using Newtonsoft.Json; -using SabreTools.Data.Extensions; namespace SabreTools.Metadata.DatItems.Formats { @@ -94,12 +93,12 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new Device(_internal.DeepClone() as Data.Models.Metadata.Device ?? []); + public override object Clone() => new Device(GetInternalClone()); /// public override Data.Models.Metadata.Device GetInternalClone() { - var deviceItem = base.GetInternalClone(); + var deviceItem = (_internal as Data.Models.Metadata.Device)?.Clone() as Data.Models.Metadata.Device ?? []; deviceItem.DeviceType = DeviceType; deviceItem.FixedImage = FixedImage; diff --git a/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs b/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs index 24da2765..7c16f71a 100644 --- a/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs +++ b/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs @@ -1,6 +1,5 @@ using System.Xml.Serialization; using Newtonsoft.Json; -using SabreTools.Data.Extensions; namespace SabreTools.Metadata.DatItems.Formats { @@ -51,7 +50,11 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new DeviceRef(_internal.DeepClone() as Data.Models.Metadata.DeviceRef ?? []); + public override object Clone() => new DeviceRef(GetInternalClone()); + + /// + public override Data.Models.Metadata.DeviceRef GetInternalClone() + => (_internal as Data.Models.Metadata.DeviceRef)?.Clone() as Data.Models.Metadata.DeviceRef ?? []; #endregion } diff --git a/SabreTools.Metadata.DatItems/Formats/DipLocation.cs b/SabreTools.Metadata.DatItems/Formats/DipLocation.cs index 9ea4b4c4..2f0d6870 100644 --- a/SabreTools.Metadata.DatItems/Formats/DipLocation.cs +++ b/SabreTools.Metadata.DatItems/Formats/DipLocation.cs @@ -1,6 +1,5 @@ using System.Xml.Serialization; using Newtonsoft.Json; -using SabreTools.Data.Extensions; namespace SabreTools.Metadata.DatItems.Formats { @@ -63,7 +62,11 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new DipLocation(_internal.DeepClone() as Data.Models.Metadata.DipLocation ?? []); + public override object Clone() => new DipLocation(GetInternalClone()); + + /// + public override Data.Models.Metadata.DipLocation GetInternalClone() + => (_internal as Data.Models.Metadata.DipLocation)?.Clone() as Data.Models.Metadata.DipLocation ?? []; #endregion } diff --git a/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs b/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs index 72a398fa..1253d655 100644 --- a/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs +++ b/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs @@ -1,7 +1,6 @@ using System; using System.Xml.Serialization; using Newtonsoft.Json; -using SabreTools.Data.Extensions; namespace SabreTools.Metadata.DatItems.Formats { @@ -117,12 +116,12 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new DipSwitch(_internal.DeepClone() as Data.Models.Metadata.DipSwitch ?? []); + public override object Clone() => new DipSwitch(GetInternalClone()); /// public override Data.Models.Metadata.DipSwitch GetInternalClone() { - var dipSwitchItem = base.GetInternalClone(); + var dipSwitchItem = (_internal as Data.Models.Metadata.DipSwitch)?.Clone() as Data.Models.Metadata.DipSwitch ?? []; if (Condition is not null) dipSwitchItem.Condition = Condition.GetInternalClone(); diff --git a/SabreTools.Metadata.DatItems/Formats/DipValue.cs b/SabreTools.Metadata.DatItems/Formats/DipValue.cs index 2c0a331b..48da33fb 100644 --- a/SabreTools.Metadata.DatItems/Formats/DipValue.cs +++ b/SabreTools.Metadata.DatItems/Formats/DipValue.cs @@ -1,6 +1,5 @@ using System.Xml.Serialization; using Newtonsoft.Json; -using SabreTools.Data.Extensions; namespace SabreTools.Metadata.DatItems.Formats { @@ -73,12 +72,12 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new DipValue(_internal.DeepClone() as Data.Models.Metadata.DipValue ?? []); + public override object Clone() => new DipValue(GetInternalClone()); /// public override Data.Models.Metadata.DipValue GetInternalClone() { - var dipValueItem = base.GetInternalClone(); + var dipValueItem = (_internal as Data.Models.Metadata.DipValue)?.Clone() as Data.Models.Metadata.DipValue ?? []; if (Condition is not null) dipValueItem.Condition = Condition.GetInternalClone(); diff --git a/SabreTools.Metadata.DatItems/Formats/Disk.cs b/SabreTools.Metadata.DatItems/Formats/Disk.cs index 3816d277..4138aa40 100644 --- a/SabreTools.Metadata.DatItems/Formats/Disk.cs +++ b/SabreTools.Metadata.DatItems/Formats/Disk.cs @@ -139,7 +139,11 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new Disk(_internal.DeepClone() as Data.Models.Metadata.Disk ?? []); + public override object Clone() => new Disk(GetInternalClone()); + + /// + public override Data.Models.Metadata.Disk GetInternalClone() + => (_internal as Data.Models.Metadata.Disk)?.Clone() as Data.Models.Metadata.Disk ?? []; /// /// Convert a disk to the closest Rom approximation diff --git a/SabreTools.Metadata.DatItems/Formats/DiskArea.cs b/SabreTools.Metadata.DatItems/Formats/DiskArea.cs index bfeffe2d..6c08ec64 100644 --- a/SabreTools.Metadata.DatItems/Formats/DiskArea.cs +++ b/SabreTools.Metadata.DatItems/Formats/DiskArea.cs @@ -1,7 +1,6 @@ using System; using System.Xml.Serialization; using Newtonsoft.Json; -using SabreTools.Data.Extensions; namespace SabreTools.Metadata.DatItems.Formats { @@ -63,11 +62,11 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new DiskArea(_internal.DeepClone() as Data.Models.Metadata.DiskArea ?? []); + public override object Clone() => new DiskArea(GetInternalClone()); public override Data.Models.Metadata.DiskArea GetInternalClone() { - var partItem = base.GetInternalClone(); + var partItem = (_internal as Data.Models.Metadata.DiskArea)?.Clone() as Data.Models.Metadata.DiskArea ?? []; if (Disk is not null) partItem.Disk = Array.ConvertAll(Disk, rom => rom.GetInternalClone()); diff --git a/SabreTools.Metadata.DatItems/Formats/Display.cs b/SabreTools.Metadata.DatItems/Formats/Display.cs index 7c849e5e..4077ff8d 100644 --- a/SabreTools.Metadata.DatItems/Formats/Display.cs +++ b/SabreTools.Metadata.DatItems/Formats/Display.cs @@ -1,6 +1,5 @@ using System.Xml.Serialization; using Newtonsoft.Json; -using SabreTools.Data.Extensions; namespace SabreTools.Metadata.DatItems.Formats { @@ -158,7 +157,11 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new Display(_internal.DeepClone() as Data.Models.Metadata.Display ?? []); + public override object Clone() => new Display(GetInternalClone()); + + /// + public override Data.Models.Metadata.Display GetInternalClone() + => (_internal as Data.Models.Metadata.Display)?.Clone() as Data.Models.Metadata.Display ?? []; #endregion } diff --git a/SabreTools.Metadata.DatItems/Formats/Driver.cs b/SabreTools.Metadata.DatItems/Formats/Driver.cs index ff5ff018..bc067f8b 100644 --- a/SabreTools.Metadata.DatItems/Formats/Driver.cs +++ b/SabreTools.Metadata.DatItems/Formats/Driver.cs @@ -1,6 +1,5 @@ using System.Xml.Serialization; using Newtonsoft.Json; -using SabreTools.Data.Extensions; namespace SabreTools.Metadata.DatItems.Formats { @@ -117,7 +116,11 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new Driver(_internal.DeepClone() as Data.Models.Metadata.Driver ?? []); + public override object Clone() => new Driver(GetInternalClone()); + + /// + public override Data.Models.Metadata.Driver GetInternalClone() + => (_internal as Data.Models.Metadata.Driver)?.Clone() as Data.Models.Metadata.Driver ?? []; #endregion } diff --git a/SabreTools.Metadata.DatItems/Formats/Extension.cs b/SabreTools.Metadata.DatItems/Formats/Extension.cs index 4762f4cc..6a734f5f 100644 --- a/SabreTools.Metadata.DatItems/Formats/Extension.cs +++ b/SabreTools.Metadata.DatItems/Formats/Extension.cs @@ -1,6 +1,5 @@ using System.Xml.Serialization; using Newtonsoft.Json; -using SabreTools.Data.Extensions; namespace SabreTools.Metadata.DatItems.Formats { @@ -51,7 +50,11 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new Extension(_internal.DeepClone() as Data.Models.Metadata.Extension ?? []); + public override object Clone() => new Extension(GetInternalClone()); + + /// + public override Data.Models.Metadata.Extension GetInternalClone() + => (_internal as Data.Models.Metadata.Extension)?.Clone() as Data.Models.Metadata.Extension ?? []; #endregion } diff --git a/SabreTools.Metadata.DatItems/Formats/Feature.cs b/SabreTools.Metadata.DatItems/Formats/Feature.cs index ad0d4913..dc70d747 100644 --- a/SabreTools.Metadata.DatItems/Formats/Feature.cs +++ b/SabreTools.Metadata.DatItems/Formats/Feature.cs @@ -1,6 +1,5 @@ -using System.Xml.Serialization; +using System.Xml.Serialization; using Newtonsoft.Json; -using SabreTools.Data.Extensions; namespace SabreTools.Metadata.DatItems.Formats { @@ -75,7 +74,11 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new Feature(_internal.DeepClone() as Data.Models.Metadata.Feature ?? []); + public override object Clone() => new Feature(GetInternalClone()); + + /// + public override Data.Models.Metadata.Feature GetInternalClone() + => (_internal as Data.Models.Metadata.Feature)?.Clone() as Data.Models.Metadata.Feature ?? []; #endregion } diff --git a/SabreTools.Metadata.DatItems/Formats/Info.cs b/SabreTools.Metadata.DatItems/Formats/Info.cs index 9de391a2..7ee61a84 100644 --- a/SabreTools.Metadata.DatItems/Formats/Info.cs +++ b/SabreTools.Metadata.DatItems/Formats/Info.cs @@ -1,6 +1,5 @@ using System.Xml.Serialization; using Newtonsoft.Json; -using SabreTools.Data.Extensions; namespace SabreTools.Metadata.DatItems.Formats { @@ -57,7 +56,11 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new Info(_internal.DeepClone() as Data.Models.Metadata.Info ?? []); + public override object Clone() => new Info(GetInternalClone()); + + /// + public override Data.Models.Metadata.Info GetInternalClone() + => (_internal as Data.Models.Metadata.Info)?.Clone() as Data.Models.Metadata.Info ?? []; #endregion } diff --git a/SabreTools.Metadata.DatItems/Formats/Input.cs b/SabreTools.Metadata.DatItems/Formats/Input.cs index 0e72bd20..d3ffe936 100644 --- a/SabreTools.Metadata.DatItems/Formats/Input.cs +++ b/SabreTools.Metadata.DatItems/Formats/Input.cs @@ -1,7 +1,6 @@ using System; using System.Xml.Serialization; using Newtonsoft.Json; -using SabreTools.Data.Extensions; namespace SabreTools.Metadata.DatItems.Formats { @@ -92,12 +91,12 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new Input(_internal.DeepClone() as Data.Models.Metadata.Input ?? []); + public override object Clone() => new Input(GetInternalClone()); /// public override Data.Models.Metadata.Input GetInternalClone() { - var inputItem = base.GetInternalClone(); + var inputItem = (_internal as Data.Models.Metadata.Input)?.Clone() as Data.Models.Metadata.Input ?? []; if (Control is not null) inputItem.Control = Array.ConvertAll(Control, control => control.GetInternalClone()); diff --git a/SabreTools.Metadata.DatItems/Formats/Instance.cs b/SabreTools.Metadata.DatItems/Formats/Instance.cs index 10467c95..7c4ddc50 100644 --- a/SabreTools.Metadata.DatItems/Formats/Instance.cs +++ b/SabreTools.Metadata.DatItems/Formats/Instance.cs @@ -1,6 +1,5 @@ using System.Xml.Serialization; using Newtonsoft.Json; -using SabreTools.Data.Extensions; namespace SabreTools.Metadata.DatItems.Formats { @@ -57,7 +56,11 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new Instance(_internal.DeepClone() as Data.Models.Metadata.Instance ?? []); + public override object Clone() => new Instance(GetInternalClone()); + + /// + public override Data.Models.Metadata.Instance GetInternalClone() + => (_internal as Data.Models.Metadata.Instance)?.Clone() as Data.Models.Metadata.Instance ?? []; #endregion } diff --git a/SabreTools.Metadata.DatItems/Formats/Media.cs b/SabreTools.Metadata.DatItems/Formats/Media.cs index a375cdcd..8046f74c 100644 --- a/SabreTools.Metadata.DatItems/Formats/Media.cs +++ b/SabreTools.Metadata.DatItems/Formats/Media.cs @@ -92,7 +92,11 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new Media(_internal.DeepClone() as Data.Models.Metadata.Media ?? []); + public override object Clone() => new Media(GetInternalClone()); + + /// + public override Data.Models.Metadata.Media GetInternalClone() + => (_internal as Data.Models.Metadata.Media)?.Clone() as Data.Models.Metadata.Media ?? []; /// /// Convert a media to the closest Rom approximation diff --git a/SabreTools.Metadata.DatItems/Formats/Part.cs b/SabreTools.Metadata.DatItems/Formats/Part.cs index f2253d6a..13cae7ae 100644 --- a/SabreTools.Metadata.DatItems/Formats/Part.cs +++ b/SabreTools.Metadata.DatItems/Formats/Part.cs @@ -1,7 +1,6 @@ using System; using System.Xml.Serialization; using Newtonsoft.Json; -using SabreTools.Data.Extensions; namespace SabreTools.Metadata.DatItems.Formats { @@ -93,12 +92,12 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new Part(_internal.DeepClone() as Data.Models.Metadata.Part ?? []); + public override object Clone() => new Part(GetInternalClone()); /// public override Data.Models.Metadata.Part GetInternalClone() { - var partItem = base.GetInternalClone(); + var partItem = (_internal as Data.Models.Metadata.Part)?.Clone() as Data.Models.Metadata.Part ?? []; if (DataArea is not null) partItem.DataArea = Array.ConvertAll(DataArea, dataArea => dataArea.GetInternalClone()); diff --git a/SabreTools.Metadata.DatItems/Formats/PartFeature.cs b/SabreTools.Metadata.DatItems/Formats/PartFeature.cs index 10972be5..c074b544 100644 --- a/SabreTools.Metadata.DatItems/Formats/PartFeature.cs +++ b/SabreTools.Metadata.DatItems/Formats/PartFeature.cs @@ -1,6 +1,5 @@ using System.Xml.Serialization; using Newtonsoft.Json; -using SabreTools.Data.Extensions; namespace SabreTools.Metadata.DatItems.Formats { @@ -80,7 +79,11 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new PartFeature(_internal.DeepClone() as Data.Models.Metadata.Feature ?? []); + public override object Clone() => new PartFeature(GetInternalClone()); + + /// + public override Data.Models.Metadata.Feature GetInternalClone() + => (_internal as Data.Models.Metadata.Feature)?.Clone() as Data.Models.Metadata.Feature ?? []; #endregion } diff --git a/SabreTools.Metadata.DatItems/Formats/Port.cs b/SabreTools.Metadata.DatItems/Formats/Port.cs index 4d67d41b..adfc986d 100644 --- a/SabreTools.Metadata.DatItems/Formats/Port.cs +++ b/SabreTools.Metadata.DatItems/Formats/Port.cs @@ -1,7 +1,6 @@ using System; using System.Xml.Serialization; using Newtonsoft.Json; -using SabreTools.Data.Extensions; namespace SabreTools.Metadata.DatItems.Formats { @@ -62,12 +61,12 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new Port(_internal.DeepClone() as Data.Models.Metadata.Port ?? []); + public override object Clone() => new Port(GetInternalClone()); /// public override Data.Models.Metadata.Port GetInternalClone() { - var portItem = base.GetInternalClone(); + var portItem = (_internal as Data.Models.Metadata.Port)?.Clone() as Data.Models.Metadata.Port ?? []; if (Analog is not null) portItem.Analog = Array.ConvertAll(Analog, analog => analog.GetInternalClone()); diff --git a/SabreTools.Metadata.DatItems/Formats/RamOption.cs b/SabreTools.Metadata.DatItems/Formats/RamOption.cs index b0360521..68f78055 100644 --- a/SabreTools.Metadata.DatItems/Formats/RamOption.cs +++ b/SabreTools.Metadata.DatItems/Formats/RamOption.cs @@ -1,6 +1,5 @@ using System.Xml.Serialization; using Newtonsoft.Json; -using SabreTools.Data.Extensions; namespace SabreTools.Metadata.DatItems.Formats { @@ -63,7 +62,11 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new RamOption(_internal.DeepClone() as Data.Models.Metadata.RamOption ?? []); + public override object Clone() => new RamOption(GetInternalClone()); + + /// + public override Data.Models.Metadata.RamOption GetInternalClone() + => (_internal as Data.Models.Metadata.RamOption)?.Clone() as Data.Models.Metadata.RamOption ?? []; #endregion } diff --git a/SabreTools.Metadata.DatItems/Formats/Release.cs b/SabreTools.Metadata.DatItems/Formats/Release.cs index faaa3207..a700380f 100644 --- a/SabreTools.Metadata.DatItems/Formats/Release.cs +++ b/SabreTools.Metadata.DatItems/Formats/Release.cs @@ -1,6 +1,5 @@ using System.Xml.Serialization; using Newtonsoft.Json; -using SabreTools.Data.Extensions; namespace SabreTools.Metadata.DatItems.Formats { @@ -75,7 +74,11 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new Release(_internal.DeepClone() as Data.Models.Metadata.Release ?? []); + public override object Clone() => new Release(GetInternalClone()); + + /// + public override Data.Models.Metadata.Release GetInternalClone() + => (_internal as Data.Models.Metadata.Release)?.Clone() as Data.Models.Metadata.Release ?? []; #endregion } diff --git a/SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs b/SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs index 6668060b..ee887863 100644 --- a/SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs +++ b/SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs @@ -1,6 +1,5 @@ using System.Xml.Serialization; using Newtonsoft.Json; -using SabreTools.Data.Extensions; namespace SabreTools.Metadata.DatItems.Formats { @@ -140,7 +139,11 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new ReleaseDetails(_internal.DeepClone() as Data.Models.Metadata.ReleaseDetails ?? []); + public override object Clone() => new ReleaseDetails(GetInternalClone()); + + /// + public override Data.Models.Metadata.ReleaseDetails GetInternalClone() + => (_internal as Data.Models.Metadata.ReleaseDetails)?.Clone() as Data.Models.Metadata.ReleaseDetails ?? []; #endregion } diff --git a/SabreTools.Metadata.DatItems/Formats/Rom.cs b/SabreTools.Metadata.DatItems/Formats/Rom.cs index beb4ed44..92bdc2f2 100644 --- a/SabreTools.Metadata.DatItems/Formats/Rom.cs +++ b/SabreTools.Metadata.DatItems/Formats/Rom.cs @@ -402,7 +402,11 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new Rom(_internal.DeepClone() as Data.Models.Metadata.Rom ?? []); + public override object Clone() => new Rom(GetInternalClone()); + + /// + public override Data.Models.Metadata.Rom GetInternalClone() + => (_internal as Data.Models.Metadata.Rom)?.Clone() as Data.Models.Metadata.Rom ?? []; #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/Sample.cs b/SabreTools.Metadata.DatItems/Formats/Sample.cs index 45caa20d..d2b28deb 100644 --- a/SabreTools.Metadata.DatItems/Formats/Sample.cs +++ b/SabreTools.Metadata.DatItems/Formats/Sample.cs @@ -1,6 +1,5 @@ using System.Xml.Serialization; using Newtonsoft.Json; -using SabreTools.Data.Extensions; namespace SabreTools.Metadata.DatItems.Formats { @@ -51,7 +50,11 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new Sample(_internal.DeepClone() as Data.Models.Metadata.Sample ?? []); + public override object Clone() => new Sample(GetInternalClone()); + + /// + public override Data.Models.Metadata.Sample GetInternalClone() + => (_internal as Data.Models.Metadata.Sample)?.Clone() as Data.Models.Metadata.Sample ?? []; #endregion } diff --git a/SabreTools.Metadata.DatItems/Formats/Serials.cs b/SabreTools.Metadata.DatItems/Formats/Serials.cs index 5660d157..c9fb8c6b 100644 --- a/SabreTools.Metadata.DatItems/Formats/Serials.cs +++ b/SabreTools.Metadata.DatItems/Formats/Serials.cs @@ -1,6 +1,5 @@ using System.Xml.Serialization; using Newtonsoft.Json; -using SabreTools.Data.Extensions; namespace SabreTools.Metadata.DatItems.Formats { @@ -129,7 +128,11 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new Serials(_internal.DeepClone() as Data.Models.Metadata.Serials ?? []); + public override object Clone() => new Serials(GetInternalClone()); + + /// + public override Data.Models.Metadata.Serials GetInternalClone() + => (_internal as Data.Models.Metadata.Serials)?.Clone() as Data.Models.Metadata.Serials ?? []; #endregion } diff --git a/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs b/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs index 93e20006..7faff216 100644 --- a/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs +++ b/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs @@ -1,6 +1,5 @@ using System.Xml.Serialization; using Newtonsoft.Json; -using SabreTools.Data.Extensions; namespace SabreTools.Metadata.DatItems.Formats { @@ -57,7 +56,11 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new SharedFeat(_internal.DeepClone() as Data.Models.Metadata.SharedFeat ?? []); + public override object Clone() => new SharedFeat(GetInternalClone()); + + /// + public override Data.Models.Metadata.SharedFeat GetInternalClone() + => (_internal as Data.Models.Metadata.SharedFeat)?.Clone() as Data.Models.Metadata.SharedFeat ?? []; #endregion } diff --git a/SabreTools.Metadata.DatItems/Formats/Slot.cs b/SabreTools.Metadata.DatItems/Formats/Slot.cs index 80f1aa04..d331501e 100644 --- a/SabreTools.Metadata.DatItems/Formats/Slot.cs +++ b/SabreTools.Metadata.DatItems/Formats/Slot.cs @@ -1,7 +1,6 @@ using System; using System.Xml.Serialization; using Newtonsoft.Json; -using SabreTools.Data.Extensions; namespace SabreTools.Metadata.DatItems.Formats { @@ -62,12 +61,12 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new Slot(_internal.DeepClone() as Data.Models.Metadata.Slot ?? []); + public override object Clone() => new Slot(GetInternalClone()); /// public override Data.Models.Metadata.Slot GetInternalClone() { - var slotItem = base.GetInternalClone(); + var slotItem = (_internal as Data.Models.Metadata.Slot)?.Clone() as Data.Models.Metadata.Slot ?? []; if (SlotOption is not null) slotItem.SlotOption = Array.ConvertAll(SlotOption, slotOption => slotOption.GetInternalClone()); diff --git a/SabreTools.Metadata.DatItems/Formats/SlotOption.cs b/SabreTools.Metadata.DatItems/Formats/SlotOption.cs index 49a0b7c1..6a2a649e 100644 --- a/SabreTools.Metadata.DatItems/Formats/SlotOption.cs +++ b/SabreTools.Metadata.DatItems/Formats/SlotOption.cs @@ -1,6 +1,5 @@ using System.Xml.Serialization; using Newtonsoft.Json; -using SabreTools.Data.Extensions; namespace SabreTools.Metadata.DatItems.Formats { @@ -63,7 +62,11 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new SlotOption(_internal.DeepClone() as Data.Models.Metadata.SlotOption ?? []); + public override object Clone() => new SlotOption(GetInternalClone()); + + /// + public override Data.Models.Metadata.SlotOption GetInternalClone() + => (_internal as Data.Models.Metadata.SlotOption)?.Clone() as Data.Models.Metadata.SlotOption ?? []; #endregion } diff --git a/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs b/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs index 7cb0a213..739dd847 100644 --- a/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs +++ b/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs @@ -1,6 +1,5 @@ using System.Xml.Serialization; using Newtonsoft.Json; -using SabreTools.Data.Extensions; namespace SabreTools.Metadata.DatItems.Formats { @@ -69,7 +68,11 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new SoftwareList(_internal.DeepClone() as Data.Models.Metadata.SoftwareList ?? []); + public override object Clone() => new SoftwareList(GetInternalClone()); + + /// + public override Data.Models.Metadata.SoftwareList GetInternalClone() + => (_internal as Data.Models.Metadata.SoftwareList)?.Clone() as Data.Models.Metadata.SoftwareList ?? []; #endregion } diff --git a/SabreTools.Metadata.DatItems/Formats/Sound.cs b/SabreTools.Metadata.DatItems/Formats/Sound.cs index c3bdf427..f12e4d95 100644 --- a/SabreTools.Metadata.DatItems/Formats/Sound.cs +++ b/SabreTools.Metadata.DatItems/Formats/Sound.cs @@ -1,6 +1,5 @@ using System.Xml.Serialization; using Newtonsoft.Json; -using SabreTools.Data.Extensions; namespace SabreTools.Metadata.DatItems.Formats { @@ -51,7 +50,11 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new Sound(_internal.DeepClone() as Data.Models.Metadata.Sound ?? []); + public override object Clone() => new Sound(GetInternalClone()); + + /// + public override Data.Models.Metadata.Sound GetInternalClone() + => (_internal as Data.Models.Metadata.Sound)?.Clone() as Data.Models.Metadata.Sound ?? []; #endregion } diff --git a/SabreTools.Metadata.DatItems/Formats/SourceDetails.cs b/SabreTools.Metadata.DatItems/Formats/SourceDetails.cs index 624c5b79..47300b8f 100644 --- a/SabreTools.Metadata.DatItems/Formats/SourceDetails.cs +++ b/SabreTools.Metadata.DatItems/Formats/SourceDetails.cs @@ -1,6 +1,5 @@ using System.Xml.Serialization; using Newtonsoft.Json; -using SabreTools.Data.Extensions; namespace SabreTools.Metadata.DatItems.Formats { @@ -189,7 +188,11 @@ namespace SabreTools.Metadata.DatItems.Formats #region Cloning Methods /// - public override object Clone() => new SourceDetails(_internal.DeepClone() as Data.Models.Metadata.SourceDetails ?? []); + public override object Clone() => new SourceDetails(GetInternalClone()); + + /// + public override Data.Models.Metadata.SourceDetails GetInternalClone() + => (_internal as Data.Models.Metadata.SourceDetails)?.Clone() as Data.Models.Metadata.SourceDetails ?? []; #endregion } From 0458489a4fb74ff72b1ea5f31aeed8976dbcd3f2 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sat, 4 Apr 2026 13:13:16 -0400 Subject: [PATCH 076/142] Remove two places where DeepClone wasn't needed --- SabreTools.Metadata.DatItems.Test/DatItemTests.cs | 2 +- SabreTools.Metadata.DatItems/Machine.cs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/SabreTools.Metadata.DatItems.Test/DatItemTests.cs b/SabreTools.Metadata.DatItems.Test/DatItemTests.cs index 32028d39..fc9a82f0 100644 --- a/SabreTools.Metadata.DatItems.Test/DatItemTests.cs +++ b/SabreTools.Metadata.DatItems.Test/DatItemTests.cs @@ -32,7 +32,7 @@ namespace SabreTools.Metadata.DatItems.Test /// public override object Clone() => new TestDatItem() { - _internal = _internal.DeepClone() as TestDatItemModel ?? [] + _internal = GetInternalClone(), }; /// diff --git a/SabreTools.Metadata.DatItems/Machine.cs b/SabreTools.Metadata.DatItems/Machine.cs index f772c721..eb5f7301 100644 --- a/SabreTools.Metadata.DatItems/Machine.cs +++ b/SabreTools.Metadata.DatItems/Machine.cs @@ -364,14 +364,14 @@ namespace SabreTools.Metadata.DatItems { return new Machine() { - _internal = _internal.DeepClone() as Data.Models.Metadata.Machine ?? [], + _internal = GetInternalClone(), }; } /// /// Get a clone of the current internal model /// - public Data.Models.Metadata.Machine GetInternalClone() => (_internal.DeepClone() as Data.Models.Metadata.Machine)!; + public Data.Models.Metadata.Machine GetInternalClone() => (_internal.DeepClone() as Data.Models.Metadata.Machine) ?? []; #endregion From 4acd2d9fd6eeffa3aec22ed0c68dd1d62570d0b5 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sat, 4 Apr 2026 13:31:12 -0400 Subject: [PATCH 077/142] Reduce generic DictionaryBase use --- .../MetadataExtensionsTests.cs | 112 ++--- .../MetadataExtensions.cs | 383 +++++++----------- SabreTools.Metadata.DatItems/Formats/Disk.cs | 8 +- SabreTools.Metadata.DatItems/Formats/Media.cs | 8 +- SabreTools.Metadata.DatItems/Formats/Rom.cs | 6 +- 5 files changed, 207 insertions(+), 310 deletions(-) diff --git a/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs b/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs index 8f25855e..5e13d7b2 100644 --- a/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs +++ b/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs @@ -8,18 +8,10 @@ namespace SabreTools.Data.Extensions.Test { #region ConvertToRom - [Fact] - public void ConvertToRom_Null_Null() - { - DictionaryBase? self = null; - Rom? actual = self.ConvertToRom(); - Assert.Null(actual); - } - [Fact] public void ConvertToRom_EmptyDisk_EmptyRom() { - DictionaryBase? self = new Disk(); + var self = new Disk(); Rom? actual = self.ConvertToRom(); Assert.NotNull(actual); @@ -37,7 +29,7 @@ namespace SabreTools.Data.Extensions.Test [Fact] public void ConvertToRom_FilledDisk_FilledRom() { - DictionaryBase? self = new Disk + var self = new Disk { Name = "name", Merge = "merge", @@ -65,7 +57,7 @@ namespace SabreTools.Data.Extensions.Test [Fact] public void ConvertToRom_EmptyMedia_EmptyRom() { - DictionaryBase? self = new Media(); + var self = new Media(); Rom? actual = self.ConvertToRom(); Assert.NotNull(actual); @@ -81,7 +73,7 @@ namespace SabreTools.Data.Extensions.Test [Fact] public void ConvertToRom_FilledMedia_FilledRom() { - DictionaryBase? self = new Media + var self = new Media { Name = "name", MD5 = "md5", @@ -102,14 +94,6 @@ namespace SabreTools.Data.Extensions.Test Assert.Equal("spamsum", actual[Rom.SpamSumKey]); } - [Fact] - public void ConvertToRom_Other_Null() - { - DictionaryBase? self = new Sample(); - Rom? actual = self.ConvertToRom(); - Assert.Null(actual); - } - #endregion #region ConditionalHashEquals @@ -959,7 +943,7 @@ namespace SabreTools.Data.Extensions.Test [Fact] public void HasZeroHash_Disk_NoHash_True() { - DictionaryBase self = new Disk(); + var self = new Disk(); bool actual = self.HasZeroHash(); Assert.True(actual); } @@ -967,7 +951,7 @@ namespace SabreTools.Data.Extensions.Test [Fact] public void HasZeroHash_Disk_NonZeroHash_False() { - DictionaryBase self = new Disk + var self = new Disk { MD5 = "XXXXXX", SHA1 = "XXXXXX", @@ -980,7 +964,7 @@ namespace SabreTools.Data.Extensions.Test [Fact] public void HasZeroHash_Disk_ZeroMD5_True() { - DictionaryBase self = new Disk + var self = new Disk { MD5 = HashType.MD5.ZeroString, SHA1 = string.Empty, @@ -993,7 +977,7 @@ namespace SabreTools.Data.Extensions.Test [Fact] public void HasZeroHash_Disk_ZeroSHA1_True() { - DictionaryBase self = new Disk + var self = new Disk { MD5 = string.Empty, SHA1 = HashType.SHA1.ZeroString, @@ -1006,7 +990,7 @@ namespace SabreTools.Data.Extensions.Test [Fact] public void HasZeroHash_Disk_ZeroAll_True() { - DictionaryBase self = new Disk + var self = new Disk { MD5 = HashType.MD5.ZeroString, SHA1 = HashType.SHA1.ZeroString, @@ -1019,7 +1003,7 @@ namespace SabreTools.Data.Extensions.Test [Fact] public void HasZeroHash_Media_NoHash_True() { - DictionaryBase self = new Media(); + var self = new Media(); bool actual = self.HasZeroHash(); Assert.True(actual); } @@ -1027,7 +1011,7 @@ namespace SabreTools.Data.Extensions.Test [Fact] public void HasZeroHash_Media_NonZeroHash_False() { - DictionaryBase self = new Media + var self = new Media { MD5 = "XXXXXX", SHA1 = "XXXXXX", @@ -1042,7 +1026,7 @@ namespace SabreTools.Data.Extensions.Test [Fact] public void HasZeroHash_Media_ZeroMD5_True() { - DictionaryBase self = new Media + var self = new Media { MD5 = HashType.MD5.ZeroString, SHA1 = string.Empty, @@ -1057,7 +1041,7 @@ namespace SabreTools.Data.Extensions.Test [Fact] public void HasZeroHash_Media_ZeroSHA1_True() { - DictionaryBase self = new Media + var self = new Media { MD5 = string.Empty, SHA1 = HashType.SHA1.ZeroString, @@ -1072,7 +1056,7 @@ namespace SabreTools.Data.Extensions.Test [Fact] public void HasZeroHash_Media_ZeroSHA256_True() { - DictionaryBase self = new Media + var self = new Media { MD5 = string.Empty, SHA1 = string.Empty, @@ -1087,7 +1071,7 @@ namespace SabreTools.Data.Extensions.Test [Fact] public void HasZeroHash_Media_ZeroSpamSum_True() { - DictionaryBase self = new Media + var self = new Media { MD5 = string.Empty, SHA1 = string.Empty, @@ -1102,7 +1086,7 @@ namespace SabreTools.Data.Extensions.Test [Fact] public void HasZeroHash_Media_ZeroAll_True() { - DictionaryBase self = new Media + var self = new Media { MD5 = HashType.MD5.ZeroString, SHA1 = HashType.SHA1.ZeroString, @@ -1117,7 +1101,7 @@ namespace SabreTools.Data.Extensions.Test [Fact] public void HasZeroHash_Rom_NoHash_True() { - DictionaryBase self = new Rom(); + var self = new Rom(); bool actual = self.HasZeroHash(); Assert.True(actual); } @@ -1125,7 +1109,7 @@ namespace SabreTools.Data.Extensions.Test [Fact] public void HasZeroHash_Rom_NonZeroHash_False() { - DictionaryBase self = new Rom + var self = new Rom { [Rom.CRC16Key] = "XXXXXX", [Rom.CRCKey] = "XXXXXX", @@ -1149,7 +1133,7 @@ namespace SabreTools.Data.Extensions.Test [Fact] public void HasZeroHash_Rom_ZeroCRC16_True() { - DictionaryBase self = new Rom + var self = new Rom { [Rom.CRC16Key] = HashType.CRC16.ZeroString, [Rom.CRCKey] = string.Empty, @@ -1173,7 +1157,7 @@ namespace SabreTools.Data.Extensions.Test [Fact] public void HasZeroHash_Rom_ZeroCRC_True() { - DictionaryBase self = new Rom + var self = new Rom { [Rom.CRC16Key] = string.Empty, [Rom.CRCKey] = HashType.CRC32.ZeroString, @@ -1197,7 +1181,7 @@ namespace SabreTools.Data.Extensions.Test [Fact] public void HasZeroHash_Rom_ZeroCRC64_True() { - DictionaryBase self = new Rom + var self = new Rom { [Rom.CRC16Key] = string.Empty, [Rom.CRCKey] = string.Empty, @@ -1221,7 +1205,7 @@ namespace SabreTools.Data.Extensions.Test [Fact] public void HasZeroHash_Rom_ZeroMD2_True() { - DictionaryBase self = new Rom + var self = new Rom { [Rom.CRC16Key] = string.Empty, [Rom.CRCKey] = string.Empty, @@ -1245,7 +1229,7 @@ namespace SabreTools.Data.Extensions.Test [Fact] public void HasZeroHash_Rom_ZeroMD4_True() { - DictionaryBase self = new Rom + var self = new Rom { [Rom.CRC16Key] = string.Empty, [Rom.CRCKey] = string.Empty, @@ -1269,7 +1253,7 @@ namespace SabreTools.Data.Extensions.Test [Fact] public void HasZeroHash_Rom_ZeroMD5_True() { - DictionaryBase self = new Rom + var self = new Rom { [Rom.CRC16Key] = string.Empty, [Rom.CRCKey] = string.Empty, @@ -1293,7 +1277,7 @@ namespace SabreTools.Data.Extensions.Test [Fact] public void HasZeroHash_Rom_ZeroRIPEMD128_True() { - DictionaryBase self = new Rom + var self = new Rom { [Rom.CRC16Key] = string.Empty, [Rom.CRCKey] = string.Empty, @@ -1317,7 +1301,7 @@ namespace SabreTools.Data.Extensions.Test [Fact] public void HasZeroHash_Rom_ZeroRIPEMD160_True() { - DictionaryBase self = new Rom + var self = new Rom { [Rom.CRC16Key] = string.Empty, [Rom.CRCKey] = string.Empty, @@ -1341,7 +1325,7 @@ namespace SabreTools.Data.Extensions.Test [Fact] public void HasZeroHash_Rom_ZeroSHA1_True() { - DictionaryBase self = new Rom + var self = new Rom { [Rom.CRC16Key] = string.Empty, [Rom.CRCKey] = string.Empty, @@ -1365,7 +1349,7 @@ namespace SabreTools.Data.Extensions.Test [Fact] public void HasZeroHash_Rom_ZeroSHA256_True() { - DictionaryBase self = new Rom + var self = new Rom { [Rom.CRC16Key] = string.Empty, [Rom.CRCKey] = string.Empty, @@ -1389,7 +1373,7 @@ namespace SabreTools.Data.Extensions.Test [Fact] public void HasZeroHash_Rom_ZeroSHA384_True() { - DictionaryBase self = new Rom + var self = new Rom { [Rom.CRC16Key] = string.Empty, [Rom.CRCKey] = string.Empty, @@ -1413,7 +1397,7 @@ namespace SabreTools.Data.Extensions.Test [Fact] public void HasZeroHash_Rom_ZeroSHA512_True() { - DictionaryBase self = new Rom + var self = new Rom { [Rom.CRC16Key] = string.Empty, [Rom.CRCKey] = string.Empty, @@ -1437,7 +1421,7 @@ namespace SabreTools.Data.Extensions.Test [Fact] public void HasZeroHash_Rom_ZeroSpamSum_True() { - DictionaryBase self = new Rom + var self = new Rom { [Rom.CRC16Key] = string.Empty, [Rom.CRCKey] = string.Empty, @@ -1461,7 +1445,7 @@ namespace SabreTools.Data.Extensions.Test [Fact] public void HasZeroHash_Rom_ZeroAll_True() { - DictionaryBase self = new Rom + var self = new Rom { [Rom.CRC16Key] = HashType.CRC16.ZeroString, [Rom.CRCKey] = HashType.CRC32.ZeroString, @@ -1482,14 +1466,6 @@ namespace SabreTools.Data.Extensions.Test Assert.True(actual); } - [Fact] - public void HasZeroHash_Other_False() - { - DictionaryBase self = new Sample(); - bool actual = self.HasZeroHash(); - Assert.False(actual); - } - #endregion #region FillMissingHashes @@ -1497,8 +1473,8 @@ namespace SabreTools.Data.Extensions.Test [Fact] public void FillMissingHashes_Disk_BothEmpty() { - DictionaryBase self = new Disk(); - DictionaryBase other = new Disk(); + var self = new Disk(); + var other = new Disk(); self.FillMissingHashes(other); Assert.Empty(self); @@ -1507,8 +1483,8 @@ namespace SabreTools.Data.Extensions.Test [Fact] public void FillMissingHashes_Disk_AllMissing() { - DictionaryBase self = new Disk(); - DictionaryBase other = new Disk + var self = new Disk(); + var other = new Disk { MD5 = "XXXXXX", SHA1 = "XXXXXX", @@ -1520,8 +1496,8 @@ namespace SabreTools.Data.Extensions.Test [Fact] public void FillMissingHashes_Media_BothEmpty() { - DictionaryBase self = new Media(); - DictionaryBase other = new Media(); + var self = new Media(); + var other = new Media(); self.FillMissingHashes(other); Assert.Empty(self); } @@ -1529,8 +1505,8 @@ namespace SabreTools.Data.Extensions.Test [Fact] public void FillMissingHashes_Media_AllMissing() { - DictionaryBase self = new Media(); - DictionaryBase other = new Media + var self = new Media(); + var other = new Media { MD5 = "XXXXXX", SHA1 = "XXXXXX", @@ -1544,8 +1520,8 @@ namespace SabreTools.Data.Extensions.Test [Fact] public void FillMissingHashes_Rom_BothEmpty() { - DictionaryBase self = new Rom(); - DictionaryBase other = new Rom(); + var self = new Rom(); + var other = new Rom(); self.FillMissingHashes(other); Assert.Empty(self); } @@ -1553,8 +1529,8 @@ namespace SabreTools.Data.Extensions.Test [Fact] public void FillMissingHashes_Rom_AllMissing() { - DictionaryBase self = new Rom(); - DictionaryBase other = new Rom + var self = new Rom(); + var other = new Rom { [Rom.CRC16Key] = "XXXXXX", [Rom.CRCKey] = "XXXXXX", diff --git a/SabreTools.Data.Extensions/MetadataExtensions.cs b/SabreTools.Data.Extensions/MetadataExtensions.cs index be23605c..36dcc5d9 100644 --- a/SabreTools.Data.Extensions/MetadataExtensions.cs +++ b/SabreTools.Data.Extensions/MetadataExtensions.cs @@ -357,27 +357,10 @@ namespace SabreTools.Data.Extensions #region Conversion - /// - /// Convert a DictionaryBase to a Rom - /// - public static Rom? ConvertToRom(this DictionaryBase? self) - { - // If the DatItem is missing, we can't do anything - if (self is null) - return null; - - return self switch - { - Disk diskSelf => ConvertToRom(diskSelf), - Media mediaSelf => ConvertToRom(mediaSelf), - _ => null, - }; - } - /// /// Convert a Disk to a Rom /// - private static Rom? ConvertToRom(this Disk? disk) + public static Rom? ConvertToRom(this Disk? disk) { // If the Disk is missing, we can't do anything if (disk is null) @@ -403,7 +386,7 @@ namespace SabreTools.Data.Extensions /// /// Convert a Media to a Rom /// - private static Rom? ConvertToRom(this Media? media) + public static Rom? ConvertToRom(this Media? media) { // If the Media is missing, we can't do anything if (media is null) @@ -592,29 +575,160 @@ namespace SabreTools.Data.Extensions /// /// Returns if any hashes exist /// - public static bool HasHashes(this DictionaryBase self) + public static bool HasHashes(this Disk disk) { - return self switch - { - Disk diskSelf => diskSelf.HasHashes(), - Media mediaSelf => mediaSelf.HasHashes(), - Rom romSelf => romSelf.HasHashes(), - _ => false, - }; + bool md5Null = string.IsNullOrEmpty(disk.MD5); + bool sha1Null = string.IsNullOrEmpty(disk.SHA1); + + return !md5Null + || !sha1Null; + } + + /// + /// Returns if any hashes exist + /// + public static bool HasHashes(this Media media) + { + bool md5Null = string.IsNullOrEmpty(media.MD5); + bool sha1Null = string.IsNullOrEmpty(media.SHA1); + bool sha256Null = string.IsNullOrEmpty(media.SHA256); + bool spamsumNull = string.IsNullOrEmpty(media.SpamSum); + + return !md5Null + || !sha1Null + || !sha256Null + || !spamsumNull; + } + + /// + /// Returns if any hashes exist + /// + public static bool HasHashes(this Rom rom) + { + bool crc16Null = string.IsNullOrEmpty(rom.ReadString(Rom.CRC16Key)); + bool crcNull = string.IsNullOrEmpty(rom.ReadString(Rom.CRCKey)); + bool crc64Null = string.IsNullOrEmpty(rom.ReadString(Rom.CRC64Key)); + bool md2Null = string.IsNullOrEmpty(rom.ReadString(Rom.MD2Key)); + bool md4Null = string.IsNullOrEmpty(rom.ReadString(Rom.MD4Key)); + bool md5Null = string.IsNullOrEmpty(rom.ReadString(Rom.MD5Key)); + bool ripeMD128Null = string.IsNullOrEmpty(rom.ReadString(Rom.RIPEMD128Key)); + bool ripeMD160Null = string.IsNullOrEmpty(rom.ReadString(Rom.RIPEMD160Key)); + bool sha1Null = string.IsNullOrEmpty(rom.ReadString(Rom.SHA1Key)); + bool sha256Null = string.IsNullOrEmpty(rom.ReadString(Rom.SHA256Key)); + bool sha384Null = string.IsNullOrEmpty(rom.ReadString(Rom.SHA384Key)); + bool sha512Null = string.IsNullOrEmpty(rom.ReadString(Rom.SHA512Key)); + bool spamsumNull = string.IsNullOrEmpty(rom.ReadString(Rom.SpamSumKey)); + + return !crc16Null + || !crcNull + || !crc64Null + || !md2Null + || !md4Null + || !md5Null + || !ripeMD128Null + || !ripeMD160Null + || !sha1Null + || !sha256Null + || !sha384Null + || !sha512Null + || !spamsumNull; } /// /// Returns if all of the hashes are set to their 0-byte values or null /// - public static bool HasZeroHash(this DictionaryBase self) + public static bool HasZeroHash(this Disk disk) { - return self switch - { - Disk diskSelf => diskSelf.HasZeroHash(), - Media mediaSelf => mediaSelf.HasZeroHash(), - Rom romSelf => romSelf.HasZeroHash(), - _ => false, - }; + string? md5 = disk.MD5; + bool md5Null = string.IsNullOrEmpty(md5) || string.Equals(md5, HashType.MD5.ZeroString, StringComparison.OrdinalIgnoreCase); + + string? sha1 = disk.SHA1; + bool sha1Null = string.IsNullOrEmpty(sha1) || string.Equals(sha1, HashType.SHA1.ZeroString, StringComparison.OrdinalIgnoreCase); + + return md5Null + && sha1Null; + } + + /// + /// Returns if all of the hashes are set to their 0-byte values or null + /// + public static bool HasZeroHash(this Media media) + { + string? md5 = media.MD5; + bool md5Null = string.IsNullOrEmpty(md5) || string.Equals(md5, HashType.MD5.ZeroString, StringComparison.OrdinalIgnoreCase); + + string? sha1 = media.SHA1; + bool sha1Null = string.IsNullOrEmpty(sha1) || string.Equals(sha1, HashType.SHA1.ZeroString, StringComparison.OrdinalIgnoreCase); + + string? sha256 = media.SHA256; + bool sha256Null = string.IsNullOrEmpty(sha256) || string.Equals(sha256, HashType.SHA256.ZeroString, StringComparison.OrdinalIgnoreCase); + + string? spamsum = media.SpamSum; + bool spamsumNull = string.IsNullOrEmpty(spamsum) || string.Equals(spamsum, HashType.SpamSum.ZeroString, StringComparison.OrdinalIgnoreCase); + + return md5Null + && sha1Null + && sha256Null + && spamsumNull; + } + + /// + /// Returns if all of the hashes are set to their 0-byte values or null + /// + public static bool HasZeroHash(this Rom rom) + { + string? crc16 = rom.ReadString(Rom.CRC16Key); + bool crc16Null = string.IsNullOrEmpty(crc16) || string.Equals(crc16, HashType.CRC16.ZeroString, StringComparison.OrdinalIgnoreCase); + + string? crc = rom.ReadString(Rom.CRCKey); + bool crcNull = string.IsNullOrEmpty(crc) || string.Equals(crc, HashType.CRC32.ZeroString, StringComparison.OrdinalIgnoreCase); + + string? crc64 = rom.ReadString(Rom.CRC64Key); + bool crc64Null = string.IsNullOrEmpty(crc64) || string.Equals(crc64, HashType.CRC64.ZeroString, StringComparison.OrdinalIgnoreCase); + + string? md2 = rom.ReadString(Rom.MD2Key); + bool md2Null = string.IsNullOrEmpty(md2) || string.Equals(md2, HashType.MD2.ZeroString, StringComparison.OrdinalIgnoreCase); + + string? md4 = rom.ReadString(Rom.MD4Key); + bool md4Null = string.IsNullOrEmpty(md4) || string.Equals(md4, HashType.MD4.ZeroString, StringComparison.OrdinalIgnoreCase); + + string? md5 = rom.ReadString(Rom.MD5Key); + bool md5Null = string.IsNullOrEmpty(md5) || string.Equals(md5, HashType.MD5.ZeroString, StringComparison.OrdinalIgnoreCase); + + string? ripeMD128 = rom.ReadString(Rom.RIPEMD128Key); + bool ripeMD128Null = string.IsNullOrEmpty(value: ripeMD128) || string.Equals(ripeMD128, HashType.RIPEMD128.ZeroString, StringComparison.OrdinalIgnoreCase); + + string? ripeMD160 = rom.ReadString(Rom.RIPEMD160Key); + bool ripeMD160Null = string.IsNullOrEmpty(ripeMD160) || string.Equals(ripeMD160, HashType.RIPEMD160.ZeroString, StringComparison.OrdinalIgnoreCase); + + string? sha1 = rom.ReadString(Rom.SHA1Key); + bool sha1Null = string.IsNullOrEmpty(sha1) || string.Equals(sha1, HashType.SHA1.ZeroString, StringComparison.OrdinalIgnoreCase); + + string? sha256 = rom.ReadString(Rom.SHA256Key); + bool sha256Null = string.IsNullOrEmpty(sha256) || string.Equals(sha256, HashType.SHA256.ZeroString, StringComparison.OrdinalIgnoreCase); + + string? sha384 = rom.ReadString(Rom.SHA384Key); + bool sha384Null = string.IsNullOrEmpty(sha384) || string.Equals(sha384, HashType.SHA384.ZeroString, StringComparison.OrdinalIgnoreCase); + + string? sha512 = rom.ReadString(Rom.SHA512Key); + bool sha512Null = string.IsNullOrEmpty(sha512) || string.Equals(sha512, HashType.SHA512.ZeroString, StringComparison.OrdinalIgnoreCase); + + string? spamsum = rom.ReadString(Rom.SpamSumKey); + bool spamsumNull = string.IsNullOrEmpty(spamsum) || string.Equals(spamsum, HashType.SpamSum.ZeroString, StringComparison.OrdinalIgnoreCase); + + return crc16Null + && crcNull + && crc64Null + && md2Null + && md4Null + && md5Null + && ripeMD128Null + && ripeMD160Null + && sha1Null + && sha256Null + && sha384Null + && sha512Null + && spamsumNull; } /// @@ -714,207 +828,14 @@ namespace SabreTools.Data.Extensions || !spamsumNull; } - /// - /// Returns if any hashes exist - /// - private static bool HasHashes(this Disk disk) - { - bool md5Null = string.IsNullOrEmpty(disk.MD5); - bool sha1Null = string.IsNullOrEmpty(disk.SHA1); - - return !md5Null - || !sha1Null; - } - - /// - /// Returns if any hashes exist - /// - private static bool HasHashes(this Media media) - { - bool md5Null = string.IsNullOrEmpty(media.MD5); - bool sha1Null = string.IsNullOrEmpty(media.SHA1); - bool sha256Null = string.IsNullOrEmpty(media.SHA256); - bool spamsumNull = string.IsNullOrEmpty(media.SpamSum); - - return !md5Null - || !sha1Null - || !sha256Null - || !spamsumNull; - } - - /// - /// Returns if any hashes exist - /// - private static bool HasHashes(this Rom rom) - { - bool crc16Null = string.IsNullOrEmpty(rom.ReadString(Rom.CRC16Key)); - bool crcNull = string.IsNullOrEmpty(rom.ReadString(Rom.CRCKey)); - bool crc64Null = string.IsNullOrEmpty(rom.ReadString(Rom.CRC64Key)); - bool md2Null = string.IsNullOrEmpty(rom.ReadString(Rom.MD2Key)); - bool md4Null = string.IsNullOrEmpty(rom.ReadString(Rom.MD4Key)); - bool md5Null = string.IsNullOrEmpty(rom.ReadString(Rom.MD5Key)); - bool ripeMD128Null = string.IsNullOrEmpty(rom.ReadString(Rom.RIPEMD128Key)); - bool ripeMD160Null = string.IsNullOrEmpty(rom.ReadString(Rom.RIPEMD160Key)); - bool sha1Null = string.IsNullOrEmpty(rom.ReadString(Rom.SHA1Key)); - bool sha256Null = string.IsNullOrEmpty(rom.ReadString(Rom.SHA256Key)); - bool sha384Null = string.IsNullOrEmpty(rom.ReadString(Rom.SHA384Key)); - bool sha512Null = string.IsNullOrEmpty(rom.ReadString(Rom.SHA512Key)); - bool spamsumNull = string.IsNullOrEmpty(rom.ReadString(Rom.SpamSumKey)); - - return !crc16Null - || !crcNull - || !crc64Null - || !md2Null - || !md4Null - || !md5Null - || !ripeMD128Null - || !ripeMD160Null - || !sha1Null - || !sha256Null - || !sha384Null - || !sha512Null - || !spamsumNull; - } - - /// - /// Returns if all of the hashes are set to their 0-byte values or null - /// - private static bool HasZeroHash(this Disk disk) - { - string? md5 = disk.MD5; - bool md5Null = string.IsNullOrEmpty(md5) || string.Equals(md5, HashType.MD5.ZeroString, StringComparison.OrdinalIgnoreCase); - - string? sha1 = disk.SHA1; - bool sha1Null = string.IsNullOrEmpty(sha1) || string.Equals(sha1, HashType.SHA1.ZeroString, StringComparison.OrdinalIgnoreCase); - - return md5Null - && sha1Null; - } - - /// - /// Returns if all of the hashes are set to their 0-byte values or null - /// - private static bool HasZeroHash(this Media media) - { - string? md5 = media.MD5; - bool md5Null = string.IsNullOrEmpty(md5) || string.Equals(md5, HashType.MD5.ZeroString, StringComparison.OrdinalIgnoreCase); - - string? sha1 = media.SHA1; - bool sha1Null = string.IsNullOrEmpty(sha1) || string.Equals(sha1, HashType.SHA1.ZeroString, StringComparison.OrdinalIgnoreCase); - - string? sha256 = media.SHA256; - bool sha256Null = string.IsNullOrEmpty(sha256) || string.Equals(sha256, HashType.SHA256.ZeroString, StringComparison.OrdinalIgnoreCase); - - string? spamsum = media.SpamSum; - bool spamsumNull = string.IsNullOrEmpty(spamsum) || string.Equals(spamsum, HashType.SpamSum.ZeroString, StringComparison.OrdinalIgnoreCase); - - return md5Null - && sha1Null - && sha256Null - && spamsumNull; - } - - /// - /// Returns if all of the hashes are set to their 0-byte values or null - /// - private static bool HasZeroHash(this Rom rom) - { - string? crc16 = rom.ReadString(Rom.CRC16Key); - bool crc16Null = string.IsNullOrEmpty(crc16) || string.Equals(crc16, HashType.CRC16.ZeroString, StringComparison.OrdinalIgnoreCase); - - string? crc = rom.ReadString(Rom.CRCKey); - bool crcNull = string.IsNullOrEmpty(crc) || string.Equals(crc, HashType.CRC32.ZeroString, StringComparison.OrdinalIgnoreCase); - - string? crc64 = rom.ReadString(Rom.CRC64Key); - bool crc64Null = string.IsNullOrEmpty(crc64) || string.Equals(crc64, HashType.CRC64.ZeroString, StringComparison.OrdinalIgnoreCase); - - string? md2 = rom.ReadString(Rom.MD2Key); - bool md2Null = string.IsNullOrEmpty(md2) || string.Equals(md2, HashType.MD2.ZeroString, StringComparison.OrdinalIgnoreCase); - - string? md4 = rom.ReadString(Rom.MD4Key); - bool md4Null = string.IsNullOrEmpty(md4) || string.Equals(md4, HashType.MD4.ZeroString, StringComparison.OrdinalIgnoreCase); - - string? md5 = rom.ReadString(Rom.MD5Key); - bool md5Null = string.IsNullOrEmpty(md5) || string.Equals(md5, HashType.MD5.ZeroString, StringComparison.OrdinalIgnoreCase); - - string? ripeMD128 = rom.ReadString(Rom.RIPEMD128Key); - bool ripeMD128Null = string.IsNullOrEmpty(value: ripeMD128) || string.Equals(ripeMD128, HashType.RIPEMD128.ZeroString, StringComparison.OrdinalIgnoreCase); - - string? ripeMD160 = rom.ReadString(Rom.RIPEMD160Key); - bool ripeMD160Null = string.IsNullOrEmpty(ripeMD160) || string.Equals(ripeMD160, HashType.RIPEMD160.ZeroString, StringComparison.OrdinalIgnoreCase); - - string? sha1 = rom.ReadString(Rom.SHA1Key); - bool sha1Null = string.IsNullOrEmpty(sha1) || string.Equals(sha1, HashType.SHA1.ZeroString, StringComparison.OrdinalIgnoreCase); - - string? sha256 = rom.ReadString(Rom.SHA256Key); - bool sha256Null = string.IsNullOrEmpty(sha256) || string.Equals(sha256, HashType.SHA256.ZeroString, StringComparison.OrdinalIgnoreCase); - - string? sha384 = rom.ReadString(Rom.SHA384Key); - bool sha384Null = string.IsNullOrEmpty(sha384) || string.Equals(sha384, HashType.SHA384.ZeroString, StringComparison.OrdinalIgnoreCase); - - string? sha512 = rom.ReadString(Rom.SHA512Key); - bool sha512Null = string.IsNullOrEmpty(sha512) || string.Equals(sha512, HashType.SHA512.ZeroString, StringComparison.OrdinalIgnoreCase); - - string? spamsum = rom.ReadString(Rom.SpamSumKey); - bool spamsumNull = string.IsNullOrEmpty(spamsum) || string.Equals(spamsum, HashType.SpamSum.ZeroString, StringComparison.OrdinalIgnoreCase); - - return crc16Null - && crcNull - && crc64Null - && md2Null - && md4Null - && md5Null - && ripeMD128Null - && ripeMD160Null - && sha1Null - && sha256Null - && sha384Null - && sha512Null - && spamsumNull; - } - #endregion #region Information Filling - /// - /// Fill any missing size and hash information from another DictionaryBase - /// - public static void FillMissingHashes(this DictionaryBase? self, DictionaryBase? other) - { - if (self is null || other is null) - return; - -#if NETCOREAPP || NETSTANDARD2_0_OR_GREATER - switch (self, other) - { - case (Disk diskSelf, Disk diskOther): - diskSelf.FillMissingHashes(diskOther); - break; - case (Media mediaSelf, Media mediaOther): - mediaSelf.FillMissingHashes(mediaOther); - break; - case (Rom romSelf, Rom romOther): - romSelf.FillMissingHashes(romOther); - break; - - default: - break; - } -#else - if (self is Disk diskSelf && other is Disk diskOther) - diskSelf.FillMissingHashes(diskOther); - else if (self is Media mediaSelf && other is Media mediaOther) - mediaSelf.FillMissingHashes(mediaOther); - else if (self is Rom romSelf && other is Rom romOther) - romSelf.FillMissingHashes(romOther); -#endif - } - /// /// Fill any missing size and hash information from another Disk /// - private static void FillMissingHashes(this Disk? self, Disk? other) + public static void FillMissingHashes(this Disk? self, Disk? other) { if (self is null || other is null) return; @@ -933,7 +854,7 @@ namespace SabreTools.Data.Extensions /// /// Fill any missing size and hash information from another Media /// - private static void FillMissingHashes(this Media? self, Media? other) + public static void FillMissingHashes(this Media? self, Media? other) { if (self is null || other is null) return; @@ -962,7 +883,7 @@ namespace SabreTools.Data.Extensions /// /// Fill any missing size and hash information from another Rom /// - private static void FillMissingHashes(this Rom? self, Rom? other) + public static void FillMissingHashes(this Rom? self, Rom? other) { if (self is null || other is null) return; diff --git a/SabreTools.Metadata.DatItems/Formats/Disk.cs b/SabreTools.Metadata.DatItems/Formats/Disk.cs index 4138aa40..60c6f769 100644 --- a/SabreTools.Metadata.DatItems/Formats/Disk.cs +++ b/SabreTools.Metadata.DatItems/Formats/Disk.cs @@ -151,7 +151,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public Rom ConvertToRom() { - var rom = new Rom(_internal.ConvertToRom()!); + var rom = new Rom((_internal as Data.Models.Metadata.Disk).ConvertToRom()!); // Create a DataArea if there was an existing DiskArea if (DiskArea is not null) @@ -178,19 +178,19 @@ namespace SabreTools.Metadata.DatItems.Formats /// /// Disk to fill information from public void FillMissingInformation(Disk other) - => _internal.FillMissingHashes(other._internal); + => (_internal as Data.Models.Metadata.Disk).FillMissingHashes(other._internal as Data.Models.Metadata.Disk); /// /// Returns if the Rom contains any hashes /// /// True if any hash exists, false otherwise - public bool HasHashes() => _internal.HasHashes(); + public bool HasHashes() => (_internal as Data.Models.Metadata.Disk)?.HasHashes() ?? false; /// /// Returns if all of the hashes are set to their 0-byte values /// /// True if any hash matches the 0-byte value, false otherwise - public bool HasZeroHash() => _internal.HasZeroHash(); + public bool HasZeroHash() => (_internal as Data.Models.Metadata.Disk)?.HasZeroHash() ?? false; #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/Media.cs b/SabreTools.Metadata.DatItems/Formats/Media.cs index 8046f74c..6711d97d 100644 --- a/SabreTools.Metadata.DatItems/Formats/Media.cs +++ b/SabreTools.Metadata.DatItems/Formats/Media.cs @@ -104,7 +104,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public Rom ConvertToRom() { - var rom = new Rom(_internal.ConvertToRom()!); + var rom = new Rom((_internal as Data.Models.Metadata.Media).ConvertToRom()!); rom.DupeType = DupeType; rom.Machine = Machine?.Clone() as Machine; @@ -123,19 +123,19 @@ namespace SabreTools.Metadata.DatItems.Formats /// /// Media to fill information from public void FillMissingInformation(Media other) - => _internal.FillMissingHashes(other._internal); + => (_internal as Data.Models.Metadata.Media).FillMissingHashes(other._internal as Data.Models.Metadata.Media); /// /// Returns if the Rom contains any hashes /// /// True if any hash exists, false otherwise - public bool HasHashes() => _internal.HasHashes(); + public bool HasHashes() => (_internal as Data.Models.Metadata.Media)?.HasHashes() ?? false; /// /// Returns if all of the hashes are set to their 0-byte values /// /// True if any hash matches the 0-byte value, false otherwise - public bool HasZeroHash() => _internal.HasZeroHash(); + public bool HasZeroHash() => (_internal as Data.Models.Metadata.Media)?.HasZeroHash() ?? false; #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/Rom.cs b/SabreTools.Metadata.DatItems/Formats/Rom.cs index 92bdc2f2..78b86448 100644 --- a/SabreTools.Metadata.DatItems/Formats/Rom.cs +++ b/SabreTools.Metadata.DatItems/Formats/Rom.cs @@ -417,19 +417,19 @@ namespace SabreTools.Metadata.DatItems.Formats /// /// Rom to fill information from public void FillMissingInformation(Rom other) - => _internal.FillMissingHashes(other._internal); + => (_internal as Data.Models.Metadata.Rom).FillMissingHashes(other._internal as Data.Models.Metadata.Rom); /// /// Returns if the Rom contains any hashes /// /// True if any hash exists, false otherwise - public bool HasHashes() => _internal.HasHashes(); + public bool HasHashes() => (_internal as Data.Models.Metadata.Rom)?.HasHashes() ?? false; /// /// Returns if all of the hashes are set to their 0-byte values /// /// True if any hash matches the 0-byte value, false otherwise - public bool HasZeroHash() => _internal.HasZeroHash(); + public bool HasZeroHash() => (_internal as Data.Models.Metadata.Rom)?.HasZeroHash() ?? false; #endregion From 5ab48845e3026a4fcded42007e361e7000398982 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sat, 4 Apr 2026 13:39:14 -0400 Subject: [PATCH 078/142] Remove one more use of DeepClone --- .../DatItemTests.cs | 109 +++--------------- 1 file changed, 16 insertions(+), 93 deletions(-) diff --git a/SabreTools.Metadata.DatItems.Test/DatItemTests.cs b/SabreTools.Metadata.DatItems.Test/DatItemTests.cs index fc9a82f0..df6a9d72 100644 --- a/SabreTools.Metadata.DatItems.Test/DatItemTests.cs +++ b/SabreTools.Metadata.DatItems.Test/DatItemTests.cs @@ -1,4 +1,4 @@ -using SabreTools.Data.Extensions; +using System; using SabreTools.Metadata.DatItems.Formats; using Xunit; @@ -11,9 +11,12 @@ namespace SabreTools.Metadata.DatItems.Test /// /// Testing implementation of Data.Models.Metadata.DatItem /// - private class TestDatItemModel : Data.Models.Metadata.DatItem + private class TestDatItemModel : Data.Models.Metadata.DatItem, ICloneable { - public const string NameKey = "__NAME__"; + public string? Name { get; set; } + + /// + public object Clone() => new TestDatItemModel { Name = Name }; } /// @@ -21,13 +24,15 @@ namespace SabreTools.Metadata.DatItems.Test /// private class TestDatItem : DatItem { - private readonly string? _nameKey; - public override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Blank; - public TestDatItem() => _nameKey = TestDatItemModel.NameKey; + public string? Name + { + get => (_internal as Data.Models.Metadata.Info)?.Name; + set => (_internal as Data.Models.Metadata.Info)?.Name = value; + } - public TestDatItem(string? nameKey) => _nameKey = nameKey; + public TestDatItem() { } /// public override object Clone() => new TestDatItem() @@ -38,18 +43,14 @@ namespace SabreTools.Metadata.DatItems.Test /// public override TestDatItemModel GetInternalClone() { - return _internal.DeepClone() as TestDatItemModel ?? []; + return (_internal as TestDatItemModel)?.Clone() as TestDatItemModel ?? []; } /// - public override string? GetName() => _nameKey is not null ? _internal.ReadString(_nameKey) : null; + public override string? GetName() => Name; /// - public override void SetName(string? name) - { - if (_nameKey is not null) - _internal[_nameKey] = name; - } + public override void SetName(string? name) => Name = name; } #endregion @@ -432,84 +433,6 @@ namespace SabreTools.Metadata.DatItems.Test #endregion - #region GetName - - [Fact] - public void GetName_NoNameKey_Null() - { - DatItem item = new TestDatItem(nameKey: null); - item.Write(TestDatItemModel.NameKey, "name"); - - string? actual = item.GetName(); - Assert.Null(actual); - } - - [Fact] - public void GetName_EmptyNameKey_Null() - { - DatItem item = new TestDatItem(nameKey: string.Empty); - item.Write(TestDatItemModel.NameKey, "name"); - - string? actual = item.GetName(); - Assert.Null(actual); - } - - [Fact] - public void GetName_NameKeyNotExists_Null() - { - DatItem item = new TestDatItem(nameKey: "INVALID"); - item.Write(TestDatItemModel.NameKey, "name"); - - string? actual = item.GetName(); - Assert.Null(actual); - } - - [Fact] - public void GetName_NameKeyExists_Filled() - { - DatItem item = new TestDatItem(nameKey: TestDatItemModel.NameKey); - item.Write(TestDatItemModel.NameKey, "name"); - - string? actual = item.GetName(); - Assert.Equal("name", actual); - } - - #endregion - - #region SetName - - [Fact] - public void SetName_NoNameKey_Null() - { - DatItem item = new TestDatItem(nameKey: null); - item.SetName("name"); - - string? actual = item.GetName(); - Assert.Null(actual); - } - - [Fact] - public void SetName_EmptyNameKey_Null() - { - DatItem item = new TestDatItem(nameKey: string.Empty); - item.SetName("name"); - - string? actual = item.GetName(); - Assert.Null(actual); - } - - [Fact] - public void SetName_NameKeyNonEmpty_Filled() - { - DatItem item = new TestDatItem(nameKey: TestDatItemModel.NameKey); - item.SetName("name"); - - string? actual = item.GetName(); - Assert.Equal("name", actual); - } - - #endregion - #region Clone [Fact] @@ -534,7 +457,7 @@ namespace SabreTools.Metadata.DatItems.Test item.SetName("name"); TestDatItemModel actual = item.GetInternalClone(); - Assert.Equal("name", actual[TestDatItemModel.NameKey]); + Assert.Equal("name", actual.Name); } #endregion From 096f1d95349450083076d1517718f8ef55b668e3 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sat, 4 Apr 2026 14:07:37 -0400 Subject: [PATCH 079/142] Remove get/set name methods where appropriate --- .../MetadataExtensions.cs | 126 ------------------ .../ItemDictionaryDBTests.cs | 2 - .../ItemDictionaryTests.cs | 2 - SabreTools.Metadata.DatFiles/DatFile.cs | 10 -- .../DatItemTests.cs | 21 +-- SabreTools.Metadata.DatItems/DatItem.cs | 2 +- SabreTools.Metadata.DatItems/Machine.cs | 16 --- 7 files changed, 4 insertions(+), 175 deletions(-) diff --git a/SabreTools.Data.Extensions/MetadataExtensions.cs b/SabreTools.Data.Extensions/MetadataExtensions.cs index 36dcc5d9..ae6bc00d 100644 --- a/SabreTools.Data.Extensions/MetadataExtensions.cs +++ b/SabreTools.Data.Extensions/MetadataExtensions.cs @@ -10,132 +10,6 @@ namespace SabreTools.Data.Extensions // TODO: Combine yes/partial/no enums public static class MetadataExtensions { - #region Accessors - - /// - /// Gets the name to use for a DictionaryBase or null - /// - /// TODO: Determine if this can be removed - public static string? GetName(this DictionaryBase self) - { - if (self is null) - return null; - - return self switch - { - Header header => header.Name, - - Machine machine => machine.Name, - - Adjuster adjuster => adjuster.Name, - Analog => null, - Archive archive => archive.Name, - BiosSet biosSet => biosSet.Name, - Chip chip => chip.Name, - Condition => null, - ConfLocation confLocation => confLocation.Name, - ConfSetting confSetting => confSetting.Name, - Configuration configuration => configuration.Name, - Control => null, - DataArea dataArea => dataArea.Name, - Device => null, - DeviceRef deviceRef => deviceRef.Name, - DipLocation dipLocation => dipLocation.Name, - DipSwitch dipSwitch => dipSwitch.Name, - DipValue dipValue => dipValue.Name, - Disk disk => disk.Name, - DiskArea diskArea => diskArea.Name, - Display => null, - Driver => null, - Extension extension => extension.Name, - Feature feature => feature.Name, - Info info => info.Name, - Input => null, - Instance instance => instance.Name, - Media media => media.Name, - Part part => part.Name, - Port => null, - RamOption ramOption => ramOption.Name, - Release release => release.Name, - ReleaseDetails => null, - Rom rom => rom.Name, - Sample sample => sample.Name, - Serials => null, - SharedFeat sharedFeat => sharedFeat.Name, - Slot slot => slot.Name, - SlotOption slotOption => slotOption.Name, - SoftwareList softwareList => softwareList.Name, - Sound => null, - SourceDetails => null, - Video => null, - - _ => null, - }; - } - - /// - /// Gets the name to use for a DictionaryBase or null - /// - /// TODO: Determine if this can be removed - public static void SetName(this DictionaryBase self, string? name) - { - if (self is null || string.IsNullOrEmpty(name)) - return; - - switch (self) - { - case Header header: header.Name = name; break; - - case Machine machine: machine.Name = name; break; - - case Adjuster adjuster: adjuster.Name = name; break; - case Analog: break; - case Archive archive: archive.Name = name; break; - case BiosSet biosSet: biosSet.Name = name; break; - case Chip chip: chip.Name = name; break; - case Condition: break; - case ConfLocation confLocation: confLocation.Name = name; break; - case ConfSetting confSetting: confSetting.Name = name; break; - case Configuration configuration: configuration.Name = name; break; - case Control: break; - case DataArea dataArea: dataArea.Name = name; break; - case Device: break; - case DeviceRef deviceRef: deviceRef.Name = name; break; - case DipLocation dipLocation: dipLocation.Name = name; break; - case DipSwitch dipSwitch: dipSwitch.Name = name; break; - case DipValue dipValue: dipValue.Name = name; break; - case Disk disk: disk.Name = name; break; - case DiskArea diskArea: diskArea.Name = name; break; - case Display: break; - case Driver: break; - case Extension extension: extension.Name = name; break; - case Feature feature: feature.Name = name; break; - case Info info: info.Name = name; break; - case Input: break; - case Instance instance: instance.Name = name; break; - case Media media: media.Name = name; break; - case Part part: part.Name = name; break; - case Port: break; - case RamOption ramOption: ramOption.Name = name; break; - case Release release: release.Name = name; break; - case ReleaseDetails: break; - case Rom rom: rom.Name = name; break; - case Sample sample: sample.Name = name; break; - case Serials: break; - case SharedFeat sharedFeat: sharedFeat.Name = name; break; - case Slot slot: slot.Name = name; break; - case SlotOption slotOption: slotOption.Name = name; break; - case SoftwareList softwareList: softwareList.Name = name; break; - case Sound: break; - case SourceDetails: break; - case Video: break; - - default: break; - } - } - - #endregion - #region Cloning /// diff --git a/SabreTools.Metadata.DatFiles.Test/ItemDictionaryDBTests.cs b/SabreTools.Metadata.DatFiles.Test/ItemDictionaryDBTests.cs index 294b6b6f..bcef1da0 100644 --- a/SabreTools.Metadata.DatFiles.Test/ItemDictionaryDBTests.cs +++ b/SabreTools.Metadata.DatFiles.Test/ItemDictionaryDBTests.cs @@ -59,7 +59,6 @@ namespace SabreTools.Metadata.DatFiles.Test Machine machine = new Machine(); var file = new File { SHA1 = "deadbeef" }; - file.SetName("item"); var dict = new ItemDictionaryDB(); long sourceIndex = dict.AddSource(source); @@ -78,7 +77,6 @@ namespace SabreTools.Metadata.DatFiles.Test Machine machine = new Machine(); DatItem file = new File(); - file.SetName("item"); var dict = new ItemDictionaryDB(); long sourceIndex = dict.AddSource(source); diff --git a/SabreTools.Metadata.DatFiles.Test/ItemDictionaryTests.cs b/SabreTools.Metadata.DatFiles.Test/ItemDictionaryTests.cs index 4a317cfc..90b8fa45 100644 --- a/SabreTools.Metadata.DatFiles.Test/ItemDictionaryTests.cs +++ b/SabreTools.Metadata.DatFiles.Test/ItemDictionaryTests.cs @@ -67,7 +67,6 @@ namespace SabreTools.Metadata.DatFiles.Test Source = source, Machine = machine }; - file.SetName("item"); var dict = new ItemDictionary(); _ = dict.AddItem(file, statsOnly: false); @@ -88,7 +87,6 @@ namespace SabreTools.Metadata.DatFiles.Test Source = source, Machine = machine }; - file.SetName("item"); var dict = new ItemDictionary(); _ = dict.AddItem(file, statsOnly: false); diff --git a/SabreTools.Metadata.DatFiles/DatFile.cs b/SabreTools.Metadata.DatFiles/DatFile.cs index 517d2bba..c3db7efd 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.cs @@ -510,16 +510,6 @@ namespace SabreTools.Metadata.DatFiles disk.Name = $"{pre}{name}{post}"; } } - else if (item is DatItems.Formats.File file) - { - // We can only write out if there's a SHA-1 - string? sha1 = file.SHA1; - if (!string.IsNullOrEmpty(sha1)) - { - name = Utilities.GetDepotPath(sha1, Modifiers.OutputDepot.Depth)?.Replace('\\', '/'); - file.SetName($"{pre}{name}{post}"); - } - } else if (item is Media media) { // We can only write out if there's a SHA-1 diff --git a/SabreTools.Metadata.DatItems.Test/DatItemTests.cs b/SabreTools.Metadata.DatItems.Test/DatItemTests.cs index df6a9d72..fa1ae679 100644 --- a/SabreTools.Metadata.DatItems.Test/DatItemTests.cs +++ b/SabreTools.Metadata.DatItems.Test/DatItemTests.cs @@ -28,8 +28,8 @@ namespace SabreTools.Metadata.DatItems.Test public string? Name { - get => (_internal as Data.Models.Metadata.Info)?.Name; - set => (_internal as Data.Models.Metadata.Info)?.Name = value; + get => (_internal as TestDatItemModel)?.Name; + set => (_internal as TestDatItemModel)?.Name = value; } public TestDatItem() { } @@ -241,19 +241,6 @@ namespace SabreTools.Metadata.DatItems.Test Assert.True(actual); } - [Fact] - public void Equals_MismatchedInternal_False() - { - DatItem self = new TestDatItem(); - self.SetName("self"); - - DatItem? other = new TestDatItem(); - other.SetName("other"); - - bool actual = self.Equals(other); - Assert.False(actual); - } - [Fact] public void Equals_EqualInternal_True() { @@ -453,9 +440,7 @@ namespace SabreTools.Metadata.DatItems.Test [Fact] public void GetInternalCloneTest() { - DatItem item = new TestDatItem(); - item.SetName("name"); - + DatItem item = new TestDatItem { Name = "name" }; TestDatItemModel actual = item.GetInternalClone(); Assert.Equal("name", actual.Name); } diff --git a/SabreTools.Metadata.DatItems/DatItem.cs b/SabreTools.Metadata.DatItems/DatItem.cs index dd1daa01..9b037f83 100644 --- a/SabreTools.Metadata.DatItems/DatItem.cs +++ b/SabreTools.Metadata.DatItems/DatItem.cs @@ -262,7 +262,7 @@ namespace SabreTools.Metadata.DatItems string key = string.Empty; string sourceKeyPadded = source?.Index.ToString().PadLeft(10, '0') + '-'; - string machineName = machine?.GetName() ?? "Default"; + string machineName = machine?.Name ?? "Default"; // Now determine what the key should be based on the bucketedBy value switch (bucketedBy) diff --git a/SabreTools.Metadata.DatItems/Machine.cs b/SabreTools.Metadata.DatItems/Machine.cs index eb5f7301..5cfc6008 100644 --- a/SabreTools.Metadata.DatItems/Machine.cs +++ b/SabreTools.Metadata.DatItems/Machine.cs @@ -338,22 +338,6 @@ namespace SabreTools.Metadata.DatItems #endregion - #region Accessors - - /// - /// Gets the name to use for a Machine - /// - /// Name if available, null otherwise - public string? GetName() => Name; - - /// - /// Sets the name to use for a Machine - /// - /// Name to set for the item - public void SetName(string? name) => Name = name; - - #endregion - #region Cloning methods /// From 274919fd6a4e43265993049ca1a9b473adfb82ce Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sat, 4 Apr 2026 14:23:27 -0400 Subject: [PATCH 080/142] Convert Dump to using properties --- SabreTools.Data.Models/Metadata/Dump.cs | 69 ++++++++++++++++++++----- 1 file changed, 55 insertions(+), 14 deletions(-) diff --git a/SabreTools.Data.Models/Metadata/Dump.cs b/SabreTools.Data.Models/Metadata/Dump.cs index f4ca3c33..69a39c6a 100644 --- a/SabreTools.Data.Models/Metadata/Dump.cs +++ b/SabreTools.Data.Models/Metadata/Dump.cs @@ -1,31 +1,72 @@ +using System; using System.Xml.Serialization; using Newtonsoft.Json; namespace SabreTools.Data.Models.Metadata { [JsonObject("dump"), XmlRoot("dump")] - public class Dump : DatItem + public class Dump : DatItem, ICloneable, IEquatable { - #region Keys + #region Properties - /// Rom - [NoFilter] - public const string MegaRomKey = "megarom"; + public Rom? MegaRom { get; set; } - /// Original - [NoFilter] - public const string OriginalKey = "original"; + public Original? Original { get; set; } - /// Rom - [NoFilter] - public const string RomKey = "rom"; + public Rom? Rom { get; set; } - /// Rom - [NoFilter] - public const string SCCPlusCartKey = "sccpluscart"; + public Rom? SCCPlusCart { get; set; } #endregion public Dump() => ItemType = ItemType.Dump; + + /// + public object Clone() + { + var obj = new Dump(); + + if (MegaRom is not null) + obj.MegaRom = MegaRom.Clone() as Rom; + if (Original is not null) + obj.Original = Original.Clone() as Original; + if (Rom is not null) + obj.Rom = Rom.Clone() as Rom; + if (SCCPlusCart is not null) + obj.SCCPlusCart = SCCPlusCart.Clone() as Rom; + + return obj; + } + + /// + public bool Equals(Dump? other) + { + // Null never matches + if (other is null) + return false; + + // Sub-items + if ((MegaRom is null) ^ (other.MegaRom is null)) + return false; + else if (MegaRom is not null && other.MegaRom is not null && MegaRom.Equals(other.MegaRom)) + return false; + + if ((Original is null) ^ (other.Original is null)) + return false; + else if (Original is not null && other.Original is not null && Original.Equals(other.Original)) + return false; + + if ((Rom is null) ^ (other.Rom is null)) + return false; + else if (Rom is not null && other.Rom is not null && Rom.Equals(other.Rom)) + return false; + + if ((SCCPlusCart is null) ^ (other.SCCPlusCart is null)) + return false; + else if (SCCPlusCart is not null && other.SCCPlusCart is not null && SCCPlusCart.Equals(other.SCCPlusCart)) + return false; + + return true; + } } } From 12e10868383e70f04a6e06a44b32ae05721f2bd8 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sat, 4 Apr 2026 14:23:31 -0400 Subject: [PATCH 081/142] Convert Dump to using properties --- .../MetadataExtensions.cs | 2 ++ .../DatFileTests.FromMetadata.cs | 8 +++---- .../DatFile.ToMetadata.cs | 12 +++++----- SabreTools.Metadata.DatItems/Formats/Rom.cs | 24 ++++++++++++------- .../DictionaryBaseExtensions.cs | 3 +++ .../OpenMSX.Deserializer.cs | 8 +++---- .../OpenMSX.Serializer.cs | 8 +++---- 7 files changed, 38 insertions(+), 27 deletions(-) diff --git a/SabreTools.Data.Extensions/MetadataExtensions.cs b/SabreTools.Data.Extensions/MetadataExtensions.cs index ae6bc00d..a509a6e9 100644 --- a/SabreTools.Data.Extensions/MetadataExtensions.cs +++ b/SabreTools.Data.Extensions/MetadataExtensions.cs @@ -61,6 +61,8 @@ namespace SabreTools.Data.Extensions return display.Clone() as Display; else if (self is Driver driver) return driver.Clone() as Driver; + else if (self is Dump dump) + return dump.Clone() as Dump; else if (self is Extension extension) return extension.Clone() as Extension; else if (self is Feature feature) diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs index 176ff0b8..689bab84 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs @@ -616,14 +616,14 @@ namespace SabreTools.Metadata.DatFiles.Test { return new Data.Models.Metadata.Dump { - [Data.Models.Metadata.Dump.OriginalKey] = CreateMetadataOriginal(), + Original = CreateMetadataOriginal(), // The following are searched for in order // For the purposes of this test, only RomKey will be populated // The only difference is what OpenMSXSubType value is applied - [Data.Models.Metadata.Dump.RomKey] = new Data.Models.Metadata.Rom(), - [Data.Models.Metadata.Dump.MegaRomKey] = null, - [Data.Models.Metadata.Dump.SCCPlusCartKey] = null, + Rom = new Data.Models.Metadata.Rom(), + MegaRom = null, + SCCPlusCart = null, }; } diff --git a/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs b/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs index 3a412c84..ee24369a 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs @@ -907,7 +907,7 @@ namespace SabreTools.Metadata.DatFiles rom[Data.Models.Metadata.Rom.SHA1Key] = romItem.ReadString(Data.Models.Metadata.Rom.SHA1Key); rom[Data.Models.Metadata.Rom.StartKey] = romItem.ReadString(Data.Models.Metadata.Rom.StartKey) ?? romItem.ReadString(Data.Models.Metadata.Rom.OffsetKey); - dumpRom[Data.Models.Metadata.Dump.RomKey] = rom; + dumpRom.Rom = rom; var romOriginal = romItem.Read("ORIGINAL"); if (romOriginal is not null) @@ -917,7 +917,7 @@ namespace SabreTools.Metadata.DatFiles Value = romOriginal.Value, Content = romOriginal.Content, }; - dumpRom[Data.Models.Metadata.Dump.OriginalKey] = newOriginal; + dumpRom.Original = newOriginal; } machine.Dump ??= []; @@ -935,7 +935,7 @@ namespace SabreTools.Metadata.DatFiles megaRom[Data.Models.Metadata.Rom.SHA1Key] = romItem.ReadString(Data.Models.Metadata.Rom.SHA1Key); megaRom[Data.Models.Metadata.Rom.StartKey] = romItem.ReadString(Data.Models.Metadata.Rom.StartKey) ?? romItem.ReadString(Data.Models.Metadata.Rom.OffsetKey); - dumpMegaRom[Data.Models.Metadata.Dump.MegaRomKey] = megaRom; + dumpMegaRom.MegaRom = megaRom; var megaRomOriginal = romItem.Read("ORIGINAL"); if (megaRomOriginal is not null) @@ -945,7 +945,7 @@ namespace SabreTools.Metadata.DatFiles Value = megaRomOriginal.Value, Content = megaRomOriginal.Content, }; - dumpMegaRom[Data.Models.Metadata.Dump.OriginalKey] = newOriginal; + dumpMegaRom.Original = newOriginal; } machine.Dump ??= []; @@ -963,7 +963,7 @@ namespace SabreTools.Metadata.DatFiles sccPlusCart[Data.Models.Metadata.Rom.SHA1Key] = romItem.ReadString(Data.Models.Metadata.Rom.SHA1Key); sccPlusCart[Data.Models.Metadata.Rom.StartKey] = romItem.ReadString(Data.Models.Metadata.Rom.StartKey) ?? romItem.ReadString(Data.Models.Metadata.Rom.OffsetKey); - dumpSccPlusCart[Data.Models.Metadata.Dump.RomKey] = sccPlusCart; + dumpSccPlusCart.SCCPlusCart = sccPlusCart; var sccPlusCartOriginal = romItem.Read("ORIGINAL"); if (sccPlusCartOriginal is not null) @@ -973,7 +973,7 @@ namespace SabreTools.Metadata.DatFiles Value = sccPlusCartOriginal.Value, Content = sccPlusCartOriginal.Content, }; - dumpSccPlusCart[Data.Models.Metadata.Dump.OriginalKey] = newOriginal; + dumpSccPlusCart.Original = newOriginal; } machine.Dump ??= []; diff --git a/SabreTools.Metadata.DatItems/Formats/Rom.cs b/SabreTools.Metadata.DatItems/Formats/Rom.cs index 78b86448..f8ba3e6d 100644 --- a/SabreTools.Metadata.DatItems/Formats/Rom.cs +++ b/SabreTools.Metadata.DatItems/Formats/Rom.cs @@ -12,6 +12,12 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("rom"), XmlRoot("rom")] public sealed class Rom : DatItem { + #region Temporary Constants + + public const string OriginalKey = "ORIGINAL"; + + #endregion + #region Fields public DataArea? DataArea { get; set; } @@ -91,7 +97,7 @@ namespace SabreTools.Metadata.DatItems.Formats { get { - var original = Read("ORIGINAL"); + var original = Read(OriginalKey); return original is not null && original != default; } } @@ -149,19 +155,19 @@ namespace SabreTools.Metadata.DatItems.Formats Data.Models.Metadata.Rom? rom = null; OpenMSXSubType? subType = null; - if (item.Read(Dump.RomKey) is not null) + if (item.Rom is not null) { - rom = item.Read(Dump.RomKey); + rom = item.Rom; subType = OpenMSXSubType.Rom; } - else if (item.Read(Dump.MegaRomKey) is not null) + else if (item.MegaRom is not null) { - rom = item.Read(Dump.MegaRomKey); + rom = item.MegaRom; subType = OpenMSXSubType.MegaRom; } - else if (item.Read(Dump.SCCPlusCartKey) is not null) + else if (item.SCCPlusCart is not null) { - rom = item.Read(Dump.SCCPlusCartKey); + rom = item.SCCPlusCart; subType = OpenMSXSubType.SCCPlusCart; } @@ -180,10 +186,10 @@ namespace SabreTools.Metadata.DatItems.Formats Write(Data.Models.Metadata.Rom.StartKey, rom.ReadString(Data.Models.Metadata.Rom.StartKey)); Source = source; - var original = item.Read(Dump.OriginalKey); + var original = item.Original; if (original is not null) { - Write("ORIGINAL", new Original + Write(OriginalKey, new Original { Value = original.Value, Content = original.Content, diff --git a/SabreTools.Metadata/DictionaryBaseExtensions.cs b/SabreTools.Metadata/DictionaryBaseExtensions.cs index 5b7b0152..bc5ba954 100644 --- a/SabreTools.Metadata/DictionaryBaseExtensions.cs +++ b/SabreTools.Metadata/DictionaryBaseExtensions.cs @@ -43,6 +43,7 @@ namespace SabreTools.Metadata (DiskArea selfDiskArea, DiskArea otherDiskArea) => selfDiskArea.Equals(otherDiskArea), (Display selfDisplay, Display otherDisplay) => selfDisplay.Equals(otherDisplay), (Driver selfDriver, Driver otherDriver) => selfDriver.Equals(otherDriver), + (Dump selfDump, Dump otherDump) => selfDump.Equals(otherDump), (Feature selfFeature, Feature otherFeature) => selfFeature.Equals(otherFeature), (Info selfInfo, Info otherInfo) => selfInfo.Equals(otherInfo), (Input selfInput, Input otherInput) => selfInput.Equals(otherInput), @@ -104,6 +105,8 @@ namespace SabreTools.Metadata return selfDisplay.Equals(otherDisplay); else if (self is Driver selfDriver && other is Driver otherDriver) return selfDriver.Equals(otherDriver); + else if (self is Dump selfDump && other is Dump otherDump) + return selfDump.Equals(otherDump); else if (self is Feature selfFeature && other is Feature otherFeature) return selfFeature.Equals(otherFeature); else if (self is Info selfInfo && other is Info otherInfo) diff --git a/SabreTools.Serialization.CrossModel/OpenMSX.Deserializer.cs b/SabreTools.Serialization.CrossModel/OpenMSX.Deserializer.cs index 5ef33342..60832b07 100644 --- a/SabreTools.Serialization.CrossModel/OpenMSX.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/OpenMSX.Deserializer.cs @@ -62,19 +62,19 @@ namespace SabreTools.Serialization.CrossModel { var dump = new Dump(); - var original = item.Read(Data.Models.Metadata.Dump.OriginalKey); + var original = item.Original; if (original is not null) dump.Original = ConvertFromInternalModel(original); - var rom = item.Read(Data.Models.Metadata.Dump.RomKey); + var rom = item.Rom; if (rom is not null) dump.Rom = ConvertRomFromInternalModel(rom); - var megaRom = item.Read(Data.Models.Metadata.Dump.MegaRomKey); + var megaRom = item.MegaRom; if (megaRom is not null) dump.Rom = ConvertMegaRomFromInternalModel(megaRom); - var sccPlusCart = item.Read(Data.Models.Metadata.Dump.SCCPlusCartKey); + var sccPlusCart = item.SCCPlusCart; if (sccPlusCart is not null) dump.Rom = ConvertSCCPlusCartFromInternalModel(sccPlusCart); diff --git a/SabreTools.Serialization.CrossModel/OpenMSX.Serializer.cs b/SabreTools.Serialization.CrossModel/OpenMSX.Serializer.cs index d2e21bcb..9565e6d6 100644 --- a/SabreTools.Serialization.CrossModel/OpenMSX.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/OpenMSX.Serializer.cs @@ -69,22 +69,22 @@ namespace SabreTools.Serialization.CrossModel var dump = new Data.Models.Metadata.Dump(); if (item.Original is not null) - dump[Data.Models.Metadata.Dump.OriginalKey] = ConvertToInternalModel(item.Original); + dump.Original = ConvertToInternalModel(item.Original); if (item.Rom is not null) { switch (item.Rom) { case Rom rom: - dump[Data.Models.Metadata.Dump.RomKey] = ConvertToInternalModel(rom); + dump.Rom = ConvertToInternalModel(rom); break; case MegaRom megaRom: - dump[Data.Models.Metadata.Dump.MegaRomKey] = ConvertToInternalModel(megaRom); + dump.MegaRom = ConvertToInternalModel(megaRom); break; case SCCPlusCart sccPlusCart: - dump[Data.Models.Metadata.Dump.SCCPlusCartKey] = ConvertToInternalModel(sccPlusCart); + dump.SCCPlusCart = ConvertToInternalModel(sccPlusCart); break; default: From d08427f1ba4b664716112cc4ebfb8600c8a9ce02 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sat, 4 Apr 2026 15:17:58 -0400 Subject: [PATCH 082/142] Trurip finally gets integrated, more at 11 --- .../MetadataExtensions.cs | 10 ++ SabreTools.Data.Models/Metadata/Machine.cs | 38 ++++- .../DatFileTests.FromMetadata.cs | 65 +++----- .../DatFileTests.ToMetadata.cs | 54 ++----- .../DatFile.ToMetadata.cs | 32 ---- SabreTools.Metadata.DatItems/Machine.cs | 66 +++++++- SabreTools.Metadata.DatItems/Trurip.cs | 146 ------------------ SabreTools.Metadata.Filter/FilterObject.cs | 30 ++++ .../DictionaryBaseExtensions.cs | 20 +++ .../Logiqx.Deserializer.cs | 115 ++++++++------ .../Logiqx.Serializer.cs | 42 +++-- 11 files changed, 279 insertions(+), 339 deletions(-) delete mode 100644 SabreTools.Metadata.DatItems/Trurip.cs diff --git a/SabreTools.Data.Extensions/MetadataExtensions.cs b/SabreTools.Data.Extensions/MetadataExtensions.cs index a509a6e9..c94edef1 100644 --- a/SabreTools.Data.Extensions/MetadataExtensions.cs +++ b/SabreTools.Data.Extensions/MetadataExtensions.cs @@ -159,15 +159,19 @@ namespace SabreTools.Data.Extensions cloneMachine.Company = selfMachine.Company; cloneMachine.Control = selfMachine.Control; cloneMachine.Country = selfMachine.Country; + cloneMachine.CRC = selfMachine.CRC; cloneMachine.Description = selfMachine.Description; + cloneMachine.Developer = selfMachine.Developer; cloneMachine.DirName = selfMachine.DirName; cloneMachine.DisplayCount = selfMachine.DisplayCount; cloneMachine.DisplayType = selfMachine.DisplayType; cloneMachine.DuplicateID = selfMachine.DuplicateID; cloneMachine.Emulator = selfMachine.Emulator; + cloneMachine.Enabled = selfMachine.Enabled; cloneMachine.Extra = selfMachine.Extra; cloneMachine.Favorite = selfMachine.Favorite; cloneMachine.GenMSXID = selfMachine.GenMSXID; + cloneMachine.Genre = selfMachine.Genre; cloneMachine.Hash = selfMachine.Hash; cloneMachine.History = selfMachine.History; cloneMachine.Id = selfMachine.Id; @@ -186,19 +190,25 @@ namespace SabreTools.Data.Extensions cloneMachine.PlayedTime = selfMachine.PlayedTime; cloneMachine.Players = selfMachine.Players; cloneMachine.Publisher = selfMachine.Publisher; + cloneMachine.Ratings = selfMachine.Ratings; cloneMachine.RebuildTo = selfMachine.RebuildTo; + cloneMachine.RelatedTo = selfMachine.RelatedTo; cloneMachine.ReleaseNumber = selfMachine.ReleaseNumber; cloneMachine.RomOf = selfMachine.RomOf; cloneMachine.Rotation = selfMachine.Rotation; cloneMachine.Runnable = selfMachine.Runnable; cloneMachine.SampleOf = selfMachine.SampleOf; cloneMachine.SaveType = selfMachine.SaveType; + cloneMachine.Score = selfMachine.Score; + cloneMachine.Source = selfMachine.Source; cloneMachine.SourceFile = selfMachine.SourceFile; cloneMachine.SourceRom = selfMachine.SourceRom; cloneMachine.Status = selfMachine.Status; + cloneMachine.Subgenre = selfMachine.Subgenre; cloneMachine.Supported = selfMachine.Supported; cloneMachine.System = selfMachine.System; cloneMachine.Tags = selfMachine.Tags; + cloneMachine.TitleID = selfMachine.TitleID; cloneMachine.Url = selfMachine.Url; cloneMachine.Year = selfMachine.Year; } diff --git a/SabreTools.Data.Models/Metadata/Machine.cs b/SabreTools.Data.Models/Metadata/Machine.cs index 9fe850f1..1fddb4bd 100644 --- a/SabreTools.Data.Models/Metadata/Machine.cs +++ b/SabreTools.Data.Models/Metadata/Machine.cs @@ -1,4 +1,3 @@ - namespace SabreTools.Data.Models.Metadata { /// @@ -167,6 +166,38 @@ namespace SabreTools.Data.Models.Metadata #endregion + #region From Trurip + + // public string? CloneOf { get; set; } + + public string? CRC { get; set; } + + public string? Developer { get; set; } + + public string? Enabled { get; set; } + + public string? Genre { get; set; } + + // public string? Players { get; set; } + + // public string? Publisher { get; set; } + + public string? Ratings { get; set; } + + public string? RelatedTo { get; set; } + + public string? Score { get; set; } + + public string? Source { get; set; } + + public string? Subgenre { get; set; } + + public string? TitleID { get; set; } + + // public string? Year { get; set; } + + #endregion + #region Keys /// string, string[] @@ -175,11 +206,6 @@ namespace SabreTools.Data.Models.Metadata /// string, string[] public const string CommentKey = "comment"; - /// TODO: This needs an internal model OR mapping to fields - /// Trurip - [NoFilter] - public const string TruripKey = "trurip"; - #endregion } } diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs index 689bab84..a8d6e6fa 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs @@ -263,8 +263,10 @@ namespace SabreTools.Metadata.DatFiles.Test Company = "company", Configuration = [CreateMetadataConfiguration()], Control = "control", + CRC = "crc", Country = "country", Description = "description", + Developer = "developer", Device = [CreateMetadataDevice()], DeviceRef = [CreateMetadataDeviceRef()], DipSwitch = [CreateMetadataDipSwitch()], @@ -277,10 +279,12 @@ namespace SabreTools.Metadata.DatFiles.Test Dump = [CreateMetadataDump()], DuplicateID = "duplicateid", Emulator = "emulator", + Enabled = "enabled", Extra = "extra", Favorite = "favorite", Feature = [CreateMetadataFeature()], GenMSXID = "genmsxid", + Genre = "genre", History = "history", Id = "id", Im1CRC = HashType.CRC32.ZeroString, @@ -304,7 +308,9 @@ namespace SabreTools.Metadata.DatFiles.Test Port = [CreateMetadataPort()], Publisher = "publisher", RamOption = [CreateMetadataRamOption()], + Ratings = "ratings", RebuildTo = "rebuildto", + RelatedTo = "relatedto", Release = [CreateMetadataRelease()], ReleaseNumber = "releasenumber", Rom = [CreateMetadataRom()], @@ -314,17 +320,20 @@ namespace SabreTools.Metadata.DatFiles.Test Sample = [CreateMetadataSample()], SampleOf = "sampleof", SaveType = "savetype", + Score = "score", SharedFeat = [CreateMetadataSharedFeat()], Slot = [CreateMetadataSlot()], SoftwareList = [CreateMetadataSoftwareList()], Sound = CreateMetadataSound(), + Source = "source", SourceFile = "sourcefile", SourceRom = "sourcerom", Status = "status", + Subgenre = "subgenre", Supported = Data.Models.Metadata.Supported.Yes, System = "system", Tags = "tags", - [Data.Models.Metadata.Machine.TruripKey] = CreateMetadataTrurip(), + TitleID = "titleid", Video = [CreateMetadataVideo()], Year = "year", }; @@ -977,27 +986,6 @@ namespace SabreTools.Metadata.DatFiles.Test }; } - private static Data.Models.Logiqx.Trurip CreateMetadataTrurip() - { - return new Data.Models.Logiqx.Trurip - { - TitleID = "titleid", - Publisher = "publisher", - Developer = "developer", - Year = "year", - Genre = "genre", - Subgenre = "subgenre", - Ratings = "ratings", - Score = "score", - Players = "players", - Enabled = "enabled", - CRC = "yes", - Source = "source", - CloneOf = "cloneof", - RelatedTo = "relatedto", - }; - } - private static Data.Models.Metadata.Video CreateMetadataVideo() { return new Data.Models.Metadata.Video @@ -1076,15 +1064,19 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("company", machine.Company); Assert.Equal("control", machine.Control); Assert.Equal("country", machine.Country); + Assert.Equal("crc", machine.CRC); Assert.Equal("description", machine.Description); + Assert.Equal("developer", machine.Developer); Assert.Equal("dirname", machine.DirName); Assert.Equal("displaycount", machine.DisplayCount); Assert.Equal("displaytype", machine.DisplayType); Assert.Equal("duplicateid", machine.DuplicateID); Assert.Equal("emulator", machine.Emulator); + Assert.Equal("enabled", machine.Enabled); Assert.Equal("extra", machine.Extra); Assert.Equal("favorite", machine.Favorite); Assert.Equal("genmsxid", machine.GenMSXID); + Assert.Equal("genre", machine.Genre); Assert.Equal("history", machine.History); Assert.Equal("id", machine.Id); Assert.Equal(HashType.CRC32.ZeroString, machine.Im1CRC); @@ -1102,23 +1094,26 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("playedtime", machine.PlayedTime); Assert.Equal("players", machine.Players); Assert.Equal("publisher", machine.Publisher); + Assert.Equal("ratings", machine.Ratings); Assert.Equal("rebuildto", machine.RebuildTo); + Assert.Equal("relatedto", machine.RelatedTo); Assert.Equal("releasenumber", machine.ReleaseNumber); Assert.Equal("romof", machine.RomOf); Assert.Equal("rotation", machine.Rotation); Assert.Equal(Data.Models.Metadata.Runnable.Yes, machine.Runnable); Assert.Equal("sampleof", machine.SampleOf); Assert.Equal("savetype", machine.SaveType); + Assert.Equal("score", machine.Score); + Assert.Equal("source", machine.Source); Assert.Equal("sourcefile", machine.SourceFile); Assert.Equal("sourcerom", machine.SourceRom); Assert.Equal("status", machine.Status); + Assert.Equal("subgenre", machine.Subgenre); Assert.Equal(Data.Models.Metadata.Supported.Yes, machine.Supported); Assert.Equal("system", machine.System); Assert.Equal("tags", machine.Tags); + Assert.Equal("titleid", machine.TitleID); Assert.Equal("year", machine.Year); - - DatItems.Trurip? trurip = machine.Read(Data.Models.Metadata.Machine.TruripKey); - ValidateTrurip(trurip); } #pragma warning restore IDE0051 @@ -1653,26 +1648,6 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal(12345, sound.Channels); } - // TODO: Figure out why so many fields are omitted - private static void ValidateTrurip(DatItems.Trurip? trurip) - { - Assert.NotNull(trurip); - Assert.Equal("titleid", trurip.TitleID); - //Assert.Equal("publisher", trurip.Publisher); // Omitted from conversion - Assert.Equal("developer", trurip.Developer); - // Assert.Equal("year", trurip.Year); // Omitted from conversion - Assert.Equal("genre", trurip.Genre); - Assert.Equal("subgenre", trurip.Subgenre); - Assert.Equal("ratings", trurip.Ratings); - Assert.Equal("score", trurip.Score); - // Assert.Equal("players", trurip.Players); // Omitted from conversion - Assert.Equal("enabled", trurip.Enabled); - Assert.True(trurip.Crc); - // Assert.Equal("source", trurip.Source); // Omitted from conversion - // Assert.Equal("cloneof", trurip.CloneOf); // Omitted from conversion - Assert.Equal("relatedto", trurip.RelatedTo); - } - private static void ValidateVideo(Display? display) { Assert.NotNull(display); diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs index ee6c4ce5..c7fc5e49 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs @@ -110,7 +110,6 @@ namespace SabreTools.Metadata.DatFiles.Test private static Machine CreateMachine() { Machine item = new Machine(CreateMetadataMachine()); - item.Write(Data.Models.Metadata.Machine.TruripKey, CreateTrurip()); return item; } @@ -338,27 +337,6 @@ namespace SabreTools.Metadata.DatFiles.Test return item; } - private static Trurip CreateTrurip() - { - return new Trurip - { - TitleID = "titleid", - // Publisher = "publisher", - Developer = "developer", - // Year = "year", - Genre = "genre", - Subgenre = "subgenre", - Ratings = "ratings", - Score = "score", - // Players = "players", - Enabled = "enabled", - Crc = true, - // Source = "source", - // CloneOf = "cloneof", - RelatedTo = "relatedto", - }; - } - private static Display CreateVideo(Machine machine) { Display item = new Display(CreateMetadataVideo()); @@ -430,15 +408,19 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("company", machine.Company); Assert.Equal("control", machine.Control); Assert.Equal("country", machine.Country); + Assert.Equal("crc", machine.CRC); Assert.Equal("description", machine.Description); + Assert.Equal("developer", machine.Developer); Assert.Equal("dirname", machine.DirName); Assert.Equal("displaycount", machine.DisplayCount); Assert.Equal("displaytype", machine.DisplayType); Assert.Equal("duplicateid", machine.DuplicateID); Assert.Equal("emulator", machine.Emulator); + Assert.Equal("enabled", machine.Enabled); Assert.Equal("extra", machine.Extra); Assert.Equal("favorite", machine.Favorite); Assert.Equal("genmsxid", machine.GenMSXID); + Assert.Equal("genre", machine.Genre); Assert.Equal("history", machine.History); Assert.Equal("id", machine.Id); Assert.Equal(HashType.CRC32.ZeroString, machine.Im1CRC); @@ -456,19 +438,25 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("playedtime", machine.PlayedTime); Assert.Equal("players", machine.Players); Assert.Equal("publisher", machine.Publisher); + Assert.Equal("ratings", machine.Ratings); Assert.Equal("rebuildto", machine.RebuildTo); + Assert.Equal("relatedto", machine.RelatedTo); Assert.Equal("releasenumber", machine.ReleaseNumber); Assert.Equal("romof", machine.RomOf); Assert.Equal("rotation", machine.Rotation); Assert.Equal(Data.Models.Metadata.Runnable.Yes, machine.Runnable); Assert.Equal("sampleof", machine.SampleOf); Assert.Equal("savetype", machine.SaveType); + Assert.Equal("score", machine.Score); + Assert.Equal("source", machine.Source); Assert.Equal("sourcefile", machine.SourceFile); Assert.Equal("sourcerom", machine.SourceRom); Assert.Equal("status", machine.Status); + Assert.Equal("subgenre", machine.Subgenre); Assert.Equal(Data.Models.Metadata.Supported.Yes, machine.Supported); Assert.Equal("system", machine.System); Assert.Equal("tags", machine.Tags); + Assert.Equal("titleid", machine.TitleID); Assert.Equal("year", machine.Year); Data.Models.Metadata.Adjuster[]? adjusters = machine.Adjuster; @@ -604,9 +592,6 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(sound); ValidateMetadataSound(sound); - Data.Models.Logiqx.Trurip? trurip = machine.Read(Data.Models.Metadata.Machine.TruripKey); - ValidateMetadataTrurip(trurip); - Data.Models.Metadata.Video[]? videos = machine.Video; Assert.NotNull(videos); Data.Models.Metadata.Video video = Assert.Single(videos); @@ -1223,25 +1208,6 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("tool", sourceDetails.Tool); } - private static void ValidateMetadataTrurip(Data.Models.Logiqx.Trurip? trurip) - { - Assert.NotNull(trurip); - Assert.Equal("titleid", trurip.TitleID); - Assert.Equal("publisher", trurip.Publisher); - Assert.Equal("developer", trurip.Developer); - Assert.Equal("year", trurip.Year); - Assert.Equal("genre", trurip.Genre); - Assert.Equal("subgenre", trurip.Subgenre); - Assert.Equal("ratings", trurip.Ratings); - Assert.Equal("score", trurip.Score); - Assert.Equal("players", trurip.Players); - Assert.Equal(expected: "enabled", trurip.Enabled); - Assert.Equal("yes", trurip.CRC); - Assert.Equal("sourcefile", trurip.Source); - Assert.Equal("cloneof", trurip.CloneOf); - Assert.Equal("relatedto", trurip.RelatedTo); - } - private static void ValidateMetadataVideo(Data.Models.Metadata.Video? video) { Assert.NotNull(video); diff --git a/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs b/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs index ee24369a..601bab62 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs @@ -77,22 +77,6 @@ namespace SabreTools.Metadata.DatFiles // Create a machine to hold everything var machine = items[0].Machine!.GetInternalClone(); - // Handle Trurip object, if it exists - if (machine.ContainsKey(Data.Models.Metadata.Machine.TruripKey)) - { - var trurip = machine.Read(Data.Models.Metadata.Machine.TruripKey); - if (trurip is not null) - { - var truripItem = trurip.ConvertToLogiqx(); - truripItem.Publisher = machine.Publisher; - truripItem.Year = machine.Year; - truripItem.Players = machine.Players; - truripItem.Source = machine.SourceFile; - truripItem.CloneOf = machine.CloneOf; - machine[Data.Models.Metadata.Machine.TruripKey] = truripItem; - } - } - // Create mapping dictionaries for the Parts, DataAreas, and DiskAreas associated with this machine Dictionary partMappings = []; Dictionary dataAreaMappings = []; @@ -472,22 +456,6 @@ namespace SabreTools.Metadata.DatFiles // Create a machine to hold everything var machine = GetMachineForItemDB(items.First().Key).Value!.GetInternalClone(); - // Handle Trurip object, if it exists - if (machine.ContainsKey(Data.Models.Metadata.Machine.TruripKey)) - { - var trurip = machine.Read(Data.Models.Metadata.Machine.TruripKey); - if (trurip is not null) - { - var truripItem = trurip.ConvertToLogiqx(); - truripItem.Publisher = machine.Publisher; - truripItem.Year = machine.Year; - truripItem.Players = machine.Players; - truripItem.Source = machine.SourceFile; - truripItem.CloneOf = machine.CloneOf; - machine[Data.Models.Metadata.Machine.TruripKey] = truripItem; - } - } - // Create mapping dictionaries for the Parts, DataAreas, and DiskAreas associated with this machine Dictionary partMappings = []; Dictionary dataAreaMappings = []; diff --git a/SabreTools.Metadata.DatItems/Machine.cs b/SabreTools.Metadata.DatItems/Machine.cs index 5cfc6008..8d27e8c5 100644 --- a/SabreTools.Metadata.DatItems/Machine.cs +++ b/SabreTools.Metadata.DatItems/Machine.cs @@ -51,6 +51,12 @@ namespace SabreTools.Metadata.DatItems set => _internal.Control = value; } + public string? CRC + { + get => _internal.CRC; + set => _internal.CRC = value; + } + public string? Country { get => _internal.Country; @@ -63,6 +69,12 @@ namespace SabreTools.Metadata.DatItems set => _internal.Description = value; } + public string? Developer + { + get => _internal.Developer; + set => _internal.Developer = value; + } + public string? DirName { get => _internal.DirName; @@ -93,6 +105,12 @@ namespace SabreTools.Metadata.DatItems set => _internal.Emulator = value; } + public string? Enabled + { + get => _internal.Enabled; + set => _internal.Enabled = value; + } + public string? Extra { get => _internal.Extra; @@ -111,6 +129,12 @@ namespace SabreTools.Metadata.DatItems set => _internal.GenMSXID = value; } + public string? Genre + { + get => _internal.Genre; + set => _internal.Genre = value; + } + public string? Hash { get => _internal.Hash; @@ -219,12 +243,24 @@ namespace SabreTools.Metadata.DatItems set => _internal.Publisher = value; } + public string? Ratings + { + get => _internal.Ratings; + set => _internal.Ratings = value; + } + public string? RebuildTo { get => _internal.RebuildTo; set => _internal.RebuildTo = value; } + public string? RelatedTo + { + get => _internal.RelatedTo; + set => _internal.RelatedTo = value; + } + public string? ReleaseNumber { get => _internal.ReleaseNumber; @@ -261,6 +297,18 @@ namespace SabreTools.Metadata.DatItems set => _internal.SaveType = value; } + public string? Score + { + get => _internal.Score; + set => _internal.Score = value; + } + + public string? Source + { + get => _internal.Source; + set => _internal.Source = value; + } + public string? SourceFile { get => _internal.SourceFile; @@ -279,6 +327,12 @@ namespace SabreTools.Metadata.DatItems set => _internal.Status = value; } + public string? Subgenre + { + get => _internal.Subgenre; + set => _internal.Subgenre = value; + } + public Data.Models.Metadata.Supported? Supported { get => _internal.Supported; @@ -297,6 +351,12 @@ namespace SabreTools.Metadata.DatItems set => _internal.Tags = value; } + public string? TitleID + { + get => _internal.TitleID; + set => _internal.TitleID = value; + } + public string? Url { get => _internal.Url; @@ -321,7 +381,6 @@ namespace SabreTools.Metadata.DatItems public Machine(Data.Models.Metadata.Machine machine) { _internal = machine.DeepClone() as Data.Models.Metadata.Machine ?? []; - Remove(Data.Models.Metadata.Machine.TruripKey); // Process flag values if (Im1CRC is not null) @@ -329,11 +388,6 @@ namespace SabreTools.Metadata.DatItems if (Im2CRC is not null) Im2CRC = TextHelper.NormalizeCRC32(Im2CRC); - - // Handle Trurip object, if it exists - var truripItem = machine.Read(Data.Models.Metadata.Machine.TruripKey); - if (truripItem is not null) - Write(Data.Models.Metadata.Machine.TruripKey, new Trurip(truripItem)); } #endregion diff --git a/SabreTools.Metadata.DatItems/Trurip.cs b/SabreTools.Metadata.DatItems/Trurip.cs deleted file mode 100644 index 0541824c..00000000 --- a/SabreTools.Metadata.DatItems/Trurip.cs +++ /dev/null @@ -1,146 +0,0 @@ -using System; -using System.Xml.Serialization; -using Newtonsoft.Json; -using SabreTools.Data.Extensions; - -namespace SabreTools.Metadata.DatItems -{ - /// - /// Represents TruRip/EmuArc-specific values on a machine - /// - [JsonObject("trurip"), XmlRoot("trurip")] - public sealed class Trurip : ICloneable - { - #region Fields - - /// - /// Title ID - /// - [JsonProperty("titleid", DefaultValueHandling = DefaultValueHandling.Ignore)] - [XmlElement("titleid")] - public string? TitleID { get; set; } = null; - - /// - /// Machine developer - /// - [JsonProperty("developer", DefaultValueHandling = DefaultValueHandling.Ignore)] - [XmlElement("developer")] - public string? Developer { get; set; } = null; - - /// - /// Game genre - /// - [JsonProperty("genre", DefaultValueHandling = DefaultValueHandling.Ignore)] - [XmlElement("genre")] - public string? Genre { get; set; } = null; - - /// - /// Game subgenre - /// - [JsonProperty("subgenre", DefaultValueHandling = DefaultValueHandling.Ignore)] - [XmlElement("subgenre")] - public string? Subgenre { get; set; } = null; - - /// - /// Game ratings - /// - [JsonProperty("ratings", DefaultValueHandling = DefaultValueHandling.Ignore)] - [XmlElement("ratings")] - public string? Ratings { get; set; } = null; - - /// - /// Game score - /// - [JsonProperty("score", DefaultValueHandling = DefaultValueHandling.Ignore)] - [XmlElement("score")] - public string? Score { get; set; } = null; - - /// - /// Is the machine enabled - /// - [JsonProperty("enabled", DefaultValueHandling = DefaultValueHandling.Ignore)] - [XmlElement("enabled")] - public string? Enabled { get; set; } = null; // bool? - - /// - /// Does the game have a CRC check - /// - [JsonProperty("hascrc", DefaultValueHandling = DefaultValueHandling.Ignore)] - [XmlElement("hascrc")] - public bool? Crc { get; set; } = null; - - [JsonIgnore] - public bool CrcSpecified { get { return Crc is not null; } } - - /// - /// Machine relations - /// - [JsonProperty("relatedto", DefaultValueHandling = DefaultValueHandling.Ignore)] - [XmlElement("relatedto")] - public string? RelatedTo { get; set; } = null; - - #endregion - - #region Constructors - - public Trurip() { } - - public Trurip(Data.Models.Logiqx.Trurip trurip) - { - TitleID = trurip.TitleID; - Developer = trurip.Developer; - Genre = trurip.Genre; - Subgenre = trurip.Subgenre; - Ratings = trurip.Ratings; - Score = trurip.Score; - Enabled = trurip.Enabled; - Crc = trurip.CRC.AsYesNo(); - RelatedTo = trurip.RelatedTo; - } - - #endregion - - #region Cloning methods - - /// - /// Create a clone of the current object - /// - /// New object with the same values as the current one - public object Clone() - { - return new Trurip() - { - TitleID = this.TitleID, - Developer = this.Developer, - Genre = this.Genre, - Subgenre = this.Subgenre, - Ratings = this.Ratings, - Score = this.Score, - Enabled = this.Enabled, - Crc = this.Crc, - RelatedTo = this.RelatedTo, - }; - } - - /// - /// Convert to the internal Logiqx model - /// - public Data.Models.Logiqx.Trurip ConvertToLogiqx() - { - return new Data.Models.Logiqx.Trurip() - { - TitleID = this.TitleID, - Developer = this.Developer, - Genre = this.Genre, - Subgenre = this.Subgenre, - Ratings = this.Ratings, - Score = this.Score, - Enabled = this.Enabled, - CRC = this.Crc.FromYesNo(), - RelatedTo = this.RelatedTo, - }; - } - - #endregion - } -} diff --git a/SabreTools.Metadata.Filter/FilterObject.cs b/SabreTools.Metadata.Filter/FilterObject.cs index 45426cad..349344aa 100644 --- a/SabreTools.Metadata.Filter/FilterObject.cs +++ b/SabreTools.Metadata.Filter/FilterObject.cs @@ -919,12 +919,18 @@ namespace SabreTools.Metadata.Filter case Machine item when fieldName == "control": checkValue = item.Control; return true; + case Machine item when fieldName == "crc": + checkValue = item.CRC; + return true; case Machine item when fieldName == "country": checkValue = item.Country; return true; case Machine item when fieldName == "description": checkValue = item.Description; return true; + case Machine item when fieldName == "developer": + checkValue = item.Developer; + return true; case Machine item when fieldName == "dirname": checkValue = item.DirName; return true; @@ -940,6 +946,9 @@ namespace SabreTools.Metadata.Filter case Machine item when fieldName == "emulator": checkValue = item.Emulator; return true; + case Machine item when fieldName == "enabled": + checkValue = item.Enabled; + return true; case Machine item when fieldName == "extra": checkValue = item.Extra; return true; @@ -949,6 +958,9 @@ namespace SabreTools.Metadata.Filter case Machine item when fieldName == "genmsxid": checkValue = item.GenMSXID; return true; + case Machine item when fieldName == "genre": + checkValue = item.Genre; + return true; case Machine item when fieldName == "hash": checkValue = item.Hash; return true; @@ -1003,9 +1015,15 @@ namespace SabreTools.Metadata.Filter case Machine item when fieldName == "publisher": checkValue = item.Publisher; return true; + case Machine item when fieldName == "ratings": + checkValue = item.Ratings; + return true; case Machine item when fieldName == "rebuildto": checkValue = item.RebuildTo; return true; + case Machine item when fieldName == "relatedto": + checkValue = item.RelatedTo; + return true; case Machine item when fieldName == "releasenumber": checkValue = item.ReleaseNumber; return true; @@ -1024,6 +1042,12 @@ namespace SabreTools.Metadata.Filter case Machine item when fieldName == "savetype": checkValue = item.SaveType; return true; + case Machine item when fieldName == "score": + checkValue = item.Score; + return true; + case Machine item when fieldName == "source": + checkValue = item.Source; + return true; case Machine item when fieldName == "sourcefile": checkValue = item.SourceFile; return true; @@ -1033,6 +1057,9 @@ namespace SabreTools.Metadata.Filter case Machine item when fieldName == "status": checkValue = item.Status; return true; + case Machine item when fieldName == "subgenre": + checkValue = item.Subgenre; + return true; case Machine item when fieldName == "supported": checkValue = item.Supported?.AsStringValue(); return true; @@ -1042,6 +1069,9 @@ namespace SabreTools.Metadata.Filter case Machine item when fieldName == "tags": checkValue = item.Tags; return true; + case Machine item when fieldName == "titleid": + checkValue = item.TitleID; + return true; case Machine item when fieldName == "url": checkValue = item.Url; return true; diff --git a/SabreTools.Metadata/DictionaryBaseExtensions.cs b/SabreTools.Metadata/DictionaryBaseExtensions.cs index bc5ba954..caf91860 100644 --- a/SabreTools.Metadata/DictionaryBaseExtensions.cs +++ b/SabreTools.Metadata/DictionaryBaseExtensions.cs @@ -254,10 +254,14 @@ namespace SabreTools.Metadata return false; if (selfMachine.Control != otherMachine.Control) return false; + if (selfMachine.CRC != otherMachine.CRC) + return false; if (selfMachine.Country != otherMachine.Country) return false; if (selfMachine.Description != otherMachine.Description) return false; + if (selfMachine.Developer != otherMachine.Developer) + return false; if (selfMachine.DirName != otherMachine.DirName) return false; if (selfMachine.DisplayCount != otherMachine.DisplayCount) @@ -268,12 +272,16 @@ namespace SabreTools.Metadata return false; if (selfMachine.Emulator != otherMachine.Emulator) return false; + if (selfMachine.Enabled != otherMachine.Enabled) + return false; if (selfMachine.Extra != otherMachine.Extra) return false; if (selfMachine.Favorite != otherMachine.Favorite) return false; if (selfMachine.GenMSXID != otherMachine.GenMSXID) return false; + if (selfMachine.Genre != otherMachine.Genre) + return false; if (selfMachine.Hash != otherMachine.Hash) return false; if (selfMachine.History != otherMachine.History) @@ -308,8 +316,12 @@ namespace SabreTools.Metadata return false; if (selfMachine.Publisher != otherMachine.Publisher) return false; + if (selfMachine.Ratings != otherMachine.Ratings) + return false; if (selfMachine.RebuildTo != otherMachine.RebuildTo) return false; + if (selfMachine.RelatedTo != otherMachine.RelatedTo) + return false; if (selfMachine.ReleaseNumber != otherMachine.ReleaseNumber) return false; if (selfMachine.RomOf != otherMachine.RomOf) @@ -322,18 +334,26 @@ namespace SabreTools.Metadata return false; if (selfMachine.SaveType != otherMachine.SaveType) return false; + if (selfMachine.Score != otherMachine.Score) + return false; + if (selfMachine.Source != otherMachine.Source) + return false; if (selfMachine.SourceFile != otherMachine.SourceFile) return false; if (selfMachine.SourceRom != otherMachine.SourceRom) return false; if (selfMachine.Status != otherMachine.Status) return false; + if (selfMachine.Subgenre != otherMachine.Subgenre) + return false; if (selfMachine.Supported != otherMachine.Supported) return false; if (selfMachine.System != otherMachine.System) return false; if (selfMachine.Tags != otherMachine.Tags) return false; + if (selfMachine.TitleID != otherMachine.TitleID) + return false; if (selfMachine.Url != otherMachine.Url) return false; if (selfMachine.Year != otherMachine.Year) diff --git a/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs b/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs index 7d474dfe..aeea4996 100644 --- a/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs @@ -57,57 +57,46 @@ namespace SabreTools.Serialization.CrossModel }; string? headerVal = item.ReadString(Data.Models.Metadata.Header.HeaderKey); - Data.Models.Metadata.MergingFlag forceMerging = item.ForceMerging; - Data.Models.Metadata.NodumpFlag forceNodump = item.ForceNodump; - Data.Models.Metadata.PackingFlag forcePacking = item.ForcePacking; if (headerVal is not null - || forceMerging is not Data.Models.Metadata.MergingFlag.None - || forceNodump is not Data.Models.Metadata.NodumpFlag.None - || forcePacking is not Data.Models.Metadata.PackingFlag.None) + || item.ForceMerging is not Data.Models.Metadata.MergingFlag.None + || item.ForceNodump is not Data.Models.Metadata.NodumpFlag.None + || item.ForcePacking is not Data.Models.Metadata.PackingFlag.None) { header.ClrMamePro = new Data.Models.Logiqx.ClrMamePro(); if (headerVal is not null) header.ClrMamePro.Header = headerVal; - if (forceMerging is not Data.Models.Metadata.MergingFlag.None) - header.ClrMamePro.ForceMerging = forceMerging; - if (forceNodump is not Data.Models.Metadata.NodumpFlag.None) - header.ClrMamePro.ForceNodump = forceNodump; - if (forcePacking is not Data.Models.Metadata.PackingFlag.None) - header.ClrMamePro.ForcePacking = forcePacking; + if (item.ForceMerging is not Data.Models.Metadata.MergingFlag.None) + header.ClrMamePro.ForceMerging = item.ForceMerging; + if (item.ForceNodump is not Data.Models.Metadata.NodumpFlag.None) + header.ClrMamePro.ForceNodump = item.ForceNodump; + if (item.ForcePacking is not Data.Models.Metadata.PackingFlag.None) + header.ClrMamePro.ForcePacking = item.ForcePacking; } - string? plugin = item.Plugin; - Data.Models.Metadata.MergingFlag romMode = item.RomMode; - Data.Models.Metadata.MergingFlag biosMode = item.BiosMode; - Data.Models.Metadata.MergingFlag sampleMode = item.SampleMode; - bool? lockRomMode = item.LockRomMode; - bool? lockBiosMode = item.LockBiosMode; - bool? lockSampleMode = item.LockSampleMode; - - if (plugin is not null - || romMode is not Data.Models.Metadata.MergingFlag.None - || biosMode is not Data.Models.Metadata.MergingFlag.None - || sampleMode is not Data.Models.Metadata.MergingFlag.None - || lockRomMode is not null - || lockBiosMode is not null - || lockSampleMode is not null) + if (item.Plugin is not null + || item.RomMode is not Data.Models.Metadata.MergingFlag.None + || item.BiosMode is not Data.Models.Metadata.MergingFlag.None + || item.SampleMode is not Data.Models.Metadata.MergingFlag.None + || item.LockRomMode is not null + || item.LockBiosMode is not null + || item.LockSampleMode is not null) { header.RomCenter = new Data.Models.Logiqx.RomCenter(); - if (plugin is not null) - header.RomCenter.Plugin = plugin; - if (romMode is not Data.Models.Metadata.MergingFlag.None) - header.RomCenter.RomMode = romMode; - if (biosMode is not Data.Models.Metadata.MergingFlag.None) - header.RomCenter.BiosMode = biosMode; - if (sampleMode is not Data.Models.Metadata.MergingFlag.None) - header.RomCenter.SampleMode = sampleMode; - if (lockRomMode is not null) - header.RomCenter.LockRomMode = lockRomMode; - if (lockBiosMode is not null) - header.RomCenter.LockBiosMode = lockBiosMode; - if (lockSampleMode is not null) - header.RomCenter.LockSampleMode = lockSampleMode; + if (item.Plugin is not null) + header.RomCenter.Plugin = item.Plugin; + if (item.RomMode is not Data.Models.Metadata.MergingFlag.None) + header.RomCenter.RomMode = item.RomMode; + if (item.BiosMode is not Data.Models.Metadata.MergingFlag.None) + header.RomCenter.BiosMode = item.BiosMode; + if (item.SampleMode is not Data.Models.Metadata.MergingFlag.None) + header.RomCenter.SampleMode = item.SampleMode; + if (item.LockRomMode is not null) + header.RomCenter.LockRomMode = item.LockRomMode; + if (item.LockBiosMode is not null) + header.RomCenter.LockBiosMode = item.LockBiosMode; + if (item.LockSampleMode is not null) + header.RomCenter.LockSampleMode = item.LockSampleMode; } return header; @@ -140,9 +129,47 @@ namespace SabreTools.Serialization.CrossModel gameBase.Publisher = item.Publisher; gameBase.Category = item.ReadStringArray(Data.Models.Metadata.Machine.CategoryKey); - var trurip = item.Read(Data.Models.Metadata.Machine.TruripKey); - if (trurip is not null) - gameBase.Trurip = trurip; + if (item.TitleID is not null + || item.Developer is not null + || item.Genre is not null + || item.Subgenre is not null + || item.Ratings is not null + || item.Score is not null + || item.Enabled is not null + || item.CRC is not null + || item.Source is not null + || item.RelatedTo is not null) + { + gameBase.Trurip = new Trurip(); + if (item.TitleID is not null) + gameBase.Trurip.TitleID = item.TitleID; + if (item.Publisher is not null) + gameBase.Trurip.Publisher = item.Publisher; + if (item.Developer is not null) + gameBase.Trurip.Developer = item.Developer; + if (item.Year is not null) + gameBase.Trurip.Year = item.Year; + if (item.Genre is not null) + gameBase.Trurip.Genre = item.Genre; + if (item.Subgenre is not null) + gameBase.Trurip.Subgenre = item.Subgenre; + if (item.Ratings is not null) + gameBase.Trurip.Ratings = item.Ratings; + if (item.Score is not null) + gameBase.Trurip.Score = item.Score; + if (item.Players is not null) + gameBase.Trurip.Players = item.Players; + if (item.Enabled is not null) + gameBase.Trurip.Enabled = item.Enabled; + if (item.CRC is not null) + gameBase.Trurip.CRC = item.CRC; + if (item.Source is not null) + gameBase.Trurip.Source = item.Source; + if (item.CloneOf is not null) + gameBase.Trurip.CloneOf = item.CloneOf; + if (item.RelatedTo is not null) + gameBase.Trurip.RelatedTo = item.RelatedTo; + } var releases = item.Release; if (releases is not null && releases.Length > 0) diff --git a/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs b/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs index 12af46bd..45e4f08d 100644 --- a/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs @@ -126,26 +126,36 @@ namespace SabreTools.Serialization.CrossModel var machine = new Data.Models.Metadata.Machine { - Name = machineName, - SourceFile = item.SourceFile, + Board = item.Board, + [Data.Models.Metadata.Machine.CategoryKey] = item.Category, + CloneOf = item.CloneOf ?? item.Trurip?.CloneOf, + CloneOfId = item.CloneOfId, + [Data.Models.Metadata.Machine.CommentKey] = item.Comment, + CRC = item.Trurip?.CRC, + Description = item.Description, + Developer = item.Trurip?.Developer, + Enabled = item.Trurip?.Enabled, + Genre = item.Trurip?.Genre, + Id = item.Id, IsBios = item.IsBios, IsDevice = item.IsDevice, IsMechanical = item.IsMechanical, - CloneOf = item.CloneOf, - RomOf = item.RomOf, - SampleOf = item.SampleOf, - Board = item.Board, - RebuildTo = item.RebuildTo, - Id = item.Id, - CloneOfId = item.CloneOfId, - Runnable = item.Runnable, - [Data.Models.Metadata.Machine.CommentKey] = item.Comment, - Description = item.Description, - Year = item.Year, Manufacturer = item.Manufacturer, - Publisher = item.Publisher, - [Data.Models.Metadata.Machine.CategoryKey] = item.Category, - [Data.Models.Metadata.Machine.TruripKey] = item.Trurip, + Name = machineName, + Players = item.Trurip?.Players, + Publisher = item.Publisher ?? item.Trurip?.Publisher, + Ratings = item.Trurip?.Ratings, + RebuildTo = item.RebuildTo, + RelatedTo = item.Trurip?.RelatedTo, + RomOf = item.RomOf, + Runnable = item.Runnable, + SampleOf = item.SampleOf, + Score = item.Trurip?.Score, + Source = item.Trurip?.Source, + SourceFile = item.SourceFile, + Subgenre = item.Trurip?.Subgenre, + TitleID = item.Trurip?.TitleID, + Year = item.Year ?? item.Trurip?.Year, }; if (item.Release is not null && item.Release.Length > 0) From b8d4adf0e7dbf374de49654ff9a757a46e4bbe3a Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sat, 4 Apr 2026 15:21:16 -0400 Subject: [PATCH 083/142] Clean up machine properties --- SabreTools.Data.Models/Metadata/Machine.cs | 52 +++++++++------------- 1 file changed, 20 insertions(+), 32 deletions(-) diff --git a/SabreTools.Data.Models/Metadata/Machine.cs b/SabreTools.Data.Models/Metadata/Machine.cs index 1fddb4bd..72c78f16 100644 --- a/SabreTools.Data.Models/Metadata/Machine.cs +++ b/SabreTools.Data.Models/Metadata/Machine.cs @@ -29,10 +29,14 @@ namespace SabreTools.Data.Models.Metadata public string? Control { get; set; } + public string? CRC { get; set; } + public string? Country { get; set; } public string? Description { get; set; } + public string? Developer { get; set; } + public Device[]? Device { get; set; } public DeviceRef[]? DeviceRef { get; set; } @@ -57,6 +61,8 @@ namespace SabreTools.Data.Models.Metadata public string? Emulator { get; set; } + public string? Enabled { get; set; } + public string? Extra { get; set; } public string? Favorite { get; set; } @@ -65,6 +71,8 @@ namespace SabreTools.Data.Models.Metadata public string? GenMSXID { get; set; } + public string? Genre { get; set; } + public string? Hash { get; set; } public string? History { get; set; } @@ -116,8 +124,12 @@ namespace SabreTools.Data.Models.Metadata public RamOption[]? RamOption { get; set; } + public string? Ratings { get; set; } + public string? RebuildTo { get; set; } + public string? RelatedTo { get; set; } + public Release[]? Release { get; set; } public string? ReleaseNumber { get; set; } @@ -137,6 +149,8 @@ namespace SabreTools.Data.Models.Metadata public string? SaveType { get; set; } + public string? Score { get; set; } + public SharedFeat[]? SharedFeat { get; set; } public Slot[]? Slot { get; set; } @@ -145,12 +159,16 @@ namespace SabreTools.Data.Models.Metadata public Sound? Sound { get; set; } + public string? Source { get; set; } + public string? SourceFile { get; set; } public string? SourceRom { get; set; } public string? Status { get; set; } + public string? Subgenre { get; set; } + /// (yes|partial|no) "yes" public Supported? Supported { get; set; } @@ -158,6 +176,8 @@ namespace SabreTools.Data.Models.Metadata public string? Tags { get; set; } + public string? TitleID { get; set; } + public string? Url { get; set; } public Video[]? Video { get; set; } @@ -166,38 +186,6 @@ namespace SabreTools.Data.Models.Metadata #endregion - #region From Trurip - - // public string? CloneOf { get; set; } - - public string? CRC { get; set; } - - public string? Developer { get; set; } - - public string? Enabled { get; set; } - - public string? Genre { get; set; } - - // public string? Players { get; set; } - - // public string? Publisher { get; set; } - - public string? Ratings { get; set; } - - public string? RelatedTo { get; set; } - - public string? Score { get; set; } - - public string? Source { get; set; } - - public string? Subgenre { get; set; } - - public string? TitleID { get; set; } - - // public string? Year { get; set; } - - #endregion - #region Keys /// string, string[] From 7a9f5d1fa1fb8ec58f6528ecacdb6d074d93b0c4 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sat, 4 Apr 2026 16:06:07 -0400 Subject: [PATCH 084/142] Machine is now propertyful --- .../MetadataExtensions.cs | 64 +-- SabreTools.Data.Models/Metadata/Machine.cs | 445 +++++++++++++++++- .../DatFileTests.FromMetadata.cs | 16 +- .../DatFileTests.ToMetadata.cs | 12 +- .../DatFileTests.cs | 22 +- .../DatFile.FromMetadata.cs | 2 +- SabreTools.Metadata.DatFiles/DatFile.cs | 2 +- SabreTools.Metadata.DatItems/Machine.cs | 43 +- SabreTools.Metadata.Filter/FilterObject.cs | 6 + .../DictionaryBaseExtensions.cs | 122 +---- .../AttractMode.Deserializer.cs | 2 +- .../AttractMode.Serializer.cs | 2 +- .../ClrMamePro.Deserializer.cs | 2 +- .../ClrMamePro.Serializer.cs | 2 +- .../Logiqx.Deserializer.cs | 4 +- .../Logiqx.Serializer.cs | 4 +- .../OfflineList.Deserializer.cs | 2 +- .../OfflineList.Serializer.cs | 2 +- 18 files changed, 536 insertions(+), 218 deletions(-) diff --git a/SabreTools.Data.Extensions/MetadataExtensions.cs b/SabreTools.Data.Extensions/MetadataExtensions.cs index c94edef1..980fc1cb 100644 --- a/SabreTools.Data.Extensions/MetadataExtensions.cs +++ b/SabreTools.Data.Extensions/MetadataExtensions.cs @@ -73,6 +73,8 @@ namespace SabreTools.Data.Extensions return input.Clone() as Input; else if (self is Instance instance) return instance.Clone() as Instance; + else if (self is Machine machine) + return machine.Clone() as Machine; else if (self is Media media) return media.Clone() as Media; else if (self is Original original) @@ -150,68 +152,6 @@ namespace SabreTools.Data.Extensions cloneHeader.Url = selfHeader.Url; cloneHeader.Version = selfHeader.Version; } - else if (self is Machine selfMachine && clone is Machine cloneMachine) - { - cloneMachine.Board = selfMachine.Board; - cloneMachine.Buttons = selfMachine.Buttons; - cloneMachine.CloneOf = selfMachine.CloneOf; - cloneMachine.CloneOfId = selfMachine.CloneOfId; - cloneMachine.Company = selfMachine.Company; - cloneMachine.Control = selfMachine.Control; - cloneMachine.Country = selfMachine.Country; - cloneMachine.CRC = selfMachine.CRC; - cloneMachine.Description = selfMachine.Description; - cloneMachine.Developer = selfMachine.Developer; - cloneMachine.DirName = selfMachine.DirName; - cloneMachine.DisplayCount = selfMachine.DisplayCount; - cloneMachine.DisplayType = selfMachine.DisplayType; - cloneMachine.DuplicateID = selfMachine.DuplicateID; - cloneMachine.Emulator = selfMachine.Emulator; - cloneMachine.Enabled = selfMachine.Enabled; - cloneMachine.Extra = selfMachine.Extra; - cloneMachine.Favorite = selfMachine.Favorite; - cloneMachine.GenMSXID = selfMachine.GenMSXID; - cloneMachine.Genre = selfMachine.Genre; - cloneMachine.Hash = selfMachine.Hash; - cloneMachine.History = selfMachine.History; - cloneMachine.Id = selfMachine.Id; - cloneMachine.Im1CRC = selfMachine.Im1CRC; - cloneMachine.Im2CRC = selfMachine.Im2CRC; - cloneMachine.ImageNumber = selfMachine.ImageNumber; - cloneMachine.IsBios = selfMachine.IsBios; - cloneMachine.IsDevice = selfMachine.IsDevice; - cloneMachine.IsMechanical = selfMachine.IsMechanical; - cloneMachine.Language = selfMachine.Language; - cloneMachine.Location = selfMachine.Location; - cloneMachine.Manufacturer = selfMachine.Manufacturer; - cloneMachine.Name = selfMachine.Name; - cloneMachine.Notes = selfMachine.Notes; - cloneMachine.PlayedCount = selfMachine.PlayedCount; - cloneMachine.PlayedTime = selfMachine.PlayedTime; - cloneMachine.Players = selfMachine.Players; - cloneMachine.Publisher = selfMachine.Publisher; - cloneMachine.Ratings = selfMachine.Ratings; - cloneMachine.RebuildTo = selfMachine.RebuildTo; - cloneMachine.RelatedTo = selfMachine.RelatedTo; - cloneMachine.ReleaseNumber = selfMachine.ReleaseNumber; - cloneMachine.RomOf = selfMachine.RomOf; - cloneMachine.Rotation = selfMachine.Rotation; - cloneMachine.Runnable = selfMachine.Runnable; - cloneMachine.SampleOf = selfMachine.SampleOf; - cloneMachine.SaveType = selfMachine.SaveType; - cloneMachine.Score = selfMachine.Score; - cloneMachine.Source = selfMachine.Source; - cloneMachine.SourceFile = selfMachine.SourceFile; - cloneMachine.SourceRom = selfMachine.SourceRom; - cloneMachine.Status = selfMachine.Status; - cloneMachine.Subgenre = selfMachine.Subgenre; - cloneMachine.Supported = selfMachine.Supported; - cloneMachine.System = selfMachine.System; - cloneMachine.Tags = selfMachine.Tags; - cloneMachine.TitleID = selfMachine.TitleID; - cloneMachine.Url = selfMachine.Url; - cloneMachine.Year = selfMachine.Year; - } // Loop through and clone per type foreach (string key in self.Keys) diff --git a/SabreTools.Data.Models/Metadata/Machine.cs b/SabreTools.Data.Models/Metadata/Machine.cs index 72c78f16..6c4a3ecd 100644 --- a/SabreTools.Data.Models/Metadata/Machine.cs +++ b/SabreTools.Data.Models/Metadata/Machine.cs @@ -1,9 +1,11 @@ +using System; + namespace SabreTools.Data.Models.Metadata { /// /// Format-agnostic representation of game, machine, and set data /// - public class Machine : DictionaryBase + public class Machine : DictionaryBase, ICloneable, IEquatable { #region Properties @@ -17,12 +19,16 @@ namespace SabreTools.Data.Models.Metadata public string? Buttons { get; set; } + public string[]? Category { get; set; } + public Chip[]? Chip { get; set; } public string? CloneOf { get; set; } public string? CloneOfId { get; set; } + public string[]? Comment { get; set; } + public string? Company { get; set; } public Configuration[]? Configuration { get; set; } @@ -186,14 +192,439 @@ namespace SabreTools.Data.Models.Metadata #endregion - #region Keys + /// + public object Clone() + { + var obj = new Machine(); - /// string, string[] - public const string CategoryKey = "category"; + if (Adjuster is not null) + obj.Adjuster = Array.ConvertAll(Adjuster, i => (Adjuster)i.Clone()); + if (Archive is not null) + obj.Archive = Array.ConvertAll(Archive, i => (Archive)i.Clone()); + if (BiosSet is not null) + obj.BiosSet = Array.ConvertAll(BiosSet, i => (BiosSet)i.Clone()); + obj.Board = Board; + obj.Buttons = Buttons; + if (Category is not null) + obj.Category = Array.ConvertAll(Category, i => i); + if (Chip is not null) + obj.Chip = Array.ConvertAll(Chip, i => (Chip)i.Clone()); + obj.CloneOf = CloneOf; + obj.CloneOfId = CloneOfId; + if (Comment is not null) + obj.Comment = Array.ConvertAll(Comment, i => i); + obj.Company = Company; + if (Configuration is not null) + obj.Configuration = Array.ConvertAll(Configuration, i => (Configuration)i.Clone()); + obj.Control = Control; + obj.CRC = CRC; + obj.Country = Country; + obj.Description = Description; + obj.Developer = Developer; + if (Device is not null) + obj.Device = Array.ConvertAll(Device, i => (Device)i.Clone()); + if (DeviceRef is not null) + obj.DeviceRef = Array.ConvertAll(DeviceRef, i => (DeviceRef)i.Clone()); + if (DipSwitch is not null) + obj.DipSwitch = Array.ConvertAll(DipSwitch, i => (DipSwitch)i.Clone()); + obj.DirName = DirName; + if (Disk is not null) + obj.Disk = Array.ConvertAll(Disk, i => (Disk)i.Clone()); + if (Display is not null) + obj.Display = Array.ConvertAll(Display, i => (Display)i.Clone()); + obj.DisplayCount = DisplayCount; + obj.DisplayType = DisplayType; + if (Driver is not null) + obj.Driver = (Driver)Driver.Clone(); + if (Dump is not null) + obj.Dump = Array.ConvertAll(Dump, i => (Dump)i.Clone()); + obj.DuplicateID = DuplicateID; + obj.Emulator = Emulator; + obj.Enabled = Enabled; + obj.Extra = Extra; + obj.Favorite = Favorite; + if (Feature is not null) + obj.Feature = Array.ConvertAll(Feature, i => (Feature)i.Clone()); + obj.GenMSXID = GenMSXID; + obj.Genre = Genre; + obj.Hash = Hash; + obj.History = History; + obj.Id = Id; + obj.Im1CRC = Im1CRC; + obj.Im2CRC = Im2CRC; + obj.ImageNumber = ImageNumber; + if (Info is not null) + obj.Info = Array.ConvertAll(Info, i => (Info)i.Clone()); + if (Input is not null) + obj.Input = (Input)Input.Clone(); + obj.IsBios = IsBios; + obj.IsDevice = IsDevice; + obj.IsMechanical = IsMechanical; + obj.Language = Language; + obj.Location = Location; + obj.Manufacturer = Manufacturer; + if (Media is not null) + obj.Media = Array.ConvertAll(Media, i => (Media)i.Clone()); + obj.Name = Name; + obj.Notes = Notes; + if (Part is not null) + obj.Part = Array.ConvertAll(Part, i => (Part)i.Clone()); + obj.PlayedCount = PlayedCount; + obj.PlayedTime = PlayedTime; + obj.Players = Players; + if (Port is not null) + obj.Port = Array.ConvertAll(Port, i => (Port)i.Clone()); + obj.Publisher = Publisher; + if (RamOption is not null) + obj.RamOption = Array.ConvertAll(RamOption, i => (RamOption)i.Clone()); + obj.Ratings = Ratings; + obj.RebuildTo = RebuildTo; + obj.RelatedTo = RelatedTo; + if (Release is not null) + obj.Release = Array.ConvertAll(Release, i => (Release)i.Clone()); + obj.ReleaseNumber = ReleaseNumber; + if (Rom is not null) + obj.Rom = Array.ConvertAll(Rom, i => (Rom)i.Clone()); + obj.RomOf = RomOf; + obj.Rotation = Rotation; + obj.Runnable = Runnable; + if (Sample is not null) + obj.Sample = Array.ConvertAll(Sample, i => (Sample)i.Clone()); + obj.SampleOf = SampleOf; + obj.SaveType = SaveType; + obj.Score = Score; + if (SharedFeat is not null) + obj.SharedFeat = Array.ConvertAll(SharedFeat, i => (SharedFeat)i.Clone()); + if (Slot is not null) + obj.Slot = Array.ConvertAll(Slot, i => (Slot)i.Clone()); + if (SoftwareList is not null) + obj.SoftwareList = Array.ConvertAll(SoftwareList, i => (SoftwareList)i.Clone()); + if (Sound is not null) + obj.Sound = (Sound)Sound.Clone(); + obj.Source = Source; + obj.SourceFile = SourceFile; + obj.SourceRom = SourceRom; + obj.Status = Status; + obj.Subgenre = Subgenre; + obj.Supported = Supported; + obj.System = System; + obj.Tags = Tags; + obj.TitleID = TitleID; + obj.Url = Url; + if (Video is not null) + obj.Video = Array.ConvertAll(Video, i => (Video)i.Clone()); + obj.Year = Year; - /// string, string[] - public const string CommentKey = "comment"; + return obj; + } - #endregion + /// + public bool Equals(Machine? other) + { + // Null never matches + if (other is null) + return false; + + // Properties + if ((Board is null) ^ (other.Board is null)) + return false; + else if (Board is not null && !Board.Equals(other.Board, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((Buttons is null) ^ (other.Buttons is null)) + return false; + else if (Buttons is not null && !Buttons.Equals(other.Buttons, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((CloneOf is null) ^ (other.CloneOf is null)) + return false; + else if (CloneOf is not null && !CloneOf.Equals(other.CloneOf, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((CloneOfId is null) ^ (other.CloneOfId is null)) + return false; + else if (CloneOfId is not null && !CloneOfId.Equals(other.CloneOfId, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((Company is null) ^ (other.Company is null)) + return false; + else if (Company is not null && !Company.Equals(other.Company, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((Control is null) ^ (other.Control is null)) + return false; + else if (Control is not null && !Control.Equals(other.Control, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((CRC is null) ^ (other.CRC is null)) + return false; + else if (CRC is not null && !CRC.Equals(other.CRC, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((Country is null) ^ (other.Country is null)) + return false; + else if (Country is not null && !Country.Equals(other.Country, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((Description is null) ^ (other.Description is null)) + return false; + else if (Description is not null && !Description.Equals(other.Description, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((Developer is null) ^ (other.Developer is null)) + return false; + else if (Developer is not null && !Developer.Equals(other.Developer, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((DirName is null) ^ (other.DirName is null)) + return false; + else if (DirName is not null && !DirName.Equals(other.DirName, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((DisplayCount is null) ^ (other.DisplayCount is null)) + return false; + else if (DisplayCount is not null && !DisplayCount.Equals(other.DisplayCount, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((DisplayType is null) ^ (other.DisplayType is null)) + return false; + else if (DisplayType is not null && !DisplayType.Equals(other.DisplayType, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((DuplicateID is null) ^ (other.DuplicateID is null)) + return false; + else if (DuplicateID is not null && !DuplicateID.Equals(other.DuplicateID, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((Emulator is null) ^ (other.Emulator is null)) + return false; + else if (Emulator is not null && !Emulator.Equals(other.Emulator, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((Enabled is null) ^ (other.Enabled is null)) + return false; + else if (Enabled is not null && !Enabled.Equals(other.Enabled, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((Extra is null) ^ (other.Extra is null)) + return false; + else if (Extra is not null && !Extra.Equals(other.Extra, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((Favorite is null) ^ (other.Favorite is null)) + return false; + else if (Favorite is not null && !Favorite.Equals(other.Favorite, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((GenMSXID is null) ^ (other.GenMSXID is null)) + return false; + else if (GenMSXID is not null && !GenMSXID.Equals(other.GenMSXID, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((Genre is null) ^ (other.Genre is null)) + return false; + else if (Genre is not null && !Genre.Equals(other.Genre, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((Hash is null) ^ (other.Hash is null)) + return false; + else if (Hash is not null && !Hash.Equals(other.Hash, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((History is null) ^ (other.History is null)) + return false; + else if (History is not null && !History.Equals(other.History, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((Id is null) ^ (other.Id is null)) + return false; + else if (Id is not null && !Id.Equals(other.Id, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((Im1CRC is null) ^ (other.Im1CRC is null)) + return false; + else if (Im1CRC is not null && !Im1CRC.Equals(other.Im1CRC, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((Im2CRC is null) ^ (other.Im2CRC is null)) + return false; + else if (Im2CRC is not null && !Im2CRC.Equals(other.Im2CRC, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((ImageNumber is null) ^ (other.ImageNumber is null)) + return false; + else if (ImageNumber is not null && !ImageNumber.Equals(other.ImageNumber, StringComparison.OrdinalIgnoreCase)) + return false; + + if (IsBios != other.IsBios) + return false; + + if (IsDevice != other.IsDevice) + return false; + + if (IsMechanical != other.IsMechanical) + return false; + + if ((Language is null) ^ (other.Language is null)) + return false; + else if (Language is not null && !Language.Equals(other.Language, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((Location is null) ^ (other.Location is null)) + return false; + else if (Location is not null && !Location.Equals(other.Location, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((Manufacturer is null) ^ (other.Manufacturer is null)) + return false; + else if (Manufacturer is not null && !Manufacturer.Equals(other.Manufacturer, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((Notes is null) ^ (other.Notes is null)) + return false; + else if (Notes is not null && !Notes.Equals(other.Notes, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((PlayedCount is null) ^ (other.PlayedCount is null)) + return false; + else if (PlayedCount is not null && !PlayedCount.Equals(other.PlayedCount, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((PlayedTime is null) ^ (other.PlayedTime is null)) + return false; + else if (PlayedTime is not null && !PlayedTime.Equals(other.PlayedTime, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((Players is null) ^ (other.Players is null)) + return false; + else if (Players is not null && !Players.Equals(other.Players, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((Publisher is null) ^ (other.Publisher is null)) + return false; + else if (Publisher is not null && !Publisher.Equals(other.Publisher, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((Ratings is null) ^ (other.Ratings is null)) + return false; + else if (Ratings is not null && !Ratings.Equals(other.Ratings, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((RebuildTo is null) ^ (other.RebuildTo is null)) + return false; + else if (RebuildTo is not null && !RebuildTo.Equals(other.RebuildTo, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((RelatedTo is null) ^ (other.RelatedTo is null)) + return false; + else if (RelatedTo is not null && !RelatedTo.Equals(other.RelatedTo, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((ReleaseNumber is null) ^ (other.ReleaseNumber is null)) + return false; + else if (ReleaseNumber is not null && !ReleaseNumber.Equals(other.ReleaseNumber, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((RomOf is null) ^ (other.RomOf is null)) + return false; + else if (RomOf is not null && !RomOf.Equals(other.RomOf, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((Rotation is null) ^ (other.Rotation is null)) + return false; + else if (Rotation is not null && !Rotation.Equals(other.Rotation, StringComparison.OrdinalIgnoreCase)) + return false; + + if (Runnable != other.Runnable) + return false; + + if ((SampleOf is null) ^ (other.SampleOf is null)) + return false; + else if (SampleOf is not null && !SampleOf.Equals(other.SampleOf, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((SaveType is null) ^ (other.SaveType is null)) + return false; + else if (SaveType is not null && !SaveType.Equals(other.SaveType, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((Score is null) ^ (other.Score is null)) + return false; + else if (Score is not null && !Score.Equals(other.Score, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((Source is null) ^ (other.Source is null)) + return false; + else if (Source is not null && !Source.Equals(other.Source, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((SourceFile is null) ^ (other.SourceFile is null)) + return false; + else if (SourceFile is not null && !SourceFile.Equals(other.SourceFile, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((SourceRom is null) ^ (other.SourceRom is null)) + return false; + else if (SourceRom is not null && !SourceRom.Equals(other.SourceRom, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((Status is null) ^ (other.Status is null)) + return false; + else if (Status is not null && !Status.Equals(other.Status, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((Subgenre is null) ^ (other.Subgenre is null)) + return false; + else if (Subgenre is not null && !Subgenre.Equals(other.Subgenre, StringComparison.OrdinalIgnoreCase)) + return false; + + if (Supported != other.Supported) + return false; + + if ((System is null) ^ (other.System is null)) + return false; + else if (System is not null && !System.Equals(other.System, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((Tags is null) ^ (other.Tags is null)) + return false; + else if (Tags is not null && !Tags.Equals(other.Tags, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((TitleID is null) ^ (other.TitleID is null)) + return false; + else if (TitleID is not null && !TitleID.Equals(other.TitleID, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((Url is null) ^ (other.Url is null)) + return false; + else if (Url is not null && !Url.Equals(other.Url, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((Year is null) ^ (other.Year is null)) + return false; + else if (Year is not null && !Year.Equals(other.Year, StringComparison.OrdinalIgnoreCase)) + return false; + + // Sub-items + if ((Driver is null) ^ (other.Driver is null)) + return false; + else if (Driver is not null && other.Driver is not null && Driver.Equals(other.Driver)) + return false; + + if ((Input is null) ^ (other.Input is null)) + return false; + else if (Input is not null && other.Input is not null && Input.Equals(other.Input)) + return false; + + if ((Sound is null) ^ (other.Sound is null)) + return false; + else if (Sound is not null && other.Sound is not null && Sound.Equals(other.Sound)) + return false; + + // TODO: Figure out how to properly check arrays + + return true; + } } } diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs index a8d6e6fa..78ba90bc 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs @@ -255,11 +255,11 @@ namespace SabreTools.Metadata.DatFiles.Test BiosSet = [CreateMetadataBiosSet()], Board = "board", Buttons = "buttons", - [Data.Models.Metadata.Machine.CategoryKey] = "category", + Category = ["category"], Chip = [CreateMetadataChip()], CloneOf = "cloneof", CloneOfId = "cloneofid", - [Data.Models.Metadata.Machine.CommentKey] = "comment", + Comment = ["comment"], Company = "company", Configuration = [CreateMetadataConfiguration()], Control = "control", @@ -1057,10 +1057,8 @@ namespace SabreTools.Metadata.DatFiles.Test { Assert.Equal("board", machine.Board); Assert.Equal("buttons", machine.Buttons); - Assert.Equal("category", machine.ReadString(Data.Models.Metadata.Machine.CategoryKey)); Assert.Equal("cloneof", machine.CloneOf); Assert.Equal("cloneofid", machine.CloneOfId); - Assert.Equal("comment", machine.ReadString(Data.Models.Metadata.Machine.CommentKey)); Assert.Equal("company", machine.Company); Assert.Equal("control", machine.Control); Assert.Equal("country", machine.Country); @@ -1114,6 +1112,16 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("tags", machine.Tags); Assert.Equal("titleid", machine.TitleID); Assert.Equal("year", machine.Year); + + string[]? categories = machine.Category; + Assert.NotNull(categories); + string? category = Assert.Single(categories); + Assert.Equal("category", category); + + string[]? comments = machine.Comment; + Assert.NotNull(comments); + string? comment = Assert.Single(comments); + Assert.Equal("comment", comment); } #pragma warning restore IDE0051 diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs index c7fc5e49..5b9af6fe 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs @@ -401,10 +401,8 @@ namespace SabreTools.Metadata.DatFiles.Test { Assert.Equal("board", machine.Board); Assert.Equal("buttons", machine.Buttons); - Assert.Equal("category", machine.ReadString(Data.Models.Metadata.Machine.CategoryKey)); Assert.Equal("cloneof", machine.CloneOf); Assert.Equal("cloneofid", machine.CloneOfId); - Assert.Equal("comment", machine.ReadString(Data.Models.Metadata.Machine.CommentKey)); Assert.Equal("company", machine.Company); Assert.Equal("control", machine.Control); Assert.Equal("country", machine.Country); @@ -474,11 +472,21 @@ namespace SabreTools.Metadata.DatFiles.Test Data.Models.Metadata.BiosSet biosSet = Assert.Single(biosSets); ValidateMetadataBiosSet(biosSet); + string[]? categories = machine.Category; + Assert.NotNull(categories); + string? category = Assert.Single(categories); + Assert.Equal("category", category); + Data.Models.Metadata.Chip[]? chips = machine.Chip; Assert.NotNull(chips); Data.Models.Metadata.Chip chip = Assert.Single(chips); ValidateMetadataChip(chip); + string[]? comments = machine.Comment; + Assert.NotNull(comments); + string? comment = Assert.Single(comments); + Assert.Equal("comment", comment); + Data.Models.Metadata.Configuration[]? configurations = machine.Configuration; Assert.NotNull(configurations); Data.Models.Metadata.Configuration configuration = Assert.Single(configurations); diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.cs index 235002b2..954dd0b8 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.cs @@ -1361,11 +1361,11 @@ namespace SabreTools.Metadata.DatFiles.Test Machine machine = new Machine { - Name = "machine", + Category = ["category"], Manufacturer = "manufacturer", - Publisher = "publisher" + Name = "machine", + Publisher = "publisher", }; - machine.Write(Data.Models.Metadata.Machine.CategoryKey, "category"); DatItem item = new Rom { @@ -1398,11 +1398,11 @@ namespace SabreTools.Metadata.DatFiles.Test Machine machine = new Machine { - Name = "machine", + Category = ["category"], Manufacturer = "manufacturer", + Name = "machine", Publisher = "publisher" }; - machine.Write(Data.Models.Metadata.Machine.CategoryKey, "category"); DatItem item = new Disk { @@ -1423,11 +1423,11 @@ namespace SabreTools.Metadata.DatFiles.Test Machine machine = new Machine { - Name = "machine", + Category = ["category"], Manufacturer = "manufacturer", + Name = "machine", Publisher = "publisher" }; - machine.Write(Data.Models.Metadata.Machine.CategoryKey, "category"); DatItem item = new DatItems.Formats.File { @@ -1452,11 +1452,11 @@ namespace SabreTools.Metadata.DatFiles.Test Machine machine = new Machine { - Name = "machine", + Category = ["category"], Manufacturer = "manufacturer", + Name = "machine", Publisher = "publisher" }; - machine.Write(Data.Models.Metadata.Machine.CategoryKey, "category"); DatItem item = new Media { @@ -1479,11 +1479,11 @@ namespace SabreTools.Metadata.DatFiles.Test Machine machine = new Machine { - Name = "machine", + Category = ["category"], Manufacturer = "manufacturer", + Name = "machine", Publisher = "publisher" }; - machine.Write(Data.Models.Metadata.Machine.CategoryKey, "category"); DatItem item = new Rom { diff --git a/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs b/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs index cd06ac80..a9781137 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs @@ -225,7 +225,7 @@ namespace SabreTools.Metadata.DatFiles FilterRunner? filterRunner) { // If the machine is invalid, we can't do anything - if (item is null || item.Count == 0) + if (item is null) return; // If the machine doesn't pass the filter diff --git a/SabreTools.Metadata.DatFiles/DatFile.cs b/SabreTools.Metadata.DatFiles/DatFile.cs index c3db7efd..b91b025f 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.cs @@ -576,7 +576,7 @@ namespace SabreTools.Metadata.DatFiles game = machine?.Name ?? string.Empty, manufacturer = machine?.Manufacturer ?? string.Empty, publisher = machine?.Publisher ?? string.Empty, - category = machine?.ReadString(Data.Models.Metadata.Machine.CategoryKey) ?? string.Empty, + category = machine?.Category is null ? string.Empty : string.Join(", ", machine.Category), name = item.GetName() ?? type.AsStringValue() ?? string.Empty, crc16 = string.Empty, crc = string.Empty, diff --git a/SabreTools.Metadata.DatItems/Machine.cs b/SabreTools.Metadata.DatItems/Machine.cs index 8d27e8c5..8ec8b66d 100644 --- a/SabreTools.Metadata.DatItems/Machine.cs +++ b/SabreTools.Metadata.DatItems/Machine.cs @@ -27,6 +27,12 @@ namespace SabreTools.Metadata.DatItems set => _internal.Buttons = value; } + public string[]? Category + { + get => _internal.Category; + set => _internal.Category = value; + } + public string? CloneOf { get => _internal.CloneOf; @@ -39,6 +45,12 @@ namespace SabreTools.Metadata.DatItems set => _internal.CloneOfId = value; } + public string[]? Comment + { + get => _internal.Comment; + set => _internal.Comment = value; + } + public string? Company { get => _internal.Company; @@ -380,7 +392,36 @@ namespace SabreTools.Metadata.DatItems public Machine(Data.Models.Metadata.Machine machine) { - _internal = machine.DeepClone() as Data.Models.Metadata.Machine ?? []; + _internal = machine.Clone() as Data.Models.Metadata.Machine ?? []; + + // Clear all lists + _internal.Adjuster = null; + _internal.Archive = null; + _internal.BiosSet = null; + _internal.Chip = null; + _internal.Configuration = null; + _internal.Device = null; + _internal.DeviceRef = null; + _internal.DipSwitch = null; + _internal.Disk = null; + _internal.Display = null; + _internal.Driver = null; + _internal.Dump = null; + _internal.Feature = null; + _internal.Info = null; + _internal.Input = null; + _internal.Media = null; + _internal.Part = null; + _internal.Port = null; + _internal.RamOption = null; + _internal.Release = null; + _internal.Rom = null; + _internal.Sample = null; + _internal.SharedFeat = null; + _internal.Slot = null; + _internal.SoftwareList = null; + _internal.Sound = null; + _internal.Video = null; // Process flag values if (Im1CRC is not null) diff --git a/SabreTools.Metadata.Filter/FilterObject.cs b/SabreTools.Metadata.Filter/FilterObject.cs index 349344aa..0bd83177 100644 --- a/SabreTools.Metadata.Filter/FilterObject.cs +++ b/SabreTools.Metadata.Filter/FilterObject.cs @@ -907,12 +907,18 @@ namespace SabreTools.Metadata.Filter case Machine item when fieldName == "buttons": checkValue = item.Buttons; return true; + case Machine item when fieldName == "category": + checkValue = item.Category is null ? null : string.Join(", ", item.Category); + return true; case Machine item when fieldName == "cloneof": checkValue = item.CloneOf; return true; case Machine item when fieldName == "cloneofid": checkValue = item.CloneOfId; return true; + case Machine item when fieldName == "comment": + checkValue = item.Comment is null ? null : string.Join(", ", item.Comment); + return true; case Machine item when fieldName == "company": checkValue = item.Company; return true; diff --git a/SabreTools.Metadata/DictionaryBaseExtensions.cs b/SabreTools.Metadata/DictionaryBaseExtensions.cs index caf91860..6c9941a2 100644 --- a/SabreTools.Metadata/DictionaryBaseExtensions.cs +++ b/SabreTools.Metadata/DictionaryBaseExtensions.cs @@ -48,6 +48,7 @@ namespace SabreTools.Metadata (Info selfInfo, Info otherInfo) => selfInfo.Equals(otherInfo), (Input selfInput, Input otherInput) => selfInput.Equals(otherInput), (Instance selfInstance, Instance otherInstance) => selfInstance.Equals(otherInstance), + (Machine machineSelf, Machine machineOther) => EqualsImpl(machineSelf, machineOther), (Media mediaSelf, Media mediaOther) => EqualsImpl(mediaSelf, mediaOther), (Original selfOriginal, Original otherOriginal) => selfOriginal.Equals(otherOriginal), (Part selfPart, Part otherPart) => selfPart.Equals(otherPart), @@ -115,6 +116,8 @@ namespace SabreTools.Metadata return selfInput.Equals(otherInput); else if (self is Instance selfInstance && other is Instance otherInstance) return selfInstance.Equals(otherInstance); + else if (self is Machine machineSelf && other is Machine machineOther) + return EqualsImpl(machineSelf, machineOther); else if (self is Media mediaSelf && other is Media mediaOther) return EqualsImpl(mediaSelf, mediaOther); else if (self is Original selfOriginal && other is Original otherOriginal) @@ -240,125 +243,6 @@ namespace SabreTools.Metadata if (selfHeader.Version != otherHeader.Version) return false; } - else if (self is Machine selfMachine && other is Machine otherMachine) - { - if (selfMachine.Board != otherMachine.Board) - return false; - if (selfMachine.Buttons != otherMachine.Buttons) - return false; - if (selfMachine.CloneOf != otherMachine.CloneOf) - return false; - if (selfMachine.CloneOfId != otherMachine.CloneOfId) - return false; - if (selfMachine.Company != otherMachine.Company) - return false; - if (selfMachine.Control != otherMachine.Control) - return false; - if (selfMachine.CRC != otherMachine.CRC) - return false; - if (selfMachine.Country != otherMachine.Country) - return false; - if (selfMachine.Description != otherMachine.Description) - return false; - if (selfMachine.Developer != otherMachine.Developer) - return false; - if (selfMachine.DirName != otherMachine.DirName) - return false; - if (selfMachine.DisplayCount != otherMachine.DisplayCount) - return false; - if (selfMachine.DisplayType != otherMachine.DisplayType) - return false; - if (selfMachine.DuplicateID != otherMachine.DuplicateID) - return false; - if (selfMachine.Emulator != otherMachine.Emulator) - return false; - if (selfMachine.Enabled != otherMachine.Enabled) - return false; - if (selfMachine.Extra != otherMachine.Extra) - return false; - if (selfMachine.Favorite != otherMachine.Favorite) - return false; - if (selfMachine.GenMSXID != otherMachine.GenMSXID) - return false; - if (selfMachine.Genre != otherMachine.Genre) - return false; - if (selfMachine.Hash != otherMachine.Hash) - return false; - if (selfMachine.History != otherMachine.History) - return false; - if (selfMachine.Id != otherMachine.Id) - return false; - if (selfMachine.Im1CRC != otherMachine.Im1CRC) - return false; - if (selfMachine.Im2CRC != otherMachine.Im2CRC) - return false; - if (selfMachine.ImageNumber != otherMachine.ImageNumber) - return false; - if (selfMachine.IsBios != otherMachine.IsBios) - return false; - if (selfMachine.IsDevice != otherMachine.IsDevice) - return false; - if (selfMachine.IsMechanical != otherMachine.IsMechanical) - return false; - if (selfMachine.Language != otherMachine.Language) - return false; - if (selfMachine.Location != otherMachine.Location) - return false; - if (selfMachine.Manufacturer != otherMachine.Manufacturer) - return false; - if (selfMachine.Notes != otherMachine.Notes) - return false; - if (selfMachine.PlayedCount != otherMachine.PlayedCount) - return false; - if (selfMachine.PlayedTime != otherMachine.PlayedTime) - return false; - if (selfMachine.Players != otherMachine.Players) - return false; - if (selfMachine.Publisher != otherMachine.Publisher) - return false; - if (selfMachine.Ratings != otherMachine.Ratings) - return false; - if (selfMachine.RebuildTo != otherMachine.RebuildTo) - return false; - if (selfMachine.RelatedTo != otherMachine.RelatedTo) - return false; - if (selfMachine.ReleaseNumber != otherMachine.ReleaseNumber) - return false; - if (selfMachine.RomOf != otherMachine.RomOf) - return false; - if (selfMachine.Rotation != otherMachine.Rotation) - return false; - if (selfMachine.Runnable != otherMachine.Runnable) - return false; - if (selfMachine.SampleOf != otherMachine.SampleOf) - return false; - if (selfMachine.SaveType != otherMachine.SaveType) - return false; - if (selfMachine.Score != otherMachine.Score) - return false; - if (selfMachine.Source != otherMachine.Source) - return false; - if (selfMachine.SourceFile != otherMachine.SourceFile) - return false; - if (selfMachine.SourceRom != otherMachine.SourceRom) - return false; - if (selfMachine.Status != otherMachine.Status) - return false; - if (selfMachine.Subgenre != otherMachine.Subgenre) - return false; - if (selfMachine.Supported != otherMachine.Supported) - return false; - if (selfMachine.System != otherMachine.System) - return false; - if (selfMachine.Tags != otherMachine.Tags) - return false; - if (selfMachine.TitleID != otherMachine.TitleID) - return false; - if (selfMachine.Url != otherMachine.Url) - return false; - if (selfMachine.Year != otherMachine.Year) - return false; - } // Check all pairs to see if they're equal foreach (var kvp in self) diff --git a/SabreTools.Serialization.CrossModel/AttractMode.Deserializer.cs b/SabreTools.Serialization.CrossModel/AttractMode.Deserializer.cs index 1c8f0dd4..c944385a 100644 --- a/SabreTools.Serialization.CrossModel/AttractMode.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/AttractMode.Deserializer.cs @@ -63,7 +63,7 @@ namespace SabreTools.Serialization.CrossModel CloneOf = parent.CloneOf, Year = parent.Year, Manufacturer = parent.Manufacturer, - Category = parent.ReadString(Data.Models.Metadata.Machine.CategoryKey), + Category = parent.Category is null ? null : string.Join(", ", parent.Category), Players = parent.Players, Rotation = parent.Rotation, Control = parent.Control, diff --git a/SabreTools.Serialization.CrossModel/AttractMode.Serializer.cs b/SabreTools.Serialization.CrossModel/AttractMode.Serializer.cs index 94e7fad3..d6552156 100644 --- a/SabreTools.Serialization.CrossModel/AttractMode.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/AttractMode.Serializer.cs @@ -52,7 +52,7 @@ namespace SabreTools.Serialization.CrossModel CloneOf = item.CloneOf, Year = item.Year, Manufacturer = item.Manufacturer, - [Data.Models.Metadata.Machine.CategoryKey] = item.Category, + Category = item.Category is null ? null : [item.Category], Players = item.Players, Rotation = item.Rotation, Control = item.Control, diff --git a/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs b/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs index 61a4538f..baad81f6 100644 --- a/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs @@ -74,7 +74,7 @@ namespace SabreTools.Serialization.CrossModel // gameBase.DriverStatus = item.ReadString(Data.Models.Metadata.Machine.DriverKey); // TODO: Needs metadata mapping gameBase.Year = item.Year; gameBase.Manufacturer = item.Manufacturer; - gameBase.Category = item.ReadString(Data.Models.Metadata.Machine.CategoryKey); + gameBase.Category = item.Category is null ? null : string.Join(", ", item.Category); gameBase.CloneOf = item.CloneOf; gameBase.RomOf = item.RomOf; gameBase.SampleOf = item.SampleOf; diff --git a/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs b/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs index 450c50e2..e86a4523 100644 --- a/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs @@ -69,7 +69,7 @@ namespace SabreTools.Serialization.CrossModel // Driver = item.DriverStatus, // TODO: Needs metadata mapping Year = item.Year, Manufacturer = item.Manufacturer, - [Data.Models.Metadata.Machine.CategoryKey] = item.Category, + Category = item.Category is null ? null : [item.Category], CloneOf = item.CloneOf, RomOf = item.RomOf, SampleOf = item.SampleOf, diff --git a/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs b/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs index aeea4996..bd08976b 100644 --- a/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs @@ -122,12 +122,12 @@ namespace SabreTools.Serialization.CrossModel gameBase.Id = item.Id; gameBase.CloneOfId = item.CloneOfId; gameBase.Runnable = item.Runnable; - gameBase.Comment = item.ReadStringArray(Data.Models.Metadata.Machine.CommentKey); + gameBase.Comment = item.Comment; gameBase.Description = item.Description; gameBase.Year = item.Year; gameBase.Manufacturer = item.Manufacturer; gameBase.Publisher = item.Publisher; - gameBase.Category = item.ReadStringArray(Data.Models.Metadata.Machine.CategoryKey); + gameBase.Category = item.Category; if (item.TitleID is not null || item.Developer is not null diff --git a/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs b/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs index 45e4f08d..171d0ad3 100644 --- a/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs @@ -127,10 +127,10 @@ namespace SabreTools.Serialization.CrossModel var machine = new Data.Models.Metadata.Machine { Board = item.Board, - [Data.Models.Metadata.Machine.CategoryKey] = item.Category, + Category = item.Category, CloneOf = item.CloneOf ?? item.Trurip?.CloneOf, CloneOfId = item.CloneOfId, - [Data.Models.Metadata.Machine.CommentKey] = item.Comment, + Comment = item.Comment, CRC = item.Trurip?.CRC, Description = item.Description, Developer = item.Trurip?.Developer, diff --git a/SabreTools.Serialization.CrossModel/OfflineList.Deserializer.cs b/SabreTools.Serialization.CrossModel/OfflineList.Deserializer.cs index b5d88416..02efd5fe 100644 --- a/SabreTools.Serialization.CrossModel/OfflineList.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/OfflineList.Deserializer.cs @@ -92,7 +92,7 @@ namespace SabreTools.Serialization.CrossModel Language = item.Language, Im1CRC = item.Im1CRC, Im2CRC = item.Im2CRC, - Comment = item.ReadString(Data.Models.Metadata.Machine.CommentKey), + Comment = item.Comment is null ? null : string.Join(", ", item.Comment), DuplicateID = item.DuplicateID, }; diff --git a/SabreTools.Serialization.CrossModel/OfflineList.Serializer.cs b/SabreTools.Serialization.CrossModel/OfflineList.Serializer.cs index d808522d..ac4e12da 100644 --- a/SabreTools.Serialization.CrossModel/OfflineList.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/OfflineList.Serializer.cs @@ -75,7 +75,7 @@ namespace SabreTools.Serialization.CrossModel Language = item.Language, Im1CRC = item.Im1CRC, Im2CRC = item.Im2CRC, - [Data.Models.Metadata.Machine.CommentKey] = item.Comment, + Comment = item.Comment is null ? null : [item.Comment], DuplicateID = item.DuplicateID, }; From 8f82d3a28d21920a66a3586d0f2f0e463ace875f Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sat, 4 Apr 2026 16:07:37 -0400 Subject: [PATCH 085/142] Properties are not fields --- SabreTools.Metadata.DatFiles/DatFile.cs | 2 +- SabreTools.Metadata.DatFiles/DatHeader.cs | 2 +- SabreTools.Metadata.DatFiles/DatModifiers.cs | 2 +- SabreTools.Metadata.DatFiles/DatStatistics.cs | 2 +- SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs | 2 +- SabreTools.Metadata.DatFiles/Formats/Hashfile.cs | 2 +- SabreTools.Metadata.DatFiles/Formats/Listxml.cs | 2 +- SabreTools.Metadata.DatFiles/Formats/Logiqx.cs | 2 +- SabreTools.Metadata.DatFiles/Formats/OpenMSX.cs | 2 +- SabreTools.Metadata.DatFiles/Formats/SeparatedValue.cs | 2 +- SabreTools.Metadata.DatFiles/Formats/SoftwareList.cs | 2 +- SabreTools.Metadata.DatFiles/ItemDictionary.cs | 2 +- SabreTools.Metadata.DatFiles/ItemDictionaryDB.cs | 2 +- SabreTools.Metadata.DatItems/DatItem.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Adjuster.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Analog.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Archive.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Blank.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Chip.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Condition.cs | 2 +- SabreTools.Metadata.DatItems/Formats/ConfLocation.cs | 2 +- SabreTools.Metadata.DatItems/Formats/ConfSetting.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Configuration.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Control.cs | 2 +- SabreTools.Metadata.DatItems/Formats/DataArea.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Device.cs | 2 +- SabreTools.Metadata.DatItems/Formats/DeviceRef.cs | 2 +- SabreTools.Metadata.DatItems/Formats/DipLocation.cs | 2 +- SabreTools.Metadata.DatItems/Formats/DipSwitch.cs | 2 +- SabreTools.Metadata.DatItems/Formats/DipValue.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Disk.cs | 2 +- SabreTools.Metadata.DatItems/Formats/DiskArea.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Display.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Driver.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Extension.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Feature.cs | 2 +- SabreTools.Metadata.DatItems/Formats/File.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Info.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Input.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Instance.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Media.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Original.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Part.cs | 2 +- SabreTools.Metadata.DatItems/Formats/PartFeature.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Port.cs | 2 +- SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Rom.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Sample.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Serials.cs | 2 +- SabreTools.Metadata.DatItems/Formats/SharedFeat.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Slot.cs | 2 +- SabreTools.Metadata.DatItems/Formats/SoftwareList.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Sound.cs | 2 +- SabreTools.Metadata.DatItems/Formats/SourceDetails.cs | 2 +- SabreTools.Metadata.DatItems/Machine.cs | 2 +- SabreTools.Metadata.Filter/ExtraIniItem.cs | 2 +- 56 files changed, 56 insertions(+), 56 deletions(-) diff --git a/SabreTools.Metadata.DatFiles/DatFile.cs b/SabreTools.Metadata.DatFiles/DatFile.cs index b91b025f..ea5b2449 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.cs @@ -19,7 +19,7 @@ namespace SabreTools.Metadata.DatFiles [JsonObject("datfile"), XmlRoot("datfile")] public abstract partial class DatFile { - #region Fields + #region Properties /// /// Header values diff --git a/SabreTools.Metadata.DatFiles/DatHeader.cs b/SabreTools.Metadata.DatFiles/DatHeader.cs index c8a63c92..3d601c9f 100644 --- a/SabreTools.Metadata.DatFiles/DatHeader.cs +++ b/SabreTools.Metadata.DatFiles/DatHeader.cs @@ -15,7 +15,7 @@ namespace SabreTools.Metadata.DatFiles [JsonObject("header"), XmlRoot("header")] public sealed class DatHeader : ModelBackedItem, ICloneable { - #region Fields + #region Properties public string? Author { diff --git a/SabreTools.Metadata.DatFiles/DatModifiers.cs b/SabreTools.Metadata.DatFiles/DatModifiers.cs index f6ec9253..e10b2b7b 100644 --- a/SabreTools.Metadata.DatFiles/DatModifiers.cs +++ b/SabreTools.Metadata.DatFiles/DatModifiers.cs @@ -7,7 +7,7 @@ namespace SabreTools.Metadata.DatFiles /// public sealed class DatModifiers : ICloneable { - #region Fields + #region Properties /// /// Text to prepend to all outputted lines diff --git a/SabreTools.Metadata.DatFiles/DatStatistics.cs b/SabreTools.Metadata.DatFiles/DatStatistics.cs index 7bb127eb..8b0af504 100644 --- a/SabreTools.Metadata.DatFiles/DatStatistics.cs +++ b/SabreTools.Metadata.DatFiles/DatStatistics.cs @@ -39,7 +39,7 @@ namespace SabreTools.Metadata.DatFiles #endregion - #region Fields + #region Properties /// /// Overall item count diff --git a/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs b/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs index 23fae2da..eeeb506a 100644 --- a/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs +++ b/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs @@ -11,7 +11,7 @@ namespace SabreTools.Metadata.DatFiles.Formats /// public sealed class ClrMamePro : SerializableDatFile { - #region Fields + #region Properties /// public override Data.Models.Metadata.ItemType[] SupportedTypes diff --git a/SabreTools.Metadata.DatFiles/Formats/Hashfile.cs b/SabreTools.Metadata.DatFiles/Formats/Hashfile.cs index 66f928ef..0e986853 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Hashfile.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Hashfile.cs @@ -10,7 +10,7 @@ namespace SabreTools.Metadata.DatFiles.Formats /// public abstract class Hashfile : SerializableDatFile { - #region Fields + #region Properties // Private instance variables specific to Hashfile DATs protected HashType _hash; diff --git a/SabreTools.Metadata.DatFiles/Formats/Listxml.cs b/SabreTools.Metadata.DatFiles/Formats/Listxml.cs index 65b7eb7c..e85bb7d6 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Listxml.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Listxml.cs @@ -181,7 +181,7 @@ namespace SabreTools.Metadata.DatFiles.Formats #endregion - #region Fields + #region Properties /// public override Data.Models.Metadata.ItemType[] SupportedTypes diff --git a/SabreTools.Metadata.DatFiles/Formats/Logiqx.cs b/SabreTools.Metadata.DatFiles/Formats/Logiqx.cs index 7e5c0385..dfb47dbe 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Logiqx.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Logiqx.cs @@ -220,7 +220,7 @@ namespace SabreTools.Metadata.DatFiles.Formats #endregion - #region Fields + #region Properties /// public override Data.Models.Metadata.ItemType[] SupportedTypes diff --git a/SabreTools.Metadata.DatFiles/Formats/OpenMSX.cs b/SabreTools.Metadata.DatFiles/Formats/OpenMSX.cs index 1050b672..64819f1d 100644 --- a/SabreTools.Metadata.DatFiles/Formats/OpenMSX.cs +++ b/SabreTools.Metadata.DatFiles/Formats/OpenMSX.cs @@ -44,7 +44,7 @@ The softwaredb.xml file contains information about rom mapper types #endregion - #region Fields + #region Properties /// public override Data.Models.Metadata.ItemType[] SupportedTypes diff --git a/SabreTools.Metadata.DatFiles/Formats/SeparatedValue.cs b/SabreTools.Metadata.DatFiles/Formats/SeparatedValue.cs index 1c253b65..c0bf2d1e 100644 --- a/SabreTools.Metadata.DatFiles/Formats/SeparatedValue.cs +++ b/SabreTools.Metadata.DatFiles/Formats/SeparatedValue.cs @@ -12,7 +12,7 @@ namespace SabreTools.Metadata.DatFiles.Formats /// public abstract class SeparatedValue : SerializableDatFile { - #region Fields + #region Properties /// public override Data.Models.Metadata.ItemType[] SupportedTypes diff --git a/SabreTools.Metadata.DatFiles/Formats/SoftwareList.cs b/SabreTools.Metadata.DatFiles/Formats/SoftwareList.cs index 058422c7..03719549 100644 --- a/SabreTools.Metadata.DatFiles/Formats/SoftwareList.cs +++ b/SabreTools.Metadata.DatFiles/Formats/SoftwareList.cs @@ -75,7 +75,7 @@ namespace SabreTools.Metadata.DatFiles.Formats #endregion - #region Fields + #region Properties /// public override Data.Models.Metadata.ItemType[] SupportedTypes diff --git a/SabreTools.Metadata.DatFiles/ItemDictionary.cs b/SabreTools.Metadata.DatFiles/ItemDictionary.cs index 809205eb..f55c46b0 100644 --- a/SabreTools.Metadata.DatFiles/ItemDictionary.cs +++ b/SabreTools.Metadata.DatFiles/ItemDictionary.cs @@ -47,7 +47,7 @@ namespace SabreTools.Metadata.DatFiles #endregion - #region Fields + #region Properties /// /// Get the keys in sorted order from the file dictionary diff --git a/SabreTools.Metadata.DatFiles/ItemDictionaryDB.cs b/SabreTools.Metadata.DatFiles/ItemDictionaryDB.cs index 87fbb4a3..d53bd1de 100644 --- a/SabreTools.Metadata.DatFiles/ItemDictionaryDB.cs +++ b/SabreTools.Metadata.DatFiles/ItemDictionaryDB.cs @@ -134,7 +134,7 @@ namespace SabreTools.Metadata.DatFiles #endregion - #region Fields + #region Properties /// /// Get the keys in sorted order from the file dictionary diff --git a/SabreTools.Metadata.DatItems/DatItem.cs b/SabreTools.Metadata.DatItems/DatItem.cs index 9b037f83..521e3860 100644 --- a/SabreTools.Metadata.DatItems/DatItem.cs +++ b/SabreTools.Metadata.DatItems/DatItem.cs @@ -55,7 +55,7 @@ namespace SabreTools.Metadata.DatItems [XmlInclude(typeof(SourceDetails))] public abstract class DatItem : ModelBackedItem, IEquatable, IComparable, ICloneable { - #region Fields + #region Properties /// /// Duplicate type when compared to another item diff --git a/SabreTools.Metadata.DatItems/Formats/Adjuster.cs b/SabreTools.Metadata.DatItems/Formats/Adjuster.cs index 60b1d536..2588700e 100644 --- a/SabreTools.Metadata.DatItems/Formats/Adjuster.cs +++ b/SabreTools.Metadata.DatItems/Formats/Adjuster.cs @@ -9,7 +9,7 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("adjuster"), XmlRoot("adjuster")] public sealed class Adjuster : DatItem { - #region Fields + #region Properties public Condition? Condition { get; set; } diff --git a/SabreTools.Metadata.DatItems/Formats/Analog.cs b/SabreTools.Metadata.DatItems/Formats/Analog.cs index fe068969..31d1b434 100644 --- a/SabreTools.Metadata.DatItems/Formats/Analog.cs +++ b/SabreTools.Metadata.DatItems/Formats/Analog.cs @@ -9,7 +9,7 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("analog"), XmlRoot("analog")] public sealed class Analog : DatItem { - #region Fields + #region Properties /// /> public override Data.Models.Metadata.ItemType ItemType diff --git a/SabreTools.Metadata.DatItems/Formats/Archive.cs b/SabreTools.Metadata.DatItems/Formats/Archive.cs index 42ed0b54..633ba14f 100644 --- a/SabreTools.Metadata.DatItems/Formats/Archive.cs +++ b/SabreTools.Metadata.DatItems/Formats/Archive.cs @@ -9,7 +9,7 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("archive"), XmlRoot("archive")] public sealed class Archive : DatItem { - #region Fields + #region Properties public string? Additional { diff --git a/SabreTools.Metadata.DatItems/Formats/Blank.cs b/SabreTools.Metadata.DatItems/Formats/Blank.cs index b31e26f1..fbc24c20 100644 --- a/SabreTools.Metadata.DatItems/Formats/Blank.cs +++ b/SabreTools.Metadata.DatItems/Formats/Blank.cs @@ -9,7 +9,7 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("blank"), XmlRoot("blank")] public sealed class Blank : DatItem { - #region Fields + #region Properties /// /> public override Data.Models.Metadata.ItemType ItemType diff --git a/SabreTools.Metadata.DatItems/Formats/Chip.cs b/SabreTools.Metadata.DatItems/Formats/Chip.cs index ac0b6f8f..4568ab77 100644 --- a/SabreTools.Metadata.DatItems/Formats/Chip.cs +++ b/SabreTools.Metadata.DatItems/Formats/Chip.cs @@ -9,7 +9,7 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("chip"), XmlRoot("chip")] public sealed class Chip : DatItem { - #region Fields + #region Properties public Data.Models.Metadata.ChipType? ChipType { diff --git a/SabreTools.Metadata.DatItems/Formats/Condition.cs b/SabreTools.Metadata.DatItems/Formats/Condition.cs index 0621276d..a5fc1577 100644 --- a/SabreTools.Metadata.DatItems/Formats/Condition.cs +++ b/SabreTools.Metadata.DatItems/Formats/Condition.cs @@ -9,7 +9,7 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("condition"), XmlRoot("condition")] public sealed class Condition : DatItem { - #region Fields + #region Properties /// /> public override Data.Models.Metadata.ItemType ItemType diff --git a/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs b/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs index cd5ce116..0001458c 100644 --- a/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs +++ b/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs @@ -9,7 +9,7 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("conflocation"), XmlRoot("conflocation")] public sealed class ConfLocation : DatItem { - #region Fields + #region Properties /// /> public override Data.Models.Metadata.ItemType ItemType diff --git a/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs b/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs index 6af0334c..59f36e85 100644 --- a/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs +++ b/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs @@ -9,7 +9,7 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("confsetting"), XmlRoot("confsetting")] public sealed class ConfSetting : DatItem { - #region Fields + #region Properties public Condition? Condition { get; set; } diff --git a/SabreTools.Metadata.DatItems/Formats/Configuration.cs b/SabreTools.Metadata.DatItems/Formats/Configuration.cs index 2a96bdb1..49f44e46 100644 --- a/SabreTools.Metadata.DatItems/Formats/Configuration.cs +++ b/SabreTools.Metadata.DatItems/Formats/Configuration.cs @@ -10,7 +10,7 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("configuration"), XmlRoot("configuration")] public sealed class Configuration : DatItem { - #region Fields + #region Properties public Condition? Condition { get; set; } diff --git a/SabreTools.Metadata.DatItems/Formats/Control.cs b/SabreTools.Metadata.DatItems/Formats/Control.cs index aaa21346..5e92e7bc 100644 --- a/SabreTools.Metadata.DatItems/Formats/Control.cs +++ b/SabreTools.Metadata.DatItems/Formats/Control.cs @@ -9,7 +9,7 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("control"), XmlRoot("control")] public sealed class Control : DatItem { - #region Fields + #region Properties public long? Buttons { diff --git a/SabreTools.Metadata.DatItems/Formats/DataArea.cs b/SabreTools.Metadata.DatItems/Formats/DataArea.cs index 5d1c4525..0688cef3 100644 --- a/SabreTools.Metadata.DatItems/Formats/DataArea.cs +++ b/SabreTools.Metadata.DatItems/Formats/DataArea.cs @@ -11,7 +11,7 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("dataarea"), XmlRoot("dataarea")] public sealed class DataArea : DatItem { - #region Fields + #region Properties public Data.Models.Metadata.Endianness? Endianness { diff --git a/SabreTools.Metadata.DatItems/Formats/Device.cs b/SabreTools.Metadata.DatItems/Formats/Device.cs index 600965fa..6a688d3e 100644 --- a/SabreTools.Metadata.DatItems/Formats/Device.cs +++ b/SabreTools.Metadata.DatItems/Formats/Device.cs @@ -10,7 +10,7 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("device"), XmlRoot("device")] public sealed class Device : DatItem { - #region Fields + #region Properties public Data.Models.Metadata.DeviceType? DeviceType { diff --git a/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs b/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs index 7c16f71a..d9d5fca5 100644 --- a/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs +++ b/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs @@ -9,7 +9,7 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("device_ref"), XmlRoot("device_ref")] public sealed class DeviceRef : DatItem { - #region Fields + #region Properties /// /> public override Data.Models.Metadata.ItemType ItemType diff --git a/SabreTools.Metadata.DatItems/Formats/DipLocation.cs b/SabreTools.Metadata.DatItems/Formats/DipLocation.cs index 2f0d6870..dba825e1 100644 --- a/SabreTools.Metadata.DatItems/Formats/DipLocation.cs +++ b/SabreTools.Metadata.DatItems/Formats/DipLocation.cs @@ -9,7 +9,7 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("diplocation"), XmlRoot("diplocation")] public sealed class DipLocation : DatItem { - #region Fields + #region Properties public bool? Inverted { diff --git a/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs b/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs index 1253d655..ff4ad9ef 100644 --- a/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs +++ b/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs @@ -10,7 +10,7 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("dipswitch"), XmlRoot("dipswitch")] public sealed class DipSwitch : DatItem { - #region Fields + #region Properties public Condition? Condition { get; set; } diff --git a/SabreTools.Metadata.DatItems/Formats/DipValue.cs b/SabreTools.Metadata.DatItems/Formats/DipValue.cs index 48da33fb..5a2c3d25 100644 --- a/SabreTools.Metadata.DatItems/Formats/DipValue.cs +++ b/SabreTools.Metadata.DatItems/Formats/DipValue.cs @@ -9,7 +9,7 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("dipvalue"), XmlRoot("dipvalue")] public sealed class DipValue : DatItem { - #region Fields + #region Properties public Condition? Condition { get; set; } diff --git a/SabreTools.Metadata.DatItems/Formats/Disk.cs b/SabreTools.Metadata.DatItems/Formats/Disk.cs index 60c6f769..2aaa11a7 100644 --- a/SabreTools.Metadata.DatItems/Formats/Disk.cs +++ b/SabreTools.Metadata.DatItems/Formats/Disk.cs @@ -12,7 +12,7 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("disk"), XmlRoot("disk")] public sealed class Disk : DatItem { - #region Fields + #region Properties public DiskArea? DiskArea { get; set; } diff --git a/SabreTools.Metadata.DatItems/Formats/DiskArea.cs b/SabreTools.Metadata.DatItems/Formats/DiskArea.cs index 6c08ec64..dff2e968 100644 --- a/SabreTools.Metadata.DatItems/Formats/DiskArea.cs +++ b/SabreTools.Metadata.DatItems/Formats/DiskArea.cs @@ -11,7 +11,7 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("diskarea"), XmlRoot("diskarea")] public sealed class DiskArea : DatItem { - #region Fields + #region Properties public Disk[]? Disk { get; set; } diff --git a/SabreTools.Metadata.DatItems/Formats/Display.cs b/SabreTools.Metadata.DatItems/Formats/Display.cs index 4077ff8d..2e469fdd 100644 --- a/SabreTools.Metadata.DatItems/Formats/Display.cs +++ b/SabreTools.Metadata.DatItems/Formats/Display.cs @@ -9,7 +9,7 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("display"), XmlRoot("display")] public sealed class Display : DatItem { - #region Fields + #region Properties public long? AspectX { diff --git a/SabreTools.Metadata.DatItems/Formats/Driver.cs b/SabreTools.Metadata.DatItems/Formats/Driver.cs index bc067f8b..44dbaa96 100644 --- a/SabreTools.Metadata.DatItems/Formats/Driver.cs +++ b/SabreTools.Metadata.DatItems/Formats/Driver.cs @@ -9,7 +9,7 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("driver"), XmlRoot("driver")] public sealed class Driver : DatItem { - #region Fields + #region Properties public Data.Models.Metadata.Blit? Blit { diff --git a/SabreTools.Metadata.DatItems/Formats/Extension.cs b/SabreTools.Metadata.DatItems/Formats/Extension.cs index 6a734f5f..bcf8cf8f 100644 --- a/SabreTools.Metadata.DatItems/Formats/Extension.cs +++ b/SabreTools.Metadata.DatItems/Formats/Extension.cs @@ -9,7 +9,7 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("extension"), XmlRoot("extension")] public sealed class Extension : DatItem { - #region Fields + #region Properties /// /> public override Data.Models.Metadata.ItemType ItemType diff --git a/SabreTools.Metadata.DatItems/Formats/Feature.cs b/SabreTools.Metadata.DatItems/Formats/Feature.cs index dc70d747..6d29df12 100644 --- a/SabreTools.Metadata.DatItems/Formats/Feature.cs +++ b/SabreTools.Metadata.DatItems/Formats/Feature.cs @@ -9,7 +9,7 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("feature"), XmlRoot("feature")] public sealed class Feature : DatItem { - #region Fields + #region Properties public Data.Models.Metadata.FeatureType? FeatureType { diff --git a/SabreTools.Metadata.DatItems/Formats/File.cs b/SabreTools.Metadata.DatItems/Formats/File.cs index e52b9e4c..2f965764 100644 --- a/SabreTools.Metadata.DatItems/Formats/File.cs +++ b/SabreTools.Metadata.DatItems/Formats/File.cs @@ -25,7 +25,7 @@ namespace SabreTools.Metadata.DatItems.Formats #endregion - #region Fields + #region Properties /// /> public override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.File; diff --git a/SabreTools.Metadata.DatItems/Formats/Info.cs b/SabreTools.Metadata.DatItems/Formats/Info.cs index 7ee61a84..0e17aee1 100644 --- a/SabreTools.Metadata.DatItems/Formats/Info.cs +++ b/SabreTools.Metadata.DatItems/Formats/Info.cs @@ -9,7 +9,7 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("info"), XmlRoot("info")] public sealed class Info : DatItem { - #region Fields + #region Properties /// /> public override Data.Models.Metadata.ItemType ItemType diff --git a/SabreTools.Metadata.DatItems/Formats/Input.cs b/SabreTools.Metadata.DatItems/Formats/Input.cs index d3ffe936..777d27d5 100644 --- a/SabreTools.Metadata.DatItems/Formats/Input.cs +++ b/SabreTools.Metadata.DatItems/Formats/Input.cs @@ -10,7 +10,7 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("input"), XmlRoot("input")] public sealed class Input : DatItem { - #region Fields + #region Properties public long? Buttons { diff --git a/SabreTools.Metadata.DatItems/Formats/Instance.cs b/SabreTools.Metadata.DatItems/Formats/Instance.cs index 7c4ddc50..c443f41e 100644 --- a/SabreTools.Metadata.DatItems/Formats/Instance.cs +++ b/SabreTools.Metadata.DatItems/Formats/Instance.cs @@ -9,7 +9,7 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("instance"), XmlRoot("instance")] public sealed class Instance : DatItem { - #region Fields + #region Properties public string? BriefName { diff --git a/SabreTools.Metadata.DatItems/Formats/Media.cs b/SabreTools.Metadata.DatItems/Formats/Media.cs index 6711d97d..77f3d441 100644 --- a/SabreTools.Metadata.DatItems/Formats/Media.cs +++ b/SabreTools.Metadata.DatItems/Formats/Media.cs @@ -11,7 +11,7 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("media"), XmlRoot("media")] public sealed class Media : DatItem { - #region Fields + #region Properties public string? MD5 { diff --git a/SabreTools.Metadata.DatItems/Formats/Original.cs b/SabreTools.Metadata.DatItems/Formats/Original.cs index 0b654191..b70be6bd 100644 --- a/SabreTools.Metadata.DatItems/Formats/Original.cs +++ b/SabreTools.Metadata.DatItems/Formats/Original.cs @@ -9,7 +9,7 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("original"), XmlRoot("original")] public sealed class Original { - #region Fields + #region Properties [JsonProperty("content"), XmlElement("content")] public string? Content diff --git a/SabreTools.Metadata.DatItems/Formats/Part.cs b/SabreTools.Metadata.DatItems/Formats/Part.cs index 13cae7ae..57df8892 100644 --- a/SabreTools.Metadata.DatItems/Formats/Part.cs +++ b/SabreTools.Metadata.DatItems/Formats/Part.cs @@ -11,7 +11,7 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("part"), XmlRoot("part")] public sealed class Part : DatItem { - #region Fields + #region Properties public DataArea[]? DataArea { get; set; } diff --git a/SabreTools.Metadata.DatItems/Formats/PartFeature.cs b/SabreTools.Metadata.DatItems/Formats/PartFeature.cs index c074b544..69aa929f 100644 --- a/SabreTools.Metadata.DatItems/Formats/PartFeature.cs +++ b/SabreTools.Metadata.DatItems/Formats/PartFeature.cs @@ -9,7 +9,7 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("part_feature"), XmlRoot("part_feature")] public sealed class PartFeature : DatItem { - #region Fields + #region Properties public Data.Models.Metadata.FeatureType? FeatureType { diff --git a/SabreTools.Metadata.DatItems/Formats/Port.cs b/SabreTools.Metadata.DatItems/Formats/Port.cs index adfc986d..d5b6b252 100644 --- a/SabreTools.Metadata.DatItems/Formats/Port.cs +++ b/SabreTools.Metadata.DatItems/Formats/Port.cs @@ -10,7 +10,7 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("port"), XmlRoot("port")] public sealed class Port : DatItem { - #region Fields + #region Properties public Analog[]? Analog { get; set; } diff --git a/SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs b/SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs index ee887863..a40e095c 100644 --- a/SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs +++ b/SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs @@ -9,7 +9,7 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("release_details"), XmlRoot("release_details")] public sealed class ReleaseDetails : DatItem { - #region Fields + #region Properties public string? AppendToNumber { diff --git a/SabreTools.Metadata.DatItems/Formats/Rom.cs b/SabreTools.Metadata.DatItems/Formats/Rom.cs index f8ba3e6d..95d72e0d 100644 --- a/SabreTools.Metadata.DatItems/Formats/Rom.cs +++ b/SabreTools.Metadata.DatItems/Formats/Rom.cs @@ -18,7 +18,7 @@ namespace SabreTools.Metadata.DatItems.Formats #endregion - #region Fields + #region Properties public DataArea? DataArea { get; set; } diff --git a/SabreTools.Metadata.DatItems/Formats/Sample.cs b/SabreTools.Metadata.DatItems/Formats/Sample.cs index d2b28deb..2db5f59c 100644 --- a/SabreTools.Metadata.DatItems/Formats/Sample.cs +++ b/SabreTools.Metadata.DatItems/Formats/Sample.cs @@ -9,7 +9,7 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("sample"), XmlRoot("sample")] public class Sample : DatItem { - #region Fields + #region Properties /// /> public override Data.Models.Metadata.ItemType ItemType diff --git a/SabreTools.Metadata.DatItems/Formats/Serials.cs b/SabreTools.Metadata.DatItems/Formats/Serials.cs index c9fb8c6b..bf294bb7 100644 --- a/SabreTools.Metadata.DatItems/Formats/Serials.cs +++ b/SabreTools.Metadata.DatItems/Formats/Serials.cs @@ -9,7 +9,7 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("serials"), XmlRoot("serials")] public sealed class Serials : DatItem { - #region Fields + #region Properties public string? BoxBarcode { diff --git a/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs b/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs index 7faff216..0406fa1c 100644 --- a/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs +++ b/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs @@ -9,7 +9,7 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("sharedfeat"), XmlRoot("sharedfeat")] public sealed class SharedFeat : DatItem { - #region Fields + #region Properties /// /> public override Data.Models.Metadata.ItemType ItemType diff --git a/SabreTools.Metadata.DatItems/Formats/Slot.cs b/SabreTools.Metadata.DatItems/Formats/Slot.cs index d331501e..81e3348f 100644 --- a/SabreTools.Metadata.DatItems/Formats/Slot.cs +++ b/SabreTools.Metadata.DatItems/Formats/Slot.cs @@ -10,7 +10,7 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("slot"), XmlRoot("slot")] public sealed class Slot : DatItem { - #region Fields + #region Properties /// /> public override Data.Models.Metadata.ItemType ItemType diff --git a/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs b/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs index 739dd847..e3bec0c8 100644 --- a/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs +++ b/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs @@ -9,7 +9,7 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("softwarelist"), XmlRoot("softwarelist")] public sealed class SoftwareList : DatItem { - #region Fields + #region Properties public string? Filter { diff --git a/SabreTools.Metadata.DatItems/Formats/Sound.cs b/SabreTools.Metadata.DatItems/Formats/Sound.cs index f12e4d95..dbdcaa22 100644 --- a/SabreTools.Metadata.DatItems/Formats/Sound.cs +++ b/SabreTools.Metadata.DatItems/Formats/Sound.cs @@ -9,7 +9,7 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("sound"), XmlRoot("sound")] public sealed class Sound : DatItem { - #region Fields + #region Properties public long? Channels { diff --git a/SabreTools.Metadata.DatItems/Formats/SourceDetails.cs b/SabreTools.Metadata.DatItems/Formats/SourceDetails.cs index 47300b8f..5dbdcda6 100644 --- a/SabreTools.Metadata.DatItems/Formats/SourceDetails.cs +++ b/SabreTools.Metadata.DatItems/Formats/SourceDetails.cs @@ -9,7 +9,7 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("source_details"), XmlRoot("source_details")] public sealed class SourceDetails : DatItem { - #region Fields + #region Properties public string? AppendToNumber { diff --git a/SabreTools.Metadata.DatItems/Machine.cs b/SabreTools.Metadata.DatItems/Machine.cs index 8ec8b66d..ad7c2d57 100644 --- a/SabreTools.Metadata.DatItems/Machine.cs +++ b/SabreTools.Metadata.DatItems/Machine.cs @@ -13,7 +13,7 @@ namespace SabreTools.Metadata.DatItems [JsonObject("machine"), XmlRoot("machine")] public sealed class Machine : ModelBackedItem, ICloneable, IEquatable { - #region Fields + #region Properties public string? Board { diff --git a/SabreTools.Metadata.Filter/ExtraIniItem.cs b/SabreTools.Metadata.Filter/ExtraIniItem.cs index adcbac03..d6135d52 100644 --- a/SabreTools.Metadata.Filter/ExtraIniItem.cs +++ b/SabreTools.Metadata.Filter/ExtraIniItem.cs @@ -8,7 +8,7 @@ namespace SabreTools.Metadata.Filter { public class ExtraIniItem { - #region Fields + #region Properties /// /// Item type and field to update with INI information From 2f72349e7b7676ba5d30264574bf6ddcaedb432a Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sat, 4 Apr 2026 16:20:42 -0400 Subject: [PATCH 086/142] Small fixes to Machine --- SabreTools.Data.Models/Metadata/Machine.cs | 5 ++++ SabreTools.Metadata.DatItems/Machine.cs | 32 ++-------------------- 2 files changed, 8 insertions(+), 29 deletions(-) diff --git a/SabreTools.Data.Models/Metadata/Machine.cs b/SabreTools.Data.Models/Metadata/Machine.cs index 6c4a3ecd..2563a549 100644 --- a/SabreTools.Data.Models/Metadata/Machine.cs +++ b/SabreTools.Data.Models/Metadata/Machine.cs @@ -480,6 +480,11 @@ namespace SabreTools.Data.Models.Metadata else if (Manufacturer is not null && !Manufacturer.Equals(other.Manufacturer, StringComparison.OrdinalIgnoreCase)) return false; + if ((Name is null) ^ (other.Name is null)) + return false; + else if (Name is not null && !Name.Equals(other.Name, StringComparison.OrdinalIgnoreCase)) + return false; + if ((Notes is null) ^ (other.Notes is null)) return false; else if (Notes is not null && !Notes.Equals(other.Notes, StringComparison.OrdinalIgnoreCase)) diff --git a/SabreTools.Metadata.DatItems/Machine.cs b/SabreTools.Metadata.DatItems/Machine.cs index ad7c2d57..d5a42cf8 100644 --- a/SabreTools.Metadata.DatItems/Machine.cs +++ b/SabreTools.Metadata.DatItems/Machine.cs @@ -468,7 +468,7 @@ namespace SabreTools.Metadata.DatItems return false; // Compare internal models - return _internal.EqualTo(otherItem._internal); + return _internal.Equals(otherItem._internal); } /// @@ -483,7 +483,7 @@ namespace SabreTools.Metadata.DatItems return false; // Compare internal models - return _internal.EqualTo(otherItem._internal); + return _internal.Equals(otherItem._internal); } /// @@ -493,34 +493,8 @@ namespace SabreTools.Metadata.DatItems if (other is null) return false; - // Properties - if ((Description is null) ^ (other.Description is null)) - return false; - if (Description is not null && !Description.Equals(other.Description, StringComparison.OrdinalIgnoreCase)) - return false; - - if (IsBios != other.IsBios) - return false; - - if (IsDevice != other.IsDevice) - return false; - - if (IsMechanical != other.IsMechanical) - return false; - - if ((Name is null) ^ (other.Name is null)) - return false; - if (Name is not null && !Name.Equals(other.Name, StringComparison.OrdinalIgnoreCase)) - return false; - - if (Runnable != other.Runnable) - return false; - - if (Supported != other.Supported) - return false; - // Compare internal models - return _internal.EqualTo(other._internal); + return _internal.Equals(other._internal); } #endregion From b5477927990c2364383f9a850447b0133d50f01d Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sat, 4 Apr 2026 16:34:13 -0400 Subject: [PATCH 087/142] Two more header keys to properties --- SabreTools.Data.Extensions/MetadataExtensions.cs | 2 ++ SabreTools.Data.Models/Metadata/Header.cs | 10 ++++------ .../DatFileTests.FromMetadata.cs | 8 ++++---- .../DatFileTests.ToMetadata.cs | 4 ++-- .../DatFile.FromMetadata.cs | 8 ++++---- SabreTools.Metadata.DatFiles/DatHeader.cs | 12 ++++++++++++ SabreTools.Metadata.Filter/FilterObject.cs | 6 ++++++ SabreTools.Metadata/DictionaryBaseExtensions.cs | 4 ++++ .../OfflineList.Deserializer.cs | 14 +++++++------- .../OfflineList.Serializer.cs | 4 ++-- 10 files changed, 47 insertions(+), 25 deletions(-) diff --git a/SabreTools.Data.Extensions/MetadataExtensions.cs b/SabreTools.Data.Extensions/MetadataExtensions.cs index 980fc1cb..468b55f6 100644 --- a/SabreTools.Data.Extensions/MetadataExtensions.cs +++ b/SabreTools.Data.Extensions/MetadataExtensions.cs @@ -146,6 +146,8 @@ namespace SabreTools.Data.Extensions cloneHeader.RomTitle = selfHeader.RomTitle; cloneHeader.RootDir = selfHeader.RootDir; cloneHeader.SampleMode = selfHeader.SampleMode; + cloneHeader.ScreenshotsHeight = selfHeader.ScreenshotsHeight; + cloneHeader.ScreenshotsWidth = selfHeader.ScreenshotsWidth; cloneHeader.System = selfHeader.System; cloneHeader.Timestamp = selfHeader.Timestamp; cloneHeader.Type = selfHeader.Type; diff --git a/SabreTools.Data.Models/Metadata/Header.cs b/SabreTools.Data.Models/Metadata/Header.cs index 31803fe3..c0b9c140 100644 --- a/SabreTools.Data.Models/Metadata/Header.cs +++ b/SabreTools.Data.Models/Metadata/Header.cs @@ -77,6 +77,10 @@ namespace SabreTools.Data.Models.Metadata /// (none|split|merged|nonmerged|fullmerged|device|full) "split" public MergingFlag SampleMode { get; set; } + public string? ScreenshotsHeight { get; set; } + + public string? ScreenshotsWidth { get; set; } + public string? System { get; set; } public string? Timestamp { get; set; } @@ -120,12 +124,6 @@ namespace SabreTools.Data.Models.Metadata /// string public const string SchemaLocationKey = "schemaLocation"; - /// string - public const string ScreenshotsHeightKey = "screenshotsHeight"; - - /// string - public const string ScreenshotsWidthKey = "screenshotsWidth"; - /// TODO: This needs an internal model OR mapping to fields /// Search [NoFilter] diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs index 78ba90bc..7596bf62 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs @@ -235,8 +235,8 @@ namespace SabreTools.Metadata.DatFiles.Test RootDir = "rootdir", SampleMode = Data.Models.Metadata.MergingFlag.Merged, [Data.Models.Metadata.Header.SchemaLocationKey] = "schemalocation", - [Data.Models.Metadata.Header.ScreenshotsHeightKey] = "screenshotsheight", - [Data.Models.Metadata.Header.ScreenshotsWidthKey] = "screenshotsWidth", + ScreenshotsHeight = "screenshotsheight", + ScreenshotsWidth = "screenshotsWidth", [Data.Models.Metadata.Header.SearchKey] = search, System = "system", Timestamp = "timestamp", @@ -1042,8 +1042,8 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("rootdir", datHeader.RootDir); Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, datHeader.SampleMode); Assert.Equal("schemalocation", datHeader.ReadString(Data.Models.Metadata.Header.SchemaLocationKey)); - Assert.Equal("screenshotsheight", datHeader.ReadString(Data.Models.Metadata.Header.ScreenshotsHeightKey)); - Assert.Equal("screenshotsWidth", datHeader.ReadString(Data.Models.Metadata.Header.ScreenshotsWidthKey)); + Assert.Equal("screenshotsheight", datHeader.ScreenshotsHeight); + Assert.Equal("screenshotsWidth", datHeader.ScreenshotsWidth); Assert.NotNull(datHeader.ReadString(Data.Models.Metadata.Header.SearchKey)); Assert.Equal("system", datHeader.System); Assert.Equal("timestamp", datHeader.Timestamp); diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs index 5b9af6fe..4835d4c8 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs @@ -387,8 +387,8 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("rootdir", header.RootDir); Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, header.SampleMode); Assert.Equal("schemalocation", header.ReadString(Data.Models.Metadata.Header.SchemaLocationKey)); - Assert.Equal("screenshotsheight", header.ReadString(Data.Models.Metadata.Header.ScreenshotsHeightKey)); - Assert.Equal("screenshotsWidth", header.ReadString(Data.Models.Metadata.Header.ScreenshotsWidthKey)); + Assert.Equal("screenshotsheight", header.ScreenshotsHeight); + Assert.Equal("screenshotsWidth", header.ScreenshotsWidth); Assert.NotNull(header.Read(Data.Models.Metadata.Header.SearchKey)); Assert.Equal("system", header.System); Assert.Equal("timestamp", header.Timestamp); diff --git a/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs b/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs index a9781137..d47b7517 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs @@ -154,10 +154,10 @@ namespace SabreTools.Metadata.DatFiles Header.SampleMode = header.SampleMode; if (Header.ReadString(Data.Models.Metadata.Header.SchemaLocationKey) is null) Header.Write(Data.Models.Metadata.Header.SchemaLocationKey, header.ReadString(Data.Models.Metadata.Header.SchemaLocationKey)); - if (Header.ReadString(Data.Models.Metadata.Header.ScreenshotsHeightKey) is null) - Header.Write(Data.Models.Metadata.Header.ScreenshotsHeightKey, header.ReadString(Data.Models.Metadata.Header.ScreenshotsHeightKey)); - if (Header.ReadString(Data.Models.Metadata.Header.ScreenshotsWidthKey) is null) - Header.Write(Data.Models.Metadata.Header.ScreenshotsWidthKey, header.ReadString(Data.Models.Metadata.Header.ScreenshotsWidthKey)); + if (Header.ScreenshotsHeight is null) + Header.ScreenshotsHeight = header.ScreenshotsHeight; + if (Header.ScreenshotsWidth is null) + Header.ScreenshotsWidth = header.ScreenshotsWidth; if (Header.System is null) Header.System = header.System; if (Header.Timestamp is null) diff --git a/SabreTools.Metadata.DatFiles/DatHeader.cs b/SabreTools.Metadata.DatFiles/DatHeader.cs index 3d601c9f..0d5c4704 100644 --- a/SabreTools.Metadata.DatFiles/DatHeader.cs +++ b/SabreTools.Metadata.DatFiles/DatHeader.cs @@ -238,6 +238,18 @@ namespace SabreTools.Metadata.DatFiles set => _internal.SampleMode = value; } + public string? ScreenshotsHeight + { + get => _internal.ScreenshotsHeight; + set => _internal.ScreenshotsHeight = value; + } + + public string? ScreenshotsWidth + { + get => _internal.ScreenshotsWidth; + set => _internal.ScreenshotsWidth = value; + } + [JsonIgnore] public bool SearchSpecified { diff --git a/SabreTools.Metadata.Filter/FilterObject.cs b/SabreTools.Metadata.Filter/FilterObject.cs index 0bd83177..26511e95 100644 --- a/SabreTools.Metadata.Filter/FilterObject.cs +++ b/SabreTools.Metadata.Filter/FilterObject.cs @@ -855,6 +855,12 @@ namespace SabreTools.Metadata.Filter case Header item when fieldName == "samplemode": checkValue = item.SampleMode.AsStringValue(); return true; + case Header item when fieldName == "screenshotsheight": + checkValue = item.ScreenshotsHeight; + return true; + case Header item when fieldName == "screenshotswidth": + checkValue = item.ScreenshotsWidth; + return true; case Header item when fieldName == "system": checkValue = item.System; return true; diff --git a/SabreTools.Metadata/DictionaryBaseExtensions.cs b/SabreTools.Metadata/DictionaryBaseExtensions.cs index 6c9941a2..ccf77fa3 100644 --- a/SabreTools.Metadata/DictionaryBaseExtensions.cs +++ b/SabreTools.Metadata/DictionaryBaseExtensions.cs @@ -232,6 +232,10 @@ namespace SabreTools.Metadata return false; if (selfHeader.SampleMode != otherHeader.SampleMode) return false; + if (selfHeader.ScreenshotsHeight != otherHeader.ScreenshotsHeight) + return false; + if (selfHeader.ScreenshotsWidth != otherHeader.ScreenshotsWidth) + return false; if (selfHeader.System != otherHeader.System) return false; if (selfHeader.Timestamp != otherHeader.Timestamp) diff --git a/SabreTools.Serialization.CrossModel/OfflineList.Deserializer.cs b/SabreTools.Serialization.CrossModel/OfflineList.Deserializer.cs index 02efd5fe..d8b8fe37 100644 --- a/SabreTools.Serialization.CrossModel/OfflineList.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/OfflineList.Deserializer.cs @@ -38,15 +38,15 @@ namespace SabreTools.Serialization.CrossModel if (item.Name is not null || item.ContainsKey(Data.Models.Metadata.Header.ImFolderKey) - || item.DatVersion != null - || item.System != null - || item.ContainsKey(Data.Models.Metadata.Header.ScreenshotsWidthKey) - || item.ContainsKey(Data.Models.Metadata.Header.ScreenshotsHeightKey) + || item.DatVersion is not null + || item.System is not null + || item.ScreenshotsHeight is not null + || item.ScreenshotsWidth is not null || item.ContainsKey(Data.Models.Metadata.Header.InfosKey) || item.ContainsKey(Data.Models.Metadata.Header.CanOpenKey) || item.ContainsKey(Data.Models.Metadata.Header.NewDatKey) || item.ContainsKey(Data.Models.Metadata.Header.SearchKey) - || item.RomTitle != null) + || item.RomTitle is not null) { dat.Configuration = new Configuration { @@ -54,8 +54,8 @@ namespace SabreTools.Serialization.CrossModel ImFolder = item.ReadString(Data.Models.Metadata.Header.ImFolderKey), DatVersion = item.DatVersion, System = item.System, - ScreenshotsWidth = item.ReadString(Data.Models.Metadata.Header.ScreenshotsWidthKey), - ScreenshotsHeight = item.ReadString(Data.Models.Metadata.Header.ScreenshotsHeightKey), + ScreenshotsWidth = item.ScreenshotsHeight, + ScreenshotsHeight = item.ScreenshotsWidth, Infos = item.Read(Data.Models.Metadata.Header.InfosKey), CanOpen = item.Read(Data.Models.Metadata.Header.CanOpenKey), NewDat = item.Read(Data.Models.Metadata.Header.NewDatKey), diff --git a/SabreTools.Serialization.CrossModel/OfflineList.Serializer.cs b/SabreTools.Serialization.CrossModel/OfflineList.Serializer.cs index ac4e12da..7a8dcf6c 100644 --- a/SabreTools.Serialization.CrossModel/OfflineList.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/OfflineList.Serializer.cs @@ -41,8 +41,8 @@ namespace SabreTools.Serialization.CrossModel header[Data.Models.Metadata.Header.ImFolderKey] = item.Configuration.ImFolder; header.DatVersion = item.Configuration.DatVersion; header.System = item.Configuration.System; - header[Data.Models.Metadata.Header.ScreenshotsWidthKey] = item.Configuration.ScreenshotsWidth; - header[Data.Models.Metadata.Header.ScreenshotsHeightKey] = item.Configuration.ScreenshotsHeight; + header.ScreenshotsHeight = item.Configuration.ScreenshotsWidth; + header.ScreenshotsWidth = item.Configuration.ScreenshotsHeight; header[Data.Models.Metadata.Header.InfosKey] = item.Configuration.Infos; header[Data.Models.Metadata.Header.CanOpenKey] = item.Configuration.CanOpen; header[Data.Models.Metadata.Header.NewDatKey] = item.Configuration.NewDat; From cd49a64c2b46b07cf9b04efa9d9cf714bc3df2a0 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sat, 4 Apr 2026 17:58:09 -0400 Subject: [PATCH 088/142] Split header skipper and header row into separate properties --- SabreTools.Data.Extensions/MetadataExtensions.cs | 2 ++ SabreTools.Data.Models/Metadata/Header.cs | 7 ++++--- .../DatFileTests.FromMetadata.cs | 5 +++-- .../DatFileTests.ToMetadata.cs | 7 ++++++- SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs | 4 ++-- SabreTools.Metadata.DatFiles/DatHeader.cs | 12 ++++++++++++ SabreTools.Metadata.Filter/FilterObject.cs | 4 ++++ SabreTools.Metadata/DictionaryBaseExtensions.cs | 2 ++ .../AttractMode.Deserializer.cs | 2 +- .../AttractMode.Serializer.cs | 2 +- .../ClrMamePro.Deserializer.cs | 2 +- .../ClrMamePro.Serializer.cs | 2 +- .../Logiqx.Deserializer.cs | 8 +++----- .../Logiqx.Serializer.cs | 2 +- .../SeparatedValue.Deserializer.cs | 2 +- .../SeparatedValue.Serializer.cs | 2 +- 16 files changed, 45 insertions(+), 20 deletions(-) diff --git a/SabreTools.Data.Extensions/MetadataExtensions.cs b/SabreTools.Data.Extensions/MetadataExtensions.cs index 468b55f6..4408dec5 100644 --- a/SabreTools.Data.Extensions/MetadataExtensions.cs +++ b/SabreTools.Data.Extensions/MetadataExtensions.cs @@ -132,6 +132,8 @@ namespace SabreTools.Data.Extensions cloneHeader.ForceNodump = selfHeader.ForceNodump; cloneHeader.ForcePacking = selfHeader.ForcePacking; cloneHeader.ForceZipping = selfHeader.ForceZipping; + cloneHeader.HeaderRow = selfHeader.HeaderRow; + cloneHeader.HeaderSkipper = selfHeader.HeaderSkipper; cloneHeader.Homepage = selfHeader.Homepage; cloneHeader.Id = selfHeader.Id; cloneHeader.LockBiosMode = selfHeader.LockBiosMode; diff --git a/SabreTools.Data.Models/Metadata/Header.cs b/SabreTools.Data.Models/Metadata/Header.cs index c0b9c140..c0ef648a 100644 --- a/SabreTools.Data.Models/Metadata/Header.cs +++ b/SabreTools.Data.Models/Metadata/Header.cs @@ -44,6 +44,10 @@ namespace SabreTools.Data.Models.Metadata /// (yes|no) "yes" public bool? ForceZipping { get; set; } + public string[]? HeaderRow { get; set; } + + public string? HeaderSkipper { get; set; } + public string? Homepage { get; set; } public string? Id { get; set; } @@ -100,9 +104,6 @@ namespace SabreTools.Data.Models.Metadata [NoFilter] public const string CanOpenKey = "canOpen"; - /// string, string[] - public const string HeaderKey = "header"; - /// TODO: This needs an internal model OR mapping to fields /// Search [NoFilter] diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs index 7596bf62..32af8243 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs @@ -215,7 +215,8 @@ namespace SabreTools.Metadata.DatFiles.Test ForceNodump = Data.Models.Metadata.NodumpFlag.Required, ForcePacking = Data.Models.Metadata.PackingFlag.Zip, ForceZipping = true, - [Data.Models.Metadata.Header.HeaderKey] = "header", + HeaderRow = ["header"], + HeaderSkipper = "header", Homepage = "homepage", Id = "id", [Data.Models.Metadata.Header.ImagesKey] = images, @@ -1022,7 +1023,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal(Data.Models.Metadata.NodumpFlag.Required, datHeader.ForceNodump); Assert.Equal(Data.Models.Metadata.PackingFlag.Zip, datHeader.ForcePacking); Assert.True(datHeader.ForceZipping); - Assert.Equal("header", datHeader.ReadString(Data.Models.Metadata.Header.HeaderKey)); + Assert.Equal("header", datHeader.HeaderSkipper); Assert.Equal("homepage", datHeader.Homepage); Assert.Equal("id", datHeader.Id); Assert.NotNull(datHeader.ReadString(Data.Models.Metadata.Header.ImagesKey)); diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs index 4835d4c8..a8c224ef 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs @@ -367,7 +367,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal(Data.Models.Metadata.NodumpFlag.Required, header.ForceNodump); Assert.Equal(Data.Models.Metadata.PackingFlag.Zip, header.ForcePacking); Assert.True(header.ForceZipping); - Assert.Equal("header", header.ReadString(Data.Models.Metadata.Header.HeaderKey)); + Assert.Equal("header", header.HeaderSkipper); Assert.Equal("homepage", header.Homepage); Assert.Equal("id", header.Id); Assert.NotNull(header.Read(Data.Models.Metadata.Header.ImagesKey)); @@ -395,6 +395,11 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("type", header.Type); Assert.Equal("url", header.Url); Assert.Equal("version", header.Version); + + string[]? headerRowTitles = header.HeaderRow; + Assert.NotNull(headerRowTitles); + string? headerRowTitle = Assert.Single(headerRowTitles); + Assert.Equal("header", headerRowTitle); } private static void ValidateMetadataMachine(Data.Models.Metadata.Machine machine) diff --git a/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs b/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs index d47b7517..9bf8ef40 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs @@ -120,8 +120,8 @@ namespace SabreTools.Metadata.DatFiles Header.ForcePacking = header.ForcePacking; if (Header.ForceZipping is null) Header.ForceZipping = header.ForceZipping; - if (Header.ReadString(Data.Models.Metadata.Header.HeaderKey) is null) - Header.Write(Data.Models.Metadata.Header.HeaderKey, header.ReadString(Data.Models.Metadata.Header.HeaderKey)); + if (Header.HeaderSkipper is null) + Header.HeaderSkipper = header.HeaderSkipper; if (Header.Homepage is null) Header.Homepage = header.Homepage; if (Header.Id is null) diff --git a/SabreTools.Metadata.DatFiles/DatHeader.cs b/SabreTools.Metadata.DatFiles/DatHeader.cs index 0d5c4704..4f58cafb 100644 --- a/SabreTools.Metadata.DatFiles/DatHeader.cs +++ b/SabreTools.Metadata.DatFiles/DatHeader.cs @@ -127,6 +127,18 @@ namespace SabreTools.Metadata.DatFiles set => _internal.ForceZipping = value; } + public string[]? HeaderRow + { + get => _internal.HeaderRow; + set => _internal.HeaderRow = value; + } + + public string? HeaderSkipper + { + get => _internal.HeaderSkipper; + set => _internal.HeaderSkipper = value; + } + public string? Homepage { get => _internal.Homepage; diff --git a/SabreTools.Metadata.Filter/FilterObject.cs b/SabreTools.Metadata.Filter/FilterObject.cs index 26511e95..1d58d463 100644 --- a/SabreTools.Metadata.Filter/FilterObject.cs +++ b/SabreTools.Metadata.Filter/FilterObject.cs @@ -813,6 +813,10 @@ namespace SabreTools.Metadata.Filter case Header item when fieldName == "forcezipping": checkValue = item.ForceZipping.FromYesNo(); return true; + // Header.HeaderRow is intentionally skipped + case Header item when fieldName == "header" || fieldName == "headerskipper" || fieldName == "skipper": + checkValue = item.HeaderSkipper; + return true; case Header item when fieldName == "homepage": checkValue = item.Homepage; return true; diff --git a/SabreTools.Metadata/DictionaryBaseExtensions.cs b/SabreTools.Metadata/DictionaryBaseExtensions.cs index ccf77fa3..5dff9136 100644 --- a/SabreTools.Metadata/DictionaryBaseExtensions.cs +++ b/SabreTools.Metadata/DictionaryBaseExtensions.cs @@ -204,6 +204,8 @@ namespace SabreTools.Metadata return false; if (selfHeader.ForceZipping != otherHeader.ForceZipping) return false; + if (selfHeader.HeaderSkipper != otherHeader.HeaderSkipper) + return false; if (selfHeader.Homepage != otherHeader.Homepage) return false; if (selfHeader.Id != otherHeader.Id) diff --git a/SabreTools.Serialization.CrossModel/AttractMode.Deserializer.cs b/SabreTools.Serialization.CrossModel/AttractMode.Deserializer.cs index c944385a..83db08db 100644 --- a/SabreTools.Serialization.CrossModel/AttractMode.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/AttractMode.Deserializer.cs @@ -33,7 +33,7 @@ namespace SabreTools.Serialization.CrossModel { var metadataFile = new MetadataFile { - Header = item.ReadStringArray(Data.Models.Metadata.Header.HeaderKey), + Header = item.HeaderRow, }; return metadataFile; } diff --git a/SabreTools.Serialization.CrossModel/AttractMode.Serializer.cs b/SabreTools.Serialization.CrossModel/AttractMode.Serializer.cs index d6552156..db50c734 100644 --- a/SabreTools.Serialization.CrossModel/AttractMode.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/AttractMode.Serializer.cs @@ -32,7 +32,7 @@ namespace SabreTools.Serialization.CrossModel { var header = new Data.Models.Metadata.Header { - [Data.Models.Metadata.Header.HeaderKey] = item.Header, + HeaderRow = item.Header, }; return header; } diff --git a/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs b/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs index baad81f6..f4f87052 100644 --- a/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs @@ -53,7 +53,7 @@ namespace SabreTools.Serialization.CrossModel Homepage = item.Homepage, Url = item.Url, Comment = item.Comment, - Header = item.ReadString(Data.Models.Metadata.Header.HeaderKey), + Header = item.HeaderSkipper, Type = item.Type, ForceMerging = item.ForceMerging, ForceZipping = item.ForceZipping, diff --git a/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs b/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs index e86a4523..ba6663f2 100644 --- a/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs @@ -45,7 +45,7 @@ namespace SabreTools.Serialization.CrossModel Homepage = item.Homepage, Url = item.Url, Comment = item.Comment, - [Data.Models.Metadata.Header.HeaderKey] = item.Header, + HeaderSkipper = item.Header, Type = item.Type, ForceMerging = item.ForceMerging, ForceZipping = item.ForceZipping, diff --git a/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs b/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs index bd08976b..7bf85575 100644 --- a/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs @@ -56,16 +56,14 @@ namespace SabreTools.Serialization.CrossModel Type = item.Type, }; - string? headerVal = item.ReadString(Data.Models.Metadata.Header.HeaderKey); - - if (headerVal is not null + if (item.HeaderSkipper is not null || item.ForceMerging is not Data.Models.Metadata.MergingFlag.None || item.ForceNodump is not Data.Models.Metadata.NodumpFlag.None || item.ForcePacking is not Data.Models.Metadata.PackingFlag.None) { header.ClrMamePro = new Data.Models.Logiqx.ClrMamePro(); - if (headerVal is not null) - header.ClrMamePro.Header = headerVal; + if (item.HeaderSkipper is not null) + header.ClrMamePro.Header = item.HeaderSkipper; if (item.ForceMerging is not Data.Models.Metadata.MergingFlag.None) header.ClrMamePro.ForceMerging = item.ForceMerging; if (item.ForceNodump is not Data.Models.Metadata.NodumpFlag.None) diff --git a/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs b/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs index 171d0ad3..97ce3a76 100644 --- a/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs @@ -70,7 +70,7 @@ namespace SabreTools.Serialization.CrossModel if (item.ClrMamePro is not null) { - header[Data.Models.Metadata.Header.HeaderKey] = item.ClrMamePro.Header; + header.HeaderSkipper = item.ClrMamePro.Header; header.ForceMerging = item.ClrMamePro.ForceMerging; header.ForceNodump = item.ClrMamePro.ForceNodump; header.ForcePacking = item.ClrMamePro.ForcePacking; diff --git a/SabreTools.Serialization.CrossModel/SeparatedValue.Deserializer.cs b/SabreTools.Serialization.CrossModel/SeparatedValue.Deserializer.cs index 1b339120..5a261aa7 100644 --- a/SabreTools.Serialization.CrossModel/SeparatedValue.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/SeparatedValue.Deserializer.cs @@ -33,7 +33,7 @@ namespace SabreTools.Serialization.CrossModel { var metadataFile = new MetadataFile { - Header = item.ReadStringArray(Data.Models.Metadata.Header.HeaderKey), + Header = item.HeaderRow, }; return metadataFile; } diff --git a/SabreTools.Serialization.CrossModel/SeparatedValue.Serializer.cs b/SabreTools.Serialization.CrossModel/SeparatedValue.Serializer.cs index bd8c1729..23e53f73 100644 --- a/SabreTools.Serialization.CrossModel/SeparatedValue.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/SeparatedValue.Serializer.cs @@ -32,7 +32,7 @@ namespace SabreTools.Serialization.CrossModel { var header = new Data.Models.Metadata.Header { - [Data.Models.Metadata.Header.HeaderKey] = item.Header, + HeaderRow = item.Header, }; if (item.Row is not null && item.Row.Length > 0) From ca2a289a3fec041b87514eba4610a7803337d436 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sat, 4 Apr 2026 17:59:39 -0400 Subject: [PATCH 089/142] This remark was wrong --- SabreTools.Data.Models/Metadata/Header.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SabreTools.Data.Models/Metadata/Header.cs b/SabreTools.Data.Models/Metadata/Header.cs index c0ef648a..72fae142 100644 --- a/SabreTools.Data.Models/Metadata/Header.cs +++ b/SabreTools.Data.Models/Metadata/Header.cs @@ -105,7 +105,7 @@ namespace SabreTools.Data.Models.Metadata public const string CanOpenKey = "canOpen"; /// TODO: This needs an internal model OR mapping to fields - /// Search + /// Images [NoFilter] public const string ImagesKey = "images"; From ebf67d39cf31c7e50fe566396e90e92ad33b509c Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sat, 4 Apr 2026 18:24:58 -0400 Subject: [PATCH 090/142] Lazily make OfflineList-specific header items properties --- .../MetadataExtensions.cs | 6 + SabreTools.Data.Models/Metadata/Header.cs | 45 +++----- .../DatFileTests.FromMetadata.cs | 24 ++-- .../DatFileTests.ToMetadata.cs | 31 +++-- .../DatHeaderTests.cs | 108 ------------------ .../DatFile.FromMetadata.cs | 24 ++-- SabreTools.Metadata.DatFiles/DatHeader.cs | 75 ++++++------ SabreTools.Metadata.Filter/FilterObject.cs | 8 ++ .../DictionaryBaseExtensions.cs | 8 ++ .../OfflineList.Deserializer.cs | 29 ++--- .../OfflineList.Serializer.cs | 14 +-- 11 files changed, 135 insertions(+), 237 deletions(-) diff --git a/SabreTools.Data.Extensions/MetadataExtensions.cs b/SabreTools.Data.Extensions/MetadataExtensions.cs index 4408dec5..12ca38bf 100644 --- a/SabreTools.Data.Extensions/MetadataExtensions.cs +++ b/SabreTools.Data.Extensions/MetadataExtensions.cs @@ -120,6 +120,7 @@ namespace SabreTools.Data.Extensions cloneHeader.Author = selfHeader.Author; cloneHeader.BiosMode = selfHeader.BiosMode; cloneHeader.Build = selfHeader.Build; + cloneHeader.CanOpen = selfHeader.CanOpen; cloneHeader.Category = selfHeader.Category; cloneHeader.Comment = selfHeader.Comment; cloneHeader.Date = selfHeader.Date; @@ -136,11 +137,15 @@ namespace SabreTools.Data.Extensions cloneHeader.HeaderSkipper = selfHeader.HeaderSkipper; cloneHeader.Homepage = selfHeader.Homepage; cloneHeader.Id = selfHeader.Id; + cloneHeader.Images = selfHeader.Images; + cloneHeader.ImFolder = selfHeader.ImFolder; + cloneHeader.Infos = selfHeader.Infos; cloneHeader.LockBiosMode = selfHeader.LockBiosMode; cloneHeader.LockRomMode = selfHeader.LockRomMode; cloneHeader.LockSampleMode = selfHeader.LockSampleMode; cloneHeader.MameConfig = selfHeader.MameConfig; cloneHeader.Name = selfHeader.Name; + cloneHeader.NewDat = selfHeader.NewDat; cloneHeader.Notes = selfHeader.Notes; cloneHeader.Plugin = selfHeader.Plugin; cloneHeader.RefName = selfHeader.RefName; @@ -150,6 +155,7 @@ namespace SabreTools.Data.Extensions cloneHeader.SampleMode = selfHeader.SampleMode; cloneHeader.ScreenshotsHeight = selfHeader.ScreenshotsHeight; cloneHeader.ScreenshotsWidth = selfHeader.ScreenshotsWidth; + cloneHeader.Search = selfHeader.Search; cloneHeader.System = selfHeader.System; cloneHeader.Timestamp = selfHeader.Timestamp; cloneHeader.Type = selfHeader.Type; diff --git a/SabreTools.Data.Models/Metadata/Header.cs b/SabreTools.Data.Models/Metadata/Header.cs index 72fae142..4933d094 100644 --- a/SabreTools.Data.Models/Metadata/Header.cs +++ b/SabreTools.Data.Models/Metadata/Header.cs @@ -15,6 +15,9 @@ namespace SabreTools.Data.Models.Metadata public string? Build { get; set; } + /// TODO: This needs an internal model OR mapping to fields + public OfflineList.CanOpen? CanOpen { get; set; } + public string? Category { get; set; } public string? Comment { get; set; } @@ -52,6 +55,14 @@ namespace SabreTools.Data.Models.Metadata public string? Id { get; set; } + /// TODO: This needs an internal model OR mapping to fields + public OfflineList.Images? Images { get; set; } + + public string? ImFolder { get; set; } + + /// TODO: This needs an internal model OR mapping to fields + public OfflineList.Infos? Infos { get; set; } + /// (yes|no) "no" public bool? LockBiosMode { get; set; } @@ -65,6 +76,9 @@ namespace SabreTools.Data.Models.Metadata public string? Name { get; set; } + /// TODO: This needs an internal model OR mapping to fields + public OfflineList.NewDat? NewDat { get; set; } + public string? Notes { get; set; } public string? Plugin { get; set; } @@ -85,6 +99,9 @@ namespace SabreTools.Data.Models.Metadata public string? ScreenshotsWidth { get; set; } + /// TODO: This needs an internal model OR mapping to fields + public OfflineList.Search? Search { get; set; } + public string? System { get; set; } public string? Timestamp { get; set; } @@ -99,37 +116,9 @@ namespace SabreTools.Data.Models.Metadata #region Keys - /// TODO: This needs an internal model OR mapping to fields - /// CanOpen - [NoFilter] - public const string CanOpenKey = "canOpen"; - - /// TODO: This needs an internal model OR mapping to fields - /// Images - [NoFilter] - public const string ImagesKey = "images"; - - /// string - public const string ImFolderKey = "imFolder"; - - /// TODO: This needs an internal model OR mapping to fields - /// Infos - [NoFilter] - public const string InfosKey = "infos"; - - /// TODO: This needs an internal model OR mapping to fields - /// NewDat - [NoFilter] - public const string NewDatKey = "newDat"; - /// string public const string SchemaLocationKey = "schemaLocation"; - /// TODO: This needs an internal model OR mapping to fields - /// Search - [NoFilter] - public const string SearchKey = "search"; - #endregion } } diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs index 32af8243..89a7172e 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs @@ -202,7 +202,7 @@ namespace SabreTools.Metadata.DatFiles.Test Author = "author", BiosMode = Data.Models.Metadata.MergingFlag.Merged, Build = "build", - [Data.Models.Metadata.Header.CanOpenKey] = canOpen, + CanOpen = canOpen, Category = "category", Comment = "comment", Date = "date", @@ -219,15 +219,15 @@ namespace SabreTools.Metadata.DatFiles.Test HeaderSkipper = "header", Homepage = "homepage", Id = "id", - [Data.Models.Metadata.Header.ImagesKey] = images, - [Data.Models.Metadata.Header.ImFolderKey] = "imfolder", - [Data.Models.Metadata.Header.InfosKey] = infos, + Images = images, + ImFolder = "imfolder", + Infos = infos, LockBiosMode = true, LockRomMode = true, LockSampleMode = true, MameConfig = "mameconfig", Name = "name", - [Data.Models.Metadata.Header.NewDatKey] = newDat, + NewDat = newDat, Notes = "notes", Plugin = "plugin", RefName = "refname", @@ -238,7 +238,7 @@ namespace SabreTools.Metadata.DatFiles.Test [Data.Models.Metadata.Header.SchemaLocationKey] = "schemalocation", ScreenshotsHeight = "screenshotsheight", ScreenshotsWidth = "screenshotsWidth", - [Data.Models.Metadata.Header.SearchKey] = search, + Search = search, System = "system", Timestamp = "timestamp", Type = "type", @@ -1010,7 +1010,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("author", datHeader.Author); Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, datHeader.BiosMode); Assert.Equal("build", datHeader.Build); - Assert.Equal("ext", datHeader.ReadString(Data.Models.Metadata.Header.CanOpenKey)); + Assert.NotNull(datHeader.CanOpen); Assert.Equal("category", datHeader.Category); Assert.Equal("comment", datHeader.Comment); Assert.Equal("date", datHeader.Date); @@ -1026,15 +1026,15 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("header", datHeader.HeaderSkipper); Assert.Equal("homepage", datHeader.Homepage); Assert.Equal("id", datHeader.Id); - Assert.NotNull(datHeader.ReadString(Data.Models.Metadata.Header.ImagesKey)); - Assert.Equal("imfolder", datHeader.ReadString(Data.Models.Metadata.Header.ImFolderKey)); - Assert.NotNull(datHeader.ReadString(Data.Models.Metadata.Header.InfosKey)); + Assert.NotNull(datHeader.Images); + Assert.Equal("imfolder", datHeader.ImFolder); + Assert.NotNull(datHeader.Infos); Assert.True(datHeader.LockBiosMode); Assert.True(datHeader.LockRomMode); Assert.True(datHeader.LockSampleMode); Assert.Equal("mameconfig", datHeader.MameConfig); Assert.Equal("name", datHeader.Name); - Assert.NotNull(datHeader.ReadString(Data.Models.Metadata.Header.NewDatKey)); + Assert.NotNull(datHeader.NewDat); Assert.Equal("notes", datHeader.Notes); Assert.Equal("plugin", datHeader.Plugin); Assert.Equal("refname", datHeader.RefName); @@ -1045,7 +1045,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("schemalocation", datHeader.ReadString(Data.Models.Metadata.Header.SchemaLocationKey)); Assert.Equal("screenshotsheight", datHeader.ScreenshotsHeight); Assert.Equal("screenshotsWidth", datHeader.ScreenshotsWidth); - Assert.NotNull(datHeader.ReadString(Data.Models.Metadata.Header.SearchKey)); + Assert.NotNull(datHeader.Search); Assert.Equal("system", datHeader.System); Assert.Equal("timestamp", datHeader.Timestamp); Assert.Equal("type", datHeader.Type); diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs index a8c224ef..7c643816 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs @@ -92,17 +92,14 @@ namespace SabreTools.Metadata.DatFiles.Test private static DatHeader CreateHeader() { - DatHeader item = new DatHeader(CreateMetadataHeader()); - - item.Write(Data.Models.Metadata.Header.CanOpenKey, ["ext"]); - item.Write(Data.Models.Metadata.Header.ImagesKey, - new Data.Models.OfflineList.Images() { Height = "height" }); - item.Write(Data.Models.Metadata.Header.InfosKey, - new Data.Models.OfflineList.Infos() { Comment = new Data.Models.OfflineList.Comment() }); - item.Write(Data.Models.Metadata.Header.NewDatKey, - new Data.Models.OfflineList.NewDat() { DatUrl = new Data.Models.OfflineList.DatUrl() }); - item.Write(Data.Models.Metadata.Header.SearchKey, - new Data.Models.OfflineList.Search() { To = [] }); + DatHeader item = new DatHeader(CreateMetadataHeader()) + { + CanOpen = new Data.Models.OfflineList.CanOpen { Extension = ["ext"] }, + Images = new Data.Models.OfflineList.Images() { Height = "height" }, + Infos = new Data.Models.OfflineList.Infos() { Comment = new Data.Models.OfflineList.Comment() }, + NewDat = new Data.Models.OfflineList.NewDat() { DatUrl = new Data.Models.OfflineList.DatUrl() }, + Search = new Data.Models.OfflineList.Search() { To = [] }, + }; return item; } @@ -354,7 +351,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("author", header.Author); Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, header.BiosMode); Assert.Equal("build", header.Build); - Assert.NotNull(header.Read(Data.Models.Metadata.Header.CanOpenKey)); + Assert.NotNull(header.CanOpen); Assert.Equal("category", header.Category); Assert.Equal("comment", header.Comment); Assert.Equal("date", header.Date); @@ -370,15 +367,15 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("header", header.HeaderSkipper); Assert.Equal("homepage", header.Homepage); Assert.Equal("id", header.Id); - Assert.NotNull(header.Read(Data.Models.Metadata.Header.ImagesKey)); - Assert.Equal("imfolder", header.ReadString(Data.Models.Metadata.Header.ImFolderKey)); - Assert.NotNull(header.Read(Data.Models.Metadata.Header.InfosKey)); + Assert.NotNull(header.Images); + Assert.Equal("imfolder", header.ImFolder); + Assert.NotNull(header.Infos); Assert.True(header.LockBiosMode); Assert.True(header.LockRomMode); Assert.True(header.LockSampleMode); Assert.Equal("mameconfig", header.MameConfig); Assert.Equal("name", header.Name); - Assert.NotNull(header.Read(Data.Models.Metadata.Header.NewDatKey)); + Assert.NotNull(header.NewDat); Assert.Equal("notes", header.Notes); Assert.Equal("plugin", header.Plugin); Assert.Equal("refname", header.RefName); @@ -389,7 +386,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("schemalocation", header.ReadString(Data.Models.Metadata.Header.SchemaLocationKey)); Assert.Equal("screenshotsheight", header.ScreenshotsHeight); Assert.Equal("screenshotsWidth", header.ScreenshotsWidth); - Assert.NotNull(header.Read(Data.Models.Metadata.Header.SearchKey)); + Assert.NotNull(header.Search); Assert.Equal("system", header.System); Assert.Equal("timestamp", header.Timestamp); Assert.Equal("type", header.Type); diff --git a/SabreTools.Metadata.DatFiles.Test/DatHeaderTests.cs b/SabreTools.Metadata.DatFiles.Test/DatHeaderTests.cs index 18f669f0..e74cc055 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatHeaderTests.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatHeaderTests.cs @@ -4,114 +4,6 @@ namespace SabreTools.Metadata.DatFiles.Test { public class DatHeaderTests { - #region CanOpenSpecified - - [Fact] - public void CanOpenSpecified_Missing() - { - DatHeader header = new DatHeader(); - header.Write(Data.Models.Metadata.Header.CanOpenKey, null); - Assert.False(header.CanOpenSpecified); - } - - [Fact] - public void CanOpenSpecified_Empty() - { - DatHeader header = new DatHeader(); - header.Write(Data.Models.Metadata.Header.CanOpenKey, []); - Assert.False(header.CanOpenSpecified); - } - - [Fact] - public void CanOpenSpecified_Exists() - { - DatHeader header = new DatHeader(); - header.Write(Data.Models.Metadata.Header.CanOpenKey, ["value"]); - Assert.True(header.CanOpenSpecified); - } - - #endregion - - #region ImagesSpecified - - [Fact] - public void ImagesSpecified_Missing() - { - DatHeader header = new DatHeader(); - header.Write(Data.Models.Metadata.Header.ImagesKey, null); - Assert.False(header.ImagesSpecified); - } - - [Fact] - public void ImagesSpecified_Exists() - { - DatHeader header = new DatHeader(); - header.Write(Data.Models.Metadata.Header.ImagesKey, new()); - Assert.True(header.ImagesSpecified); - } - - #endregion - - #region InfosSpecified - - [Fact] - public void InfosSpecified_Missing() - { - DatHeader header = new DatHeader(); - header.Write(Data.Models.Metadata.Header.InfosKey, null); - Assert.False(header.InfosSpecified); - } - - [Fact] - public void InfosSpecified_Exists() - { - DatHeader header = new DatHeader(); - header.Write(Data.Models.Metadata.Header.InfosKey, new()); - Assert.True(header.InfosSpecified); - } - - #endregion - - #region NewDatSpecified - - [Fact] - public void NewDatSpecified_Missing() - { - DatHeader header = new DatHeader(); - header.Write(Data.Models.Metadata.Header.NewDatKey, null); - Assert.False(header.NewDatSpecified); - } - - [Fact] - public void NewDatSpecified_Exists() - { - DatHeader header = new DatHeader(); - header.Write(Data.Models.Metadata.Header.NewDatKey, new()); - Assert.True(header.NewDatSpecified); - } - - #endregion - - #region SearchSpecified - - [Fact] - public void SearchSpecified_Missing() - { - DatHeader header = new DatHeader(); - header.Write(Data.Models.Metadata.Header.SearchKey, null); - Assert.False(header.SearchSpecified); - } - - [Fact] - public void SearchSpecified_Exists() - { - DatHeader header = new DatHeader(); - header.Write(Data.Models.Metadata.Header.SearchKey, new()); - Assert.True(header.SearchSpecified); - } - - #endregion - #region Clone [Fact] diff --git a/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs b/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs index 9bf8ef40..0a67da5c 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs @@ -69,25 +69,25 @@ namespace SabreTools.Metadata.DatFiles Header.Name = header.Name; // Convert subheader values - var canOpen = item.Read(Data.Models.Metadata.Header.CanOpenKey); + var canOpen = item.CanOpen; if (canOpen?.Extension is not null) - Header.Write(Data.Models.Metadata.Header.CanOpenKey, canOpen.Extension); + Header.CanOpen = canOpen; - var images = item.Read(Data.Models.Metadata.Header.ImagesKey); + var images = item.Images; if (images is not null) - Header.Write(Data.Models.Metadata.Header.ImagesKey, images); + Header.Images = images; - var infos = item.Read(Data.Models.Metadata.Header.InfosKey); + var infos = item.Infos; if (infos is not null) - Header.Write(Data.Models.Metadata.Header.InfosKey, infos); + Header.Infos = infos; - var newDat = item.Read(Data.Models.Metadata.Header.NewDatKey); + var newDat = item.NewDat; if (newDat is not null) - Header.Write(Data.Models.Metadata.Header.NewDatKey, newDat); + Header.NewDat = newDat; - var search = item.Read(Data.Models.Metadata.Header.SearchKey); + var search = item.Search; if (search is not null) - Header.Write(Data.Models.Metadata.Header.SearchKey, search); + Header.Search = search; // Selectively set all possible fields -- TODO: Figure out how to make this less manual if (Header.Author is null) @@ -126,8 +126,8 @@ namespace SabreTools.Metadata.DatFiles Header.Homepage = header.Homepage; if (Header.Id is null) Header.Id = header.Id; - if (Header.ReadString(Data.Models.Metadata.Header.ImFolderKey) is null) - Header.Write(Data.Models.Metadata.Header.ImFolderKey, header.ReadString(Data.Models.Metadata.Header.ImFolderKey)); + if (Header.ImFolder is null) + Header.ImFolder = header.ImFolder; if (Header.LockBiosMode is null) Header.LockBiosMode = header.LockBiosMode; if (Header.LockRomMode is null) diff --git a/SabreTools.Metadata.DatFiles/DatHeader.cs b/SabreTools.Metadata.DatFiles/DatHeader.cs index 4f58cafb..1dffbde6 100644 --- a/SabreTools.Metadata.DatFiles/DatHeader.cs +++ b/SabreTools.Metadata.DatFiles/DatHeader.cs @@ -35,16 +35,15 @@ namespace SabreTools.Metadata.DatFiles set => _internal.Build = value; } - [JsonIgnore] - public bool CanOpenSpecified + public Data.Models.OfflineList.CanOpen? CanOpen { - get - { - var canOpen = ReadStringArray(Data.Models.Metadata.Header.CanOpenKey); - return canOpen is not null && canOpen.Length > 0; - } + get => _internal.CanOpen; + set => _internal.CanOpen = value; } + [JsonIgnore] + public bool CanOpenSpecified => CanOpen is not null; + public string? Category { get => _internal.Category; @@ -151,24 +150,30 @@ namespace SabreTools.Metadata.DatFiles set => _internal.Id = value; } - [JsonIgnore] - public bool ImagesSpecified + public Data.Models.OfflineList.Images? Images { - get - { - return Read(Data.Models.Metadata.Header.ImagesKey) is not null; - } + get => _internal.Images; + set => _internal.Images = value; } [JsonIgnore] - public bool InfosSpecified + public bool ImagesSpecified => Images is not null; + + public string? ImFolder { - get - { - return Read(Data.Models.Metadata.Header.InfosKey) is not null; - } + get => _internal.ImFolder; + set => _internal.ImFolder = value; } + public Data.Models.OfflineList.Infos? Infos + { + get => _internal.Infos; + set => _internal.Infos = value; + } + + [JsonIgnore] + public bool InfosSpecified => Infos is not null; + public bool? LockBiosMode { get => _internal.LockBiosMode; @@ -199,15 +204,15 @@ namespace SabreTools.Metadata.DatFiles set => _internal.Name = value; } - [JsonIgnore] - public bool NewDatSpecified + public Data.Models.OfflineList.NewDat? NewDat { - get - { - return Read(Data.Models.Metadata.Header.NewDatKey) is not null; - } + get => _internal.NewDat; + set => _internal.NewDat = value; } + [JsonIgnore] + public bool NewDatSpecified => NewDat is not null; + public string? Notes { get => _internal.Notes; @@ -262,15 +267,15 @@ namespace SabreTools.Metadata.DatFiles set => _internal.ScreenshotsWidth = value; } - [JsonIgnore] - public bool SearchSpecified + public Data.Models.OfflineList.Search? Search { - get - { - return Read(Data.Models.Metadata.Header.SearchKey) is not null; - } + get => _internal.Search; + set => _internal.Search = value; } + [JsonIgnore] + public bool SearchSpecified => Search is not null; + public string? System { get => _internal.System; @@ -346,15 +351,15 @@ namespace SabreTools.Metadata.DatFiles // Convert subheader values if (CanOpenSpecified) - header[Data.Models.Metadata.Header.CanOpenKey] = new Data.Models.OfflineList.CanOpen { Extension = ReadStringArray(Data.Models.Metadata.Header.CanOpenKey) }; + header.CanOpen = CanOpen; if (ImagesSpecified) - header[Data.Models.Metadata.Header.ImagesKey] = Read(Data.Models.Metadata.Header.ImagesKey); + header.Images = Images; if (InfosSpecified) - header[Data.Models.Metadata.Header.InfosKey] = Read(Data.Models.Metadata.Header.InfosKey); + header.Infos = Infos; if (NewDatSpecified) - header[Data.Models.Metadata.Header.NewDatKey] = Read(Data.Models.Metadata.Header.NewDatKey); + header.NewDat = NewDat; if (SearchSpecified) - header[Data.Models.Metadata.Header.SearchKey] = Read(Data.Models.Metadata.Header.SearchKey); + header.Search = Search; return header; } diff --git a/SabreTools.Metadata.Filter/FilterObject.cs b/SabreTools.Metadata.Filter/FilterObject.cs index 1d58d463..138c9798 100644 --- a/SabreTools.Metadata.Filter/FilterObject.cs +++ b/SabreTools.Metadata.Filter/FilterObject.cs @@ -777,6 +777,7 @@ namespace SabreTools.Metadata.Filter case Header item when fieldName == "build": checkValue = item.Build; return true; + // Header.CanOpen is intentionally skipped case Header item when fieldName == "category": checkValue = item.Category; return true; @@ -823,6 +824,11 @@ namespace SabreTools.Metadata.Filter case Header item when fieldName == "id": checkValue = item.Id; return true; + // Header.Images is intentionally skipped + case Header item when fieldName == "imfolder": + checkValue = item.ImFolder; + return true; + // Header.Infos is intentionally skipped case Header item when fieldName == "lockbiosmode": checkValue = item.LockBiosMode.FromYesNo(); return true; @@ -838,6 +844,7 @@ namespace SabreTools.Metadata.Filter case Header item when fieldName == "name": checkValue = item.Name; return true; + // Header.NewDat is intentionally skipped case Header item when fieldName == "notes": checkValue = item.Notes; return true; @@ -865,6 +872,7 @@ namespace SabreTools.Metadata.Filter case Header item when fieldName == "screenshotswidth": checkValue = item.ScreenshotsWidth; return true; + // Header.Search is intentionally skipped case Header item when fieldName == "system": checkValue = item.System; return true; diff --git a/SabreTools.Metadata/DictionaryBaseExtensions.cs b/SabreTools.Metadata/DictionaryBaseExtensions.cs index 5dff9136..15b784a8 100644 --- a/SabreTools.Metadata/DictionaryBaseExtensions.cs +++ b/SabreTools.Metadata/DictionaryBaseExtensions.cs @@ -180,6 +180,7 @@ namespace SabreTools.Metadata return false; if (selfHeader.Build != otherHeader.Build) return false; + // Header.CanOpen is intentionally skipped if (selfHeader.Category != otherHeader.Category) return false; if (selfHeader.Comment != otherHeader.Comment) @@ -206,10 +207,15 @@ namespace SabreTools.Metadata return false; if (selfHeader.HeaderSkipper != otherHeader.HeaderSkipper) return false; + // Header.HeaderRow is intentionally skipped if (selfHeader.Homepage != otherHeader.Homepage) return false; if (selfHeader.Id != otherHeader.Id) return false; + // Header.Images is intentionally skipped + if (selfHeader.ImFolder != otherHeader.ImFolder) + return false; + // Header.Infos is intentionally skipped if (selfHeader.LockBiosMode != otherHeader.LockBiosMode) return false; if (selfHeader.LockRomMode != otherHeader.LockRomMode) @@ -220,6 +226,7 @@ namespace SabreTools.Metadata return false; if (selfHeader.Name != otherHeader.Name) return false; + // Header.NewDat is intentionally skipped if (selfHeader.Notes != otherHeader.Notes) return false; if (selfHeader.Plugin != otherHeader.Plugin) @@ -238,6 +245,7 @@ namespace SabreTools.Metadata return false; if (selfHeader.ScreenshotsWidth != otherHeader.ScreenshotsWidth) return false; + // Header.Search is intentionally skipped if (selfHeader.System != otherHeader.System) return false; if (selfHeader.Timestamp != otherHeader.Timestamp) diff --git a/SabreTools.Serialization.CrossModel/OfflineList.Deserializer.cs b/SabreTools.Serialization.CrossModel/OfflineList.Deserializer.cs index d8b8fe37..f0348147 100644 --- a/SabreTools.Serialization.CrossModel/OfflineList.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/OfflineList.Deserializer.cs @@ -37,40 +37,35 @@ namespace SabreTools.Serialization.CrossModel }; if (item.Name is not null - || item.ContainsKey(Data.Models.Metadata.Header.ImFolderKey) + || item.ImFolder is not null || item.DatVersion is not null || item.System is not null || item.ScreenshotsHeight is not null || item.ScreenshotsWidth is not null - || item.ContainsKey(Data.Models.Metadata.Header.InfosKey) - || item.ContainsKey(Data.Models.Metadata.Header.CanOpenKey) - || item.ContainsKey(Data.Models.Metadata.Header.NewDatKey) - || item.ContainsKey(Data.Models.Metadata.Header.SearchKey) + || item.Infos is not null + || item.CanOpen is not null + || item.NewDat is not null + || item.Search is not null || item.RomTitle is not null) { dat.Configuration = new Configuration { DatName = item.Name, - ImFolder = item.ReadString(Data.Models.Metadata.Header.ImFolderKey), + ImFolder = item.ImFolder, DatVersion = item.DatVersion, System = item.System, ScreenshotsWidth = item.ScreenshotsHeight, ScreenshotsHeight = item.ScreenshotsWidth, - Infos = item.Read(Data.Models.Metadata.Header.InfosKey), - CanOpen = item.Read(Data.Models.Metadata.Header.CanOpenKey), - NewDat = item.Read(Data.Models.Metadata.Header.NewDatKey), - Search = item.Read(Data.Models.Metadata.Header.SearchKey), + Infos = item.Infos, + CanOpen = item.CanOpen, + NewDat = item.NewDat, + Search = item.Search, RomTitle = item.RomTitle, }; } - if (item.ContainsKey(Data.Models.Metadata.Header.ImagesKey)) - { - dat.GUI = new GUI - { - Images = item.Read(Data.Models.Metadata.Header.ImagesKey), - }; - } + if (item.Images is not null) + dat.GUI = new GUI { Images = item.Images }; return dat; } diff --git a/SabreTools.Serialization.CrossModel/OfflineList.Serializer.cs b/SabreTools.Serialization.CrossModel/OfflineList.Serializer.cs index 7a8dcf6c..a6e91ce9 100644 --- a/SabreTools.Serialization.CrossModel/OfflineList.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/OfflineList.Serializer.cs @@ -38,22 +38,20 @@ namespace SabreTools.Serialization.CrossModel if (item.Configuration is not null) { header.Name = item.Configuration.DatName; - header[Data.Models.Metadata.Header.ImFolderKey] = item.Configuration.ImFolder; + header.ImFolder = item.Configuration.ImFolder; header.DatVersion = item.Configuration.DatVersion; header.System = item.Configuration.System; header.ScreenshotsHeight = item.Configuration.ScreenshotsWidth; header.ScreenshotsWidth = item.Configuration.ScreenshotsHeight; - header[Data.Models.Metadata.Header.InfosKey] = item.Configuration.Infos; - header[Data.Models.Metadata.Header.CanOpenKey] = item.Configuration.CanOpen; - header[Data.Models.Metadata.Header.NewDatKey] = item.Configuration.NewDat; - header[Data.Models.Metadata.Header.SearchKey] = item.Configuration.Search; + header.Infos = item.Configuration.Infos; + header.CanOpen = item.Configuration.CanOpen; + header.NewDat = item.Configuration.NewDat; + header.Search = item.Configuration.Search; header.RomTitle = item.Configuration.RomTitle; } if (item.GUI is not null) - { - header[Data.Models.Metadata.Header.ImagesKey] = item.GUI.Images; - } + header.Images = item.GUI.Images; return header; } From f9437314cb462f2b1e17de1e2b2969ed50f76e00 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sat, 4 Apr 2026 18:46:35 -0400 Subject: [PATCH 091/142] Finalize property conversion for header --- .../MetadataExtensions.cs | 51 +--- SabreTools.Data.Models/Metadata/Header.cs | 254 +++++++++++++++++- .../DatFileTests.FromMetadata.cs | 4 +- .../DatFileTests.ToMetadata.cs | 2 +- .../DatFile.FromMetadata.cs | 6 +- SabreTools.Metadata.DatFiles/DatHeader.cs | 9 +- SabreTools.Metadata.DatItems/Machine.cs | 3 +- SabreTools.Metadata.Filter/FilterObject.cs | 3 + .../DictionaryBaseExtensions.cs | 116 ++------ .../Logiqx.Deserializer.cs | 2 +- .../Logiqx.Serializer.cs | 2 +- .../OfflineList.Deserializer.cs | 2 +- .../OfflineList.Serializer.cs | 4 +- 13 files changed, 289 insertions(+), 169 deletions(-) diff --git a/SabreTools.Data.Extensions/MetadataExtensions.cs b/SabreTools.Data.Extensions/MetadataExtensions.cs index 12ca38bf..3cce03d3 100644 --- a/SabreTools.Data.Extensions/MetadataExtensions.cs +++ b/SabreTools.Data.Extensions/MetadataExtensions.cs @@ -67,6 +67,8 @@ namespace SabreTools.Data.Extensions return extension.Clone() as Extension; else if (self is Feature feature) return feature.Clone() as Feature; + else if (self is Header header) + return header.Clone() as Header; else if (self is Info info) return info.Clone() as Info; else if (self is Input input) @@ -114,55 +116,6 @@ namespace SabreTools.Data.Extensions if (Activator.CreateInstance(self.GetType()) is not DictionaryBase clone) return null; - // Handle individual type properties - if (self is Header selfHeader && clone is Header cloneHeader) - { - cloneHeader.Author = selfHeader.Author; - cloneHeader.BiosMode = selfHeader.BiosMode; - cloneHeader.Build = selfHeader.Build; - cloneHeader.CanOpen = selfHeader.CanOpen; - cloneHeader.Category = selfHeader.Category; - cloneHeader.Comment = selfHeader.Comment; - cloneHeader.Date = selfHeader.Date; - cloneHeader.DatVersion = selfHeader.DatVersion; - cloneHeader.Debug = selfHeader.Debug; - cloneHeader.Description = selfHeader.Description; - cloneHeader.Email = selfHeader.Email; - cloneHeader.EmulatorVersion = selfHeader.EmulatorVersion; - cloneHeader.ForceMerging = selfHeader.ForceMerging; - cloneHeader.ForceNodump = selfHeader.ForceNodump; - cloneHeader.ForcePacking = selfHeader.ForcePacking; - cloneHeader.ForceZipping = selfHeader.ForceZipping; - cloneHeader.HeaderRow = selfHeader.HeaderRow; - cloneHeader.HeaderSkipper = selfHeader.HeaderSkipper; - cloneHeader.Homepage = selfHeader.Homepage; - cloneHeader.Id = selfHeader.Id; - cloneHeader.Images = selfHeader.Images; - cloneHeader.ImFolder = selfHeader.ImFolder; - cloneHeader.Infos = selfHeader.Infos; - cloneHeader.LockBiosMode = selfHeader.LockBiosMode; - cloneHeader.LockRomMode = selfHeader.LockRomMode; - cloneHeader.LockSampleMode = selfHeader.LockSampleMode; - cloneHeader.MameConfig = selfHeader.MameConfig; - cloneHeader.Name = selfHeader.Name; - cloneHeader.NewDat = selfHeader.NewDat; - cloneHeader.Notes = selfHeader.Notes; - cloneHeader.Plugin = selfHeader.Plugin; - cloneHeader.RefName = selfHeader.RefName; - cloneHeader.RomMode = selfHeader.RomMode; - cloneHeader.RomTitle = selfHeader.RomTitle; - cloneHeader.RootDir = selfHeader.RootDir; - cloneHeader.SampleMode = selfHeader.SampleMode; - cloneHeader.ScreenshotsHeight = selfHeader.ScreenshotsHeight; - cloneHeader.ScreenshotsWidth = selfHeader.ScreenshotsWidth; - cloneHeader.Search = selfHeader.Search; - cloneHeader.System = selfHeader.System; - cloneHeader.Timestamp = selfHeader.Timestamp; - cloneHeader.Type = selfHeader.Type; - cloneHeader.Url = selfHeader.Url; - cloneHeader.Version = selfHeader.Version; - } - // Loop through and clone per type foreach (string key in self.Keys) { diff --git a/SabreTools.Data.Models/Metadata/Header.cs b/SabreTools.Data.Models/Metadata/Header.cs index 4933d094..1d8f30cb 100644 --- a/SabreTools.Data.Models/Metadata/Header.cs +++ b/SabreTools.Data.Models/Metadata/Header.cs @@ -1,10 +1,12 @@ +using System; + namespace SabreTools.Data.Models.Metadata { /// /// Format-agnostic representation of metadata header data /// - public class Header : DictionaryBase + public class Header : DictionaryBase, ICloneable, IEquatable
{ #region Properties @@ -95,6 +97,8 @@ namespace SabreTools.Data.Models.Metadata /// (none|split|merged|nonmerged|fullmerged|device|full) "split" public MergingFlag SampleMode { get; set; } + public string? SchemaLocation { get; set; } + public string? ScreenshotsHeight { get; set; } public string? ScreenshotsWidth { get; set; } @@ -114,11 +118,251 @@ namespace SabreTools.Data.Models.Metadata #endregion - #region Keys + /// + public object Clone() + { + var obj = new Header(); - /// string - public const string SchemaLocationKey = "schemaLocation"; + obj.Author = Author; + obj.BiosMode = BiosMode; + obj.Build = Build; + obj.CanOpen = CanOpen; + obj.Category = Category; + obj.Comment = Comment; + obj.Date = Date; + obj.DatVersion = DatVersion; + obj.Debug = Debug; + obj.Description = Description; + obj.Email = Email; + obj.EmulatorVersion = EmulatorVersion; + obj.ForceMerging = ForceMerging; + obj.ForceNodump = ForceNodump; + obj.ForcePacking = ForcePacking; + obj.ForceZipping = ForceZipping; + obj.HeaderRow = HeaderRow; + obj.HeaderSkipper = HeaderSkipper; + obj.Homepage = Homepage; + obj.Id = Id; + obj.Images = Images; + obj.ImFolder = ImFolder; + obj.Infos = Infos; + obj.LockBiosMode = LockBiosMode; + obj.LockRomMode = LockRomMode; + obj.LockSampleMode = LockSampleMode; + obj.MameConfig = MameConfig; + obj.Name = Name; + obj.NewDat = NewDat; + obj.Notes = Notes; + obj.Plugin = Plugin; + obj.RefName = RefName; + obj.RomMode = RomMode; + obj.RomTitle = RomTitle; + obj.RootDir = RootDir; + obj.SampleMode = SampleMode; + obj.SchemaLocation = SchemaLocation; + obj.ScreenshotsHeight = ScreenshotsHeight; + obj.ScreenshotsWidth = ScreenshotsWidth; + obj.Search = Search; + obj.System = System; + obj.Timestamp = Timestamp; + obj.Type = Type; + obj.Url = Url; + obj.Version = Version; - #endregion + return obj; + } + + /// + public bool Equals(Header? other) + { + // Null never matches + if (other is null) + return false; + + // Properties + if ((Author is null) ^ (other.Author is null)) + return false; + else if (Author is not null && !Author.Equals(other.Author, StringComparison.OrdinalIgnoreCase)) + return false; + + if (BiosMode != other.BiosMode) + return false; + + if ((Build is null) ^ (other.Build is null)) + return false; + else if (Build is not null && !Build.Equals(other.Build, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((Category is null) ^ (other.Category is null)) + return false; + else if (Category is not null && !Category.Equals(other.Category, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((Comment is null) ^ (other.Comment is null)) + return false; + else if (Comment is not null && !Comment.Equals(other.Comment, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((Date is null) ^ (other.Date is null)) + return false; + else if (Date is not null && !Date.Equals(other.Date, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((DatVersion is null) ^ (other.DatVersion is null)) + return false; + else if (DatVersion is not null && !DatVersion.Equals(other.DatVersion, StringComparison.OrdinalIgnoreCase)) + return false; + + if (Debug != other.Debug) + return false; + + if ((Description is null) ^ (other.Description is null)) + return false; + else if (Description is not null && !Description.Equals(other.Description, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((Email is null) ^ (other.Email is null)) + return false; + else if (Email is not null && !Email.Equals(other.Email, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((EmulatorVersion is null) ^ (other.EmulatorVersion is null)) + return false; + else if (EmulatorVersion is not null && !EmulatorVersion.Equals(other.EmulatorVersion, StringComparison.OrdinalIgnoreCase)) + return false; + + if (ForceMerging != other.ForceMerging) + return false; + + if (ForceNodump != other.ForceNodump) + return false; + + if (ForcePacking != other.ForcePacking) + return false; + + if (ForceZipping != other.ForceZipping) + return false; + + if ((HeaderSkipper is null) ^ (other.HeaderSkipper is null)) + return false; + else if (HeaderSkipper is not null && !HeaderSkipper.Equals(other.HeaderSkipper, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((Homepage is null) ^ (other.Homepage is null)) + return false; + else if (Homepage is not null && !Homepage.Equals(other.Homepage, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((Id is null) ^ (other.Id is null)) + return false; + else if (Id is not null && !Id.Equals(other.Id, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((ImFolder is null) ^ (other.ImFolder is null)) + return false; + else if (ImFolder is not null && !ImFolder.Equals(other.ImFolder, StringComparison.OrdinalIgnoreCase)) + return false; + + if (LockBiosMode != other.ForceZipping) + return false; + + if (LockRomMode != other.LockRomMode) + return false; + + if (LockSampleMode != other.LockSampleMode) + return false; + + if ((MameConfig is null) ^ (other.MameConfig is null)) + return false; + else if (MameConfig is not null && !MameConfig.Equals(other.MameConfig, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((Name is null) ^ (other.Name is null)) + return false; + else if (Name is not null && !Name.Equals(other.Name, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((Notes is null) ^ (other.Notes is null)) + return false; + else if (Notes is not null && !Notes.Equals(other.Notes, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((Plugin is null) ^ (other.Plugin is null)) + return false; + else if (Plugin is not null && !Plugin.Equals(other.Plugin, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((RefName is null) ^ (other.RefName is null)) + return false; + else if (RefName is not null && !RefName.Equals(other.RefName, StringComparison.OrdinalIgnoreCase)) + return false; + + if (RomMode != other.RomMode) + return false; + + if ((RomTitle is null) ^ (other.RomTitle is null)) + return false; + else if (RomTitle is not null && !RomTitle.Equals(other.RomTitle, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((RootDir is null) ^ (other.RootDir is null)) + return false; + else if (RootDir is not null && !RootDir.Equals(other.RootDir, StringComparison.OrdinalIgnoreCase)) + return false; + + if (SampleMode != other.SampleMode) + return false; + + if ((SchemaLocation is null) ^ (other.SchemaLocation is null)) + return false; + else if (SchemaLocation is not null && !SchemaLocation.Equals(other.SchemaLocation, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((ScreenshotsHeight is null) ^ (other.ScreenshotsHeight is null)) + return false; + else if (ScreenshotsHeight is not null && !ScreenshotsHeight.Equals(other.ScreenshotsHeight, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((ScreenshotsWidth is null) ^ (other.ScreenshotsWidth is null)) + return false; + else if (ScreenshotsWidth is not null && !ScreenshotsWidth.Equals(other.ScreenshotsWidth, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((System is null) ^ (other.System is null)) + return false; + else if (System is not null && !System.Equals(other.System, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((Timestamp is null) ^ (other.Timestamp is null)) + return false; + else if (Timestamp is not null && !Timestamp.Equals(other.Timestamp, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((Type is null) ^ (other.Type is null)) + return false; + else if (Type is not null && !Type.Equals(other.Type, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((Url is null) ^ (other.Url is null)) + return false; + else if (Url is not null && !Url.Equals(other.Url, StringComparison.OrdinalIgnoreCase)) + return false; + + if ((Version is null) ^ (other.Version is null)) + return false; + else if (Version is not null && !Version.Equals(other.Version, StringComparison.OrdinalIgnoreCase)) + return false; + + // Sub-items + // Header.CanOpen is intentionally skipped + // Header.Images is intentionally skipped + // Header.Infos is intentionally skipped + // Header.NewDat is intentionally skipped + // Header.Search is intentionally skipped + + // TODO: Figure out how to properly check arrays + + return true; + } } } diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs index 89a7172e..92432131 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs @@ -235,7 +235,7 @@ namespace SabreTools.Metadata.DatFiles.Test RomTitle = "romtitle", RootDir = "rootdir", SampleMode = Data.Models.Metadata.MergingFlag.Merged, - [Data.Models.Metadata.Header.SchemaLocationKey] = "schemalocation", + SchemaLocation = "schemalocation", ScreenshotsHeight = "screenshotsheight", ScreenshotsWidth = "screenshotsWidth", Search = search, @@ -1042,7 +1042,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("romtitle", datHeader.RomTitle); Assert.Equal("rootdir", datHeader.RootDir); Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, datHeader.SampleMode); - Assert.Equal("schemalocation", datHeader.ReadString(Data.Models.Metadata.Header.SchemaLocationKey)); + Assert.Equal("schemalocation", datHeader.SchemaLocation); Assert.Equal("screenshotsheight", datHeader.ScreenshotsHeight); Assert.Equal("screenshotsWidth", datHeader.ScreenshotsWidth); Assert.NotNull(datHeader.Search); diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs index 7c643816..8843f57f 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs @@ -383,7 +383,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("romtitle", header.RomTitle); Assert.Equal("rootdir", header.RootDir); Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, header.SampleMode); - Assert.Equal("schemalocation", header.ReadString(Data.Models.Metadata.Header.SchemaLocationKey)); + Assert.Equal("schemalocation", header.SchemaLocation); Assert.Equal("screenshotsheight", header.ScreenshotsHeight); Assert.Equal("screenshotsWidth", header.ScreenshotsWidth); Assert.NotNull(header.Search); diff --git a/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs b/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs index 0a67da5c..dba32835 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs @@ -61,7 +61,7 @@ namespace SabreTools.Metadata.DatFiles private void ConvertHeader(Data.Models.Metadata.Header? item, bool keep) { // If the header is invalid, we can't do anything - if (item is null || item.Count == 0) + if (item is null) return; // Create an internal header @@ -152,8 +152,8 @@ namespace SabreTools.Metadata.DatFiles Header.RootDir = header.RootDir; if (Header.SampleMode == MergingFlag.None) Header.SampleMode = header.SampleMode; - if (Header.ReadString(Data.Models.Metadata.Header.SchemaLocationKey) is null) - Header.Write(Data.Models.Metadata.Header.SchemaLocationKey, header.ReadString(Data.Models.Metadata.Header.SchemaLocationKey)); + if (Header.SchemaLocation is null) + Header.SchemaLocation = header.SchemaLocation; if (Header.ScreenshotsHeight is null) Header.ScreenshotsHeight = header.ScreenshotsHeight; if (Header.ScreenshotsWidth is null) diff --git a/SabreTools.Metadata.DatFiles/DatHeader.cs b/SabreTools.Metadata.DatFiles/DatHeader.cs index 1dffbde6..59d64715 100644 --- a/SabreTools.Metadata.DatFiles/DatHeader.cs +++ b/SabreTools.Metadata.DatFiles/DatHeader.cs @@ -1,7 +1,6 @@ using System; using System.Xml.Serialization; using Newtonsoft.Json; -using SabreTools.Data.Extensions; using SabreTools.Metadata.Filter; using MergingFlag = SabreTools.Data.Models.Metadata.MergingFlag; using NodumpFlag = SabreTools.Data.Models.Metadata.NodumpFlag; @@ -255,6 +254,12 @@ namespace SabreTools.Metadata.DatFiles set => _internal.SampleMode = value; } + public string? SchemaLocation + { + get => _internal.SchemaLocation; + set => _internal.SchemaLocation = value; + } + public string? ScreenshotsHeight { get => _internal.ScreenshotsHeight; @@ -347,7 +352,7 @@ namespace SabreTools.Metadata.DatFiles ///
public Data.Models.Metadata.Header GetInternalClone() { - var header = (_internal.DeepClone() as Data.Models.Metadata.Header)!; + var header = (_internal.Clone() as Data.Models.Metadata.Header)!; // Convert subheader values if (CanOpenSpecified) diff --git a/SabreTools.Metadata.DatItems/Machine.cs b/SabreTools.Metadata.DatItems/Machine.cs index d5a42cf8..6de98838 100644 --- a/SabreTools.Metadata.DatItems/Machine.cs +++ b/SabreTools.Metadata.DatItems/Machine.cs @@ -1,7 +1,6 @@ using System; using System.Xml.Serialization; using Newtonsoft.Json; -using SabreTools.Data.Extensions; using SabreTools.Metadata.Filter; using SabreTools.Text.Extensions; @@ -450,7 +449,7 @@ namespace SabreTools.Metadata.DatItems /// /// Get a clone of the current internal model /// - public Data.Models.Metadata.Machine GetInternalClone() => (_internal.DeepClone() as Data.Models.Metadata.Machine) ?? []; + public Data.Models.Metadata.Machine GetInternalClone() => (_internal.Clone() as Data.Models.Metadata.Machine) ?? []; #endregion diff --git a/SabreTools.Metadata.Filter/FilterObject.cs b/SabreTools.Metadata.Filter/FilterObject.cs index 138c9798..e040019f 100644 --- a/SabreTools.Metadata.Filter/FilterObject.cs +++ b/SabreTools.Metadata.Filter/FilterObject.cs @@ -866,6 +866,9 @@ namespace SabreTools.Metadata.Filter case Header item when fieldName == "samplemode": checkValue = item.SampleMode.AsStringValue(); return true; + case Header item when fieldName == "schemalocation": + checkValue = item.SchemaLocation; + return true; case Header item when fieldName == "screenshotsheight": checkValue = item.ScreenshotsHeight; return true; diff --git a/SabreTools.Metadata/DictionaryBaseExtensions.cs b/SabreTools.Metadata/DictionaryBaseExtensions.cs index 15b784a8..5698359f 100644 --- a/SabreTools.Metadata/DictionaryBaseExtensions.cs +++ b/SabreTools.Metadata/DictionaryBaseExtensions.cs @@ -39,24 +39,25 @@ namespace SabreTools.Metadata (DipLocation selfDipLocation, DipLocation otherDipLocation) => selfDipLocation.Equals(otherDipLocation), (DipSwitch selfDipSwitch, DipSwitch otherDipSwitch) => selfDipSwitch.Equals(otherDipSwitch), (DipValue selfDipValue, DipValue otherDipValue) => selfDipValue.Equals(otherDipValue), - (Disk diskSelf, Disk diskOther) => EqualsImpl(diskSelf, diskOther), + (Disk selfDisk, Disk otherDisk) => EqualsImpl(selfDisk, otherDisk), (DiskArea selfDiskArea, DiskArea otherDiskArea) => selfDiskArea.Equals(otherDiskArea), (Display selfDisplay, Display otherDisplay) => selfDisplay.Equals(otherDisplay), (Driver selfDriver, Driver otherDriver) => selfDriver.Equals(otherDriver), (Dump selfDump, Dump otherDump) => selfDump.Equals(otherDump), (Feature selfFeature, Feature otherFeature) => selfFeature.Equals(otherFeature), + (Header selfHeader, Header otherHeader) => selfHeader.Equals(otherHeader), (Info selfInfo, Info otherInfo) => selfInfo.Equals(otherInfo), (Input selfInput, Input otherInput) => selfInput.Equals(otherInput), (Instance selfInstance, Instance otherInstance) => selfInstance.Equals(otherInstance), - (Machine machineSelf, Machine machineOther) => EqualsImpl(machineSelf, machineOther), - (Media mediaSelf, Media mediaOther) => EqualsImpl(mediaSelf, mediaOther), + (Machine selfMachine, Machine otherMachine) => EqualsImpl(selfMachine, otherMachine), + (Media selfMedia, Media otherMedia) => EqualsImpl(selfMedia, otherMedia), (Original selfOriginal, Original otherOriginal) => selfOriginal.Equals(otherOriginal), (Part selfPart, Part otherPart) => selfPart.Equals(otherPart), (Port selfPort, Port otherPort) => selfPort.Equals(otherPort), (RamOption selfRamOption, RamOption otherRamOption) => selfRamOption.Equals(otherRamOption), (Release selfRelease, Release otherRelease) => selfRelease.Equals(otherRelease), (ReleaseDetails selfReleaseDetails, ReleaseDetails otherReleaseDetails) => selfReleaseDetails.Equals(otherReleaseDetails), - (Rom romSelf, Rom romOther) => EqualsImpl(romSelf, romOther), + (Rom selfRom, Rom otherRom) => EqualsImpl(selfRom, otherRom), (Serials selfSerials, Serials otherSerials) => selfSerials.Equals(otherSerials), (SharedFeat selfSharedFeat, SharedFeat otherSharedFeat) => selfSharedFeat.Equals(otherSharedFeat), (Slot selfSlot, Slot otherSlot) => selfSlot.Equals(otherSlot), @@ -64,7 +65,7 @@ namespace SabreTools.Metadata (SoftwareList selfSoftwareList, SoftwareList otherSoftwareList) => selfSoftwareList.Equals(otherSoftwareList), (Sound selfSound, Sound otherSound) => selfSound.Equals(otherSound), (SourceDetails selfSourceDetails, SourceDetails otherSourceDetails) => selfSourceDetails.Equals(otherSourceDetails), - (Video videoSelf, Video videoOther) => EqualsImpl(videoSelf, videoOther), + (Video selfVideo, Video otherVideo) => EqualsImpl(selfVideo, otherVideo), _ => self.EqualsImpl(other), }; #else @@ -98,8 +99,8 @@ namespace SabreTools.Metadata return selfDipSwitch.Equals(otherDipSwitch); else if (self is DipValue selfDipValue && other is DipValue otherDipValue) return selfDipValue.Equals(otherDipValue); - else if (self is Disk diskSelf && other is Disk diskOther) - return EqualsImpl(diskSelf, diskOther); + else if (self is Disk selfDisk && other is Disk otherDisk) + return EqualsImpl(selfDisk, otherDisk); else if (self is DiskArea selfDiskArea && other is DiskArea otherDiskArea) return selfDiskArea.Equals(otherDiskArea); else if (self is Display selfDisplay && other is Display otherDisplay) @@ -110,16 +111,18 @@ namespace SabreTools.Metadata return selfDump.Equals(otherDump); else if (self is Feature selfFeature && other is Feature otherFeature) return selfFeature.Equals(otherFeature); + else if (self is Header selfHeader && other is Header otherHeader) + return selfHeader.Equals(otherHeader); else if (self is Info selfInfo && other is Info otherInfo) return selfInfo.Equals(otherInfo); else if (self is Input selfInput && other is Input otherInput) return selfInput.Equals(otherInput); else if (self is Instance selfInstance && other is Instance otherInstance) return selfInstance.Equals(otherInstance); - else if (self is Machine machineSelf && other is Machine machineOther) - return EqualsImpl(machineSelf, machineOther); - else if (self is Media mediaSelf && other is Media mediaOther) - return EqualsImpl(mediaSelf, mediaOther); + else if (self is Machine selfMachine && other is Machine otherMachine) + return EqualsImpl(selfMachine, otherMachine); + else if (self is Media selfMedia && other is Media otherMedia) + return EqualsImpl(selfMedia, otherMedia); else if (self is Original selfOriginal && other is Original otherOriginal) return selfOriginal.Equals(otherOriginal); else if (self is Part selfPart && other is Part otherPart) @@ -132,8 +135,8 @@ namespace SabreTools.Metadata return selfRelease.Equals(otherRelease); else if (self is ReleaseDetails selfReleaseDetails && other is ReleaseDetails otherReleaseDetails) return selfReleaseDetails.Equals(otherReleaseDetails); - else if (self is Rom romSelf && other is Rom romOther) - return EqualsImpl(romSelf, romOther); + else if (self is Rom selfRom && other is Rom otherRom) + return EqualsImpl(selfRom, otherRom); else if (self is Serials selfSerials && other is Serials otherSerials) return selfSerials.Equals(otherSerials); else if (self is SharedFeat selfSharedFeat && other is SharedFeat otherSharedFeat) @@ -171,93 +174,6 @@ namespace SabreTools.Metadata if (!selfKeys.SetEquals(otherKeys)) return false; - // Handle individual type properties - if (self is Header selfHeader && other is Header otherHeader) - { - if (selfHeader.Author != otherHeader.Author) - return false; - if (selfHeader.BiosMode != otherHeader.BiosMode) - return false; - if (selfHeader.Build != otherHeader.Build) - return false; - // Header.CanOpen is intentionally skipped - if (selfHeader.Category != otherHeader.Category) - return false; - if (selfHeader.Comment != otherHeader.Comment) - return false; - if (selfHeader.Date != otherHeader.Date) - return false; - if (selfHeader.DatVersion != otherHeader.DatVersion) - return false; - if (selfHeader.Debug != otherHeader.Debug) - return false; - if (selfHeader.Description != otherHeader.Description) - return false; - if (selfHeader.Email != otherHeader.Email) - return false; - if (selfHeader.EmulatorVersion != otherHeader.EmulatorVersion) - return false; - if (selfHeader.ForceMerging != otherHeader.ForceMerging) - return false; - if (selfHeader.ForceNodump != otherHeader.ForceNodump) - return false; - if (selfHeader.ForcePacking != otherHeader.ForcePacking) - return false; - if (selfHeader.ForceZipping != otherHeader.ForceZipping) - return false; - if (selfHeader.HeaderSkipper != otherHeader.HeaderSkipper) - return false; - // Header.HeaderRow is intentionally skipped - if (selfHeader.Homepage != otherHeader.Homepage) - return false; - if (selfHeader.Id != otherHeader.Id) - return false; - // Header.Images is intentionally skipped - if (selfHeader.ImFolder != otherHeader.ImFolder) - return false; - // Header.Infos is intentionally skipped - if (selfHeader.LockBiosMode != otherHeader.LockBiosMode) - return false; - if (selfHeader.LockRomMode != otherHeader.LockRomMode) - return false; - if (selfHeader.LockSampleMode != otherHeader.LockSampleMode) - return false; - if (selfHeader.MameConfig != otherHeader.MameConfig) - return false; - if (selfHeader.Name != otherHeader.Name) - return false; - // Header.NewDat is intentionally skipped - if (selfHeader.Notes != otherHeader.Notes) - return false; - if (selfHeader.Plugin != otherHeader.Plugin) - return false; - if (selfHeader.RefName != otherHeader.RefName) - return false; - if (selfHeader.RomMode != otherHeader.RomMode) - return false; - if (selfHeader.RomTitle != otherHeader.RomTitle) - return false; - if (selfHeader.RootDir != otherHeader.RootDir) - return false; - if (selfHeader.SampleMode != otherHeader.SampleMode) - return false; - if (selfHeader.ScreenshotsHeight != otherHeader.ScreenshotsHeight) - return false; - if (selfHeader.ScreenshotsWidth != otherHeader.ScreenshotsWidth) - return false; - // Header.Search is intentionally skipped - if (selfHeader.System != otherHeader.System) - return false; - if (selfHeader.Timestamp != otherHeader.Timestamp) - return false; - if (selfHeader.Type != otherHeader.Type) - return false; - if (selfHeader.Url != otherHeader.Url) - return false; - if (selfHeader.Version != otherHeader.Version) - return false; - } - // Check all pairs to see if they're equal foreach (var kvp in self) { diff --git a/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs b/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs index 7bf85575..ca81602e 100644 --- a/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs @@ -23,7 +23,7 @@ namespace SabreTools.Serialization.CrossModel { datafile.Build = header.Build; datafile.Debug = header.Debug; - datafile.SchemaLocation = header.ReadString(Data.Models.Metadata.Header.SchemaLocationKey); + datafile.SchemaLocation = header.SchemaLocation; datafile.Header = ConvertHeaderFromInternalModel(header); } diff --git a/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs b/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs index 97ce3a76..b49e6291 100644 --- a/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs @@ -41,7 +41,7 @@ namespace SabreTools.Serialization.CrossModel header.Build = item.Build; header.Debug = item.Debug; - header[Data.Models.Metadata.Header.SchemaLocationKey] = item.SchemaLocation; + header.SchemaLocation = item.SchemaLocation; return header; } diff --git a/SabreTools.Serialization.CrossModel/OfflineList.Deserializer.cs b/SabreTools.Serialization.CrossModel/OfflineList.Deserializer.cs index f0348147..848cb263 100644 --- a/SabreTools.Serialization.CrossModel/OfflineList.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/OfflineList.Deserializer.cs @@ -33,7 +33,7 @@ namespace SabreTools.Serialization.CrossModel { var dat = new Dat { - NoNamespaceSchemaLocation = item.ReadString(Data.Models.Metadata.Header.SchemaLocationKey), + NoNamespaceSchemaLocation = item.SchemaLocation, }; if (item.Name is not null diff --git a/SabreTools.Serialization.CrossModel/OfflineList.Serializer.cs b/SabreTools.Serialization.CrossModel/OfflineList.Serializer.cs index a6e91ce9..98984444 100644 --- a/SabreTools.Serialization.CrossModel/OfflineList.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/OfflineList.Serializer.cs @@ -32,12 +32,12 @@ namespace SabreTools.Serialization.CrossModel { var header = new Data.Models.Metadata.Header { - [Data.Models.Metadata.Header.SchemaLocationKey] = item.NoNamespaceSchemaLocation, + SchemaLocation = item.NoNamespaceSchemaLocation, }; if (item.Configuration is not null) { - header.Name = item.Configuration.DatName; + header.Name = item.Configuration.DatName; header.ImFolder = item.Configuration.ImFolder; header.DatVersion = item.Configuration.DatVersion; header.System = item.Configuration.System; From 040ad65a5e19ea0b07bf9cbf2a70590fb82e47e6 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sat, 4 Apr 2026 18:48:00 -0400 Subject: [PATCH 092/142] DeepClone was left as self-referential, like this commit message --- .../MetadataExtensions.cs | 134 ------------------ 1 file changed, 134 deletions(-) diff --git a/SabreTools.Data.Extensions/MetadataExtensions.cs b/SabreTools.Data.Extensions/MetadataExtensions.cs index 3cce03d3..a1329fcd 100644 --- a/SabreTools.Data.Extensions/MetadataExtensions.cs +++ b/SabreTools.Data.Extensions/MetadataExtensions.cs @@ -10,140 +10,6 @@ namespace SabreTools.Data.Extensions // TODO: Combine yes/partial/no enums public static class MetadataExtensions { - #region Cloning - - /// - /// Deep clone a DictionaryBase object - /// - /// TODO: Move this to Clone methods in each file when keys go away entirely - public static DictionaryBase? DeepClone(this DictionaryBase self) - { - // Handle types that are cloneable - if (self is Adjuster adjuster) - return adjuster.Clone() as Adjuster; - else if (self is Analog analog) - return analog.Clone() as Analog; - else if (self is Archive archive) - return archive.Clone() as Archive; - else if (self is BiosSet biosSet) - return biosSet.Clone() as BiosSet; - else if (self is Blank blank) - return blank.Clone() as Blank; - else if (self is Chip chip) - return chip.Clone() as Chip; - else if (self is Condition condition) - return condition.Clone() as Condition; - else if (self is Configuration configuration) - return configuration.Clone() as Configuration; - else if (self is ConfLocation confLocation) - return confLocation.Clone() as ConfLocation; - else if (self is ConfSetting confSetting) - return confSetting.Clone() as ConfSetting; - else if (self is Control control) - return control.Clone() as Control; - else if (self is DataArea dataArea) - return dataArea.Clone() as DataArea; - else if (self is Device device) - return device.Clone() as Device; - else if (self is DeviceRef deviceRef) - return deviceRef.Clone() as DeviceRef; - else if (self is DipLocation dipLocation) - return dipLocation.Clone() as DipLocation; - else if (self is DipSwitch dipSwitch) - return dipSwitch.Clone() as DipSwitch; - else if (self is DipValue dipValue) - return dipValue.Clone() as DipValue; - else if (self is Disk disk) - return disk.Clone() as Disk; - else if (self is DiskArea diskArea) - return diskArea.Clone() as DiskArea; - else if (self is Display display) - return display.Clone() as Display; - else if (self is Driver driver) - return driver.Clone() as Driver; - else if (self is Dump dump) - return dump.Clone() as Dump; - else if (self is Extension extension) - return extension.Clone() as Extension; - else if (self is Feature feature) - return feature.Clone() as Feature; - else if (self is Header header) - return header.Clone() as Header; - else if (self is Info info) - return info.Clone() as Info; - else if (self is Input input) - return input.Clone() as Input; - else if (self is Instance instance) - return instance.Clone() as Instance; - else if (self is Machine machine) - return machine.Clone() as Machine; - else if (self is Media media) - return media.Clone() as Media; - else if (self is Original original) - return original.Clone() as Original; - else if (self is Part part) - return part.Clone() as Part; - else if (self is Port port) - return port.Clone() as Port; - else if (self is RamOption ramOption) - return ramOption.Clone() as RamOption; - else if (self is Release release) - return release.Clone() as Release; - else if (self is ReleaseDetails releaseDetails) - return releaseDetails.Clone() as ReleaseDetails; - else if (self is Rom rom) - return rom.Clone() as Rom; - else if (self is Sample sample) - return sample.Clone() as Sample; - else if (self is Serials serials) - return serials.Clone() as Serials; - else if (self is SharedFeat sharedFeat) - return sharedFeat.Clone() as SharedFeat; - else if (self is Slot slot) - return slot.Clone() as Slot; - else if (self is SlotOption slotOption) - return slotOption.Clone() as SlotOption; - else if (self is SoftwareList softwareList) - return softwareList.Clone() as SoftwareList; - else if (self is Sound sound) - return sound.Clone() as Sound; - else if (self is SourceDetails sourceDetails) - return sourceDetails.Clone() as SourceDetails; - else if (self is Video video) - return video.Clone() as Video; - - // If construction failed, we can't do anything - if (Activator.CreateInstance(self.GetType()) is not DictionaryBase clone) - return null; - - // Loop through and clone per type - foreach (string key in self.Keys) - { - object? value = self[key]; - clone[key] = value switch - { - // Primative types - bool or long or double or string => value, - - // DictionaryBase types - DictionaryBase db => db.DeepClone(), - - // Enumerable types - byte[] bytArr => bytArr.Clone(), - string[] strArr => strArr.Clone(), - DictionaryBase[] dbArr => Array.ConvertAll(dbArr, DeepClone), - ICloneable[] clArr => Array.ConvertAll(clArr, cl => cl.Clone()), - - // Everything else just copies - _ => value, - }; - } - - return clone; - } - - #endregion - #region Conversion /// From c819be57a5dc36c6a23378842607592a93696b37 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sat, 4 Apr 2026 19:14:11 -0400 Subject: [PATCH 093/142] Reduce calls to EqualTo --- .../DatItemTests.cs | 16 ++++++++++++++++ SabreTools.Metadata.DatItems/DatItemT.cs | 18 +----------------- .../Formats/Adjuster.cs | 19 +++++++++++++++++++ .../Formats/Analog.cs | 19 +++++++++++++++++++ .../Formats/Archive.cs | 19 +++++++++++++++++++ .../Formats/BiosSet.cs | 19 +++++++++++++++++++ SabreTools.Metadata.DatItems/Formats/Blank.cs | 19 +++++++++++++++++++ SabreTools.Metadata.DatItems/Formats/Chip.cs | 19 +++++++++++++++++++ .../Formats/Condition.cs | 19 +++++++++++++++++++ .../Formats/ConfLocation.cs | 19 +++++++++++++++++++ .../Formats/ConfSetting.cs | 19 +++++++++++++++++++ .../Formats/Configuration.cs | 19 +++++++++++++++++++ .../Formats/Control.cs | 19 +++++++++++++++++++ .../Formats/DataArea.cs | 19 +++++++++++++++++++ .../Formats/Device.cs | 19 +++++++++++++++++++ .../Formats/DeviceRef.cs | 19 +++++++++++++++++++ .../Formats/DipLocation.cs | 19 +++++++++++++++++++ .../Formats/DipSwitch.cs | 19 +++++++++++++++++++ .../Formats/DipValue.cs | 19 +++++++++++++++++++ SabreTools.Metadata.DatItems/Formats/Disk.cs | 15 +++++++++++++++ .../Formats/DiskArea.cs | 19 +++++++++++++++++++ .../Formats/Display.cs | 19 +++++++++++++++++++ .../Formats/Driver.cs | 19 +++++++++++++++++++ .../Formats/Extension.cs | 19 +++++++++++++++++++ .../Formats/Feature.cs | 19 +++++++++++++++++++ SabreTools.Metadata.DatItems/Formats/Info.cs | 19 +++++++++++++++++++ SabreTools.Metadata.DatItems/Formats/Input.cs | 19 +++++++++++++++++++ .../Formats/Instance.cs | 19 +++++++++++++++++++ SabreTools.Metadata.DatItems/Formats/Media.cs | 15 +++++++++++++++ SabreTools.Metadata.DatItems/Formats/Part.cs | 19 +++++++++++++++++++ .../Formats/PartFeature.cs | 19 +++++++++++++++++++ SabreTools.Metadata.DatItems/Formats/Port.cs | 19 +++++++++++++++++++ .../Formats/RamOption.cs | 19 +++++++++++++++++++ .../Formats/Release.cs | 19 +++++++++++++++++++ .../Formats/ReleaseDetails.cs | 19 +++++++++++++++++++ SabreTools.Metadata.DatItems/Formats/Rom.cs | 15 +++++++++++++++ .../Formats/Sample.cs | 19 +++++++++++++++++++ .../Formats/Serials.cs | 19 +++++++++++++++++++ .../Formats/SharedFeat.cs | 19 +++++++++++++++++++ SabreTools.Metadata.DatItems/Formats/Slot.cs | 19 +++++++++++++++++++ .../Formats/SlotOption.cs | 19 +++++++++++++++++++ .../Formats/SoftwareList.cs | 19 +++++++++++++++++++ SabreTools.Metadata.DatItems/Formats/Sound.cs | 19 +++++++++++++++++++ .../Formats/SourceDetails.cs | 19 +++++++++++++++++++ 44 files changed, 803 insertions(+), 17 deletions(-) diff --git a/SabreTools.Metadata.DatItems.Test/DatItemTests.cs b/SabreTools.Metadata.DatItems.Test/DatItemTests.cs index fa1ae679..f464cb02 100644 --- a/SabreTools.Metadata.DatItems.Test/DatItemTests.cs +++ b/SabreTools.Metadata.DatItems.Test/DatItemTests.cs @@ -51,6 +51,22 @@ namespace SabreTools.Metadata.DatItems.Test /// public override void SetName(string? name) => Name = name; + + + /// + public override bool Equals(DatItem? other) + { + // If the other value is invalid + if (other is null) + return false; + + // If the type matches + if (other is TestDatItem otherTestDatItem) + return _internal.Equals(otherTestDatItem._internal); + + // Everything else fails + return false; + } } #endregion diff --git a/SabreTools.Metadata.DatItems/DatItemT.cs b/SabreTools.Metadata.DatItems/DatItemT.cs index 758a02d4..0cb335ab 100644 --- a/SabreTools.Metadata.DatItems/DatItemT.cs +++ b/SabreTools.Metadata.DatItems/DatItemT.cs @@ -68,23 +68,7 @@ namespace SabreTools.Metadata.DatItems /// /// DatItem to use as a baseline /// True if the items are duplicates, false otherwise - public virtual bool Equals(DatItem? other) - { - // If the other value is null - if (other is null) - return false; - - // Get the types for comparison - Data.Models.Metadata.ItemType selfType = ItemType; - Data.Models.Metadata.ItemType otherType = other.ItemType; - - // If we don't have a matched type, return false - if (selfType != otherType) - return false; - - // Compare the internal models - return _internal.EqualTo(other._internal); - } + public abstract bool Equals(DatItem? other); #endregion } diff --git a/SabreTools.Metadata.DatItems/Formats/Adjuster.cs b/SabreTools.Metadata.DatItems/Formats/Adjuster.cs index 2588700e..6d0d074a 100644 --- a/SabreTools.Metadata.DatItems/Formats/Adjuster.cs +++ b/SabreTools.Metadata.DatItems/Formats/Adjuster.cs @@ -80,5 +80,24 @@ namespace SabreTools.Metadata.DatItems.Formats } #endregion + + #region Comparision Methods + + /// + public override bool Equals(DatItem? other) + { + // If the other value is invalid + if (other is null) + return false; + + // If the type matches + if (other is Adjuster otherAdjuster) + return _internal.Equals(otherAdjuster._internal); + + // Everything else fails + return false; + } + + #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/Analog.cs b/SabreTools.Metadata.DatItems/Formats/Analog.cs index 31d1b434..716a2264 100644 --- a/SabreTools.Metadata.DatItems/Formats/Analog.cs +++ b/SabreTools.Metadata.DatItems/Formats/Analog.cs @@ -57,5 +57,24 @@ namespace SabreTools.Metadata.DatItems.Formats => (_internal as Data.Models.Metadata.Analog)?.Clone() as Data.Models.Metadata.Analog ?? []; #endregion + + #region Comparision Methods + + /// + public override bool Equals(DatItem? other) + { + // If the other value is invalid + if (other is null) + return false; + + // If the type matches + if (other is Analog otherAnalog) + return _internal.Equals(otherAnalog._internal); + + // Everything else fails + return false; + } + + #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/Archive.cs b/SabreTools.Metadata.DatItems/Formats/Archive.cs index 633ba14f..f1d1e11f 100644 --- a/SabreTools.Metadata.DatItems/Formats/Archive.cs +++ b/SabreTools.Metadata.DatItems/Formats/Archive.cs @@ -248,5 +248,24 @@ namespace SabreTools.Metadata.DatItems.Formats => (_internal as Data.Models.Metadata.Archive)?.Clone() as Data.Models.Metadata.Archive ?? []; #endregion + + #region Comparision Methods + + /// + public override bool Equals(DatItem? other) + { + // If the other value is invalid + if (other is null) + return false; + + // If the type matches + if (other is Archive otherArchive) + return _internal.Equals(otherArchive._internal); + + // Everything else fails + return false; + } + + #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/BiosSet.cs b/SabreTools.Metadata.DatItems/Formats/BiosSet.cs index 9cad0fe2..fc0ed918 100644 --- a/SabreTools.Metadata.DatItems/Formats/BiosSet.cs +++ b/SabreTools.Metadata.DatItems/Formats/BiosSet.cs @@ -69,5 +69,24 @@ namespace SabreTools.Metadata.DatItems.Formats => (_internal as Data.Models.Metadata.BiosSet)?.Clone() as Data.Models.Metadata.BiosSet ?? []; #endregion + + #region Comparision Methods + + /// + public override bool Equals(DatItem? other) + { + // If the other value is invalid + if (other is null) + return false; + + // If the type matches + if (other is BiosSet otherBiosSet) + return _internal.Equals(otherBiosSet._internal); + + // Everything else fails + return false; + } + + #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/Blank.cs b/SabreTools.Metadata.DatItems/Formats/Blank.cs index fbc24c20..624f19c4 100644 --- a/SabreTools.Metadata.DatItems/Formats/Blank.cs +++ b/SabreTools.Metadata.DatItems/Formats/Blank.cs @@ -51,5 +51,24 @@ namespace SabreTools.Metadata.DatItems.Formats => (_internal as Data.Models.Metadata.Blank)?.Clone() as Data.Models.Metadata.Blank ?? []; #endregion + + #region Comparision Methods + + /// + public override bool Equals(DatItem? other) + { + // If the other value is invalid + if (other is null) + return false; + + // If the type matches + if (other is Blank otherBlank) + return _internal.Equals(otherBlank._internal); + + // Everything else fails + return false; + } + + #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/Chip.cs b/SabreTools.Metadata.DatItems/Formats/Chip.cs index 4568ab77..3d527bd7 100644 --- a/SabreTools.Metadata.DatItems/Formats/Chip.cs +++ b/SabreTools.Metadata.DatItems/Formats/Chip.cs @@ -87,5 +87,24 @@ namespace SabreTools.Metadata.DatItems.Formats => (_internal as Data.Models.Metadata.Chip)?.Clone() as Data.Models.Metadata.Chip ?? []; #endregion + + #region Comparision Methods + + /// + public override bool Equals(DatItem? other) + { + // If the other value is invalid + if (other is null) + return false; + + // If the type matches + if (other is Chip otherChip) + return _internal.Equals(otherChip._internal); + + // Everything else fails + return false; + } + + #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/Condition.cs b/SabreTools.Metadata.DatItems/Formats/Condition.cs index a5fc1577..19209b47 100644 --- a/SabreTools.Metadata.DatItems/Formats/Condition.cs +++ b/SabreTools.Metadata.DatItems/Formats/Condition.cs @@ -75,5 +75,24 @@ namespace SabreTools.Metadata.DatItems.Formats => (_internal as Data.Models.Metadata.Condition)?.Clone() as Data.Models.Metadata.Condition ?? []; #endregion + + #region Comparision Methods + + /// + public override bool Equals(DatItem? other) + { + // If the other value is invalid + if (other is null) + return false; + + // If the type matches + if (other is Condition otherCondition) + return _internal.Equals(otherCondition._internal); + + // Everything else fails + return false; + } + + #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs b/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs index 0001458c..7138f035 100644 --- a/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs +++ b/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs @@ -69,5 +69,24 @@ namespace SabreTools.Metadata.DatItems.Formats => (_internal as Data.Models.Metadata.ConfLocation)?.Clone() as Data.Models.Metadata.ConfLocation ?? []; #endregion + + #region Comparision Methods + + /// + public override bool Equals(DatItem? other) + { + // If the other value is invalid + if (other is null) + return false; + + // If the type matches + if (other is ConfLocation otherConfLocation) + return _internal.Equals(otherConfLocation._internal); + + // Everything else fails + return false; + } + + #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs b/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs index 59f36e85..fed34ae7 100644 --- a/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs +++ b/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs @@ -86,5 +86,24 @@ namespace SabreTools.Metadata.DatItems.Formats } #endregion + + #region Comparision Methods + + /// + public override bool Equals(DatItem? other) + { + // If the other value is invalid + if (other is null) + return false; + + // If the type matches + if (other is ConfSetting otherConfSetting) + return _internal.Equals(otherConfSetting._internal); + + // Everything else fails + return false; + } + + #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/Configuration.cs b/SabreTools.Metadata.DatItems/Formats/Configuration.cs index 49f44e46..d6feec4c 100644 --- a/SabreTools.Metadata.DatItems/Formats/Configuration.cs +++ b/SabreTools.Metadata.DatItems/Formats/Configuration.cs @@ -109,5 +109,24 @@ namespace SabreTools.Metadata.DatItems.Formats } #endregion + + #region Comparision Methods + + /// + public override bool Equals(DatItem? other) + { + // If the other value is invalid + if (other is null) + return false; + + // If the type matches + if (other is Configuration otherConfiguration) + return _internal.Equals(otherConfiguration._internal); + + // Everything else fails + return false; + } + + #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/Control.cs b/SabreTools.Metadata.DatItems/Formats/Control.cs index 5e92e7bc..8193f94e 100644 --- a/SabreTools.Metadata.DatItems/Formats/Control.cs +++ b/SabreTools.Metadata.DatItems/Formats/Control.cs @@ -123,5 +123,24 @@ namespace SabreTools.Metadata.DatItems.Formats => (_internal as Data.Models.Metadata.Control)?.Clone() as Data.Models.Metadata.Control ?? []; #endregion + + #region Comparision Methods + + /// + public override bool Equals(DatItem? other) + { + // If the other value is invalid + if (other is null) + return false; + + // If the type matches + if (other is Control otherControl) + return _internal.Equals(otherControl._internal); + + // Everything else fails + return false; + } + + #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/DataArea.cs b/SabreTools.Metadata.DatItems/Formats/DataArea.cs index 0688cef3..e89a4827 100644 --- a/SabreTools.Metadata.DatItems/Formats/DataArea.cs +++ b/SabreTools.Metadata.DatItems/Formats/DataArea.cs @@ -93,5 +93,24 @@ namespace SabreTools.Metadata.DatItems.Formats } #endregion + + #region Comparision Methods + + /// + public override bool Equals(DatItem? other) + { + // If the other value is invalid + if (other is null) + return false; + + // If the type matches + if (other is DataArea otherDataArea) + return _internal.Equals(otherDataArea._internal); + + // Everything else fails + return false; + } + + #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/Device.cs b/SabreTools.Metadata.DatItems/Formats/Device.cs index 6a688d3e..3cbff095 100644 --- a/SabreTools.Metadata.DatItems/Formats/Device.cs +++ b/SabreTools.Metadata.DatItems/Formats/Device.cs @@ -116,5 +116,24 @@ namespace SabreTools.Metadata.DatItems.Formats } #endregion + + #region Comparision Methods + + /// + public override bool Equals(DatItem? other) + { + // If the other value is invalid + if (other is null) + return false; + + // If the type matches + if (other is Device otherDevice) + return _internal.Equals(otherDevice._internal); + + // Everything else fails + return false; + } + + #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs b/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs index d9d5fca5..90eb1662 100644 --- a/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs +++ b/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs @@ -57,5 +57,24 @@ namespace SabreTools.Metadata.DatItems.Formats => (_internal as Data.Models.Metadata.DeviceRef)?.Clone() as Data.Models.Metadata.DeviceRef ?? []; #endregion + + #region Comparision Methods + + /// + public override bool Equals(DatItem? other) + { + // If the other value is invalid + if (other is null) + return false; + + // If the type matches + if (other is DeviceRef otherDeviceRef) + return _internal.Equals(otherDeviceRef._internal); + + // Everything else fails + return false; + } + + #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/DipLocation.cs b/SabreTools.Metadata.DatItems/Formats/DipLocation.cs index dba825e1..20e6d090 100644 --- a/SabreTools.Metadata.DatItems/Formats/DipLocation.cs +++ b/SabreTools.Metadata.DatItems/Formats/DipLocation.cs @@ -69,5 +69,24 @@ namespace SabreTools.Metadata.DatItems.Formats => (_internal as Data.Models.Metadata.DipLocation)?.Clone() as Data.Models.Metadata.DipLocation ?? []; #endregion + + #region Comparision Methods + + /// + public override bool Equals(DatItem? other) + { + // If the other value is invalid + if (other is null) + return false; + + // If the type matches + if (other is DipLocation otherDipLocation) + return _internal.Equals(otherDipLocation._internal); + + // Everything else fails + return false; + } + + #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs b/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs index ff4ad9ef..477f57b3 100644 --- a/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs +++ b/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs @@ -139,5 +139,24 @@ namespace SabreTools.Metadata.DatItems.Formats } #endregion + + #region Comparision Methods + + /// + public override bool Equals(DatItem? other) + { + // If the other value is invalid + if (other is null) + return false; + + // If the type matches + if (other is DipSwitch otherDipSwitch) + return _internal.Equals(otherDipSwitch._internal); + + // Everything else fails + return false; + } + + #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/DipValue.cs b/SabreTools.Metadata.DatItems/Formats/DipValue.cs index 5a2c3d25..10c5ca2c 100644 --- a/SabreTools.Metadata.DatItems/Formats/DipValue.cs +++ b/SabreTools.Metadata.DatItems/Formats/DipValue.cs @@ -86,5 +86,24 @@ namespace SabreTools.Metadata.DatItems.Formats } #endregion + + #region Comparision Methods + + /// + public override bool Equals(DatItem? other) + { + // If the other value is invalid + if (other is null) + return false; + + // If the type matches + if (other is DipValue otherDipValue) + return _internal.Equals(otherDipValue._internal); + + // Everything else fails + return false; + } + + #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/Disk.cs b/SabreTools.Metadata.DatItems/Formats/Disk.cs index 2aaa11a7..8fb16a4e 100644 --- a/SabreTools.Metadata.DatItems/Formats/Disk.cs +++ b/SabreTools.Metadata.DatItems/Formats/Disk.cs @@ -173,6 +173,21 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(DatItem? other) + { + // If the other value is invalid + if (other is null) + return false; + + // If the type matches + if (other is Disk otherDisk) + return _internal.Equals(otherDisk._internal); + + // Everything else fails + return false; + } + /// /// Fill any missing size and hash information from another Disk /// diff --git a/SabreTools.Metadata.DatItems/Formats/DiskArea.cs b/SabreTools.Metadata.DatItems/Formats/DiskArea.cs index dff2e968..181734b3 100644 --- a/SabreTools.Metadata.DatItems/Formats/DiskArea.cs +++ b/SabreTools.Metadata.DatItems/Formats/DiskArea.cs @@ -75,5 +75,24 @@ namespace SabreTools.Metadata.DatItems.Formats } #endregion + + #region Comparision Methods + + /// + public override bool Equals(DatItem? other) + { + // If the other value is invalid + if (other is null) + return false; + + // If the type matches + if (other is DiskArea otherDiskArea) + return _internal.Equals(otherDiskArea._internal); + + // Everything else fails + return false; + } + + #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/Display.cs b/SabreTools.Metadata.DatItems/Formats/Display.cs index 2e469fdd..e1a4d20e 100644 --- a/SabreTools.Metadata.DatItems/Formats/Display.cs +++ b/SabreTools.Metadata.DatItems/Formats/Display.cs @@ -164,5 +164,24 @@ namespace SabreTools.Metadata.DatItems.Formats => (_internal as Data.Models.Metadata.Display)?.Clone() as Data.Models.Metadata.Display ?? []; #endregion + + #region Comparision Methods + + /// + public override bool Equals(DatItem? other) + { + // If the other value is invalid + if (other is null) + return false; + + // If the type matches + if (other is Display otherDisplay) + return _internal.Equals(otherDisplay._internal); + + // Everything else fails + return false; + } + + #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/Driver.cs b/SabreTools.Metadata.DatItems/Formats/Driver.cs index 44dbaa96..0cb6b235 100644 --- a/SabreTools.Metadata.DatItems/Formats/Driver.cs +++ b/SabreTools.Metadata.DatItems/Formats/Driver.cs @@ -123,5 +123,24 @@ namespace SabreTools.Metadata.DatItems.Formats => (_internal as Data.Models.Metadata.Driver)?.Clone() as Data.Models.Metadata.Driver ?? []; #endregion + + #region Comparision Methods + + /// + public override bool Equals(DatItem? other) + { + // If the other value is invalid + if (other is null) + return false; + + // If the type matches + if (other is Driver otherDriver) + return _internal.Equals(otherDriver._internal); + + // Everything else fails + return false; + } + + #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/Extension.cs b/SabreTools.Metadata.DatItems/Formats/Extension.cs index bcf8cf8f..de42fcc0 100644 --- a/SabreTools.Metadata.DatItems/Formats/Extension.cs +++ b/SabreTools.Metadata.DatItems/Formats/Extension.cs @@ -57,5 +57,24 @@ namespace SabreTools.Metadata.DatItems.Formats => (_internal as Data.Models.Metadata.Extension)?.Clone() as Data.Models.Metadata.Extension ?? []; #endregion + + #region Comparision Methods + + /// + public override bool Equals(DatItem? other) + { + // If the other value is invalid + if (other is null) + return false; + + // If the type matches + if (other is Extension otherExtension) + return _internal.Equals(otherExtension._internal); + + // Everything else fails + return false; + } + + #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/Feature.cs b/SabreTools.Metadata.DatItems/Formats/Feature.cs index 6d29df12..ae8b1eae 100644 --- a/SabreTools.Metadata.DatItems/Formats/Feature.cs +++ b/SabreTools.Metadata.DatItems/Formats/Feature.cs @@ -81,5 +81,24 @@ namespace SabreTools.Metadata.DatItems.Formats => (_internal as Data.Models.Metadata.Feature)?.Clone() as Data.Models.Metadata.Feature ?? []; #endregion + + #region Comparision Methods + + /// + public override bool Equals(DatItem? other) + { + // If the other value is invalid + if (other is null) + return false; + + // If the type matches + if (other is Feature otherFeature) + return _internal.Equals(otherFeature._internal); + + // Everything else fails + return false; + } + + #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/Info.cs b/SabreTools.Metadata.DatItems/Formats/Info.cs index 0e17aee1..85004fab 100644 --- a/SabreTools.Metadata.DatItems/Formats/Info.cs +++ b/SabreTools.Metadata.DatItems/Formats/Info.cs @@ -63,5 +63,24 @@ namespace SabreTools.Metadata.DatItems.Formats => (_internal as Data.Models.Metadata.Info)?.Clone() as Data.Models.Metadata.Info ?? []; #endregion + + #region Comparision Methods + + /// + public override bool Equals(DatItem? other) + { + // If the other value is invalid + if (other is null) + return false; + + // If the type matches + if (other is Info otherInfo) + return _internal.Equals(otherInfo._internal); + + // Everything else fails + return false; + } + + #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/Input.cs b/SabreTools.Metadata.DatItems/Formats/Input.cs index 777d27d5..7ee5c207 100644 --- a/SabreTools.Metadata.DatItems/Formats/Input.cs +++ b/SabreTools.Metadata.DatItems/Formats/Input.cs @@ -105,5 +105,24 @@ namespace SabreTools.Metadata.DatItems.Formats } #endregion + + #region Comparision Methods + + /// + public override bool Equals(DatItem? other) + { + // If the other value is invalid + if (other is null) + return false; + + // If the type matches + if (other is Input otherInput) + return _internal.Equals(otherInput._internal); + + // Everything else fails + return false; + } + + #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/Instance.cs b/SabreTools.Metadata.DatItems/Formats/Instance.cs index c443f41e..7ef1fd72 100644 --- a/SabreTools.Metadata.DatItems/Formats/Instance.cs +++ b/SabreTools.Metadata.DatItems/Formats/Instance.cs @@ -63,5 +63,24 @@ namespace SabreTools.Metadata.DatItems.Formats => (_internal as Data.Models.Metadata.Instance)?.Clone() as Data.Models.Metadata.Instance ?? []; #endregion + + #region Comparision Methods + + /// + public override bool Equals(DatItem? other) + { + // If the other value is invalid + if (other is null) + return false; + + // If the type matches + if (other is Instance otherInstance) + return _internal.Equals(otherInstance._internal); + + // Everything else fails + return false; + } + + #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/Media.cs b/SabreTools.Metadata.DatItems/Formats/Media.cs index 77f3d441..849faa1e 100644 --- a/SabreTools.Metadata.DatItems/Formats/Media.cs +++ b/SabreTools.Metadata.DatItems/Formats/Media.cs @@ -118,6 +118,21 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(DatItem? other) + { + // If the other value is invalid + if (other is null) + return false; + + // If the type matches + if (other is Media otherMedia) + return _internal.Equals(otherMedia._internal); + + // Everything else fails + return false; + } + /// /// Fill any missing size and hash information from another Media /// diff --git a/SabreTools.Metadata.DatItems/Formats/Part.cs b/SabreTools.Metadata.DatItems/Formats/Part.cs index 57df8892..a7c8ca93 100644 --- a/SabreTools.Metadata.DatItems/Formats/Part.cs +++ b/SabreTools.Metadata.DatItems/Formats/Part.cs @@ -115,5 +115,24 @@ namespace SabreTools.Metadata.DatItems.Formats } #endregion + + #region Comparision Methods + + /// + public override bool Equals(DatItem? other) + { + // If the other value is invalid + if (other is null) + return false; + + // If the type matches + if (other is Part otherPart) + return _internal.Equals(otherPart._internal); + + // Everything else fails + return false; + } + + #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/PartFeature.cs b/SabreTools.Metadata.DatItems/Formats/PartFeature.cs index 69aa929f..b0898a2a 100644 --- a/SabreTools.Metadata.DatItems/Formats/PartFeature.cs +++ b/SabreTools.Metadata.DatItems/Formats/PartFeature.cs @@ -86,5 +86,24 @@ namespace SabreTools.Metadata.DatItems.Formats => (_internal as Data.Models.Metadata.Feature)?.Clone() as Data.Models.Metadata.Feature ?? []; #endregion + + #region Comparision Methods + + /// + public override bool Equals(DatItem? other) + { + // If the other value is invalid + if (other is null) + return false; + + // If the type matches + if (other is PartFeature otherFeature) + return _internal.Equals(otherFeature._internal); + + // Everything else fails + return false; + } + + #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/Port.cs b/SabreTools.Metadata.DatItems/Formats/Port.cs index d5b6b252..12f3df19 100644 --- a/SabreTools.Metadata.DatItems/Formats/Port.cs +++ b/SabreTools.Metadata.DatItems/Formats/Port.cs @@ -75,5 +75,24 @@ namespace SabreTools.Metadata.DatItems.Formats } #endregion + + #region Comparision Methods + + /// + public override bool Equals(DatItem? other) + { + // If the other value is invalid + if (other is null) + return false; + + // If the type matches + if (other is Port otherPort) + return _internal.Equals(otherPort._internal); + + // Everything else fails + return false; + } + + #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/RamOption.cs b/SabreTools.Metadata.DatItems/Formats/RamOption.cs index 68f78055..9b93da88 100644 --- a/SabreTools.Metadata.DatItems/Formats/RamOption.cs +++ b/SabreTools.Metadata.DatItems/Formats/RamOption.cs @@ -69,5 +69,24 @@ namespace SabreTools.Metadata.DatItems.Formats => (_internal as Data.Models.Metadata.RamOption)?.Clone() as Data.Models.Metadata.RamOption ?? []; #endregion + + #region Comparision Methods + + /// + public override bool Equals(DatItem? other) + { + // If the other value is invalid + if (other is null) + return false; + + // If the type matches + if (other is RamOption otherRamOption) + return _internal.Equals(otherRamOption._internal); + + // Everything else fails + return false; + } + + #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/Release.cs b/SabreTools.Metadata.DatItems/Formats/Release.cs index a700380f..4a59a3c1 100644 --- a/SabreTools.Metadata.DatItems/Formats/Release.cs +++ b/SabreTools.Metadata.DatItems/Formats/Release.cs @@ -81,5 +81,24 @@ namespace SabreTools.Metadata.DatItems.Formats => (_internal as Data.Models.Metadata.Release)?.Clone() as Data.Models.Metadata.Release ?? []; #endregion + + #region Comparision Methods + + /// + public override bool Equals(DatItem? other) + { + // If the other value is invalid + if (other is null) + return false; + + // If the type matches + if (other is Release otherRelease) + return _internal.Equals(otherRelease._internal); + + // Everything else fails + return false; + } + + #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs b/SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs index a40e095c..ddea3c17 100644 --- a/SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs +++ b/SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs @@ -146,5 +146,24 @@ namespace SabreTools.Metadata.DatItems.Formats => (_internal as Data.Models.Metadata.ReleaseDetails)?.Clone() as Data.Models.Metadata.ReleaseDetails ?? []; #endregion + + #region Comparision Methods + + /// + public override bool Equals(DatItem? other) + { + // If the other value is invalid + if (other is null) + return false; + + // If the type matches + if (other is ReleaseDetails otherReleaseDetails) + return _internal.Equals(otherReleaseDetails._internal); + + // Everything else fails + return false; + } + + #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/Rom.cs b/SabreTools.Metadata.DatItems/Formats/Rom.cs index 95d72e0d..3633dd12 100644 --- a/SabreTools.Metadata.DatItems/Formats/Rom.cs +++ b/SabreTools.Metadata.DatItems/Formats/Rom.cs @@ -418,6 +418,21 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(DatItem? other) + { + // If the other value is invalid + if (other is null) + return false; + + // If the type matches + if (other is Rom otherRom) + return _internal.Equals(otherRom._internal); + + // Everything else fails + return false; + } + /// /// Fill any missing size and hash information from another Rom /// diff --git a/SabreTools.Metadata.DatItems/Formats/Sample.cs b/SabreTools.Metadata.DatItems/Formats/Sample.cs index 2db5f59c..ad2df25d 100644 --- a/SabreTools.Metadata.DatItems/Formats/Sample.cs +++ b/SabreTools.Metadata.DatItems/Formats/Sample.cs @@ -57,5 +57,24 @@ namespace SabreTools.Metadata.DatItems.Formats => (_internal as Data.Models.Metadata.Sample)?.Clone() as Data.Models.Metadata.Sample ?? []; #endregion + + #region Comparision Methods + + /// + public override bool Equals(DatItem? other) + { + // If the other value is invalid + if (other is null) + return false; + + // If the type matches + if (other is Sample otherSample) + return _internal.Equals(otherSample._internal); + + // Everything else fails + return false; + } + + #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/Serials.cs b/SabreTools.Metadata.DatItems/Formats/Serials.cs index bf294bb7..f0ab1e10 100644 --- a/SabreTools.Metadata.DatItems/Formats/Serials.cs +++ b/SabreTools.Metadata.DatItems/Formats/Serials.cs @@ -135,5 +135,24 @@ namespace SabreTools.Metadata.DatItems.Formats => (_internal as Data.Models.Metadata.Serials)?.Clone() as Data.Models.Metadata.Serials ?? []; #endregion + + #region Comparision Methods + + /// + public override bool Equals(DatItem? other) + { + // If the other value is invalid + if (other is null) + return false; + + // If the type matches + if (other is Serials otherSerials) + return _internal.Equals(otherSerials._internal); + + // Everything else fails + return false; + } + + #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs b/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs index 0406fa1c..50f759e9 100644 --- a/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs +++ b/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs @@ -63,5 +63,24 @@ namespace SabreTools.Metadata.DatItems.Formats => (_internal as Data.Models.Metadata.SharedFeat)?.Clone() as Data.Models.Metadata.SharedFeat ?? []; #endregion + + #region Comparision Methods + + /// + public override bool Equals(DatItem? other) + { + // If the other value is invalid + if (other is null) + return false; + + // If the type matches + if (other is SharedFeat otherSharedFeat) + return _internal.Equals(otherSharedFeat._internal); + + // Everything else fails + return false; + } + + #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/Slot.cs b/SabreTools.Metadata.DatItems/Formats/Slot.cs index 81e3348f..5137789a 100644 --- a/SabreTools.Metadata.DatItems/Formats/Slot.cs +++ b/SabreTools.Metadata.DatItems/Formats/Slot.cs @@ -75,5 +75,24 @@ namespace SabreTools.Metadata.DatItems.Formats } #endregion + + #region Comparision Methods + + /// + public override bool Equals(DatItem? other) + { + // If the other value is invalid + if (other is null) + return false; + + // If the type matches + if (other is Slot otherSlot) + return _internal.Equals(otherSlot._internal); + + // Everything else fails + return false; + } + + #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/SlotOption.cs b/SabreTools.Metadata.DatItems/Formats/SlotOption.cs index 6a2a649e..73d78416 100644 --- a/SabreTools.Metadata.DatItems/Formats/SlotOption.cs +++ b/SabreTools.Metadata.DatItems/Formats/SlotOption.cs @@ -69,5 +69,24 @@ namespace SabreTools.Metadata.DatItems.Formats => (_internal as Data.Models.Metadata.SlotOption)?.Clone() as Data.Models.Metadata.SlotOption ?? []; #endregion + + #region Comparision Methods + + /// + public override bool Equals(DatItem? other) + { + // If the other value is invalid + if (other is null) + return false; + + // If the type matches + if (other is SlotOption otherSlotOption) + return _internal.Equals(otherSlotOption._internal); + + // Everything else fails + return false; + } + + #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs b/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs index e3bec0c8..f7d1015b 100644 --- a/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs +++ b/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs @@ -75,5 +75,24 @@ namespace SabreTools.Metadata.DatItems.Formats => (_internal as Data.Models.Metadata.SoftwareList)?.Clone() as Data.Models.Metadata.SoftwareList ?? []; #endregion + + #region Comparision Methods + + /// + public override bool Equals(DatItem? other) + { + // If the other value is invalid + if (other is null) + return false; + + // If the type matches + if (other is SoftwareList otherSoftwareList) + return _internal.Equals(otherSoftwareList._internal); + + // Everything else fails + return false; + } + + #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/Sound.cs b/SabreTools.Metadata.DatItems/Formats/Sound.cs index dbdcaa22..44b0e3df 100644 --- a/SabreTools.Metadata.DatItems/Formats/Sound.cs +++ b/SabreTools.Metadata.DatItems/Formats/Sound.cs @@ -57,5 +57,24 @@ namespace SabreTools.Metadata.DatItems.Formats => (_internal as Data.Models.Metadata.Sound)?.Clone() as Data.Models.Metadata.Sound ?? []; #endregion + + #region Comparision Methods + + /// + public override bool Equals(DatItem? other) + { + // If the other value is invalid + if (other is null) + return false; + + // If the type matches + if (other is Sound otherSound) + return _internal.Equals(otherSound._internal); + + // Everything else fails + return false; + } + + #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/SourceDetails.cs b/SabreTools.Metadata.DatItems/Formats/SourceDetails.cs index 5dbdcda6..c330d8b6 100644 --- a/SabreTools.Metadata.DatItems/Formats/SourceDetails.cs +++ b/SabreTools.Metadata.DatItems/Formats/SourceDetails.cs @@ -195,5 +195,24 @@ namespace SabreTools.Metadata.DatItems.Formats => (_internal as Data.Models.Metadata.SourceDetails)?.Clone() as Data.Models.Metadata.SourceDetails ?? []; #endregion + + #region Comparision Methods + + /// + public override bool Equals(DatItem? other) + { + // If the other value is invalid + if (other is null) + return false; + + // If the type matches + if (other is SourceDetails otherSourceDetails) + return _internal.Equals(otherSourceDetails._internal); + + // Everything else fails + return false; + } + + #endregion } } From 8fe2b51d6fa710983dad33a5bd3eeae02969d194 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sat, 4 Apr 2026 19:47:00 -0400 Subject: [PATCH 094/142] Further reduce calls to EqualTo --- SabreTools.Metadata.DatFiles/DatHeader.cs | 4 +-- .../DatItemTests.cs | 27 +++++++++++++++++-- SabreTools.Metadata.DatItems/DatItem.cs | 14 +--------- .../Formats/Adjuster.cs | 17 +++++++++++- .../Formats/Analog.cs | 17 +++++++++++- .../Formats/Archive.cs | 17 +++++++++++- .../Formats/BiosSet.cs | 17 +++++++++++- SabreTools.Metadata.DatItems/Formats/Blank.cs | 17 +++++++++++- SabreTools.Metadata.DatItems/Formats/Chip.cs | 17 +++++++++++- .../Formats/Condition.cs | 17 +++++++++++- .../Formats/ConfLocation.cs | 17 +++++++++++- .../Formats/ConfSetting.cs | 17 +++++++++++- .../Formats/Configuration.cs | 17 +++++++++++- .../Formats/Control.cs | 17 +++++++++++- .../Formats/DataArea.cs | 17 +++++++++++- .../Formats/Device.cs | 17 +++++++++++- .../Formats/DeviceRef.cs | 17 +++++++++++- .../Formats/DipLocation.cs | 17 +++++++++++- .../Formats/DipSwitch.cs | 17 +++++++++++- .../Formats/DipValue.cs | 17 +++++++++++- SabreTools.Metadata.DatItems/Formats/Disk.cs | 17 +++++++++++- .../Formats/DiskArea.cs | 17 +++++++++++- .../Formats/Display.cs | 17 +++++++++++- .../Formats/Driver.cs | 17 +++++++++++- .../Formats/Extension.cs | 17 +++++++++++- .../Formats/Feature.cs | 17 +++++++++++- SabreTools.Metadata.DatItems/Formats/Info.cs | 17 +++++++++++- SabreTools.Metadata.DatItems/Formats/Input.cs | 17 +++++++++++- .../Formats/Instance.cs | 17 +++++++++++- SabreTools.Metadata.DatItems/Formats/Media.cs | 17 +++++++++++- SabreTools.Metadata.DatItems/Formats/Part.cs | 17 +++++++++++- .../Formats/PartFeature.cs | 19 +++++++++++-- SabreTools.Metadata.DatItems/Formats/Port.cs | 17 +++++++++++- .../Formats/RamOption.cs | 17 +++++++++++- .../Formats/Release.cs | 19 +++++++++++-- .../Formats/ReleaseDetails.cs | 17 +++++++++++- SabreTools.Metadata.DatItems/Formats/Rom.cs | 17 +++++++++++- .../Formats/Sample.cs | 17 +++++++++++- .../Formats/Serials.cs | 17 +++++++++++- .../Formats/SharedFeat.cs | 17 +++++++++++- SabreTools.Metadata.DatItems/Formats/Slot.cs | 17 +++++++++++- .../Formats/SlotOption.cs | 19 +++++++++++-- .../Formats/SoftwareList.cs | 17 +++++++++++- SabreTools.Metadata.DatItems/Formats/Sound.cs | 17 +++++++++++- .../Formats/SourceDetails.cs | 17 +++++++++++- .../DictionaryBaseExtensions.cs | 18 ++++++------- 46 files changed, 712 insertions(+), 71 deletions(-) diff --git a/SabreTools.Metadata.DatFiles/DatHeader.cs b/SabreTools.Metadata.DatFiles/DatHeader.cs index 59d64715..288f418c 100644 --- a/SabreTools.Metadata.DatFiles/DatHeader.cs +++ b/SabreTools.Metadata.DatFiles/DatHeader.cs @@ -385,7 +385,7 @@ namespace SabreTools.Metadata.DatFiles return false; // Compare internal models - return _internal.EqualTo(otherItem._internal); + return _internal.Equals(otherItem._internal); } /// @@ -400,7 +400,7 @@ namespace SabreTools.Metadata.DatFiles return false; // Compare internal models - return _internal.EqualTo(otherItem._internal); + return _internal.Equals(otherItem._internal); } #endregion diff --git a/SabreTools.Metadata.DatItems.Test/DatItemTests.cs b/SabreTools.Metadata.DatItems.Test/DatItemTests.cs index f464cb02..94fafcd8 100644 --- a/SabreTools.Metadata.DatItems.Test/DatItemTests.cs +++ b/SabreTools.Metadata.DatItems.Test/DatItemTests.cs @@ -11,12 +11,21 @@ namespace SabreTools.Metadata.DatItems.Test /// /// Testing implementation of Data.Models.Metadata.DatItem /// - private class TestDatItemModel : Data.Models.Metadata.DatItem, ICloneable + private class TestDatItemModel : Data.Models.Metadata.DatItem, ICloneable, IEquatable { public string? Name { get; set; } /// public object Clone() => new TestDatItemModel { Name = Name }; + + /// + public bool Equals(TestDatItemModel? other) + { + if (other is null) + return false; + + return string.Equals(Name, other.Name, StringComparison.OrdinalIgnoreCase); + } } /// @@ -52,6 +61,20 @@ namespace SabreTools.Metadata.DatItems.Test /// public override void SetName(string? name) => Name = name; + /// + public override bool Equals(DatItem? other) + { + // If the other value is invalid + if (other is null) + return false; + + // If the type matches + if (other is TestDatItem otherTestDatItem) + return ((TestDatItemModel)_internal).Equals((TestDatItemModel)otherTestDatItem._internal); + + // Everything else fails + return false; + } /// public override bool Equals(DatItem? other) @@ -62,7 +85,7 @@ namespace SabreTools.Metadata.DatItems.Test // If the type matches if (other is TestDatItem otherTestDatItem) - return _internal.Equals(otherTestDatItem._internal); + return ((TestDatItemModel)_internal).Equals((TestDatItemModel)otherTestDatItem._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/DatItem.cs b/SabreTools.Metadata.DatItems/DatItem.cs index 521e3860..d3bb3e83 100644 --- a/SabreTools.Metadata.DatItems/DatItem.cs +++ b/SabreTools.Metadata.DatItems/DatItem.cs @@ -203,19 +203,7 @@ namespace SabreTools.Metadata.DatItems /// /// DatItem to use as a baseline /// True if the items are duplicates, false otherwise - public virtual bool Equals(DatItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If we don't have a matched type, return false - if (ItemType != other.ItemType) - return false; - - // Compare the internal models - return _internal.EqualTo(other._internal); - } + public abstract bool Equals(DatItem? other); #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/Adjuster.cs b/SabreTools.Metadata.DatItems/Formats/Adjuster.cs index 6d0d074a..df373844 100644 --- a/SabreTools.Metadata.DatItems/Formats/Adjuster.cs +++ b/SabreTools.Metadata.DatItems/Formats/Adjuster.cs @@ -83,6 +83,21 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(DatItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Adjuster otherAdjuster) + return ((Data.Models.Metadata.Adjuster)_internal).Equals((Data.Models.Metadata.Adjuster)otherAdjuster._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { @@ -92,7 +107,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Adjuster otherAdjuster) - return _internal.Equals(otherAdjuster._internal); + return ((Data.Models.Metadata.Adjuster)_internal).Equals((Data.Models.Metadata.Adjuster)otherAdjuster._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/Analog.cs b/SabreTools.Metadata.DatItems/Formats/Analog.cs index 716a2264..e273c326 100644 --- a/SabreTools.Metadata.DatItems/Formats/Analog.cs +++ b/SabreTools.Metadata.DatItems/Formats/Analog.cs @@ -60,6 +60,21 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(DatItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Analog otherAnalog) + return ((Data.Models.Metadata.Analog)_internal).Equals((Data.Models.Metadata.Analog)otherAnalog._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { @@ -69,7 +84,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Analog otherAnalog) - return _internal.Equals(otherAnalog._internal); + return ((Data.Models.Metadata.Analog)_internal).Equals((Data.Models.Metadata.Analog)otherAnalog._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/Archive.cs b/SabreTools.Metadata.DatItems/Formats/Archive.cs index f1d1e11f..5c8096aa 100644 --- a/SabreTools.Metadata.DatItems/Formats/Archive.cs +++ b/SabreTools.Metadata.DatItems/Formats/Archive.cs @@ -251,6 +251,21 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(DatItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Archive otherArchive) + return ((Data.Models.Metadata.Archive)_internal).Equals((Data.Models.Metadata.Archive)otherArchive._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { @@ -260,7 +275,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Archive otherArchive) - return _internal.Equals(otherArchive._internal); + return ((Data.Models.Metadata.Archive)_internal).Equals((Data.Models.Metadata.Archive)otherArchive._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/BiosSet.cs b/SabreTools.Metadata.DatItems/Formats/BiosSet.cs index fc0ed918..963519e9 100644 --- a/SabreTools.Metadata.DatItems/Formats/BiosSet.cs +++ b/SabreTools.Metadata.DatItems/Formats/BiosSet.cs @@ -72,6 +72,21 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(DatItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is BiosSet otherBiosSet) + return ((Data.Models.Metadata.BiosSet)_internal).Equals((Data.Models.Metadata.BiosSet)otherBiosSet._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { @@ -81,7 +96,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is BiosSet otherBiosSet) - return _internal.Equals(otherBiosSet._internal); + return ((Data.Models.Metadata.BiosSet)_internal).Equals((Data.Models.Metadata.BiosSet)otherBiosSet._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/Blank.cs b/SabreTools.Metadata.DatItems/Formats/Blank.cs index 624f19c4..c991685c 100644 --- a/SabreTools.Metadata.DatItems/Formats/Blank.cs +++ b/SabreTools.Metadata.DatItems/Formats/Blank.cs @@ -54,6 +54,21 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(DatItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Blank otherBlank) + return ((Data.Models.Metadata.Blank)_internal).Equals((Data.Models.Metadata.Blank)otherBlank._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { @@ -63,7 +78,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Blank otherBlank) - return _internal.Equals(otherBlank._internal); + return ((Data.Models.Metadata.Blank)_internal).Equals((Data.Models.Metadata.Blank)otherBlank._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/Chip.cs b/SabreTools.Metadata.DatItems/Formats/Chip.cs index 3d527bd7..87a66582 100644 --- a/SabreTools.Metadata.DatItems/Formats/Chip.cs +++ b/SabreTools.Metadata.DatItems/Formats/Chip.cs @@ -90,6 +90,21 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(DatItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Chip otherChip) + return ((Data.Models.Metadata.Chip)_internal).Equals((Data.Models.Metadata.Chip)otherChip._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { @@ -99,7 +114,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Chip otherChip) - return _internal.Equals(otherChip._internal); + return ((Data.Models.Metadata.Chip)_internal).Equals((Data.Models.Metadata.Chip)otherChip._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/Condition.cs b/SabreTools.Metadata.DatItems/Formats/Condition.cs index 19209b47..7ca1d651 100644 --- a/SabreTools.Metadata.DatItems/Formats/Condition.cs +++ b/SabreTools.Metadata.DatItems/Formats/Condition.cs @@ -78,6 +78,21 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(DatItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Condition otherCondition) + return ((Data.Models.Metadata.Condition)_internal).Equals((Data.Models.Metadata.Condition)otherCondition._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { @@ -87,7 +102,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Condition otherCondition) - return _internal.Equals(otherCondition._internal); + return ((Data.Models.Metadata.Condition)_internal).Equals((Data.Models.Metadata.Condition)otherCondition._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs b/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs index 7138f035..34156835 100644 --- a/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs +++ b/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs @@ -72,6 +72,21 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(DatItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is ConfLocation otherConfLocation) + return ((Data.Models.Metadata.ConfLocation)_internal).Equals((Data.Models.Metadata.ConfLocation)otherConfLocation._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { @@ -81,7 +96,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is ConfLocation otherConfLocation) - return _internal.Equals(otherConfLocation._internal); + return ((Data.Models.Metadata.ConfLocation)_internal).Equals((Data.Models.Metadata.ConfLocation)otherConfLocation._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs b/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs index fed34ae7..8589492e 100644 --- a/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs +++ b/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs @@ -89,6 +89,21 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(DatItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is ConfSetting otherConfSetting) + return ((Data.Models.Metadata.ConfSetting)_internal).Equals((Data.Models.Metadata.ConfSetting)otherConfSetting._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { @@ -98,7 +113,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is ConfSetting otherConfSetting) - return _internal.Equals(otherConfSetting._internal); + return ((Data.Models.Metadata.ConfSetting)_internal).Equals((Data.Models.Metadata.ConfSetting)otherConfSetting._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/Configuration.cs b/SabreTools.Metadata.DatItems/Formats/Configuration.cs index d6feec4c..80c75f5e 100644 --- a/SabreTools.Metadata.DatItems/Formats/Configuration.cs +++ b/SabreTools.Metadata.DatItems/Formats/Configuration.cs @@ -112,6 +112,21 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(DatItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Configuration otherConfiguration) + return ((Data.Models.Metadata.Configuration)_internal).Equals((Data.Models.Metadata.Configuration)otherConfiguration._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { @@ -121,7 +136,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Configuration otherConfiguration) - return _internal.Equals(otherConfiguration._internal); + return ((Data.Models.Metadata.Configuration)_internal).Equals((Data.Models.Metadata.Configuration)otherConfiguration._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/Control.cs b/SabreTools.Metadata.DatItems/Formats/Control.cs index 8193f94e..507c3f95 100644 --- a/SabreTools.Metadata.DatItems/Formats/Control.cs +++ b/SabreTools.Metadata.DatItems/Formats/Control.cs @@ -126,6 +126,21 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(DatItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Control otherControl) + return ((Data.Models.Metadata.Control)_internal).Equals((Data.Models.Metadata.Control)otherControl._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { @@ -135,7 +150,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Control otherControl) - return _internal.Equals(otherControl._internal); + return ((Data.Models.Metadata.Control)_internal).Equals((Data.Models.Metadata.Control)otherControl._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/DataArea.cs b/SabreTools.Metadata.DatItems/Formats/DataArea.cs index e89a4827..59de6144 100644 --- a/SabreTools.Metadata.DatItems/Formats/DataArea.cs +++ b/SabreTools.Metadata.DatItems/Formats/DataArea.cs @@ -96,6 +96,21 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(DatItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is DataArea otherDataArea) + return ((Data.Models.Metadata.DataArea)_internal).Equals((Data.Models.Metadata.DataArea)otherDataArea._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { @@ -105,7 +120,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is DataArea otherDataArea) - return _internal.Equals(otherDataArea._internal); + return ((Data.Models.Metadata.DataArea)_internal).Equals((Data.Models.Metadata.DataArea)otherDataArea._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/Device.cs b/SabreTools.Metadata.DatItems/Formats/Device.cs index 3cbff095..3d671a91 100644 --- a/SabreTools.Metadata.DatItems/Formats/Device.cs +++ b/SabreTools.Metadata.DatItems/Formats/Device.cs @@ -119,6 +119,21 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(DatItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Device otherDevice) + return ((Data.Models.Metadata.Device)_internal).Equals((Data.Models.Metadata.Device)otherDevice._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { @@ -128,7 +143,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Device otherDevice) - return _internal.Equals(otherDevice._internal); + return ((Data.Models.Metadata.Device)_internal).Equals((Data.Models.Metadata.Device)otherDevice._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs b/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs index 90eb1662..bddd13ca 100644 --- a/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs +++ b/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs @@ -60,6 +60,21 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(DatItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is DeviceRef otherDeviceRef) + return ((Data.Models.Metadata.DeviceRef)_internal).Equals((Data.Models.Metadata.DeviceRef)otherDeviceRef._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { @@ -69,7 +84,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is DeviceRef otherDeviceRef) - return _internal.Equals(otherDeviceRef._internal); + return ((Data.Models.Metadata.DeviceRef)_internal).Equals((Data.Models.Metadata.DeviceRef)otherDeviceRef._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/DipLocation.cs b/SabreTools.Metadata.DatItems/Formats/DipLocation.cs index 20e6d090..a069576f 100644 --- a/SabreTools.Metadata.DatItems/Formats/DipLocation.cs +++ b/SabreTools.Metadata.DatItems/Formats/DipLocation.cs @@ -72,6 +72,21 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(DatItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is DipLocation otherDipLocation) + return ((Data.Models.Metadata.DipLocation)_internal).Equals((Data.Models.Metadata.DipLocation)otherDipLocation._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { @@ -81,7 +96,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is DipLocation otherDipLocation) - return _internal.Equals(otherDipLocation._internal); + return ((Data.Models.Metadata.DipLocation)_internal).Equals((Data.Models.Metadata.DipLocation)otherDipLocation._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs b/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs index 477f57b3..599b37a2 100644 --- a/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs +++ b/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs @@ -142,6 +142,21 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(DatItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is DipSwitch otherDipSwitch) + return ((Data.Models.Metadata.DipSwitch)_internal).Equals((Data.Models.Metadata.DipSwitch)otherDipSwitch._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { @@ -151,7 +166,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is DipSwitch otherDipSwitch) - return _internal.Equals(otherDipSwitch._internal); + return ((Data.Models.Metadata.DipSwitch)_internal).Equals((Data.Models.Metadata.DipSwitch)otherDipSwitch._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/DipValue.cs b/SabreTools.Metadata.DatItems/Formats/DipValue.cs index 10c5ca2c..0f5f72c6 100644 --- a/SabreTools.Metadata.DatItems/Formats/DipValue.cs +++ b/SabreTools.Metadata.DatItems/Formats/DipValue.cs @@ -89,6 +89,21 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(DatItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is DipValue otherDipValue) + return ((Data.Models.Metadata.DipValue)_internal).Equals((Data.Models.Metadata.DipValue)otherDipValue._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { @@ -98,7 +113,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is DipValue otherDipValue) - return _internal.Equals(otherDipValue._internal); + return ((Data.Models.Metadata.DipValue)_internal).Equals((Data.Models.Metadata.DipValue)otherDipValue._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/Disk.cs b/SabreTools.Metadata.DatItems/Formats/Disk.cs index 8fb16a4e..d143850e 100644 --- a/SabreTools.Metadata.DatItems/Formats/Disk.cs +++ b/SabreTools.Metadata.DatItems/Formats/Disk.cs @@ -173,6 +173,21 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(DatItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Disk otherDisk) + return ((Data.Models.Metadata.Disk)_internal).PartialEquals((Data.Models.Metadata.Disk)otherDisk._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { @@ -182,7 +197,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Disk otherDisk) - return _internal.Equals(otherDisk._internal); + return ((Data.Models.Metadata.Disk)_internal).PartialEquals((Data.Models.Metadata.Disk)otherDisk._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/DiskArea.cs b/SabreTools.Metadata.DatItems/Formats/DiskArea.cs index 181734b3..4bf14abc 100644 --- a/SabreTools.Metadata.DatItems/Formats/DiskArea.cs +++ b/SabreTools.Metadata.DatItems/Formats/DiskArea.cs @@ -78,6 +78,21 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(DatItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is DiskArea otherDiskArea) + return ((Data.Models.Metadata.DiskArea)_internal).Equals((Data.Models.Metadata.DiskArea)otherDiskArea._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { @@ -87,7 +102,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is DiskArea otherDiskArea) - return _internal.Equals(otherDiskArea._internal); + return ((Data.Models.Metadata.DiskArea)_internal).Equals((Data.Models.Metadata.DiskArea)otherDiskArea._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/Display.cs b/SabreTools.Metadata.DatItems/Formats/Display.cs index e1a4d20e..cf2067ce 100644 --- a/SabreTools.Metadata.DatItems/Formats/Display.cs +++ b/SabreTools.Metadata.DatItems/Formats/Display.cs @@ -167,6 +167,21 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(DatItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Display otherDisplay) + return ((Data.Models.Metadata.Display)_internal).Equals((Data.Models.Metadata.Display)otherDisplay._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { @@ -176,7 +191,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Display otherDisplay) - return _internal.Equals(otherDisplay._internal); + return ((Data.Models.Metadata.Display)_internal).Equals((Data.Models.Metadata.Display)otherDisplay._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/Driver.cs b/SabreTools.Metadata.DatItems/Formats/Driver.cs index 0cb6b235..0950489d 100644 --- a/SabreTools.Metadata.DatItems/Formats/Driver.cs +++ b/SabreTools.Metadata.DatItems/Formats/Driver.cs @@ -126,6 +126,21 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(DatItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Driver otherDriver) + return ((Data.Models.Metadata.Driver)_internal).Equals((Data.Models.Metadata.Driver)otherDriver._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { @@ -135,7 +150,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Driver otherDriver) - return _internal.Equals(otherDriver._internal); + return ((Data.Models.Metadata.Driver)_internal).Equals((Data.Models.Metadata.Driver)otherDriver._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/Extension.cs b/SabreTools.Metadata.DatItems/Formats/Extension.cs index de42fcc0..544d49a0 100644 --- a/SabreTools.Metadata.DatItems/Formats/Extension.cs +++ b/SabreTools.Metadata.DatItems/Formats/Extension.cs @@ -60,6 +60,21 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(DatItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Extension otherExtension) + return ((Data.Models.Metadata.Extension)_internal).Equals((Data.Models.Metadata.Extension)otherExtension._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { @@ -69,7 +84,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Extension otherExtension) - return _internal.Equals(otherExtension._internal); + return ((Data.Models.Metadata.Extension)_internal).Equals((Data.Models.Metadata.Extension)otherExtension._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/Feature.cs b/SabreTools.Metadata.DatItems/Formats/Feature.cs index ae8b1eae..7c28d4f3 100644 --- a/SabreTools.Metadata.DatItems/Formats/Feature.cs +++ b/SabreTools.Metadata.DatItems/Formats/Feature.cs @@ -84,6 +84,21 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(DatItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Feature otherFeature) + return ((Data.Models.Metadata.Feature)_internal).Equals((Data.Models.Metadata.Feature)otherFeature._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { @@ -93,7 +108,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Feature otherFeature) - return _internal.Equals(otherFeature._internal); + return ((Data.Models.Metadata.Feature)_internal).Equals((Data.Models.Metadata.Feature)otherFeature._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/Info.cs b/SabreTools.Metadata.DatItems/Formats/Info.cs index 85004fab..53c3c396 100644 --- a/SabreTools.Metadata.DatItems/Formats/Info.cs +++ b/SabreTools.Metadata.DatItems/Formats/Info.cs @@ -66,6 +66,21 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(DatItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Info otherInfo) + return ((Data.Models.Metadata.Info)_internal).Equals((Data.Models.Metadata.Info)otherInfo._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { @@ -75,7 +90,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Info otherInfo) - return _internal.Equals(otherInfo._internal); + return ((Data.Models.Metadata.Info)_internal).Equals((Data.Models.Metadata.Info)otherInfo._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/Input.cs b/SabreTools.Metadata.DatItems/Formats/Input.cs index 7ee5c207..1a7b877c 100644 --- a/SabreTools.Metadata.DatItems/Formats/Input.cs +++ b/SabreTools.Metadata.DatItems/Formats/Input.cs @@ -108,6 +108,21 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(DatItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Input otherInput) + return ((Data.Models.Metadata.Input)_internal).Equals((Data.Models.Metadata.Input)otherInput._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { @@ -117,7 +132,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Input otherInput) - return _internal.Equals(otherInput._internal); + return ((Data.Models.Metadata.Input)_internal).Equals((Data.Models.Metadata.Input)otherInput._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/Instance.cs b/SabreTools.Metadata.DatItems/Formats/Instance.cs index 7ef1fd72..d1b9d737 100644 --- a/SabreTools.Metadata.DatItems/Formats/Instance.cs +++ b/SabreTools.Metadata.DatItems/Formats/Instance.cs @@ -66,6 +66,21 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(DatItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Instance otherInstance) + return ((Data.Models.Metadata.Instance)_internal).Equals((Data.Models.Metadata.Instance)otherInstance._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { @@ -75,7 +90,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Instance otherInstance) - return _internal.Equals(otherInstance._internal); + return ((Data.Models.Metadata.Instance)_internal).Equals((Data.Models.Metadata.Instance)otherInstance._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/Media.cs b/SabreTools.Metadata.DatItems/Formats/Media.cs index 849faa1e..d00f996d 100644 --- a/SabreTools.Metadata.DatItems/Formats/Media.cs +++ b/SabreTools.Metadata.DatItems/Formats/Media.cs @@ -118,6 +118,21 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(DatItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Media otherMedia) + return ((Data.Models.Metadata.Media)_internal).PartialEquals((Data.Models.Metadata.Media)otherMedia._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { @@ -127,7 +142,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Media otherMedia) - return _internal.Equals(otherMedia._internal); + return ((Data.Models.Metadata.Media)_internal).PartialEquals((Data.Models.Metadata.Media)otherMedia._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/Part.cs b/SabreTools.Metadata.DatItems/Formats/Part.cs index a7c8ca93..5c6a4d8c 100644 --- a/SabreTools.Metadata.DatItems/Formats/Part.cs +++ b/SabreTools.Metadata.DatItems/Formats/Part.cs @@ -118,6 +118,21 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(DatItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Part otherPart) + return ((Data.Models.Metadata.Part)_internal).Equals((Data.Models.Metadata.Part)otherPart._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { @@ -127,7 +142,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Part otherPart) - return _internal.Equals(otherPart._internal); + return ((Data.Models.Metadata.Part)_internal).Equals((Data.Models.Metadata.Part)otherPart._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/PartFeature.cs b/SabreTools.Metadata.DatItems/Formats/PartFeature.cs index b0898a2a..1db21084 100644 --- a/SabreTools.Metadata.DatItems/Formats/PartFeature.cs +++ b/SabreTools.Metadata.DatItems/Formats/PartFeature.cs @@ -89,6 +89,21 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(DatItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is PartFeature otherPartFeature) + return ((Data.Models.Metadata.Feature)_internal).Equals((Data.Models.Metadata.Feature)otherPartFeature._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { @@ -97,8 +112,8 @@ namespace SabreTools.Metadata.DatItems.Formats return false; // If the type matches - if (other is PartFeature otherFeature) - return _internal.Equals(otherFeature._internal); + if (other is PartFeature otherPartFeature) + return ((Data.Models.Metadata.Feature)_internal).Equals((Data.Models.Metadata.Feature)otherPartFeature._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/Port.cs b/SabreTools.Metadata.DatItems/Formats/Port.cs index 12f3df19..cd453bb2 100644 --- a/SabreTools.Metadata.DatItems/Formats/Port.cs +++ b/SabreTools.Metadata.DatItems/Formats/Port.cs @@ -78,6 +78,21 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(DatItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Port otherPort) + return ((Data.Models.Metadata.Port)_internal).Equals((Data.Models.Metadata.Port)otherPort._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { @@ -87,7 +102,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Port otherPort) - return _internal.Equals(otherPort._internal); + return ((Data.Models.Metadata.Port)_internal).Equals((Data.Models.Metadata.Port)otherPort._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/RamOption.cs b/SabreTools.Metadata.DatItems/Formats/RamOption.cs index 9b93da88..f9d20c76 100644 --- a/SabreTools.Metadata.DatItems/Formats/RamOption.cs +++ b/SabreTools.Metadata.DatItems/Formats/RamOption.cs @@ -72,6 +72,21 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(DatItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is RamOption otherRamOption) + return ((Data.Models.Metadata.RamOption)_internal).Equals((Data.Models.Metadata.RamOption)otherRamOption._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { @@ -81,7 +96,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is RamOption otherRamOption) - return _internal.Equals(otherRamOption._internal); + return ((Data.Models.Metadata.RamOption)_internal).Equals((Data.Models.Metadata.RamOption)otherRamOption._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/Release.cs b/SabreTools.Metadata.DatItems/Formats/Release.cs index 4a59a3c1..1830b27d 100644 --- a/SabreTools.Metadata.DatItems/Formats/Release.cs +++ b/SabreTools.Metadata.DatItems/Formats/Release.cs @@ -1,4 +1,4 @@ -using System.Xml.Serialization; +using System.Xml.Serialization; using Newtonsoft.Json; namespace SabreTools.Metadata.DatItems.Formats @@ -84,6 +84,21 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(DatItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Release otherRelease) + return ((Data.Models.Metadata.Release)_internal).Equals((Data.Models.Metadata.Release)otherRelease._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { @@ -93,7 +108,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Release otherRelease) - return _internal.Equals(otherRelease._internal); + return ((Data.Models.Metadata.Release)_internal).Equals((Data.Models.Metadata.Release)otherRelease._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs b/SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs index ddea3c17..af4669f9 100644 --- a/SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs +++ b/SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs @@ -149,6 +149,21 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(DatItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is ReleaseDetails otherReleaseDetails) + return ((Data.Models.Metadata.ReleaseDetails)_internal).Equals((Data.Models.Metadata.ReleaseDetails)otherReleaseDetails._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { @@ -158,7 +173,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is ReleaseDetails otherReleaseDetails) - return _internal.Equals(otherReleaseDetails._internal); + return ((Data.Models.Metadata.ReleaseDetails)_internal).Equals((Data.Models.Metadata.ReleaseDetails)otherReleaseDetails._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/Rom.cs b/SabreTools.Metadata.DatItems/Formats/Rom.cs index 3633dd12..93de0bb7 100644 --- a/SabreTools.Metadata.DatItems/Formats/Rom.cs +++ b/SabreTools.Metadata.DatItems/Formats/Rom.cs @@ -418,6 +418,21 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(DatItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Rom otherRom) + return ((Data.Models.Metadata.Rom)_internal).PartialEquals((Data.Models.Metadata.Rom)otherRom._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { @@ -427,7 +442,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Rom otherRom) - return _internal.Equals(otherRom._internal); + return ((Data.Models.Metadata.Rom)_internal).PartialEquals((Data.Models.Metadata.Rom)otherRom._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/Sample.cs b/SabreTools.Metadata.DatItems/Formats/Sample.cs index ad2df25d..d75fecba 100644 --- a/SabreTools.Metadata.DatItems/Formats/Sample.cs +++ b/SabreTools.Metadata.DatItems/Formats/Sample.cs @@ -60,6 +60,21 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(DatItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Sample otherSample) + return ((Data.Models.Metadata.Sample)_internal).Equals((Data.Models.Metadata.Sample)otherSample._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { @@ -69,7 +84,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Sample otherSample) - return _internal.Equals(otherSample._internal); + return ((Data.Models.Metadata.Sample)_internal).Equals((Data.Models.Metadata.Sample)otherSample._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/Serials.cs b/SabreTools.Metadata.DatItems/Formats/Serials.cs index f0ab1e10..0926c140 100644 --- a/SabreTools.Metadata.DatItems/Formats/Serials.cs +++ b/SabreTools.Metadata.DatItems/Formats/Serials.cs @@ -138,6 +138,21 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(DatItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Serials otherSerials) + return ((Data.Models.Metadata.Serials)_internal).Equals((Data.Models.Metadata.Serials)otherSerials._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { @@ -147,7 +162,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Serials otherSerials) - return _internal.Equals(otherSerials._internal); + return ((Data.Models.Metadata.Serials)_internal).Equals((Data.Models.Metadata.Serials)otherSerials._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs b/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs index 50f759e9..8f0926c5 100644 --- a/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs +++ b/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs @@ -66,6 +66,21 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(DatItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is SharedFeat otherSharedFeat) + return ((Data.Models.Metadata.SharedFeat)_internal).Equals((Data.Models.Metadata.SharedFeat)otherSharedFeat._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { @@ -75,7 +90,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is SharedFeat otherSharedFeat) - return _internal.Equals(otherSharedFeat._internal); + return ((Data.Models.Metadata.SharedFeat)_internal).Equals((Data.Models.Metadata.SharedFeat)otherSharedFeat._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/Slot.cs b/SabreTools.Metadata.DatItems/Formats/Slot.cs index 5137789a..6c5b58b3 100644 --- a/SabreTools.Metadata.DatItems/Formats/Slot.cs +++ b/SabreTools.Metadata.DatItems/Formats/Slot.cs @@ -78,6 +78,21 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(DatItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Slot otherSlot) + return ((Data.Models.Metadata.Slot)_internal).Equals((Data.Models.Metadata.Slot)otherSlot._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { @@ -87,7 +102,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Slot otherSlot) - return _internal.Equals(otherSlot._internal); + return ((Data.Models.Metadata.Slot)_internal).Equals((Data.Models.Metadata.Slot)otherSlot._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/SlotOption.cs b/SabreTools.Metadata.DatItems/Formats/SlotOption.cs index 73d78416..3f8fbb11 100644 --- a/SabreTools.Metadata.DatItems/Formats/SlotOption.cs +++ b/SabreTools.Metadata.DatItems/Formats/SlotOption.cs @@ -1,4 +1,4 @@ -using System.Xml.Serialization; +using System.Xml.Serialization; using Newtonsoft.Json; namespace SabreTools.Metadata.DatItems.Formats @@ -72,6 +72,21 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(DatItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is SlotOption otherSlotOption) + return ((Data.Models.Metadata.SlotOption)_internal).Equals((Data.Models.Metadata.SlotOption)otherSlotOption._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { @@ -81,7 +96,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is SlotOption otherSlotOption) - return _internal.Equals(otherSlotOption._internal); + return ((Data.Models.Metadata.SlotOption)_internal).Equals((Data.Models.Metadata.SlotOption)otherSlotOption._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs b/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs index f7d1015b..e705d84a 100644 --- a/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs +++ b/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs @@ -78,6 +78,21 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(DatItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is SoftwareList otherSoftwareList) + return ((Data.Models.Metadata.SoftwareList)_internal).Equals((Data.Models.Metadata.SoftwareList)otherSoftwareList._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { @@ -87,7 +102,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is SoftwareList otherSoftwareList) - return _internal.Equals(otherSoftwareList._internal); + return ((Data.Models.Metadata.SoftwareList)_internal).Equals((Data.Models.Metadata.SoftwareList)otherSoftwareList._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/Sound.cs b/SabreTools.Metadata.DatItems/Formats/Sound.cs index 44b0e3df..feab808a 100644 --- a/SabreTools.Metadata.DatItems/Formats/Sound.cs +++ b/SabreTools.Metadata.DatItems/Formats/Sound.cs @@ -60,6 +60,21 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(DatItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Sound otherSound) + return ((Data.Models.Metadata.Sound)_internal).Equals((Data.Models.Metadata.Sound)otherSound._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { @@ -69,7 +84,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Sound otherSound) - return _internal.Equals(otherSound._internal); + return ((Data.Models.Metadata.Sound)_internal).Equals((Data.Models.Metadata.Sound)otherSound._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/SourceDetails.cs b/SabreTools.Metadata.DatItems/Formats/SourceDetails.cs index c330d8b6..7f754d0b 100644 --- a/SabreTools.Metadata.DatItems/Formats/SourceDetails.cs +++ b/SabreTools.Metadata.DatItems/Formats/SourceDetails.cs @@ -198,6 +198,21 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(DatItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is SourceDetails otherSourceDetails) + return ((Data.Models.Metadata.SourceDetails)_internal).Equals((Data.Models.Metadata.SourceDetails)otherSourceDetails._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { @@ -207,7 +222,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is SourceDetails otherSourceDetails) - return _internal.Equals(otherSourceDetails._internal); + return ((Data.Models.Metadata.SourceDetails)_internal).Equals((Data.Models.Metadata.SourceDetails)otherSourceDetails._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata/DictionaryBaseExtensions.cs b/SabreTools.Metadata/DictionaryBaseExtensions.cs index 5698359f..d8c2a3cd 100644 --- a/SabreTools.Metadata/DictionaryBaseExtensions.cs +++ b/SabreTools.Metadata/DictionaryBaseExtensions.cs @@ -39,7 +39,7 @@ namespace SabreTools.Metadata (DipLocation selfDipLocation, DipLocation otherDipLocation) => selfDipLocation.Equals(otherDipLocation), (DipSwitch selfDipSwitch, DipSwitch otherDipSwitch) => selfDipSwitch.Equals(otherDipSwitch), (DipValue selfDipValue, DipValue otherDipValue) => selfDipValue.Equals(otherDipValue), - (Disk selfDisk, Disk otherDisk) => EqualsImpl(selfDisk, otherDisk), + (Disk selfDisk, Disk otherDisk) => PartialEquals(selfDisk, otherDisk), (DiskArea selfDiskArea, DiskArea otherDiskArea) => selfDiskArea.Equals(otherDiskArea), (Display selfDisplay, Display otherDisplay) => selfDisplay.Equals(otherDisplay), (Driver selfDriver, Driver otherDriver) => selfDriver.Equals(otherDriver), @@ -50,14 +50,14 @@ namespace SabreTools.Metadata (Input selfInput, Input otherInput) => selfInput.Equals(otherInput), (Instance selfInstance, Instance otherInstance) => selfInstance.Equals(otherInstance), (Machine selfMachine, Machine otherMachine) => EqualsImpl(selfMachine, otherMachine), - (Media selfMedia, Media otherMedia) => EqualsImpl(selfMedia, otherMedia), + (Media selfMedia, Media otherMedia) => PartialEquals(selfMedia, otherMedia), (Original selfOriginal, Original otherOriginal) => selfOriginal.Equals(otherOriginal), (Part selfPart, Part otherPart) => selfPart.Equals(otherPart), (Port selfPort, Port otherPort) => selfPort.Equals(otherPort), (RamOption selfRamOption, RamOption otherRamOption) => selfRamOption.Equals(otherRamOption), (Release selfRelease, Release otherRelease) => selfRelease.Equals(otherRelease), (ReleaseDetails selfReleaseDetails, ReleaseDetails otherReleaseDetails) => selfReleaseDetails.Equals(otherReleaseDetails), - (Rom selfRom, Rom otherRom) => EqualsImpl(selfRom, otherRom), + (Rom selfRom, Rom otherRom) => PartialEquals(selfRom, otherRom), (Serials selfSerials, Serials otherSerials) => selfSerials.Equals(otherSerials), (SharedFeat selfSharedFeat, SharedFeat otherSharedFeat) => selfSharedFeat.Equals(otherSharedFeat), (Slot selfSlot, Slot otherSlot) => selfSlot.Equals(otherSlot), @@ -100,7 +100,7 @@ namespace SabreTools.Metadata else if (self is DipValue selfDipValue && other is DipValue otherDipValue) return selfDipValue.Equals(otherDipValue); else if (self is Disk selfDisk && other is Disk otherDisk) - return EqualsImpl(selfDisk, otherDisk); + return PartialEquals(selfDisk, otherDisk); else if (self is DiskArea selfDiskArea && other is DiskArea otherDiskArea) return selfDiskArea.Equals(otherDiskArea); else if (self is Display selfDisplay && other is Display otherDisplay) @@ -122,7 +122,7 @@ namespace SabreTools.Metadata else if (self is Machine selfMachine && other is Machine otherMachine) return EqualsImpl(selfMachine, otherMachine); else if (self is Media selfMedia && other is Media otherMedia) - return EqualsImpl(selfMedia, otherMedia); + return PartialEquals(selfMedia, otherMedia); else if (self is Original selfOriginal && other is Original otherOriginal) return selfOriginal.Equals(otherOriginal); else if (self is Part selfPart && other is Part otherPart) @@ -136,7 +136,7 @@ namespace SabreTools.Metadata else if (self is ReleaseDetails selfReleaseDetails && other is ReleaseDetails otherReleaseDetails) return selfReleaseDetails.Equals(otherReleaseDetails); else if (self is Rom selfRom && other is Rom otherRom) - return EqualsImpl(selfRom, otherRom); + return PartialEquals(selfRom, otherRom); else if (self is Serials selfSerials && other is Serials otherSerials) return selfSerials.Equals(otherSerials); else if (self is SharedFeat selfSharedFeat && other is SharedFeat otherSharedFeat) @@ -289,7 +289,7 @@ namespace SabreTools.Metadata /// /// Check equality of two Disk objects /// - private static bool EqualsImpl(this Disk self, Disk other) + public static bool PartialEquals(this Disk self, Disk other) { ItemStatus? selfStatus = self.Status; ItemStatus? otherStatus = other.Status; @@ -318,7 +318,7 @@ namespace SabreTools.Metadata /// /// Check equality of two Media objects /// - private static bool EqualsImpl(this Media self, Media other) + public static bool PartialEquals(this Media self, Media other) { // If we get a partial match if (self.HashMatch(other)) @@ -331,7 +331,7 @@ namespace SabreTools.Metadata /// /// Check equality of two Rom objects /// - private static bool EqualsImpl(this Rom self, Rom other) + public static bool PartialEquals(this Rom self, Rom other) { ItemStatus? selfStatus = self.Status; ItemStatus? otherStatus = other.Status; From a4f844cd6aefcb2b0ccbca1aaf33f8dab663c351 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sat, 4 Apr 2026 19:49:02 -0400 Subject: [PATCH 095/142] Not sure how these slipped by --- SabreTools.Metadata/DictionaryBaseExtensions.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/SabreTools.Metadata/DictionaryBaseExtensions.cs b/SabreTools.Metadata/DictionaryBaseExtensions.cs index d8c2a3cd..1bb1c257 100644 --- a/SabreTools.Metadata/DictionaryBaseExtensions.cs +++ b/SabreTools.Metadata/DictionaryBaseExtensions.cs @@ -49,7 +49,7 @@ namespace SabreTools.Metadata (Info selfInfo, Info otherInfo) => selfInfo.Equals(otherInfo), (Input selfInput, Input otherInput) => selfInput.Equals(otherInput), (Instance selfInstance, Instance otherInstance) => selfInstance.Equals(otherInstance), - (Machine selfMachine, Machine otherMachine) => EqualsImpl(selfMachine, otherMachine), + (Machine selfMachine, Machine otherMachine) => Equals(selfMachine, otherMachine), (Media selfMedia, Media otherMedia) => PartialEquals(selfMedia, otherMedia), (Original selfOriginal, Original otherOriginal) => selfOriginal.Equals(otherOriginal), (Part selfPart, Part otherPart) => selfPart.Equals(otherPart), @@ -65,7 +65,7 @@ namespace SabreTools.Metadata (SoftwareList selfSoftwareList, SoftwareList otherSoftwareList) => selfSoftwareList.Equals(otherSoftwareList), (Sound selfSound, Sound otherSound) => selfSound.Equals(otherSound), (SourceDetails selfSourceDetails, SourceDetails otherSourceDetails) => selfSourceDetails.Equals(otherSourceDetails), - (Video selfVideo, Video otherVideo) => EqualsImpl(selfVideo, otherVideo), + (Video selfVideo, Video otherVideo) => Equals(selfVideo, otherVideo), _ => self.EqualsImpl(other), }; #else @@ -120,7 +120,7 @@ namespace SabreTools.Metadata else if (self is Instance selfInstance && other is Instance otherInstance) return selfInstance.Equals(otherInstance); else if (self is Machine selfMachine && other is Machine otherMachine) - return EqualsImpl(selfMachine, otherMachine); + return Equals(selfMachine, otherMachine); else if (self is Media selfMedia && other is Media otherMedia) return PartialEquals(selfMedia, otherMedia); else if (self is Original selfOriginal && other is Original otherOriginal) From 4b20273d4224e91c2ce7f0f62d6a3364423ee4e9 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sat, 4 Apr 2026 19:55:44 -0400 Subject: [PATCH 096/142] EqualTo has obsoleted itself into the bin --- .../DictionaryBaseExtensionsTests.cs | 298 +++++++----------- .../ModelBackedItemTests.cs | 68 +--- .../DictionaryBaseExtensions.cs | 278 ---------------- 3 files changed, 121 insertions(+), 523 deletions(-) diff --git a/SabreTools.Metadata.Test/DictionaryBaseExtensionsTests.cs b/SabreTools.Metadata.Test/DictionaryBaseExtensionsTests.cs index e17b7629..8bea60f3 100644 --- a/SabreTools.Metadata.Test/DictionaryBaseExtensionsTests.cs +++ b/SabreTools.Metadata.Test/DictionaryBaseExtensionsTests.cs @@ -5,29 +5,19 @@ namespace SabreTools.Metadata.Test { public class DictionaryBaseExtensionsTests { - #region EqualTo + #region PartialEquals [Fact] - public void EqualTo_MismatchedTypes_False() + public void PartialEquals_Disk_Nodumps_True() { - DictionaryBase self = new Disk(); - DictionaryBase other = new Rom(); - - bool actual = self.EqualTo(other); - Assert.False(actual); - } - - [Fact] - public void EqualTo_Disk_Nodumps_True() - { - DictionaryBase self = new Disk + var self = new Disk { Status = ItemStatus.Nodump, Name = "name", MD5 = string.Empty, SHA1 = string.Empty, }; - DictionaryBase other = new Disk + var other = new Disk { Status = ItemStatus.Nodump, Name = "name", @@ -35,94 +25,94 @@ namespace SabreTools.Metadata.Test SHA1 = string.Empty, }; - bool actual = self.EqualTo(other); + bool actual = self.PartialEquals(other); Assert.True(actual); } [Fact] - public void EqualTo_Disk_Mismatch_False() + public void PartialEquals_Disk_Mismatch_False() { - DictionaryBase self = new Disk + var self = new Disk { Name = "name", MD5 = "XXXXXX", SHA1 = string.Empty, }; - DictionaryBase other = new Disk + var other = new Disk { Name = "name", MD5 = string.Empty, SHA1 = "XXXXXX", }; - bool actual = self.EqualTo(other); + bool actual = self.PartialEquals(other); Assert.False(actual); } [Fact] - public void EqualTo_Disk_PartialMD5_True() + public void PartialEquals_Disk_PartialMD5_True() { - DictionaryBase self = new Disk + var self = new Disk { Name = "XXXXXX1", MD5 = "XXXXXX", SHA1 = string.Empty, }; - DictionaryBase other = new Disk + var other = new Disk { Name = "XXXXXX2", MD5 = "XXXXXX", SHA1 = "XXXXXX", }; - bool actual = self.EqualTo(other); + bool actual = self.PartialEquals(other); Assert.True(actual); } [Fact] - public void EqualTo_Disk_PartialSHA1_True() + public void PartialEquals_Disk_PartialSHA1_True() { - DictionaryBase self = new Disk + var self = new Disk { Name = "XXXXXX1", MD5 = string.Empty, SHA1 = "XXXXXX", }; - DictionaryBase other = new Disk + var other = new Disk { Name = "XXXXXX2", MD5 = "XXXXXX", SHA1 = "XXXXXX", }; - bool actual = self.EqualTo(other); + bool actual = self.PartialEquals(other); Assert.True(actual); } [Fact] - public void EqualTo_Disk_FullMatch_True() + public void PartialEquals_Disk_FullMatch_True() { - DictionaryBase self = new Disk + var self = new Disk { Name = "XXXXXX1", MD5 = "XXXXXX", SHA1 = "XXXXXX", }; - DictionaryBase other = new Disk + var other = new Disk { Name = "XXXXXX2", MD5 = "XXXXXX", SHA1 = "XXXXXX", }; - bool actual = self.EqualTo(other); + bool actual = self.PartialEquals(other); Assert.True(actual); } [Fact] - public void EqualTo_Media_Mismatch_False() + public void PartialEquals_Media_Mismatch_False() { - DictionaryBase self = new Media + var self = new Media { Name = "name", MD5 = "XXXXXX", @@ -130,7 +120,7 @@ namespace SabreTools.Metadata.Test SHA256 = "XXXXXX", SpamSum = string.Empty, }; - DictionaryBase other = new Media + var other = new Media { Name = "name", MD5 = string.Empty, @@ -139,14 +129,14 @@ namespace SabreTools.Metadata.Test SpamSum = "XXXXXX", }; - bool actual = self.EqualTo(other); + bool actual = self.PartialEquals(other); Assert.False(actual); } [Fact] - public void EqualTo_Media_PartialMD5_True() + public void PartialEquals_Media_PartialMD5_True() { - DictionaryBase self = new Media + var self = new Media { Name = "name", MD5 = "XXXXXX", @@ -154,7 +144,7 @@ namespace SabreTools.Metadata.Test SHA256 = string.Empty, SpamSum = string.Empty, }; - DictionaryBase other = new Media + var other = new Media { Name = "name", MD5 = "XXXXXX", @@ -163,14 +153,14 @@ namespace SabreTools.Metadata.Test SpamSum = "XXXXXX", }; - bool actual = self.EqualTo(other); + bool actual = self.PartialEquals(other); Assert.True(actual); } [Fact] - public void EqualTo_Media_PartialSHA1_True() + public void PartialEquals_Media_PartialSHA1_True() { - DictionaryBase self = new Media + var self = new Media { Name = "name", MD5 = string.Empty, @@ -178,7 +168,7 @@ namespace SabreTools.Metadata.Test SHA256 = string.Empty, SpamSum = string.Empty, }; - DictionaryBase other = new Media + var other = new Media { Name = "name", MD5 = "XXXXXX", @@ -187,14 +177,14 @@ namespace SabreTools.Metadata.Test SpamSum = "XXXXXX", }; - bool actual = self.EqualTo(other); + bool actual = self.PartialEquals(other); Assert.True(actual); } [Fact] - public void EqualTo_Media_PartialSHA256_True() + public void PartialEquals_Media_PartialSHA256_True() { - DictionaryBase self = new Media + var self = new Media { Name = "name", MD5 = string.Empty, @@ -202,7 +192,7 @@ namespace SabreTools.Metadata.Test SHA256 = "XXXXXX", SpamSum = string.Empty, }; - DictionaryBase other = new Media + var other = new Media { Name = "name", MD5 = "XXXXXX", @@ -211,14 +201,14 @@ namespace SabreTools.Metadata.Test SpamSum = "XXXXXX", }; - bool actual = self.EqualTo(other); + bool actual = self.PartialEquals(other); Assert.True(actual); } [Fact] - public void EqualTo_Media_PartialSpamSum_True() + public void PartialEquals_Media_PartialSpamSum_True() { - DictionaryBase self = new Media + var self = new Media { Name = "name", MD5 = string.Empty, @@ -226,7 +216,7 @@ namespace SabreTools.Metadata.Test SHA256 = string.Empty, SpamSum = "XXXXXX", }; - DictionaryBase other = new Media + var other = new Media { Name = "name", MD5 = "XXXXXX", @@ -235,14 +225,14 @@ namespace SabreTools.Metadata.Test SpamSum = "XXXXXX", }; - bool actual = self.EqualTo(other); + bool actual = self.PartialEquals(other); Assert.True(actual); } [Fact] - public void EqualTo_Media_FullMatch_True() + public void PartialEquals_Media_FullMatch_True() { - DictionaryBase self = new Media + var self = new Media { Name = "name", MD5 = "XXXXXX", @@ -250,7 +240,7 @@ namespace SabreTools.Metadata.Test SHA256 = "XXXXXX", SpamSum = "XXXXXX", }; - DictionaryBase other = new Media + var other = new Media { Name = "name", MD5 = "XXXXXX", @@ -259,14 +249,14 @@ namespace SabreTools.Metadata.Test SpamSum = "XXXXXX", }; - bool actual = self.EqualTo(other); + bool actual = self.PartialEquals(other); Assert.True(actual); } [Fact] - public void EqualTo_Rom_Nodumps_True() + public void PartialEquals_Rom_Nodumps_True() { - DictionaryBase self = new Rom + var self = new Rom { Status = ItemStatus.Nodump, Name = "name", @@ -285,7 +275,7 @@ namespace SabreTools.Metadata.Test [Rom.SHA512Key] = string.Empty, [Rom.SpamSumKey] = string.Empty, }; - DictionaryBase other = new Rom + var other = new Rom { Status = ItemStatus.Nodump, Name = "name", @@ -305,14 +295,14 @@ namespace SabreTools.Metadata.Test [Rom.SpamSumKey] = string.Empty, }; - bool actual = self.EqualTo(other); + bool actual = self.PartialEquals(other); Assert.True(actual); } [Fact] - public void EqualTo_Rom_Mismatch_False() + public void PartialEquals_Rom_Mismatch_False() { - DictionaryBase self = new Rom + var self = new Rom { Name = "name", Size = 12345, @@ -330,7 +320,7 @@ namespace SabreTools.Metadata.Test [Rom.SHA512Key] = string.Empty, [Rom.SpamSumKey] = "XXXXXX", }; - DictionaryBase other = new Rom + var other = new Rom { Name = "name", Size = 12345, @@ -349,14 +339,14 @@ namespace SabreTools.Metadata.Test [Rom.SpamSumKey] = string.Empty, }; - bool actual = self.EqualTo(other); + bool actual = self.PartialEquals(other); Assert.False(actual); } [Fact] - public void EqualTo_Rom_NoSelfSize_True() + public void PartialEquals_Rom_NoSelfSize_True() { - DictionaryBase self = new Rom + var self = new Rom { Name = "XXXXXX1", [Rom.CRC16Key] = "XXXXXX", @@ -373,7 +363,7 @@ namespace SabreTools.Metadata.Test [Rom.SHA512Key] = "XXXXXX", [Rom.SpamSumKey] = "XXXXXX", }; - DictionaryBase other = new Rom + var other = new Rom { Name = "XXXXXX2", Size = 12345, @@ -392,14 +382,14 @@ namespace SabreTools.Metadata.Test [Rom.SpamSumKey] = "XXXXXX", }; - bool actual = self.EqualTo(other); + bool actual = self.PartialEquals(other); Assert.True(actual); } [Fact] - public void EqualTo_Rom_NoOtherSize_True() + public void PartialEquals_Rom_NoOtherSize_True() { - DictionaryBase self = new Rom + var self = new Rom { Name = "XXXXXX1", Size = 12345, @@ -417,7 +407,7 @@ namespace SabreTools.Metadata.Test [Rom.SHA512Key] = "XXXXXX", [Rom.SpamSumKey] = "XXXXXX", }; - DictionaryBase other = new Rom + var other = new Rom { Name = "XXXXXX2", [Rom.CRC16Key] = "XXXXXX", @@ -435,14 +425,14 @@ namespace SabreTools.Metadata.Test [Rom.SpamSumKey] = "XXXXXX", }; - bool actual = self.EqualTo(other); + bool actual = self.PartialEquals(other); Assert.True(actual); } [Fact] - public void EqualTo_Rom_PartialCRC16_True() + public void PartialEquals_Rom_PartialCRC16_True() { - DictionaryBase self = new Rom + var self = new Rom { Name = "XXXXXX1", Size = 12345, @@ -460,7 +450,7 @@ namespace SabreTools.Metadata.Test [Rom.SHA512Key] = string.Empty, [Rom.SpamSumKey] = string.Empty, }; - DictionaryBase other = new Rom + var other = new Rom { Name = "XXXXXX2", Size = 12345, @@ -479,14 +469,14 @@ namespace SabreTools.Metadata.Test [Rom.SpamSumKey] = "XXXXXX", }; - bool actual = self.EqualTo(other); + bool actual = self.PartialEquals(other); Assert.True(actual); } [Fact] - public void EqualTo_Rom_PartialCRC_True() + public void PartialEquals_Rom_PartialCRC_True() { - DictionaryBase self = new Rom + var self = new Rom { Name = "XXXXXX1", Size = 12345, @@ -504,7 +494,7 @@ namespace SabreTools.Metadata.Test [Rom.SHA512Key] = string.Empty, [Rom.SpamSumKey] = string.Empty, }; - DictionaryBase other = new Rom + var other = new Rom { Name = "XXXXXX2", Size = 12345, @@ -523,14 +513,14 @@ namespace SabreTools.Metadata.Test [Rom.SpamSumKey] = "XXXXXX", }; - bool actual = self.EqualTo(other); + bool actual = self.PartialEquals(other); Assert.True(actual); } [Fact] - public void EqualTo_Rom_PartialCRC64_True() + public void PartialEquals_Rom_PartialCRC64_True() { - DictionaryBase self = new Rom + var self = new Rom { Name = "XXXXXX1", Size = 12345, @@ -548,7 +538,7 @@ namespace SabreTools.Metadata.Test [Rom.SHA512Key] = string.Empty, [Rom.SpamSumKey] = string.Empty, }; - DictionaryBase other = new Rom + var other = new Rom { Name = "XXXXXX2", Size = 12345, @@ -567,14 +557,14 @@ namespace SabreTools.Metadata.Test [Rom.SpamSumKey] = "XXXXXX", }; - bool actual = self.EqualTo(other); + bool actual = self.PartialEquals(other); Assert.True(actual); } [Fact] - public void EqualTo_Rom_PartialMD2_True() + public void PartialEquals_Rom_PartialMD2_True() { - DictionaryBase self = new Rom + var self = new Rom { Name = "XXXXXX1", Size = 12345, @@ -592,7 +582,7 @@ namespace SabreTools.Metadata.Test [Rom.SHA512Key] = string.Empty, [Rom.SpamSumKey] = string.Empty, }; - DictionaryBase other = new Rom + var other = new Rom { Name = "XXXXXX2", Size = 12345, @@ -611,14 +601,14 @@ namespace SabreTools.Metadata.Test [Rom.SpamSumKey] = "XXXXXX", }; - bool actual = self.EqualTo(other); + bool actual = self.PartialEquals(other); Assert.True(actual); } [Fact] - public void EqualTo_Rom_PartialMD4_True() + public void PartialEquals_Rom_PartialMD4_True() { - DictionaryBase self = new Rom + var self = new Rom { Name = "XXXXXX1", Size = 12345, @@ -636,7 +626,7 @@ namespace SabreTools.Metadata.Test [Rom.SHA512Key] = string.Empty, [Rom.SpamSumKey] = string.Empty, }; - DictionaryBase other = new Rom + var other = new Rom { Name = "XXXXXX2", Size = 12345, @@ -655,14 +645,14 @@ namespace SabreTools.Metadata.Test [Rom.SpamSumKey] = "XXXXXX", }; - bool actual = self.EqualTo(other); + bool actual = self.PartialEquals(other); Assert.True(actual); } [Fact] - public void EqualTo_Rom_PartialMD5_True() + public void PartialEquals_Rom_PartialMD5_True() { - DictionaryBase self = new Rom + var self = new Rom { Name = "XXXXXX1", Size = 12345, @@ -680,7 +670,7 @@ namespace SabreTools.Metadata.Test [Rom.SHA512Key] = string.Empty, [Rom.SpamSumKey] = string.Empty, }; - DictionaryBase other = new Rom + var other = new Rom { Name = "XXXXXX2", Size = 12345, @@ -699,14 +689,14 @@ namespace SabreTools.Metadata.Test [Rom.SpamSumKey] = "XXXXXX", }; - bool actual = self.EqualTo(other); + bool actual = self.PartialEquals(other); Assert.True(actual); } [Fact] - public void EqualTo_Rom_PartialRIPEMD128_True() + public void PartialEquals_Rom_PartialRIPEMD128_True() { - DictionaryBase self = new Rom + var self = new Rom { Name = "XXXXXX1", Size = 12345, @@ -724,7 +714,7 @@ namespace SabreTools.Metadata.Test [Rom.SHA512Key] = string.Empty, [Rom.SpamSumKey] = string.Empty, }; - DictionaryBase other = new Rom + var other = new Rom { Name = "XXXXXX2", Size = 12345, @@ -743,14 +733,14 @@ namespace SabreTools.Metadata.Test [Rom.SpamSumKey] = "XXXXXX", }; - bool actual = self.EqualTo(other); + bool actual = self.PartialEquals(other); Assert.True(actual); } [Fact] - public void EqualTo_Rom_PartialRIPEMD160_True() + public void PartialEquals_Rom_PartialRIPEMD160_True() { - DictionaryBase self = new Rom + var self = new Rom { Name = "XXXXXX1", Size = 12345, @@ -768,7 +758,7 @@ namespace SabreTools.Metadata.Test [Rom.SHA512Key] = string.Empty, [Rom.SpamSumKey] = string.Empty, }; - DictionaryBase other = new Rom + var other = new Rom { Name = "XXXXXX2", Size = 12345, @@ -787,14 +777,14 @@ namespace SabreTools.Metadata.Test [Rom.SpamSumKey] = "XXXXXX", }; - bool actual = self.EqualTo(other); + bool actual = self.PartialEquals(other); Assert.True(actual); } [Fact] - public void EqualTo_Rom_PartialSHA1_True() + public void PartialEquals_Rom_PartialSHA1_True() { - DictionaryBase self = new Rom + var self = new Rom { Name = "XXXXXX1", Size = 12345, @@ -812,7 +802,7 @@ namespace SabreTools.Metadata.Test [Rom.SHA512Key] = string.Empty, [Rom.SpamSumKey] = string.Empty, }; - DictionaryBase other = new Rom + var other = new Rom { Name = "XXXXXX2", Size = 12345, @@ -831,14 +821,14 @@ namespace SabreTools.Metadata.Test [Rom.SpamSumKey] = "XXXXXX", }; - bool actual = self.EqualTo(other); + bool actual = self.PartialEquals(other); Assert.True(actual); } [Fact] - public void EqualTo_Rom_PartialSHA256_True() + public void PartialEquals_Rom_PartialSHA256_True() { - DictionaryBase self = new Rom + var self = new Rom { Name = "XXXXXX1", Size = 12345, @@ -856,7 +846,7 @@ namespace SabreTools.Metadata.Test [Rom.SHA512Key] = string.Empty, [Rom.SpamSumKey] = string.Empty, }; - DictionaryBase other = new Rom + var other = new Rom { Name = "XXXXXX2", Size = 12345, @@ -875,14 +865,14 @@ namespace SabreTools.Metadata.Test [Rom.SpamSumKey] = "XXXXXX", }; - bool actual = self.EqualTo(other); + bool actual = self.PartialEquals(other); Assert.True(actual); } [Fact] - public void EqualTo_Rom_PartialSHA384_True() + public void PartialEquals_Rom_PartialSHA384_True() { - DictionaryBase self = new Rom + var self = new Rom { Name = "XXXXXX1", Size = 12345, @@ -900,7 +890,7 @@ namespace SabreTools.Metadata.Test [Rom.SHA512Key] = string.Empty, [Rom.SpamSumKey] = string.Empty, }; - DictionaryBase other = new Rom + var other = new Rom { Name = "XXXXXX2", Size = 12345, @@ -919,14 +909,14 @@ namespace SabreTools.Metadata.Test [Rom.SpamSumKey] = "XXXXXX", }; - bool actual = self.EqualTo(other); + bool actual = self.PartialEquals(other); Assert.True(actual); } [Fact] - public void EqualTo_Rom_PartialSHA512_True() + public void PartialEquals_Rom_PartialSHA512_True() { - DictionaryBase self = new Rom + var self = new Rom { Name = "XXXXXX1", Size = 12345, @@ -944,7 +934,7 @@ namespace SabreTools.Metadata.Test [Rom.SHA512Key] = "XXXXXX", [Rom.SpamSumKey] = string.Empty, }; - DictionaryBase other = new Rom + var other = new Rom { Name = "XXXXXX2", Size = 12345, @@ -963,14 +953,14 @@ namespace SabreTools.Metadata.Test [Rom.SpamSumKey] = "XXXXXX", }; - bool actual = self.EqualTo(other); + bool actual = self.PartialEquals(other); Assert.True(actual); } [Fact] - public void EqualTo_Rom_PartialSpamSum_True() + public void PartialEquals_Rom_PartialSpamSum_True() { - DictionaryBase self = new Rom + var self = new Rom { Name = "XXXXXX1", Size = 12345, @@ -988,7 +978,7 @@ namespace SabreTools.Metadata.Test [Rom.SHA512Key] = string.Empty, [Rom.SpamSumKey] = "XXXXXX", }; - DictionaryBase other = new Rom + var other = new Rom { Name = "XXXXXX2", Size = 12345, @@ -1007,14 +997,14 @@ namespace SabreTools.Metadata.Test [Rom.SpamSumKey] = "XXXXXX", }; - bool actual = self.EqualTo(other); + bool actual = self.PartialEquals(other); Assert.True(actual); } [Fact] - public void EqualTo_Rom_FullMatch_True() + public void PartialEquals_Rom_FullMatch_True() { - DictionaryBase self = new Rom + var self = new Rom { Name = "XXXXXX1", Size = 12345, @@ -1032,7 +1022,7 @@ namespace SabreTools.Metadata.Test [Rom.SHA512Key] = "XXXXXX", [Rom.SpamSumKey] = "XXXXXX", }; - DictionaryBase other = new Rom + var other = new Rom { Name = "XXXXXX2", Size = 12345, @@ -1051,61 +1041,7 @@ namespace SabreTools.Metadata.Test [Rom.SpamSumKey] = "XXXXXX", }; - bool actual = self.EqualTo(other); - Assert.True(actual); - } - - [Fact] - public void EqualTo_Other_BothEmpty_True() - { - DictionaryBase self = new Sample(); - DictionaryBase other = new Sample(); - - bool actual = self.EqualTo(other); - Assert.True(actual); - } - - [Fact] - public void EqualTo_Other_MismatchedCount_False() - { - DictionaryBase self = new Sample { ["KEY1"] = "XXXXXX", }; - DictionaryBase other = new Sample - { - ["KEY1"] = "XXXXXX", - ["KEY2"] = "XXXXXX", - }; - - bool actual = self.EqualTo(other); - Assert.False(actual); - } - - [Fact] - public void EqualTo_Other_MismatchedKeys_False() - { - DictionaryBase self = new Sample { ["KEY1"] = "XXXXXX", }; - DictionaryBase other = new Sample { ["KEY2"] = "XXXXXX", }; - - bool actual = self.EqualTo(other); - Assert.False(actual); - } - - [Fact] - public void EqualTo_Other_MismatchedValues_False() - { - DictionaryBase self = new Sample { ["KEY1"] = "XXXXXX", }; - DictionaryBase other = new Sample { ["KEY1"] = "ZZZZZZ", }; - - bool actual = self.EqualTo(other); - Assert.False(actual); - } - - [Fact] - public void EqualTo_Other_Matching_True() - { - DictionaryBase self = new Sample { ["KEY1"] = "XXXXXX", }; - DictionaryBase other = new Sample { ["KEY1"] = "XXXXXX", }; - - bool actual = self.EqualTo(other); + bool actual = self.PartialEquals(other); Assert.True(actual); } diff --git a/SabreTools.Metadata.Test/ModelBackedItemTests.cs b/SabreTools.Metadata.Test/ModelBackedItemTests.cs index eb86e79d..db2b764f 100644 --- a/SabreTools.Metadata.Test/ModelBackedItemTests.cs +++ b/SabreTools.Metadata.Test/ModelBackedItemTests.cs @@ -34,7 +34,7 @@ namespace SabreTools.Metadata.Test return false; // Compare internal models - return _internal.EqualTo(otherItem._internal); + return _internal.Equals(otherItem._internal); } /// @@ -49,7 +49,7 @@ namespace SabreTools.Metadata.Test return false; // Compare internal models - return _internal.EqualTo(otherItem._internal); + return _internal.Equals(otherItem._internal); } #endregion @@ -74,7 +74,7 @@ namespace SabreTools.Metadata.Test return false; // Compare internal models - return _internal.EqualTo(otherItem._internal); + return _internal[TestDictionaryBase.NameKey] == otherItem._internal[TestDictionaryBase.NameKey]; } /// @@ -89,7 +89,7 @@ namespace SabreTools.Metadata.Test return false; // Compare internal models - return _internal.EqualTo(otherItem._internal); + return _internal[TestDictionaryBase.NameKey] == otherItem._internal[TestDictionaryBase.NameKey]; } #endregion @@ -97,66 +97,6 @@ namespace SabreTools.Metadata.Test #endregion - #region Equals - - [Fact] - public void Equals_NullOther_False() - { - ModelBackedItem self = new TestModelBackedItem(); - ModelBackedItem? other = null; - - bool actual = self.Equals(other); - Assert.False(actual); - } - - [Fact] - public void Equals_MismatchedType_False() - { - ModelBackedItem self = new TestModelBackedItem(); - ModelBackedItem? other = new TestModelAltBackedItem(); - - bool actual = self.Equals(other); - Assert.False(actual); - } - - [Fact] - public void Equals_MismatchedTypeAlt_False() - { - ModelBackedItem self = new TestModelAltBackedItem(); - ModelBackedItem? other = new TestModelBackedItem(); - - bool actual = self.Equals(other); - Assert.False(actual); - } - - [Fact] - public void Equals_DifferentModels_False() - { - ModelBackedItem self = new TestModelBackedItem(); - self.Write(TestDictionaryBase.NameKey, "self"); - - ModelBackedItem? other = new TestModelBackedItem(); - other.Write(TestDictionaryBase.NameKey, "other"); - - bool actual = self.Equals(other); - Assert.False(actual); - } - - [Fact] - public void Equals_EqualModels_True() - { - ModelBackedItem self = new TestModelBackedItem(); - self.Write(TestDictionaryBase.NameKey, "name"); - - ModelBackedItem? other = new TestModelBackedItem(); - other.Write(TestDictionaryBase.NameKey, "name"); - - bool actual = self.Equals(other); - Assert.True(actual); - } - - #endregion - #region Remove [Fact] diff --git a/SabreTools.Metadata/DictionaryBaseExtensions.cs b/SabreTools.Metadata/DictionaryBaseExtensions.cs index 1bb1c257..d2f419c5 100644 --- a/SabreTools.Metadata/DictionaryBaseExtensions.cs +++ b/SabreTools.Metadata/DictionaryBaseExtensions.cs @@ -1,6 +1,4 @@ using System; -using System.Collections.Generic; -using System.Linq; using SabreTools.Data.Extensions; using SabreTools.Data.Models.Metadata; @@ -10,282 +8,6 @@ namespace SabreTools.Metadata { #region Equality Checking - /// - /// Check equality of two DictionaryBase objects - /// - /// TODO: Fix equality checking with case sensitivity of string properties - public static bool EqualTo(this DictionaryBase self, DictionaryBase other) - { - // Check types first - if (self.GetType() != other.GetType()) - return false; - - // Check based on the item type -#if NETCOREAPP || NETSTANDARD2_0_OR_GREATER - return (self, other) switch - { - (Adjuster selfAdjuster, Adjuster otherAdjuster) => selfAdjuster.Equals(otherAdjuster), - (Analog selfAnalog, Analog otherAnalog) => selfAnalog.Equals(otherAnalog), - (Archive selfArchive, Archive otherArchive) => selfArchive.Equals(otherArchive), - (BiosSet selfBiosSet, BiosSet otherBiosSet) => selfBiosSet.Equals(otherBiosSet), - (Chip selfChip, Chip otherChip) => selfChip.Equals(otherChip), - (Condition selfCondition, Condition otherCondition) => selfCondition.Equals(otherCondition), - (Configuration selfConfiguration, Configuration otherConfiguration) => selfConfiguration.Equals(otherConfiguration), - (ConfLocation selfConfLocation, ConfLocation otherConfLocation) => selfConfLocation.Equals(otherConfLocation), - (ConfSetting selfConfSetting, ConfSetting otherConfSetting) => selfConfSetting.Equals(otherConfSetting), - (Control selfControl, Control otherControl) => selfControl.Equals(otherControl), - (DataArea selfDataArea, DataArea otherDataArea) => selfDataArea.Equals(otherDataArea), - (Device selfDevice, Device otherDevice) => selfDevice.Equals(otherDevice), - (DipLocation selfDipLocation, DipLocation otherDipLocation) => selfDipLocation.Equals(otherDipLocation), - (DipSwitch selfDipSwitch, DipSwitch otherDipSwitch) => selfDipSwitch.Equals(otherDipSwitch), - (DipValue selfDipValue, DipValue otherDipValue) => selfDipValue.Equals(otherDipValue), - (Disk selfDisk, Disk otherDisk) => PartialEquals(selfDisk, otherDisk), - (DiskArea selfDiskArea, DiskArea otherDiskArea) => selfDiskArea.Equals(otherDiskArea), - (Display selfDisplay, Display otherDisplay) => selfDisplay.Equals(otherDisplay), - (Driver selfDriver, Driver otherDriver) => selfDriver.Equals(otherDriver), - (Dump selfDump, Dump otherDump) => selfDump.Equals(otherDump), - (Feature selfFeature, Feature otherFeature) => selfFeature.Equals(otherFeature), - (Header selfHeader, Header otherHeader) => selfHeader.Equals(otherHeader), - (Info selfInfo, Info otherInfo) => selfInfo.Equals(otherInfo), - (Input selfInput, Input otherInput) => selfInput.Equals(otherInput), - (Instance selfInstance, Instance otherInstance) => selfInstance.Equals(otherInstance), - (Machine selfMachine, Machine otherMachine) => Equals(selfMachine, otherMachine), - (Media selfMedia, Media otherMedia) => PartialEquals(selfMedia, otherMedia), - (Original selfOriginal, Original otherOriginal) => selfOriginal.Equals(otherOriginal), - (Part selfPart, Part otherPart) => selfPart.Equals(otherPart), - (Port selfPort, Port otherPort) => selfPort.Equals(otherPort), - (RamOption selfRamOption, RamOption otherRamOption) => selfRamOption.Equals(otherRamOption), - (Release selfRelease, Release otherRelease) => selfRelease.Equals(otherRelease), - (ReleaseDetails selfReleaseDetails, ReleaseDetails otherReleaseDetails) => selfReleaseDetails.Equals(otherReleaseDetails), - (Rom selfRom, Rom otherRom) => PartialEquals(selfRom, otherRom), - (Serials selfSerials, Serials otherSerials) => selfSerials.Equals(otherSerials), - (SharedFeat selfSharedFeat, SharedFeat otherSharedFeat) => selfSharedFeat.Equals(otherSharedFeat), - (Slot selfSlot, Slot otherSlot) => selfSlot.Equals(otherSlot), - (SlotOption selfSlotOption, SlotOption otherSlotOption) => selfSlotOption.Equals(otherSlotOption), - (SoftwareList selfSoftwareList, SoftwareList otherSoftwareList) => selfSoftwareList.Equals(otherSoftwareList), - (Sound selfSound, Sound otherSound) => selfSound.Equals(otherSound), - (SourceDetails selfSourceDetails, SourceDetails otherSourceDetails) => selfSourceDetails.Equals(otherSourceDetails), - (Video selfVideo, Video otherVideo) => Equals(selfVideo, otherVideo), - _ => self.EqualsImpl(other), - }; -#else - if (self is Adjuster selfAdjuster && other is Adjuster otherAdjuster) - return selfAdjuster.Equals(otherAdjuster); - else if (self is Analog selfAnalog && other is Analog otherAnalog) - return selfAnalog.Equals(otherAnalog); - else if (self is Archive selfArchive && other is Archive otherArchive) - return selfArchive.Equals(otherArchive); - else if (self is BiosSet selfBiosSet && other is BiosSet otherBiosSet) - return selfBiosSet.Equals(otherBiosSet); - else if (self is Chip selfChip && other is Chip otherChip) - return selfChip.Equals(otherChip); - else if (self is Condition selfCondition && other is Condition otherCondition) - return selfCondition.Equals(otherCondition); - else if (self is Configuration selfConfiguration && other is Configuration otherConfiguration) - return selfConfiguration.Equals(otherConfiguration); - else if (self is ConfLocation selfConfLocation && other is ConfLocation otherConfLocation) - return selfConfLocation.Equals(otherConfLocation); - else if (self is ConfSetting selfConfSetting && other is ConfSetting otherConfSetting) - return selfConfSetting.Equals(otherConfSetting); - else if (self is Control selfControl && other is Control otherControl) - return selfControl.Equals(otherControl); - else if (self is DataArea selfDataArea && other is DataArea otherDataArea) - return selfDataArea.Equals(otherDataArea); - else if (self is Device selfDevice && other is Device otherDevice) - return selfDevice.Equals(otherDevice); - else if (self is DipLocation selfDipLocation && other is DipLocation otherDipLocation) - return selfDipLocation.Equals(otherDipLocation); - else if (self is DipSwitch selfDipSwitch && other is DipSwitch otherDipSwitch) - return selfDipSwitch.Equals(otherDipSwitch); - else if (self is DipValue selfDipValue && other is DipValue otherDipValue) - return selfDipValue.Equals(otherDipValue); - else if (self is Disk selfDisk && other is Disk otherDisk) - return PartialEquals(selfDisk, otherDisk); - else if (self is DiskArea selfDiskArea && other is DiskArea otherDiskArea) - return selfDiskArea.Equals(otherDiskArea); - else if (self is Display selfDisplay && other is Display otherDisplay) - return selfDisplay.Equals(otherDisplay); - else if (self is Driver selfDriver && other is Driver otherDriver) - return selfDriver.Equals(otherDriver); - else if (self is Dump selfDump && other is Dump otherDump) - return selfDump.Equals(otherDump); - else if (self is Feature selfFeature && other is Feature otherFeature) - return selfFeature.Equals(otherFeature); - else if (self is Header selfHeader && other is Header otherHeader) - return selfHeader.Equals(otherHeader); - else if (self is Info selfInfo && other is Info otherInfo) - return selfInfo.Equals(otherInfo); - else if (self is Input selfInput && other is Input otherInput) - return selfInput.Equals(otherInput); - else if (self is Instance selfInstance && other is Instance otherInstance) - return selfInstance.Equals(otherInstance); - else if (self is Machine selfMachine && other is Machine otherMachine) - return Equals(selfMachine, otherMachine); - else if (self is Media selfMedia && other is Media otherMedia) - return PartialEquals(selfMedia, otherMedia); - else if (self is Original selfOriginal && other is Original otherOriginal) - return selfOriginal.Equals(otherOriginal); - else if (self is Part selfPart && other is Part otherPart) - return selfPart.Equals(otherPart); - else if (self is Port selfPort && other is Port otherPort) - return selfPort.Equals(otherPort); - else if (self is RamOption selfRamOption && other is RamOption otherRamOption) - return selfRamOption.Equals(otherRamOption); - else if (self is Release selfRelease && other is Release otherRelease) - return selfRelease.Equals(otherRelease); - else if (self is ReleaseDetails selfReleaseDetails && other is ReleaseDetails otherReleaseDetails) - return selfReleaseDetails.Equals(otherReleaseDetails); - else if (self is Rom selfRom && other is Rom otherRom) - return PartialEquals(selfRom, otherRom); - else if (self is Serials selfSerials && other is Serials otherSerials) - return selfSerials.Equals(otherSerials); - else if (self is SharedFeat selfSharedFeat && other is SharedFeat otherSharedFeat) - return selfSharedFeat.Equals(otherSharedFeat); - else if (self is Slot selfSlot && other is Slot otherSlot) - return selfSlot.Equals(otherSlot); - else if (self is SlotOption selfSlotOption && other is SlotOption otherSlotOption) - return selfSlotOption.Equals(otherSlotOption); - else if (self is SoftwareList selfSoftwareList && other is SoftwareList otherSoftwareList) - return selfSoftwareList.Equals(otherSoftwareList); - else if (self is Sound selfSound && other is Sound otherSound) - return selfSound.Equals(otherSound); - else if (self is SourceDetails selfSourceDetails && other is SourceDetails otherSourceDetails) - return selfSourceDetails.Equals(otherSourceDetails); - else if (self is Video selfVideo && other is Video otherVideo) - return selfVideo.Equals(otherVideo); - else - return EqualsImpl(self, other); -#endif - } - - /// - /// Check equality of two DictionaryBase objects - /// - /// TODO: Fix equality checking with case sensitivity of string properties - private static bool EqualsImpl(this DictionaryBase self, DictionaryBase other) - { - // If the number of key-value pairs doesn't match, they can't match - if (self.Count != other.Count) - return false; - - // If any keys are missing on either side, they can't match - var selfKeys = new HashSet(self.Keys); - var otherKeys = new HashSet(other.Keys); - if (!selfKeys.SetEquals(otherKeys)) - return false; - - // Check all pairs to see if they're equal - foreach (var kvp in self) - { -#if NETCOREAPP || NETSTANDARD2_0_OR_GREATER - switch (kvp.Value, other[kvp.Key]) - { - case (string selfString, string otherString): - if (!string.Equals(selfString, otherString, StringComparison.OrdinalIgnoreCase)) - return false; - break; - - case (ModelBackedItem selfMbi, ModelBackedItem otherMbi): - if (!selfMbi.Equals(otherMbi)) - return false; - break; - - case (DictionaryBase selfDb, DictionaryBase otherDb): - if (!selfDb.Equals(otherDb)) - return false; - break; - - // TODO: Make this case-insensitive - case (string[] selfStrArr, string[] otherStrArr): - if (selfStrArr.Length != otherStrArr.Length) - return false; - if (selfStrArr.Except(otherStrArr).Any()) - return false; - if (otherStrArr.Except(selfStrArr).Any()) - return false; - break; - - // TODO: Fix the logic here for real equality - case (DictionaryBase[] selfDbArr, DictionaryBase[] otherDbArr): - if (selfDbArr.Length != otherDbArr.Length) - return false; - if (selfDbArr.Except(otherDbArr).Any()) - return false; - if (otherDbArr.Except(selfDbArr).Any()) - return false; - break; - - default: - // Handle cases where a null is involved - if (kvp.Value is null && other[kvp.Key] is null) - return true; - else if (kvp.Value is null && other[kvp.Key] is not null) - return false; - else if (kvp.Value is not null && other[kvp.Key] is null) - return false; - - // Try to rely on type hashes - else if (kvp.Value!.GetHashCode() != other[kvp.Key]!.GetHashCode()) - return false; - - break; - } -#else - if (kvp.Value is string selfString && other[kvp.Key] is string otherString) - { - if (!string.Equals(selfString, otherString, StringComparison.OrdinalIgnoreCase)) - return false; - } - else if (kvp.Value is ModelBackedItem selfMbi && other[kvp.Key] is ModelBackedItem otherMbi) - { - if (!selfMbi.Equals(otherMbi)) - return false; - } - else if (kvp.Value is DictionaryBase selfDb && other[kvp.Key] is DictionaryBase otherDb) - { - if (!selfDb.Equals(otherDb)) - return false; - } - else if (kvp.Value is string[] selfStrArr && other[kvp.Key] is string[] otherStrArr) - { - // TODO: Make this case-insensitive - if (selfStrArr.Length != otherStrArr.Length) - return false; - if (selfStrArr.Except(otherStrArr).Any()) - return false; - if (otherStrArr.Except(selfStrArr).Any()) - return false; - } - else if (kvp.Value is DictionaryBase[] selfDbArr && other[kvp.Key] is DictionaryBase[] otherDbArr) - { - // TODO: Fix the logic here for real equality - if (selfDbArr.Length != otherDbArr.Length) - return false; - if (selfDbArr.Except(otherDbArr).Any()) - return false; - if (otherDbArr.Except(selfDbArr).Any()) - return false; - } - else - { - // Handle cases where a null is involved - if (kvp.Value is null && other[kvp.Key] is null) - return true; - else if (kvp.Value is null && other[kvp.Key] is not null) - return false; - else if (kvp.Value is not null && other[kvp.Key] is null) - return false; - - // Try to rely on type hashes - else if (kvp.Value!.GetHashCode() != other[kvp.Key]!.GetHashCode()) - return false; - } -#endif - } - - return true; - } - /// /// Check equality of two Disk objects /// From 049113332905ff0b4ac82265f9f2e38d526d605b Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sat, 4 Apr 2026 20:04:01 -0400 Subject: [PATCH 097/142] Move hash-based equality checkers lower down the chain --- .../MetadataExtensionsTests.cs | 1042 ++++++++++++++++ .../MetadataExtensions.cs | 84 ++ .../DictionaryBaseExtensionsTests.cs | 1050 ----------------- .../DictionaryBaseExtensions.cs | 93 -- 4 files changed, 1126 insertions(+), 1143 deletions(-) delete mode 100644 SabreTools.Metadata.Test/DictionaryBaseExtensionsTests.cs delete mode 100644 SabreTools.Metadata/DictionaryBaseExtensions.cs diff --git a/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs b/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs index 5e13d7b2..16b57fac 100644 --- a/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs +++ b/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs @@ -96,6 +96,1048 @@ namespace SabreTools.Data.Extensions.Test #endregion + #region PartialEquals + + [Fact] + public void PartialEquals_Disk_Nodumps_True() + { + var self = new Disk + { + Status = ItemStatus.Nodump, + Name = "name", + MD5 = string.Empty, + SHA1 = string.Empty, + }; + var other = new Disk + { + Status = ItemStatus.Nodump, + Name = "name", + MD5 = string.Empty, + SHA1 = string.Empty, + }; + + bool actual = self.PartialEquals(other); + Assert.True(actual); + } + + [Fact] + public void PartialEquals_Disk_Mismatch_False() + { + var self = new Disk + { + Name = "name", + MD5 = "XXXXXX", + SHA1 = string.Empty, + }; + var other = new Disk + { + Name = "name", + MD5 = string.Empty, + SHA1 = "XXXXXX", + }; + + bool actual = self.PartialEquals(other); + Assert.False(actual); + } + + [Fact] + public void PartialEquals_Disk_PartialMD5_True() + { + var self = new Disk + { + Name = "XXXXXX1", + MD5 = "XXXXXX", + SHA1 = string.Empty, + }; + var other = new Disk + { + Name = "XXXXXX2", + MD5 = "XXXXXX", + SHA1 = "XXXXXX", + }; + + bool actual = self.PartialEquals(other); + Assert.True(actual); + } + + [Fact] + public void PartialEquals_Disk_PartialSHA1_True() + { + var self = new Disk + { + Name = "XXXXXX1", + MD5 = string.Empty, + SHA1 = "XXXXXX", + }; + var other = new Disk + { + Name = "XXXXXX2", + MD5 = "XXXXXX", + SHA1 = "XXXXXX", + }; + + bool actual = self.PartialEquals(other); + Assert.True(actual); + } + + [Fact] + public void PartialEquals_Disk_FullMatch_True() + { + var self = new Disk + { + Name = "XXXXXX1", + MD5 = "XXXXXX", + SHA1 = "XXXXXX", + }; + var other = new Disk + { + Name = "XXXXXX2", + MD5 = "XXXXXX", + SHA1 = "XXXXXX", + }; + + bool actual = self.PartialEquals(other); + Assert.True(actual); + } + + [Fact] + public void PartialEquals_Media_Mismatch_False() + { + var self = new Media + { + Name = "name", + MD5 = "XXXXXX", + SHA1 = string.Empty, + SHA256 = "XXXXXX", + SpamSum = string.Empty, + }; + var other = new Media + { + Name = "name", + MD5 = string.Empty, + SHA1 = "XXXXXX", + SHA256 = string.Empty, + SpamSum = "XXXXXX", + }; + + bool actual = self.PartialEquals(other); + Assert.False(actual); + } + + [Fact] + public void PartialEquals_Media_PartialMD5_True() + { + var self = new Media + { + Name = "name", + MD5 = "XXXXXX", + SHA1 = string.Empty, + SHA256 = string.Empty, + SpamSum = string.Empty, + }; + var other = new Media + { + Name = "name", + MD5 = "XXXXXX", + SHA1 = "XXXXXX", + SHA256 = "XXXXXX", + SpamSum = "XXXXXX", + }; + + bool actual = self.PartialEquals(other); + Assert.True(actual); + } + + [Fact] + public void PartialEquals_Media_PartialSHA1_True() + { + var self = new Media + { + Name = "name", + MD5 = string.Empty, + SHA1 = "XXXXXX", + SHA256 = string.Empty, + SpamSum = string.Empty, + }; + var other = new Media + { + Name = "name", + MD5 = "XXXXXX", + SHA1 = "XXXXXX", + SHA256 = "XXXXXX", + SpamSum = "XXXXXX", + }; + + bool actual = self.PartialEquals(other); + Assert.True(actual); + } + + [Fact] + public void PartialEquals_Media_PartialSHA256_True() + { + var self = new Media + { + Name = "name", + MD5 = string.Empty, + SHA1 = string.Empty, + SHA256 = "XXXXXX", + SpamSum = string.Empty, + }; + var other = new Media + { + Name = "name", + MD5 = "XXXXXX", + SHA1 = "XXXXXX", + SHA256 = "XXXXXX", + SpamSum = "XXXXXX", + }; + + bool actual = self.PartialEquals(other); + Assert.True(actual); + } + + [Fact] + public void PartialEquals_Media_PartialSpamSum_True() + { + var self = new Media + { + Name = "name", + MD5 = string.Empty, + SHA1 = string.Empty, + SHA256 = string.Empty, + SpamSum = "XXXXXX", + }; + var other = new Media + { + Name = "name", + MD5 = "XXXXXX", + SHA1 = "XXXXXX", + SHA256 = "XXXXXX", + SpamSum = "XXXXXX", + }; + + bool actual = self.PartialEquals(other); + Assert.True(actual); + } + + [Fact] + public void PartialEquals_Media_FullMatch_True() + { + var self = new Media + { + Name = "name", + MD5 = "XXXXXX", + SHA1 = "XXXXXX", + SHA256 = "XXXXXX", + SpamSum = "XXXXXX", + }; + var other = new Media + { + Name = "name", + MD5 = "XXXXXX", + SHA1 = "XXXXXX", + SHA256 = "XXXXXX", + SpamSum = "XXXXXX", + }; + + bool actual = self.PartialEquals(other); + Assert.True(actual); + } + + [Fact] + public void PartialEquals_Rom_Nodumps_True() + { + var self = new Rom + { + Status = ItemStatus.Nodump, + Name = "name", + Size = 12345, + [Rom.CRC16Key] = string.Empty, + [Rom.CRCKey] = string.Empty, + [Rom.CRC64Key] = string.Empty, + [Rom.MD2Key] = string.Empty, + [Rom.MD4Key] = string.Empty, + [Rom.MD5Key] = string.Empty, + [Rom.RIPEMD128Key] = string.Empty, + [Rom.RIPEMD160Key] = string.Empty, + [Rom.SHA1Key] = string.Empty, + [Rom.SHA256Key] = string.Empty, + [Rom.SHA384Key] = string.Empty, + [Rom.SHA512Key] = string.Empty, + [Rom.SpamSumKey] = string.Empty, + }; + var other = new Rom + { + Status = ItemStatus.Nodump, + Name = "name", + Size = 12345, + [Rom.CRC16Key] = string.Empty, + [Rom.CRCKey] = string.Empty, + [Rom.CRC64Key] = string.Empty, + [Rom.MD2Key] = string.Empty, + [Rom.MD4Key] = string.Empty, + [Rom.MD5Key] = string.Empty, + [Rom.RIPEMD128Key] = string.Empty, + [Rom.RIPEMD160Key] = string.Empty, + [Rom.SHA1Key] = string.Empty, + [Rom.SHA256Key] = string.Empty, + [Rom.SHA384Key] = string.Empty, + [Rom.SHA512Key] = string.Empty, + [Rom.SpamSumKey] = string.Empty, + }; + + bool actual = self.PartialEquals(other); + Assert.True(actual); + } + + [Fact] + public void PartialEquals_Rom_Mismatch_False() + { + var self = new Rom + { + Name = "name", + Size = 12345, + [Rom.CRC16Key] = "XXXXXX", + [Rom.CRCKey] = string.Empty, + [Rom.CRC64Key] = "XXXXXX", + [Rom.MD2Key] = string.Empty, + [Rom.MD4Key] = "XXXXXX", + [Rom.MD5Key] = string.Empty, + [Rom.RIPEMD128Key] = "XXXXXX", + [Rom.RIPEMD160Key] = string.Empty, + [Rom.SHA1Key] = "XXXXXX", + [Rom.SHA256Key] = string.Empty, + [Rom.SHA384Key] = "XXXXXX", + [Rom.SHA512Key] = string.Empty, + [Rom.SpamSumKey] = "XXXXXX", + }; + var other = new Rom + { + Name = "name", + Size = 12345, + [Rom.CRC16Key] = string.Empty, + [Rom.CRCKey] = "XXXXXX", + [Rom.CRC64Key] = string.Empty, + [Rom.MD2Key] = "XXXXXX", + [Rom.MD4Key] = string.Empty, + [Rom.MD5Key] = "XXXXXX", + [Rom.RIPEMD128Key] = string.Empty, + [Rom.RIPEMD160Key] = "XXXXXX", + [Rom.SHA1Key] = string.Empty, + [Rom.SHA256Key] = "XXXXXX", + [Rom.SHA384Key] = string.Empty, + [Rom.SHA512Key] = "XXXXXX", + [Rom.SpamSumKey] = string.Empty, + }; + + bool actual = self.PartialEquals(other); + Assert.False(actual); + } + + [Fact] + public void PartialEquals_Rom_NoSelfSize_True() + { + var self = new Rom + { + Name = "XXXXXX1", + [Rom.CRC16Key] = "XXXXXX", + [Rom.CRCKey] = "XXXXXX", + [Rom.CRC64Key] = "XXXXXX", + [Rom.MD2Key] = "XXXXXX", + [Rom.MD4Key] = "XXXXXX", + [Rom.MD5Key] = "XXXXXX", + [Rom.RIPEMD128Key] = "XXXXXX", + [Rom.RIPEMD160Key] = "XXXXXX", + [Rom.SHA1Key] = "XXXXXX", + [Rom.SHA256Key] = "XXXXXX", + [Rom.SHA384Key] = "XXXXXX", + [Rom.SHA512Key] = "XXXXXX", + [Rom.SpamSumKey] = "XXXXXX", + }; + var other = new Rom + { + Name = "XXXXXX2", + Size = 12345, + [Rom.CRC16Key] = "XXXXXX", + [Rom.CRCKey] = "XXXXXX", + [Rom.CRC64Key] = "XXXXXX", + [Rom.MD2Key] = "XXXXXX", + [Rom.MD4Key] = "XXXXXX", + [Rom.MD5Key] = "XXXXXX", + [Rom.RIPEMD128Key] = "XXXXXX", + [Rom.RIPEMD160Key] = "XXXXXX", + [Rom.SHA1Key] = "XXXXXX", + [Rom.SHA256Key] = "XXXXXX", + [Rom.SHA384Key] = "XXXXXX", + [Rom.SHA512Key] = "XXXXXX", + [Rom.SpamSumKey] = "XXXXXX", + }; + + bool actual = self.PartialEquals(other); + Assert.True(actual); + } + + [Fact] + public void PartialEquals_Rom_NoOtherSize_True() + { + var self = new Rom + { + Name = "XXXXXX1", + Size = 12345, + [Rom.CRC16Key] = "XXXXXX", + [Rom.CRCKey] = "XXXXXX", + [Rom.CRC64Key] = "XXXXXX", + [Rom.MD2Key] = "XXXXXX", + [Rom.MD4Key] = "XXXXXX", + [Rom.MD5Key] = "XXXXXX", + [Rom.RIPEMD128Key] = "XXXXXX", + [Rom.RIPEMD160Key] = "XXXXXX", + [Rom.SHA1Key] = "XXXXXX", + [Rom.SHA256Key] = "XXXXXX", + [Rom.SHA384Key] = "XXXXXX", + [Rom.SHA512Key] = "XXXXXX", + [Rom.SpamSumKey] = "XXXXXX", + }; + var other = new Rom + { + Name = "XXXXXX2", + [Rom.CRC16Key] = "XXXXXX", + [Rom.CRCKey] = "XXXXXX", + [Rom.CRC64Key] = "XXXXXX", + [Rom.MD2Key] = "XXXXXX", + [Rom.MD4Key] = "XXXXXX", + [Rom.MD5Key] = "XXXXXX", + [Rom.RIPEMD128Key] = "XXXXXX", + [Rom.RIPEMD160Key] = "XXXXXX", + [Rom.SHA1Key] = "XXXXXX", + [Rom.SHA256Key] = "XXXXXX", + [Rom.SHA384Key] = "XXXXXX", + [Rom.SHA512Key] = "XXXXXX", + [Rom.SpamSumKey] = "XXXXXX", + }; + + bool actual = self.PartialEquals(other); + Assert.True(actual); + } + + [Fact] + public void PartialEquals_Rom_PartialCRC16_True() + { + var self = new Rom + { + Name = "XXXXXX1", + Size = 12345, + [Rom.CRC16Key] = "XXXXXX", + [Rom.CRCKey] = string.Empty, + [Rom.CRC64Key] = string.Empty, + [Rom.MD2Key] = string.Empty, + [Rom.MD4Key] = string.Empty, + [Rom.MD5Key] = string.Empty, + [Rom.RIPEMD128Key] = string.Empty, + [Rom.RIPEMD160Key] = string.Empty, + [Rom.SHA1Key] = string.Empty, + [Rom.SHA256Key] = string.Empty, + [Rom.SHA384Key] = string.Empty, + [Rom.SHA512Key] = string.Empty, + [Rom.SpamSumKey] = string.Empty, + }; + var other = new Rom + { + Name = "XXXXXX2", + Size = 12345, + [Rom.CRC16Key] = "XXXXXX", + [Rom.CRCKey] = "XXXXXX", + [Rom.CRC64Key] = "XXXXXX", + [Rom.MD2Key] = "XXXXXX", + [Rom.MD4Key] = "XXXXXX", + [Rom.MD5Key] = "XXXXXX", + [Rom.RIPEMD128Key] = "XXXXXX", + [Rom.RIPEMD160Key] = "XXXXXX", + [Rom.SHA1Key] = "XXXXXX", + [Rom.SHA256Key] = "XXXXXX", + [Rom.SHA384Key] = "XXXXXX", + [Rom.SHA512Key] = "XXXXXX", + [Rom.SpamSumKey] = "XXXXXX", + }; + + bool actual = self.PartialEquals(other); + Assert.True(actual); + } + + [Fact] + public void PartialEquals_Rom_PartialCRC_True() + { + var self = new Rom + { + Name = "XXXXXX1", + Size = 12345, + [Rom.CRC16Key] = string.Empty, + [Rom.CRCKey] = "XXXXXX", + [Rom.CRC64Key] = string.Empty, + [Rom.MD2Key] = string.Empty, + [Rom.MD4Key] = string.Empty, + [Rom.MD5Key] = string.Empty, + [Rom.RIPEMD128Key] = string.Empty, + [Rom.RIPEMD160Key] = string.Empty, + [Rom.SHA1Key] = string.Empty, + [Rom.SHA256Key] = string.Empty, + [Rom.SHA384Key] = string.Empty, + [Rom.SHA512Key] = string.Empty, + [Rom.SpamSumKey] = string.Empty, + }; + var other = new Rom + { + Name = "XXXXXX2", + Size = 12345, + [Rom.CRC16Key] = "XXXXXX", + [Rom.CRCKey] = "XXXXXX", + [Rom.CRC64Key] = "XXXXXX", + [Rom.MD2Key] = "XXXXXX", + [Rom.MD4Key] = "XXXXXX", + [Rom.MD5Key] = "XXXXXX", + [Rom.RIPEMD128Key] = "XXXXXX", + [Rom.RIPEMD160Key] = "XXXXXX", + [Rom.SHA1Key] = "XXXXXX", + [Rom.SHA256Key] = "XXXXXX", + [Rom.SHA384Key] = "XXXXXX", + [Rom.SHA512Key] = "XXXXXX", + [Rom.SpamSumKey] = "XXXXXX", + }; + + bool actual = self.PartialEquals(other); + Assert.True(actual); + } + + [Fact] + public void PartialEquals_Rom_PartialCRC64_True() + { + var self = new Rom + { + Name = "XXXXXX1", + Size = 12345, + [Rom.CRC16Key] = string.Empty, + [Rom.CRCKey] = string.Empty, + [Rom.CRC64Key] = "XXXXXX", + [Rom.MD2Key] = string.Empty, + [Rom.MD4Key] = string.Empty, + [Rom.MD5Key] = string.Empty, + [Rom.RIPEMD128Key] = string.Empty, + [Rom.RIPEMD160Key] = string.Empty, + [Rom.SHA1Key] = string.Empty, + [Rom.SHA256Key] = string.Empty, + [Rom.SHA384Key] = string.Empty, + [Rom.SHA512Key] = string.Empty, + [Rom.SpamSumKey] = string.Empty, + }; + var other = new Rom + { + Name = "XXXXXX2", + Size = 12345, + [Rom.CRC16Key] = "XXXXXX", + [Rom.CRCKey] = "XXXXXX", + [Rom.CRC64Key] = "XXXXXX", + [Rom.MD2Key] = "XXXXXX", + [Rom.MD4Key] = "XXXXXX", + [Rom.MD5Key] = "XXXXXX", + [Rom.RIPEMD128Key] = "XXXXXX", + [Rom.RIPEMD160Key] = "XXXXXX", + [Rom.SHA1Key] = "XXXXXX", + [Rom.SHA256Key] = "XXXXXX", + [Rom.SHA384Key] = "XXXXXX", + [Rom.SHA512Key] = "XXXXXX", + [Rom.SpamSumKey] = "XXXXXX", + }; + + bool actual = self.PartialEquals(other); + Assert.True(actual); + } + + [Fact] + public void PartialEquals_Rom_PartialMD2_True() + { + var self = new Rom + { + Name = "XXXXXX1", + Size = 12345, + [Rom.CRC16Key] = string.Empty, + [Rom.CRCKey] = string.Empty, + [Rom.CRC64Key] = string.Empty, + [Rom.MD2Key] = "XXXXXX", + [Rom.MD4Key] = string.Empty, + [Rom.MD5Key] = string.Empty, + [Rom.RIPEMD128Key] = string.Empty, + [Rom.RIPEMD160Key] = string.Empty, + [Rom.SHA1Key] = string.Empty, + [Rom.SHA256Key] = string.Empty, + [Rom.SHA384Key] = string.Empty, + [Rom.SHA512Key] = string.Empty, + [Rom.SpamSumKey] = string.Empty, + }; + var other = new Rom + { + Name = "XXXXXX2", + Size = 12345, + [Rom.CRC16Key] = "XXXXXX", + [Rom.CRCKey] = "XXXXXX", + [Rom.CRC64Key] = "XXXXXX", + [Rom.MD2Key] = "XXXXXX", + [Rom.MD4Key] = "XXXXXX", + [Rom.MD5Key] = "XXXXXX", + [Rom.RIPEMD128Key] = "XXXXXX", + [Rom.RIPEMD160Key] = "XXXXXX", + [Rom.SHA1Key] = "XXXXXX", + [Rom.SHA256Key] = "XXXXXX", + [Rom.SHA384Key] = "XXXXXX", + [Rom.SHA512Key] = "XXXXXX", + [Rom.SpamSumKey] = "XXXXXX", + }; + + bool actual = self.PartialEquals(other); + Assert.True(actual); + } + + [Fact] + public void PartialEquals_Rom_PartialMD4_True() + { + var self = new Rom + { + Name = "XXXXXX1", + Size = 12345, + [Rom.CRC16Key] = string.Empty, + [Rom.CRCKey] = string.Empty, + [Rom.CRC64Key] = string.Empty, + [Rom.MD2Key] = string.Empty, + [Rom.MD4Key] = "XXXXXX", + [Rom.MD5Key] = string.Empty, + [Rom.RIPEMD128Key] = string.Empty, + [Rom.RIPEMD160Key] = string.Empty, + [Rom.SHA1Key] = string.Empty, + [Rom.SHA256Key] = string.Empty, + [Rom.SHA384Key] = string.Empty, + [Rom.SHA512Key] = string.Empty, + [Rom.SpamSumKey] = string.Empty, + }; + var other = new Rom + { + Name = "XXXXXX2", + Size = 12345, + [Rom.CRC16Key] = "XXXXXX", + [Rom.CRCKey] = "XXXXXX", + [Rom.CRC64Key] = "XXXXXX", + [Rom.MD2Key] = "XXXXXX", + [Rom.MD4Key] = "XXXXXX", + [Rom.MD5Key] = "XXXXXX", + [Rom.RIPEMD128Key] = "XXXXXX", + [Rom.RIPEMD160Key] = "XXXXXX", + [Rom.SHA1Key] = "XXXXXX", + [Rom.SHA256Key] = "XXXXXX", + [Rom.SHA384Key] = "XXXXXX", + [Rom.SHA512Key] = "XXXXXX", + [Rom.SpamSumKey] = "XXXXXX", + }; + + bool actual = self.PartialEquals(other); + Assert.True(actual); + } + + [Fact] + public void PartialEquals_Rom_PartialMD5_True() + { + var self = new Rom + { + Name = "XXXXXX1", + Size = 12345, + [Rom.CRC16Key] = string.Empty, + [Rom.CRCKey] = string.Empty, + [Rom.CRC64Key] = string.Empty, + [Rom.MD2Key] = string.Empty, + [Rom.MD4Key] = string.Empty, + [Rom.MD5Key] = "XXXXXX", + [Rom.RIPEMD128Key] = string.Empty, + [Rom.RIPEMD160Key] = string.Empty, + [Rom.SHA1Key] = string.Empty, + [Rom.SHA256Key] = string.Empty, + [Rom.SHA384Key] = string.Empty, + [Rom.SHA512Key] = string.Empty, + [Rom.SpamSumKey] = string.Empty, + }; + var other = new Rom + { + Name = "XXXXXX2", + Size = 12345, + [Rom.CRC16Key] = "XXXXXX", + [Rom.CRCKey] = "XXXXXX", + [Rom.CRC64Key] = "XXXXXX", + [Rom.MD2Key] = "XXXXXX", + [Rom.MD4Key] = "XXXXXX", + [Rom.MD5Key] = "XXXXXX", + [Rom.RIPEMD128Key] = "XXXXXX", + [Rom.RIPEMD160Key] = "XXXXXX", + [Rom.SHA1Key] = "XXXXXX", + [Rom.SHA256Key] = "XXXXXX", + [Rom.SHA384Key] = "XXXXXX", + [Rom.SHA512Key] = "XXXXXX", + [Rom.SpamSumKey] = "XXXXXX", + }; + + bool actual = self.PartialEquals(other); + Assert.True(actual); + } + + [Fact] + public void PartialEquals_Rom_PartialRIPEMD128_True() + { + var self = new Rom + { + Name = "XXXXXX1", + Size = 12345, + [Rom.CRC16Key] = string.Empty, + [Rom.CRCKey] = string.Empty, + [Rom.CRC64Key] = string.Empty, + [Rom.MD2Key] = string.Empty, + [Rom.MD4Key] = string.Empty, + [Rom.MD5Key] = string.Empty, + [Rom.RIPEMD128Key] = "XXXXXX", + [Rom.RIPEMD160Key] = string.Empty, + [Rom.SHA1Key] = string.Empty, + [Rom.SHA256Key] = string.Empty, + [Rom.SHA384Key] = string.Empty, + [Rom.SHA512Key] = string.Empty, + [Rom.SpamSumKey] = string.Empty, + }; + var other = new Rom + { + Name = "XXXXXX2", + Size = 12345, + [Rom.CRC16Key] = "XXXXXX", + [Rom.CRCKey] = "XXXXXX", + [Rom.CRC64Key] = "XXXXXX", + [Rom.MD2Key] = "XXXXXX", + [Rom.MD4Key] = "XXXXXX", + [Rom.MD5Key] = "XXXXXX", + [Rom.RIPEMD128Key] = "XXXXXX", + [Rom.RIPEMD160Key] = "XXXXXX", + [Rom.SHA1Key] = "XXXXXX", + [Rom.SHA256Key] = "XXXXXX", + [Rom.SHA384Key] = "XXXXXX", + [Rom.SHA512Key] = "XXXXXX", + [Rom.SpamSumKey] = "XXXXXX", + }; + + bool actual = self.PartialEquals(other); + Assert.True(actual); + } + + [Fact] + public void PartialEquals_Rom_PartialRIPEMD160_True() + { + var self = new Rom + { + Name = "XXXXXX1", + Size = 12345, + [Rom.CRC16Key] = string.Empty, + [Rom.CRCKey] = string.Empty, + [Rom.CRC64Key] = string.Empty, + [Rom.MD2Key] = string.Empty, + [Rom.MD4Key] = string.Empty, + [Rom.MD5Key] = string.Empty, + [Rom.RIPEMD128Key] = string.Empty, + [Rom.RIPEMD160Key] = "XXXXXX", + [Rom.SHA1Key] = string.Empty, + [Rom.SHA256Key] = string.Empty, + [Rom.SHA384Key] = string.Empty, + [Rom.SHA512Key] = string.Empty, + [Rom.SpamSumKey] = string.Empty, + }; + var other = new Rom + { + Name = "XXXXXX2", + Size = 12345, + [Rom.CRC16Key] = "XXXXXX", + [Rom.CRCKey] = "XXXXXX", + [Rom.CRC64Key] = "XXXXXX", + [Rom.MD2Key] = "XXXXXX", + [Rom.MD4Key] = "XXXXXX", + [Rom.MD5Key] = "XXXXXX", + [Rom.RIPEMD128Key] = "XXXXXX", + [Rom.RIPEMD160Key] = "XXXXXX", + [Rom.SHA1Key] = "XXXXXX", + [Rom.SHA256Key] = "XXXXXX", + [Rom.SHA384Key] = "XXXXXX", + [Rom.SHA512Key] = "XXXXXX", + [Rom.SpamSumKey] = "XXXXXX", + }; + + bool actual = self.PartialEquals(other); + Assert.True(actual); + } + + [Fact] + public void PartialEquals_Rom_PartialSHA1_True() + { + var self = new Rom + { + Name = "XXXXXX1", + Size = 12345, + [Rom.CRC16Key] = string.Empty, + [Rom.CRCKey] = string.Empty, + [Rom.CRC64Key] = string.Empty, + [Rom.MD2Key] = string.Empty, + [Rom.MD4Key] = string.Empty, + [Rom.MD5Key] = string.Empty, + [Rom.RIPEMD128Key] = string.Empty, + [Rom.RIPEMD160Key] = string.Empty, + [Rom.SHA1Key] = "XXXXXX", + [Rom.SHA256Key] = string.Empty, + [Rom.SHA384Key] = string.Empty, + [Rom.SHA512Key] = string.Empty, + [Rom.SpamSumKey] = string.Empty, + }; + var other = new Rom + { + Name = "XXXXXX2", + Size = 12345, + [Rom.CRC16Key] = "XXXXXX", + [Rom.CRCKey] = "XXXXXX", + [Rom.CRC64Key] = "XXXXXX", + [Rom.MD2Key] = "XXXXXX", + [Rom.MD4Key] = "XXXXXX", + [Rom.MD5Key] = "XXXXXX", + [Rom.RIPEMD128Key] = "XXXXXX", + [Rom.RIPEMD160Key] = "XXXXXX", + [Rom.SHA1Key] = "XXXXXX", + [Rom.SHA256Key] = "XXXXXX", + [Rom.SHA384Key] = "XXXXXX", + [Rom.SHA512Key] = "XXXXXX", + [Rom.SpamSumKey] = "XXXXXX", + }; + + bool actual = self.PartialEquals(other); + Assert.True(actual); + } + + [Fact] + public void PartialEquals_Rom_PartialSHA256_True() + { + var self = new Rom + { + Name = "XXXXXX1", + Size = 12345, + [Rom.CRC16Key] = string.Empty, + [Rom.CRCKey] = string.Empty, + [Rom.CRC64Key] = string.Empty, + [Rom.MD2Key] = string.Empty, + [Rom.MD4Key] = string.Empty, + [Rom.MD5Key] = string.Empty, + [Rom.RIPEMD128Key] = string.Empty, + [Rom.RIPEMD160Key] = string.Empty, + [Rom.SHA1Key] = string.Empty, + [Rom.SHA256Key] = "XXXXXX", + [Rom.SHA384Key] = string.Empty, + [Rom.SHA512Key] = string.Empty, + [Rom.SpamSumKey] = string.Empty, + }; + var other = new Rom + { + Name = "XXXXXX2", + Size = 12345, + [Rom.CRC16Key] = "XXXXXX", + [Rom.CRCKey] = "XXXXXX", + [Rom.CRC64Key] = "XXXXXX", + [Rom.MD2Key] = "XXXXXX", + [Rom.MD4Key] = "XXXXXX", + [Rom.MD5Key] = "XXXXXX", + [Rom.RIPEMD128Key] = "XXXXXX", + [Rom.RIPEMD160Key] = "XXXXXX", + [Rom.SHA1Key] = "XXXXXX", + [Rom.SHA256Key] = "XXXXXX", + [Rom.SHA384Key] = "XXXXXX", + [Rom.SHA512Key] = "XXXXXX", + [Rom.SpamSumKey] = "XXXXXX", + }; + + bool actual = self.PartialEquals(other); + Assert.True(actual); + } + + [Fact] + public void PartialEquals_Rom_PartialSHA384_True() + { + var self = new Rom + { + Name = "XXXXXX1", + Size = 12345, + [Rom.CRC16Key] = string.Empty, + [Rom.CRCKey] = string.Empty, + [Rom.CRC64Key] = string.Empty, + [Rom.MD2Key] = string.Empty, + [Rom.MD4Key] = string.Empty, + [Rom.MD5Key] = string.Empty, + [Rom.RIPEMD128Key] = string.Empty, + [Rom.RIPEMD160Key] = string.Empty, + [Rom.SHA1Key] = string.Empty, + [Rom.SHA256Key] = string.Empty, + [Rom.SHA384Key] = "XXXXXX", + [Rom.SHA512Key] = string.Empty, + [Rom.SpamSumKey] = string.Empty, + }; + var other = new Rom + { + Name = "XXXXXX2", + Size = 12345, + [Rom.CRC16Key] = "XXXXXX", + [Rom.CRCKey] = "XXXXXX", + [Rom.CRC64Key] = "XXXXXX", + [Rom.MD2Key] = "XXXXXX", + [Rom.MD4Key] = "XXXXXX", + [Rom.MD5Key] = "XXXXXX", + [Rom.RIPEMD128Key] = "XXXXXX", + [Rom.RIPEMD160Key] = "XXXXXX", + [Rom.SHA1Key] = "XXXXXX", + [Rom.SHA256Key] = "XXXXXX", + [Rom.SHA384Key] = "XXXXXX", + [Rom.SHA512Key] = "XXXXXX", + [Rom.SpamSumKey] = "XXXXXX", + }; + + bool actual = self.PartialEquals(other); + Assert.True(actual); + } + + [Fact] + public void PartialEquals_Rom_PartialSHA512_True() + { + var self = new Rom + { + Name = "XXXXXX1", + Size = 12345, + [Rom.CRC16Key] = string.Empty, + [Rom.CRCKey] = string.Empty, + [Rom.CRC64Key] = string.Empty, + [Rom.MD2Key] = string.Empty, + [Rom.MD4Key] = string.Empty, + [Rom.MD5Key] = string.Empty, + [Rom.RIPEMD128Key] = string.Empty, + [Rom.RIPEMD160Key] = string.Empty, + [Rom.SHA1Key] = string.Empty, + [Rom.SHA256Key] = string.Empty, + [Rom.SHA384Key] = string.Empty, + [Rom.SHA512Key] = "XXXXXX", + [Rom.SpamSumKey] = string.Empty, + }; + var other = new Rom + { + Name = "XXXXXX2", + Size = 12345, + [Rom.CRC16Key] = "XXXXXX", + [Rom.CRCKey] = "XXXXXX", + [Rom.CRC64Key] = "XXXXXX", + [Rom.MD2Key] = "XXXXXX", + [Rom.MD4Key] = "XXXXXX", + [Rom.MD5Key] = "XXXXXX", + [Rom.RIPEMD128Key] = "XXXXXX", + [Rom.RIPEMD160Key] = "XXXXXX", + [Rom.SHA1Key] = "XXXXXX", + [Rom.SHA256Key] = "XXXXXX", + [Rom.SHA384Key] = "XXXXXX", + [Rom.SHA512Key] = "XXXXXX", + [Rom.SpamSumKey] = "XXXXXX", + }; + + bool actual = self.PartialEquals(other); + Assert.True(actual); + } + + [Fact] + public void PartialEquals_Rom_PartialSpamSum_True() + { + var self = new Rom + { + Name = "XXXXXX1", + Size = 12345, + [Rom.CRC16Key] = string.Empty, + [Rom.CRCKey] = string.Empty, + [Rom.CRC64Key] = string.Empty, + [Rom.MD2Key] = string.Empty, + [Rom.MD4Key] = string.Empty, + [Rom.MD5Key] = string.Empty, + [Rom.RIPEMD128Key] = string.Empty, + [Rom.RIPEMD160Key] = string.Empty, + [Rom.SHA1Key] = string.Empty, + [Rom.SHA256Key] = string.Empty, + [Rom.SHA384Key] = string.Empty, + [Rom.SHA512Key] = string.Empty, + [Rom.SpamSumKey] = "XXXXXX", + }; + var other = new Rom + { + Name = "XXXXXX2", + Size = 12345, + [Rom.CRC16Key] = "XXXXXX", + [Rom.CRCKey] = "XXXXXX", + [Rom.CRC64Key] = "XXXXXX", + [Rom.MD2Key] = "XXXXXX", + [Rom.MD4Key] = "XXXXXX", + [Rom.MD5Key] = "XXXXXX", + [Rom.RIPEMD128Key] = "XXXXXX", + [Rom.RIPEMD160Key] = "XXXXXX", + [Rom.SHA1Key] = "XXXXXX", + [Rom.SHA256Key] = "XXXXXX", + [Rom.SHA384Key] = "XXXXXX", + [Rom.SHA512Key] = "XXXXXX", + [Rom.SpamSumKey] = "XXXXXX", + }; + + bool actual = self.PartialEquals(other); + Assert.True(actual); + } + + [Fact] + public void PartialEquals_Rom_FullMatch_True() + { + var self = new Rom + { + Name = "XXXXXX1", + Size = 12345, + [Rom.CRC16Key] = "XXXXXX", + [Rom.CRCKey] = "XXXXXX", + [Rom.CRC64Key] = "XXXXXX", + [Rom.MD2Key] = "XXXXXX", + [Rom.MD4Key] = "XXXXXX", + [Rom.MD5Key] = "XXXXXX", + [Rom.RIPEMD128Key] = "XXXXXX", + [Rom.RIPEMD160Key] = "XXXXXX", + [Rom.SHA1Key] = "XXXXXX", + [Rom.SHA256Key] = "XXXXXX", + [Rom.SHA384Key] = "XXXXXX", + [Rom.SHA512Key] = "XXXXXX", + [Rom.SpamSumKey] = "XXXXXX", + }; + var other = new Rom + { + Name = "XXXXXX2", + Size = 12345, + [Rom.CRC16Key] = "XXXXXX", + [Rom.CRCKey] = "XXXXXX", + [Rom.CRC64Key] = "XXXXXX", + [Rom.MD2Key] = "XXXXXX", + [Rom.MD4Key] = "XXXXXX", + [Rom.MD5Key] = "XXXXXX", + [Rom.RIPEMD128Key] = "XXXXXX", + [Rom.RIPEMD160Key] = "XXXXXX", + [Rom.SHA1Key] = "XXXXXX", + [Rom.SHA256Key] = "XXXXXX", + [Rom.SHA384Key] = "XXXXXX", + [Rom.SHA512Key] = "XXXXXX", + [Rom.SpamSumKey] = "XXXXXX", + }; + + bool actual = self.PartialEquals(other); + Assert.True(actual); + } + + #endregion + #region ConditionalHashEquals [Theory] diff --git a/SabreTools.Data.Extensions/MetadataExtensions.cs b/SabreTools.Data.Extensions/MetadataExtensions.cs index a1329fcd..f37f91f2 100644 --- a/SabreTools.Data.Extensions/MetadataExtensions.cs +++ b/SabreTools.Data.Extensions/MetadataExtensions.cs @@ -64,6 +64,90 @@ namespace SabreTools.Data.Extensions #endregion + #region Equality Checking + + /// + /// Check equality of two Disk objects + /// + public static bool PartialEquals(this Disk self, Disk other) + { + ItemStatus? selfStatus = self.Status; + ItemStatus? otherStatus = other.Status; + + string? selfName = self.Name; + string? otherName = other.Name; + + // If all hashes are empty but they're both nodump and the names match, then they're dupes + if (selfStatus == ItemStatus.Nodump + && otherStatus == ItemStatus.Nodump + && string.Equals(selfName, otherName, StringComparison.OrdinalIgnoreCase) + && !self.HasHashes() + && !other.HasHashes()) + { + return true; + } + + // If we get a partial match + if (self.HashMatch(other)) + return true; + + // All other cases fail + return false; + } + + /// + /// Check equality of two Media objects + /// + public static bool PartialEquals(this Media self, Media other) + { + // If we get a partial match + if (self.HashMatch(other)) + return true; + + // All other cases fail + return false; + } + + /// + /// Check equality of two Rom objects + /// + public static bool PartialEquals(this Rom self, Rom other) + { + ItemStatus? selfStatus = self.Status; + ItemStatus? otherStatus = other.Status; + + string? selfName = self.Name; + string? otherName = other.Name; + + long? selfSize = self.Size; + long? otherSize = other.Size; + + // If all hashes are empty but they're both nodump and the names match, then they're dupes + if (selfStatus == ItemStatus.Nodump + && otherStatus == ItemStatus.Nodump + && string.Equals(selfName, otherName, StringComparison.OrdinalIgnoreCase) + && !self.HasHashes() + && !other.HasHashes()) + { + return true; + } + + // If we have a file that has no known size, rely on the hashes only + if (selfSize is null && self.HashMatch(other)) + return true; + else if (otherSize is null && self.HashMatch(other)) + return true; + + // If we get a partial match + if (selfSize == otherSize && self.HashMatch(other)) + return true; + + // All other cases fail + return false; + } + + #endregion + #region Hash Checking /// diff --git a/SabreTools.Metadata.Test/DictionaryBaseExtensionsTests.cs b/SabreTools.Metadata.Test/DictionaryBaseExtensionsTests.cs deleted file mode 100644 index 8bea60f3..00000000 --- a/SabreTools.Metadata.Test/DictionaryBaseExtensionsTests.cs +++ /dev/null @@ -1,1050 +0,0 @@ -using SabreTools.Data.Models.Metadata; -using Xunit; - -namespace SabreTools.Metadata.Test -{ - public class DictionaryBaseExtensionsTests - { - #region PartialEquals - - [Fact] - public void PartialEquals_Disk_Nodumps_True() - { - var self = new Disk - { - Status = ItemStatus.Nodump, - Name = "name", - MD5 = string.Empty, - SHA1 = string.Empty, - }; - var other = new Disk - { - Status = ItemStatus.Nodump, - Name = "name", - MD5 = string.Empty, - SHA1 = string.Empty, - }; - - bool actual = self.PartialEquals(other); - Assert.True(actual); - } - - [Fact] - public void PartialEquals_Disk_Mismatch_False() - { - var self = new Disk - { - Name = "name", - MD5 = "XXXXXX", - SHA1 = string.Empty, - }; - var other = new Disk - { - Name = "name", - MD5 = string.Empty, - SHA1 = "XXXXXX", - }; - - bool actual = self.PartialEquals(other); - Assert.False(actual); - } - - [Fact] - public void PartialEquals_Disk_PartialMD5_True() - { - var self = new Disk - { - Name = "XXXXXX1", - MD5 = "XXXXXX", - SHA1 = string.Empty, - }; - var other = new Disk - { - Name = "XXXXXX2", - MD5 = "XXXXXX", - SHA1 = "XXXXXX", - }; - - bool actual = self.PartialEquals(other); - Assert.True(actual); - } - - [Fact] - public void PartialEquals_Disk_PartialSHA1_True() - { - var self = new Disk - { - Name = "XXXXXX1", - MD5 = string.Empty, - SHA1 = "XXXXXX", - }; - var other = new Disk - { - Name = "XXXXXX2", - MD5 = "XXXXXX", - SHA1 = "XXXXXX", - }; - - bool actual = self.PartialEquals(other); - Assert.True(actual); - } - - [Fact] - public void PartialEquals_Disk_FullMatch_True() - { - var self = new Disk - { - Name = "XXXXXX1", - MD5 = "XXXXXX", - SHA1 = "XXXXXX", - }; - var other = new Disk - { - Name = "XXXXXX2", - MD5 = "XXXXXX", - SHA1 = "XXXXXX", - }; - - bool actual = self.PartialEquals(other); - Assert.True(actual); - } - - [Fact] - public void PartialEquals_Media_Mismatch_False() - { - var self = new Media - { - Name = "name", - MD5 = "XXXXXX", - SHA1 = string.Empty, - SHA256 = "XXXXXX", - SpamSum = string.Empty, - }; - var other = new Media - { - Name = "name", - MD5 = string.Empty, - SHA1 = "XXXXXX", - SHA256 = string.Empty, - SpamSum = "XXXXXX", - }; - - bool actual = self.PartialEquals(other); - Assert.False(actual); - } - - [Fact] - public void PartialEquals_Media_PartialMD5_True() - { - var self = new Media - { - Name = "name", - MD5 = "XXXXXX", - SHA1 = string.Empty, - SHA256 = string.Empty, - SpamSum = string.Empty, - }; - var other = new Media - { - Name = "name", - MD5 = "XXXXXX", - SHA1 = "XXXXXX", - SHA256 = "XXXXXX", - SpamSum = "XXXXXX", - }; - - bool actual = self.PartialEquals(other); - Assert.True(actual); - } - - [Fact] - public void PartialEquals_Media_PartialSHA1_True() - { - var self = new Media - { - Name = "name", - MD5 = string.Empty, - SHA1 = "XXXXXX", - SHA256 = string.Empty, - SpamSum = string.Empty, - }; - var other = new Media - { - Name = "name", - MD5 = "XXXXXX", - SHA1 = "XXXXXX", - SHA256 = "XXXXXX", - SpamSum = "XXXXXX", - }; - - bool actual = self.PartialEquals(other); - Assert.True(actual); - } - - [Fact] - public void PartialEquals_Media_PartialSHA256_True() - { - var self = new Media - { - Name = "name", - MD5 = string.Empty, - SHA1 = string.Empty, - SHA256 = "XXXXXX", - SpamSum = string.Empty, - }; - var other = new Media - { - Name = "name", - MD5 = "XXXXXX", - SHA1 = "XXXXXX", - SHA256 = "XXXXXX", - SpamSum = "XXXXXX", - }; - - bool actual = self.PartialEquals(other); - Assert.True(actual); - } - - [Fact] - public void PartialEquals_Media_PartialSpamSum_True() - { - var self = new Media - { - Name = "name", - MD5 = string.Empty, - SHA1 = string.Empty, - SHA256 = string.Empty, - SpamSum = "XXXXXX", - }; - var other = new Media - { - Name = "name", - MD5 = "XXXXXX", - SHA1 = "XXXXXX", - SHA256 = "XXXXXX", - SpamSum = "XXXXXX", - }; - - bool actual = self.PartialEquals(other); - Assert.True(actual); - } - - [Fact] - public void PartialEquals_Media_FullMatch_True() - { - var self = new Media - { - Name = "name", - MD5 = "XXXXXX", - SHA1 = "XXXXXX", - SHA256 = "XXXXXX", - SpamSum = "XXXXXX", - }; - var other = new Media - { - Name = "name", - MD5 = "XXXXXX", - SHA1 = "XXXXXX", - SHA256 = "XXXXXX", - SpamSum = "XXXXXX", - }; - - bool actual = self.PartialEquals(other); - Assert.True(actual); - } - - [Fact] - public void PartialEquals_Rom_Nodumps_True() - { - var self = new Rom - { - Status = ItemStatus.Nodump, - Name = "name", - Size = 12345, - [Rom.CRC16Key] = string.Empty, - [Rom.CRCKey] = string.Empty, - [Rom.CRC64Key] = string.Empty, - [Rom.MD2Key] = string.Empty, - [Rom.MD4Key] = string.Empty, - [Rom.MD5Key] = string.Empty, - [Rom.RIPEMD128Key] = string.Empty, - [Rom.RIPEMD160Key] = string.Empty, - [Rom.SHA1Key] = string.Empty, - [Rom.SHA256Key] = string.Empty, - [Rom.SHA384Key] = string.Empty, - [Rom.SHA512Key] = string.Empty, - [Rom.SpamSumKey] = string.Empty, - }; - var other = new Rom - { - Status = ItemStatus.Nodump, - Name = "name", - Size = 12345, - [Rom.CRC16Key] = string.Empty, - [Rom.CRCKey] = string.Empty, - [Rom.CRC64Key] = string.Empty, - [Rom.MD2Key] = string.Empty, - [Rom.MD4Key] = string.Empty, - [Rom.MD5Key] = string.Empty, - [Rom.RIPEMD128Key] = string.Empty, - [Rom.RIPEMD160Key] = string.Empty, - [Rom.SHA1Key] = string.Empty, - [Rom.SHA256Key] = string.Empty, - [Rom.SHA384Key] = string.Empty, - [Rom.SHA512Key] = string.Empty, - [Rom.SpamSumKey] = string.Empty, - }; - - bool actual = self.PartialEquals(other); - Assert.True(actual); - } - - [Fact] - public void PartialEquals_Rom_Mismatch_False() - { - var self = new Rom - { - Name = "name", - Size = 12345, - [Rom.CRC16Key] = "XXXXXX", - [Rom.CRCKey] = string.Empty, - [Rom.CRC64Key] = "XXXXXX", - [Rom.MD2Key] = string.Empty, - [Rom.MD4Key] = "XXXXXX", - [Rom.MD5Key] = string.Empty, - [Rom.RIPEMD128Key] = "XXXXXX", - [Rom.RIPEMD160Key] = string.Empty, - [Rom.SHA1Key] = "XXXXXX", - [Rom.SHA256Key] = string.Empty, - [Rom.SHA384Key] = "XXXXXX", - [Rom.SHA512Key] = string.Empty, - [Rom.SpamSumKey] = "XXXXXX", - }; - var other = new Rom - { - Name = "name", - Size = 12345, - [Rom.CRC16Key] = string.Empty, - [Rom.CRCKey] = "XXXXXX", - [Rom.CRC64Key] = string.Empty, - [Rom.MD2Key] = "XXXXXX", - [Rom.MD4Key] = string.Empty, - [Rom.MD5Key] = "XXXXXX", - [Rom.RIPEMD128Key] = string.Empty, - [Rom.RIPEMD160Key] = "XXXXXX", - [Rom.SHA1Key] = string.Empty, - [Rom.SHA256Key] = "XXXXXX", - [Rom.SHA384Key] = string.Empty, - [Rom.SHA512Key] = "XXXXXX", - [Rom.SpamSumKey] = string.Empty, - }; - - bool actual = self.PartialEquals(other); - Assert.False(actual); - } - - [Fact] - public void PartialEquals_Rom_NoSelfSize_True() - { - var self = new Rom - { - Name = "XXXXXX1", - [Rom.CRC16Key] = "XXXXXX", - [Rom.CRCKey] = "XXXXXX", - [Rom.CRC64Key] = "XXXXXX", - [Rom.MD2Key] = "XXXXXX", - [Rom.MD4Key] = "XXXXXX", - [Rom.MD5Key] = "XXXXXX", - [Rom.RIPEMD128Key] = "XXXXXX", - [Rom.RIPEMD160Key] = "XXXXXX", - [Rom.SHA1Key] = "XXXXXX", - [Rom.SHA256Key] = "XXXXXX", - [Rom.SHA384Key] = "XXXXXX", - [Rom.SHA512Key] = "XXXXXX", - [Rom.SpamSumKey] = "XXXXXX", - }; - var other = new Rom - { - Name = "XXXXXX2", - Size = 12345, - [Rom.CRC16Key] = "XXXXXX", - [Rom.CRCKey] = "XXXXXX", - [Rom.CRC64Key] = "XXXXXX", - [Rom.MD2Key] = "XXXXXX", - [Rom.MD4Key] = "XXXXXX", - [Rom.MD5Key] = "XXXXXX", - [Rom.RIPEMD128Key] = "XXXXXX", - [Rom.RIPEMD160Key] = "XXXXXX", - [Rom.SHA1Key] = "XXXXXX", - [Rom.SHA256Key] = "XXXXXX", - [Rom.SHA384Key] = "XXXXXX", - [Rom.SHA512Key] = "XXXXXX", - [Rom.SpamSumKey] = "XXXXXX", - }; - - bool actual = self.PartialEquals(other); - Assert.True(actual); - } - - [Fact] - public void PartialEquals_Rom_NoOtherSize_True() - { - var self = new Rom - { - Name = "XXXXXX1", - Size = 12345, - [Rom.CRC16Key] = "XXXXXX", - [Rom.CRCKey] = "XXXXXX", - [Rom.CRC64Key] = "XXXXXX", - [Rom.MD2Key] = "XXXXXX", - [Rom.MD4Key] = "XXXXXX", - [Rom.MD5Key] = "XXXXXX", - [Rom.RIPEMD128Key] = "XXXXXX", - [Rom.RIPEMD160Key] = "XXXXXX", - [Rom.SHA1Key] = "XXXXXX", - [Rom.SHA256Key] = "XXXXXX", - [Rom.SHA384Key] = "XXXXXX", - [Rom.SHA512Key] = "XXXXXX", - [Rom.SpamSumKey] = "XXXXXX", - }; - var other = new Rom - { - Name = "XXXXXX2", - [Rom.CRC16Key] = "XXXXXX", - [Rom.CRCKey] = "XXXXXX", - [Rom.CRC64Key] = "XXXXXX", - [Rom.MD2Key] = "XXXXXX", - [Rom.MD4Key] = "XXXXXX", - [Rom.MD5Key] = "XXXXXX", - [Rom.RIPEMD128Key] = "XXXXXX", - [Rom.RIPEMD160Key] = "XXXXXX", - [Rom.SHA1Key] = "XXXXXX", - [Rom.SHA256Key] = "XXXXXX", - [Rom.SHA384Key] = "XXXXXX", - [Rom.SHA512Key] = "XXXXXX", - [Rom.SpamSumKey] = "XXXXXX", - }; - - bool actual = self.PartialEquals(other); - Assert.True(actual); - } - - [Fact] - public void PartialEquals_Rom_PartialCRC16_True() - { - var self = new Rom - { - Name = "XXXXXX1", - Size = 12345, - [Rom.CRC16Key] = "XXXXXX", - [Rom.CRCKey] = string.Empty, - [Rom.CRC64Key] = string.Empty, - [Rom.MD2Key] = string.Empty, - [Rom.MD4Key] = string.Empty, - [Rom.MD5Key] = string.Empty, - [Rom.RIPEMD128Key] = string.Empty, - [Rom.RIPEMD160Key] = string.Empty, - [Rom.SHA1Key] = string.Empty, - [Rom.SHA256Key] = string.Empty, - [Rom.SHA384Key] = string.Empty, - [Rom.SHA512Key] = string.Empty, - [Rom.SpamSumKey] = string.Empty, - }; - var other = new Rom - { - Name = "XXXXXX2", - Size = 12345, - [Rom.CRC16Key] = "XXXXXX", - [Rom.CRCKey] = "XXXXXX", - [Rom.CRC64Key] = "XXXXXX", - [Rom.MD2Key] = "XXXXXX", - [Rom.MD4Key] = "XXXXXX", - [Rom.MD5Key] = "XXXXXX", - [Rom.RIPEMD128Key] = "XXXXXX", - [Rom.RIPEMD160Key] = "XXXXXX", - [Rom.SHA1Key] = "XXXXXX", - [Rom.SHA256Key] = "XXXXXX", - [Rom.SHA384Key] = "XXXXXX", - [Rom.SHA512Key] = "XXXXXX", - [Rom.SpamSumKey] = "XXXXXX", - }; - - bool actual = self.PartialEquals(other); - Assert.True(actual); - } - - [Fact] - public void PartialEquals_Rom_PartialCRC_True() - { - var self = new Rom - { - Name = "XXXXXX1", - Size = 12345, - [Rom.CRC16Key] = string.Empty, - [Rom.CRCKey] = "XXXXXX", - [Rom.CRC64Key] = string.Empty, - [Rom.MD2Key] = string.Empty, - [Rom.MD4Key] = string.Empty, - [Rom.MD5Key] = string.Empty, - [Rom.RIPEMD128Key] = string.Empty, - [Rom.RIPEMD160Key] = string.Empty, - [Rom.SHA1Key] = string.Empty, - [Rom.SHA256Key] = string.Empty, - [Rom.SHA384Key] = string.Empty, - [Rom.SHA512Key] = string.Empty, - [Rom.SpamSumKey] = string.Empty, - }; - var other = new Rom - { - Name = "XXXXXX2", - Size = 12345, - [Rom.CRC16Key] = "XXXXXX", - [Rom.CRCKey] = "XXXXXX", - [Rom.CRC64Key] = "XXXXXX", - [Rom.MD2Key] = "XXXXXX", - [Rom.MD4Key] = "XXXXXX", - [Rom.MD5Key] = "XXXXXX", - [Rom.RIPEMD128Key] = "XXXXXX", - [Rom.RIPEMD160Key] = "XXXXXX", - [Rom.SHA1Key] = "XXXXXX", - [Rom.SHA256Key] = "XXXXXX", - [Rom.SHA384Key] = "XXXXXX", - [Rom.SHA512Key] = "XXXXXX", - [Rom.SpamSumKey] = "XXXXXX", - }; - - bool actual = self.PartialEquals(other); - Assert.True(actual); - } - - [Fact] - public void PartialEquals_Rom_PartialCRC64_True() - { - var self = new Rom - { - Name = "XXXXXX1", - Size = 12345, - [Rom.CRC16Key] = string.Empty, - [Rom.CRCKey] = string.Empty, - [Rom.CRC64Key] = "XXXXXX", - [Rom.MD2Key] = string.Empty, - [Rom.MD4Key] = string.Empty, - [Rom.MD5Key] = string.Empty, - [Rom.RIPEMD128Key] = string.Empty, - [Rom.RIPEMD160Key] = string.Empty, - [Rom.SHA1Key] = string.Empty, - [Rom.SHA256Key] = string.Empty, - [Rom.SHA384Key] = string.Empty, - [Rom.SHA512Key] = string.Empty, - [Rom.SpamSumKey] = string.Empty, - }; - var other = new Rom - { - Name = "XXXXXX2", - Size = 12345, - [Rom.CRC16Key] = "XXXXXX", - [Rom.CRCKey] = "XXXXXX", - [Rom.CRC64Key] = "XXXXXX", - [Rom.MD2Key] = "XXXXXX", - [Rom.MD4Key] = "XXXXXX", - [Rom.MD5Key] = "XXXXXX", - [Rom.RIPEMD128Key] = "XXXXXX", - [Rom.RIPEMD160Key] = "XXXXXX", - [Rom.SHA1Key] = "XXXXXX", - [Rom.SHA256Key] = "XXXXXX", - [Rom.SHA384Key] = "XXXXXX", - [Rom.SHA512Key] = "XXXXXX", - [Rom.SpamSumKey] = "XXXXXX", - }; - - bool actual = self.PartialEquals(other); - Assert.True(actual); - } - - [Fact] - public void PartialEquals_Rom_PartialMD2_True() - { - var self = new Rom - { - Name = "XXXXXX1", - Size = 12345, - [Rom.CRC16Key] = string.Empty, - [Rom.CRCKey] = string.Empty, - [Rom.CRC64Key] = string.Empty, - [Rom.MD2Key] = "XXXXXX", - [Rom.MD4Key] = string.Empty, - [Rom.MD5Key] = string.Empty, - [Rom.RIPEMD128Key] = string.Empty, - [Rom.RIPEMD160Key] = string.Empty, - [Rom.SHA1Key] = string.Empty, - [Rom.SHA256Key] = string.Empty, - [Rom.SHA384Key] = string.Empty, - [Rom.SHA512Key] = string.Empty, - [Rom.SpamSumKey] = string.Empty, - }; - var other = new Rom - { - Name = "XXXXXX2", - Size = 12345, - [Rom.CRC16Key] = "XXXXXX", - [Rom.CRCKey] = "XXXXXX", - [Rom.CRC64Key] = "XXXXXX", - [Rom.MD2Key] = "XXXXXX", - [Rom.MD4Key] = "XXXXXX", - [Rom.MD5Key] = "XXXXXX", - [Rom.RIPEMD128Key] = "XXXXXX", - [Rom.RIPEMD160Key] = "XXXXXX", - [Rom.SHA1Key] = "XXXXXX", - [Rom.SHA256Key] = "XXXXXX", - [Rom.SHA384Key] = "XXXXXX", - [Rom.SHA512Key] = "XXXXXX", - [Rom.SpamSumKey] = "XXXXXX", - }; - - bool actual = self.PartialEquals(other); - Assert.True(actual); - } - - [Fact] - public void PartialEquals_Rom_PartialMD4_True() - { - var self = new Rom - { - Name = "XXXXXX1", - Size = 12345, - [Rom.CRC16Key] = string.Empty, - [Rom.CRCKey] = string.Empty, - [Rom.CRC64Key] = string.Empty, - [Rom.MD2Key] = string.Empty, - [Rom.MD4Key] = "XXXXXX", - [Rom.MD5Key] = string.Empty, - [Rom.RIPEMD128Key] = string.Empty, - [Rom.RIPEMD160Key] = string.Empty, - [Rom.SHA1Key] = string.Empty, - [Rom.SHA256Key] = string.Empty, - [Rom.SHA384Key] = string.Empty, - [Rom.SHA512Key] = string.Empty, - [Rom.SpamSumKey] = string.Empty, - }; - var other = new Rom - { - Name = "XXXXXX2", - Size = 12345, - [Rom.CRC16Key] = "XXXXXX", - [Rom.CRCKey] = "XXXXXX", - [Rom.CRC64Key] = "XXXXXX", - [Rom.MD2Key] = "XXXXXX", - [Rom.MD4Key] = "XXXXXX", - [Rom.MD5Key] = "XXXXXX", - [Rom.RIPEMD128Key] = "XXXXXX", - [Rom.RIPEMD160Key] = "XXXXXX", - [Rom.SHA1Key] = "XXXXXX", - [Rom.SHA256Key] = "XXXXXX", - [Rom.SHA384Key] = "XXXXXX", - [Rom.SHA512Key] = "XXXXXX", - [Rom.SpamSumKey] = "XXXXXX", - }; - - bool actual = self.PartialEquals(other); - Assert.True(actual); - } - - [Fact] - public void PartialEquals_Rom_PartialMD5_True() - { - var self = new Rom - { - Name = "XXXXXX1", - Size = 12345, - [Rom.CRC16Key] = string.Empty, - [Rom.CRCKey] = string.Empty, - [Rom.CRC64Key] = string.Empty, - [Rom.MD2Key] = string.Empty, - [Rom.MD4Key] = string.Empty, - [Rom.MD5Key] = "XXXXXX", - [Rom.RIPEMD128Key] = string.Empty, - [Rom.RIPEMD160Key] = string.Empty, - [Rom.SHA1Key] = string.Empty, - [Rom.SHA256Key] = string.Empty, - [Rom.SHA384Key] = string.Empty, - [Rom.SHA512Key] = string.Empty, - [Rom.SpamSumKey] = string.Empty, - }; - var other = new Rom - { - Name = "XXXXXX2", - Size = 12345, - [Rom.CRC16Key] = "XXXXXX", - [Rom.CRCKey] = "XXXXXX", - [Rom.CRC64Key] = "XXXXXX", - [Rom.MD2Key] = "XXXXXX", - [Rom.MD4Key] = "XXXXXX", - [Rom.MD5Key] = "XXXXXX", - [Rom.RIPEMD128Key] = "XXXXXX", - [Rom.RIPEMD160Key] = "XXXXXX", - [Rom.SHA1Key] = "XXXXXX", - [Rom.SHA256Key] = "XXXXXX", - [Rom.SHA384Key] = "XXXXXX", - [Rom.SHA512Key] = "XXXXXX", - [Rom.SpamSumKey] = "XXXXXX", - }; - - bool actual = self.PartialEquals(other); - Assert.True(actual); - } - - [Fact] - public void PartialEquals_Rom_PartialRIPEMD128_True() - { - var self = new Rom - { - Name = "XXXXXX1", - Size = 12345, - [Rom.CRC16Key] = string.Empty, - [Rom.CRCKey] = string.Empty, - [Rom.CRC64Key] = string.Empty, - [Rom.MD2Key] = string.Empty, - [Rom.MD4Key] = string.Empty, - [Rom.MD5Key] = string.Empty, - [Rom.RIPEMD128Key] = "XXXXXX", - [Rom.RIPEMD160Key] = string.Empty, - [Rom.SHA1Key] = string.Empty, - [Rom.SHA256Key] = string.Empty, - [Rom.SHA384Key] = string.Empty, - [Rom.SHA512Key] = string.Empty, - [Rom.SpamSumKey] = string.Empty, - }; - var other = new Rom - { - Name = "XXXXXX2", - Size = 12345, - [Rom.CRC16Key] = "XXXXXX", - [Rom.CRCKey] = "XXXXXX", - [Rom.CRC64Key] = "XXXXXX", - [Rom.MD2Key] = "XXXXXX", - [Rom.MD4Key] = "XXXXXX", - [Rom.MD5Key] = "XXXXXX", - [Rom.RIPEMD128Key] = "XXXXXX", - [Rom.RIPEMD160Key] = "XXXXXX", - [Rom.SHA1Key] = "XXXXXX", - [Rom.SHA256Key] = "XXXXXX", - [Rom.SHA384Key] = "XXXXXX", - [Rom.SHA512Key] = "XXXXXX", - [Rom.SpamSumKey] = "XXXXXX", - }; - - bool actual = self.PartialEquals(other); - Assert.True(actual); - } - - [Fact] - public void PartialEquals_Rom_PartialRIPEMD160_True() - { - var self = new Rom - { - Name = "XXXXXX1", - Size = 12345, - [Rom.CRC16Key] = string.Empty, - [Rom.CRCKey] = string.Empty, - [Rom.CRC64Key] = string.Empty, - [Rom.MD2Key] = string.Empty, - [Rom.MD4Key] = string.Empty, - [Rom.MD5Key] = string.Empty, - [Rom.RIPEMD128Key] = string.Empty, - [Rom.RIPEMD160Key] = "XXXXXX", - [Rom.SHA1Key] = string.Empty, - [Rom.SHA256Key] = string.Empty, - [Rom.SHA384Key] = string.Empty, - [Rom.SHA512Key] = string.Empty, - [Rom.SpamSumKey] = string.Empty, - }; - var other = new Rom - { - Name = "XXXXXX2", - Size = 12345, - [Rom.CRC16Key] = "XXXXXX", - [Rom.CRCKey] = "XXXXXX", - [Rom.CRC64Key] = "XXXXXX", - [Rom.MD2Key] = "XXXXXX", - [Rom.MD4Key] = "XXXXXX", - [Rom.MD5Key] = "XXXXXX", - [Rom.RIPEMD128Key] = "XXXXXX", - [Rom.RIPEMD160Key] = "XXXXXX", - [Rom.SHA1Key] = "XXXXXX", - [Rom.SHA256Key] = "XXXXXX", - [Rom.SHA384Key] = "XXXXXX", - [Rom.SHA512Key] = "XXXXXX", - [Rom.SpamSumKey] = "XXXXXX", - }; - - bool actual = self.PartialEquals(other); - Assert.True(actual); - } - - [Fact] - public void PartialEquals_Rom_PartialSHA1_True() - { - var self = new Rom - { - Name = "XXXXXX1", - Size = 12345, - [Rom.CRC16Key] = string.Empty, - [Rom.CRCKey] = string.Empty, - [Rom.CRC64Key] = string.Empty, - [Rom.MD2Key] = string.Empty, - [Rom.MD4Key] = string.Empty, - [Rom.MD5Key] = string.Empty, - [Rom.RIPEMD128Key] = string.Empty, - [Rom.RIPEMD160Key] = string.Empty, - [Rom.SHA1Key] = "XXXXXX", - [Rom.SHA256Key] = string.Empty, - [Rom.SHA384Key] = string.Empty, - [Rom.SHA512Key] = string.Empty, - [Rom.SpamSumKey] = string.Empty, - }; - var other = new Rom - { - Name = "XXXXXX2", - Size = 12345, - [Rom.CRC16Key] = "XXXXXX", - [Rom.CRCKey] = "XXXXXX", - [Rom.CRC64Key] = "XXXXXX", - [Rom.MD2Key] = "XXXXXX", - [Rom.MD4Key] = "XXXXXX", - [Rom.MD5Key] = "XXXXXX", - [Rom.RIPEMD128Key] = "XXXXXX", - [Rom.RIPEMD160Key] = "XXXXXX", - [Rom.SHA1Key] = "XXXXXX", - [Rom.SHA256Key] = "XXXXXX", - [Rom.SHA384Key] = "XXXXXX", - [Rom.SHA512Key] = "XXXXXX", - [Rom.SpamSumKey] = "XXXXXX", - }; - - bool actual = self.PartialEquals(other); - Assert.True(actual); - } - - [Fact] - public void PartialEquals_Rom_PartialSHA256_True() - { - var self = new Rom - { - Name = "XXXXXX1", - Size = 12345, - [Rom.CRC16Key] = string.Empty, - [Rom.CRCKey] = string.Empty, - [Rom.CRC64Key] = string.Empty, - [Rom.MD2Key] = string.Empty, - [Rom.MD4Key] = string.Empty, - [Rom.MD5Key] = string.Empty, - [Rom.RIPEMD128Key] = string.Empty, - [Rom.RIPEMD160Key] = string.Empty, - [Rom.SHA1Key] = string.Empty, - [Rom.SHA256Key] = "XXXXXX", - [Rom.SHA384Key] = string.Empty, - [Rom.SHA512Key] = string.Empty, - [Rom.SpamSumKey] = string.Empty, - }; - var other = new Rom - { - Name = "XXXXXX2", - Size = 12345, - [Rom.CRC16Key] = "XXXXXX", - [Rom.CRCKey] = "XXXXXX", - [Rom.CRC64Key] = "XXXXXX", - [Rom.MD2Key] = "XXXXXX", - [Rom.MD4Key] = "XXXXXX", - [Rom.MD5Key] = "XXXXXX", - [Rom.RIPEMD128Key] = "XXXXXX", - [Rom.RIPEMD160Key] = "XXXXXX", - [Rom.SHA1Key] = "XXXXXX", - [Rom.SHA256Key] = "XXXXXX", - [Rom.SHA384Key] = "XXXXXX", - [Rom.SHA512Key] = "XXXXXX", - [Rom.SpamSumKey] = "XXXXXX", - }; - - bool actual = self.PartialEquals(other); - Assert.True(actual); - } - - [Fact] - public void PartialEquals_Rom_PartialSHA384_True() - { - var self = new Rom - { - Name = "XXXXXX1", - Size = 12345, - [Rom.CRC16Key] = string.Empty, - [Rom.CRCKey] = string.Empty, - [Rom.CRC64Key] = string.Empty, - [Rom.MD2Key] = string.Empty, - [Rom.MD4Key] = string.Empty, - [Rom.MD5Key] = string.Empty, - [Rom.RIPEMD128Key] = string.Empty, - [Rom.RIPEMD160Key] = string.Empty, - [Rom.SHA1Key] = string.Empty, - [Rom.SHA256Key] = string.Empty, - [Rom.SHA384Key] = "XXXXXX", - [Rom.SHA512Key] = string.Empty, - [Rom.SpamSumKey] = string.Empty, - }; - var other = new Rom - { - Name = "XXXXXX2", - Size = 12345, - [Rom.CRC16Key] = "XXXXXX", - [Rom.CRCKey] = "XXXXXX", - [Rom.CRC64Key] = "XXXXXX", - [Rom.MD2Key] = "XXXXXX", - [Rom.MD4Key] = "XXXXXX", - [Rom.MD5Key] = "XXXXXX", - [Rom.RIPEMD128Key] = "XXXXXX", - [Rom.RIPEMD160Key] = "XXXXXX", - [Rom.SHA1Key] = "XXXXXX", - [Rom.SHA256Key] = "XXXXXX", - [Rom.SHA384Key] = "XXXXXX", - [Rom.SHA512Key] = "XXXXXX", - [Rom.SpamSumKey] = "XXXXXX", - }; - - bool actual = self.PartialEquals(other); - Assert.True(actual); - } - - [Fact] - public void PartialEquals_Rom_PartialSHA512_True() - { - var self = new Rom - { - Name = "XXXXXX1", - Size = 12345, - [Rom.CRC16Key] = string.Empty, - [Rom.CRCKey] = string.Empty, - [Rom.CRC64Key] = string.Empty, - [Rom.MD2Key] = string.Empty, - [Rom.MD4Key] = string.Empty, - [Rom.MD5Key] = string.Empty, - [Rom.RIPEMD128Key] = string.Empty, - [Rom.RIPEMD160Key] = string.Empty, - [Rom.SHA1Key] = string.Empty, - [Rom.SHA256Key] = string.Empty, - [Rom.SHA384Key] = string.Empty, - [Rom.SHA512Key] = "XXXXXX", - [Rom.SpamSumKey] = string.Empty, - }; - var other = new Rom - { - Name = "XXXXXX2", - Size = 12345, - [Rom.CRC16Key] = "XXXXXX", - [Rom.CRCKey] = "XXXXXX", - [Rom.CRC64Key] = "XXXXXX", - [Rom.MD2Key] = "XXXXXX", - [Rom.MD4Key] = "XXXXXX", - [Rom.MD5Key] = "XXXXXX", - [Rom.RIPEMD128Key] = "XXXXXX", - [Rom.RIPEMD160Key] = "XXXXXX", - [Rom.SHA1Key] = "XXXXXX", - [Rom.SHA256Key] = "XXXXXX", - [Rom.SHA384Key] = "XXXXXX", - [Rom.SHA512Key] = "XXXXXX", - [Rom.SpamSumKey] = "XXXXXX", - }; - - bool actual = self.PartialEquals(other); - Assert.True(actual); - } - - [Fact] - public void PartialEquals_Rom_PartialSpamSum_True() - { - var self = new Rom - { - Name = "XXXXXX1", - Size = 12345, - [Rom.CRC16Key] = string.Empty, - [Rom.CRCKey] = string.Empty, - [Rom.CRC64Key] = string.Empty, - [Rom.MD2Key] = string.Empty, - [Rom.MD4Key] = string.Empty, - [Rom.MD5Key] = string.Empty, - [Rom.RIPEMD128Key] = string.Empty, - [Rom.RIPEMD160Key] = string.Empty, - [Rom.SHA1Key] = string.Empty, - [Rom.SHA256Key] = string.Empty, - [Rom.SHA384Key] = string.Empty, - [Rom.SHA512Key] = string.Empty, - [Rom.SpamSumKey] = "XXXXXX", - }; - var other = new Rom - { - Name = "XXXXXX2", - Size = 12345, - [Rom.CRC16Key] = "XXXXXX", - [Rom.CRCKey] = "XXXXXX", - [Rom.CRC64Key] = "XXXXXX", - [Rom.MD2Key] = "XXXXXX", - [Rom.MD4Key] = "XXXXXX", - [Rom.MD5Key] = "XXXXXX", - [Rom.RIPEMD128Key] = "XXXXXX", - [Rom.RIPEMD160Key] = "XXXXXX", - [Rom.SHA1Key] = "XXXXXX", - [Rom.SHA256Key] = "XXXXXX", - [Rom.SHA384Key] = "XXXXXX", - [Rom.SHA512Key] = "XXXXXX", - [Rom.SpamSumKey] = "XXXXXX", - }; - - bool actual = self.PartialEquals(other); - Assert.True(actual); - } - - [Fact] - public void PartialEquals_Rom_FullMatch_True() - { - var self = new Rom - { - Name = "XXXXXX1", - Size = 12345, - [Rom.CRC16Key] = "XXXXXX", - [Rom.CRCKey] = "XXXXXX", - [Rom.CRC64Key] = "XXXXXX", - [Rom.MD2Key] = "XXXXXX", - [Rom.MD4Key] = "XXXXXX", - [Rom.MD5Key] = "XXXXXX", - [Rom.RIPEMD128Key] = "XXXXXX", - [Rom.RIPEMD160Key] = "XXXXXX", - [Rom.SHA1Key] = "XXXXXX", - [Rom.SHA256Key] = "XXXXXX", - [Rom.SHA384Key] = "XXXXXX", - [Rom.SHA512Key] = "XXXXXX", - [Rom.SpamSumKey] = "XXXXXX", - }; - var other = new Rom - { - Name = "XXXXXX2", - Size = 12345, - [Rom.CRC16Key] = "XXXXXX", - [Rom.CRCKey] = "XXXXXX", - [Rom.CRC64Key] = "XXXXXX", - [Rom.MD2Key] = "XXXXXX", - [Rom.MD4Key] = "XXXXXX", - [Rom.MD5Key] = "XXXXXX", - [Rom.RIPEMD128Key] = "XXXXXX", - [Rom.RIPEMD160Key] = "XXXXXX", - [Rom.SHA1Key] = "XXXXXX", - [Rom.SHA256Key] = "XXXXXX", - [Rom.SHA384Key] = "XXXXXX", - [Rom.SHA512Key] = "XXXXXX", - [Rom.SpamSumKey] = "XXXXXX", - }; - - bool actual = self.PartialEquals(other); - Assert.True(actual); - } - - #endregion - } -} diff --git a/SabreTools.Metadata/DictionaryBaseExtensions.cs b/SabreTools.Metadata/DictionaryBaseExtensions.cs deleted file mode 100644 index d2f419c5..00000000 --- a/SabreTools.Metadata/DictionaryBaseExtensions.cs +++ /dev/null @@ -1,93 +0,0 @@ -using System; -using SabreTools.Data.Extensions; -using SabreTools.Data.Models.Metadata; - -namespace SabreTools.Metadata -{ - public static class DictionaryBaseExtensions - { - #region Equality Checking - - /// - /// Check equality of two Disk objects - /// - public static bool PartialEquals(this Disk self, Disk other) - { - ItemStatus? selfStatus = self.Status; - ItemStatus? otherStatus = other.Status; - - string? selfName = self.Name; - string? otherName = other.Name; - - // If all hashes are empty but they're both nodump and the names match, then they're dupes - if (selfStatus == ItemStatus.Nodump - && otherStatus == ItemStatus.Nodump - && string.Equals(selfName, otherName, StringComparison.OrdinalIgnoreCase) - && !self.HasHashes() - && !other.HasHashes()) - { - return true; - } - - // If we get a partial match - if (self.HashMatch(other)) - return true; - - // All other cases fail - return false; - } - - /// - /// Check equality of two Media objects - /// - public static bool PartialEquals(this Media self, Media other) - { - // If we get a partial match - if (self.HashMatch(other)) - return true; - - // All other cases fail - return false; - } - - /// - /// Check equality of two Rom objects - /// - public static bool PartialEquals(this Rom self, Rom other) - { - ItemStatus? selfStatus = self.Status; - ItemStatus? otherStatus = other.Status; - - string? selfName = self.Name; - string? otherName = other.Name; - - long? selfSize = self.Size; - long? otherSize = other.Size; - - // If all hashes are empty but they're both nodump and the names match, then they're dupes - if (selfStatus == ItemStatus.Nodump - && otherStatus == ItemStatus.Nodump - && string.Equals(selfName, otherName, StringComparison.OrdinalIgnoreCase) - && !self.HasHashes() - && !other.HasHashes()) - { - return true; - } - - // If we have a file that has no known size, rely on the hashes only - if (selfSize is null && self.HashMatch(other)) - return true; - else if (otherSize is null && self.HashMatch(other)) - return true; - - // If we get a partial match - if (selfSize == otherSize && self.HashMatch(other)) - return true; - - // All other cases fail - return false; - } - - #endregion - } -} From bd8c00861048c9c6419e6928943f4f9809601f1c Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sat, 4 Apr 2026 20:30:33 -0400 Subject: [PATCH 098/142] Attempt to make Equals redirection less --- .../DatItemTests.cs | 30 +++++++++++++++++++ SabreTools.Metadata.DatItems/DatItem.cs | 28 ++--------------- .../Formats/Adjuster.cs | 30 +++++++++++++++++++ .../Formats/Analog.cs | 30 +++++++++++++++++++ .../Formats/Archive.cs | 30 +++++++++++++++++++ .../Formats/BiosSet.cs | 30 +++++++++++++++++++ SabreTools.Metadata.DatItems/Formats/Blank.cs | 30 +++++++++++++++++++ SabreTools.Metadata.DatItems/Formats/Chip.cs | 30 +++++++++++++++++++ .../Formats/Condition.cs | 30 +++++++++++++++++++ .../Formats/ConfLocation.cs | 30 +++++++++++++++++++ .../Formats/ConfSetting.cs | 30 +++++++++++++++++++ .../Formats/Configuration.cs | 30 +++++++++++++++++++ .../Formats/Control.cs | 30 +++++++++++++++++++ .../Formats/DataArea.cs | 30 +++++++++++++++++++ .../Formats/Device.cs | 30 +++++++++++++++++++ .../Formats/DeviceRef.cs | 30 +++++++++++++++++++ .../Formats/DipLocation.cs | 30 +++++++++++++++++++ .../Formats/DipSwitch.cs | 30 +++++++++++++++++++ .../Formats/DipValue.cs | 30 +++++++++++++++++++ SabreTools.Metadata.DatItems/Formats/Disk.cs | 30 +++++++++++++++++++ .../Formats/DiskArea.cs | 30 +++++++++++++++++++ .../Formats/Display.cs | 30 +++++++++++++++++++ .../Formats/Driver.cs | 30 +++++++++++++++++++ .../Formats/Extension.cs | 30 +++++++++++++++++++ .../Formats/Feature.cs | 30 +++++++++++++++++++ SabreTools.Metadata.DatItems/Formats/File.cs | 14 +++++++++ SabreTools.Metadata.DatItems/Formats/Info.cs | 30 +++++++++++++++++++ SabreTools.Metadata.DatItems/Formats/Input.cs | 30 +++++++++++++++++++ .../Formats/Instance.cs | 30 +++++++++++++++++++ SabreTools.Metadata.DatItems/Formats/Media.cs | 30 +++++++++++++++++++ SabreTools.Metadata.DatItems/Formats/Part.cs | 30 +++++++++++++++++++ .../Formats/PartFeature.cs | 30 +++++++++++++++++++ SabreTools.Metadata.DatItems/Formats/Port.cs | 30 +++++++++++++++++++ .../Formats/RamOption.cs | 30 +++++++++++++++++++ .../Formats/Release.cs | 30 +++++++++++++++++++ .../Formats/ReleaseDetails.cs | 30 +++++++++++++++++++ SabreTools.Metadata.DatItems/Formats/Rom.cs | 30 +++++++++++++++++++ .../Formats/Sample.cs | 30 +++++++++++++++++++ .../Formats/Serials.cs | 30 +++++++++++++++++++ .../Formats/SharedFeat.cs | 30 +++++++++++++++++++ SabreTools.Metadata.DatItems/Formats/Slot.cs | 30 +++++++++++++++++++ .../Formats/SlotOption.cs | 30 +++++++++++++++++++ .../Formats/SoftwareList.cs | 30 +++++++++++++++++++ SabreTools.Metadata.DatItems/Formats/Sound.cs | 30 +++++++++++++++++++ .../Formats/SourceDetails.cs | 30 +++++++++++++++++++ 45 files changed, 1306 insertions(+), 26 deletions(-) diff --git a/SabreTools.Metadata.DatItems.Test/DatItemTests.cs b/SabreTools.Metadata.DatItems.Test/DatItemTests.cs index 94fafcd8..070ad8e9 100644 --- a/SabreTools.Metadata.DatItems.Test/DatItemTests.cs +++ b/SabreTools.Metadata.DatItems.Test/DatItemTests.cs @@ -61,6 +61,36 @@ namespace SabreTools.Metadata.DatItems.Test /// public override void SetName(string? name) => Name = name; + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is TestDatItem otherTestDatItem) + return ((TestDatItemModel)_internal).Equals((TestDatItemModel)otherTestDatItem._internal); + + // Everything else fails + return false; + } + + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is TestDatItem otherTestDatItem) + return ((TestDatItemModel)_internal).Equals((TestDatItemModel)otherTestDatItem._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/DatItem.cs b/SabreTools.Metadata.DatItems/DatItem.cs index d3bb3e83..56036c6c 100644 --- a/SabreTools.Metadata.DatItems/DatItem.cs +++ b/SabreTools.Metadata.DatItems/DatItem.cs @@ -169,34 +169,10 @@ namespace SabreTools.Metadata.DatItems } /// - public override bool Equals(ModelBackedItem? other) - { - // If other is null - if (other is null) - return false; - - // If the type is mismatched - if (other is not DatItem otherItem) - return false; - - // Compare internal models - return _internal.Equals(otherItem); - } + public abstract override bool Equals(ModelBackedItem? other); /// - public override bool Equals(ModelBackedItem? other) - { - // If other is null - if (other is null) - return false; - - // If the type is mismatched - if (other is not DatItem otherItem) - return false; - - // Compare internal models - return _internal.Equals(otherItem); - } + public abstract override bool Equals(ModelBackedItem? other); /// /// Determine if an item is a duplicate using partial matching logic diff --git a/SabreTools.Metadata.DatItems/Formats/Adjuster.cs b/SabreTools.Metadata.DatItems/Formats/Adjuster.cs index df373844..affffe81 100644 --- a/SabreTools.Metadata.DatItems/Formats/Adjuster.cs +++ b/SabreTools.Metadata.DatItems/Formats/Adjuster.cs @@ -83,6 +83,36 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Adjuster otherAdjuster) + return ((Data.Models.Metadata.Adjuster)_internal).Equals((Data.Models.Metadata.Adjuster)otherAdjuster._internal); + + // Everything else fails + return false; + } + + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Adjuster otherAdjuster) + return ((Data.Models.Metadata.Adjuster)_internal).Equals((Data.Models.Metadata.Adjuster)otherAdjuster._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/Analog.cs b/SabreTools.Metadata.DatItems/Formats/Analog.cs index e273c326..e8bbe26b 100644 --- a/SabreTools.Metadata.DatItems/Formats/Analog.cs +++ b/SabreTools.Metadata.DatItems/Formats/Analog.cs @@ -60,6 +60,36 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Analog otherAnalog) + return ((Data.Models.Metadata.Analog)_internal).Equals((Data.Models.Metadata.Analog)otherAnalog._internal); + + // Everything else fails + return false; + } + + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Analog otherAnalog) + return ((Data.Models.Metadata.Analog)_internal).Equals((Data.Models.Metadata.Analog)otherAnalog._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/Archive.cs b/SabreTools.Metadata.DatItems/Formats/Archive.cs index 5c8096aa..5a683212 100644 --- a/SabreTools.Metadata.DatItems/Formats/Archive.cs +++ b/SabreTools.Metadata.DatItems/Formats/Archive.cs @@ -251,6 +251,36 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Archive otherArchive) + return ((Data.Models.Metadata.Archive)_internal).Equals((Data.Models.Metadata.Archive)otherArchive._internal); + + // Everything else fails + return false; + } + + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Archive otherArchive) + return ((Data.Models.Metadata.Archive)_internal).Equals((Data.Models.Metadata.Archive)otherArchive._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/BiosSet.cs b/SabreTools.Metadata.DatItems/Formats/BiosSet.cs index 963519e9..1d9d89b4 100644 --- a/SabreTools.Metadata.DatItems/Formats/BiosSet.cs +++ b/SabreTools.Metadata.DatItems/Formats/BiosSet.cs @@ -72,6 +72,36 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is BiosSet otherBiosSet) + return ((Data.Models.Metadata.BiosSet)_internal).Equals((Data.Models.Metadata.BiosSet)otherBiosSet._internal); + + // Everything else fails + return false; + } + + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is BiosSet otherBiosSet) + return ((Data.Models.Metadata.BiosSet)_internal).Equals((Data.Models.Metadata.BiosSet)otherBiosSet._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/Blank.cs b/SabreTools.Metadata.DatItems/Formats/Blank.cs index c991685c..2843e2b4 100644 --- a/SabreTools.Metadata.DatItems/Formats/Blank.cs +++ b/SabreTools.Metadata.DatItems/Formats/Blank.cs @@ -54,6 +54,36 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Blank otherBlank) + return ((Data.Models.Metadata.Blank)_internal).Equals((Data.Models.Metadata.Blank)otherBlank._internal); + + // Everything else fails + return false; + } + + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Blank otherBlank) + return ((Data.Models.Metadata.Blank)_internal).Equals((Data.Models.Metadata.Blank)otherBlank._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/Chip.cs b/SabreTools.Metadata.DatItems/Formats/Chip.cs index 87a66582..31540d40 100644 --- a/SabreTools.Metadata.DatItems/Formats/Chip.cs +++ b/SabreTools.Metadata.DatItems/Formats/Chip.cs @@ -90,6 +90,36 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Chip otherChip) + return ((Data.Models.Metadata.Chip)_internal).Equals((Data.Models.Metadata.Chip)otherChip._internal); + + // Everything else fails + return false; + } + + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Chip otherChip) + return ((Data.Models.Metadata.Chip)_internal).Equals((Data.Models.Metadata.Chip)otherChip._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/Condition.cs b/SabreTools.Metadata.DatItems/Formats/Condition.cs index 7ca1d651..29d52d80 100644 --- a/SabreTools.Metadata.DatItems/Formats/Condition.cs +++ b/SabreTools.Metadata.DatItems/Formats/Condition.cs @@ -78,6 +78,36 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Condition otherCondition) + return ((Data.Models.Metadata.Condition)_internal).Equals((Data.Models.Metadata.Condition)otherCondition._internal); + + // Everything else fails + return false; + } + + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Condition otherCondition) + return ((Data.Models.Metadata.Condition)_internal).Equals((Data.Models.Metadata.Condition)otherCondition._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs b/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs index 34156835..b2163c11 100644 --- a/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs +++ b/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs @@ -72,6 +72,36 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is ConfLocation otherConfLocation) + return ((Data.Models.Metadata.ConfLocation)_internal).Equals((Data.Models.Metadata.ConfLocation)otherConfLocation._internal); + + // Everything else fails + return false; + } + + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is ConfLocation otherConfLocation) + return ((Data.Models.Metadata.ConfLocation)_internal).Equals((Data.Models.Metadata.ConfLocation)otherConfLocation._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs b/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs index 8589492e..18260865 100644 --- a/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs +++ b/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs @@ -89,6 +89,36 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is ConfSetting otherConfSetting) + return ((Data.Models.Metadata.ConfSetting)_internal).Equals((Data.Models.Metadata.ConfSetting)otherConfSetting._internal); + + // Everything else fails + return false; + } + + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is ConfSetting otherConfSetting) + return ((Data.Models.Metadata.ConfSetting)_internal).Equals((Data.Models.Metadata.ConfSetting)otherConfSetting._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/Configuration.cs b/SabreTools.Metadata.DatItems/Formats/Configuration.cs index 80c75f5e..0aaf48ec 100644 --- a/SabreTools.Metadata.DatItems/Formats/Configuration.cs +++ b/SabreTools.Metadata.DatItems/Formats/Configuration.cs @@ -112,6 +112,36 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Configuration otherConfiguration) + return ((Data.Models.Metadata.Configuration)_internal).Equals((Data.Models.Metadata.Configuration)otherConfiguration._internal); + + // Everything else fails + return false; + } + + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Configuration otherConfiguration) + return ((Data.Models.Metadata.Configuration)_internal).Equals((Data.Models.Metadata.Configuration)otherConfiguration._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/Control.cs b/SabreTools.Metadata.DatItems/Formats/Control.cs index 507c3f95..123b101d 100644 --- a/SabreTools.Metadata.DatItems/Formats/Control.cs +++ b/SabreTools.Metadata.DatItems/Formats/Control.cs @@ -126,6 +126,36 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Control otherControl) + return ((Data.Models.Metadata.Control)_internal).Equals((Data.Models.Metadata.Control)otherControl._internal); + + // Everything else fails + return false; + } + + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Control otherControl) + return ((Data.Models.Metadata.Control)_internal).Equals((Data.Models.Metadata.Control)otherControl._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/DataArea.cs b/SabreTools.Metadata.DatItems/Formats/DataArea.cs index 59de6144..141c126d 100644 --- a/SabreTools.Metadata.DatItems/Formats/DataArea.cs +++ b/SabreTools.Metadata.DatItems/Formats/DataArea.cs @@ -96,6 +96,36 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is DataArea otherDataArea) + return ((Data.Models.Metadata.DataArea)_internal).Equals((Data.Models.Metadata.DataArea)otherDataArea._internal); + + // Everything else fails + return false; + } + + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is DataArea otherDataArea) + return ((Data.Models.Metadata.DataArea)_internal).Equals((Data.Models.Metadata.DataArea)otherDataArea._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/Device.cs b/SabreTools.Metadata.DatItems/Formats/Device.cs index 3d671a91..100fcdfd 100644 --- a/SabreTools.Metadata.DatItems/Formats/Device.cs +++ b/SabreTools.Metadata.DatItems/Formats/Device.cs @@ -119,6 +119,36 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Device otherDevice) + return ((Data.Models.Metadata.Device)_internal).Equals((Data.Models.Metadata.Device)otherDevice._internal); + + // Everything else fails + return false; + } + + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Device otherDevice) + return ((Data.Models.Metadata.Device)_internal).Equals((Data.Models.Metadata.Device)otherDevice._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs b/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs index bddd13ca..ec169f2a 100644 --- a/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs +++ b/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs @@ -60,6 +60,36 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is DeviceRef otherDeviceRef) + return ((Data.Models.Metadata.DeviceRef)_internal).Equals((Data.Models.Metadata.DeviceRef)otherDeviceRef._internal); + + // Everything else fails + return false; + } + + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is DeviceRef otherDeviceRef) + return ((Data.Models.Metadata.DeviceRef)_internal).Equals((Data.Models.Metadata.DeviceRef)otherDeviceRef._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/DipLocation.cs b/SabreTools.Metadata.DatItems/Formats/DipLocation.cs index a069576f..711c3b2b 100644 --- a/SabreTools.Metadata.DatItems/Formats/DipLocation.cs +++ b/SabreTools.Metadata.DatItems/Formats/DipLocation.cs @@ -72,6 +72,36 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is DipLocation otherDipLocation) + return ((Data.Models.Metadata.DipLocation)_internal).Equals((Data.Models.Metadata.DipLocation)otherDipLocation._internal); + + // Everything else fails + return false; + } + + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is DipLocation otherDipLocation) + return ((Data.Models.Metadata.DipLocation)_internal).Equals((Data.Models.Metadata.DipLocation)otherDipLocation._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs b/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs index 599b37a2..b6758013 100644 --- a/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs +++ b/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs @@ -142,6 +142,36 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is DipSwitch otherDipSwitch) + return ((Data.Models.Metadata.DipSwitch)_internal).Equals((Data.Models.Metadata.DipSwitch)otherDipSwitch._internal); + + // Everything else fails + return false; + } + + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is DipSwitch otherDipSwitch) + return ((Data.Models.Metadata.DipSwitch)_internal).Equals((Data.Models.Metadata.DipSwitch)otherDipSwitch._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/DipValue.cs b/SabreTools.Metadata.DatItems/Formats/DipValue.cs index 0f5f72c6..33d61db6 100644 --- a/SabreTools.Metadata.DatItems/Formats/DipValue.cs +++ b/SabreTools.Metadata.DatItems/Formats/DipValue.cs @@ -89,6 +89,36 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is DipValue otherDipValue) + return ((Data.Models.Metadata.DipValue)_internal).Equals((Data.Models.Metadata.DipValue)otherDipValue._internal); + + // Everything else fails + return false; + } + + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is DipValue otherDipValue) + return ((Data.Models.Metadata.DipValue)_internal).Equals((Data.Models.Metadata.DipValue)otherDipValue._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/Disk.cs b/SabreTools.Metadata.DatItems/Formats/Disk.cs index d143850e..dfa16d2f 100644 --- a/SabreTools.Metadata.DatItems/Formats/Disk.cs +++ b/SabreTools.Metadata.DatItems/Formats/Disk.cs @@ -173,6 +173,36 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Disk otherDisk) + return ((Data.Models.Metadata.Disk)_internal).Equals((Data.Models.Metadata.Disk)otherDisk._internal); + + // Everything else fails + return false; + } + + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Disk otherDisk) + return ((Data.Models.Metadata.Disk)_internal).Equals((Data.Models.Metadata.Disk)otherDisk._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/DiskArea.cs b/SabreTools.Metadata.DatItems/Formats/DiskArea.cs index 4bf14abc..4ef32fa8 100644 --- a/SabreTools.Metadata.DatItems/Formats/DiskArea.cs +++ b/SabreTools.Metadata.DatItems/Formats/DiskArea.cs @@ -78,6 +78,36 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is DiskArea otherDiskArea) + return ((Data.Models.Metadata.DiskArea)_internal).Equals((Data.Models.Metadata.DiskArea)otherDiskArea._internal); + + // Everything else fails + return false; + } + + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is DiskArea otherDiskArea) + return ((Data.Models.Metadata.DiskArea)_internal).Equals((Data.Models.Metadata.DiskArea)otherDiskArea._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/Display.cs b/SabreTools.Metadata.DatItems/Formats/Display.cs index cf2067ce..570ee2ba 100644 --- a/SabreTools.Metadata.DatItems/Formats/Display.cs +++ b/SabreTools.Metadata.DatItems/Formats/Display.cs @@ -167,6 +167,36 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Display otherDisplay) + return ((Data.Models.Metadata.Display)_internal).Equals((Data.Models.Metadata.Display)otherDisplay._internal); + + // Everything else fails + return false; + } + + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Display otherDisplay) + return ((Data.Models.Metadata.Display)_internal).Equals((Data.Models.Metadata.Display)otherDisplay._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/Driver.cs b/SabreTools.Metadata.DatItems/Formats/Driver.cs index 0950489d..82068bc4 100644 --- a/SabreTools.Metadata.DatItems/Formats/Driver.cs +++ b/SabreTools.Metadata.DatItems/Formats/Driver.cs @@ -126,6 +126,36 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Driver otherDriver) + return ((Data.Models.Metadata.Driver)_internal).Equals((Data.Models.Metadata.Driver)otherDriver._internal); + + // Everything else fails + return false; + } + + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Driver otherDriver) + return ((Data.Models.Metadata.Driver)_internal).Equals((Data.Models.Metadata.Driver)otherDriver._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/Extension.cs b/SabreTools.Metadata.DatItems/Formats/Extension.cs index 544d49a0..c9afcb81 100644 --- a/SabreTools.Metadata.DatItems/Formats/Extension.cs +++ b/SabreTools.Metadata.DatItems/Formats/Extension.cs @@ -60,6 +60,36 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Extension otherExtension) + return ((Data.Models.Metadata.Extension)_internal).Equals((Data.Models.Metadata.Extension)otherExtension._internal); + + // Everything else fails + return false; + } + + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Extension otherExtension) + return ((Data.Models.Metadata.Extension)_internal).Equals((Data.Models.Metadata.Extension)otherExtension._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/Feature.cs b/SabreTools.Metadata.DatItems/Formats/Feature.cs index 7c28d4f3..333794a3 100644 --- a/SabreTools.Metadata.DatItems/Formats/Feature.cs +++ b/SabreTools.Metadata.DatItems/Formats/Feature.cs @@ -84,6 +84,36 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Feature otherFeature) + return ((Data.Models.Metadata.Feature)_internal).Equals((Data.Models.Metadata.Feature)otherFeature._internal); + + // Everything else fails + return false; + } + + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Feature otherFeature) + return ((Data.Models.Metadata.Feature)_internal).Equals((Data.Models.Metadata.Feature)otherFeature._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/File.cs b/SabreTools.Metadata.DatItems/Formats/File.cs index 2f965764..af18a383 100644 --- a/SabreTools.Metadata.DatItems/Formats/File.cs +++ b/SabreTools.Metadata.DatItems/Formats/File.cs @@ -166,6 +166,20 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(ModelBackedItem? other) + { + // This isn't implemented, so always return false + return false; + } + + /// + public override bool Equals(ModelBackedItem? other) + { + // This isn't implemented, so always return false + return false; + } + /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/Info.cs b/SabreTools.Metadata.DatItems/Formats/Info.cs index 53c3c396..64480396 100644 --- a/SabreTools.Metadata.DatItems/Formats/Info.cs +++ b/SabreTools.Metadata.DatItems/Formats/Info.cs @@ -66,6 +66,36 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Info otherInfo) + return ((Data.Models.Metadata.Info)_internal).Equals((Data.Models.Metadata.Info)otherInfo._internal); + + // Everything else fails + return false; + } + + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Info otherInfo) + return ((Data.Models.Metadata.Info)_internal).Equals((Data.Models.Metadata.Info)otherInfo._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/Input.cs b/SabreTools.Metadata.DatItems/Formats/Input.cs index 1a7b877c..6dd2801c 100644 --- a/SabreTools.Metadata.DatItems/Formats/Input.cs +++ b/SabreTools.Metadata.DatItems/Formats/Input.cs @@ -108,6 +108,36 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Input otherInput) + return ((Data.Models.Metadata.Input)_internal).Equals((Data.Models.Metadata.Input)otherInput._internal); + + // Everything else fails + return false; + } + + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Input otherInput) + return ((Data.Models.Metadata.Input)_internal).Equals((Data.Models.Metadata.Input)otherInput._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/Instance.cs b/SabreTools.Metadata.DatItems/Formats/Instance.cs index d1b9d737..21de4134 100644 --- a/SabreTools.Metadata.DatItems/Formats/Instance.cs +++ b/SabreTools.Metadata.DatItems/Formats/Instance.cs @@ -66,6 +66,36 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Instance otherInstance) + return ((Data.Models.Metadata.Instance)_internal).Equals((Data.Models.Metadata.Instance)otherInstance._internal); + + // Everything else fails + return false; + } + + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Instance otherInstance) + return ((Data.Models.Metadata.Instance)_internal).Equals((Data.Models.Metadata.Instance)otherInstance._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/Media.cs b/SabreTools.Metadata.DatItems/Formats/Media.cs index d00f996d..0d389a02 100644 --- a/SabreTools.Metadata.DatItems/Formats/Media.cs +++ b/SabreTools.Metadata.DatItems/Formats/Media.cs @@ -118,6 +118,36 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Media otherMedia) + return ((Data.Models.Metadata.Media)_internal).Equals((Data.Models.Metadata.Media)otherMedia._internal); + + // Everything else fails + return false; + } + + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Media otherMedia) + return ((Data.Models.Metadata.Media)_internal).Equals((Data.Models.Metadata.Media)otherMedia._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/Part.cs b/SabreTools.Metadata.DatItems/Formats/Part.cs index 5c6a4d8c..36bf96b3 100644 --- a/SabreTools.Metadata.DatItems/Formats/Part.cs +++ b/SabreTools.Metadata.DatItems/Formats/Part.cs @@ -118,6 +118,36 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Part otherPart) + return ((Data.Models.Metadata.Part)_internal).Equals((Data.Models.Metadata.Part)otherPart._internal); + + // Everything else fails + return false; + } + + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Part otherPart) + return ((Data.Models.Metadata.Part)_internal).Equals((Data.Models.Metadata.Part)otherPart._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/PartFeature.cs b/SabreTools.Metadata.DatItems/Formats/PartFeature.cs index 1db21084..4d8c1d7c 100644 --- a/SabreTools.Metadata.DatItems/Formats/PartFeature.cs +++ b/SabreTools.Metadata.DatItems/Formats/PartFeature.cs @@ -89,6 +89,36 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is PartFeature otherPartFeature) + return ((Data.Models.Metadata.Feature)_internal).Equals((Data.Models.Metadata.Feature)otherPartFeature._internal); + + // Everything else fails + return false; + } + + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is PartFeature otherPartFeature) + return ((Data.Models.Metadata.Feature)_internal).Equals((Data.Models.Metadata.Feature)otherPartFeature._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/Port.cs b/SabreTools.Metadata.DatItems/Formats/Port.cs index cd453bb2..b4945a42 100644 --- a/SabreTools.Metadata.DatItems/Formats/Port.cs +++ b/SabreTools.Metadata.DatItems/Formats/Port.cs @@ -78,6 +78,36 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Port otherPort) + return ((Data.Models.Metadata.Port)_internal).Equals((Data.Models.Metadata.Port)otherPort._internal); + + // Everything else fails + return false; + } + + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Port otherPort) + return ((Data.Models.Metadata.Port)_internal).Equals((Data.Models.Metadata.Port)otherPort._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/RamOption.cs b/SabreTools.Metadata.DatItems/Formats/RamOption.cs index f9d20c76..96ef6500 100644 --- a/SabreTools.Metadata.DatItems/Formats/RamOption.cs +++ b/SabreTools.Metadata.DatItems/Formats/RamOption.cs @@ -72,6 +72,36 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is RamOption otherRamOption) + return ((Data.Models.Metadata.RamOption)_internal).Equals((Data.Models.Metadata.RamOption)otherRamOption._internal); + + // Everything else fails + return false; + } + + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is RamOption otherRamOption) + return ((Data.Models.Metadata.RamOption)_internal).Equals((Data.Models.Metadata.RamOption)otherRamOption._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/Release.cs b/SabreTools.Metadata.DatItems/Formats/Release.cs index 1830b27d..3e478f1a 100644 --- a/SabreTools.Metadata.DatItems/Formats/Release.cs +++ b/SabreTools.Metadata.DatItems/Formats/Release.cs @@ -84,6 +84,36 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Release otherRelease) + return ((Data.Models.Metadata.Release)_internal).Equals((Data.Models.Metadata.Release)otherRelease._internal); + + // Everything else fails + return false; + } + + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Release otherRelease) + return ((Data.Models.Metadata.Release)_internal).Equals((Data.Models.Metadata.Release)otherRelease._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs b/SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs index af4669f9..4b1484ee 100644 --- a/SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs +++ b/SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs @@ -149,6 +149,36 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is ReleaseDetails otherReleaseDetails) + return ((Data.Models.Metadata.ReleaseDetails)_internal).Equals((Data.Models.Metadata.ReleaseDetails)otherReleaseDetails._internal); + + // Everything else fails + return false; + } + + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is ReleaseDetails otherReleaseDetails) + return ((Data.Models.Metadata.ReleaseDetails)_internal).Equals((Data.Models.Metadata.ReleaseDetails)otherReleaseDetails._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/Rom.cs b/SabreTools.Metadata.DatItems/Formats/Rom.cs index 93de0bb7..511b44b3 100644 --- a/SabreTools.Metadata.DatItems/Formats/Rom.cs +++ b/SabreTools.Metadata.DatItems/Formats/Rom.cs @@ -418,6 +418,36 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Rom otherRom) + return ((Data.Models.Metadata.Rom)_internal).Equals((Data.Models.Metadata.Rom)otherRom._internal); + + // Everything else fails + return false; + } + + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Rom otherRom) + return ((Data.Models.Metadata.Rom)_internal).Equals((Data.Models.Metadata.Rom)otherRom._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/Sample.cs b/SabreTools.Metadata.DatItems/Formats/Sample.cs index d75fecba..9838e576 100644 --- a/SabreTools.Metadata.DatItems/Formats/Sample.cs +++ b/SabreTools.Metadata.DatItems/Formats/Sample.cs @@ -60,6 +60,36 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Sample otherSample) + return ((Data.Models.Metadata.Sample)_internal).Equals((Data.Models.Metadata.Sample)otherSample._internal); + + // Everything else fails + return false; + } + + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Sample otherSample) + return ((Data.Models.Metadata.Sample)_internal).Equals((Data.Models.Metadata.Sample)otherSample._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/Serials.cs b/SabreTools.Metadata.DatItems/Formats/Serials.cs index 0926c140..ea942ff1 100644 --- a/SabreTools.Metadata.DatItems/Formats/Serials.cs +++ b/SabreTools.Metadata.DatItems/Formats/Serials.cs @@ -138,6 +138,36 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Serials otherSerials) + return ((Data.Models.Metadata.Serials)_internal).Equals((Data.Models.Metadata.Serials)otherSerials._internal); + + // Everything else fails + return false; + } + + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Serials otherSerials) + return ((Data.Models.Metadata.Serials)_internal).Equals((Data.Models.Metadata.Serials)otherSerials._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs b/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs index 8f0926c5..baab238c 100644 --- a/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs +++ b/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs @@ -66,6 +66,36 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is SharedFeat otherSharedFeat) + return ((Data.Models.Metadata.SharedFeat)_internal).Equals((Data.Models.Metadata.SharedFeat)otherSharedFeat._internal); + + // Everything else fails + return false; + } + + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is SharedFeat otherSharedFeat) + return ((Data.Models.Metadata.SharedFeat)_internal).Equals((Data.Models.Metadata.SharedFeat)otherSharedFeat._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/Slot.cs b/SabreTools.Metadata.DatItems/Formats/Slot.cs index 6c5b58b3..1f8d994a 100644 --- a/SabreTools.Metadata.DatItems/Formats/Slot.cs +++ b/SabreTools.Metadata.DatItems/Formats/Slot.cs @@ -78,6 +78,36 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Slot otherSlot) + return ((Data.Models.Metadata.Slot)_internal).Equals((Data.Models.Metadata.Slot)otherSlot._internal); + + // Everything else fails + return false; + } + + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Slot otherSlot) + return ((Data.Models.Metadata.Slot)_internal).Equals((Data.Models.Metadata.Slot)otherSlot._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/SlotOption.cs b/SabreTools.Metadata.DatItems/Formats/SlotOption.cs index 3f8fbb11..9e6b24ff 100644 --- a/SabreTools.Metadata.DatItems/Formats/SlotOption.cs +++ b/SabreTools.Metadata.DatItems/Formats/SlotOption.cs @@ -72,6 +72,36 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is SlotOption otherSlotOption) + return ((Data.Models.Metadata.SlotOption)_internal).Equals((Data.Models.Metadata.SlotOption)otherSlotOption._internal); + + // Everything else fails + return false; + } + + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is SlotOption otherSlotOption) + return ((Data.Models.Metadata.SlotOption)_internal).Equals((Data.Models.Metadata.SlotOption)otherSlotOption._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs b/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs index e705d84a..54b87152 100644 --- a/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs +++ b/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs @@ -78,6 +78,36 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is SoftwareList otherSoftwareList) + return ((Data.Models.Metadata.SoftwareList)_internal).Equals((Data.Models.Metadata.SoftwareList)otherSoftwareList._internal); + + // Everything else fails + return false; + } + + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is SoftwareList otherSoftwareList) + return ((Data.Models.Metadata.SoftwareList)_internal).Equals((Data.Models.Metadata.SoftwareList)otherSoftwareList._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/Sound.cs b/SabreTools.Metadata.DatItems/Formats/Sound.cs index feab808a..b0fa077e 100644 --- a/SabreTools.Metadata.DatItems/Formats/Sound.cs +++ b/SabreTools.Metadata.DatItems/Formats/Sound.cs @@ -60,6 +60,36 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Sound otherSound) + return ((Data.Models.Metadata.Sound)_internal).Equals((Data.Models.Metadata.Sound)otherSound._internal); + + // Everything else fails + return false; + } + + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is Sound otherSound) + return ((Data.Models.Metadata.Sound)_internal).Equals((Data.Models.Metadata.Sound)otherSound._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/SourceDetails.cs b/SabreTools.Metadata.DatItems/Formats/SourceDetails.cs index 7f754d0b..eebdc473 100644 --- a/SabreTools.Metadata.DatItems/Formats/SourceDetails.cs +++ b/SabreTools.Metadata.DatItems/Formats/SourceDetails.cs @@ -198,6 +198,36 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is SourceDetails otherSourceDetails) + return ((Data.Models.Metadata.SourceDetails)_internal).Equals((Data.Models.Metadata.SourceDetails)otherSourceDetails._internal); + + // Everything else fails + return false; + } + + /// + public override bool Equals(ModelBackedItem? other) + { + // If the other item is null + if (other is null) + return false; + + // If the type matches + if (other is SourceDetails otherSourceDetails) + return ((Data.Models.Metadata.SourceDetails)_internal).Equals((Data.Models.Metadata.SourceDetails)otherSourceDetails._internal); + + // Everything else fails + return false; + } + /// public override bool Equals(DatItem? other) { From 3b2b4bc5254bbd0c76a377ba9db51c21d0d404ea Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sat, 4 Apr 2026 20:35:57 -0400 Subject: [PATCH 099/142] Notes --- SabreTools.Data.Models/Metadata/DictionaryBase.cs | 1 + SabreTools.Metadata/ModelBackedItemT.cs | 1 + 2 files changed, 2 insertions(+) diff --git a/SabreTools.Data.Models/Metadata/DictionaryBase.cs b/SabreTools.Data.Models/Metadata/DictionaryBase.cs index 55c2f733..9aec47bd 100644 --- a/SabreTools.Data.Models/Metadata/DictionaryBase.cs +++ b/SabreTools.Data.Models/Metadata/DictionaryBase.cs @@ -157,6 +157,7 @@ namespace SabreTools.Data.Models.Metadata /// /// Read a key as a string[], returning null on error /// + /// TODO: Determine if this can be removed public string[]? ReadStringArray(string key) { if (!ValidateReadKey(key)) diff --git a/SabreTools.Metadata/ModelBackedItemT.cs b/SabreTools.Metadata/ModelBackedItemT.cs index 60afca9c..a80fe78b 100644 --- a/SabreTools.Metadata/ModelBackedItemT.cs +++ b/SabreTools.Metadata/ModelBackedItemT.cs @@ -75,6 +75,7 @@ namespace SabreTools.Metadata /// /// Field to retrieve /// Value from the field, if possible + /// TODO: Determine if this can be removed public string[]? ReadStringArray(string fieldName) => _internal.ReadStringArray(fieldName); From 0b99602bc72391fd8e60f5ed72894b8abe8daa7a Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sat, 4 Apr 2026 21:17:28 -0400 Subject: [PATCH 100/142] Convert Metadata file keys to proper properties --- .../Metadata/MetadataFile.cs | 18 +--- .../DatFileTests.FromMetadata.cs | 8 +- .../DatFileTests.ToMetadata.cs | 4 +- .../DatFile.FromMetadata.cs | 6 +- .../DatFile.ToMetadata.cs | 8 +- SabreTools.Metadata.Filter/FilterKey.cs | 8 +- SabreTools.Metadata.Filter/FilterRunner.cs | 16 ++-- .../ArchiveDotOrg.Deserializer.cs | 2 +- .../ArchiveDotOrg.Serializer.cs | 7 +- .../AttractMode.Deserializer.cs | 4 +- .../AttractMode.Serializer.cs | 12 +-- .../ClrMamePro.Deserializer.cs | 11 +-- .../ClrMamePro.Serializer.cs | 14 +-- .../DosCenter.Deserializer.cs | 4 +- .../DosCenter.Serializer.cs | 12 +-- .../EverdriveSMDB.Deserializer.cs | 2 +- .../EverdriveSMDB.Serializer.cs | 7 +- .../Hashfile.Deserializer.cs | 2 +- .../Hashfile.Serializer.cs | 4 +- .../Listrom.Deserializer.cs | 2 +- .../Listrom.Serializer.cs | 7 +- .../Listxml.Deserializer.cs | 4 +- .../Listxml.Serializer.cs | 92 ++++--------------- .../Logiqx.Deserializer.cs | 4 +- .../Logiqx.Serializer.cs | 4 +- .../M1.Deserializer.cs | 4 +- .../M1.Serializer.cs | 7 +- .../Mess.Deserializer.cs | 4 +- .../Mess.Serializer.cs | 7 +- .../OfflineList.Deserializer.cs | 4 +- .../OfflineList.Serializer.cs | 7 +- .../OpenMSX.Deserializer.cs | 4 +- .../OpenMSX.Serializer.cs | 12 +-- .../RomCenter.Deserializer.cs | 4 +- .../RomCenter.Serializer.cs | 7 +- .../SeparatedValue.Deserializer.cs | 4 +- .../SeparatedValue.Serializer.cs | 7 +- .../SoftwareList.Deserializer.cs | 4 +- .../SoftwareList.Serializer.cs | 7 +- 39 files changed, 114 insertions(+), 230 deletions(-) diff --git a/SabreTools.Data.Models/Metadata/MetadataFile.cs b/SabreTools.Data.Models/Metadata/MetadataFile.cs index 1bdbef9a..efbfbd1c 100644 --- a/SabreTools.Data.Models/Metadata/MetadataFile.cs +++ b/SabreTools.Data.Models/Metadata/MetadataFile.cs @@ -4,22 +4,14 @@ namespace SabreTools.Data.Models.Metadata /// /// Format-agnostic representation of a full metadata file /// + /// TODO: ICloneable + /// TODO: IComparable public class MetadataFile : DictionaryBase { - #region Keys + public Header? Header { get; set; } - /// Machine[] - [NoFilter] - public const string MachineKey = "machine"; + public InfoSource? InfoSource { get; set; } - /// Header - [NoFilter] - public const string HeaderKey = "header"; - - /// InfoSource - [NoFilter] - public const string InfoSourceKey = "infosource"; - - #endregion + public Machine[]? Machine { get; set; } } } diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs index 92432131..cc83a9fd 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs @@ -41,8 +41,8 @@ namespace SabreTools.Metadata.DatFiles.Test Data.Models.Metadata.Machine[]? machines = null; Data.Models.Metadata.MetadataFile? item = new Data.Models.Metadata.MetadataFile { - [Data.Models.Metadata.MetadataFile.HeaderKey] = header, - [Data.Models.Metadata.MetadataFile.MachineKey] = machines, + Header = header, + Machine = machines, }; DatFile datFile = new Formats.Logiqx(null, useGame: false); @@ -59,8 +59,8 @@ namespace SabreTools.Metadata.DatFiles.Test Data.Models.Metadata.Machine[]? machines = [machine]; Data.Models.Metadata.MetadataFile? item = new Data.Models.Metadata.MetadataFile { - [Data.Models.Metadata.MetadataFile.HeaderKey] = header, - [Data.Models.Metadata.MetadataFile.MachineKey] = machines, + Header = header, + Machine = machines, }; DatFile datFile = new Formats.Logiqx(null, useGame: false); diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs index 8843f57f..a3045f03 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs @@ -32,7 +32,7 @@ namespace SabreTools.Metadata.DatFiles.Test Data.Models.Metadata.MetadataFile? actual = datFile.ConvertToMetadata(); Assert.NotNull(actual); - Data.Models.Metadata.Header? actualHeader = actual.Read(Data.Models.Metadata.MetadataFile.HeaderKey); + Data.Models.Metadata.Header? actualHeader = actual.Header; ValidateMetadataHeader(actualHeader); } @@ -80,7 +80,7 @@ namespace SabreTools.Metadata.DatFiles.Test Data.Models.Metadata.MetadataFile? actual = datFile.ConvertToMetadata(); Assert.NotNull(actual); - Data.Models.Metadata.Machine[]? machines = actual.ReadArray(Data.Models.Metadata.MetadataFile.MachineKey); + Data.Models.Metadata.Machine[]? machines = actual.Machine; Assert.NotNull(machines); Data.Models.Metadata.Machine actualMachine = Assert.Single(machines); ValidateMetadataMachine(actualMachine); diff --git a/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs b/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs index dba32835..2b27899d 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs @@ -35,7 +35,7 @@ namespace SabreTools.Metadata.DatFiles FilterRunner? filterRunner) { // If the metadata file is invalid, we can't do anything - if (item is null || item.Count == 0) + if (item is null) return; // Create an internal source and add to the dictionary @@ -43,12 +43,12 @@ namespace SabreTools.Metadata.DatFiles // long sourceIndex = AddSourceDB(source); // Get the header from the metadata - var header = item.Read(Data.Models.Metadata.MetadataFile.HeaderKey); + var header = item.Header; if (header is not null) ConvertHeader(header, keep); // Get the machines from the metadata - var machines = item.ReadArray(Data.Models.Metadata.MetadataFile.MachineKey); + var machines = item.Machine; if (machines is not null) ConvertMachines(machines, source, sourceIndex: 0, statsOnly, filterRunner); } diff --git a/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs b/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs index 601bab62..620517c6 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs @@ -24,12 +24,12 @@ namespace SabreTools.Metadata.DatFiles // Convert and assign the header var header = Header.GetInternalClone(); if (header is not null) - metadataFile[Data.Models.Metadata.MetadataFile.HeaderKey] = header; + metadataFile.Header = header; // Convert and assign the machines var machines = ConvertMachines(ignoreblanks); if (machines is not null) - metadataFile[Data.Models.Metadata.MetadataFile.MachineKey] = machines; + metadataFile.Machine = machines; return metadataFile; } @@ -49,12 +49,12 @@ namespace SabreTools.Metadata.DatFiles // Convert and assign the header var header = Header.GetInternalClone(); if (header is not null) - metadataFile[Data.Models.Metadata.MetadataFile.HeaderKey] = header; + metadataFile.Header = header; // Convert and assign the machines var machines = ConvertMachinesDB(ignoreblanks); if (machines is not null) - metadataFile[Data.Models.Metadata.MetadataFile.MachineKey] = machines; + metadataFile.Machine = machines; return metadataFile; } diff --git a/SabreTools.Metadata.Filter/FilterKey.cs b/SabreTools.Metadata.Filter/FilterKey.cs index 25555ac3..9a207be5 100644 --- a/SabreTools.Metadata.Filter/FilterKey.cs +++ b/SabreTools.Metadata.Filter/FilterKey.cs @@ -111,7 +111,7 @@ namespace SabreTools.Metadata.Filter if (constantMatch is not null) { // Return the sanitized ID - itemName = MetadataFile.HeaderKey; + itemName = "header"; fieldName = constantMatch; return true; } @@ -127,7 +127,7 @@ namespace SabreTools.Metadata.Filter if (propertyMatch is not null) { // Return the sanitized ID - itemName = MetadataFile.HeaderKey; + itemName = "header"; fieldName = propertyMatch.ToLowerInvariant(); return true; } @@ -151,7 +151,7 @@ namespace SabreTools.Metadata.Filter if (constantMatch is not null) { // Return the sanitized ID - itemName = MetadataFile.MachineKey; + itemName = "machine"; fieldName = constantMatch; return true; } @@ -167,7 +167,7 @@ namespace SabreTools.Metadata.Filter if (propertyMatch is not null) { // Return the sanitized ID - itemName = MetadataFile.MachineKey; + itemName = "machine"; fieldName = propertyMatch.ToLowerInvariant(); return true; } diff --git a/SabreTools.Metadata.Filter/FilterRunner.cs b/SabreTools.Metadata.Filter/FilterRunner.cs index ddbe82ee..440731a8 100644 --- a/SabreTools.Metadata.Filter/FilterRunner.cs +++ b/SabreTools.Metadata.Filter/FilterRunner.cs @@ -36,8 +36,8 @@ namespace SabreTools.Metadata.Filter { string? itemName = dictionaryBase switch { - Header => MetadataFile.HeaderKey, - Machine => MetadataFile.MachineKey, + Header => "header", + Machine => "machine", DatItem => TypeHelper.GetXmlRootAttributeElementName(dictionaryBase.GetType()), _ => null, }; @@ -73,12 +73,12 @@ namespace SabreTools.Metadata.Filter string key = filter.Key.ToString(); // Special case for machine types - if (filter.Key.ItemName == MetadataFile.MachineKey && filter.Key.FieldName == "isbios") - key = $"{MetadataFile.MachineKey}.COMBINEDTYPE"; - else if (filter.Key.ItemName == MetadataFile.MachineKey && filter.Key.FieldName == "isdevice") - key = $"{MetadataFile.MachineKey}.COMBINEDTYPE"; - else if (filter.Key.ItemName == MetadataFile.MachineKey && filter.Key.FieldName == "ismechanical") - key = $"{MetadataFile.MachineKey}.COMBINEDTYPE"; + if (filter.Key.ItemName == "machine" && filter.Key.FieldName == "isbios") + key = $"{"machine"}.COMBINEDTYPE"; + else if (filter.Key.ItemName == "machine" && filter.Key.FieldName == "isdevice") + key = $"{"machine"}.COMBINEDTYPE"; + else if (filter.Key.ItemName == "machine" && filter.Key.FieldName == "ismechanical") + key = $"{"machine"}.COMBINEDTYPE"; // Set the expected group type GroupType groupType = GroupType.OR; diff --git a/SabreTools.Serialization.CrossModel/ArchiveDotOrg.Deserializer.cs b/SabreTools.Serialization.CrossModel/ArchiveDotOrg.Deserializer.cs index fd4293da..8db234f7 100644 --- a/SabreTools.Serialization.CrossModel/ArchiveDotOrg.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/ArchiveDotOrg.Deserializer.cs @@ -14,7 +14,7 @@ namespace SabreTools.Serialization.CrossModel var files = new Files(); - var machines = obj.Read(Data.Models.Metadata.MetadataFile.MachineKey); + var machines = obj.Machine; var items = new List(); foreach (var machine in machines ?? []) { diff --git a/SabreTools.Serialization.CrossModel/ArchiveDotOrg.Serializer.cs b/SabreTools.Serialization.CrossModel/ArchiveDotOrg.Serializer.cs index 5e0125bc..d8cca52d 100644 --- a/SabreTools.Serialization.CrossModel/ArchiveDotOrg.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/ArchiveDotOrg.Serializer.cs @@ -14,14 +14,11 @@ namespace SabreTools.Serialization.CrossModel var metadataFile = new Data.Models.Metadata.MetadataFile { - [Data.Models.Metadata.MetadataFile.HeaderKey] = ConvertHeaderToInternalModel(), + Header = ConvertHeaderToInternalModel(), }; if (item?.File is not null && item.File.Length > 0) - { - metadataFile[Data.Models.Metadata.MetadataFile.MachineKey] - = Array.ConvertAll(item.File, ConvertMachineToInternalModel); - } + metadataFile.Machine = Array.ConvertAll(item.File, ConvertMachineToInternalModel); return metadataFile; } diff --git a/SabreTools.Serialization.CrossModel/AttractMode.Deserializer.cs b/SabreTools.Serialization.CrossModel/AttractMode.Deserializer.cs index 83db08db..dfd38d2f 100644 --- a/SabreTools.Serialization.CrossModel/AttractMode.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/AttractMode.Deserializer.cs @@ -12,10 +12,10 @@ namespace SabreTools.Serialization.CrossModel if (obj is null) return null; - var header = obj.Read(Data.Models.Metadata.MetadataFile.HeaderKey); + var header = obj.Header; var metadataFile = header is not null ? ConvertHeaderFromInternalModel(header) : new MetadataFile(); - var machines = obj.Read(Data.Models.Metadata.MetadataFile.MachineKey); + var machines = obj.Machine; var items = new List(); foreach (var machine in machines ?? []) { diff --git a/SabreTools.Serialization.CrossModel/AttractMode.Serializer.cs b/SabreTools.Serialization.CrossModel/AttractMode.Serializer.cs index db50c734..0e42ad1d 100644 --- a/SabreTools.Serialization.CrossModel/AttractMode.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/AttractMode.Serializer.cs @@ -13,14 +13,11 @@ namespace SabreTools.Serialization.CrossModel var metadataFile = new Data.Models.Metadata.MetadataFile { - [Data.Models.Metadata.MetadataFile.HeaderKey] = ConvertHeaderToInternalModel(obj), + Header = ConvertHeaderToInternalModel(obj), }; if (obj?.Row is not null && obj.Row.Length > 0) - { - metadataFile[Data.Models.Metadata.MetadataFile.MachineKey] - = Array.ConvertAll(obj.Row, ConvertMachineToInternalModel); - } + metadataFile.Machine = Array.ConvertAll(obj.Row, ConvertMachineToInternalModel); return metadataFile; } @@ -40,11 +37,8 @@ namespace SabreTools.Serialization.CrossModel /// /// Convert from to /// - private static Data.Models.Metadata.Machine? ConvertMachineToInternalModel(Row? item) + private static Data.Models.Metadata.Machine ConvertMachineToInternalModel(Row item) { - if (item is null) - return null; - var machine = new Data.Models.Metadata.Machine { Name = item.Name, diff --git a/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs b/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs index f4f87052..0b4d0200 100644 --- a/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs @@ -18,18 +18,15 @@ namespace SabreTools.Serialization.CrossModel var metadataFile = new MetadataFile(); - var header = obj.Read(Data.Models.Metadata.MetadataFile.HeaderKey); + var header = obj.Header; if (header is not null) metadataFile.ClrMamePro = ConvertHeaderFromInternalModel(header); - var machines = obj.Read(Data.Models.Metadata.MetadataFile.MachineKey); + var machines = obj.Machine; if (machines is not null && machines.Length > 0) - { - metadataFile.Game - = Array.ConvertAll(machines, m => ConvertMachineFromInternalModel(m, game)); - } + metadataFile.Game = Array.ConvertAll(machines, m => ConvertMachineFromInternalModel(m, game)); - var info = obj.Read(Data.Models.Metadata.MetadataFile.InfoSourceKey); + var info = obj.InfoSource; if (info is not null) metadataFile.Info = ConvertInfoSourceFromInternalModel(info); diff --git a/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs b/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs index ba6663f2..3aefbebf 100644 --- a/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs @@ -14,16 +14,13 @@ namespace SabreTools.Serialization.CrossModel var metadataFile = new Data.Models.Metadata.MetadataFile(); if (obj?.ClrMamePro is not null) - metadataFile[Data.Models.Metadata.MetadataFile.HeaderKey] = ConvertHeaderToInternalModel(obj.ClrMamePro); + metadataFile.Header = ConvertHeaderToInternalModel(obj.ClrMamePro); if (obj?.Game is not null && obj.Game.Length > 0) - { - metadataFile[Data.Models.Metadata.MetadataFile.MachineKey] - = Array.ConvertAll(obj.Game, ConvertMachineToInternalModel); - } + metadataFile.Machine = Array.ConvertAll(obj.Game, ConvertMachineToInternalModel); if (obj?.Info is not null) - metadataFile[Data.Models.Metadata.MetadataFile.InfoSourceKey] = ConvertInfoSourceToInternalModel(obj.Info); + metadataFile.InfoSource = ConvertInfoSourceToInternalModel(obj.Info); return metadataFile; } @@ -57,11 +54,8 @@ namespace SabreTools.Serialization.CrossModel /// /// Convert from to /// - private static Data.Models.Metadata.Machine? ConvertMachineToInternalModel(GameBase? item) + private static Data.Models.Metadata.Machine ConvertMachineToInternalModel(GameBase item) { - if (item is null) - return null; - var machine = new Data.Models.Metadata.Machine { Name = item.Name, diff --git a/SabreTools.Serialization.CrossModel/DosCenter.Deserializer.cs b/SabreTools.Serialization.CrossModel/DosCenter.Deserializer.cs index aee163a9..e3ea96f1 100644 --- a/SabreTools.Serialization.CrossModel/DosCenter.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/DosCenter.Deserializer.cs @@ -13,11 +13,11 @@ namespace SabreTools.Serialization.CrossModel var metadataFile = new MetadataFile(); - var header = obj.Read(Data.Models.Metadata.MetadataFile.HeaderKey); + var header = obj.Header; if (header is not null) metadataFile.DosCenter = ConvertHeaderFromInternalModel(header); - var machines = obj.Read(Data.Models.Metadata.MetadataFile.MachineKey); + var machines = obj.Machine; if (machines is not null && machines.Length > 0) metadataFile.Game = Array.ConvertAll(machines, ConvertMachineFromInternalModel); diff --git a/SabreTools.Serialization.CrossModel/DosCenter.Serializer.cs b/SabreTools.Serialization.CrossModel/DosCenter.Serializer.cs index 48aec589..de188ae3 100644 --- a/SabreTools.Serialization.CrossModel/DosCenter.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/DosCenter.Serializer.cs @@ -14,13 +14,10 @@ namespace SabreTools.Serialization.CrossModel var metadataFile = new Data.Models.Metadata.MetadataFile(); if (obj?.DosCenter is not null) - metadataFile[Data.Models.Metadata.MetadataFile.HeaderKey] = ConvertHeaderToInternalModel(obj.DosCenter); + metadataFile.Header = ConvertHeaderToInternalModel(obj.DosCenter); if (obj?.Game is not null && obj.Game.Length > 0) - { - metadataFile[Data.Models.Metadata.MetadataFile.MachineKey] - = Array.ConvertAll(obj.Game, ConvertMachineToInternalModel); - } + metadataFile.Machine = Array.ConvertAll(obj.Game, ConvertMachineToInternalModel); return metadataFile; } @@ -54,10 +51,7 @@ namespace SabreTools.Serialization.CrossModel }; if (item.File is not null && item.File.Length > 0) - { - machine.Rom - = Array.ConvertAll(item.File, ConvertToInternalModel); - } + machine.Rom = Array.ConvertAll(item.File, ConvertToInternalModel); return machine; } diff --git a/SabreTools.Serialization.CrossModel/EverdriveSMDB.Deserializer.cs b/SabreTools.Serialization.CrossModel/EverdriveSMDB.Deserializer.cs index 488275b9..cf3e9c11 100644 --- a/SabreTools.Serialization.CrossModel/EverdriveSMDB.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/EverdriveSMDB.Deserializer.cs @@ -14,7 +14,7 @@ namespace SabreTools.Serialization.CrossModel var metadataFile = new MetadataFile(); - var machines = obj.Read(Data.Models.Metadata.MetadataFile.MachineKey); + var machines = obj.Machine; var items = new List(); foreach (var machine in machines ?? []) { diff --git a/SabreTools.Serialization.CrossModel/EverdriveSMDB.Serializer.cs b/SabreTools.Serialization.CrossModel/EverdriveSMDB.Serializer.cs index 4dbc16a2..39e0029e 100644 --- a/SabreTools.Serialization.CrossModel/EverdriveSMDB.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/EverdriveSMDB.Serializer.cs @@ -13,14 +13,11 @@ namespace SabreTools.Serialization.CrossModel var metadataFile = new Data.Models.Metadata.MetadataFile { - [Data.Models.Metadata.MetadataFile.HeaderKey] = ConvertHeaderToInternalModel(), + Header = ConvertHeaderToInternalModel(), }; if (obj?.Row is not null && obj.Row.Length > 0) - { - metadataFile[Data.Models.Metadata.MetadataFile.MachineKey] - = Array.ConvertAll(obj.Row, ConvertMachineToInternalModel); - } + metadataFile.Machine = Array.ConvertAll(obj.Row, ConvertMachineToInternalModel); return metadataFile; } diff --git a/SabreTools.Serialization.CrossModel/Hashfile.Deserializer.cs b/SabreTools.Serialization.CrossModel/Hashfile.Deserializer.cs index e32eb948..73687d69 100644 --- a/SabreTools.Serialization.CrossModel/Hashfile.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Hashfile.Deserializer.cs @@ -18,7 +18,7 @@ namespace SabreTools.Serialization.CrossModel if (obj is null) return null; - var machines = obj.Read(Data.Models.Metadata.MetadataFile.MachineKey); + var machines = obj.Machine; if (machines is null || machines.Length == 0) return null; diff --git a/SabreTools.Serialization.CrossModel/Hashfile.Serializer.cs b/SabreTools.Serialization.CrossModel/Hashfile.Serializer.cs index 77124dda..5eba2478 100644 --- a/SabreTools.Serialization.CrossModel/Hashfile.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Hashfile.Serializer.cs @@ -13,11 +13,11 @@ namespace SabreTools.Serialization.CrossModel var metadataFile = new Data.Models.Metadata.MetadataFile { - [Data.Models.Metadata.MetadataFile.HeaderKey] = ConvertHeaderToInternalModel(), + Header = ConvertHeaderToInternalModel(), }; var machine = ConvertMachineToInternalModel(obj); - metadataFile[Data.Models.Metadata.MetadataFile.MachineKey] = new Data.Models.Metadata.Machine[] { machine }; + metadataFile.Machine = new Data.Models.Metadata.Machine[] { machine }; return metadataFile; } diff --git a/SabreTools.Serialization.CrossModel/Listrom.Deserializer.cs b/SabreTools.Serialization.CrossModel/Listrom.Deserializer.cs index f947f3c5..fe623002 100644 --- a/SabreTools.Serialization.CrossModel/Listrom.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Listrom.Deserializer.cs @@ -14,7 +14,7 @@ namespace SabreTools.Serialization.CrossModel var metadataFile = new MetadataFile(); - var machines = obj.Read(Data.Models.Metadata.MetadataFile.MachineKey); + var machines = obj.Machine; if (machines is not null && machines.Length > 0) metadataFile.Set = Array.ConvertAll(machines, ConvertMachineFromInternalModel); diff --git a/SabreTools.Serialization.CrossModel/Listrom.Serializer.cs b/SabreTools.Serialization.CrossModel/Listrom.Serializer.cs index 7c868a3a..11425615 100644 --- a/SabreTools.Serialization.CrossModel/Listrom.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Listrom.Serializer.cs @@ -14,14 +14,11 @@ namespace SabreTools.Serialization.CrossModel var metadataFile = new Data.Models.Metadata.MetadataFile { - [Data.Models.Metadata.MetadataFile.HeaderKey] = ConvertHeaderToInternalModel(), + Header = ConvertHeaderToInternalModel(), }; if (obj?.Set is not null && obj.Set.Length > 0) - { - metadataFile[Data.Models.Metadata.MetadataFile.MachineKey] - = Array.ConvertAll(obj.Set, ConvertMachineToInternalModel); - } + metadataFile.Machine = Array.ConvertAll(obj.Set, ConvertMachineToInternalModel); return metadataFile; } diff --git a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs index 2f670c2d..55e169d9 100644 --- a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs @@ -11,10 +11,10 @@ namespace SabreTools.Serialization.CrossModel if (obj is null) return null; - var header = obj.Read(Data.Models.Metadata.MetadataFile.HeaderKey); + var header = obj.Header; var mame = header is not null ? ConvertMameFromInternalModel(header) : new Mame(); - var machines = obj.Read(Data.Models.Metadata.MetadataFile.MachineKey); + var machines = obj.Machine; if (machines is not null && machines.Length > 0) mame.Game = Array.ConvertAll(machines, ConvertMachineFromInternalModel); diff --git a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs index 1989ec2c..a61e74f3 100644 --- a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs @@ -13,14 +13,11 @@ namespace SabreTools.Serialization.CrossModel var metadataFile = new Data.Models.Metadata.MetadataFile { - [Data.Models.Metadata.MetadataFile.HeaderKey] = ConvertHeaderToInternalModel(item), + Header = ConvertHeaderToInternalModel(item), }; if (item?.Game is not null && item.Game.Length > 0) - { - metadataFile[Data.Models.Metadata.MetadataFile.MachineKey] - = Array.ConvertAll(item.Game, ConvertMachineToInternalModel); - } + metadataFile.Machine = Array.ConvertAll(item.Game, ConvertMachineToInternalModel); return metadataFile; } @@ -62,52 +59,28 @@ namespace SabreTools.Serialization.CrossModel }; if (item.BiosSet is not null && item.BiosSet.Length > 0) - { - machine.BiosSet - = Array.ConvertAll(item.BiosSet, ConvertToInternalModel); - } + machine.BiosSet = Array.ConvertAll(item.BiosSet, ConvertToInternalModel); if (item.Rom is not null && item.Rom.Length > 0) - { - machine.Rom - = Array.ConvertAll(item.Rom, ConvertToInternalModel); - } + machine.Rom = Array.ConvertAll(item.Rom, ConvertToInternalModel); if (item.Disk is not null && item.Disk.Length > 0) - { - machine.Disk - = Array.ConvertAll(item.Disk, ConvertToInternalModel); - } + machine.Disk = Array.ConvertAll(item.Disk, ConvertToInternalModel); if (item.DeviceRef is not null && item.DeviceRef.Length > 0) - { - machine.DeviceRef - = Array.ConvertAll(item.DeviceRef, ConvertToInternalModel); - } + machine.DeviceRef = Array.ConvertAll(item.DeviceRef, ConvertToInternalModel); if (item.Sample is not null && item.Sample.Length > 0) - { - machine.Sample - = Array.ConvertAll(item.Sample, ConvertToInternalModel); - } + machine.Sample = Array.ConvertAll(item.Sample, ConvertToInternalModel); if (item.Chip is not null && item.Chip.Length > 0) - { - machine.Chip - = Array.ConvertAll(item.Chip, ConvertToInternalModel); - } + machine.Chip = Array.ConvertAll(item.Chip, ConvertToInternalModel); if (item.Display is not null && item.Display.Length > 0) - { - machine.Display - = Array.ConvertAll(item.Display, ConvertToInternalModel); - } + machine.Display = Array.ConvertAll(item.Display, ConvertToInternalModel); if (item.Video is not null && item.Video.Length > 0) - { - machine.Video - = Array.ConvertAll(item.Video, ConvertToInternalModel); - } + machine.Video = Array.ConvertAll(item.Video, ConvertToInternalModel); if (item.Sound is not null) machine.Sound = ConvertToInternalModel(item.Sound); @@ -116,61 +89,34 @@ namespace SabreTools.Serialization.CrossModel machine.Input = ConvertToInternalModel(item.Input); if (item.DipSwitch is not null && item.DipSwitch.Length > 0) - { - machine.DipSwitch - = Array.ConvertAll(item.DipSwitch, ConvertToInternalModel); - } + machine.DipSwitch = Array.ConvertAll(item.DipSwitch, ConvertToInternalModel); if (item.Configuration is not null && item.Configuration.Length > 0) - { - machine.Configuration - = Array.ConvertAll(item.Configuration, ConvertToInternalModel); - } + machine.Configuration = Array.ConvertAll(item.Configuration, ConvertToInternalModel); if (item.Port is not null && item.Port.Length > 0) - { - machine.Port - = Array.ConvertAll(item.Port, ConvertToInternalModel); - } + machine.Port = Array.ConvertAll(item.Port, ConvertToInternalModel); if (item.Adjuster is not null && item.Adjuster.Length > 0) - { - machine.Adjuster - = Array.ConvertAll(item.Adjuster, ConvertToInternalModel); - } + machine.Adjuster = Array.ConvertAll(item.Adjuster, ConvertToInternalModel); if (item.Driver is not null) machine.Driver = ConvertToInternalModel(item.Driver); if (item.Feature is not null && item.Feature.Length > 0) - { - machine.Feature - = Array.ConvertAll(item.Feature, ConvertToInternalModel); - } + machine.Feature = Array.ConvertAll(item.Feature, ConvertToInternalModel); if (item.Device is not null && item.Device.Length > 0) - { - machine.Device - = Array.ConvertAll(item.Device, ConvertToInternalModel); - } + machine.Device = Array.ConvertAll(item.Device, ConvertToInternalModel); if (item.Slot is not null && item.Slot.Length > 0) - { - machine.Slot - = Array.ConvertAll(item.Slot, ConvertToInternalModel); - } + machine.Slot = Array.ConvertAll(item.Slot, ConvertToInternalModel); if (item.SoftwareList is not null && item.SoftwareList.Length > 0) - { - machine.SoftwareList - = Array.ConvertAll(item.SoftwareList, ConvertToInternalModel); - } + machine.SoftwareList = Array.ConvertAll(item.SoftwareList, ConvertToInternalModel); if (item.RamOption is not null && item.RamOption.Length > 0) - { - machine.RamOption - = Array.ConvertAll(item.RamOption, ConvertToInternalModel); - } + machine.RamOption = Array.ConvertAll(item.RamOption, ConvertToInternalModel); return machine; } diff --git a/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs b/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs index ca81602e..712597a6 100644 --- a/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs @@ -18,7 +18,7 @@ namespace SabreTools.Serialization.CrossModel var datafile = new Datafile(); - var header = obj.Read(Data.Models.Metadata.MetadataFile.HeaderKey); + var header = obj.Header; if (header is not null) { datafile.Build = header.Build; @@ -27,7 +27,7 @@ namespace SabreTools.Serialization.CrossModel datafile.Header = ConvertHeaderFromInternalModel(header); } - var machines = obj.Read(Data.Models.Metadata.MetadataFile.MachineKey); + var machines = obj.Machine; if (machines is not null && machines.Length > 0) datafile.Game = Array.ConvertAll(machines, m => ConvertMachineFromInternalModel(m, game)); diff --git a/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs b/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs index b49e6291..df8c911f 100644 --- a/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs @@ -13,7 +13,7 @@ namespace SabreTools.Serialization.CrossModel var metadataFile = new Data.Models.Metadata.MetadataFile { - [Data.Models.Metadata.MetadataFile.HeaderKey] = ConvertHeaderToInternalModel(item), + Header = ConvertHeaderToInternalModel(item), }; var machines = new List(); @@ -27,7 +27,7 @@ namespace SabreTools.Serialization.CrossModel } if (machines.Count > 0) - metadataFile[Data.Models.Metadata.MetadataFile.MachineKey] = machines.ToArray(); + metadataFile.Machine = [.. machines]; return metadataFile; } diff --git a/SabreTools.Serialization.CrossModel/M1.Deserializer.cs b/SabreTools.Serialization.CrossModel/M1.Deserializer.cs index 224eecdd..13fe1576 100644 --- a/SabreTools.Serialization.CrossModel/M1.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/M1.Deserializer.cs @@ -10,10 +10,10 @@ namespace SabreTools.Serialization.CrossModel if (obj is null) return null; - var header = obj.Read(Data.Models.Metadata.MetadataFile.HeaderKey); + var header = obj.Header; var m1 = header is not null ? ConvertM1FromInternalModel(header) : new Data.Models.Listxml.M1(); - var machines = obj.Read(Data.Models.Metadata.MetadataFile.MachineKey); + var machines = obj.Machine; if (machines is not null && machines.Length > 0) m1.Game = Array.ConvertAll(machines, Listxml.ConvertMachineFromInternalModel); diff --git a/SabreTools.Serialization.CrossModel/M1.Serializer.cs b/SabreTools.Serialization.CrossModel/M1.Serializer.cs index 4f5cc631..26c28362 100644 --- a/SabreTools.Serialization.CrossModel/M1.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/M1.Serializer.cs @@ -12,14 +12,11 @@ namespace SabreTools.Serialization.CrossModel var metadataFile = new Data.Models.Metadata.MetadataFile { - [Data.Models.Metadata.MetadataFile.HeaderKey] = ConvertHeaderToInternalModel(item), + Header = ConvertHeaderToInternalModel(item), }; if (item?.Game is not null && item.Game.Length > 0) - { - metadataFile[Data.Models.Metadata.MetadataFile.MachineKey] - = Array.ConvertAll(item.Game, Listxml.ConvertMachineToInternalModel); - } + metadataFile.Machine = Array.ConvertAll(item.Game, Listxml.ConvertMachineToInternalModel); return metadataFile; } diff --git a/SabreTools.Serialization.CrossModel/Mess.Deserializer.cs b/SabreTools.Serialization.CrossModel/Mess.Deserializer.cs index b9868ff1..7ee53aa4 100644 --- a/SabreTools.Serialization.CrossModel/Mess.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Mess.Deserializer.cs @@ -10,10 +10,10 @@ namespace SabreTools.Serialization.CrossModel if (obj is null) return null; - var header = obj.Read(Data.Models.Metadata.MetadataFile.HeaderKey); + var header = obj.Header; var m1 = header is not null ? ConvertMessFromInternalModel(header) : new Data.Models.Listxml.Mess(); - var machines = obj.Read(Data.Models.Metadata.MetadataFile.MachineKey); + var machines = obj.Machine; if (machines is not null && machines.Length > 0) m1.Game = Array.ConvertAll(machines, Listxml.ConvertMachineFromInternalModel); diff --git a/SabreTools.Serialization.CrossModel/Mess.Serializer.cs b/SabreTools.Serialization.CrossModel/Mess.Serializer.cs index 05472a90..a148c625 100644 --- a/SabreTools.Serialization.CrossModel/Mess.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Mess.Serializer.cs @@ -12,14 +12,11 @@ namespace SabreTools.Serialization.CrossModel var metadataFile = new Data.Models.Metadata.MetadataFile { - [Data.Models.Metadata.MetadataFile.HeaderKey] = ConvertHeaderToInternalModel(item), + Header = ConvertHeaderToInternalModel(item), }; if (item?.Game is not null && item.Game.Length > 0) - { - metadataFile[Data.Models.Metadata.MetadataFile.MachineKey] - = Array.ConvertAll(item.Game, Listxml.ConvertMachineToInternalModel); - } + metadataFile.Machine = Array.ConvertAll(item.Game, Listxml.ConvertMachineToInternalModel); return metadataFile; } diff --git a/SabreTools.Serialization.CrossModel/OfflineList.Deserializer.cs b/SabreTools.Serialization.CrossModel/OfflineList.Deserializer.cs index 848cb263..35e03656 100644 --- a/SabreTools.Serialization.CrossModel/OfflineList.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/OfflineList.Deserializer.cs @@ -11,10 +11,10 @@ namespace SabreTools.Serialization.CrossModel if (obj is null) return null; - var header = obj.Read(Data.Models.Metadata.MetadataFile.HeaderKey); + var header = obj.Header; var dat = header is not null ? ConvertHeaderFromInternalModel(header) : new Dat(); - var machines = obj.Read(Data.Models.Metadata.MetadataFile.MachineKey); + var machines = obj.Machine; if (machines is not null && machines.Length > 0) { dat.Games = new Games diff --git a/SabreTools.Serialization.CrossModel/OfflineList.Serializer.cs b/SabreTools.Serialization.CrossModel/OfflineList.Serializer.cs index 98984444..3da54c2d 100644 --- a/SabreTools.Serialization.CrossModel/OfflineList.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/OfflineList.Serializer.cs @@ -13,14 +13,11 @@ namespace SabreTools.Serialization.CrossModel var metadataFile = new Data.Models.Metadata.MetadataFile { - [Data.Models.Metadata.MetadataFile.HeaderKey] = ConvertHeaderToInternalModel(item), + Header = ConvertHeaderToInternalModel(item), }; if (item?.Games?.Game is not null && item.Games.Game.Length > 0) - { - metadataFile[Data.Models.Metadata.MetadataFile.MachineKey] - = Array.ConvertAll(item.Games.Game, ConvertMachineToInternalModel); - } + metadataFile.Machine = Array.ConvertAll(item.Games.Game, ConvertMachineToInternalModel); return metadataFile; } diff --git a/SabreTools.Serialization.CrossModel/OpenMSX.Deserializer.cs b/SabreTools.Serialization.CrossModel/OpenMSX.Deserializer.cs index 60832b07..0a021bb6 100644 --- a/SabreTools.Serialization.CrossModel/OpenMSX.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/OpenMSX.Deserializer.cs @@ -11,10 +11,10 @@ namespace SabreTools.Serialization.CrossModel if (obj is null) return null; - var header = obj.Read(Data.Models.Metadata.MetadataFile.HeaderKey); + var header = obj.Header; var softwareDb = header is not null ? ConvertHeaderFromInternalModel(header) : new SoftwareDb(); - var machines = obj.Read(Data.Models.Metadata.MetadataFile.MachineKey); + var machines = obj.Machine; if (machines is not null && machines.Length > 0) softwareDb.Software = Array.ConvertAll(machines, ConvertMachineFromInternalModel); diff --git a/SabreTools.Serialization.CrossModel/OpenMSX.Serializer.cs b/SabreTools.Serialization.CrossModel/OpenMSX.Serializer.cs index 9565e6d6..e3bb4a66 100644 --- a/SabreTools.Serialization.CrossModel/OpenMSX.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/OpenMSX.Serializer.cs @@ -13,14 +13,11 @@ namespace SabreTools.Serialization.CrossModel var metadataFile = new Data.Models.Metadata.MetadataFile { - [Data.Models.Metadata.MetadataFile.HeaderKey] = ConvertHeaderToInternalModel(item), + Header = ConvertHeaderToInternalModel(item), }; if (item?.Software is not null && item.Software.Length > 0) - { - metadataFile[Data.Models.Metadata.MetadataFile.MachineKey] - = Array.ConvertAll(item.Software, ConvertMachineToInternalModel); - } + metadataFile.Machine = Array.ConvertAll(item.Software, ConvertMachineToInternalModel); return metadataFile; } @@ -53,10 +50,7 @@ namespace SabreTools.Serialization.CrossModel }; if (item.Dump is not null && item.Dump.Length > 0) - { - machine.Dump - = Array.ConvertAll(item.Dump, ConvertToInternalModel); - } + machine.Dump = Array.ConvertAll(item.Dump, ConvertToInternalModel); return machine; } diff --git a/SabreTools.Serialization.CrossModel/RomCenter.Deserializer.cs b/SabreTools.Serialization.CrossModel/RomCenter.Deserializer.cs index 48ec773c..732c960e 100644 --- a/SabreTools.Serialization.CrossModel/RomCenter.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/RomCenter.Deserializer.cs @@ -12,10 +12,10 @@ namespace SabreTools.Serialization.CrossModel if (obj is null) return null; - var header = obj.Read(Data.Models.Metadata.MetadataFile.HeaderKey); + var header = obj.Header; var metadataFile = header is not null ? ConvertHeaderFromInternalModel(header) : new MetadataFile(); - var machines = obj.Read(Data.Models.Metadata.MetadataFile.MachineKey); + var machines = obj.Machine; var items = new List(); foreach (var machine in machines ?? []) { diff --git a/SabreTools.Serialization.CrossModel/RomCenter.Serializer.cs b/SabreTools.Serialization.CrossModel/RomCenter.Serializer.cs index 19c438ee..27c60028 100644 --- a/SabreTools.Serialization.CrossModel/RomCenter.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/RomCenter.Serializer.cs @@ -13,14 +13,11 @@ namespace SabreTools.Serialization.CrossModel var metadataFile = new Data.Models.Metadata.MetadataFile { - [Data.Models.Metadata.MetadataFile.HeaderKey] = ConvertHeaderToInternalModel(obj), + Header = ConvertHeaderToInternalModel(obj), }; if (obj?.Games?.Rom is not null && obj.Games.Rom.Length > 0) - { - metadataFile[Data.Models.Metadata.MetadataFile.MachineKey] - = Array.ConvertAll(obj.Games.Rom, ConvertMachineToInternalModel); - } + metadataFile.Machine = Array.ConvertAll(obj.Games.Rom, ConvertMachineToInternalModel); return metadataFile; } diff --git a/SabreTools.Serialization.CrossModel/SeparatedValue.Deserializer.cs b/SabreTools.Serialization.CrossModel/SeparatedValue.Deserializer.cs index 5a261aa7..c5861300 100644 --- a/SabreTools.Serialization.CrossModel/SeparatedValue.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/SeparatedValue.Deserializer.cs @@ -12,10 +12,10 @@ namespace SabreTools.Serialization.CrossModel if (obj is null) return null; - var header = obj.Read(Data.Models.Metadata.MetadataFile.HeaderKey); + var header = obj.Header; var metadataFile = header is not null ? ConvertHeaderFromInternalModel(header) : new MetadataFile(); - var machines = obj.Read(Data.Models.Metadata.MetadataFile.MachineKey); + var machines = obj.Machine; var items = new List(); foreach (var machine in machines ?? []) { diff --git a/SabreTools.Serialization.CrossModel/SeparatedValue.Serializer.cs b/SabreTools.Serialization.CrossModel/SeparatedValue.Serializer.cs index 23e53f73..947eb8b9 100644 --- a/SabreTools.Serialization.CrossModel/SeparatedValue.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/SeparatedValue.Serializer.cs @@ -13,14 +13,11 @@ namespace SabreTools.Serialization.CrossModel var metadataFile = new Data.Models.Metadata.MetadataFile { - [Data.Models.Metadata.MetadataFile.HeaderKey] = ConvertHeaderToInternalModel(obj), + Header = ConvertHeaderToInternalModel(obj), }; if (obj?.Row is not null && obj.Row.Length > 0) - { - metadataFile[Data.Models.Metadata.MetadataFile.MachineKey] - = Array.ConvertAll(obj.Row, ConvertMachineToInternalModel); - } + metadataFile.Machine = Array.ConvertAll(obj.Row, ConvertMachineToInternalModel); return metadataFile; } diff --git a/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs b/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs index 0f1b8b4b..5da779d7 100644 --- a/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs @@ -11,10 +11,10 @@ namespace SabreTools.Serialization.CrossModel if (obj is null) return null; - var header = obj.Read(Data.Models.Metadata.MetadataFile.HeaderKey); + var header = obj.Header; var metadataFile = header is not null ? ConvertHeaderFromInternalModel(header) : new Data.Models.SoftwareList.SoftwareList(); - var machines = obj.Read(Data.Models.Metadata.MetadataFile.MachineKey); + var machines = obj.Machine; if (machines is not null && machines.Length > 0) metadataFile.Software = Array.ConvertAll(machines, ConvertMachineFromInternalModel); diff --git a/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs b/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs index 3c64bd17..c5625a60 100644 --- a/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs @@ -13,14 +13,11 @@ namespace SabreTools.Serialization.CrossModel var metadataFile = new Data.Models.Metadata.MetadataFile { - [Data.Models.Metadata.MetadataFile.HeaderKey] = ConvertHeaderToInternalModel(item), + Header = ConvertHeaderToInternalModel(item), }; if (item?.Software is not null && item.Software.Length > 0) - { - metadataFile[Data.Models.Metadata.MetadataFile.MachineKey] - = Array.ConvertAll(item.Software, ConvertMachineToInternalModel); - } + metadataFile.Machine = Array.ConvertAll(item.Software, ConvertMachineToInternalModel); return metadataFile; } From e31be8383243d122334625b5c46545a70cf20740 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sat, 4 Apr 2026 22:31:23 -0400 Subject: [PATCH 101/142] RomProperties, no, not that one --- .../MetadataExtensionsTests.cs | 2168 ++++++++--------- .../MetadataExtensions.cs | 250 +- SabreTools.Data.Models/Metadata/Rom.cs | 564 ++--- .../DatFileTests.Filtering.cs | 22 +- .../DatFileTests.FromMetadata.cs | 332 +-- .../DatFileTests.Splitting.cs | 224 +- .../DatFileTests.ToMetadata.cs | 166 +- .../DatFileTests.cs | 434 ++-- .../DatStatisticsTests.cs | 26 +- .../FormatsTests.cs | 54 +- .../ItemDictionaryDBTests.cs | 153 +- .../ItemDictionaryTests.cs | 181 +- .../DatFile.FromMetadata.cs | 11 + .../DatFile.Splitting.cs | 9 +- .../DatFile.ToMetadata.cs | 58 +- SabreTools.Metadata.DatFiles/DatFile.cs | 95 +- SabreTools.Metadata.DatFiles/DatStatistics.cs | 52 +- .../Formats/ClrMamePro.cs | 28 +- .../Formats/DosCenter.cs | 8 +- .../Formats/EverdriveSmdb.cs | 16 +- .../Formats/Listrom.cs | 8 +- .../Formats/Listxml.cs | 6 +- .../Formats/Logiqx.cs | 28 +- .../Formats/Md2File.cs | 4 +- .../Formats/Md4File.cs | 4 +- .../Formats/Md5File.cs | 4 +- .../Formats/OfflineList.cs | 4 +- .../Formats/OpenMSX.cs | 4 +- .../Formats/RipeMD128File.cs | 4 +- .../Formats/RipeMD160File.cs | 4 +- .../Formats/RomCenter.cs | 4 +- .../Formats/SeparatedValue.cs | 16 +- .../Formats/SfvFile.cs | 4 +- .../Formats/Sha1File.cs | 4 +- .../Formats/Sha256File.cs | 4 +- .../Formats/Sha384File.cs | 4 +- .../Formats/Sha512File.cs | 4 +- .../Formats/SpamSumFile.cs | 4 +- .../ItemDictionary.cs | 30 +- .../ItemDictionaryDB.cs | 30 +- .../DatItemTests.cs | 44 +- .../Formats/DiskTests.cs | 8 +- .../Formats/FileTests.cs | 8 +- .../Formats/MediaTests.cs | 8 +- .../Formats/RomTests.cs | 982 ++++---- SabreTools.Metadata.DatItems/Formats/File.cs | 8 +- SabreTools.Metadata.DatItems/Formats/Rom.cs | 657 ++++- .../FilterRunnerTests.cs | 8 +- SabreTools.Metadata.Filter/FilterObject.cs | 249 ++ .../ModelBackedItemTests.cs | 2 +- .../ArchiveDotOrg.Deserializer.cs | 114 +- .../ArchiveDotOrg.Serializer.cs | 114 +- .../AttractMode.Deserializer.cs | 4 +- .../AttractMode.Serializer.cs | 4 +- .../ClrMamePro.Deserializer.cs | 44 +- .../ClrMamePro.Serializer.cs | 44 +- .../DosCenter.Deserializer.cs | 6 +- .../DosCenter.Serializer.cs | 6 +- .../EverdriveSMDB.Deserializer.cs | 8 +- .../EverdriveSMDB.Serializer.cs | 8 +- .../Hashfile.Deserializer.cs | 22 +- .../Hashfile.Serializer.cs | 22 +- .../Listrom.Deserializer.cs | 4 +- .../Listrom.Serializer.cs | 4 +- .../Listxml.Deserializer.cs | 12 +- .../Listxml.Serializer.cs | 12 +- .../Logiqx.Deserializer.cs | 38 +- .../Logiqx.Serializer.cs | 38 +- .../OfflineList.Deserializer.cs | 4 +- .../OfflineList.Serializer.cs | 4 +- .../OpenMSX.Deserializer.cs | 24 +- .../OpenMSX.Serializer.cs | 8 +- .../RomCenter.Deserializer.cs | 4 +- .../RomCenter.Serializer.cs | 4 +- .../SeparatedValue.Deserializer.cs | 14 +- .../SeparatedValue.Serializer.cs | 14 +- .../SoftwareList.Deserializer.cs | 8 +- .../SoftwareList.Serializer.cs | 8 +- 78 files changed, 4187 insertions(+), 3408 deletions(-) diff --git a/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs b/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs index 16b57fac..e7d0fe01 100644 --- a/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs +++ b/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs @@ -15,15 +15,14 @@ namespace SabreTools.Data.Extensions.Test Rom? actual = self.ConvertToRom(); Assert.NotNull(actual); - Assert.Equal(4, actual.Count); Assert.Equal(ItemType.Rom, actual.ItemType); Assert.Null(actual.Name); - Assert.Null(actual[Rom.MergeKey]); - Assert.Null(actual[Rom.RegionKey]); + Assert.Null(actual.Merge); + Assert.Null(actual.Region); Assert.Null(actual.Status); Assert.Null(actual.Optional); - Assert.Null(actual[Rom.MD5Key]); - Assert.Null(actual[Rom.SHA1Key]); + Assert.Null(actual.MD5); + Assert.Null(actual.SHA1); } [Fact] @@ -43,15 +42,14 @@ namespace SabreTools.Data.Extensions.Test Rom? actual = self.ConvertToRom(); Assert.NotNull(actual); - Assert.Equal(4, actual.Count); Assert.Equal(ItemType.Rom, actual.ItemType); Assert.Equal("name.chd", actual.Name); - Assert.Equal("merge", actual[Rom.MergeKey]); - Assert.Equal("region", actual[Rom.RegionKey]); + Assert.Equal("merge", actual.Merge); + Assert.Equal("region", actual.Region); Assert.Equal(ItemStatus.Good, actual.Status); Assert.Equal(true, actual.Optional); - Assert.Equal("md5", actual[Rom.MD5Key]); - Assert.Equal("sha1", actual[Rom.SHA1Key]); + Assert.Equal("md5", actual.MD5); + Assert.Equal("sha1", actual.SHA1); } [Fact] @@ -61,13 +59,12 @@ namespace SabreTools.Data.Extensions.Test Rom? actual = self.ConvertToRom(); Assert.NotNull(actual); - Assert.Equal(4, actual.Count); Assert.Equal(ItemType.Rom, actual.ItemType); Assert.Null(actual.Name); - Assert.Null(actual[Rom.MD5Key]); - Assert.Null(actual[Rom.SHA1Key]); - Assert.Null(actual[Rom.SHA256Key]); - Assert.Null(actual[Rom.SpamSumKey]); + Assert.Null(actual.MD5); + Assert.Null(actual.SHA1); + Assert.Null(actual.SHA256); + Assert.Null(actual.SpamSum); } [Fact] @@ -85,13 +82,12 @@ namespace SabreTools.Data.Extensions.Test Rom? actual = self.ConvertToRom(); Assert.NotNull(actual); - Assert.Equal(4, actual.Count); Assert.Equal(ItemType.Rom, actual.ItemType); Assert.Equal("name.aaruf", actual.Name); - Assert.Equal("md5", actual[Rom.MD5Key]); - Assert.Equal("sha1", actual[Rom.SHA1Key]); - Assert.Equal("sha256", actual[Rom.SHA256Key]); - Assert.Equal("spamsum", actual[Rom.SpamSumKey]); + Assert.Equal("md5", actual.MD5); + Assert.Equal("sha1", actual.SHA1); + Assert.Equal("sha256", actual.SHA256); + Assert.Equal("spamsum", actual.SpamSum); } #endregion @@ -352,38 +348,38 @@ namespace SabreTools.Data.Extensions.Test Status = ItemStatus.Nodump, Name = "name", Size = 12345, - [Rom.CRC16Key] = string.Empty, - [Rom.CRCKey] = string.Empty, - [Rom.CRC64Key] = string.Empty, - [Rom.MD2Key] = string.Empty, - [Rom.MD4Key] = string.Empty, - [Rom.MD5Key] = string.Empty, - [Rom.RIPEMD128Key] = string.Empty, - [Rom.RIPEMD160Key] = string.Empty, - [Rom.SHA1Key] = string.Empty, - [Rom.SHA256Key] = string.Empty, - [Rom.SHA384Key] = string.Empty, - [Rom.SHA512Key] = string.Empty, - [Rom.SpamSumKey] = string.Empty, + CRC16 = string.Empty, + CRC = string.Empty, + CRC64 = string.Empty, + MD2 = string.Empty, + MD4 = string.Empty, + MD5 = string.Empty, + RIPEMD128 = string.Empty, + RIPEMD160 = string.Empty, + SHA1 = string.Empty, + SHA256 = string.Empty, + SHA384 = string.Empty, + SHA512 = string.Empty, + SpamSum = string.Empty, }; var other = new Rom { Status = ItemStatus.Nodump, Name = "name", Size = 12345, - [Rom.CRC16Key] = string.Empty, - [Rom.CRCKey] = string.Empty, - [Rom.CRC64Key] = string.Empty, - [Rom.MD2Key] = string.Empty, - [Rom.MD4Key] = string.Empty, - [Rom.MD5Key] = string.Empty, - [Rom.RIPEMD128Key] = string.Empty, - [Rom.RIPEMD160Key] = string.Empty, - [Rom.SHA1Key] = string.Empty, - [Rom.SHA256Key] = string.Empty, - [Rom.SHA384Key] = string.Empty, - [Rom.SHA512Key] = string.Empty, - [Rom.SpamSumKey] = string.Empty, + CRC16 = string.Empty, + CRC = string.Empty, + CRC64 = string.Empty, + MD2 = string.Empty, + MD4 = string.Empty, + MD5 = string.Empty, + RIPEMD128 = string.Empty, + RIPEMD160 = string.Empty, + SHA1 = string.Empty, + SHA256 = string.Empty, + SHA384 = string.Empty, + SHA512 = string.Empty, + SpamSum = string.Empty, }; bool actual = self.PartialEquals(other); @@ -397,37 +393,37 @@ namespace SabreTools.Data.Extensions.Test { Name = "name", Size = 12345, - [Rom.CRC16Key] = "XXXXXX", - [Rom.CRCKey] = string.Empty, - [Rom.CRC64Key] = "XXXXXX", - [Rom.MD2Key] = string.Empty, - [Rom.MD4Key] = "XXXXXX", - [Rom.MD5Key] = string.Empty, - [Rom.RIPEMD128Key] = "XXXXXX", - [Rom.RIPEMD160Key] = string.Empty, - [Rom.SHA1Key] = "XXXXXX", - [Rom.SHA256Key] = string.Empty, - [Rom.SHA384Key] = "XXXXXX", - [Rom.SHA512Key] = string.Empty, - [Rom.SpamSumKey] = "XXXXXX", + CRC16 = "XXXXXX", + CRC = string.Empty, + CRC64 = "XXXXXX", + MD2 = string.Empty, + MD4 = "XXXXXX", + MD5 = string.Empty, + RIPEMD128 = "XXXXXX", + RIPEMD160 = string.Empty, + SHA1 = "XXXXXX", + SHA256 = string.Empty, + SHA384 = "XXXXXX", + SHA512 = string.Empty, + SpamSum = "XXXXXX", }; var other = new Rom { Name = "name", Size = 12345, - [Rom.CRC16Key] = string.Empty, - [Rom.CRCKey] = "XXXXXX", - [Rom.CRC64Key] = string.Empty, - [Rom.MD2Key] = "XXXXXX", - [Rom.MD4Key] = string.Empty, - [Rom.MD5Key] = "XXXXXX", - [Rom.RIPEMD128Key] = string.Empty, - [Rom.RIPEMD160Key] = "XXXXXX", - [Rom.SHA1Key] = string.Empty, - [Rom.SHA256Key] = "XXXXXX", - [Rom.SHA384Key] = string.Empty, - [Rom.SHA512Key] = "XXXXXX", - [Rom.SpamSumKey] = string.Empty, + CRC16 = string.Empty, + CRC = "XXXXXX", + CRC64 = string.Empty, + MD2 = "XXXXXX", + MD4 = string.Empty, + MD5 = "XXXXXX", + RIPEMD128 = string.Empty, + RIPEMD160 = "XXXXXX", + SHA1 = string.Empty, + SHA256 = "XXXXXX", + SHA384 = string.Empty, + SHA512 = "XXXXXX", + SpamSum = string.Empty, }; bool actual = self.PartialEquals(other); @@ -440,37 +436,37 @@ namespace SabreTools.Data.Extensions.Test var self = new Rom { Name = "XXXXXX1", - [Rom.CRC16Key] = "XXXXXX", - [Rom.CRCKey] = "XXXXXX", - [Rom.CRC64Key] = "XXXXXX", - [Rom.MD2Key] = "XXXXXX", - [Rom.MD4Key] = "XXXXXX", - [Rom.MD5Key] = "XXXXXX", - [Rom.RIPEMD128Key] = "XXXXXX", - [Rom.RIPEMD160Key] = "XXXXXX", - [Rom.SHA1Key] = "XXXXXX", - [Rom.SHA256Key] = "XXXXXX", - [Rom.SHA384Key] = "XXXXXX", - [Rom.SHA512Key] = "XXXXXX", - [Rom.SpamSumKey] = "XXXXXX", + CRC16 = "XXXXXX", + CRC = "XXXXXX", + CRC64 = "XXXXXX", + MD2 = "XXXXXX", + MD4 = "XXXXXX", + MD5 = "XXXXXX", + RIPEMD128 = "XXXXXX", + RIPEMD160 = "XXXXXX", + SHA1 = "XXXXXX", + SHA256 = "XXXXXX", + SHA384 = "XXXXXX", + SHA512 = "XXXXXX", + SpamSum = "XXXXXX", }; var other = new Rom { Name = "XXXXXX2", Size = 12345, - [Rom.CRC16Key] = "XXXXXX", - [Rom.CRCKey] = "XXXXXX", - [Rom.CRC64Key] = "XXXXXX", - [Rom.MD2Key] = "XXXXXX", - [Rom.MD4Key] = "XXXXXX", - [Rom.MD5Key] = "XXXXXX", - [Rom.RIPEMD128Key] = "XXXXXX", - [Rom.RIPEMD160Key] = "XXXXXX", - [Rom.SHA1Key] = "XXXXXX", - [Rom.SHA256Key] = "XXXXXX", - [Rom.SHA384Key] = "XXXXXX", - [Rom.SHA512Key] = "XXXXXX", - [Rom.SpamSumKey] = "XXXXXX", + CRC16 = "XXXXXX", + CRC = "XXXXXX", + CRC64 = "XXXXXX", + MD2 = "XXXXXX", + MD4 = "XXXXXX", + MD5 = "XXXXXX", + RIPEMD128 = "XXXXXX", + RIPEMD160 = "XXXXXX", + SHA1 = "XXXXXX", + SHA256 = "XXXXXX", + SHA384 = "XXXXXX", + SHA512 = "XXXXXX", + SpamSum = "XXXXXX", }; bool actual = self.PartialEquals(other); @@ -484,36 +480,36 @@ namespace SabreTools.Data.Extensions.Test { Name = "XXXXXX1", Size = 12345, - [Rom.CRC16Key] = "XXXXXX", - [Rom.CRCKey] = "XXXXXX", - [Rom.CRC64Key] = "XXXXXX", - [Rom.MD2Key] = "XXXXXX", - [Rom.MD4Key] = "XXXXXX", - [Rom.MD5Key] = "XXXXXX", - [Rom.RIPEMD128Key] = "XXXXXX", - [Rom.RIPEMD160Key] = "XXXXXX", - [Rom.SHA1Key] = "XXXXXX", - [Rom.SHA256Key] = "XXXXXX", - [Rom.SHA384Key] = "XXXXXX", - [Rom.SHA512Key] = "XXXXXX", - [Rom.SpamSumKey] = "XXXXXX", + CRC16 = "XXXXXX", + CRC = "XXXXXX", + CRC64 = "XXXXXX", + MD2 = "XXXXXX", + MD4 = "XXXXXX", + MD5 = "XXXXXX", + RIPEMD128 = "XXXXXX", + RIPEMD160 = "XXXXXX", + SHA1 = "XXXXXX", + SHA256 = "XXXXXX", + SHA384 = "XXXXXX", + SHA512 = "XXXXXX", + SpamSum = "XXXXXX", }; var other = new Rom { Name = "XXXXXX2", - [Rom.CRC16Key] = "XXXXXX", - [Rom.CRCKey] = "XXXXXX", - [Rom.CRC64Key] = "XXXXXX", - [Rom.MD2Key] = "XXXXXX", - [Rom.MD4Key] = "XXXXXX", - [Rom.MD5Key] = "XXXXXX", - [Rom.RIPEMD128Key] = "XXXXXX", - [Rom.RIPEMD160Key] = "XXXXXX", - [Rom.SHA1Key] = "XXXXXX", - [Rom.SHA256Key] = "XXXXXX", - [Rom.SHA384Key] = "XXXXXX", - [Rom.SHA512Key] = "XXXXXX", - [Rom.SpamSumKey] = "XXXXXX", + CRC16 = "XXXXXX", + CRC = "XXXXXX", + CRC64 = "XXXXXX", + MD2 = "XXXXXX", + MD4 = "XXXXXX", + MD5 = "XXXXXX", + RIPEMD128 = "XXXXXX", + RIPEMD160 = "XXXXXX", + SHA1 = "XXXXXX", + SHA256 = "XXXXXX", + SHA384 = "XXXXXX", + SHA512 = "XXXXXX", + SpamSum = "XXXXXX", }; bool actual = self.PartialEquals(other); @@ -527,37 +523,37 @@ namespace SabreTools.Data.Extensions.Test { Name = "XXXXXX1", Size = 12345, - [Rom.CRC16Key] = "XXXXXX", - [Rom.CRCKey] = string.Empty, - [Rom.CRC64Key] = string.Empty, - [Rom.MD2Key] = string.Empty, - [Rom.MD4Key] = string.Empty, - [Rom.MD5Key] = string.Empty, - [Rom.RIPEMD128Key] = string.Empty, - [Rom.RIPEMD160Key] = string.Empty, - [Rom.SHA1Key] = string.Empty, - [Rom.SHA256Key] = string.Empty, - [Rom.SHA384Key] = string.Empty, - [Rom.SHA512Key] = string.Empty, - [Rom.SpamSumKey] = string.Empty, + CRC16 = "XXXXXX", + CRC = string.Empty, + CRC64 = string.Empty, + MD2 = string.Empty, + MD4 = string.Empty, + MD5 = string.Empty, + RIPEMD128 = string.Empty, + RIPEMD160 = string.Empty, + SHA1 = string.Empty, + SHA256 = string.Empty, + SHA384 = string.Empty, + SHA512 = string.Empty, + SpamSum = string.Empty, }; var other = new Rom { Name = "XXXXXX2", Size = 12345, - [Rom.CRC16Key] = "XXXXXX", - [Rom.CRCKey] = "XXXXXX", - [Rom.CRC64Key] = "XXXXXX", - [Rom.MD2Key] = "XXXXXX", - [Rom.MD4Key] = "XXXXXX", - [Rom.MD5Key] = "XXXXXX", - [Rom.RIPEMD128Key] = "XXXXXX", - [Rom.RIPEMD160Key] = "XXXXXX", - [Rom.SHA1Key] = "XXXXXX", - [Rom.SHA256Key] = "XXXXXX", - [Rom.SHA384Key] = "XXXXXX", - [Rom.SHA512Key] = "XXXXXX", - [Rom.SpamSumKey] = "XXXXXX", + CRC16 = "XXXXXX", + CRC = "XXXXXX", + CRC64 = "XXXXXX", + MD2 = "XXXXXX", + MD4 = "XXXXXX", + MD5 = "XXXXXX", + RIPEMD128 = "XXXXXX", + RIPEMD160 = "XXXXXX", + SHA1 = "XXXXXX", + SHA256 = "XXXXXX", + SHA384 = "XXXXXX", + SHA512 = "XXXXXX", + SpamSum = "XXXXXX", }; bool actual = self.PartialEquals(other); @@ -571,37 +567,37 @@ namespace SabreTools.Data.Extensions.Test { Name = "XXXXXX1", Size = 12345, - [Rom.CRC16Key] = string.Empty, - [Rom.CRCKey] = "XXXXXX", - [Rom.CRC64Key] = string.Empty, - [Rom.MD2Key] = string.Empty, - [Rom.MD4Key] = string.Empty, - [Rom.MD5Key] = string.Empty, - [Rom.RIPEMD128Key] = string.Empty, - [Rom.RIPEMD160Key] = string.Empty, - [Rom.SHA1Key] = string.Empty, - [Rom.SHA256Key] = string.Empty, - [Rom.SHA384Key] = string.Empty, - [Rom.SHA512Key] = string.Empty, - [Rom.SpamSumKey] = string.Empty, + CRC16 = string.Empty, + CRC = "XXXXXX", + CRC64 = string.Empty, + MD2 = string.Empty, + MD4 = string.Empty, + MD5 = string.Empty, + RIPEMD128 = string.Empty, + RIPEMD160 = string.Empty, + SHA1 = string.Empty, + SHA256 = string.Empty, + SHA384 = string.Empty, + SHA512 = string.Empty, + SpamSum = string.Empty, }; var other = new Rom { Name = "XXXXXX2", Size = 12345, - [Rom.CRC16Key] = "XXXXXX", - [Rom.CRCKey] = "XXXXXX", - [Rom.CRC64Key] = "XXXXXX", - [Rom.MD2Key] = "XXXXXX", - [Rom.MD4Key] = "XXXXXX", - [Rom.MD5Key] = "XXXXXX", - [Rom.RIPEMD128Key] = "XXXXXX", - [Rom.RIPEMD160Key] = "XXXXXX", - [Rom.SHA1Key] = "XXXXXX", - [Rom.SHA256Key] = "XXXXXX", - [Rom.SHA384Key] = "XXXXXX", - [Rom.SHA512Key] = "XXXXXX", - [Rom.SpamSumKey] = "XXXXXX", + CRC16 = "XXXXXX", + CRC = "XXXXXX", + CRC64 = "XXXXXX", + MD2 = "XXXXXX", + MD4 = "XXXXXX", + MD5 = "XXXXXX", + RIPEMD128 = "XXXXXX", + RIPEMD160 = "XXXXXX", + SHA1 = "XXXXXX", + SHA256 = "XXXXXX", + SHA384 = "XXXXXX", + SHA512 = "XXXXXX", + SpamSum = "XXXXXX", }; bool actual = self.PartialEquals(other); @@ -615,37 +611,37 @@ namespace SabreTools.Data.Extensions.Test { Name = "XXXXXX1", Size = 12345, - [Rom.CRC16Key] = string.Empty, - [Rom.CRCKey] = string.Empty, - [Rom.CRC64Key] = "XXXXXX", - [Rom.MD2Key] = string.Empty, - [Rom.MD4Key] = string.Empty, - [Rom.MD5Key] = string.Empty, - [Rom.RIPEMD128Key] = string.Empty, - [Rom.RIPEMD160Key] = string.Empty, - [Rom.SHA1Key] = string.Empty, - [Rom.SHA256Key] = string.Empty, - [Rom.SHA384Key] = string.Empty, - [Rom.SHA512Key] = string.Empty, - [Rom.SpamSumKey] = string.Empty, + CRC16 = string.Empty, + CRC = string.Empty, + CRC64 = "XXXXXX", + MD2 = string.Empty, + MD4 = string.Empty, + MD5 = string.Empty, + RIPEMD128 = string.Empty, + RIPEMD160 = string.Empty, + SHA1 = string.Empty, + SHA256 = string.Empty, + SHA384 = string.Empty, + SHA512 = string.Empty, + SpamSum = string.Empty, }; var other = new Rom { Name = "XXXXXX2", Size = 12345, - [Rom.CRC16Key] = "XXXXXX", - [Rom.CRCKey] = "XXXXXX", - [Rom.CRC64Key] = "XXXXXX", - [Rom.MD2Key] = "XXXXXX", - [Rom.MD4Key] = "XXXXXX", - [Rom.MD5Key] = "XXXXXX", - [Rom.RIPEMD128Key] = "XXXXXX", - [Rom.RIPEMD160Key] = "XXXXXX", - [Rom.SHA1Key] = "XXXXXX", - [Rom.SHA256Key] = "XXXXXX", - [Rom.SHA384Key] = "XXXXXX", - [Rom.SHA512Key] = "XXXXXX", - [Rom.SpamSumKey] = "XXXXXX", + CRC16 = "XXXXXX", + CRC = "XXXXXX", + CRC64 = "XXXXXX", + MD2 = "XXXXXX", + MD4 = "XXXXXX", + MD5 = "XXXXXX", + RIPEMD128 = "XXXXXX", + RIPEMD160 = "XXXXXX", + SHA1 = "XXXXXX", + SHA256 = "XXXXXX", + SHA384 = "XXXXXX", + SHA512 = "XXXXXX", + SpamSum = "XXXXXX", }; bool actual = self.PartialEquals(other); @@ -659,37 +655,37 @@ namespace SabreTools.Data.Extensions.Test { Name = "XXXXXX1", Size = 12345, - [Rom.CRC16Key] = string.Empty, - [Rom.CRCKey] = string.Empty, - [Rom.CRC64Key] = string.Empty, - [Rom.MD2Key] = "XXXXXX", - [Rom.MD4Key] = string.Empty, - [Rom.MD5Key] = string.Empty, - [Rom.RIPEMD128Key] = string.Empty, - [Rom.RIPEMD160Key] = string.Empty, - [Rom.SHA1Key] = string.Empty, - [Rom.SHA256Key] = string.Empty, - [Rom.SHA384Key] = string.Empty, - [Rom.SHA512Key] = string.Empty, - [Rom.SpamSumKey] = string.Empty, + CRC16 = string.Empty, + CRC = string.Empty, + CRC64 = string.Empty, + MD2 = "XXXXXX", + MD4 = string.Empty, + MD5 = string.Empty, + RIPEMD128 = string.Empty, + RIPEMD160 = string.Empty, + SHA1 = string.Empty, + SHA256 = string.Empty, + SHA384 = string.Empty, + SHA512 = string.Empty, + SpamSum = string.Empty, }; var other = new Rom { Name = "XXXXXX2", Size = 12345, - [Rom.CRC16Key] = "XXXXXX", - [Rom.CRCKey] = "XXXXXX", - [Rom.CRC64Key] = "XXXXXX", - [Rom.MD2Key] = "XXXXXX", - [Rom.MD4Key] = "XXXXXX", - [Rom.MD5Key] = "XXXXXX", - [Rom.RIPEMD128Key] = "XXXXXX", - [Rom.RIPEMD160Key] = "XXXXXX", - [Rom.SHA1Key] = "XXXXXX", - [Rom.SHA256Key] = "XXXXXX", - [Rom.SHA384Key] = "XXXXXX", - [Rom.SHA512Key] = "XXXXXX", - [Rom.SpamSumKey] = "XXXXXX", + CRC16 = "XXXXXX", + CRC = "XXXXXX", + CRC64 = "XXXXXX", + MD2 = "XXXXXX", + MD4 = "XXXXXX", + MD5 = "XXXXXX", + RIPEMD128 = "XXXXXX", + RIPEMD160 = "XXXXXX", + SHA1 = "XXXXXX", + SHA256 = "XXXXXX", + SHA384 = "XXXXXX", + SHA512 = "XXXXXX", + SpamSum = "XXXXXX", }; bool actual = self.PartialEquals(other); @@ -703,37 +699,37 @@ namespace SabreTools.Data.Extensions.Test { Name = "XXXXXX1", Size = 12345, - [Rom.CRC16Key] = string.Empty, - [Rom.CRCKey] = string.Empty, - [Rom.CRC64Key] = string.Empty, - [Rom.MD2Key] = string.Empty, - [Rom.MD4Key] = "XXXXXX", - [Rom.MD5Key] = string.Empty, - [Rom.RIPEMD128Key] = string.Empty, - [Rom.RIPEMD160Key] = string.Empty, - [Rom.SHA1Key] = string.Empty, - [Rom.SHA256Key] = string.Empty, - [Rom.SHA384Key] = string.Empty, - [Rom.SHA512Key] = string.Empty, - [Rom.SpamSumKey] = string.Empty, + CRC16 = string.Empty, + CRC = string.Empty, + CRC64 = string.Empty, + MD2 = string.Empty, + MD4 = "XXXXXX", + MD5 = string.Empty, + RIPEMD128 = string.Empty, + RIPEMD160 = string.Empty, + SHA1 = string.Empty, + SHA256 = string.Empty, + SHA384 = string.Empty, + SHA512 = string.Empty, + SpamSum = string.Empty, }; var other = new Rom { Name = "XXXXXX2", Size = 12345, - [Rom.CRC16Key] = "XXXXXX", - [Rom.CRCKey] = "XXXXXX", - [Rom.CRC64Key] = "XXXXXX", - [Rom.MD2Key] = "XXXXXX", - [Rom.MD4Key] = "XXXXXX", - [Rom.MD5Key] = "XXXXXX", - [Rom.RIPEMD128Key] = "XXXXXX", - [Rom.RIPEMD160Key] = "XXXXXX", - [Rom.SHA1Key] = "XXXXXX", - [Rom.SHA256Key] = "XXXXXX", - [Rom.SHA384Key] = "XXXXXX", - [Rom.SHA512Key] = "XXXXXX", - [Rom.SpamSumKey] = "XXXXXX", + CRC16 = "XXXXXX", + CRC = "XXXXXX", + CRC64 = "XXXXXX", + MD2 = "XXXXXX", + MD4 = "XXXXXX", + MD5 = "XXXXXX", + RIPEMD128 = "XXXXXX", + RIPEMD160 = "XXXXXX", + SHA1 = "XXXXXX", + SHA256 = "XXXXXX", + SHA384 = "XXXXXX", + SHA512 = "XXXXXX", + SpamSum = "XXXXXX", }; bool actual = self.PartialEquals(other); @@ -747,37 +743,37 @@ namespace SabreTools.Data.Extensions.Test { Name = "XXXXXX1", Size = 12345, - [Rom.CRC16Key] = string.Empty, - [Rom.CRCKey] = string.Empty, - [Rom.CRC64Key] = string.Empty, - [Rom.MD2Key] = string.Empty, - [Rom.MD4Key] = string.Empty, - [Rom.MD5Key] = "XXXXXX", - [Rom.RIPEMD128Key] = string.Empty, - [Rom.RIPEMD160Key] = string.Empty, - [Rom.SHA1Key] = string.Empty, - [Rom.SHA256Key] = string.Empty, - [Rom.SHA384Key] = string.Empty, - [Rom.SHA512Key] = string.Empty, - [Rom.SpamSumKey] = string.Empty, + CRC16 = string.Empty, + CRC = string.Empty, + CRC64 = string.Empty, + MD2 = string.Empty, + MD4 = string.Empty, + MD5 = "XXXXXX", + RIPEMD128 = string.Empty, + RIPEMD160 = string.Empty, + SHA1 = string.Empty, + SHA256 = string.Empty, + SHA384 = string.Empty, + SHA512 = string.Empty, + SpamSum = string.Empty, }; var other = new Rom { Name = "XXXXXX2", Size = 12345, - [Rom.CRC16Key] = "XXXXXX", - [Rom.CRCKey] = "XXXXXX", - [Rom.CRC64Key] = "XXXXXX", - [Rom.MD2Key] = "XXXXXX", - [Rom.MD4Key] = "XXXXXX", - [Rom.MD5Key] = "XXXXXX", - [Rom.RIPEMD128Key] = "XXXXXX", - [Rom.RIPEMD160Key] = "XXXXXX", - [Rom.SHA1Key] = "XXXXXX", - [Rom.SHA256Key] = "XXXXXX", - [Rom.SHA384Key] = "XXXXXX", - [Rom.SHA512Key] = "XXXXXX", - [Rom.SpamSumKey] = "XXXXXX", + CRC16 = "XXXXXX", + CRC = "XXXXXX", + CRC64 = "XXXXXX", + MD2 = "XXXXXX", + MD4 = "XXXXXX", + MD5 = "XXXXXX", + RIPEMD128 = "XXXXXX", + RIPEMD160 = "XXXXXX", + SHA1 = "XXXXXX", + SHA256 = "XXXXXX", + SHA384 = "XXXXXX", + SHA512 = "XXXXXX", + SpamSum = "XXXXXX", }; bool actual = self.PartialEquals(other); @@ -791,37 +787,37 @@ namespace SabreTools.Data.Extensions.Test { Name = "XXXXXX1", Size = 12345, - [Rom.CRC16Key] = string.Empty, - [Rom.CRCKey] = string.Empty, - [Rom.CRC64Key] = string.Empty, - [Rom.MD2Key] = string.Empty, - [Rom.MD4Key] = string.Empty, - [Rom.MD5Key] = string.Empty, - [Rom.RIPEMD128Key] = "XXXXXX", - [Rom.RIPEMD160Key] = string.Empty, - [Rom.SHA1Key] = string.Empty, - [Rom.SHA256Key] = string.Empty, - [Rom.SHA384Key] = string.Empty, - [Rom.SHA512Key] = string.Empty, - [Rom.SpamSumKey] = string.Empty, + CRC16 = string.Empty, + CRC = string.Empty, + CRC64 = string.Empty, + MD2 = string.Empty, + MD4 = string.Empty, + MD5 = string.Empty, + RIPEMD128 = "XXXXXX", + RIPEMD160 = string.Empty, + SHA1 = string.Empty, + SHA256 = string.Empty, + SHA384 = string.Empty, + SHA512 = string.Empty, + SpamSum = string.Empty, }; var other = new Rom { Name = "XXXXXX2", Size = 12345, - [Rom.CRC16Key] = "XXXXXX", - [Rom.CRCKey] = "XXXXXX", - [Rom.CRC64Key] = "XXXXXX", - [Rom.MD2Key] = "XXXXXX", - [Rom.MD4Key] = "XXXXXX", - [Rom.MD5Key] = "XXXXXX", - [Rom.RIPEMD128Key] = "XXXXXX", - [Rom.RIPEMD160Key] = "XXXXXX", - [Rom.SHA1Key] = "XXXXXX", - [Rom.SHA256Key] = "XXXXXX", - [Rom.SHA384Key] = "XXXXXX", - [Rom.SHA512Key] = "XXXXXX", - [Rom.SpamSumKey] = "XXXXXX", + CRC16 = "XXXXXX", + CRC = "XXXXXX", + CRC64 = "XXXXXX", + MD2 = "XXXXXX", + MD4 = "XXXXXX", + MD5 = "XXXXXX", + RIPEMD128 = "XXXXXX", + RIPEMD160 = "XXXXXX", + SHA1 = "XXXXXX", + SHA256 = "XXXXXX", + SHA384 = "XXXXXX", + SHA512 = "XXXXXX", + SpamSum = "XXXXXX", }; bool actual = self.PartialEquals(other); @@ -835,37 +831,37 @@ namespace SabreTools.Data.Extensions.Test { Name = "XXXXXX1", Size = 12345, - [Rom.CRC16Key] = string.Empty, - [Rom.CRCKey] = string.Empty, - [Rom.CRC64Key] = string.Empty, - [Rom.MD2Key] = string.Empty, - [Rom.MD4Key] = string.Empty, - [Rom.MD5Key] = string.Empty, - [Rom.RIPEMD128Key] = string.Empty, - [Rom.RIPEMD160Key] = "XXXXXX", - [Rom.SHA1Key] = string.Empty, - [Rom.SHA256Key] = string.Empty, - [Rom.SHA384Key] = string.Empty, - [Rom.SHA512Key] = string.Empty, - [Rom.SpamSumKey] = string.Empty, + CRC16 = string.Empty, + CRC = string.Empty, + CRC64 = string.Empty, + MD2 = string.Empty, + MD4 = string.Empty, + MD5 = string.Empty, + RIPEMD128 = string.Empty, + RIPEMD160 = "XXXXXX", + SHA1 = string.Empty, + SHA256 = string.Empty, + SHA384 = string.Empty, + SHA512 = string.Empty, + SpamSum = string.Empty, }; var other = new Rom { Name = "XXXXXX2", Size = 12345, - [Rom.CRC16Key] = "XXXXXX", - [Rom.CRCKey] = "XXXXXX", - [Rom.CRC64Key] = "XXXXXX", - [Rom.MD2Key] = "XXXXXX", - [Rom.MD4Key] = "XXXXXX", - [Rom.MD5Key] = "XXXXXX", - [Rom.RIPEMD128Key] = "XXXXXX", - [Rom.RIPEMD160Key] = "XXXXXX", - [Rom.SHA1Key] = "XXXXXX", - [Rom.SHA256Key] = "XXXXXX", - [Rom.SHA384Key] = "XXXXXX", - [Rom.SHA512Key] = "XXXXXX", - [Rom.SpamSumKey] = "XXXXXX", + CRC16 = "XXXXXX", + CRC = "XXXXXX", + CRC64 = "XXXXXX", + MD2 = "XXXXXX", + MD4 = "XXXXXX", + MD5 = "XXXXXX", + RIPEMD128 = "XXXXXX", + RIPEMD160 = "XXXXXX", + SHA1 = "XXXXXX", + SHA256 = "XXXXXX", + SHA384 = "XXXXXX", + SHA512 = "XXXXXX", + SpamSum = "XXXXXX", }; bool actual = self.PartialEquals(other); @@ -879,37 +875,37 @@ namespace SabreTools.Data.Extensions.Test { Name = "XXXXXX1", Size = 12345, - [Rom.CRC16Key] = string.Empty, - [Rom.CRCKey] = string.Empty, - [Rom.CRC64Key] = string.Empty, - [Rom.MD2Key] = string.Empty, - [Rom.MD4Key] = string.Empty, - [Rom.MD5Key] = string.Empty, - [Rom.RIPEMD128Key] = string.Empty, - [Rom.RIPEMD160Key] = string.Empty, - [Rom.SHA1Key] = "XXXXXX", - [Rom.SHA256Key] = string.Empty, - [Rom.SHA384Key] = string.Empty, - [Rom.SHA512Key] = string.Empty, - [Rom.SpamSumKey] = string.Empty, + CRC16 = string.Empty, + CRC = string.Empty, + CRC64 = string.Empty, + MD2 = string.Empty, + MD4 = string.Empty, + MD5 = string.Empty, + RIPEMD128 = string.Empty, + RIPEMD160 = string.Empty, + SHA1 = "XXXXXX", + SHA256 = string.Empty, + SHA384 = string.Empty, + SHA512 = string.Empty, + SpamSum = string.Empty, }; var other = new Rom { Name = "XXXXXX2", Size = 12345, - [Rom.CRC16Key] = "XXXXXX", - [Rom.CRCKey] = "XXXXXX", - [Rom.CRC64Key] = "XXXXXX", - [Rom.MD2Key] = "XXXXXX", - [Rom.MD4Key] = "XXXXXX", - [Rom.MD5Key] = "XXXXXX", - [Rom.RIPEMD128Key] = "XXXXXX", - [Rom.RIPEMD160Key] = "XXXXXX", - [Rom.SHA1Key] = "XXXXXX", - [Rom.SHA256Key] = "XXXXXX", - [Rom.SHA384Key] = "XXXXXX", - [Rom.SHA512Key] = "XXXXXX", - [Rom.SpamSumKey] = "XXXXXX", + CRC16 = "XXXXXX", + CRC = "XXXXXX", + CRC64 = "XXXXXX", + MD2 = "XXXXXX", + MD4 = "XXXXXX", + MD5 = "XXXXXX", + RIPEMD128 = "XXXXXX", + RIPEMD160 = "XXXXXX", + SHA1 = "XXXXXX", + SHA256 = "XXXXXX", + SHA384 = "XXXXXX", + SHA512 = "XXXXXX", + SpamSum = "XXXXXX", }; bool actual = self.PartialEquals(other); @@ -923,37 +919,37 @@ namespace SabreTools.Data.Extensions.Test { Name = "XXXXXX1", Size = 12345, - [Rom.CRC16Key] = string.Empty, - [Rom.CRCKey] = string.Empty, - [Rom.CRC64Key] = string.Empty, - [Rom.MD2Key] = string.Empty, - [Rom.MD4Key] = string.Empty, - [Rom.MD5Key] = string.Empty, - [Rom.RIPEMD128Key] = string.Empty, - [Rom.RIPEMD160Key] = string.Empty, - [Rom.SHA1Key] = string.Empty, - [Rom.SHA256Key] = "XXXXXX", - [Rom.SHA384Key] = string.Empty, - [Rom.SHA512Key] = string.Empty, - [Rom.SpamSumKey] = string.Empty, + CRC16 = string.Empty, + CRC = string.Empty, + CRC64 = string.Empty, + MD2 = string.Empty, + MD4 = string.Empty, + MD5 = string.Empty, + RIPEMD128 = string.Empty, + RIPEMD160 = string.Empty, + SHA1 = string.Empty, + SHA256 = "XXXXXX", + SHA384 = string.Empty, + SHA512 = string.Empty, + SpamSum = string.Empty, }; var other = new Rom { Name = "XXXXXX2", Size = 12345, - [Rom.CRC16Key] = "XXXXXX", - [Rom.CRCKey] = "XXXXXX", - [Rom.CRC64Key] = "XXXXXX", - [Rom.MD2Key] = "XXXXXX", - [Rom.MD4Key] = "XXXXXX", - [Rom.MD5Key] = "XXXXXX", - [Rom.RIPEMD128Key] = "XXXXXX", - [Rom.RIPEMD160Key] = "XXXXXX", - [Rom.SHA1Key] = "XXXXXX", - [Rom.SHA256Key] = "XXXXXX", - [Rom.SHA384Key] = "XXXXXX", - [Rom.SHA512Key] = "XXXXXX", - [Rom.SpamSumKey] = "XXXXXX", + CRC16 = "XXXXXX", + CRC = "XXXXXX", + CRC64 = "XXXXXX", + MD2 = "XXXXXX", + MD4 = "XXXXXX", + MD5 = "XXXXXX", + RIPEMD128 = "XXXXXX", + RIPEMD160 = "XXXXXX", + SHA1 = "XXXXXX", + SHA256 = "XXXXXX", + SHA384 = "XXXXXX", + SHA512 = "XXXXXX", + SpamSum = "XXXXXX", }; bool actual = self.PartialEquals(other); @@ -967,37 +963,37 @@ namespace SabreTools.Data.Extensions.Test { Name = "XXXXXX1", Size = 12345, - [Rom.CRC16Key] = string.Empty, - [Rom.CRCKey] = string.Empty, - [Rom.CRC64Key] = string.Empty, - [Rom.MD2Key] = string.Empty, - [Rom.MD4Key] = string.Empty, - [Rom.MD5Key] = string.Empty, - [Rom.RIPEMD128Key] = string.Empty, - [Rom.RIPEMD160Key] = string.Empty, - [Rom.SHA1Key] = string.Empty, - [Rom.SHA256Key] = string.Empty, - [Rom.SHA384Key] = "XXXXXX", - [Rom.SHA512Key] = string.Empty, - [Rom.SpamSumKey] = string.Empty, + CRC16 = string.Empty, + CRC = string.Empty, + CRC64 = string.Empty, + MD2 = string.Empty, + MD4 = string.Empty, + MD5 = string.Empty, + RIPEMD128 = string.Empty, + RIPEMD160 = string.Empty, + SHA1 = string.Empty, + SHA256 = string.Empty, + SHA384 = "XXXXXX", + SHA512 = string.Empty, + SpamSum = string.Empty, }; var other = new Rom { Name = "XXXXXX2", Size = 12345, - [Rom.CRC16Key] = "XXXXXX", - [Rom.CRCKey] = "XXXXXX", - [Rom.CRC64Key] = "XXXXXX", - [Rom.MD2Key] = "XXXXXX", - [Rom.MD4Key] = "XXXXXX", - [Rom.MD5Key] = "XXXXXX", - [Rom.RIPEMD128Key] = "XXXXXX", - [Rom.RIPEMD160Key] = "XXXXXX", - [Rom.SHA1Key] = "XXXXXX", - [Rom.SHA256Key] = "XXXXXX", - [Rom.SHA384Key] = "XXXXXX", - [Rom.SHA512Key] = "XXXXXX", - [Rom.SpamSumKey] = "XXXXXX", + CRC16 = "XXXXXX", + CRC = "XXXXXX", + CRC64 = "XXXXXX", + MD2 = "XXXXXX", + MD4 = "XXXXXX", + MD5 = "XXXXXX", + RIPEMD128 = "XXXXXX", + RIPEMD160 = "XXXXXX", + SHA1 = "XXXXXX", + SHA256 = "XXXXXX", + SHA384 = "XXXXXX", + SHA512 = "XXXXXX", + SpamSum = "XXXXXX", }; bool actual = self.PartialEquals(other); @@ -1011,37 +1007,37 @@ namespace SabreTools.Data.Extensions.Test { Name = "XXXXXX1", Size = 12345, - [Rom.CRC16Key] = string.Empty, - [Rom.CRCKey] = string.Empty, - [Rom.CRC64Key] = string.Empty, - [Rom.MD2Key] = string.Empty, - [Rom.MD4Key] = string.Empty, - [Rom.MD5Key] = string.Empty, - [Rom.RIPEMD128Key] = string.Empty, - [Rom.RIPEMD160Key] = string.Empty, - [Rom.SHA1Key] = string.Empty, - [Rom.SHA256Key] = string.Empty, - [Rom.SHA384Key] = string.Empty, - [Rom.SHA512Key] = "XXXXXX", - [Rom.SpamSumKey] = string.Empty, + CRC16 = string.Empty, + CRC = string.Empty, + CRC64 = string.Empty, + MD2 = string.Empty, + MD4 = string.Empty, + MD5 = string.Empty, + RIPEMD128 = string.Empty, + RIPEMD160 = string.Empty, + SHA1 = string.Empty, + SHA256 = string.Empty, + SHA384 = string.Empty, + SHA512 = "XXXXXX", + SpamSum = string.Empty, }; var other = new Rom { Name = "XXXXXX2", Size = 12345, - [Rom.CRC16Key] = "XXXXXX", - [Rom.CRCKey] = "XXXXXX", - [Rom.CRC64Key] = "XXXXXX", - [Rom.MD2Key] = "XXXXXX", - [Rom.MD4Key] = "XXXXXX", - [Rom.MD5Key] = "XXXXXX", - [Rom.RIPEMD128Key] = "XXXXXX", - [Rom.RIPEMD160Key] = "XXXXXX", - [Rom.SHA1Key] = "XXXXXX", - [Rom.SHA256Key] = "XXXXXX", - [Rom.SHA384Key] = "XXXXXX", - [Rom.SHA512Key] = "XXXXXX", - [Rom.SpamSumKey] = "XXXXXX", + CRC16 = "XXXXXX", + CRC = "XXXXXX", + CRC64 = "XXXXXX", + MD2 = "XXXXXX", + MD4 = "XXXXXX", + MD5 = "XXXXXX", + RIPEMD128 = "XXXXXX", + RIPEMD160 = "XXXXXX", + SHA1 = "XXXXXX", + SHA256 = "XXXXXX", + SHA384 = "XXXXXX", + SHA512 = "XXXXXX", + SpamSum = "XXXXXX", }; bool actual = self.PartialEquals(other); @@ -1055,37 +1051,37 @@ namespace SabreTools.Data.Extensions.Test { Name = "XXXXXX1", Size = 12345, - [Rom.CRC16Key] = string.Empty, - [Rom.CRCKey] = string.Empty, - [Rom.CRC64Key] = string.Empty, - [Rom.MD2Key] = string.Empty, - [Rom.MD4Key] = string.Empty, - [Rom.MD5Key] = string.Empty, - [Rom.RIPEMD128Key] = string.Empty, - [Rom.RIPEMD160Key] = string.Empty, - [Rom.SHA1Key] = string.Empty, - [Rom.SHA256Key] = string.Empty, - [Rom.SHA384Key] = string.Empty, - [Rom.SHA512Key] = string.Empty, - [Rom.SpamSumKey] = "XXXXXX", + CRC16 = string.Empty, + CRC = string.Empty, + CRC64 = string.Empty, + MD2 = string.Empty, + MD4 = string.Empty, + MD5 = string.Empty, + RIPEMD128 = string.Empty, + RIPEMD160 = string.Empty, + SHA1 = string.Empty, + SHA256 = string.Empty, + SHA384 = string.Empty, + SHA512 = string.Empty, + SpamSum = "XXXXXX", }; var other = new Rom { Name = "XXXXXX2", Size = 12345, - [Rom.CRC16Key] = "XXXXXX", - [Rom.CRCKey] = "XXXXXX", - [Rom.CRC64Key] = "XXXXXX", - [Rom.MD2Key] = "XXXXXX", - [Rom.MD4Key] = "XXXXXX", - [Rom.MD5Key] = "XXXXXX", - [Rom.RIPEMD128Key] = "XXXXXX", - [Rom.RIPEMD160Key] = "XXXXXX", - [Rom.SHA1Key] = "XXXXXX", - [Rom.SHA256Key] = "XXXXXX", - [Rom.SHA384Key] = "XXXXXX", - [Rom.SHA512Key] = "XXXXXX", - [Rom.SpamSumKey] = "XXXXXX", + CRC16 = "XXXXXX", + CRC = "XXXXXX", + CRC64 = "XXXXXX", + MD2 = "XXXXXX", + MD4 = "XXXXXX", + MD5 = "XXXXXX", + RIPEMD128 = "XXXXXX", + RIPEMD160 = "XXXXXX", + SHA1 = "XXXXXX", + SHA256 = "XXXXXX", + SHA384 = "XXXXXX", + SHA512 = "XXXXXX", + SpamSum = "XXXXXX", }; bool actual = self.PartialEquals(other); @@ -1099,37 +1095,37 @@ namespace SabreTools.Data.Extensions.Test { Name = "XXXXXX1", Size = 12345, - [Rom.CRC16Key] = "XXXXXX", - [Rom.CRCKey] = "XXXXXX", - [Rom.CRC64Key] = "XXXXXX", - [Rom.MD2Key] = "XXXXXX", - [Rom.MD4Key] = "XXXXXX", - [Rom.MD5Key] = "XXXXXX", - [Rom.RIPEMD128Key] = "XXXXXX", - [Rom.RIPEMD160Key] = "XXXXXX", - [Rom.SHA1Key] = "XXXXXX", - [Rom.SHA256Key] = "XXXXXX", - [Rom.SHA384Key] = "XXXXXX", - [Rom.SHA512Key] = "XXXXXX", - [Rom.SpamSumKey] = "XXXXXX", + CRC16 = "XXXXXX", + CRC = "XXXXXX", + CRC64 = "XXXXXX", + MD2 = "XXXXXX", + MD4 = "XXXXXX", + MD5 = "XXXXXX", + RIPEMD128 = "XXXXXX", + RIPEMD160 = "XXXXXX", + SHA1 = "XXXXXX", + SHA256 = "XXXXXX", + SHA384 = "XXXXXX", + SHA512 = "XXXXXX", + SpamSum = "XXXXXX", }; var other = new Rom { Name = "XXXXXX2", Size = 12345, - [Rom.CRC16Key] = "XXXXXX", - [Rom.CRCKey] = "XXXXXX", - [Rom.CRC64Key] = "XXXXXX", - [Rom.MD2Key] = "XXXXXX", - [Rom.MD4Key] = "XXXXXX", - [Rom.MD5Key] = "XXXXXX", - [Rom.RIPEMD128Key] = "XXXXXX", - [Rom.RIPEMD160Key] = "XXXXXX", - [Rom.SHA1Key] = "XXXXXX", - [Rom.SHA256Key] = "XXXXXX", - [Rom.SHA384Key] = "XXXXXX", - [Rom.SHA512Key] = "XXXXXX", - [Rom.SpamSumKey] = "XXXXXX", + CRC16 = "XXXXXX", + CRC = "XXXXXX", + CRC64 = "XXXXXX", + MD2 = "XXXXXX", + MD4 = "XXXXXX", + MD5 = "XXXXXX", + RIPEMD128 = "XXXXXX", + RIPEMD160 = "XXXXXX", + SHA1 = "XXXXXX", + SHA256 = "XXXXXX", + SHA384 = "XXXXXX", + SHA512 = "XXXXXX", + SpamSum = "XXXXXX", }; bool actual = self.PartialEquals(other); @@ -1383,35 +1379,35 @@ namespace SabreTools.Data.Extensions.Test { Rom self = new Rom { - [Rom.CRC16Key] = "XXXXXX", - [Rom.CRCKey] = string.Empty, - [Rom.CRC64Key] = "XXXXXX", - [Rom.MD2Key] = string.Empty, - [Rom.MD4Key] = "XXXXXX", - [Rom.MD5Key] = string.Empty, - [Rom.RIPEMD128Key] = "XXXXXX", - [Rom.RIPEMD160Key] = string.Empty, - [Rom.SHA1Key] = "XXXXXX", - [Rom.SHA256Key] = string.Empty, - [Rom.SHA384Key] = "XXXXXX", - [Rom.SHA512Key] = string.Empty, - [Rom.SpamSumKey] = "XXXXXX", + CRC16 = "XXXXXX", + CRC = string.Empty, + CRC64 = "XXXXXX", + MD2 = string.Empty, + MD4 = "XXXXXX", + MD5 = string.Empty, + RIPEMD128 = "XXXXXX", + RIPEMD160 = string.Empty, + SHA1 = "XXXXXX", + SHA256 = string.Empty, + SHA384 = "XXXXXX", + SHA512 = string.Empty, + SpamSum = "XXXXXX", }; Rom other = new Rom { - [Rom.CRC16Key] = string.Empty, - [Rom.CRCKey] = "XXXXXX", - [Rom.CRC64Key] = string.Empty, - [Rom.MD2Key] = "XXXXXX", - [Rom.MD4Key] = string.Empty, - [Rom.MD5Key] = "XXXXXX", - [Rom.RIPEMD128Key] = string.Empty, - [Rom.RIPEMD160Key] = "XXXXXX", - [Rom.SHA1Key] = string.Empty, - [Rom.SHA256Key] = "XXXXXX", - [Rom.SHA384Key] = string.Empty, - [Rom.SHA512Key] = "XXXXXX", - [Rom.SpamSumKey] = string.Empty, + CRC16 = string.Empty, + CRC = "XXXXXX", + CRC64 = string.Empty, + MD2 = "XXXXXX", + MD4 = string.Empty, + MD5 = "XXXXXX", + RIPEMD128 = string.Empty, + RIPEMD160 = "XXXXXX", + SHA1 = string.Empty, + SHA256 = "XXXXXX", + SHA384 = string.Empty, + SHA512 = "XXXXXX", + SpamSum = string.Empty, }; bool actual = self.HashMatch(other); @@ -1423,35 +1419,35 @@ namespace SabreTools.Data.Extensions.Test { Rom self = new Rom { - [Rom.CRC16Key] = "XXXXXX", - [Rom.CRCKey] = string.Empty, - [Rom.CRC64Key] = string.Empty, - [Rom.MD2Key] = string.Empty, - [Rom.MD4Key] = string.Empty, - [Rom.MD5Key] = string.Empty, - [Rom.RIPEMD128Key] = string.Empty, - [Rom.RIPEMD160Key] = string.Empty, - [Rom.SHA1Key] = string.Empty, - [Rom.SHA256Key] = string.Empty, - [Rom.SHA384Key] = string.Empty, - [Rom.SHA512Key] = string.Empty, - [Rom.SpamSumKey] = string.Empty, + CRC16 = "XXXXXX", + CRC = string.Empty, + CRC64 = string.Empty, + MD2 = string.Empty, + MD4 = string.Empty, + MD5 = string.Empty, + RIPEMD128 = string.Empty, + RIPEMD160 = string.Empty, + SHA1 = string.Empty, + SHA256 = string.Empty, + SHA384 = string.Empty, + SHA512 = string.Empty, + SpamSum = string.Empty, }; Rom other = new Rom { - [Rom.CRC16Key] = "XXXXXX", - [Rom.CRCKey] = "XXXXXX", - [Rom.CRC64Key] = "XXXXXX", - [Rom.MD2Key] = "XXXXXX", - [Rom.MD4Key] = "XXXXXX", - [Rom.MD5Key] = "XXXXXX", - [Rom.RIPEMD128Key] = "XXXXXX", - [Rom.RIPEMD160Key] = "XXXXXX", - [Rom.SHA1Key] = "XXXXXX", - [Rom.SHA256Key] = "XXXXXX", - [Rom.SHA384Key] = "XXXXXX", - [Rom.SHA512Key] = "XXXXXX", - [Rom.SpamSumKey] = "XXXXXX", + CRC16 = "XXXXXX", + CRC = "XXXXXX", + CRC64 = "XXXXXX", + MD2 = "XXXXXX", + MD4 = "XXXXXX", + MD5 = "XXXXXX", + RIPEMD128 = "XXXXXX", + RIPEMD160 = "XXXXXX", + SHA1 = "XXXXXX", + SHA256 = "XXXXXX", + SHA384 = "XXXXXX", + SHA512 = "XXXXXX", + SpamSum = "XXXXXX", }; bool actual = self.HashMatch(other); @@ -1463,35 +1459,35 @@ namespace SabreTools.Data.Extensions.Test { Rom self = new Rom { - [Rom.CRC16Key] = string.Empty, - [Rom.CRCKey] = "XXXXXX", - [Rom.CRC64Key] = string.Empty, - [Rom.MD2Key] = string.Empty, - [Rom.MD4Key] = string.Empty, - [Rom.MD5Key] = string.Empty, - [Rom.RIPEMD128Key] = string.Empty, - [Rom.RIPEMD160Key] = string.Empty, - [Rom.SHA1Key] = string.Empty, - [Rom.SHA256Key] = string.Empty, - [Rom.SHA384Key] = string.Empty, - [Rom.SHA512Key] = string.Empty, - [Rom.SpamSumKey] = string.Empty, + CRC16 = string.Empty, + CRC = "XXXXXX", + CRC64 = string.Empty, + MD2 = string.Empty, + MD4 = string.Empty, + MD5 = string.Empty, + RIPEMD128 = string.Empty, + RIPEMD160 = string.Empty, + SHA1 = string.Empty, + SHA256 = string.Empty, + SHA384 = string.Empty, + SHA512 = string.Empty, + SpamSum = string.Empty, }; Rom other = new Rom { - [Rom.CRC16Key] = "XXXXXX", - [Rom.CRCKey] = "XXXXXX", - [Rom.CRC64Key] = "XXXXXX", - [Rom.MD2Key] = "XXXXXX", - [Rom.MD4Key] = "XXXXXX", - [Rom.MD5Key] = "XXXXXX", - [Rom.RIPEMD128Key] = "XXXXXX", - [Rom.RIPEMD160Key] = "XXXXXX", - [Rom.SHA1Key] = "XXXXXX", - [Rom.SHA256Key] = "XXXXXX", - [Rom.SHA384Key] = "XXXXXX", - [Rom.SHA512Key] = "XXXXXX", - [Rom.SpamSumKey] = "XXXXXX", + CRC16 = "XXXXXX", + CRC = "XXXXXX", + CRC64 = "XXXXXX", + MD2 = "XXXXXX", + MD4 = "XXXXXX", + MD5 = "XXXXXX", + RIPEMD128 = "XXXXXX", + RIPEMD160 = "XXXXXX", + SHA1 = "XXXXXX", + SHA256 = "XXXXXX", + SHA384 = "XXXXXX", + SHA512 = "XXXXXX", + SpamSum = "XXXXXX", }; bool actual = self.HashMatch(other); @@ -1503,35 +1499,35 @@ namespace SabreTools.Data.Extensions.Test { Rom self = new Rom { - [Rom.CRC16Key] = string.Empty, - [Rom.CRCKey] = string.Empty, - [Rom.CRC64Key] = "XXXXXX", - [Rom.MD2Key] = string.Empty, - [Rom.MD4Key] = string.Empty, - [Rom.MD5Key] = string.Empty, - [Rom.RIPEMD128Key] = string.Empty, - [Rom.RIPEMD160Key] = string.Empty, - [Rom.SHA1Key] = string.Empty, - [Rom.SHA256Key] = string.Empty, - [Rom.SHA384Key] = string.Empty, - [Rom.SHA512Key] = string.Empty, - [Rom.SpamSumKey] = string.Empty, + CRC16 = string.Empty, + CRC = string.Empty, + CRC64 = "XXXXXX", + MD2 = string.Empty, + MD4 = string.Empty, + MD5 = string.Empty, + RIPEMD128 = string.Empty, + RIPEMD160 = string.Empty, + SHA1 = string.Empty, + SHA256 = string.Empty, + SHA384 = string.Empty, + SHA512 = string.Empty, + SpamSum = string.Empty, }; Rom other = new Rom { - [Rom.CRC16Key] = "XXXXXX", - [Rom.CRCKey] = "XXXXXX", - [Rom.CRC64Key] = "XXXXXX", - [Rom.MD2Key] = "XXXXXX", - [Rom.MD4Key] = "XXXXXX", - [Rom.MD5Key] = "XXXXXX", - [Rom.RIPEMD128Key] = "XXXXXX", - [Rom.RIPEMD160Key] = "XXXXXX", - [Rom.SHA1Key] = "XXXXXX", - [Rom.SHA256Key] = "XXXXXX", - [Rom.SHA384Key] = "XXXXXX", - [Rom.SHA512Key] = "XXXXXX", - [Rom.SpamSumKey] = "XXXXXX", + CRC16 = "XXXXXX", + CRC = "XXXXXX", + CRC64 = "XXXXXX", + MD2 = "XXXXXX", + MD4 = "XXXXXX", + MD5 = "XXXXXX", + RIPEMD128 = "XXXXXX", + RIPEMD160 = "XXXXXX", + SHA1 = "XXXXXX", + SHA256 = "XXXXXX", + SHA384 = "XXXXXX", + SHA512 = "XXXXXX", + SpamSum = "XXXXXX", }; bool actual = self.HashMatch(other); @@ -1543,35 +1539,35 @@ namespace SabreTools.Data.Extensions.Test { Rom self = new Rom { - [Rom.CRC16Key] = string.Empty, - [Rom.CRCKey] = string.Empty, - [Rom.CRC64Key] = string.Empty, - [Rom.MD2Key] = "XXXXXX", - [Rom.MD4Key] = string.Empty, - [Rom.MD5Key] = string.Empty, - [Rom.RIPEMD128Key] = string.Empty, - [Rom.RIPEMD160Key] = string.Empty, - [Rom.SHA1Key] = string.Empty, - [Rom.SHA256Key] = string.Empty, - [Rom.SHA384Key] = string.Empty, - [Rom.SHA512Key] = string.Empty, - [Rom.SpamSumKey] = string.Empty, + CRC16 = string.Empty, + CRC = string.Empty, + CRC64 = string.Empty, + MD2 = "XXXXXX", + MD4 = string.Empty, + MD5 = string.Empty, + RIPEMD128 = string.Empty, + RIPEMD160 = string.Empty, + SHA1 = string.Empty, + SHA256 = string.Empty, + SHA384 = string.Empty, + SHA512 = string.Empty, + SpamSum = string.Empty, }; Rom other = new Rom { - [Rom.CRC16Key] = "XXXXXX", - [Rom.CRCKey] = "XXXXXX", - [Rom.CRC64Key] = "XXXXXX", - [Rom.MD2Key] = "XXXXXX", - [Rom.MD4Key] = "XXXXXX", - [Rom.MD5Key] = "XXXXXX", - [Rom.RIPEMD128Key] = "XXXXXX", - [Rom.RIPEMD160Key] = "XXXXXX", - [Rom.SHA1Key] = "XXXXXX", - [Rom.SHA256Key] = "XXXXXX", - [Rom.SHA384Key] = "XXXXXX", - [Rom.SHA512Key] = "XXXXXX", - [Rom.SpamSumKey] = "XXXXXX", + CRC16 = "XXXXXX", + CRC = "XXXXXX", + CRC64 = "XXXXXX", + MD2 = "XXXXXX", + MD4 = "XXXXXX", + MD5 = "XXXXXX", + RIPEMD128 = "XXXXXX", + RIPEMD160 = "XXXXXX", + SHA1 = "XXXXXX", + SHA256 = "XXXXXX", + SHA384 = "XXXXXX", + SHA512 = "XXXXXX", + SpamSum = "XXXXXX", }; bool actual = self.HashMatch(other); @@ -1583,35 +1579,35 @@ namespace SabreTools.Data.Extensions.Test { Rom self = new Rom { - [Rom.CRC16Key] = string.Empty, - [Rom.CRCKey] = string.Empty, - [Rom.CRC64Key] = string.Empty, - [Rom.MD2Key] = string.Empty, - [Rom.MD4Key] = "XXXXXX", - [Rom.MD5Key] = string.Empty, - [Rom.RIPEMD128Key] = string.Empty, - [Rom.RIPEMD160Key] = string.Empty, - [Rom.SHA1Key] = string.Empty, - [Rom.SHA256Key] = string.Empty, - [Rom.SHA384Key] = string.Empty, - [Rom.SHA512Key] = string.Empty, - [Rom.SpamSumKey] = string.Empty, + CRC16 = string.Empty, + CRC = string.Empty, + CRC64 = string.Empty, + MD2 = string.Empty, + MD4 = "XXXXXX", + MD5 = string.Empty, + RIPEMD128 = string.Empty, + RIPEMD160 = string.Empty, + SHA1 = string.Empty, + SHA256 = string.Empty, + SHA384 = string.Empty, + SHA512 = string.Empty, + SpamSum = string.Empty, }; Rom other = new Rom { - [Rom.CRC16Key] = "XXXXXX", - [Rom.CRCKey] = "XXXXXX", - [Rom.CRC64Key] = "XXXXXX", - [Rom.MD2Key] = "XXXXXX", - [Rom.MD4Key] = "XXXXXX", - [Rom.MD5Key] = "XXXXXX", - [Rom.RIPEMD128Key] = "XXXXXX", - [Rom.RIPEMD160Key] = "XXXXXX", - [Rom.SHA1Key] = "XXXXXX", - [Rom.SHA256Key] = "XXXXXX", - [Rom.SHA384Key] = "XXXXXX", - [Rom.SHA512Key] = "XXXXXX", - [Rom.SpamSumKey] = "XXXXXX", + CRC16 = "XXXXXX", + CRC = "XXXXXX", + CRC64 = "XXXXXX", + MD2 = "XXXXXX", + MD4 = "XXXXXX", + MD5 = "XXXXXX", + RIPEMD128 = "XXXXXX", + RIPEMD160 = "XXXXXX", + SHA1 = "XXXXXX", + SHA256 = "XXXXXX", + SHA384 = "XXXXXX", + SHA512 = "XXXXXX", + SpamSum = "XXXXXX", }; bool actual = self.HashMatch(other); @@ -1623,35 +1619,35 @@ namespace SabreTools.Data.Extensions.Test { Rom self = new Rom { - [Rom.CRC16Key] = string.Empty, - [Rom.CRCKey] = string.Empty, - [Rom.CRC64Key] = string.Empty, - [Rom.MD2Key] = string.Empty, - [Rom.MD4Key] = string.Empty, - [Rom.MD5Key] = "XXXXXX", - [Rom.RIPEMD128Key] = string.Empty, - [Rom.RIPEMD160Key] = string.Empty, - [Rom.SHA1Key] = string.Empty, - [Rom.SHA256Key] = string.Empty, - [Rom.SHA384Key] = string.Empty, - [Rom.SHA512Key] = string.Empty, - [Rom.SpamSumKey] = string.Empty, + CRC16 = string.Empty, + CRC = string.Empty, + CRC64 = string.Empty, + MD2 = string.Empty, + MD4 = string.Empty, + MD5 = "XXXXXX", + RIPEMD128 = string.Empty, + RIPEMD160 = string.Empty, + SHA1 = string.Empty, + SHA256 = string.Empty, + SHA384 = string.Empty, + SHA512 = string.Empty, + SpamSum = string.Empty, }; Rom other = new Rom { - [Rom.CRC16Key] = "XXXXXX", - [Rom.CRCKey] = "XXXXXX", - [Rom.CRC64Key] = "XXXXXX", - [Rom.MD2Key] = "XXXXXX", - [Rom.MD4Key] = "XXXXXX", - [Rom.MD5Key] = "XXXXXX", - [Rom.RIPEMD128Key] = "XXXXXX", - [Rom.RIPEMD160Key] = "XXXXXX", - [Rom.SHA1Key] = "XXXXXX", - [Rom.SHA256Key] = "XXXXXX", - [Rom.SHA384Key] = "XXXXXX", - [Rom.SHA512Key] = "XXXXXX", - [Rom.SpamSumKey] = "XXXXXX", + CRC16 = "XXXXXX", + CRC = "XXXXXX", + CRC64 = "XXXXXX", + MD2 = "XXXXXX", + MD4 = "XXXXXX", + MD5 = "XXXXXX", + RIPEMD128 = "XXXXXX", + RIPEMD160 = "XXXXXX", + SHA1 = "XXXXXX", + SHA256 = "XXXXXX", + SHA384 = "XXXXXX", + SHA512 = "XXXXXX", + SpamSum = "XXXXXX", }; bool actual = self.HashMatch(other); @@ -1663,35 +1659,35 @@ namespace SabreTools.Data.Extensions.Test { Rom self = new Rom { - [Rom.CRC16Key] = string.Empty, - [Rom.CRCKey] = string.Empty, - [Rom.CRC64Key] = string.Empty, - [Rom.MD2Key] = string.Empty, - [Rom.MD4Key] = string.Empty, - [Rom.MD5Key] = string.Empty, - [Rom.RIPEMD128Key] = "XXXXXX", - [Rom.RIPEMD160Key] = string.Empty, - [Rom.SHA1Key] = string.Empty, - [Rom.SHA256Key] = string.Empty, - [Rom.SHA384Key] = string.Empty, - [Rom.SHA512Key] = string.Empty, - [Rom.SpamSumKey] = string.Empty, + CRC16 = string.Empty, + CRC = string.Empty, + CRC64 = string.Empty, + MD2 = string.Empty, + MD4 = string.Empty, + MD5 = string.Empty, + RIPEMD128 = "XXXXXX", + RIPEMD160 = string.Empty, + SHA1 = string.Empty, + SHA256 = string.Empty, + SHA384 = string.Empty, + SHA512 = string.Empty, + SpamSum = string.Empty, }; Rom other = new Rom { - [Rom.CRC16Key] = "XXXXXX", - [Rom.CRCKey] = "XXXXXX", - [Rom.CRC64Key] = "XXXXXX", - [Rom.MD2Key] = "XXXXXX", - [Rom.MD4Key] = "XXXXXX", - [Rom.MD5Key] = "XXXXXX", - [Rom.RIPEMD128Key] = "XXXXXX", - [Rom.RIPEMD160Key] = "XXXXXX", - [Rom.SHA1Key] = "XXXXXX", - [Rom.SHA256Key] = "XXXXXX", - [Rom.SHA384Key] = "XXXXXX", - [Rom.SHA512Key] = "XXXXXX", - [Rom.SpamSumKey] = "XXXXXX", + CRC16 = "XXXXXX", + CRC = "XXXXXX", + CRC64 = "XXXXXX", + MD2 = "XXXXXX", + MD4 = "XXXXXX", + MD5 = "XXXXXX", + RIPEMD128 = "XXXXXX", + RIPEMD160 = "XXXXXX", + SHA1 = "XXXXXX", + SHA256 = "XXXXXX", + SHA384 = "XXXXXX", + SHA512 = "XXXXXX", + SpamSum = "XXXXXX", }; bool actual = self.HashMatch(other); @@ -1703,35 +1699,35 @@ namespace SabreTools.Data.Extensions.Test { Rom self = new Rom { - [Rom.CRC16Key] = string.Empty, - [Rom.CRCKey] = string.Empty, - [Rom.CRC64Key] = string.Empty, - [Rom.MD2Key] = string.Empty, - [Rom.MD4Key] = string.Empty, - [Rom.MD5Key] = string.Empty, - [Rom.RIPEMD128Key] = string.Empty, - [Rom.RIPEMD160Key] = "XXXXXX", - [Rom.SHA1Key] = string.Empty, - [Rom.SHA256Key] = string.Empty, - [Rom.SHA384Key] = string.Empty, - [Rom.SHA512Key] = string.Empty, - [Rom.SpamSumKey] = string.Empty, + CRC16 = string.Empty, + CRC = string.Empty, + CRC64 = string.Empty, + MD2 = string.Empty, + MD4 = string.Empty, + MD5 = string.Empty, + RIPEMD128 = string.Empty, + RIPEMD160 = "XXXXXX", + SHA1 = string.Empty, + SHA256 = string.Empty, + SHA384 = string.Empty, + SHA512 = string.Empty, + SpamSum = string.Empty, }; Rom other = new Rom { - [Rom.CRC16Key] = "XXXXXX", - [Rom.CRCKey] = "XXXXXX", - [Rom.CRC64Key] = "XXXXXX", - [Rom.MD2Key] = "XXXXXX", - [Rom.MD4Key] = "XXXXXX", - [Rom.MD5Key] = "XXXXXX", - [Rom.RIPEMD128Key] = "XXXXXX", - [Rom.RIPEMD160Key] = "XXXXXX", - [Rom.SHA1Key] = "XXXXXX", - [Rom.SHA256Key] = "XXXXXX", - [Rom.SHA384Key] = "XXXXXX", - [Rom.SHA512Key] = "XXXXXX", - [Rom.SpamSumKey] = "XXXXXX", + CRC16 = "XXXXXX", + CRC = "XXXXXX", + CRC64 = "XXXXXX", + MD2 = "XXXXXX", + MD4 = "XXXXXX", + MD5 = "XXXXXX", + RIPEMD128 = "XXXXXX", + RIPEMD160 = "XXXXXX", + SHA1 = "XXXXXX", + SHA256 = "XXXXXX", + SHA384 = "XXXXXX", + SHA512 = "XXXXXX", + SpamSum = "XXXXXX", }; bool actual = self.HashMatch(other); @@ -1743,35 +1739,35 @@ namespace SabreTools.Data.Extensions.Test { Rom self = new Rom { - [Rom.CRC16Key] = string.Empty, - [Rom.CRCKey] = string.Empty, - [Rom.CRC64Key] = string.Empty, - [Rom.MD2Key] = string.Empty, - [Rom.MD4Key] = string.Empty, - [Rom.MD5Key] = string.Empty, - [Rom.RIPEMD128Key] = string.Empty, - [Rom.RIPEMD160Key] = string.Empty, - [Rom.SHA1Key] = "XXXXXX", - [Rom.SHA256Key] = string.Empty, - [Rom.SHA384Key] = string.Empty, - [Rom.SHA512Key] = string.Empty, - [Rom.SpamSumKey] = string.Empty, + CRC16 = string.Empty, + CRC = string.Empty, + CRC64 = string.Empty, + MD2 = string.Empty, + MD4 = string.Empty, + MD5 = string.Empty, + RIPEMD128 = string.Empty, + RIPEMD160 = string.Empty, + SHA1 = "XXXXXX", + SHA256 = string.Empty, + SHA384 = string.Empty, + SHA512 = string.Empty, + SpamSum = string.Empty, }; Rom other = new Rom { - [Rom.CRC16Key] = "XXXXXX", - [Rom.CRCKey] = "XXXXXX", - [Rom.CRC64Key] = "XXXXXX", - [Rom.MD2Key] = "XXXXXX", - [Rom.MD4Key] = "XXXXXX", - [Rom.MD5Key] = "XXXXXX", - [Rom.RIPEMD128Key] = "XXXXXX", - [Rom.RIPEMD160Key] = "XXXXXX", - [Rom.SHA1Key] = "XXXXXX", - [Rom.SHA256Key] = "XXXXXX", - [Rom.SHA384Key] = "XXXXXX", - [Rom.SHA512Key] = "XXXXXX", - [Rom.SpamSumKey] = "XXXXXX", + CRC16 = "XXXXXX", + CRC = "XXXXXX", + CRC64 = "XXXXXX", + MD2 = "XXXXXX", + MD4 = "XXXXXX", + MD5 = "XXXXXX", + RIPEMD128 = "XXXXXX", + RIPEMD160 = "XXXXXX", + SHA1 = "XXXXXX", + SHA256 = "XXXXXX", + SHA384 = "XXXXXX", + SHA512 = "XXXXXX", + SpamSum = "XXXXXX", }; bool actual = self.HashMatch(other); @@ -1783,35 +1779,35 @@ namespace SabreTools.Data.Extensions.Test { Rom self = new Rom { - [Rom.CRC16Key] = string.Empty, - [Rom.CRCKey] = string.Empty, - [Rom.CRC64Key] = string.Empty, - [Rom.MD2Key] = string.Empty, - [Rom.MD4Key] = string.Empty, - [Rom.MD5Key] = string.Empty, - [Rom.RIPEMD128Key] = string.Empty, - [Rom.RIPEMD160Key] = string.Empty, - [Rom.SHA1Key] = string.Empty, - [Rom.SHA256Key] = "XXXXXX", - [Rom.SHA384Key] = string.Empty, - [Rom.SHA512Key] = string.Empty, - [Rom.SpamSumKey] = string.Empty, + CRC16 = string.Empty, + CRC = string.Empty, + CRC64 = string.Empty, + MD2 = string.Empty, + MD4 = string.Empty, + MD5 = string.Empty, + RIPEMD128 = string.Empty, + RIPEMD160 = string.Empty, + SHA1 = string.Empty, + SHA256 = "XXXXXX", + SHA384 = string.Empty, + SHA512 = string.Empty, + SpamSum = string.Empty, }; Rom other = new Rom { - [Rom.CRC16Key] = "XXXXXX", - [Rom.CRCKey] = "XXXXXX", - [Rom.CRC64Key] = "XXXXXX", - [Rom.MD2Key] = "XXXXXX", - [Rom.MD4Key] = "XXXXXX", - [Rom.MD5Key] = "XXXXXX", - [Rom.RIPEMD128Key] = "XXXXXX", - [Rom.RIPEMD160Key] = "XXXXXX", - [Rom.SHA1Key] = "XXXXXX", - [Rom.SHA256Key] = "XXXXXX", - [Rom.SHA384Key] = "XXXXXX", - [Rom.SHA512Key] = "XXXXXX", - [Rom.SpamSumKey] = "XXXXXX", + CRC16 = "XXXXXX", + CRC = "XXXXXX", + CRC64 = "XXXXXX", + MD2 = "XXXXXX", + MD4 = "XXXXXX", + MD5 = "XXXXXX", + RIPEMD128 = "XXXXXX", + RIPEMD160 = "XXXXXX", + SHA1 = "XXXXXX", + SHA256 = "XXXXXX", + SHA384 = "XXXXXX", + SHA512 = "XXXXXX", + SpamSum = "XXXXXX", }; bool actual = self.HashMatch(other); @@ -1823,35 +1819,35 @@ namespace SabreTools.Data.Extensions.Test { Rom self = new Rom { - [Rom.CRC16Key] = string.Empty, - [Rom.CRCKey] = string.Empty, - [Rom.CRC64Key] = string.Empty, - [Rom.MD2Key] = string.Empty, - [Rom.MD4Key] = string.Empty, - [Rom.MD5Key] = string.Empty, - [Rom.RIPEMD128Key] = string.Empty, - [Rom.RIPEMD160Key] = string.Empty, - [Rom.SHA1Key] = string.Empty, - [Rom.SHA256Key] = string.Empty, - [Rom.SHA384Key] = "XXXXXX", - [Rom.SHA512Key] = string.Empty, - [Rom.SpamSumKey] = string.Empty, + CRC16 = string.Empty, + CRC = string.Empty, + CRC64 = string.Empty, + MD2 = string.Empty, + MD4 = string.Empty, + MD5 = string.Empty, + RIPEMD128 = string.Empty, + RIPEMD160 = string.Empty, + SHA1 = string.Empty, + SHA256 = string.Empty, + SHA384 = "XXXXXX", + SHA512 = string.Empty, + SpamSum = string.Empty, }; Rom other = new Rom { - [Rom.CRC16Key] = "XXXXXX", - [Rom.CRCKey] = "XXXXXX", - [Rom.CRC64Key] = "XXXXXX", - [Rom.MD2Key] = "XXXXXX", - [Rom.MD4Key] = "XXXXXX", - [Rom.MD5Key] = "XXXXXX", - [Rom.RIPEMD128Key] = "XXXXXX", - [Rom.RIPEMD160Key] = "XXXXXX", - [Rom.SHA1Key] = "XXXXXX", - [Rom.SHA256Key] = "XXXXXX", - [Rom.SHA384Key] = "XXXXXX", - [Rom.SHA512Key] = "XXXXXX", - [Rom.SpamSumKey] = "XXXXXX", + CRC16 = "XXXXXX", + CRC = "XXXXXX", + CRC64 = "XXXXXX", + MD2 = "XXXXXX", + MD4 = "XXXXXX", + MD5 = "XXXXXX", + RIPEMD128 = "XXXXXX", + RIPEMD160 = "XXXXXX", + SHA1 = "XXXXXX", + SHA256 = "XXXXXX", + SHA384 = "XXXXXX", + SHA512 = "XXXXXX", + SpamSum = "XXXXXX", }; bool actual = self.HashMatch(other); @@ -1863,35 +1859,35 @@ namespace SabreTools.Data.Extensions.Test { Rom self = new Rom { - [Rom.CRC16Key] = string.Empty, - [Rom.CRCKey] = string.Empty, - [Rom.CRC64Key] = string.Empty, - [Rom.MD2Key] = string.Empty, - [Rom.MD4Key] = string.Empty, - [Rom.MD5Key] = string.Empty, - [Rom.RIPEMD128Key] = string.Empty, - [Rom.RIPEMD160Key] = string.Empty, - [Rom.SHA1Key] = string.Empty, - [Rom.SHA256Key] = string.Empty, - [Rom.SHA384Key] = string.Empty, - [Rom.SHA512Key] = "XXXXXX", - [Rom.SpamSumKey] = string.Empty, + CRC16 = string.Empty, + CRC = string.Empty, + CRC64 = string.Empty, + MD2 = string.Empty, + MD4 = string.Empty, + MD5 = string.Empty, + RIPEMD128 = string.Empty, + RIPEMD160 = string.Empty, + SHA1 = string.Empty, + SHA256 = string.Empty, + SHA384 = string.Empty, + SHA512 = "XXXXXX", + SpamSum = string.Empty, }; Rom other = new Rom { - [Rom.CRC16Key] = "XXXXXX", - [Rom.CRCKey] = "XXXXXX", - [Rom.CRC64Key] = "XXXXXX", - [Rom.MD2Key] = "XXXXXX", - [Rom.MD4Key] = "XXXXXX", - [Rom.MD5Key] = "XXXXXX", - [Rom.RIPEMD128Key] = "XXXXXX", - [Rom.RIPEMD160Key] = "XXXXXX", - [Rom.SHA1Key] = "XXXXXX", - [Rom.SHA256Key] = "XXXXXX", - [Rom.SHA384Key] = "XXXXXX", - [Rom.SHA512Key] = "XXXXXX", - [Rom.SpamSumKey] = "XXXXXX", + CRC16 = "XXXXXX", + CRC = "XXXXXX", + CRC64 = "XXXXXX", + MD2 = "XXXXXX", + MD4 = "XXXXXX", + MD5 = "XXXXXX", + RIPEMD128 = "XXXXXX", + RIPEMD160 = "XXXXXX", + SHA1 = "XXXXXX", + SHA256 = "XXXXXX", + SHA384 = "XXXXXX", + SHA512 = "XXXXXX", + SpamSum = "XXXXXX", }; bool actual = self.HashMatch(other); @@ -1903,35 +1899,35 @@ namespace SabreTools.Data.Extensions.Test { Rom self = new Rom { - [Rom.CRC16Key] = string.Empty, - [Rom.CRCKey] = string.Empty, - [Rom.CRC64Key] = string.Empty, - [Rom.MD2Key] = string.Empty, - [Rom.MD4Key] = string.Empty, - [Rom.MD5Key] = string.Empty, - [Rom.RIPEMD128Key] = string.Empty, - [Rom.RIPEMD160Key] = string.Empty, - [Rom.SHA1Key] = string.Empty, - [Rom.SHA256Key] = string.Empty, - [Rom.SHA384Key] = string.Empty, - [Rom.SHA512Key] = string.Empty, - [Rom.SpamSumKey] = "XXXXXX", + CRC16 = string.Empty, + CRC = string.Empty, + CRC64 = string.Empty, + MD2 = string.Empty, + MD4 = string.Empty, + MD5 = string.Empty, + RIPEMD128 = string.Empty, + RIPEMD160 = string.Empty, + SHA1 = string.Empty, + SHA256 = string.Empty, + SHA384 = string.Empty, + SHA512 = string.Empty, + SpamSum = "XXXXXX", }; Rom other = new Rom { - [Rom.CRC16Key] = "XXXXXX", - [Rom.CRCKey] = "XXXXXX", - [Rom.CRC64Key] = "XXXXXX", - [Rom.MD2Key] = "XXXXXX", - [Rom.MD4Key] = "XXXXXX", - [Rom.MD5Key] = "XXXXXX", - [Rom.RIPEMD128Key] = "XXXXXX", - [Rom.RIPEMD160Key] = "XXXXXX", - [Rom.SHA1Key] = "XXXXXX", - [Rom.SHA256Key] = "XXXXXX", - [Rom.SHA384Key] = "XXXXXX", - [Rom.SHA512Key] = "XXXXXX", - [Rom.SpamSumKey] = "XXXXXX", + CRC16 = "XXXXXX", + CRC = "XXXXXX", + CRC64 = "XXXXXX", + MD2 = "XXXXXX", + MD4 = "XXXXXX", + MD5 = "XXXXXX", + RIPEMD128 = "XXXXXX", + RIPEMD160 = "XXXXXX", + SHA1 = "XXXXXX", + SHA256 = "XXXXXX", + SHA384 = "XXXXXX", + SHA512 = "XXXXXX", + SpamSum = "XXXXXX", }; bool actual = self.HashMatch(other); @@ -1943,35 +1939,35 @@ namespace SabreTools.Data.Extensions.Test { Rom self = new Rom { - [Rom.CRC16Key] = "XXXXXX", - [Rom.CRCKey] = "XXXXXX", - [Rom.CRC64Key] = "XXXXXX", - [Rom.MD2Key] = "XXXXXX", - [Rom.MD4Key] = "XXXXXX", - [Rom.MD5Key] = "XXXXXX", - [Rom.RIPEMD128Key] = "XXXXXX", - [Rom.RIPEMD160Key] = "XXXXXX", - [Rom.SHA1Key] = "XXXXXX", - [Rom.SHA256Key] = "XXXXXX", - [Rom.SHA384Key] = "XXXXXX", - [Rom.SHA512Key] = "XXXXXX", - [Rom.SpamSumKey] = "XXXXXX", + CRC16 = "XXXXXX", + CRC = "XXXXXX", + CRC64 = "XXXXXX", + MD2 = "XXXXXX", + MD4 = "XXXXXX", + MD5 = "XXXXXX", + RIPEMD128 = "XXXXXX", + RIPEMD160 = "XXXXXX", + SHA1 = "XXXXXX", + SHA256 = "XXXXXX", + SHA384 = "XXXXXX", + SHA512 = "XXXXXX", + SpamSum = "XXXXXX", }; Rom other = new Rom { - [Rom.CRC16Key] = "XXXXXX", - [Rom.CRCKey] = "XXXXXX", - [Rom.CRC64Key] = "XXXXXX", - [Rom.MD2Key] = "XXXXXX", - [Rom.MD4Key] = "XXXXXX", - [Rom.MD5Key] = "XXXXXX", - [Rom.RIPEMD128Key] = "XXXXXX", - [Rom.RIPEMD160Key] = "XXXXXX", - [Rom.SHA1Key] = "XXXXXX", - [Rom.SHA256Key] = "XXXXXX", - [Rom.SHA384Key] = "XXXXXX", - [Rom.SHA512Key] = "XXXXXX", - [Rom.SpamSumKey] = "XXXXXX", + CRC16 = "XXXXXX", + CRC = "XXXXXX", + CRC64 = "XXXXXX", + MD2 = "XXXXXX", + MD4 = "XXXXXX", + MD5 = "XXXXXX", + RIPEMD128 = "XXXXXX", + RIPEMD160 = "XXXXXX", + SHA1 = "XXXXXX", + SHA256 = "XXXXXX", + SHA384 = "XXXXXX", + SHA512 = "XXXXXX", + SpamSum = "XXXXXX", }; bool actual = self.HashMatch(other); @@ -2153,19 +2149,19 @@ namespace SabreTools.Data.Extensions.Test { var self = new Rom { - [Rom.CRC16Key] = "XXXXXX", - [Rom.CRCKey] = "XXXXXX", - [Rom.CRC64Key] = "XXXXXX", - [Rom.MD2Key] = "XXXXXX", - [Rom.MD4Key] = "XXXXXX", - [Rom.MD5Key] = "XXXXXX", - [Rom.RIPEMD128Key] = "XXXXXX", - [Rom.RIPEMD160Key] = "XXXXXX", - [Rom.SHA1Key] = "XXXXXX", - [Rom.SHA256Key] = "XXXXXX", - [Rom.SHA384Key] = "XXXXXX", - [Rom.SHA512Key] = "XXXXXX", - [Rom.SpamSumKey] = "XXXXXX", + CRC16 = "XXXXXX", + CRC = "XXXXXX", + CRC64 = "XXXXXX", + MD2 = "XXXXXX", + MD4 = "XXXXXX", + MD5 = "XXXXXX", + RIPEMD128 = "XXXXXX", + RIPEMD160 = "XXXXXX", + SHA1 = "XXXXXX", + SHA256 = "XXXXXX", + SHA384 = "XXXXXX", + SHA512 = "XXXXXX", + SpamSum = "XXXXXX", }; bool actual = self.HasZeroHash(); @@ -2177,19 +2173,19 @@ namespace SabreTools.Data.Extensions.Test { var self = new Rom { - [Rom.CRC16Key] = HashType.CRC16.ZeroString, - [Rom.CRCKey] = string.Empty, - [Rom.CRC64Key] = string.Empty, - [Rom.MD2Key] = string.Empty, - [Rom.MD4Key] = string.Empty, - [Rom.MD5Key] = string.Empty, - [Rom.RIPEMD128Key] = string.Empty, - [Rom.RIPEMD160Key] = string.Empty, - [Rom.SHA1Key] = string.Empty, - [Rom.SHA256Key] = string.Empty, - [Rom.SHA384Key] = string.Empty, - [Rom.SHA512Key] = string.Empty, - [Rom.SpamSumKey] = string.Empty, + CRC16 = HashType.CRC16.ZeroString, + CRC = string.Empty, + CRC64 = string.Empty, + MD2 = string.Empty, + MD4 = string.Empty, + MD5 = string.Empty, + RIPEMD128 = string.Empty, + RIPEMD160 = string.Empty, + SHA1 = string.Empty, + SHA256 = string.Empty, + SHA384 = string.Empty, + SHA512 = string.Empty, + SpamSum = string.Empty, }; bool actual = self.HasZeroHash(); @@ -2201,19 +2197,19 @@ namespace SabreTools.Data.Extensions.Test { var self = new Rom { - [Rom.CRC16Key] = string.Empty, - [Rom.CRCKey] = HashType.CRC32.ZeroString, - [Rom.CRC64Key] = string.Empty, - [Rom.MD2Key] = string.Empty, - [Rom.MD4Key] = string.Empty, - [Rom.MD5Key] = string.Empty, - [Rom.RIPEMD128Key] = string.Empty, - [Rom.RIPEMD160Key] = string.Empty, - [Rom.SHA1Key] = string.Empty, - [Rom.SHA256Key] = string.Empty, - [Rom.SHA384Key] = string.Empty, - [Rom.SHA512Key] = string.Empty, - [Rom.SpamSumKey] = string.Empty, + CRC16 = string.Empty, + CRC = HashType.CRC32.ZeroString, + CRC64 = string.Empty, + MD2 = string.Empty, + MD4 = string.Empty, + MD5 = string.Empty, + RIPEMD128 = string.Empty, + RIPEMD160 = string.Empty, + SHA1 = string.Empty, + SHA256 = string.Empty, + SHA384 = string.Empty, + SHA512 = string.Empty, + SpamSum = string.Empty, }; bool actual = self.HasZeroHash(); @@ -2225,19 +2221,19 @@ namespace SabreTools.Data.Extensions.Test { var self = new Rom { - [Rom.CRC16Key] = string.Empty, - [Rom.CRCKey] = string.Empty, - [Rom.CRC64Key] = HashType.CRC64.ZeroString, - [Rom.MD2Key] = string.Empty, - [Rom.MD4Key] = string.Empty, - [Rom.MD5Key] = string.Empty, - [Rom.RIPEMD128Key] = string.Empty, - [Rom.RIPEMD160Key] = string.Empty, - [Rom.SHA1Key] = string.Empty, - [Rom.SHA256Key] = string.Empty, - [Rom.SHA384Key] = string.Empty, - [Rom.SHA512Key] = string.Empty, - [Rom.SpamSumKey] = string.Empty, + CRC16 = string.Empty, + CRC = string.Empty, + CRC64 = HashType.CRC64.ZeroString, + MD2 = string.Empty, + MD4 = string.Empty, + MD5 = string.Empty, + RIPEMD128 = string.Empty, + RIPEMD160 = string.Empty, + SHA1 = string.Empty, + SHA256 = string.Empty, + SHA384 = string.Empty, + SHA512 = string.Empty, + SpamSum = string.Empty, }; bool actual = self.HasZeroHash(); @@ -2249,19 +2245,19 @@ namespace SabreTools.Data.Extensions.Test { var self = new Rom { - [Rom.CRC16Key] = string.Empty, - [Rom.CRCKey] = string.Empty, - [Rom.CRC64Key] = string.Empty, - [Rom.MD2Key] = HashType.MD2.ZeroString, - [Rom.MD4Key] = string.Empty, - [Rom.MD5Key] = string.Empty, - [Rom.RIPEMD128Key] = string.Empty, - [Rom.RIPEMD160Key] = string.Empty, - [Rom.SHA1Key] = string.Empty, - [Rom.SHA256Key] = string.Empty, - [Rom.SHA384Key] = string.Empty, - [Rom.SHA512Key] = string.Empty, - [Rom.SpamSumKey] = string.Empty, + CRC16 = string.Empty, + CRC = string.Empty, + CRC64 = string.Empty, + MD2 = HashType.MD2.ZeroString, + MD4 = string.Empty, + MD5 = string.Empty, + RIPEMD128 = string.Empty, + RIPEMD160 = string.Empty, + SHA1 = string.Empty, + SHA256 = string.Empty, + SHA384 = string.Empty, + SHA512 = string.Empty, + SpamSum = string.Empty, }; bool actual = self.HasZeroHash(); @@ -2273,19 +2269,19 @@ namespace SabreTools.Data.Extensions.Test { var self = new Rom { - [Rom.CRC16Key] = string.Empty, - [Rom.CRCKey] = string.Empty, - [Rom.CRC64Key] = string.Empty, - [Rom.MD2Key] = string.Empty, - [Rom.MD4Key] = HashType.MD4.ZeroString, - [Rom.MD5Key] = string.Empty, - [Rom.RIPEMD128Key] = string.Empty, - [Rom.RIPEMD160Key] = string.Empty, - [Rom.SHA1Key] = string.Empty, - [Rom.SHA256Key] = string.Empty, - [Rom.SHA384Key] = string.Empty, - [Rom.SHA512Key] = string.Empty, - [Rom.SpamSumKey] = string.Empty, + CRC16 = string.Empty, + CRC = string.Empty, + CRC64 = string.Empty, + MD2 = string.Empty, + MD4 = HashType.MD4.ZeroString, + MD5 = string.Empty, + RIPEMD128 = string.Empty, + RIPEMD160 = string.Empty, + SHA1 = string.Empty, + SHA256 = string.Empty, + SHA384 = string.Empty, + SHA512 = string.Empty, + SpamSum = string.Empty, }; bool actual = self.HasZeroHash(); @@ -2297,19 +2293,19 @@ namespace SabreTools.Data.Extensions.Test { var self = new Rom { - [Rom.CRC16Key] = string.Empty, - [Rom.CRCKey] = string.Empty, - [Rom.CRC64Key] = string.Empty, - [Rom.MD2Key] = string.Empty, - [Rom.MD4Key] = string.Empty, - [Rom.MD5Key] = HashType.MD5.ZeroString, - [Rom.RIPEMD128Key] = string.Empty, - [Rom.RIPEMD160Key] = string.Empty, - [Rom.SHA1Key] = string.Empty, - [Rom.SHA256Key] = string.Empty, - [Rom.SHA384Key] = string.Empty, - [Rom.SHA512Key] = string.Empty, - [Rom.SpamSumKey] = string.Empty, + CRC16 = string.Empty, + CRC = string.Empty, + CRC64 = string.Empty, + MD2 = string.Empty, + MD4 = string.Empty, + MD5 = HashType.MD5.ZeroString, + RIPEMD128 = string.Empty, + RIPEMD160 = string.Empty, + SHA1 = string.Empty, + SHA256 = string.Empty, + SHA384 = string.Empty, + SHA512 = string.Empty, + SpamSum = string.Empty, }; bool actual = self.HasZeroHash(); @@ -2321,19 +2317,19 @@ namespace SabreTools.Data.Extensions.Test { var self = new Rom { - [Rom.CRC16Key] = string.Empty, - [Rom.CRCKey] = string.Empty, - [Rom.CRC64Key] = string.Empty, - [Rom.MD2Key] = string.Empty, - [Rom.MD4Key] = string.Empty, - [Rom.MD5Key] = string.Empty, - [Rom.RIPEMD128Key] = HashType.RIPEMD128.ZeroString, - [Rom.RIPEMD160Key] = string.Empty, - [Rom.SHA1Key] = string.Empty, - [Rom.SHA256Key] = string.Empty, - [Rom.SHA384Key] = string.Empty, - [Rom.SHA512Key] = string.Empty, - [Rom.SpamSumKey] = string.Empty, + CRC16 = string.Empty, + CRC = string.Empty, + CRC64 = string.Empty, + MD2 = string.Empty, + MD4 = string.Empty, + MD5 = string.Empty, + RIPEMD128 = HashType.RIPEMD128.ZeroString, + RIPEMD160 = string.Empty, + SHA1 = string.Empty, + SHA256 = string.Empty, + SHA384 = string.Empty, + SHA512 = string.Empty, + SpamSum = string.Empty, }; bool actual = self.HasZeroHash(); @@ -2345,19 +2341,19 @@ namespace SabreTools.Data.Extensions.Test { var self = new Rom { - [Rom.CRC16Key] = string.Empty, - [Rom.CRCKey] = string.Empty, - [Rom.CRC64Key] = string.Empty, - [Rom.MD2Key] = string.Empty, - [Rom.MD4Key] = string.Empty, - [Rom.MD5Key] = string.Empty, - [Rom.RIPEMD128Key] = string.Empty, - [Rom.RIPEMD160Key] = HashType.RIPEMD160.ZeroString, - [Rom.SHA1Key] = string.Empty, - [Rom.SHA256Key] = string.Empty, - [Rom.SHA384Key] = string.Empty, - [Rom.SHA512Key] = string.Empty, - [Rom.SpamSumKey] = string.Empty, + CRC16 = string.Empty, + CRC = string.Empty, + CRC64 = string.Empty, + MD2 = string.Empty, + MD4 = string.Empty, + MD5 = string.Empty, + RIPEMD128 = string.Empty, + RIPEMD160 = HashType.RIPEMD160.ZeroString, + SHA1 = string.Empty, + SHA256 = string.Empty, + SHA384 = string.Empty, + SHA512 = string.Empty, + SpamSum = string.Empty, }; bool actual = self.HasZeroHash(); @@ -2369,19 +2365,19 @@ namespace SabreTools.Data.Extensions.Test { var self = new Rom { - [Rom.CRC16Key] = string.Empty, - [Rom.CRCKey] = string.Empty, - [Rom.CRC64Key] = string.Empty, - [Rom.MD2Key] = string.Empty, - [Rom.MD4Key] = string.Empty, - [Rom.MD5Key] = string.Empty, - [Rom.RIPEMD128Key] = string.Empty, - [Rom.RIPEMD160Key] = string.Empty, - [Rom.SHA1Key] = HashType.SHA1.ZeroString, - [Rom.SHA256Key] = string.Empty, - [Rom.SHA384Key] = string.Empty, - [Rom.SHA512Key] = string.Empty, - [Rom.SpamSumKey] = string.Empty, + CRC16 = string.Empty, + CRC = string.Empty, + CRC64 = string.Empty, + MD2 = string.Empty, + MD4 = string.Empty, + MD5 = string.Empty, + RIPEMD128 = string.Empty, + RIPEMD160 = string.Empty, + SHA1 = HashType.SHA1.ZeroString, + SHA256 = string.Empty, + SHA384 = string.Empty, + SHA512 = string.Empty, + SpamSum = string.Empty, }; bool actual = self.HasZeroHash(); @@ -2393,19 +2389,19 @@ namespace SabreTools.Data.Extensions.Test { var self = new Rom { - [Rom.CRC16Key] = string.Empty, - [Rom.CRCKey] = string.Empty, - [Rom.CRC64Key] = string.Empty, - [Rom.MD2Key] = string.Empty, - [Rom.MD4Key] = string.Empty, - [Rom.MD5Key] = string.Empty, - [Rom.RIPEMD128Key] = string.Empty, - [Rom.RIPEMD160Key] = string.Empty, - [Rom.SHA1Key] = string.Empty, - [Rom.SHA256Key] = HashType.SHA256.ZeroString, - [Rom.SHA384Key] = string.Empty, - [Rom.SHA512Key] = string.Empty, - [Rom.SpamSumKey] = string.Empty, + CRC16 = string.Empty, + CRC = string.Empty, + CRC64 = string.Empty, + MD2 = string.Empty, + MD4 = string.Empty, + MD5 = string.Empty, + RIPEMD128 = string.Empty, + RIPEMD160 = string.Empty, + SHA1 = string.Empty, + SHA256 = HashType.SHA256.ZeroString, + SHA384 = string.Empty, + SHA512 = string.Empty, + SpamSum = string.Empty, }; bool actual = self.HasZeroHash(); @@ -2417,19 +2413,19 @@ namespace SabreTools.Data.Extensions.Test { var self = new Rom { - [Rom.CRC16Key] = string.Empty, - [Rom.CRCKey] = string.Empty, - [Rom.CRC64Key] = string.Empty, - [Rom.MD2Key] = string.Empty, - [Rom.MD4Key] = string.Empty, - [Rom.MD5Key] = string.Empty, - [Rom.RIPEMD128Key] = string.Empty, - [Rom.RIPEMD160Key] = string.Empty, - [Rom.SHA1Key] = string.Empty, - [Rom.SHA256Key] = string.Empty, - [Rom.SHA384Key] = HashType.SHA384.ZeroString, - [Rom.SHA512Key] = string.Empty, - [Rom.SpamSumKey] = string.Empty, + CRC16 = string.Empty, + CRC = string.Empty, + CRC64 = string.Empty, + MD2 = string.Empty, + MD4 = string.Empty, + MD5 = string.Empty, + RIPEMD128 = string.Empty, + RIPEMD160 = string.Empty, + SHA1 = string.Empty, + SHA256 = string.Empty, + SHA384 = HashType.SHA384.ZeroString, + SHA512 = string.Empty, + SpamSum = string.Empty, }; bool actual = self.HasZeroHash(); @@ -2441,19 +2437,19 @@ namespace SabreTools.Data.Extensions.Test { var self = new Rom { - [Rom.CRC16Key] = string.Empty, - [Rom.CRCKey] = string.Empty, - [Rom.CRC64Key] = string.Empty, - [Rom.MD2Key] = string.Empty, - [Rom.MD4Key] = string.Empty, - [Rom.MD5Key] = string.Empty, - [Rom.RIPEMD128Key] = string.Empty, - [Rom.RIPEMD160Key] = string.Empty, - [Rom.SHA1Key] = string.Empty, - [Rom.SHA256Key] = string.Empty, - [Rom.SHA384Key] = string.Empty, - [Rom.SHA512Key] = HashType.SHA512.ZeroString, - [Rom.SpamSumKey] = string.Empty, + CRC16 = string.Empty, + CRC = string.Empty, + CRC64 = string.Empty, + MD2 = string.Empty, + MD4 = string.Empty, + MD5 = string.Empty, + RIPEMD128 = string.Empty, + RIPEMD160 = string.Empty, + SHA1 = string.Empty, + SHA256 = string.Empty, + SHA384 = string.Empty, + SHA512 = HashType.SHA512.ZeroString, + SpamSum = string.Empty, }; bool actual = self.HasZeroHash(); @@ -2465,19 +2461,19 @@ namespace SabreTools.Data.Extensions.Test { var self = new Rom { - [Rom.CRC16Key] = string.Empty, - [Rom.CRCKey] = string.Empty, - [Rom.CRC64Key] = string.Empty, - [Rom.MD2Key] = string.Empty, - [Rom.MD4Key] = string.Empty, - [Rom.MD5Key] = string.Empty, - [Rom.RIPEMD128Key] = string.Empty, - [Rom.RIPEMD160Key] = string.Empty, - [Rom.SHA1Key] = string.Empty, - [Rom.SHA256Key] = string.Empty, - [Rom.SHA384Key] = string.Empty, - [Rom.SHA512Key] = string.Empty, - [Rom.SpamSumKey] = HashType.SpamSum.ZeroString, + CRC16 = string.Empty, + CRC = string.Empty, + CRC64 = string.Empty, + MD2 = string.Empty, + MD4 = string.Empty, + MD5 = string.Empty, + RIPEMD128 = string.Empty, + RIPEMD160 = string.Empty, + SHA1 = string.Empty, + SHA256 = string.Empty, + SHA384 = string.Empty, + SHA512 = string.Empty, + SpamSum = HashType.SpamSum.ZeroString, }; bool actual = self.HasZeroHash(); @@ -2489,19 +2485,19 @@ namespace SabreTools.Data.Extensions.Test { var self = new Rom { - [Rom.CRC16Key] = HashType.CRC16.ZeroString, - [Rom.CRCKey] = HashType.CRC32.ZeroString, - [Rom.CRC64Key] = HashType.CRC64.ZeroString, - [Rom.MD2Key] = HashType.MD2.ZeroString, - [Rom.MD4Key] = HashType.MD4.ZeroString, - [Rom.MD5Key] = HashType.MD5.ZeroString, - [Rom.RIPEMD128Key] = HashType.RIPEMD128.ZeroString, - [Rom.RIPEMD160Key] = HashType.RIPEMD160.ZeroString, - [Rom.SHA1Key] = HashType.SHA1.ZeroString, - [Rom.SHA256Key] = HashType.SHA256.ZeroString, - [Rom.SHA384Key] = HashType.SHA384.ZeroString, - [Rom.SHA512Key] = HashType.SHA512.ZeroString, - [Rom.SpamSumKey] = HashType.SpamSum.ZeroString, + CRC16 = HashType.CRC16.ZeroString, + CRC = HashType.CRC32.ZeroString, + CRC64 = HashType.CRC64.ZeroString, + MD2 = HashType.MD2.ZeroString, + MD4 = HashType.MD4.ZeroString, + MD5 = HashType.MD5.ZeroString, + RIPEMD128 = HashType.RIPEMD128.ZeroString, + RIPEMD160 = HashType.RIPEMD160.ZeroString, + SHA1 = HashType.SHA1.ZeroString, + SHA256 = HashType.SHA256.ZeroString, + SHA384 = HashType.SHA384.ZeroString, + SHA512 = HashType.SHA512.ZeroString, + SpamSum = HashType.SpamSum.ZeroString, }; bool actual = self.HasZeroHash(); @@ -2574,19 +2570,19 @@ namespace SabreTools.Data.Extensions.Test var self = new Rom(); var other = new Rom { - [Rom.CRC16Key] = "XXXXXX", - [Rom.CRCKey] = "XXXXXX", - [Rom.CRC64Key] = "XXXXXX", - [Rom.MD2Key] = "XXXXXX", - [Rom.MD4Key] = "XXXXXX", - [Rom.MD5Key] = "XXXXXX", - [Rom.RIPEMD128Key] = "XXXXXX", - [Rom.RIPEMD160Key] = "XXXXXX", - [Rom.SHA1Key] = "XXXXXX", - [Rom.SHA256Key] = "XXXXXX", - [Rom.SHA384Key] = "XXXXXX", - [Rom.SHA512Key] = "XXXXXX", - [Rom.SpamSumKey] = "XXXXXX", + CRC16 = "XXXXXX", + CRC = "XXXXXX", + CRC64 = "XXXXXX", + MD2 = "XXXXXX", + MD4 = "XXXXXX", + MD5 = "XXXXXX", + RIPEMD128 = "XXXXXX", + RIPEMD160 = "XXXXXX", + SHA1 = "XXXXXX", + SHA256 = "XXXXXX", + SHA384 = "XXXXXX", + SHA512 = "XXXXXX", + SpamSum = "XXXXXX", }; self.FillMissingHashes(other); diff --git a/SabreTools.Data.Extensions/MetadataExtensions.cs b/SabreTools.Data.Extensions/MetadataExtensions.cs index f37f91f2..6788036a 100644 --- a/SabreTools.Data.Extensions/MetadataExtensions.cs +++ b/SabreTools.Data.Extensions/MetadataExtensions.cs @@ -29,12 +29,12 @@ namespace SabreTools.Data.Extensions return new Rom { Name = name, - [Rom.MergeKey] = disk.Merge, - [Rom.RegionKey] = disk.Region, + Merge = disk.Merge, + Region = disk.Region, Status = disk.Status, Optional = disk.Optional, - [Rom.MD5Key] = disk.MD5, - [Rom.SHA1Key] = disk.SHA1, + MD5 = disk.MD5, + SHA1 = disk.SHA1, }; } @@ -55,10 +55,10 @@ namespace SabreTools.Data.Extensions return new Rom { Name = name, - [Rom.MD5Key] = media.MD5, - [Rom.SHA1Key] = media.SHA1, - [Rom.SHA256Key] = media.SHA256, - [Rom.SpamSumKey] = media.SpamSum, + MD5 = media.MD5, + SHA1 = media.SHA1, + SHA256 = media.SHA256, + SpamSum = media.SpamSum, }; } @@ -244,56 +244,56 @@ namespace SabreTools.Data.Extensions return false; // Return if all hashes match according to merge rules - string? selfCrc16 = self.ReadString(Rom.CRC16Key); - string? otherCrc16 = other.ReadString(Rom.CRC16Key); + string? selfCrc16 = self.CRC16; + string? otherCrc16 = other.CRC16; bool conditionalCrc16 = ConditionalHashEquals(selfCrc16, otherCrc16); - string? selfCrc = self.ReadString(Rom.CRCKey); - string? otherCrc = other.ReadString(Rom.CRCKey); + string? selfCrc = self.CRC; + string? otherCrc = other.CRC; bool conditionalCrc = ConditionalHashEquals(selfCrc, otherCrc); - string? selfCrc64 = self.ReadString(Rom.CRC64Key); - string? otherCrc64 = other.ReadString(Rom.CRC64Key); + string? selfCrc64 = self.CRC64; + string? otherCrc64 = other.CRC64; bool conditionalCrc64 = ConditionalHashEquals(selfCrc64, otherCrc64); - string? selfMd2 = self.ReadString(Rom.MD2Key); - string? otherMd2 = other.ReadString(Rom.MD2Key); + string? selfMd2 = self.MD2; + string? otherMd2 = other.MD2; bool conditionalMd2 = ConditionalHashEquals(selfMd2, otherMd2); - string? selfMd4 = self.ReadString(Rom.MD4Key); - string? otherMd4 = other.ReadString(Rom.MD4Key); + string? selfMd4 = self.MD4; + string? otherMd4 = other.MD4; bool conditionalMd4 = ConditionalHashEquals(selfMd4, otherMd4); - string? selfMd5 = self.ReadString(Rom.MD5Key); - string? otherMd5 = other.ReadString(Rom.MD5Key); + string? selfMd5 = self.MD5; + string? otherMd5 = other.MD5; bool conditionalMd5 = ConditionalHashEquals(selfMd5, otherMd5); - string? selfRipeMD128 = self.ReadString(Rom.RIPEMD128Key); - string? otherRipeMD128 = other.ReadString(Rom.RIPEMD128Key); + string? selfRipeMD128 = self.RIPEMD128; + string? otherRipeMD128 = other.RIPEMD128; bool conditionaRipeMD128 = ConditionalHashEquals(selfRipeMD128, otherRipeMD128); - string? selfRipeMD160 = self.ReadString(Rom.RIPEMD160Key); - string? otherRipeMD160 = other.ReadString(Rom.RIPEMD160Key); + string? selfRipeMD160 = self.RIPEMD160; + string? otherRipeMD160 = other.RIPEMD160; bool conditionaRipeMD160 = ConditionalHashEquals(selfRipeMD160, otherRipeMD160); - string? selfSha1 = self.ReadString(Rom.SHA1Key); - string? otherSha1 = other.ReadString(Rom.SHA1Key); + string? selfSha1 = self.SHA1; + string? otherSha1 = other.SHA1; bool conditionalSha1 = ConditionalHashEquals(selfSha1, otherSha1); - string? selfSha256 = self.ReadString(Rom.SHA256Key); - string? otherSha256 = other.ReadString(Rom.SHA256Key); + string? selfSha256 = self.SHA256; + string? otherSha256 = other.SHA256; bool conditionalSha256 = ConditionalHashEquals(selfSha256, otherSha256); - string? selfSha384 = self.ReadString(Rom.SHA384Key); - string? otherSha384 = other.ReadString(Rom.SHA384Key); + string? selfSha384 = self.SHA384; + string? otherSha384 = other.SHA384; bool conditionalSha384 = ConditionalHashEquals(selfSha384, otherSha384); - string? selfSha512 = self.ReadString(Rom.SHA512Key); - string? otherSha512 = other.ReadString(Rom.SHA512Key); + string? selfSha512 = self.SHA512; + string? otherSha512 = other.SHA512; bool conditionalSha512 = ConditionalHashEquals(selfSha512, otherSha512); - string? selfSpamSum = self.ReadString(Rom.SpamSumKey); - string? otherSpamSum = other.ReadString(Rom.SpamSumKey); + string? selfSpamSum = self.SpamSum; + string? otherSpamSum = other.SpamSum; bool conditionalSpamSum = ConditionalHashEquals(selfSpamSum, otherSpamSum); return conditionalCrc16 @@ -344,19 +344,19 @@ namespace SabreTools.Data.Extensions /// public static bool HasHashes(this Rom rom) { - bool crc16Null = string.IsNullOrEmpty(rom.ReadString(Rom.CRC16Key)); - bool crcNull = string.IsNullOrEmpty(rom.ReadString(Rom.CRCKey)); - bool crc64Null = string.IsNullOrEmpty(rom.ReadString(Rom.CRC64Key)); - bool md2Null = string.IsNullOrEmpty(rom.ReadString(Rom.MD2Key)); - bool md4Null = string.IsNullOrEmpty(rom.ReadString(Rom.MD4Key)); - bool md5Null = string.IsNullOrEmpty(rom.ReadString(Rom.MD5Key)); - bool ripeMD128Null = string.IsNullOrEmpty(rom.ReadString(Rom.RIPEMD128Key)); - bool ripeMD160Null = string.IsNullOrEmpty(rom.ReadString(Rom.RIPEMD160Key)); - bool sha1Null = string.IsNullOrEmpty(rom.ReadString(Rom.SHA1Key)); - bool sha256Null = string.IsNullOrEmpty(rom.ReadString(Rom.SHA256Key)); - bool sha384Null = string.IsNullOrEmpty(rom.ReadString(Rom.SHA384Key)); - bool sha512Null = string.IsNullOrEmpty(rom.ReadString(Rom.SHA512Key)); - bool spamsumNull = string.IsNullOrEmpty(rom.ReadString(Rom.SpamSumKey)); + bool crc16Null = string.IsNullOrEmpty(rom.CRC16); + bool crcNull = string.IsNullOrEmpty(rom.CRC); + bool crc64Null = string.IsNullOrEmpty(rom.CRC64); + bool md2Null = string.IsNullOrEmpty(rom.MD2); + bool md4Null = string.IsNullOrEmpty(rom.MD4); + bool md5Null = string.IsNullOrEmpty(rom.MD5); + bool ripeMD128Null = string.IsNullOrEmpty(rom.RIPEMD128); + bool ripeMD160Null = string.IsNullOrEmpty(rom.RIPEMD160); + bool sha1Null = string.IsNullOrEmpty(rom.SHA1); + bool sha256Null = string.IsNullOrEmpty(rom.SHA256); + bool sha384Null = string.IsNullOrEmpty(rom.SHA384); + bool sha512Null = string.IsNullOrEmpty(rom.SHA512); + bool spamsumNull = string.IsNullOrEmpty(rom.SpamSum); return !crc16Null || !crcNull @@ -416,43 +416,43 @@ namespace SabreTools.Data.Extensions ///
public static bool HasZeroHash(this Rom rom) { - string? crc16 = rom.ReadString(Rom.CRC16Key); + string? crc16 = rom.CRC16; bool crc16Null = string.IsNullOrEmpty(crc16) || string.Equals(crc16, HashType.CRC16.ZeroString, StringComparison.OrdinalIgnoreCase); - string? crc = rom.ReadString(Rom.CRCKey); + string? crc = rom.CRC; bool crcNull = string.IsNullOrEmpty(crc) || string.Equals(crc, HashType.CRC32.ZeroString, StringComparison.OrdinalIgnoreCase); - string? crc64 = rom.ReadString(Rom.CRC64Key); + string? crc64 = rom.CRC64; bool crc64Null = string.IsNullOrEmpty(crc64) || string.Equals(crc64, HashType.CRC64.ZeroString, StringComparison.OrdinalIgnoreCase); - string? md2 = rom.ReadString(Rom.MD2Key); + string? md2 = rom.MD2; bool md2Null = string.IsNullOrEmpty(md2) || string.Equals(md2, HashType.MD2.ZeroString, StringComparison.OrdinalIgnoreCase); - string? md4 = rom.ReadString(Rom.MD4Key); + string? md4 = rom.MD4; bool md4Null = string.IsNullOrEmpty(md4) || string.Equals(md4, HashType.MD4.ZeroString, StringComparison.OrdinalIgnoreCase); - string? md5 = rom.ReadString(Rom.MD5Key); + string? md5 = rom.MD5; bool md5Null = string.IsNullOrEmpty(md5) || string.Equals(md5, HashType.MD5.ZeroString, StringComparison.OrdinalIgnoreCase); - string? ripeMD128 = rom.ReadString(Rom.RIPEMD128Key); + string? ripeMD128 = rom.RIPEMD128; bool ripeMD128Null = string.IsNullOrEmpty(value: ripeMD128) || string.Equals(ripeMD128, HashType.RIPEMD128.ZeroString, StringComparison.OrdinalIgnoreCase); - string? ripeMD160 = rom.ReadString(Rom.RIPEMD160Key); + string? ripeMD160 = rom.RIPEMD160; bool ripeMD160Null = string.IsNullOrEmpty(ripeMD160) || string.Equals(ripeMD160, HashType.RIPEMD160.ZeroString, StringComparison.OrdinalIgnoreCase); - string? sha1 = rom.ReadString(Rom.SHA1Key); + string? sha1 = rom.SHA1; bool sha1Null = string.IsNullOrEmpty(sha1) || string.Equals(sha1, HashType.SHA1.ZeroString, StringComparison.OrdinalIgnoreCase); - string? sha256 = rom.ReadString(Rom.SHA256Key); + string? sha256 = rom.SHA256; bool sha256Null = string.IsNullOrEmpty(sha256) || string.Equals(sha256, HashType.SHA256.ZeroString, StringComparison.OrdinalIgnoreCase); - string? sha384 = rom.ReadString(Rom.SHA384Key); + string? sha384 = rom.SHA384; bool sha384Null = string.IsNullOrEmpty(sha384) || string.Equals(sha384, HashType.SHA384.ZeroString, StringComparison.OrdinalIgnoreCase); - string? sha512 = rom.ReadString(Rom.SHA512Key); + string? sha512 = rom.SHA512; bool sha512Null = string.IsNullOrEmpty(sha512) || string.Equals(sha512, HashType.SHA512.ZeroString, StringComparison.OrdinalIgnoreCase); - string? spamsum = rom.ReadString(Rom.SpamSumKey); + string? spamsum = rom.SpamSum; bool spamsumNull = string.IsNullOrEmpty(spamsum) || string.Equals(spamsum, HashType.SpamSum.ZeroString, StringComparison.OrdinalIgnoreCase); return crc16Null @@ -513,44 +513,44 @@ namespace SabreTools.Data.Extensions ///
private static bool HasCommonHash(this Rom self, Rom other) { - bool crc16Null = string.IsNullOrEmpty(self.ReadString(Rom.CRC16Key)); - crc16Null ^= string.IsNullOrEmpty(other.ReadString(Rom.CRC16Key)); + bool crc16Null = string.IsNullOrEmpty(self.CRC16); + crc16Null ^= string.IsNullOrEmpty(other.CRC16); - bool crcNull = string.IsNullOrEmpty(self.ReadString(Rom.CRCKey)); - crcNull ^= string.IsNullOrEmpty(other.ReadString(Rom.CRCKey)); + bool crcNull = string.IsNullOrEmpty(self.CRC); + crcNull ^= string.IsNullOrEmpty(other.CRC); - bool crc64Null = string.IsNullOrEmpty(self.ReadString(Rom.CRC64Key)); - crc64Null ^= string.IsNullOrEmpty(other.ReadString(Rom.CRC64Key)); + bool crc64Null = string.IsNullOrEmpty(self.CRC64); + crc64Null ^= string.IsNullOrEmpty(other.CRC64); - bool md2Null = string.IsNullOrEmpty(self.ReadString(Rom.MD2Key)); - md2Null ^= string.IsNullOrEmpty(other.ReadString(Rom.MD2Key)); + bool md2Null = string.IsNullOrEmpty(self.MD2); + md2Null ^= string.IsNullOrEmpty(other.MD2); - bool md4Null = string.IsNullOrEmpty(self.ReadString(Rom.MD4Key)); - md4Null ^= string.IsNullOrEmpty(other.ReadString(Rom.MD4Key)); + bool md4Null = string.IsNullOrEmpty(self.MD4); + md4Null ^= string.IsNullOrEmpty(other.MD4); - bool md5Null = string.IsNullOrEmpty(self.ReadString(Rom.MD5Key)); - md5Null ^= string.IsNullOrEmpty(other.ReadString(Rom.MD5Key)); + bool md5Null = string.IsNullOrEmpty(self.MD5); + md5Null ^= string.IsNullOrEmpty(other.MD5); - bool ripeMD128Null = string.IsNullOrEmpty(self.ReadString(Rom.RIPEMD128Key)); - ripeMD128Null ^= string.IsNullOrEmpty(other.ReadString(Rom.RIPEMD128Key)); + bool ripeMD128Null = string.IsNullOrEmpty(self.RIPEMD128); + ripeMD128Null ^= string.IsNullOrEmpty(other.RIPEMD128); - bool ripeMD160Null = string.IsNullOrEmpty(self.ReadString(Rom.RIPEMD160Key)); - ripeMD160Null ^= string.IsNullOrEmpty(other.ReadString(Rom.RIPEMD160Key)); + bool ripeMD160Null = string.IsNullOrEmpty(self.RIPEMD160); + ripeMD160Null ^= string.IsNullOrEmpty(other.RIPEMD160); - bool sha1Null = string.IsNullOrEmpty(self.ReadString(Rom.SHA1Key)); - sha1Null ^= string.IsNullOrEmpty(other.ReadString(Rom.SHA1Key)); + bool sha1Null = string.IsNullOrEmpty(self.SHA1); + sha1Null ^= string.IsNullOrEmpty(other.SHA1); - bool sha256Null = string.IsNullOrEmpty(self.ReadString(Rom.SHA256Key)); - sha256Null ^= string.IsNullOrEmpty(other.ReadString(Rom.SHA256Key)); + bool sha256Null = string.IsNullOrEmpty(self.SHA256); + sha256Null ^= string.IsNullOrEmpty(other.SHA256); - bool sha384Null = string.IsNullOrEmpty(self.ReadString(Rom.SHA384Key)); - sha384Null ^= string.IsNullOrEmpty(other.ReadString(Rom.SHA384Key)); + bool sha384Null = string.IsNullOrEmpty(self.SHA384); + sha384Null ^= string.IsNullOrEmpty(other.SHA384); - bool sha512Null = string.IsNullOrEmpty(self.ReadString(Rom.SHA512Key)); - sha512Null ^= string.IsNullOrEmpty(other.ReadString(Rom.SHA512Key)); + bool sha512Null = string.IsNullOrEmpty(self.SHA512); + sha512Null ^= string.IsNullOrEmpty(other.SHA512); - bool spamsumNull = string.IsNullOrEmpty(self.ReadString(Rom.SpamSumKey)); - spamsumNull ^= string.IsNullOrEmpty(other.ReadString(Rom.SpamSumKey)); + bool spamsumNull = string.IsNullOrEmpty(self.SpamSum); + spamsumNull ^= string.IsNullOrEmpty(other.SpamSum); return !crc16Null || !crcNull @@ -632,70 +632,70 @@ namespace SabreTools.Data.Extensions if (selfSize is null && otherSize is not null) self.Size = otherSize; - string? selfCrc16 = self.ReadString(Rom.CRC16Key); - string? otherCrc16 = other.ReadString(Rom.CRC16Key); + string? selfCrc16 = self.CRC16; + string? otherCrc16 = other.CRC16; if (string.IsNullOrEmpty(selfCrc16) && !string.IsNullOrEmpty(otherCrc16)) - self[Rom.CRC16Key] = otherCrc16; + self.CRC16 = otherCrc16; - string? selfCrc = self.ReadString(Rom.CRCKey); - string? otherCrc = other.ReadString(Rom.CRCKey); + string? selfCrc = self.CRC; + string? otherCrc = other.CRC; if (string.IsNullOrEmpty(selfCrc) && !string.IsNullOrEmpty(otherCrc)) - self[Rom.CRCKey] = otherCrc; + self.CRC = otherCrc; - string? selfCrc64 = self.ReadString(Rom.CRC64Key); - string? otherCrc64 = other.ReadString(Rom.CRC64Key); + string? selfCrc64 = self.CRC64; + string? otherCrc64 = other.CRC64; if (string.IsNullOrEmpty(selfCrc64) && !string.IsNullOrEmpty(otherCrc64)) - self[Rom.CRC64Key] = otherCrc64; + self.CRC64 = otherCrc64; - string? selfMd2 = self.ReadString(Rom.MD2Key); - string? otherMd2 = other.ReadString(Rom.MD2Key); + string? selfMd2 = self.MD2; + string? otherMd2 = other.MD2; if (string.IsNullOrEmpty(selfMd2) && !string.IsNullOrEmpty(otherMd2)) - self[Rom.MD2Key] = otherMd2; + self.MD2 = otherMd2; - string? selfMd4 = self.ReadString(Rom.MD4Key); - string? otherMd4 = other.ReadString(Rom.MD4Key); + string? selfMd4 = self.MD4; + string? otherMd4 = other.MD4; if (string.IsNullOrEmpty(selfMd4) && !string.IsNullOrEmpty(otherMd4)) - self[Rom.MD4Key] = otherMd4; + self.MD4 = otherMd4; - string? selfMd5 = self.ReadString(Rom.MD5Key); - string? otherMd5 = other.ReadString(Rom.MD5Key); + string? selfMd5 = self.MD5; + string? otherMd5 = other.MD5; if (string.IsNullOrEmpty(selfMd5) && !string.IsNullOrEmpty(otherMd5)) - self[Rom.MD5Key] = otherMd5; + self.MD5 = otherMd5; - string? selfRipeMD128 = self.ReadString(Rom.RIPEMD128Key); - string? otherRipeMD128 = other.ReadString(Rom.RIPEMD128Key); + string? selfRipeMD128 = self.RIPEMD128; + string? otherRipeMD128 = other.RIPEMD128; if (string.IsNullOrEmpty(selfRipeMD128) && !string.IsNullOrEmpty(otherRipeMD128)) - self[Rom.RIPEMD128Key] = otherRipeMD128; + self.RIPEMD128 = otherRipeMD128; - string? selfRipeMD160 = self.ReadString(Rom.RIPEMD160Key); - string? otherRipeMD160 = other.ReadString(Rom.RIPEMD160Key); + string? selfRipeMD160 = self.RIPEMD160; + string? otherRipeMD160 = other.RIPEMD160; if (string.IsNullOrEmpty(selfRipeMD160) && !string.IsNullOrEmpty(otherRipeMD160)) - self[Rom.RIPEMD160Key] = otherRipeMD160; + self.RIPEMD160 = otherRipeMD160; - string? selfSha1 = self.ReadString(Rom.SHA1Key); - string? otherSha1 = other.ReadString(Rom.SHA1Key); + string? selfSha1 = self.SHA1; + string? otherSha1 = other.SHA1; if (string.IsNullOrEmpty(selfSha1) && !string.IsNullOrEmpty(otherSha1)) - self[Rom.SHA1Key] = otherSha1; + self.SHA1 = otherSha1; - string? selfSha256 = self.ReadString(Rom.SHA256Key); - string? otherSha256 = other.ReadString(Rom.SHA256Key); + string? selfSha256 = self.SHA256; + string? otherSha256 = other.SHA256; if (string.IsNullOrEmpty(selfSha256) && !string.IsNullOrEmpty(otherSha256)) - self[Rom.SHA256Key] = otherSha256; + self.SHA256 = otherSha256; - string? selfSha384 = self.ReadString(Rom.SHA384Key); - string? otherSha384 = other.ReadString(Rom.SHA384Key); + string? selfSha384 = self.SHA384; + string? otherSha384 = other.SHA384; if (string.IsNullOrEmpty(selfSha384) && !string.IsNullOrEmpty(otherSha384)) - self[Rom.SHA384Key] = otherSha384; + self.SHA384 = otherSha384; - string? selfSha512 = self.ReadString(Rom.SHA512Key); - string? otherSha512 = other.ReadString(Rom.SHA512Key); + string? selfSha512 = self.SHA512; + string? otherSha512 = other.SHA512; if (string.IsNullOrEmpty(selfSha512) && !string.IsNullOrEmpty(otherSha512)) - self[Rom.SHA512Key] = otherSha512; + self.SHA512 = otherSha512; - string? selfSpamSum = self.ReadString(Rom.SpamSumKey); - string? otherSpamSum = other.ReadString(Rom.SpamSumKey); + string? selfSpamSum = self.SpamSum; + string? otherSpamSum = other.SpamSum; if (string.IsNullOrEmpty(selfSpamSum) && !string.IsNullOrEmpty(otherSpamSum)) - self[Rom.SpamSumKey] = otherSpamSum; + self.SpamSum = otherSpamSum; } #endregion diff --git a/SabreTools.Data.Models/Metadata/Rom.cs b/SabreTools.Data.Models/Metadata/Rom.cs index a5ca4991..4432bdac 100644 --- a/SabreTools.Data.Models/Metadata/Rom.cs +++ b/SabreTools.Data.Models/Metadata/Rom.cs @@ -30,7 +30,7 @@ namespace SabreTools.Data.Models.Metadata public string? Name { get; set; } - /// string; OpenMSX.RomBase + /// OpenMSX.RomBase public OpenMSXSubType? OpenMSXMediaType { get; set; } /// (yes|no) "no" @@ -50,254 +50,233 @@ namespace SabreTools.Data.Models.Metadata #region Keys - /// string; ArchiveDotOrg.File - public const string AlbumKey = "album"; + /// ArchiveDotOrg.File + public string? Album { get; set; } - /// string; AttractMode.Row - public const string AltRomnameKey = "alt_romname"; + /// AttractMode.Row + public string? AltRomname { get; set; } - /// string; AttractMode.Row - public const string AltTitleKey = "alt_title"; + /// AttractMode.Row + public string? AltTitle { get; set; } - /// string; ArchiveDotOrg.File - public const string ArtistKey = "artist"; + /// ArchiveDotOrg.File + public string? Artist { get; set; } - /// string; ArchiveDotOrg.File - public const string ASRDetectedLangKey = "asr_detected_lang"; + /// ArchiveDotOrg.File + public string? ASRDetectedLang { get; set; } - /// string; ArchiveDotOrg.File - public const string ASRDetectedLangConfKey = "asr_detected_lang_conf"; + /// ArchiveDotOrg.File + public string? ASRDetectedLangConf { get; set; } - /// string; ArchiveDotOrg.File - public const string ASRTranscribedLangKey = "asr_transcribed_lang"; + /// ArchiveDotOrg.File + public string? ASRTranscribedLang { get; set; } - /// string - public const string BiosKey = "bios"; + public string? Bios { get; set; } - /// string; ArchiveDotOrg.File - public const string BitrateKey = "bitrate"; + /// ArchiveDotOrg.File + public string? Bitrate { get; set; } - /// string; ArchiveDotOrg.File - public const string BitTorrentMagnetHashKey = "btih"; + /// ArchiveDotOrg.File + public string? BitTorrentMagnetHash { get; set; } - /// string; ArchiveDotOrg.File - public const string ClothCoverDetectionModuleVersionKey = "cloth_cover_detection_module_version"; + /// ArchiveDotOrg.File + public string? ClothCoverDetectionModuleVersion { get; set; } - /// string; ArchiveDotOrg.File - public const string CollectionCatalogNumberKey = "collection-catalog-number"; + /// ArchiveDotOrg.File + public string? CollectionCatalogNumber { get; set; } - /// string; ArchiveDotOrg.File - public const string CommentKey = "comment"; + /// ArchiveDotOrg.File + public string? Comment { get; set; } - /// string; Also "crc32" in ArchiveDotOrg.File - public const string CRCKey = "crc"; + /// Also "crc32" in ArchiveDotOrg.File + public string? CRC { get; set; } - /// string - public const string CRC16Key = "crc16"; + public string? CRC16 { get; set; } - /// string - public const string CRC64Key = "crc64"; + public string? CRC64 { get; set; } - /// string; ArchiveDotOrg.File - public const string CreatorKey = "creator"; + /// ArchiveDotOrg.File + public string? Creator { get; set; } - /// string - public const string DateKey = "date"; + public string? Date { get; set; } - /// string; OfflineList.FileRomCRC - public const string ExtensionKey = "extension"; + /// OfflineList.FileRomCRC + public string? Extension { get; set; } - /// string - public const string FlagsKey = "flags"; + public string? Flags { get; set; } - /// string; ArchiveDotOrg.File - public const string FormatKey = "format"; + /// ArchiveDotOrg.File + public string? Format { get; set; } - /// string - public const string HeaderKey = "header"; + public string? Header { get; set; } - /// string, possibly long; ArchiveDotOrg.File - public const string HeightKey = "height"; + /// Possibly long; ArchiveDotOrg.File + public string? Height { get; set; } - /// string; ArchiveDotOrg.File - public const string hOCRCharToWordhOCRVersionKey = "hocr_char_to_word_hocr_version"; + /// ArchiveDotOrg.File + public string? hOCRCharToWordhOCRVersion { get; set; } - /// string; ArchiveDotOrg.File - public const string hOCRCharToWordModuleVersionKey = "hocr_char_to_word_module_version"; + /// ArchiveDotOrg.File + public string? hOCRCharToWordModuleVersion { get; set; } - /// string; ArchiveDotOrg.File - public const string hOCRFtsTexthOCRVersionKey = "hocr_fts_text_hocr_version"; + /// ArchiveDotOrg.File + public string? hOCRFtsTexthOCRVersion { get; set; } - /// string; ArchiveDotOrg.File - public const string hOCRFtsTextModuleVersionKey = "hocr_fts_text_module_version"; + /// ArchiveDotOrg.File + public string? hOCRFtsTextModuleVersion { get; set; } - /// string; ArchiveDotOrg.File - public const string hOCRPageIndexhOCRVersionKey = "hocr_pageindex_hocr_version"; + /// ArchiveDotOrg.File + public string? hOCRPageIndexhOCRVersion { get; set; } - /// string; ArchiveDotOrg.File - public const string hOCRPageIndexModuleVersionKey = "hocr_pageindex_module_version"; + /// ArchiveDotOrg.File + public string? hOCRPageIndexModuleVersion { get; set; } - /// long; ArchiveDotOrg.File - public const string LastModifiedTimeKey = "mtime"; + /// Possibly long; ArchiveDotOrg.File + public string? LastModifiedTime { get; set; } - /// string, possibly long; Also in ArchiveDotOrg.File - public const string LengthKey = "length"; + /// Possibly long; Also in ArchiveDotOrg.File + public string? Length { get; set; } - /// string; ArchiveDotOrg.File - public const string MatrixNumberKey = "matrix_number"; + /// ArchiveDotOrg.File + public string? MatrixNumber { get; set; } - /// string - public const string MD2Key = "md2"; + public string? MD2 { get; set; } - /// string - public const string MD4Key = "md4"; + public string? MD4 { get; set; } - /// string - public const string MD5Key = "md5"; + public string? MD5 { get; set; } - /// string - public const string MergeKey = "merge"; + public string? Merge { get; set; } - /// string; ArchiveDotOrg.File - public const string TesseractOCRKey = "ocr"; + /// Possibly long; Originally "offs" + public string? Offset { get; set; } - /// string; ArchiveDotOrg.File - public const string TesseractOCRConvertedKey = "ocr_converted"; + /// OpenMSX.RomBase + public string? OpenMSXType { get; set; } - /// string; ArchiveDotOrg.File - public const string TesseractOCRDetectedLangKey = "ocr_detected_lang"; + /// ArchiveDotOrg.File + public string? Original { get; set; } - /// string; ArchiveDotOrg.File - public const string TesseractOCRDetectedLangConfKey = "ocr_detected_lang_conf"; + /// ArchiveDotOrg.File + public string? PDFModuleVersion { get; set; } - /// string; ArchiveDotOrg.File - public const string TesseractOCRDetectedScriptKey = "ocr_detected_script"; + /// ArchiveDotOrg.File + public string? PreviewImage { get; set; } - /// string; ArchiveDotOrg.File - public const string TesseractOCRDetectedScriptConfKey = "ocr_detected_script_conf"; + /// ArchiveDotOrg.File + public string? Publisher { get; set; } - /// string; ArchiveDotOrg.File - public const string TesseractOCRModuleVersionKey = "ocr_module_version"; + public string? Region { get; set; } - /// string; ArchiveDotOrg.File - public const string TesseractOCRParametersKey = "ocr_parameters"; + /// OpenMSX.RomBase + public string? Remark { get; set; } - /// string, possibly long; Originally "offs" - public const string OffsetKey = "offset"; + public string? RIPEMD128 { get; set; } - /// string; ArchiveDotOrg.File - public const string OriginalKey = "original"; + public string? RIPEMD160 { get; set; } - /// string; ArchiveDotOrg.File - public const string PDFModuleVersionKey = "pdf_module_version"; + /// Possibly long; ArchiveDotOrg.File + public string? Rotation { get; set; } - /// string; ArchiveDotOrg.File - public const string PreviewImageKey = "preview-image"; + public string? Serial { get; set; } - /// string; ArchiveDotOrg.File - public const string PublisherKey = "publisher"; + public string? SHA1 { get; set; } - /// string - public const string RegionKey = "region"; + public string? SHA256 { get; set; } - /// string; OpenMSX.RomBase - public const string RemarkKey = "remark"; + public string? SHA384 { get; set; } - /// string - public const string RIPEMD128Key = "ripemd128"; + public string? SHA512 { get; set; } - /// string - public const string RIPEMD160Key = "ripemd160"; + /// ArchiveDotOrg.File + public string? Source { get; set; } - /// string, possibly long; ArchiveDotOrg.File - public const string RotationKey = "rotation"; + public string? SpamSum { get; set; } - /// string - public const string SerialKey = "serial"; + /// Possibly long; OpenMSX.RomBase + public string? Start { get; set; } - /// string - public const string SHA1Key = "sha1"; + /// ArchiveDotOrg.File + public string? Summation { get; set; } - /// string - public const string SHA256Key = "sha256"; + /// ArchiveDotOrg.File + public string? TesseractOCR { get; set; } - /// string - public const string SHA384Key = "sha384"; + /// ArchiveDotOrg.File + public string? TesseractOCRConverted { get; set; } - /// string - public const string SHA512Key = "sha512"; + /// ArchiveDotOrg.File + public string? TesseractOCRDetectedLang { get; set; } - /// string; ArchiveDotOrg.File - public const string SourceKey = "source"; + /// ArchiveDotOrg.File + public string? TesseractOCRDetectedLangConf { get; set; } - /// string - public const string SpamSumKey = "spamsum"; + /// ArchiveDotOrg.File + public string? TesseractOCRDetectedScript { get; set; } - /// string, possibly long; OpenMSX.RomBase - public const string StartKey = "start"; + /// ArchiveDotOrg.File + public string? TesseractOCRDetectedScriptConf { get; set; } - /// string; ArchiveDotOrg.File - public const string SummationKey = "summation"; + /// ArchiveDotOrg.File + public string? TesseractOCRModuleVersion { get; set; } - /// string; ArchiveDotOrg.File - public const string TitleKey = "title"; + /// ArchiveDotOrg.File + public string? TesseractOCRParameters { get; set; } - /// string, possibly long; ArchiveDotOrg.File - public const string TrackKey = "track"; + /// ArchiveDotOrg.File + public string? Title { get; set; } - /// string; OpenMSX.RomBase - public const string OpenMSXType = "type"; + /// Possibly long; ArchiveDotOrg.File + public string? Track { get; set; } - /// string; ArchiveDotOrg.File - public const string WhisperASRModuleVersionKey = "whisper_asr_module_version"; + /// ArchiveDotOrg.File + public string? WhisperASRModuleVersion { get; set; } - /// string; ArchiveDotOrg.File - public const string WhisperModelHashKey = "whisper_model_hash"; + /// ArchiveDotOrg.File + public string? WhisperModelHash { get; set; } - /// string; ArchiveDotOrg.File - public const string WhisperModelNameKey = "whisper_model_name"; + /// ArchiveDotOrg.File + public string? WhisperModelName { get; set; } - /// string; ArchiveDotOrg.File - public const string WhisperVersionKey = "whisper_version"; + /// ArchiveDotOrg.File + public string? WhisperVersion { get; set; } - /// string, possibly long; ArchiveDotOrg.File - public const string WidthKey = "width"; + /// Possibly long; ArchiveDotOrg.File + public string? Width { get; set; } - /// string; ArchiveDotOrg.File - public const string WordConfidenceInterval0To10Key = "word_conf_0_10"; + /// ArchiveDotOrg.File + public string? WordConfidenceInterval0To10 { get; set; } - /// string; ArchiveDotOrg.File - public const string WordConfidenceInterval11To20Key = "word_conf_11_20"; + /// ArchiveDotOrg.File + public string? WordConfidenceInterval11To20 { get; set; } - /// string; ArchiveDotOrg.File - public const string WordConfidenceInterval21To30Key = "word_conf_21_30"; + /// ArchiveDotOrg.File + public string? WordConfidenceInterval21To30 { get; set; } - /// string; ArchiveDotOrg.File - public const string WordConfidenceInterval31To40Key = "word_conf_31_40"; + /// ArchiveDotOrg.File + public string? WordConfidenceInterval31To40 { get; set; } - /// string; ArchiveDotOrg.File - public const string WordConfidenceInterval41To50Key = "word_conf_41_50"; + /// ArchiveDotOrg.File + public string? WordConfidenceInterval41To50 { get; set; } - /// string; ArchiveDotOrg.File - public const string WordConfidenceInterval51To60Key = "word_conf_51_60"; + /// ArchiveDotOrg.File + public string? WordConfidenceInterval51To60 { get; set; } - /// string; ArchiveDotOrg.File - public const string WordConfidenceInterval61To70Key = "word_conf_61_70"; + /// ArchiveDotOrg.File + public string? WordConfidenceInterval61To70 { get; set; } - /// string; ArchiveDotOrg.File - public const string WordConfidenceInterval71To80Key = "word_conf_71_80"; + /// ArchiveDotOrg.File + public string? WordConfidenceInterval71To80 { get; set; } - /// string; ArchiveDotOrg.File - public const string WordConfidenceInterval81To90Key = "word_conf_81_90"; + /// ArchiveDotOrg.File + public string? WordConfidenceInterval81To90 { get; set; } - /// string; ArchiveDotOrg.File - public const string WordConfidenceInterval91To100Key = "word_conf_91_100"; + /// ArchiveDotOrg.File + public string? WordConfidenceInterval91To100 { get; set; } - /// string - public const string xxHash364Key = "xxh3_64"; + public string? xxHash364 { get; set; } - /// string - public const string xxHash3128Key = "xxh3_128"; + public string? xxHash3128 { get; set; } #endregion @@ -308,187 +287,102 @@ namespace SabreTools.Data.Models.Metadata { var obj = new Rom(); + obj.Album = Album; + obj.AltRomname = AltRomname; + obj.AltTitle = AltTitle; + obj.Artist = Artist; + obj.ASRDetectedLang = ASRDetectedLang; + obj.ASRDetectedLangConf = ASRDetectedLangConf; + obj.ASRTranscribedLang = ASRTranscribedLang; + obj.Bios = Bios; + obj.Bitrate = Bitrate; + obj.BitTorrentMagnetHash = BitTorrentMagnetHash; + obj.ClothCoverDetectionModuleVersion = ClothCoverDetectionModuleVersion; + obj.CollectionCatalogNumber = CollectionCatalogNumber; + obj.Comment = Comment; + obj.CRC = CRC; + obj.CRC16 = CRC16; + obj.CRC64 = CRC64; + obj.Creator = Creator; + obj.Date = Date; obj.Dispose = Dispose; + obj.Extension = Extension; obj.FileCount = FileCount; obj.FileIsAvailable = FileIsAvailable; + obj.Flags = Flags; + obj.Format = Format; + obj.Header = Header; + obj.Height = Height; + obj.hOCRCharToWordhOCRVersion = hOCRCharToWordhOCRVersion; + obj.hOCRCharToWordModuleVersion = hOCRCharToWordModuleVersion; + obj.hOCRFtsTexthOCRVersion = hOCRFtsTexthOCRVersion; + obj.hOCRFtsTextModuleVersion = hOCRFtsTextModuleVersion; + obj.hOCRPageIndexhOCRVersion = hOCRPageIndexhOCRVersion; + obj.hOCRPageIndexModuleVersion = hOCRPageIndexModuleVersion; obj.Inverted = Inverted; + obj.LastModifiedTime = LastModifiedTime; + obj.Length = Length; obj.LoadFlag = LoadFlag; + obj.MatrixNumber = MatrixNumber; + obj.MD2 = MD2; + obj.MD4 = MD4; + obj.MD5 = MD5; + obj.Merge = Merge; obj.MIA = MIA; obj.Name = Name; + obj.Offset = Offset; + obj.OpenMSXType = OpenMSXType; obj.OpenMSXMediaType = OpenMSXMediaType; obj.Optional = Optional; + obj.Original = Original; + obj.PDFModuleVersion = PDFModuleVersion; + obj.PreviewImage = PreviewImage; + obj.Publisher = Publisher; + obj.Region = Region; + obj.Remark = Remark; + obj.RIPEMD128 = RIPEMD128; + obj.RIPEMD160 = RIPEMD160; + obj.Rotation = Rotation; + obj.Serial = Serial; + obj.SHA1 = SHA1; + obj.SHA256 = SHA256; + obj.SHA384 = SHA384; + obj.SHA512 = SHA512; obj.Size = Size; obj.SoundOnly = SoundOnly; + obj.Source = Source; + obj.SpamSum = SpamSum; + obj.Start = Start; obj.Status = Status; + obj.Summation = Summation; + obj.TesseractOCR = TesseractOCR; + obj.TesseractOCRConverted = TesseractOCRConverted; + obj.TesseractOCRDetectedLang = TesseractOCRDetectedLang; + obj.TesseractOCRDetectedLangConf = TesseractOCRDetectedLangConf; + obj.TesseractOCRDetectedScript = TesseractOCRDetectedScript; + obj.TesseractOCRDetectedScriptConf = TesseractOCRDetectedScriptConf; + obj.TesseractOCRModuleVersion = TesseractOCRModuleVersion; + obj.TesseractOCRParameters = TesseractOCRParameters; + obj.Title = Title; + obj.Track = Track; obj.Value = Value; - - // TODO: Replace these when moving away from keys - if (TryGetValue(AlbumKey, out var Album)) - obj[AlbumKey] = Album; - if (TryGetValue(AltRomnameKey, out var AltRomname)) - obj[AltRomnameKey] = AltRomname; - if (TryGetValue(AltTitleKey, out var AltTitle)) - obj[AltTitleKey] = AltTitle; - if (TryGetValue(ArtistKey, out var Artist)) - obj[ArtistKey] = Artist; - if (TryGetValue(ASRDetectedLangKey, out var ASRDetectedLang)) - obj[ASRDetectedLangKey] = ASRDetectedLang; - if (TryGetValue(ASRDetectedLangConfKey, out var ASRDetectedLangConf)) - obj[ASRDetectedLangConfKey] = ASRDetectedLangConf; - if (TryGetValue(ASRTranscribedLangKey, out var ASRTranscribedLang)) - obj[ASRTranscribedLangKey] = ASRTranscribedLang; - if (TryGetValue(BiosKey, out var Bios)) - obj[BiosKey] = Bios; - if (TryGetValue(BitrateKey, out var Bitrate)) - obj[BitrateKey] = Bitrate; - if (TryGetValue(BitTorrentMagnetHashKey, out var BitTorrentMagnetHash)) - obj[BitTorrentMagnetHashKey] = BitTorrentMagnetHash; - if (TryGetValue(ClothCoverDetectionModuleVersionKey, out var ClothCoverDetectionModuleVersion)) - obj[ClothCoverDetectionModuleVersionKey] = ClothCoverDetectionModuleVersion; - if (TryGetValue(CollectionCatalogNumberKey, out var CollectionCatalogNumber)) - obj[CollectionCatalogNumberKey] = CollectionCatalogNumber; - if (TryGetValue(CommentKey, out var Comment)) - obj[CommentKey] = Comment; - if (TryGetValue(CRCKey, out var CRC)) - obj[CRCKey] = CRC; - if (TryGetValue(CRC16Key, out var CRC16)) - obj[CRC16Key] = CRC16; - if (TryGetValue(CRC64Key, out var CRC64)) - obj[CRC64Key] = CRC64; - if (TryGetValue(CreatorKey, out var Creator)) - obj[CreatorKey] = Creator; - if (TryGetValue(DateKey, out var Date)) - obj[DateKey] = Date; - if (TryGetValue(ExtensionKey, out var Extension)) - obj[ExtensionKey] = Extension; - if (TryGetValue(FlagsKey, out var Flags)) - obj[FlagsKey] = Flags; - if (TryGetValue(FormatKey, out var Format)) - obj[FormatKey] = Format; - if (TryGetValue(HeaderKey, out var Header)) - obj[HeaderKey] = Header; - if (TryGetValue(HeightKey, out var Height)) - obj[HeightKey] = Height; - if (TryGetValue(hOCRCharToWordhOCRVersionKey, out var hOCRCharToWordhOCRVersion)) - obj[hOCRCharToWordhOCRVersionKey] = hOCRCharToWordhOCRVersion; - if (TryGetValue(hOCRCharToWordModuleVersionKey, out var hOCRCharToWordModuleVersion)) - obj[hOCRCharToWordModuleVersionKey] = hOCRCharToWordModuleVersion; - if (TryGetValue(hOCRFtsTexthOCRVersionKey, out var hOCRFtsTexthOCRVersion)) - obj[hOCRFtsTexthOCRVersionKey] = hOCRFtsTexthOCRVersion; - if (TryGetValue(hOCRFtsTextModuleVersionKey, out var hOCRFtsTextModuleVersion)) - obj[hOCRFtsTextModuleVersionKey] = hOCRFtsTextModuleVersion; - if (TryGetValue(hOCRPageIndexhOCRVersionKey, out var hOCRPageIndexhOCRVersion)) - obj[hOCRPageIndexhOCRVersionKey] = hOCRPageIndexhOCRVersion; - if (TryGetValue(hOCRPageIndexModuleVersionKey, out var hOCRPageIndexModuleVersion)) - obj[hOCRPageIndexModuleVersionKey] = hOCRPageIndexModuleVersion; - if (TryGetValue(LastModifiedTimeKey, out var LastModifiedTime)) - obj[LastModifiedTimeKey] = LastModifiedTime; - if (TryGetValue(LengthKey, out var Length)) - obj[LengthKey] = Length; - if (TryGetValue(MatrixNumberKey, out var MatrixNumber)) - obj[MatrixNumberKey] = MatrixNumber; - if (TryGetValue(MD2Key, out var MD2)) - obj[MD2Key] = MD2; - if (TryGetValue(MD4Key, out var MD4)) - obj[MD4Key] = MD4; - if (TryGetValue(MD5Key, out var MD5)) - obj[MD5Key] = MD5; - if (TryGetValue(MergeKey, out var Merge)) - obj[MergeKey] = Merge; - if (TryGetValue(TesseractOCRKey, out var TesseractOCR)) - obj[TesseractOCRKey] = TesseractOCR; - if (TryGetValue(TesseractOCRConvertedKey, out var TesseractOCRConverted)) - obj[TesseractOCRConvertedKey] = TesseractOCRConverted; - if (TryGetValue(TesseractOCRDetectedLangKey, out var TesseractOCRDetectedLang)) - obj[TesseractOCRDetectedLangKey] = TesseractOCRDetectedLang; - if (TryGetValue(TesseractOCRDetectedLangConfKey, out var TesseractOCRDetectedLangConf)) - obj[TesseractOCRDetectedLangConfKey] = TesseractOCRDetectedLangConf; - if (TryGetValue(TesseractOCRDetectedScriptKey, out var TesseractOCRDetectedScript)) - obj[TesseractOCRDetectedScriptKey] = TesseractOCRDetectedScript; - if (TryGetValue(TesseractOCRDetectedScriptConfKey, out var TesseractOCRDetectedScriptConf)) - obj[TesseractOCRDetectedScriptConfKey] = TesseractOCRDetectedScriptConf; - if (TryGetValue(TesseractOCRModuleVersionKey, out var TesseractOCRModuleVersion)) - obj[TesseractOCRModuleVersionKey] = TesseractOCRModuleVersion; - if (TryGetValue(TesseractOCRParametersKey, out var TesseractOCRParameters)) - obj[TesseractOCRParametersKey] = TesseractOCRParameters; - if (TryGetValue(OffsetKey, out var Offset)) - obj[OffsetKey] = Offset; - if (TryGetValue(OriginalKey, out var Original)) - obj[OriginalKey] = Original; - if (TryGetValue(PDFModuleVersionKey, out var PDFModuleVersion)) - obj[PDFModuleVersionKey] = PDFModuleVersion; - if (TryGetValue(PreviewImageKey, out var PreviewImage)) - obj[PreviewImageKey] = PreviewImage; - if (TryGetValue(PublisherKey, out var Publisher)) - obj[PublisherKey] = Publisher; - if (TryGetValue(RegionKey, out var Region)) - obj[RegionKey] = Region; - if (TryGetValue(RemarkKey, out var Remark)) - obj[RemarkKey] = Remark; - if (TryGetValue(RIPEMD128Key, out var RIPEMD128)) - obj[RIPEMD128Key] = RIPEMD128; - if (TryGetValue(RIPEMD160Key, out var RIPEMD160)) - obj[RIPEMD160Key] = RIPEMD160; - if (TryGetValue(RotationKey, out var Rotation)) - obj[RotationKey] = Rotation; - if (TryGetValue(SerialKey, out var Serial)) - obj[SerialKey] = Serial; - if (TryGetValue(SHA1Key, out var SHA1)) - obj[SHA1Key] = SHA1; - if (TryGetValue(SHA256Key, out var SHA256)) - obj[SHA256Key] = SHA256; - if (TryGetValue(SHA384Key, out var SHA384)) - obj[SHA384Key] = SHA384; - if (TryGetValue(SHA512Key, out var SHA512)) - obj[SHA512Key] = SHA512; - if (TryGetValue(SourceKey, out var Source)) - obj[SourceKey] = Source; - if (TryGetValue(SpamSumKey, out var SpamSum)) - obj[SpamSumKey] = SpamSum; - if (TryGetValue(StartKey, out var Start)) - obj[StartKey] = Start; - if (TryGetValue(SummationKey, out var Summation)) - obj[SummationKey] = Summation; - if (TryGetValue(TitleKey, out var Title)) - obj[TitleKey] = Title; - if (TryGetValue(TrackKey, out var Track)) - obj[TrackKey] = Track; - if (TryGetValue(OpenMSXType, out var OpenMSXTypeValue)) - obj[OpenMSXType] = OpenMSXTypeValue; - if (TryGetValue(WhisperASRModuleVersionKey, out var WhisperASRModuleVersion)) - obj[WhisperASRModuleVersionKey] = WhisperASRModuleVersion; - if (TryGetValue(WhisperModelHashKey, out var WhisperModelHash)) - obj[WhisperModelHashKey] = WhisperModelHash; - if (TryGetValue(WhisperModelNameKey, out var WhisperModelName)) - obj[WhisperModelNameKey] = WhisperModelName; - if (TryGetValue(WhisperVersionKey, out var WhisperVersion)) - obj[WhisperVersionKey] = WhisperVersion; - if (TryGetValue(WidthKey, out var Width)) - obj[WidthKey] = Width; - if (TryGetValue(WordConfidenceInterval0To10Key, out var WordConfidenceInterval0To10)) - obj[WordConfidenceInterval0To10Key] = WordConfidenceInterval0To10; - if (TryGetValue(WordConfidenceInterval11To20Key, out var WordConfidenceInterval11To20)) - obj[WordConfidenceInterval11To20Key] = WordConfidenceInterval11To20; - if (TryGetValue(WordConfidenceInterval21To30Key, out var WordConfidenceInterval21To30)) - obj[WordConfidenceInterval21To30Key] = WordConfidenceInterval21To30; - if (TryGetValue(WordConfidenceInterval31To40Key, out var WordConfidenceInterval31To40)) - obj[WordConfidenceInterval31To40Key] = WordConfidenceInterval31To40; - if (TryGetValue(WordConfidenceInterval41To50Key, out var WordConfidenceInterval41To50)) - obj[WordConfidenceInterval41To50Key] = WordConfidenceInterval41To50; - if (TryGetValue(WordConfidenceInterval51To60Key, out var WordConfidenceInterval51To60)) - obj[WordConfidenceInterval51To60Key] = WordConfidenceInterval51To60; - if (TryGetValue(WordConfidenceInterval61To70Key, out var WordConfidenceInterval61To70)) - obj[WordConfidenceInterval61To70Key] = WordConfidenceInterval61To70; - if (TryGetValue(WordConfidenceInterval71To80Key, out var WordConfidenceInterval71To80)) - obj[WordConfidenceInterval71To80Key] = WordConfidenceInterval71To80; - if (TryGetValue(WordConfidenceInterval81To90Key, out var WordConfidenceInterval81To90)) - obj[WordConfidenceInterval81To90Key] = WordConfidenceInterval81To90; - if (TryGetValue(WordConfidenceInterval91To100Key, out var WordConfidenceInterval91To100)) - obj[WordConfidenceInterval91To100Key] = WordConfidenceInterval91To100; - if (TryGetValue(xxHash364Key, out var xxHash364)) - obj[xxHash364Key] = xxHash364; - if (TryGetValue(xxHash3128Key, out var xxHash3128)) - obj[xxHash3128Key] = xxHash3128; + obj.WhisperASRModuleVersion = WhisperASRModuleVersion; + obj.WhisperModelHash = WhisperModelHash; + obj.WhisperModelName = WhisperModelName; + obj.WhisperVersion = WhisperVersion; + obj.Width = Width; + obj.WordConfidenceInterval0To10 = WordConfidenceInterval0To10; + obj.WordConfidenceInterval11To20 = WordConfidenceInterval11To20; + obj.WordConfidenceInterval21To30 = WordConfidenceInterval21To30; + obj.WordConfidenceInterval31To40 = WordConfidenceInterval31To40; + obj.WordConfidenceInterval41To50 = WordConfidenceInterval41To50; + obj.WordConfidenceInterval51To60 = WordConfidenceInterval51To60; + obj.WordConfidenceInterval61To70 = WordConfidenceInterval61To70; + obj.WordConfidenceInterval71To80 = WordConfidenceInterval71To80; + obj.WordConfidenceInterval81To90 = WordConfidenceInterval81To90; + obj.WordConfidenceInterval91To100 = WordConfidenceInterval91To100; + obj.xxHash364 = xxHash364; + obj.xxHash3128 = xxHash3128; return obj; } diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.Filtering.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.Filtering.cs index a7b556c3..ab29e76f 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.Filtering.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.Filtering.cs @@ -21,10 +21,13 @@ namespace SabreTools.Metadata.DatFiles.Test Machine machine = new Machine { Name = "machine" }; - DatItem datItem = new Rom { Name = "rom.bin", }; - datItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); - datItem.Machine = machine; - datItem.Source = source; + DatItem datItem = new Rom + { + Name = "rom.bin", + CRC = "deadbeef", + Machine = machine, + Source = source + }; DatFile datFile = new Logiqx(datFile: null, useGame: false); datFile.AddItem(datItem, statsOnly: false); @@ -47,10 +50,13 @@ namespace SabreTools.Metadata.DatFiles.Test Machine machine = new Machine { Name = "machine" }; - DatItem datItem = new Rom { Name = "rom.bin" }; - datItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); - datItem.Machine = machine; - datItem.Source = source; + DatItem datItem = new Rom + { + Name = "rom.bin", + CRC = "deadbeef", + Machine = machine, + Source = source + }; DatFile datFile = new Logiqx(datFile: null, useGame: false); long sourceIndex = datFile.AddSourceDB(source); diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs index cc83a9fd..bf5feeff 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs @@ -781,102 +781,102 @@ namespace SabreTools.Metadata.DatFiles.Test { return new Data.Models.Metadata.Rom { - [Data.Models.Metadata.Rom.AlbumKey] = "album", - [Data.Models.Metadata.Rom.AltRomnameKey] = "alt_romname", - [Data.Models.Metadata.Rom.AltTitleKey] = "alt_title", - [Data.Models.Metadata.Rom.ArtistKey] = "artist", - [Data.Models.Metadata.Rom.ASRDetectedLangKey] = "asr_detected_lang", - [Data.Models.Metadata.Rom.ASRDetectedLangConfKey] = "asr_detected_lang_conf", - [Data.Models.Metadata.Rom.ASRTranscribedLangKey] = "asr_transcribed_lang", - [Data.Models.Metadata.Rom.BiosKey] = "bios", - [Data.Models.Metadata.Rom.BitrateKey] = "bitrate", - [Data.Models.Metadata.Rom.BitTorrentMagnetHashKey] = "btih", - [Data.Models.Metadata.Rom.ClothCoverDetectionModuleVersionKey] = "cloth_cover_detection_module_version", - [Data.Models.Metadata.Rom.CollectionCatalogNumberKey] = "collection-catalog-number", - [Data.Models.Metadata.Rom.CommentKey] = "comment", - [Data.Models.Metadata.Rom.CRCKey] = HashType.CRC32.ZeroString, - [Data.Models.Metadata.Rom.CRC16Key] = HashType.CRC16.ZeroString, - [Data.Models.Metadata.Rom.CRC64Key] = HashType.CRC64.ZeroString, - [Data.Models.Metadata.Rom.CreatorKey] = "creator", - [Data.Models.Metadata.Rom.DateKey] = "date", + Album = "album", + AltRomname = "alt_romname", + AltTitle = "alt_title", + Artist = "artist", + ASRDetectedLang = "asr_detected_lang", + ASRDetectedLangConf = "asr_detected_lang_conf", + ASRTranscribedLang = "asr_transcribed_lang", + Bios = "bios", + Bitrate = "bitrate", + BitTorrentMagnetHash = "btih", + ClothCoverDetectionModuleVersion = "cloth_cover_detection_module_version", + CollectionCatalogNumber = "collection-catalog-number", + Comment = "comment", + CRC = HashType.CRC32.ZeroString, + CRC16 = HashType.CRC16.ZeroString, + CRC64 = HashType.CRC64.ZeroString, + Creator = "creator", + Date = "date", Dispose = true, - [Data.Models.Metadata.Rom.ExtensionKey] = "extension", + Extension = "extension", FileCount = 12345, FileIsAvailable = true, - [Data.Models.Metadata.Rom.FlagsKey] = "flags", - [Data.Models.Metadata.Rom.FormatKey] = "format", - [Data.Models.Metadata.Rom.HeaderKey] = "header", - [Data.Models.Metadata.Rom.HeightKey] = "height", - [Data.Models.Metadata.Rom.hOCRCharToWordhOCRVersionKey] = "hocr_char_to_word_hocr_version", - [Data.Models.Metadata.Rom.hOCRCharToWordModuleVersionKey] = "hocr_char_to_word_module_version", - [Data.Models.Metadata.Rom.hOCRFtsTexthOCRVersionKey] = "hocr_fts_text_hocr_version", - [Data.Models.Metadata.Rom.hOCRFtsTextModuleVersionKey] = "hocr_fts_text_module_version", - [Data.Models.Metadata.Rom.hOCRPageIndexhOCRVersionKey] = "hocr_pageindex_hocr_version", - [Data.Models.Metadata.Rom.hOCRPageIndexModuleVersionKey] = "hocr_pageindex_module_version", + Flags = "flags", + Format = "format", + Header = "header", + Height = "height", + hOCRCharToWordhOCRVersion = "hocr_char_to_word_hocr_version", + hOCRCharToWordModuleVersion = "hocr_char_to_word_module_version", + hOCRFtsTexthOCRVersion = "hocr_fts_text_hocr_version", + hOCRFtsTextModuleVersion = "hocr_fts_text_module_version", + hOCRPageIndexhOCRVersion = "hocr_pageindex_hocr_version", + hOCRPageIndexModuleVersion = "hocr_pageindex_module_version", Inverted = true, - [Data.Models.Metadata.Rom.LastModifiedTimeKey] = "mtime", - [Data.Models.Metadata.Rom.LengthKey] = "length", + LastModifiedTime = "mtime", + Length = "length", LoadFlag = Data.Models.Metadata.LoadFlag.Load16Byte, - [Data.Models.Metadata.Rom.MatrixNumberKey] = "matrix_number", - [Data.Models.Metadata.Rom.MD2Key] = HashType.MD2.ZeroString, - [Data.Models.Metadata.Rom.MD4Key] = HashType.MD4.ZeroString, - [Data.Models.Metadata.Rom.MD5Key] = HashType.MD5.ZeroString, + MatrixNumber = "matrix_number", + MD2 = HashType.MD2.ZeroString, + MD4 = HashType.MD4.ZeroString, + MD5 = HashType.MD5.ZeroString, // [Data.Models.Metadata.Rom.OpenMSXMediaType] = null, // Omit due to other test - [Data.Models.Metadata.Rom.MergeKey] = "merge", + OpenMSXType = "type", + Merge = "merge", MIA = true, Name = "name", - [Data.Models.Metadata.Rom.TesseractOCRKey] = "ocr", - [Data.Models.Metadata.Rom.TesseractOCRConvertedKey] = "ocr_converted", - [Data.Models.Metadata.Rom.TesseractOCRDetectedLangKey] = "ocr_detected_lang", - [Data.Models.Metadata.Rom.TesseractOCRDetectedLangConfKey] = "ocr_detected_lang_conf", - [Data.Models.Metadata.Rom.TesseractOCRDetectedScriptKey] = "ocr_detected_script", - [Data.Models.Metadata.Rom.TesseractOCRDetectedScriptConfKey] = "ocr_detected_script_conf", - [Data.Models.Metadata.Rom.TesseractOCRModuleVersionKey] = "ocr_module_version", - [Data.Models.Metadata.Rom.TesseractOCRParametersKey] = "ocr_parameters", - [Data.Models.Metadata.Rom.OffsetKey] = "offset", + Offset = "offset", Optional = true, - [Data.Models.Metadata.Rom.OriginalKey] = "original", - [Data.Models.Metadata.Rom.PDFModuleVersionKey] = "pdf_module_version", - [Data.Models.Metadata.Rom.PreviewImageKey] = "preview-image", - [Data.Models.Metadata.Rom.PublisherKey] = "publisher", - [Data.Models.Metadata.Rom.RegionKey] = "region", - [Data.Models.Metadata.Rom.RemarkKey] = "remark", - [Data.Models.Metadata.Rom.RIPEMD128Key] = HashType.RIPEMD128.ZeroString, - [Data.Models.Metadata.Rom.RIPEMD160Key] = HashType.RIPEMD160.ZeroString, - [Data.Models.Metadata.Rom.RotationKey] = "rotation", - [Data.Models.Metadata.Rom.SerialKey] = "serial", - [Data.Models.Metadata.Rom.SHA1Key] = HashType.SHA1.ZeroString, - [Data.Models.Metadata.Rom.SHA256Key] = HashType.SHA256.ZeroString, - [Data.Models.Metadata.Rom.SHA384Key] = HashType.SHA384.ZeroString, - [Data.Models.Metadata.Rom.SHA512Key] = HashType.SHA512.ZeroString, + Original = "original", + PDFModuleVersion = "pdf_module_version", + PreviewImage = "preview-image", + Publisher = "publisher", + Region = "region", + Remark = "remark", + RIPEMD128 = HashType.RIPEMD128.ZeroString, + RIPEMD160 = HashType.RIPEMD160.ZeroString, + Rotation = "rotation", + Serial = "serial", + SHA1 = HashType.SHA1.ZeroString, + SHA256 = HashType.SHA256.ZeroString, + SHA384 = HashType.SHA384.ZeroString, + SHA512 = HashType.SHA512.ZeroString, Size = 12345, SoundOnly = true, - [Data.Models.Metadata.Rom.SourceKey] = "source", - [Data.Models.Metadata.Rom.SpamSumKey] = HashType.SpamSum.ZeroString, - [Data.Models.Metadata.Rom.StartKey] = "start", + Source = "source", + SpamSum = HashType.SpamSum.ZeroString, + Start = "start", Status = Data.Models.Metadata.ItemStatus.Good, - [Data.Models.Metadata.Rom.SummationKey] = "summation", - [Data.Models.Metadata.Rom.TitleKey] = "title", - [Data.Models.Metadata.Rom.TrackKey] = "track", - [Data.Models.Metadata.Rom.OpenMSXType] = "type", + Summation = "summation", + TesseractOCR = "ocr", + TesseractOCRConverted = "ocr_converted", + TesseractOCRDetectedLang = "ocr_detected_lang", + TesseractOCRDetectedLangConf = "ocr_detected_lang_conf", + TesseractOCRDetectedScript = "ocr_detected_script", + TesseractOCRDetectedScriptConf = "ocr_detected_script_conf", + TesseractOCRModuleVersion = "ocr_module_version", + TesseractOCRParameters = "ocr_parameters", + Title = "title", + Track = "track", Value = "value", - [Data.Models.Metadata.Rom.WhisperASRModuleVersionKey] = "whisper_asr_module_version", - [Data.Models.Metadata.Rom.WhisperModelHashKey] = "whisper_model_hash", - [Data.Models.Metadata.Rom.WhisperModelNameKey] = "whisper_model_name", - [Data.Models.Metadata.Rom.WhisperVersionKey] = "whisper_version", - [Data.Models.Metadata.Rom.WidthKey] = "width", - [Data.Models.Metadata.Rom.WordConfidenceInterval0To10Key] = "word_conf_0_10", - [Data.Models.Metadata.Rom.WordConfidenceInterval11To20Key] = "word_conf_11_20", - [Data.Models.Metadata.Rom.WordConfidenceInterval21To30Key] = "word_conf_21_30", - [Data.Models.Metadata.Rom.WordConfidenceInterval31To40Key] = "word_conf_31_40", - [Data.Models.Metadata.Rom.WordConfidenceInterval41To50Key] = "word_conf_41_50", - [Data.Models.Metadata.Rom.WordConfidenceInterval51To60Key] = "word_conf_51_60", - [Data.Models.Metadata.Rom.WordConfidenceInterval61To70Key] = "word_conf_61_70", - [Data.Models.Metadata.Rom.WordConfidenceInterval71To80Key] = "word_conf_71_80", - [Data.Models.Metadata.Rom.WordConfidenceInterval81To90Key] = "word_conf_81_90", - [Data.Models.Metadata.Rom.WordConfidenceInterval91To100Key] = "word_conf_91_100", - [Data.Models.Metadata.Rom.xxHash364Key] = HashType.XxHash3.ZeroString, - [Data.Models.Metadata.Rom.xxHash3128Key] = HashType.XxHash128.ZeroString, + WhisperASRModuleVersion = "whisper_asr_module_version", + WhisperModelHash = "whisper_model_hash", + WhisperModelName = "whisper_model_name", + WhisperVersion = "whisper_version", + Width = "width", + WordConfidenceInterval0To10 = "word_conf_0_10", + WordConfidenceInterval11To20 = "word_conf_11_20", + WordConfidenceInterval21To30 = "word_conf_21_30", + WordConfidenceInterval31To40 = "word_conf_31_40", + WordConfidenceInterval41To50 = "word_conf_41_50", + WordConfidenceInterval51To60 = "word_conf_51_60", + WordConfidenceInterval61To70 = "word_conf_61_70", + WordConfidenceInterval71To80 = "word_conf_71_80", + WordConfidenceInterval81To90 = "word_conf_81_90", + WordConfidenceInterval91To100 = "word_conf_91_100", + xxHash364 = HashType.XxHash3.ZeroString, + xxHash3128 = HashType.XxHash128.ZeroString, }; } @@ -1493,102 +1493,102 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateRom(Rom? rom) { Assert.NotNull(rom); - Assert.Equal("album", rom.ReadString(Data.Models.Metadata.Rom.AlbumKey)); - Assert.Equal("alt_romname", rom.ReadString(Data.Models.Metadata.Rom.AltRomnameKey)); - Assert.Equal("alt_title", rom.ReadString(Data.Models.Metadata.Rom.AltTitleKey)); - Assert.Equal("artist", rom.ReadString(Data.Models.Metadata.Rom.ArtistKey)); - Assert.Equal("asr_detected_lang", rom.ReadString(Data.Models.Metadata.Rom.ASRDetectedLangKey)); - Assert.Equal("asr_detected_lang_conf", rom.ReadString(Data.Models.Metadata.Rom.ASRDetectedLangConfKey)); - Assert.Equal("asr_transcribed_lang", rom.ReadString(Data.Models.Metadata.Rom.ASRTranscribedLangKey)); - Assert.Equal("bios", rom.ReadString(Data.Models.Metadata.Rom.BiosKey)); - Assert.Equal("bitrate", rom.ReadString(Data.Models.Metadata.Rom.BitrateKey)); - Assert.Equal("btih", rom.ReadString(Data.Models.Metadata.Rom.BitTorrentMagnetHashKey)); - Assert.Equal("cloth_cover_detection_module_version", rom.ReadString(Data.Models.Metadata.Rom.ClothCoverDetectionModuleVersionKey)); - Assert.Equal("collection-catalog-number", rom.ReadString(Data.Models.Metadata.Rom.CollectionCatalogNumberKey)); - Assert.Equal("comment", rom.ReadString(Data.Models.Metadata.Rom.CommentKey)); - Assert.Equal(HashType.CRC32.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.CRCKey)); - Assert.Equal(HashType.CRC16.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.CRC16Key)); - Assert.Equal(HashType.CRC64.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.CRC64Key)); - Assert.Equal("creator", rom.ReadString(Data.Models.Metadata.Rom.CreatorKey)); - Assert.Equal("date", rom.ReadString(Data.Models.Metadata.Rom.DateKey)); + Assert.Equal("album", rom.Album); + Assert.Equal("alt_romname", rom.AltRomname); + Assert.Equal("alt_title", rom.AltTitle); + Assert.Equal("artist", rom.Artist); + Assert.Equal("asr_detected_lang", rom.ASRDetectedLang); + Assert.Equal("asr_detected_lang_conf", rom.ASRDetectedLangConf); + Assert.Equal("asr_transcribed_lang", rom.ASRTranscribedLang); + Assert.Equal("bios", rom.Bios); + Assert.Equal("bitrate", rom.Bitrate); + Assert.Equal("btih", rom.BitTorrentMagnetHash); + Assert.Equal("cloth_cover_detection_module_version", rom.ClothCoverDetectionModuleVersion); + Assert.Equal("collection-catalog-number", rom.CollectionCatalogNumber); + Assert.Equal("comment", rom.Comment); + Assert.Equal(HashType.CRC32.ZeroString, rom.CRC); + Assert.Equal(HashType.CRC16.ZeroString, rom.CRC16); + Assert.Equal(HashType.CRC64.ZeroString, rom.CRC64); + Assert.Equal("creator", rom.Creator); + Assert.Equal("date", rom.Date); Assert.True(rom.Dispose); - Assert.Equal("extension", rom.ReadString(Data.Models.Metadata.Rom.ExtensionKey)); + Assert.Equal("extension", rom.Extension); Assert.Equal(12345, rom.FileCount); Assert.True(rom.FileIsAvailable); - Assert.Equal("flags", rom.ReadString(Data.Models.Metadata.Rom.FlagsKey)); - Assert.Equal("format", rom.ReadString(Data.Models.Metadata.Rom.FormatKey)); - Assert.Equal("header", rom.ReadString(Data.Models.Metadata.Rom.HeaderKey)); - Assert.Equal("height", rom.ReadString(Data.Models.Metadata.Rom.HeightKey)); - Assert.Equal("hocr_char_to_word_hocr_version", rom.ReadString(Data.Models.Metadata.Rom.hOCRCharToWordhOCRVersionKey)); - Assert.Equal("hocr_char_to_word_module_version", rom.ReadString(Data.Models.Metadata.Rom.hOCRCharToWordModuleVersionKey)); - Assert.Equal("hocr_fts_text_hocr_version", rom.ReadString(Data.Models.Metadata.Rom.hOCRFtsTexthOCRVersionKey)); - Assert.Equal("hocr_fts_text_module_version", rom.ReadString(Data.Models.Metadata.Rom.hOCRFtsTextModuleVersionKey)); - Assert.Equal("hocr_pageindex_hocr_version", rom.ReadString(Data.Models.Metadata.Rom.hOCRPageIndexhOCRVersionKey)); - Assert.Equal("hocr_pageindex_module_version", rom.ReadString(Data.Models.Metadata.Rom.hOCRPageIndexModuleVersionKey)); + Assert.Equal("flags", rom.Flags); + Assert.Equal("format", rom.Format); + Assert.Equal("header", rom.Header); + Assert.Equal("height", rom.Height); + Assert.Equal("hocr_char_to_word_hocr_version", rom.hOCRCharToWordhOCRVersion); + Assert.Equal("hocr_char_to_word_module_version", rom.hOCRCharToWordModuleVersion); + Assert.Equal("hocr_fts_text_hocr_version", rom.hOCRFtsTexthOCRVersion); + Assert.Equal("hocr_fts_text_module_version", rom.hOCRFtsTextModuleVersion); + Assert.Equal("hocr_pageindex_hocr_version", rom.hOCRPageIndexhOCRVersion); + Assert.Equal("hocr_pageindex_module_version", rom.hOCRPageIndexModuleVersion); Assert.True(rom.Inverted); - Assert.Equal("mtime", rom.ReadString(Data.Models.Metadata.Rom.LastModifiedTimeKey)); - Assert.Equal("length", rom.ReadString(Data.Models.Metadata.Rom.LengthKey)); + Assert.Equal("mtime", rom.LastModifiedTime); + Assert.Equal("length", rom.Length); Assert.Equal(Data.Models.Metadata.LoadFlag.Load16Byte, rom.LoadFlag); - Assert.Equal("matrix_number", rom.ReadString(Data.Models.Metadata.Rom.MatrixNumberKey)); - Assert.Equal(HashType.MD2.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.MD2Key)); - Assert.Equal(HashType.MD4.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.MD4Key)); - Assert.Equal(HashType.MD5.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.MD5Key)); + Assert.Equal("matrix_number", rom.MatrixNumber); + Assert.Equal(HashType.MD2.ZeroString, rom.MD2); + Assert.Equal(HashType.MD4.ZeroString, rom.MD4); + Assert.Equal(HashType.MD5.ZeroString, rom.MD5); Assert.Null(rom.OpenMSXMediaType); // Omit due to other test - Assert.Equal("merge", rom.ReadString(Data.Models.Metadata.Rom.MergeKey)); + Assert.Equal("type", rom.OpenMSXType); + Assert.Equal("merge", rom.Merge); Assert.True(rom.MIA); Assert.Equal("name", rom.Name); - Assert.Equal("ocr", rom.ReadString(Data.Models.Metadata.Rom.TesseractOCRKey)); - Assert.Equal("ocr_converted", rom.ReadString(Data.Models.Metadata.Rom.TesseractOCRConvertedKey)); - Assert.Equal("ocr_detected_lang", rom.ReadString(Data.Models.Metadata.Rom.TesseractOCRDetectedLangKey)); - Assert.Equal("ocr_detected_lang_conf", rom.ReadString(Data.Models.Metadata.Rom.TesseractOCRDetectedLangConfKey)); - Assert.Equal("ocr_detected_script", rom.ReadString(Data.Models.Metadata.Rom.TesseractOCRDetectedScriptKey)); - Assert.Equal("ocr_detected_script_conf", rom.ReadString(Data.Models.Metadata.Rom.TesseractOCRDetectedScriptConfKey)); - Assert.Equal("ocr_module_version", rom.ReadString(Data.Models.Metadata.Rom.TesseractOCRModuleVersionKey)); - Assert.Equal("ocr_parameters", rom.ReadString(Data.Models.Metadata.Rom.TesseractOCRParametersKey)); - Assert.Equal("offset", rom.ReadString(Data.Models.Metadata.Rom.OffsetKey)); + Assert.Equal("offset", rom.Offset); Assert.True(rom.Optional); - Assert.Equal("original", rom.ReadString(Data.Models.Metadata.Rom.OriginalKey)); - Assert.Equal("pdf_module_version", rom.ReadString(Data.Models.Metadata.Rom.PDFModuleVersionKey)); - Assert.Equal("preview-image", rom.ReadString(Data.Models.Metadata.Rom.PreviewImageKey)); - Assert.Equal("publisher", rom.ReadString(Data.Models.Metadata.Rom.PublisherKey)); - Assert.Equal("region", rom.ReadString(Data.Models.Metadata.Rom.RegionKey)); - Assert.Equal("remark", rom.ReadString(Data.Models.Metadata.Rom.RemarkKey)); - Assert.Equal(HashType.RIPEMD128.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.RIPEMD128Key)); - Assert.Equal(HashType.RIPEMD160.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.RIPEMD160Key)); - Assert.Equal("rotation", rom.ReadString(Data.Models.Metadata.Rom.RotationKey)); - Assert.Equal("serial", rom.ReadString(Data.Models.Metadata.Rom.SerialKey)); - Assert.Equal(HashType.SHA1.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.SHA1Key)); - Assert.Equal(HashType.SHA256.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.SHA256Key)); - Assert.Equal(HashType.SHA384.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.SHA384Key)); - Assert.Equal(HashType.SHA512.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.SHA512Key)); + Assert.Equal("original", rom.OriginalProperty); + Assert.Equal("pdf_module_version", rom.PDFModuleVersion); + Assert.Equal("preview-image", rom.PreviewImage); + Assert.Equal("publisher", rom.Publisher); + Assert.Equal("region", rom.Region); + Assert.Equal("remark", rom.Remark); + Assert.Equal(HashType.RIPEMD128.ZeroString, rom.RIPEMD128); + Assert.Equal(HashType.RIPEMD160.ZeroString, rom.RIPEMD160); + Assert.Equal("rotation", rom.Rotation); + Assert.Equal("serial", rom.Serial); + Assert.Equal(HashType.SHA1.ZeroString, rom.SHA1); + Assert.Equal(HashType.SHA256.ZeroString, rom.SHA256); + Assert.Equal(HashType.SHA384.ZeroString, rom.SHA384); + Assert.Equal(HashType.SHA512.ZeroString, rom.SHA512); Assert.Equal(12345, rom.Size); Assert.True(rom.SoundOnly); - Assert.Equal("source", rom.ReadString(Data.Models.Metadata.Rom.SourceKey)); - Assert.Equal(HashType.SpamSum.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.SpamSumKey)); - Assert.Equal("start", rom.ReadString(Data.Models.Metadata.Rom.StartKey)); + Assert.Equal("source", rom.SourceProperty); + Assert.Equal(HashType.SpamSum.ZeroString, rom.SpamSum); + Assert.Equal("start", rom.Start); Assert.Equal(Data.Models.Metadata.ItemStatus.Good, rom.Status); - Assert.Equal("summation", rom.ReadString(Data.Models.Metadata.Rom.SummationKey)); - Assert.Equal("title", rom.ReadString(Data.Models.Metadata.Rom.TitleKey)); - Assert.Equal("track", rom.ReadString(Data.Models.Metadata.Rom.TrackKey)); - Assert.Equal("type", rom.ReadString(Data.Models.Metadata.Rom.OpenMSXType)); + Assert.Equal("summation", rom.Summation); + Assert.Equal("ocr", rom.TesseractOCR); + Assert.Equal("ocr_converted", rom.TesseractOCRConverted); + Assert.Equal("ocr_detected_lang", rom.TesseractOCRDetectedLang); + Assert.Equal("ocr_detected_lang_conf", rom.TesseractOCRDetectedLangConf); + Assert.Equal("ocr_detected_script", rom.TesseractOCRDetectedScript); + Assert.Equal("ocr_detected_script_conf", rom.TesseractOCRDetectedScriptConf); + Assert.Equal("ocr_module_version", rom.TesseractOCRModuleVersion); + Assert.Equal("ocr_parameters", rom.TesseractOCRParameters); + Assert.Equal("title", rom.Title); + Assert.Equal("track", rom.Track); Assert.Equal("value", rom.Value); - Assert.Equal("whisper_asr_module_version", rom.ReadString(Data.Models.Metadata.Rom.WhisperASRModuleVersionKey)); - Assert.Equal("whisper_model_hash", rom.ReadString(Data.Models.Metadata.Rom.WhisperModelHashKey)); - Assert.Equal("whisper_model_name", rom.ReadString(Data.Models.Metadata.Rom.WhisperModelNameKey)); - Assert.Equal("whisper_version", rom.ReadString(Data.Models.Metadata.Rom.WhisperVersionKey)); - Assert.Equal("width", rom.ReadString(Data.Models.Metadata.Rom.WidthKey)); - Assert.Equal("word_conf_0_10", rom.ReadString(Data.Models.Metadata.Rom.WordConfidenceInterval0To10Key)); - Assert.Equal("word_conf_11_20", rom.ReadString(Data.Models.Metadata.Rom.WordConfidenceInterval11To20Key)); - Assert.Equal("word_conf_21_30", rom.ReadString(Data.Models.Metadata.Rom.WordConfidenceInterval21To30Key)); - Assert.Equal("word_conf_31_40", rom.ReadString(Data.Models.Metadata.Rom.WordConfidenceInterval31To40Key)); - Assert.Equal("word_conf_41_50", rom.ReadString(Data.Models.Metadata.Rom.WordConfidenceInterval41To50Key)); - Assert.Equal("word_conf_51_60", rom.ReadString(Data.Models.Metadata.Rom.WordConfidenceInterval51To60Key)); - Assert.Equal("word_conf_61_70", rom.ReadString(Data.Models.Metadata.Rom.WordConfidenceInterval61To70Key)); - Assert.Equal("word_conf_71_80", rom.ReadString(Data.Models.Metadata.Rom.WordConfidenceInterval71To80Key)); - Assert.Equal("word_conf_81_90", rom.ReadString(Data.Models.Metadata.Rom.WordConfidenceInterval81To90Key)); - Assert.Equal("word_conf_91_100", rom.ReadString(Data.Models.Metadata.Rom.WordConfidenceInterval91To100Key)); - Assert.Equal(HashType.XxHash3.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.xxHash364Key)); - Assert.Equal(HashType.XxHash128.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.xxHash3128Key)); + Assert.Equal("whisper_asr_module_version", rom.WhisperASRModuleVersion); + Assert.Equal("whisper_model_hash", rom.WhisperModelHash); + Assert.Equal("whisper_model_name", rom.WhisperModelName); + Assert.Equal("whisper_version", rom.WhisperVersion); + Assert.Equal("width", rom.Width); + Assert.Equal("word_conf_0_10", rom.WordConfidenceInterval0To10); + Assert.Equal("word_conf_11_20", rom.WordConfidenceInterval11To20); + Assert.Equal("word_conf_21_30", rom.WordConfidenceInterval21To30); + Assert.Equal("word_conf_31_40", rom.WordConfidenceInterval31To40); + Assert.Equal("word_conf_41_50", rom.WordConfidenceInterval41To50); + Assert.Equal("word_conf_51_60", rom.WordConfidenceInterval51To60); + Assert.Equal("word_conf_61_70", rom.WordConfidenceInterval61To70); + Assert.Equal("word_conf_71_80", rom.WordConfidenceInterval71To80); + Assert.Equal("word_conf_81_90", rom.WordConfidenceInterval81To90); + Assert.Equal("word_conf_91_100", rom.WordConfidenceInterval91To100); + Assert.Equal(HashType.XxHash3.ZeroString, rom.xxHash364); + Assert.Equal(HashType.XxHash128.ZeroString, rom.xxHash3128); } private static void ValidateSample(Sample? sample) diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.Splitting.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.Splitting.cs index 99783c73..7b33f0ab 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.Splitting.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.Splitting.cs @@ -27,28 +27,28 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "parent_rom", Size = 12345, + CRC = "deadbeef", + Machine = parentMachine, + Source = source }; - parentItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); - parentItem.Machine = parentMachine; - parentItem.Source = source; DatItem matchChildItem = new Rom { Name = "match_child_rom", Size = 12345, + CRC = "deadbeef", + Machine = childMachine, + Source = source }; - matchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); - matchChildItem.Machine = childMachine; - matchChildItem.Source = source; DatItem noMatchChildItem = new Rom { Name = "no_match_child_rom", Size = 12345, + CRC = "beefdead", + Machine = childMachine, + Source = source }; - noMatchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "beefdead"); - noMatchChildItem.Machine = childMachine; - noMatchChildItem.Source = source; DatFile datFile = new Logiqx(datFile: null, useGame: false); datFile.AddItem(parentItem, statsOnly: false); @@ -79,28 +79,28 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "parent_rom", Size = 12345, + CRC = "deadbeef", + Machine = parentMachine, + Source = source }; - parentItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); - parentItem.Machine = parentMachine; - parentItem.Source = source; DatItem matchChildItem = new Rom { Name = "match_child_rom", Size = 12345, + CRC = "deadbeef", + Machine = childMachine, + Source = source }; - matchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); - matchChildItem.Machine = childMachine; - matchChildItem.Source = source; DatItem noMatchChildItem = new Rom { Name = "no_match_child_rom", Size = 12345, + CRC = "beefdead", + Machine = childMachine, + Source = source }; - noMatchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "beefdead"); - noMatchChildItem.Machine = childMachine; - noMatchChildItem.Source = source; DatFile datFile = new Logiqx(datFile: null, useGame: false); datFile.AddItem(parentItem, statsOnly: false); @@ -131,28 +131,28 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "parent_rom", Size = 12345, + CRC = "deadbeef", + Machine = parentMachine, + Source = source }; - parentItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); - parentItem.Machine = parentMachine; - parentItem.Source = source; DatItem matchChildItem = new Rom { Name = "match_child_rom", Size = 12345, + CRC = "deadbeef", + Machine = childMachine, + Source = source }; - matchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); - matchChildItem.Machine = childMachine; - matchChildItem.Source = source; DatItem noMatchChildItem = new Rom { Name = "no_match_child_rom", Size = 12345, + CRC = "beefdead", + Machine = childMachine, + Source = source }; - noMatchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "beefdead"); - noMatchChildItem.Machine = childMachine; - noMatchChildItem.Source = source; DatFile datFile = new Logiqx(datFile: null, useGame: false); long biosMachineIndex = datFile.AddMachineDB(parentMachine); @@ -186,28 +186,28 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "parent_rom", Size = 12345, + CRC = "deadbeef", + Machine = parentMachine, + Source = source }; - parentItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); - parentItem.Machine = parentMachine; - parentItem.Source = source; DatItem matchChildItem = new Rom { Name = "match_child_rom", Size = 12345, + CRC = "deadbeef", + Machine = childMachine, + Source = source }; - matchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); - matchChildItem.Machine = childMachine; - matchChildItem.Source = source; DatItem noMatchChildItem = new Rom { Name = "no_match_child_rom", Size = 12345, + CRC = "beefdead", + Machine = childMachine, + Source = source }; - noMatchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "beefdead"); - noMatchChildItem.Machine = childMachine; - noMatchChildItem.Source = source; DatFile datFile = new Logiqx(datFile: null, useGame: false); long biosMachineIndex = datFile.AddMachineDB(parentMachine); @@ -245,28 +245,28 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "parent_rom", Size = 12345, + CRC = "deadbeef", + Machine = parentMachine, + Source = source }; - parentItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); - parentItem.Machine = parentMachine; - parentItem.Source = source; DatItem matchChildItem = new Rom { Name = "match_child_rom", Size = 12345, + CRC = "deadbeef", + Machine = childMachine, + Source = source }; - matchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); - matchChildItem.Machine = childMachine; - matchChildItem.Source = source; DatItem noMatchChildItem = new Rom { Name = "no_match_child_rom", Size = 12345, + CRC = "beefdead", + Machine = childMachine, + Source = source }; - noMatchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "beefdead"); - noMatchChildItem.Machine = childMachine; - noMatchChildItem.Source = source; DatFile datFile = new Logiqx(datFile: null, useGame: false); datFile.AddItem(parentItem, statsOnly: false); @@ -297,28 +297,28 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "parent_rom", Size = 12345, + CRC = "deadbeef", + Machine = parentMachine, + Source = source }; - parentItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); - parentItem.Machine = parentMachine; - parentItem.Source = source; DatItem matchChildItem = new Rom { Name = "match_child_rom", Size = 12345, + CRC = "deadbeef", + Machine = childMachine, + Source = source }; - matchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); - matchChildItem.Machine = childMachine; - matchChildItem.Source = source; DatItem noMatchChildItem = new Rom { Name = "no_match_child_rom", Size = 12345, + CRC = "beefdead", + Machine = childMachine, + Source = source }; - noMatchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "beefdead"); - noMatchChildItem.Machine = childMachine; - noMatchChildItem.Source = source; DatFile datFile = new Logiqx(datFile: null, useGame: false); long biosMachineIndex = datFile.AddMachineDB(parentMachine); @@ -375,10 +375,10 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "rom", Size = 12345, + CRC = "deadbeef", + Machine = itemMachine, + Source = source }; - datItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); - datItem.Machine = itemMachine; - datItem.Source = source; DatItem deviceRef = new DeviceRef { @@ -434,8 +434,8 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "rom", Size = 12345, + CRC = "deadbeef" }; - datItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); DatItem deviceRef = new DeviceRef { @@ -486,28 +486,28 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "parent_rom", Size = 12345, + CRC = "deadbeef", + Machine = parentMachine, + Source = source }; - parentItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); - parentItem.Machine = parentMachine; - parentItem.Source = source; DatItem matchChildItem = new Rom { Name = "match_child_rom", Size = 12345, + CRC = "deadbeef", + Machine = childMachine, + Source = source }; - matchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); - matchChildItem.Machine = childMachine; - matchChildItem.Source = source; DatItem noMatchChildItem = new Rom { Name = "no_match_child_rom", Size = 12345, + CRC = "beefdead", + Machine = childMachine, + Source = source }; - noMatchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "beefdead"); - noMatchChildItem.Machine = childMachine; - noMatchChildItem.Source = source; DatFile datFile = new Logiqx(datFile: null, useGame: false); datFile.AddItem(parentItem, statsOnly: false); @@ -538,28 +538,28 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "parent_rom", Size = 12345, + CRC = "deadbeef", + Machine = parentMachine, + Source = source }; - parentItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); - parentItem.Machine = parentMachine; - parentItem.Source = source; DatItem matchChildItem = new Rom { Name = "match_child_rom", Size = 12345, + CRC = "deadbeef", + Machine = childMachine, + Source = source }; - matchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); - matchChildItem.Machine = childMachine; - matchChildItem.Source = source; DatItem noMatchChildItem = new Rom { Name = "no_match_child_rom", Size = 12345, + CRC = "beefdead", + Machine = childMachine, + Source = source }; - noMatchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "beefdead"); - noMatchChildItem.Machine = childMachine; - noMatchChildItem.Source = source; DatFile datFile = new Logiqx(datFile: null, useGame: false); long biosMachineIndex = datFile.AddMachineDB(parentMachine); @@ -677,28 +677,28 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "parent_rom", Size = 12345, + CRC = "deadbeef", + Machine = parentMachine, + Source = source }; - parentItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); - parentItem.Machine = parentMachine; - parentItem.Source = source; DatItem matchChildItem = new Rom { Name = "match_child_rom", Size = 12345, + CRC = "deadbeef", + Machine = childMachine, + Source = source }; - matchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); - matchChildItem.Machine = childMachine; - matchChildItem.Source = source; DatItem noMatchChildItem = new Rom { Name = "no_match_child_rom", Size = 12345, + CRC = "beefdead", + Machine = childMachine, + Source = source }; - noMatchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "beefdead"); - noMatchChildItem.Machine = childMachine; - noMatchChildItem.Source = source; DatFile datFile = new Logiqx(datFile: null, useGame: false); datFile.AddItem(parentItem, statsOnly: false); @@ -737,28 +737,28 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "parent_rom", Size = 12345, + CRC = "deadbeef", + Machine = parentMachine, + Source = source }; - parentItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); - parentItem.Machine = parentMachine; - parentItem.Source = source; DatItem matchChildItem = new Rom { Name = "match_child_rom", Size = 12345, + CRC = "deadbeef", + Machine = childMachine, + Source = source }; - matchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); - matchChildItem.Machine = childMachine; - matchChildItem.Source = source; DatItem noMatchChildItem = new Rom { Name = "no_match_child_rom", Size = 12345, + CRC = "beefdead", + Machine = childMachine, + Source = source }; - noMatchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "beefdead"); - noMatchChildItem.Machine = childMachine; - noMatchChildItem.Source = source; DatFile datFile = new Logiqx(datFile: null, useGame: false); long biosMachineIndex = datFile.AddMachineDB(parentMachine); @@ -801,28 +801,28 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "parent_rom", Size = 12345, + CRC = "deadbeef", + Machine = parentMachine, + Source = source }; - parentItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); - parentItem.Machine = parentMachine; - parentItem.Source = source; DatItem matchChildItem = new Rom { Name = "match_child_rom", Size = 12345, + CRC = "deadbeef", + Machine = childMachine, + Source = source }; - matchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); - matchChildItem.Machine = childMachine; - matchChildItem.Source = source; DatItem noMatchChildItem = new Rom { Name = "no_match_child_rom", Size = 12345, + CRC = "beefdead", + Machine = childMachine, + Source = source }; - noMatchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "beefdead"); - noMatchChildItem.Machine = childMachine; - noMatchChildItem.Source = source; DatFile datFile = new Logiqx(datFile: null, useGame: false); datFile.AddItem(parentItem, statsOnly: false); @@ -857,28 +857,28 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "parent_rom", Size = 12345, + CRC = "deadbeef", + Machine = parentMachine, + Source = source }; - parentItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); - parentItem.Machine = parentMachine; - parentItem.Source = source; DatItem matchChildItem = new Rom { Name = "match_child_rom", Size = 12345, + CRC = "deadbeef", + Machine = childMachine, + Source = source }; - matchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); - matchChildItem.Machine = childMachine; - matchChildItem.Source = source; DatItem noMatchChildItem = new Rom { Name = "no_match_child_rom", Size = 12345, + CRC = "beefdead", + Machine = childMachine, + Source = source }; - noMatchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "beefdead"); - noMatchChildItem.Machine = childMachine; - noMatchChildItem.Source = source; DatFile datFile = new Logiqx(datFile: null, useGame: false); long biosMachineIndex = datFile.AddMachineDB(parentMachine); diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs index a3045f03..305af4d3 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs @@ -1025,102 +1025,102 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateMetadataRom(Data.Models.Metadata.Rom? rom) { Assert.NotNull(rom); - Assert.Equal("album", rom.ReadString(Data.Models.Metadata.Rom.AlbumKey)); - Assert.Equal("alt_romname", rom.ReadString(Data.Models.Metadata.Rom.AltRomnameKey)); - Assert.Equal("alt_title", rom.ReadString(Data.Models.Metadata.Rom.AltTitleKey)); - Assert.Equal("artist", rom.ReadString(Data.Models.Metadata.Rom.ArtistKey)); - Assert.Equal("asr_detected_lang", rom.ReadString(Data.Models.Metadata.Rom.ASRDetectedLangKey)); - Assert.Equal("asr_detected_lang_conf", rom.ReadString(Data.Models.Metadata.Rom.ASRDetectedLangConfKey)); - Assert.Equal("asr_transcribed_lang", rom.ReadString(Data.Models.Metadata.Rom.ASRTranscribedLangKey)); - Assert.Equal("bios", rom.ReadString(Data.Models.Metadata.Rom.BiosKey)); - Assert.Equal("bitrate", rom.ReadString(Data.Models.Metadata.Rom.BitrateKey)); - Assert.Equal("btih", rom.ReadString(Data.Models.Metadata.Rom.BitTorrentMagnetHashKey)); - Assert.Equal("cloth_cover_detection_module_version", rom.ReadString(Data.Models.Metadata.Rom.ClothCoverDetectionModuleVersionKey)); - Assert.Equal("collection-catalog-number", rom.ReadString(Data.Models.Metadata.Rom.CollectionCatalogNumberKey)); - Assert.Equal("comment", rom.ReadString(Data.Models.Metadata.Rom.CommentKey)); - Assert.Equal(HashType.CRC32.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.CRCKey)); - Assert.Equal(HashType.CRC16.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.CRC16Key)); - Assert.Equal(HashType.CRC64.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.CRC64Key)); - Assert.Equal("creator", rom.ReadString(Data.Models.Metadata.Rom.CreatorKey)); - Assert.Equal("date", rom.ReadString(Data.Models.Metadata.Rom.DateKey)); + Assert.Equal("album", rom.Album); + Assert.Equal("alt_romname", rom.AltRomname); + Assert.Equal("alt_title", rom.AltTitle); + Assert.Equal("artist", rom.Artist); + Assert.Equal("asr_detected_lang", rom.ASRDetectedLang); + Assert.Equal("asr_detected_lang_conf", rom.ASRDetectedLangConf); + Assert.Equal("asr_transcribed_lang", rom.ASRTranscribedLang); + Assert.Equal("bios", rom.Bios); + Assert.Equal("bitrate", rom.Bitrate); + Assert.Equal("btih", rom.BitTorrentMagnetHash); + Assert.Equal("cloth_cover_detection_module_version", rom.ClothCoverDetectionModuleVersion); + Assert.Equal("collection-catalog-number", rom.CollectionCatalogNumber); + Assert.Equal("comment", rom.Comment); + Assert.Equal(HashType.CRC32.ZeroString, rom.CRC); + Assert.Equal(HashType.CRC16.ZeroString, rom.CRC16); + Assert.Equal(HashType.CRC64.ZeroString, rom.CRC64); + Assert.Equal("creator", rom.Creator); + Assert.Equal("date", rom.Date); Assert.True(rom.Dispose); - Assert.Equal("extension", rom.ReadString(Data.Models.Metadata.Rom.ExtensionKey)); + Assert.Equal("extension", rom.Extension); Assert.Equal(12345, rom.FileCount); Assert.True(rom.FileIsAvailable); - Assert.Equal("flags", rom.ReadString(Data.Models.Metadata.Rom.FlagsKey)); - Assert.Equal("format", rom.ReadString(Data.Models.Metadata.Rom.FormatKey)); - Assert.Equal("header", rom.ReadString(Data.Models.Metadata.Rom.HeaderKey)); - Assert.Equal("height", rom.ReadString(Data.Models.Metadata.Rom.HeightKey)); - Assert.Equal("hocr_char_to_word_hocr_version", rom.ReadString(Data.Models.Metadata.Rom.hOCRCharToWordhOCRVersionKey)); - Assert.Equal("hocr_char_to_word_module_version", rom.ReadString(Data.Models.Metadata.Rom.hOCRCharToWordModuleVersionKey)); - Assert.Equal("hocr_fts_text_hocr_version", rom.ReadString(Data.Models.Metadata.Rom.hOCRFtsTexthOCRVersionKey)); - Assert.Equal("hocr_fts_text_module_version", rom.ReadString(Data.Models.Metadata.Rom.hOCRFtsTextModuleVersionKey)); - Assert.Equal("hocr_pageindex_hocr_version", rom.ReadString(Data.Models.Metadata.Rom.hOCRPageIndexhOCRVersionKey)); - Assert.Equal("hocr_pageindex_module_version", rom.ReadString(Data.Models.Metadata.Rom.hOCRPageIndexModuleVersionKey)); + Assert.Equal("flags", rom.Flags); + Assert.Equal("format", rom.Format); + Assert.Equal("header", rom.Header); + Assert.Equal("height", rom.Height); + Assert.Equal("hocr_char_to_word_hocr_version", rom.hOCRCharToWordhOCRVersion); + Assert.Equal("hocr_char_to_word_module_version", rom.hOCRCharToWordModuleVersion); + Assert.Equal("hocr_fts_text_hocr_version", rom.hOCRFtsTexthOCRVersion); + Assert.Equal("hocr_fts_text_module_version", rom.hOCRFtsTextModuleVersion); + Assert.Equal("hocr_pageindex_hocr_version", rom.hOCRPageIndexhOCRVersion); + Assert.Equal("hocr_pageindex_module_version", rom.hOCRPageIndexModuleVersion); Assert.True(rom.Inverted); - Assert.Equal("mtime", rom.ReadString(Data.Models.Metadata.Rom.LastModifiedTimeKey)); - Assert.Equal("length", rom.ReadString(Data.Models.Metadata.Rom.LengthKey)); + Assert.Equal("mtime", rom.LastModifiedTime); + Assert.Equal("length", rom.Length); Assert.Equal(Data.Models.Metadata.LoadFlag.Load16Byte, rom.LoadFlag); - Assert.Equal("matrix_number", rom.ReadString(Data.Models.Metadata.Rom.MatrixNumberKey)); - Assert.Equal(HashType.MD2.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.MD2Key)); - Assert.Equal(HashType.MD4.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.MD4Key)); - Assert.Equal(HashType.MD5.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.MD5Key)); + Assert.Equal("matrix_number", rom.MatrixNumber); + Assert.Equal(HashType.MD2.ZeroString, rom.MD2); + Assert.Equal(HashType.MD4.ZeroString, rom.MD4); + Assert.Equal(HashType.MD5.ZeroString, rom.MD5); Assert.Null(rom.OpenMSXMediaType); // Omit due to other test - Assert.Equal("merge", rom.ReadString(Data.Models.Metadata.Rom.MergeKey)); + Assert.Equal("type", rom.OpenMSXType); + Assert.Equal("merge", rom.Merge); Assert.True(rom.MIA); Assert.Equal("name", rom.Name); - Assert.Equal("ocr", rom.ReadString(Data.Models.Metadata.Rom.TesseractOCRKey)); - Assert.Equal("ocr_converted", rom.ReadString(Data.Models.Metadata.Rom.TesseractOCRConvertedKey)); - Assert.Equal("ocr_detected_lang", rom.ReadString(Data.Models.Metadata.Rom.TesseractOCRDetectedLangKey)); - Assert.Equal("ocr_detected_lang_conf", rom.ReadString(Data.Models.Metadata.Rom.TesseractOCRDetectedLangConfKey)); - Assert.Equal("ocr_detected_script", rom.ReadString(Data.Models.Metadata.Rom.TesseractOCRDetectedScriptKey)); - Assert.Equal("ocr_detected_script_conf", rom.ReadString(Data.Models.Metadata.Rom.TesseractOCRDetectedScriptConfKey)); - Assert.Equal("ocr_module_version", rom.ReadString(Data.Models.Metadata.Rom.TesseractOCRModuleVersionKey)); - Assert.Equal("ocr_parameters", rom.ReadString(Data.Models.Metadata.Rom.TesseractOCRParametersKey)); - Assert.Equal("offset", rom.ReadString(Data.Models.Metadata.Rom.OffsetKey)); + Assert.Equal("offset", rom.Offset); Assert.True(rom.Optional); - Assert.Equal("original", rom.ReadString(Data.Models.Metadata.Rom.OriginalKey)); - Assert.Equal("pdf_module_version", rom.ReadString(Data.Models.Metadata.Rom.PDFModuleVersionKey)); - Assert.Equal("preview-image", rom.ReadString(Data.Models.Metadata.Rom.PreviewImageKey)); - Assert.Equal("publisher", rom.ReadString(Data.Models.Metadata.Rom.PublisherKey)); - Assert.Equal("region", rom.ReadString(Data.Models.Metadata.Rom.RegionKey)); - Assert.Equal("remark", rom.ReadString(Data.Models.Metadata.Rom.RemarkKey)); - Assert.Equal(HashType.RIPEMD128.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.RIPEMD128Key)); - Assert.Equal(HashType.RIPEMD160.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.RIPEMD160Key)); - Assert.Equal("rotation", rom.ReadString(Data.Models.Metadata.Rom.RotationKey)); - Assert.Equal("serial", rom.ReadString(Data.Models.Metadata.Rom.SerialKey)); - Assert.Equal(HashType.SHA1.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.SHA1Key)); - Assert.Equal(HashType.SHA256.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.SHA256Key)); - Assert.Equal(HashType.SHA384.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.SHA384Key)); - Assert.Equal(HashType.SHA512.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.SHA512Key)); + Assert.Equal("original", rom.Original); + Assert.Equal("pdf_module_version", rom.PDFModuleVersion); + Assert.Equal("preview-image", rom.PreviewImage); + Assert.Equal("publisher", rom.Publisher); + Assert.Equal("region", rom.Region); + Assert.Equal("remark", rom.Remark); + Assert.Equal(HashType.RIPEMD128.ZeroString, rom.RIPEMD128); + Assert.Equal(HashType.RIPEMD160.ZeroString, rom.RIPEMD160); + Assert.Equal("rotation", rom.Rotation); + Assert.Equal("serial", rom.Serial); + Assert.Equal(HashType.SHA1.ZeroString, rom.SHA1); + Assert.Equal(HashType.SHA256.ZeroString, rom.SHA256); + Assert.Equal(HashType.SHA384.ZeroString, rom.SHA384); + Assert.Equal(HashType.SHA512.ZeroString, rom.SHA512); Assert.Equal(12345, rom.Size); Assert.True(rom.SoundOnly); - Assert.Equal("source", rom.ReadString(Data.Models.Metadata.Rom.SourceKey)); - Assert.Equal(HashType.SpamSum.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.SpamSumKey)); - Assert.Equal("start", rom.ReadString(Data.Models.Metadata.Rom.StartKey)); + Assert.Equal("source", rom.Source); + Assert.Equal(HashType.SpamSum.ZeroString, rom.SpamSum); + Assert.Equal("start", rom.Start); Assert.Equal(Data.Models.Metadata.ItemStatus.Good, rom.Status); - Assert.Equal("summation", rom.ReadString(Data.Models.Metadata.Rom.SummationKey)); - Assert.Equal("title", rom.ReadString(Data.Models.Metadata.Rom.TitleKey)); - Assert.Equal("track", rom.ReadString(Data.Models.Metadata.Rom.TrackKey)); - Assert.Equal("type", rom.ReadString(Data.Models.Metadata.Rom.OpenMSXType)); + Assert.Equal("summation", rom.Summation); + Assert.Equal("ocr", rom.TesseractOCR); + Assert.Equal("ocr_converted", rom.TesseractOCRConverted); + Assert.Equal("ocr_detected_lang", rom.TesseractOCRDetectedLang); + Assert.Equal("ocr_detected_lang_conf", rom.TesseractOCRDetectedLangConf); + Assert.Equal("ocr_detected_script", rom.TesseractOCRDetectedScript); + Assert.Equal("ocr_detected_script_conf", rom.TesseractOCRDetectedScriptConf); + Assert.Equal("ocr_module_version", rom.TesseractOCRModuleVersion); + Assert.Equal("ocr_parameters", rom.TesseractOCRParameters); + Assert.Equal("title", rom.Title); + Assert.Equal("track", rom.Track); Assert.Equal("value", rom.Value); - Assert.Equal("whisper_asr_module_version", rom.ReadString(Data.Models.Metadata.Rom.WhisperASRModuleVersionKey)); - Assert.Equal("whisper_model_hash", rom.ReadString(Data.Models.Metadata.Rom.WhisperModelHashKey)); - Assert.Equal("whisper_model_name", rom.ReadString(Data.Models.Metadata.Rom.WhisperModelNameKey)); - Assert.Equal("whisper_version", rom.ReadString(Data.Models.Metadata.Rom.WhisperVersionKey)); - Assert.Equal("width", rom.ReadString(Data.Models.Metadata.Rom.WidthKey)); - Assert.Equal("word_conf_0_10", rom.ReadString(Data.Models.Metadata.Rom.WordConfidenceInterval0To10Key)); - Assert.Equal("word_conf_11_20", rom.ReadString(Data.Models.Metadata.Rom.WordConfidenceInterval11To20Key)); - Assert.Equal("word_conf_21_30", rom.ReadString(Data.Models.Metadata.Rom.WordConfidenceInterval21To30Key)); - Assert.Equal("word_conf_31_40", rom.ReadString(Data.Models.Metadata.Rom.WordConfidenceInterval31To40Key)); - Assert.Equal("word_conf_41_50", rom.ReadString(Data.Models.Metadata.Rom.WordConfidenceInterval41To50Key)); - Assert.Equal("word_conf_51_60", rom.ReadString(Data.Models.Metadata.Rom.WordConfidenceInterval51To60Key)); - Assert.Equal("word_conf_61_70", rom.ReadString(Data.Models.Metadata.Rom.WordConfidenceInterval61To70Key)); - Assert.Equal("word_conf_71_80", rom.ReadString(Data.Models.Metadata.Rom.WordConfidenceInterval71To80Key)); - Assert.Equal("word_conf_81_90", rom.ReadString(Data.Models.Metadata.Rom.WordConfidenceInterval81To90Key)); - Assert.Equal("word_conf_91_100", rom.ReadString(Data.Models.Metadata.Rom.WordConfidenceInterval91To100Key)); - Assert.Equal(HashType.XxHash3.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.xxHash364Key)); - Assert.Equal(HashType.XxHash128.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.xxHash3128Key)); + Assert.Equal("whisper_asr_module_version", rom.WhisperASRModuleVersion); + Assert.Equal("whisper_model_hash", rom.WhisperModelHash); + Assert.Equal("whisper_model_name", rom.WhisperModelName); + Assert.Equal("whisper_version", rom.WhisperVersion); + Assert.Equal("width", rom.Width); + Assert.Equal("word_conf_0_10", rom.WordConfidenceInterval0To10); + Assert.Equal("word_conf_11_20", rom.WordConfidenceInterval11To20); + Assert.Equal("word_conf_21_30", rom.WordConfidenceInterval21To30); + Assert.Equal("word_conf_31_40", rom.WordConfidenceInterval31To40); + Assert.Equal("word_conf_41_50", rom.WordConfidenceInterval41To50); + Assert.Equal("word_conf_51_60", rom.WordConfidenceInterval51To60); + Assert.Equal("word_conf_61_70", rom.WordConfidenceInterval61To70); + Assert.Equal("word_conf_71_80", rom.WordConfidenceInterval71To80); + Assert.Equal("word_conf_81_90", rom.WordConfidenceInterval81To90); + Assert.Equal("word_conf_91_100", rom.WordConfidenceInterval91To100); + Assert.Equal(HashType.XxHash3.ZeroString, rom.xxHash364); + Assert.Equal(HashType.XxHash128.ZeroString, rom.xxHash3128); } private static void ValidateMetadataSample(Data.Models.Metadata.Sample? sample) diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.cs index 954dd0b8..7bf11cde 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.cs @@ -32,10 +32,13 @@ namespace SabreTools.Metadata.DatFiles.Test Machine machine = new Machine { Name = "key" }; - DatItem rom = new Rom { Name = "rom" }; - rom.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); - rom.Source = source; - rom.Machine = machine; + DatItem rom = new Rom + { + Name = "rom", + CRC = "deadbeef", + Source = source, + Machine = machine + }; DatFile? datFile = new Logiqx(datFile: null, useGame: false); datFile.Header.Name = "name"; @@ -1329,8 +1332,11 @@ namespace SabreTools.Metadata.DatFiles.Test { Machine machine = new Machine { Name = "machine" }; - DatItem item = new Rom { Name = "name" }; - item.Write(Data.Models.Metadata.Rom.SHA1Key, HashType.SHA1.ZeroString); + DatItem item = new Rom + { + Name = "name", + SHA1 = HashType.SHA1.ZeroString + }; DatFile? datFile = new Logiqx(datFile: null, useGame: false); datFile.Modifiers.Prefix = fix; @@ -1371,20 +1377,20 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "name", Size = 12345, + CRC16 = "crc16", + CRC = "crc", + CRC64 = "crc64", + MD2 = "md2", + MD4 = "md4", + MD5 = "md5", + RIPEMD128 = "ripemd128", + RIPEMD160 = "ripemd160", + SHA1 = "sha1", + SHA256 = "sha256", + SHA384 = "sha384", + SHA512 = "sha512", + SpamSum = "spamsum" }; - item.Write(Data.Models.Metadata.Rom.CRC16Key, "crc16"); - item.Write(Data.Models.Metadata.Rom.CRCKey, "crc"); - item.Write(Data.Models.Metadata.Rom.CRC64Key, "crc64"); - item.Write(Data.Models.Metadata.Rom.MD2Key, "md2"); - item.Write(Data.Models.Metadata.Rom.MD4Key, "md4"); - item.Write(Data.Models.Metadata.Rom.MD5Key, "md5"); - item.Write(Data.Models.Metadata.Rom.RIPEMD128Key, "ripemd128"); - item.Write(Data.Models.Metadata.Rom.RIPEMD160Key, "ripemd160"); - item.Write(Data.Models.Metadata.Rom.SHA1Key, "sha1"); - item.Write(Data.Models.Metadata.Rom.SHA256Key, "sha256"); - item.Write(Data.Models.Metadata.Rom.SHA384Key, "sha384"); - item.Write(Data.Models.Metadata.Rom.SHA512Key, "sha512"); - item.Write(Data.Models.Metadata.Rom.SpamSumKey, "spamsum"); string actual = DatFile.FormatPrefixPostfix(item, machine, fix); Assert.Equal(expected, actual); @@ -1489,20 +1495,20 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "name", Size = 12345, + CRC16 = "crc16", + CRC = "crc", + CRC64 = "crc64", + MD2 = "md2", + MD4 = "md4", + MD5 = "md5", + RIPEMD128 = "ripemd128", + RIPEMD160 = "ripemd160", + SHA1 = "sha1", + SHA256 = "sha256", + SHA384 = "sha384", + SHA512 = "sha512", + SpamSum = "spamsum" }; - item.Write(Data.Models.Metadata.Rom.CRC16Key, "crc16"); - item.Write(Data.Models.Metadata.Rom.CRCKey, "crc"); - item.Write(Data.Models.Metadata.Rom.CRC64Key, "crc64"); - item.Write(Data.Models.Metadata.Rom.MD2Key, "md2"); - item.Write(Data.Models.Metadata.Rom.MD4Key, "md4"); - item.Write(Data.Models.Metadata.Rom.MD5Key, "md5"); - item.Write(Data.Models.Metadata.Rom.RIPEMD128Key, "ripemd128"); - item.Write(Data.Models.Metadata.Rom.RIPEMD160Key, "ripemd160"); - item.Write(Data.Models.Metadata.Rom.SHA1Key, "sha1"); - item.Write(Data.Models.Metadata.Rom.SHA256Key, "sha256"); - item.Write(Data.Models.Metadata.Rom.SHA384Key, "sha384"); - item.Write(Data.Models.Metadata.Rom.SHA512Key, "sha512"); - item.Write(Data.Models.Metadata.Rom.SpamSumKey, "spamsum"); string actual = DatFile.FormatPrefixPostfix(item, machine, fix); Assert.Equal(expected, actual); @@ -1512,30 +1518,6 @@ namespace SabreTools.Metadata.DatFiles.Test #region ProcessNullifiedItem - [Fact] - public void ProcessNullifiedItem_NonRom() - { - DatItem item = new Sample(); - - DatItem actual = DatFile.ProcessNullifiedItem(item); - Sample? sample = actual as Sample; - Assert.NotNull(sample); - Assert.Null(sample.ReadString("size")); - Assert.Null(sample.ReadString(Data.Models.Metadata.Rom.CRC16Key)); - Assert.Null(sample.ReadString(Data.Models.Metadata.Rom.CRCKey)); - Assert.Null(sample.ReadString(Data.Models.Metadata.Rom.CRC64Key)); - Assert.Null(sample.ReadString(Data.Models.Metadata.Rom.MD2Key)); - Assert.Null(sample.ReadString(Data.Models.Metadata.Rom.MD4Key)); - Assert.Null(sample.ReadString(Data.Models.Metadata.Rom.MD5Key)); - Assert.Null(sample.ReadString(Data.Models.Metadata.Rom.RIPEMD128Key)); - Assert.Null(sample.ReadString(Data.Models.Metadata.Rom.RIPEMD160Key)); - Assert.Null(sample.ReadString(Data.Models.Metadata.Rom.SHA1Key)); - Assert.Null(sample.ReadString(Data.Models.Metadata.Rom.SHA256Key)); - Assert.Null(sample.ReadString(Data.Models.Metadata.Rom.SHA384Key)); - Assert.Null(sample.ReadString(Data.Models.Metadata.Rom.SHA512Key)); - Assert.Null(sample.ReadString(Data.Models.Metadata.Rom.SpamSumKey)); - } - [Fact] public void ProcessNullifiedItem_SizeNonNull() { @@ -1548,79 +1530,83 @@ namespace SabreTools.Metadata.DatFiles.Test Rom? rom = actual as Rom; Assert.NotNull(rom); Assert.Equal(12345, rom.Size); - Assert.Null(rom.ReadString(Data.Models.Metadata.Rom.CRC16Key)); - Assert.Null(rom.ReadString(Data.Models.Metadata.Rom.CRCKey)); - Assert.Null(rom.ReadString(Data.Models.Metadata.Rom.CRC64Key)); - Assert.Null(rom.ReadString(Data.Models.Metadata.Rom.MD2Key)); - Assert.Null(rom.ReadString(Data.Models.Metadata.Rom.MD4Key)); - Assert.Null(rom.ReadString(Data.Models.Metadata.Rom.MD5Key)); - Assert.Null(rom.ReadString(Data.Models.Metadata.Rom.RIPEMD128Key)); - Assert.Null(rom.ReadString(Data.Models.Metadata.Rom.RIPEMD160Key)); - Assert.Null(rom.ReadString(Data.Models.Metadata.Rom.SHA1Key)); - Assert.Null(rom.ReadString(Data.Models.Metadata.Rom.SHA256Key)); - Assert.Null(rom.ReadString(Data.Models.Metadata.Rom.SHA384Key)); - Assert.Null(rom.ReadString(Data.Models.Metadata.Rom.SHA512Key)); - Assert.Null(rom.ReadString(Data.Models.Metadata.Rom.SpamSumKey)); + Assert.Null(rom.CRC16); + Assert.Null(rom.CRC); + Assert.Null(rom.CRC64); + Assert.Null(rom.MD2); + Assert.Null(rom.MD4); + Assert.Null(rom.MD5); + Assert.Null(rom.RIPEMD128); + Assert.Null(rom.RIPEMD160); + Assert.Null(rom.SHA1); + Assert.Null(rom.SHA256); + Assert.Null(rom.SHA384); + Assert.Null(rom.SHA512); + Assert.Null(rom.SpamSum); } [Fact] public void ProcessNullifiedItem_CrcNonNull() { - DatItem item = new Rom(); - item.Write(Data.Models.Metadata.Rom.CRCKey, HashType.CRC32.ZeroString); + DatItem item = new Rom + { + CRC = HashType.CRC32.ZeroString + }; DatItem actual = DatFile.ProcessNullifiedItem(item); Rom? rom = actual as Rom; Assert.NotNull(rom); Assert.Null(rom.Size); - Assert.Equal(HashType.CRC32.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.CRCKey)); - Assert.Null(rom.ReadString(Data.Models.Metadata.Rom.MD2Key)); - Assert.Null(rom.ReadString(Data.Models.Metadata.Rom.MD4Key)); - Assert.Null(rom.ReadString(Data.Models.Metadata.Rom.MD5Key)); - Assert.Null(rom.ReadString(Data.Models.Metadata.Rom.RIPEMD128Key)); - Assert.Null(rom.ReadString(Data.Models.Metadata.Rom.RIPEMD160Key)); - Assert.Null(rom.ReadString(Data.Models.Metadata.Rom.SHA1Key)); - Assert.Null(rom.ReadString(Data.Models.Metadata.Rom.SHA256Key)); - Assert.Null(rom.ReadString(Data.Models.Metadata.Rom.SHA384Key)); - Assert.Null(rom.ReadString(Data.Models.Metadata.Rom.SHA512Key)); - Assert.Null(rom.ReadString(Data.Models.Metadata.Rom.SpamSumKey)); + Assert.Equal(HashType.CRC32.ZeroString, rom.CRC); + Assert.Null(rom.MD2); + Assert.Null(rom.MD4); + Assert.Null(rom.MD5); + Assert.Null(rom.RIPEMD128); + Assert.Null(rom.RIPEMD160); + Assert.Null(rom.SHA1); + Assert.Null(rom.SHA256); + Assert.Null(rom.SHA384); + Assert.Null(rom.SHA512); + Assert.Null(rom.SpamSum); } [Fact] public void ProcessNullifiedItem_AllNull() { - DatItem item = new Rom(); - item.Write(Data.Models.Metadata.Rom.CRC16Key, "null"); - item.Write(Data.Models.Metadata.Rom.CRCKey, "null"); - item.Write(Data.Models.Metadata.Rom.CRC64Key, "null"); - item.Write(Data.Models.Metadata.Rom.MD2Key, "null"); - item.Write(Data.Models.Metadata.Rom.MD4Key, "null"); - item.Write(Data.Models.Metadata.Rom.MD5Key, "null"); - item.Write(Data.Models.Metadata.Rom.RIPEMD128Key, "null"); - item.Write(Data.Models.Metadata.Rom.RIPEMD160Key, "null"); - item.Write(Data.Models.Metadata.Rom.SHA1Key, "null"); - item.Write(Data.Models.Metadata.Rom.SHA256Key, "null"); - item.Write(Data.Models.Metadata.Rom.SHA384Key, "null"); - item.Write(Data.Models.Metadata.Rom.SHA512Key, "null"); - item.Write(Data.Models.Metadata.Rom.SpamSumKey, "null"); + DatItem item = new Rom + { + CRC16 = "null", + CRC = "null", + CRC64 = "null", + MD2 = "null", + MD4 = "null", + MD5 = "null", + RIPEMD128 = "null", + RIPEMD160 = "null", + SHA1 = "null", + SHA256 = "null", + SHA384 = "null", + SHA512 = "null", + SpamSum = "null" + }; DatItem actual = DatFile.ProcessNullifiedItem(item); Rom? rom = actual as Rom; Assert.NotNull(rom); Assert.Equal(0, rom.Size); - Assert.Equal(HashType.CRC16.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.CRC16Key)); - Assert.Equal(HashType.CRC32.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.CRCKey)); - Assert.Equal(HashType.CRC64.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.CRC64Key)); - Assert.Equal(HashType.MD2.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.MD2Key)); - Assert.Equal(HashType.MD4.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.MD4Key)); - Assert.Equal(HashType.MD5.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.MD5Key)); - Assert.Equal(HashType.RIPEMD128.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.RIPEMD128Key)); - Assert.Equal(HashType.RIPEMD160.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.RIPEMD160Key)); - Assert.Equal(HashType.SHA1.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.SHA1Key)); - Assert.Equal(HashType.SHA256.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.SHA256Key)); - Assert.Equal(HashType.SHA384.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.SHA384Key)); - Assert.Equal(HashType.SHA512.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.SHA512Key)); - Assert.Equal(HashType.SpamSum.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.SpamSumKey)); + Assert.Equal(HashType.CRC16.ZeroString, rom.CRC16); + Assert.Equal(HashType.CRC32.ZeroString, rom.CRC); + Assert.Equal(HashType.CRC64.ZeroString, rom.CRC64); + Assert.Equal(HashType.MD2.ZeroString, rom.MD2); + Assert.Equal(HashType.MD4.ZeroString, rom.MD4); + Assert.Equal(HashType.MD5.ZeroString, rom.MD5); + Assert.Equal(HashType.RIPEMD128.ZeroString, rom.RIPEMD128); + Assert.Equal(HashType.RIPEMD160.ZeroString, rom.RIPEMD160); + Assert.Equal(HashType.SHA1.ZeroString, rom.SHA1); + Assert.Equal(HashType.SHA256.ZeroString, rom.SHA256); + Assert.Equal(HashType.SHA384.ZeroString, rom.SHA384); + Assert.Equal(HashType.SHA512.ZeroString, rom.SHA512); + Assert.Equal(HashType.SpamSum.ZeroString, rom.SpamSum); } #endregion @@ -1797,8 +1783,10 @@ namespace SabreTools.Metadata.DatFiles.Test public void GetDuplicateSuffix_Rom_CRC16() { string hash = "XXXXXX"; - DatItem datItem = new Rom(); - datItem.Write(Data.Models.Metadata.Rom.CRC16Key, hash); + DatItem datItem = new Rom + { + CRC16 = hash + }; string actual = DatFile.GetDuplicateSuffix(datItem); Assert.Equal($"_{hash}", actual); @@ -1808,8 +1796,10 @@ namespace SabreTools.Metadata.DatFiles.Test public void GetDuplicateSuffix_Rom_CRC() { string hash = "XXXXXX"; - DatItem datItem = new Rom(); - datItem.Write(Data.Models.Metadata.Rom.CRCKey, hash); + DatItem datItem = new Rom + { + CRC = hash + }; string actual = DatFile.GetDuplicateSuffix(datItem); Assert.Equal($"_{hash}", actual); @@ -1819,8 +1809,10 @@ namespace SabreTools.Metadata.DatFiles.Test public void GetDuplicateSuffix_Rom_CRC64() { string hash = "XXXXXX"; - DatItem datItem = new Rom(); - datItem.Write(Data.Models.Metadata.Rom.CRC64Key, hash); + DatItem datItem = new Rom + { + CRC64 = hash + }; string actual = DatFile.GetDuplicateSuffix(datItem); Assert.Equal($"_{hash}", actual); @@ -1830,8 +1822,10 @@ namespace SabreTools.Metadata.DatFiles.Test public void GetDuplicateSuffix_Rom_MD2() { string hash = "XXXXXX"; - DatItem datItem = new Rom(); - datItem.Write(Data.Models.Metadata.Rom.MD2Key, hash); + DatItem datItem = new Rom + { + MD2 = hash + }; string actual = DatFile.GetDuplicateSuffix(datItem); Assert.Equal($"_{hash}", actual); @@ -1841,8 +1835,10 @@ namespace SabreTools.Metadata.DatFiles.Test public void GetDuplicateSuffix_Rom_MD4() { string hash = "XXXXXX"; - DatItem datItem = new Rom(); - datItem.Write(Data.Models.Metadata.Rom.MD4Key, hash); + DatItem datItem = new Rom + { + MD4 = hash + }; string actual = DatFile.GetDuplicateSuffix(datItem); Assert.Equal($"_{hash}", actual); @@ -1852,8 +1848,10 @@ namespace SabreTools.Metadata.DatFiles.Test public void GetDuplicateSuffix_Rom_MD5() { string hash = "XXXXXX"; - DatItem datItem = new Rom(); - datItem.Write(Data.Models.Metadata.Rom.MD5Key, hash); + DatItem datItem = new Rom + { + MD5 = hash + }; string actual = DatFile.GetDuplicateSuffix(datItem); Assert.Equal($"_{hash}", actual); @@ -1863,8 +1861,10 @@ namespace SabreTools.Metadata.DatFiles.Test public void GetDuplicateSuffix_Rom_RIPEMD128() { string hash = "XXXXXX"; - DatItem datItem = new Rom(); - datItem.Write(Data.Models.Metadata.Rom.RIPEMD128Key, hash); + DatItem datItem = new Rom + { + RIPEMD128 = hash + }; string actual = DatFile.GetDuplicateSuffix(datItem); Assert.Equal($"_{hash}", actual); @@ -1874,8 +1874,10 @@ namespace SabreTools.Metadata.DatFiles.Test public void GetDuplicateSuffix_Rom_RIPEMD160() { string hash = "XXXXXX"; - DatItem datItem = new Rom(); - datItem.Write(Data.Models.Metadata.Rom.RIPEMD160Key, hash); + DatItem datItem = new Rom + { + RIPEMD160 = hash + }; string actual = DatFile.GetDuplicateSuffix(datItem); Assert.Equal($"_{hash}", actual); @@ -1885,8 +1887,10 @@ namespace SabreTools.Metadata.DatFiles.Test public void GetDuplicateSuffix_Rom_SHA1() { string hash = "XXXXXX"; - DatItem datItem = new Rom(); - datItem.Write(Data.Models.Metadata.Rom.SHA1Key, hash); + DatItem datItem = new Rom + { + SHA1 = hash + }; string actual = DatFile.GetDuplicateSuffix(datItem); Assert.Equal($"_{hash}", actual); @@ -1896,8 +1900,10 @@ namespace SabreTools.Metadata.DatFiles.Test public void GetDuplicateSuffix_Rom_SHA256() { string hash = "XXXXXX"; - DatItem datItem = new Rom(); - datItem.Write(Data.Models.Metadata.Rom.SHA256Key, hash); + DatItem datItem = new Rom + { + SHA256 = hash + }; string actual = DatFile.GetDuplicateSuffix(datItem); Assert.Equal($"_{hash}", actual); @@ -1907,8 +1913,10 @@ namespace SabreTools.Metadata.DatFiles.Test public void GetDuplicateSuffix_Rom_SHA384() { string hash = "XXXXXX"; - DatItem datItem = new Rom(); - datItem.Write(Data.Models.Metadata.Rom.SHA384Key, hash); + DatItem datItem = new Rom + { + SHA384 = hash + }; string actual = DatFile.GetDuplicateSuffix(datItem); Assert.Equal($"_{hash}", actual); @@ -1918,8 +1926,10 @@ namespace SabreTools.Metadata.DatFiles.Test public void GetDuplicateSuffix_Rom_SHA512() { string hash = "XXXXXX"; - DatItem datItem = new Rom(); - datItem.Write(Data.Models.Metadata.Rom.SHA512Key, hash); + DatItem datItem = new Rom + { + SHA512 = hash + }; string actual = DatFile.GetDuplicateSuffix(datItem); Assert.Equal($"_{hash}", actual); @@ -1929,8 +1939,10 @@ namespace SabreTools.Metadata.DatFiles.Test public void GetDuplicateSuffix_Rom_SpamSum() { string hash = "XXXXXX"; - DatItem datItem = new Rom(); - datItem.Write(Data.Models.Metadata.Rom.SpamSumKey, hash); + DatItem datItem = new Rom + { + SpamSum = hash + }; string actual = DatFile.GetDuplicateSuffix(datItem); Assert.Equal($"_{hash}", actual); @@ -1969,11 +1981,11 @@ namespace SabreTools.Metadata.DatFiles.Test Rom romA = new Rom { Name = "name", - Size = 12345 + Size = 12345, + CRC = "crc", + Machine = (Machine)machine.Clone(), + Source = (Source)source.Clone() }; - romA.Write(Data.Models.Metadata.Rom.CRCKey, "crc"); - romA.Machine = (Machine)machine.Clone(); - romA.Source = (Source)source.Clone(); List datItems = [romA]; @@ -1985,7 +1997,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actualRomA); Assert.Equal("name", actualRomA.Name); Assert.Equal(12345, actualRomA.Size); - Assert.Equal("crc", actualRomA.ReadString(Data.Models.Metadata.Rom.CRCKey)); + Assert.Equal("crc", actualRomA.CRC); } [Fact] @@ -1998,20 +2010,20 @@ namespace SabreTools.Metadata.DatFiles.Test Rom romA = new Rom { Name = "romA", - Size = 12345 + Size = 12345, + CRC = "crc", + Machine = (Machine)machine.Clone(), + Source = (Source)source.Clone() }; - romA.Write(Data.Models.Metadata.Rom.CRCKey, "crc"); - romA.Machine = (Machine)machine.Clone(); - romA.Source = (Source)source.Clone(); Rom romB = new Rom { Name = "romB", - Size = 23456 + Size = 23456, + CRC = "crc2", + Machine = (Machine)machine.Clone(), + Source = (Source)source.Clone() }; - romB.Write(Data.Models.Metadata.Rom.CRCKey, "crc2"); - romB.Machine = (Machine)machine.Clone(); - romB.Source = (Source)source.Clone(); List datItems = [romA, romB]; @@ -2024,13 +2036,13 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actualRomA); Assert.Equal("romA", actualRomA.Name); Assert.Equal(12345, actualRomA.Size); - Assert.Equal("crc", actualRomA.ReadString(Data.Models.Metadata.Rom.CRCKey)); + Assert.Equal("crc", actualRomA.CRC); Rom? actualRomB = actual[1] as Rom; Assert.NotNull(actualRomB); Assert.Equal("romB", actualRomB.Name); Assert.Equal(23456, actualRomB.Size); - Assert.Equal("crc2", actualRomB.ReadString(Data.Models.Metadata.Rom.CRCKey)); + Assert.Equal("crc2", actualRomB.CRC); } [Fact] @@ -2043,20 +2055,20 @@ namespace SabreTools.Metadata.DatFiles.Test Rom romA = new Rom { Name = "rom", - Size = 12345 + Size = 12345, + CRC = "crc", + Machine = (Machine)machine.Clone(), + Source = (Source)source.Clone() }; - romA.Write(Data.Models.Metadata.Rom.CRCKey, "crc"); - romA.Machine = (Machine)machine.Clone(); - romA.Source = (Source)source.Clone(); Rom romB = new Rom { Name = "rom", - Size = 12345 + Size = 12345, + CRC = "crc", + Machine = (Machine)machine.Clone(), + Source = (Source)source.Clone() }; - romB.Write(Data.Models.Metadata.Rom.CRCKey, "crc"); - romB.Machine = (Machine)machine.Clone(); - romB.Source = (Source)source.Clone(); List datItems = [romA, romB]; @@ -2068,7 +2080,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actualRomA); Assert.Equal("rom", actualRomA.Name); Assert.Equal(12345, actualRomA.Size); - Assert.Equal("crc", actualRomA.ReadString(Data.Models.Metadata.Rom.CRCKey)); + Assert.Equal("crc", actualRomA.CRC); } [Fact] @@ -2081,20 +2093,20 @@ namespace SabreTools.Metadata.DatFiles.Test Rom romA = new Rom { Name = "rom", - Size = 12345 + Size = 12345, + CRC = "crc", + Machine = (Machine)machine.Clone(), + Source = (Source)source.Clone() }; - romA.Write(Data.Models.Metadata.Rom.CRCKey, "crc"); - romA.Machine = (Machine)machine.Clone(); - romA.Source = (Source)source.Clone(); Rom romB = new Rom { Name = "rom", - Size = 23456 + Size = 23456, + CRC = "crc2", + Machine = (Machine)machine.Clone(), + Source = (Source)source.Clone() }; - romB.Write(Data.Models.Metadata.Rom.CRCKey, "crc2"); - romB.Machine = (Machine)machine.Clone(); - romB.Source = (Source)source.Clone(); List datItems = [romA, romB]; @@ -2107,13 +2119,13 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actualRomA); Assert.Equal("rom", actualRomA.Name); Assert.Equal(12345, actualRomA.Size); - Assert.Equal("crc", actualRomA.ReadString(Data.Models.Metadata.Rom.CRCKey)); + Assert.Equal("crc", actualRomA.CRC); Rom? actualRomB = actual[1] as Rom; Assert.NotNull(actualRomB); Assert.Equal("rom_crc2", actualRomB.Name); Assert.Equal(23456, actualRomB.Size); - Assert.Equal("crc2", actualRomB.ReadString(Data.Models.Metadata.Rom.CRCKey)); + Assert.Equal("crc2", actualRomB.CRC); } #endregion @@ -2141,11 +2153,11 @@ namespace SabreTools.Metadata.DatFiles.Test Rom romA = new Rom { Name = "name", - Size = 12345 + Size = 12345, + CRC = "crc", + Machine = (Machine)machine.Clone(), + Source = (Source)source.Clone() }; - romA.Write(Data.Models.Metadata.Rom.CRCKey, "crc"); - romA.Machine = (Machine)machine.Clone(); - romA.Source = (Source)source.Clone(); List> mappings = [ @@ -2159,7 +2171,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actualRomA); Assert.Equal("name", actualRomA.Name); Assert.Equal(12345, actualRomA.Size); - Assert.Equal("crc", actualRomA.ReadString(Data.Models.Metadata.Rom.CRCKey)); + Assert.Equal("crc", actualRomA.CRC); } [Fact] @@ -2172,20 +2184,20 @@ namespace SabreTools.Metadata.DatFiles.Test Rom romA = new Rom { Name = "romA", - Size = 12345 + Size = 12345, + CRC = "crc", + Machine = (Machine)machine.Clone(), + Source = (Source)source.Clone() }; - romA.Write(Data.Models.Metadata.Rom.CRCKey, "crc"); - romA.Machine = (Machine)machine.Clone(); - romA.Source = (Source)source.Clone(); Rom romB = new Rom { Name = "romB", - Size = 23456 + Size = 23456, + CRC = "crc2", + Machine = (Machine)machine.Clone(), + Source = (Source)source.Clone() }; - romB.Write(Data.Models.Metadata.Rom.CRCKey, "crc2"); - romB.Machine = (Machine)machine.Clone(); - romB.Source = (Source)source.Clone(); List> mappings = [ @@ -2201,13 +2213,13 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actualRomA); Assert.Equal("romA", actualRomA.Name); Assert.Equal(12345, actualRomA.Size); - Assert.Equal("crc", actualRomA.ReadString(Data.Models.Metadata.Rom.CRCKey)); + Assert.Equal("crc", actualRomA.CRC); Rom? actualRomB = actual[1].Value as Rom; Assert.NotNull(actualRomB); Assert.Equal("romB", actualRomB.Name); Assert.Equal(23456, actualRomB.Size); - Assert.Equal("crc2", actualRomB.ReadString(Data.Models.Metadata.Rom.CRCKey)); + Assert.Equal("crc2", actualRomB.CRC); } [Fact] @@ -2224,17 +2236,17 @@ namespace SabreTools.Metadata.DatFiles.Test Rom romA = new Rom { Name = "rom", - Size = 12345 + Size = 12345, + CRC = "crc" }; - romA.Write(Data.Models.Metadata.Rom.CRCKey, "crc"); long romAIndex = datFile.AddItemDB(romA, machineIndex, sourceIndex, statsOnly: false); Rom romB = new Rom { Name = "rom", - Size = 12345 + Size = 12345, + CRC = "crc" }; - romB.Write(Data.Models.Metadata.Rom.CRCKey, "crc"); long romBIndex = datFile.AddItemDB(romB, machineIndex, sourceIndex, statsOnly: false); List> mappings = @@ -2249,7 +2261,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actualRomA); Assert.Equal("rom", actualRomA.Name); Assert.Equal(12345, actualRomA.Size); - Assert.Equal("crc", actualRomA.ReadString(Data.Models.Metadata.Rom.CRCKey)); + Assert.Equal("crc", actualRomA.CRC); } [Fact] @@ -2262,20 +2274,20 @@ namespace SabreTools.Metadata.DatFiles.Test Rom romA = new Rom { Name = "rom", - Size = 12345 + Size = 12345, + CRC = "crc", + Machine = (Machine)machine.Clone(), + Source = (Source)source.Clone() }; - romA.Write(Data.Models.Metadata.Rom.CRCKey, "crc"); - romA.Machine = (Machine)machine.Clone(); - romA.Source = (Source)source.Clone(); Rom romB = new Rom { Name = "rom", - Size = 23456 + Size = 23456, + CRC = "crc2", + Machine = (Machine)machine.Clone(), + Source = (Source)source.Clone() }; - romB.Write(Data.Models.Metadata.Rom.CRCKey, "crc2"); - romB.Machine = (Machine)machine.Clone(); - romB.Source = (Source)source.Clone(); List> mappings = [ @@ -2291,13 +2303,13 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actualRomA); Assert.Equal("rom", actualRomA.Name); Assert.Equal(12345, actualRomA.Size); - Assert.Equal("crc", actualRomA.ReadString(Data.Models.Metadata.Rom.CRCKey)); + Assert.Equal("crc", actualRomA.CRC); Rom? actualRomB = actual[1].Value as Rom; Assert.NotNull(actualRomB); Assert.Equal("rom_crc2", actualRomB.Name); Assert.Equal(23456, actualRomB.Size); - Assert.Equal("crc2", actualRomB.ReadString(Data.Models.Metadata.Rom.CRCKey)); + Assert.Equal("crc2", actualRomB.CRC); } #endregion @@ -2351,8 +2363,8 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "name", Size = 12345, + CRC = "crc" }; - datItem.Write(Data.Models.Metadata.Rom.CRCKey, "crc"); DatFile datFile = new Logiqx(null, useGame: false); bool actual = datFile.ShouldIgnore(datItem, ignoreBlanks: false); @@ -2390,18 +2402,18 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "name", Size = 12345, + CRC = "crc", + MD2 = "crc", + MD4 = "crc", + MD5 = "crc", + RIPEMD128 = "crc", + RIPEMD160 = "crc", + SHA1 = "crc", + SHA256 = "crc", + SHA384 = "crc", + SHA512 = "crc", + SpamSum = "crc" }; - datItem.Write(Data.Models.Metadata.Rom.CRCKey, "crc"); - datItem.Write(Data.Models.Metadata.Rom.MD2Key, "crc"); - datItem.Write(Data.Models.Metadata.Rom.MD4Key, "crc"); - datItem.Write(Data.Models.Metadata.Rom.MD5Key, "crc"); - datItem.Write(Data.Models.Metadata.Rom.RIPEMD128Key, "crc"); - datItem.Write(Data.Models.Metadata.Rom.RIPEMD160Key, "crc"); - datItem.Write(Data.Models.Metadata.Rom.SHA1Key, "crc"); - datItem.Write(Data.Models.Metadata.Rom.SHA256Key, "crc"); - datItem.Write(Data.Models.Metadata.Rom.SHA384Key, "crc"); - datItem.Write(Data.Models.Metadata.Rom.SHA512Key, "crc"); - datItem.Write(Data.Models.Metadata.Rom.SpamSumKey, "crc"); DatFile datFile = new Logiqx(null, useGame: false); bool actual = datFile.ShouldIgnore(datItem, ignoreBlanks: true); diff --git a/SabreTools.Metadata.DatFiles.Test/DatStatisticsTests.cs b/SabreTools.Metadata.DatFiles.Test/DatStatisticsTests.cs index a03ed1cf..b5b16cb7 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatStatisticsTests.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatStatisticsTests.cs @@ -304,19 +304,19 @@ namespace SabreTools.Metadata.DatFiles.Test Status = ItemStatus.Good, Size = 1 }; - rom.Write(Data.Models.Metadata.Rom.CRC16Key, HashType.CRC16.ZeroString); - rom.Write(Data.Models.Metadata.Rom.CRCKey, HashType.CRC32.ZeroString); - rom.Write(Data.Models.Metadata.Rom.CRC64Key, HashType.CRC64.ZeroString); - rom.Write(Data.Models.Metadata.Rom.MD2Key, HashType.MD2.ZeroString); - rom.Write(Data.Models.Metadata.Rom.MD4Key, HashType.MD4.ZeroString); - rom.Write(Data.Models.Metadata.Rom.MD5Key, HashType.MD5.ZeroString); - rom.Write(Data.Models.Metadata.Rom.RIPEMD128Key, HashType.RIPEMD128.ZeroString); - rom.Write(Data.Models.Metadata.Rom.RIPEMD160Key, HashType.RIPEMD160.ZeroString); - rom.Write(Data.Models.Metadata.Rom.SHA1Key, HashType.SHA1.ZeroString); - rom.Write(Data.Models.Metadata.Rom.SHA256Key, HashType.SHA256.ZeroString); - rom.Write(Data.Models.Metadata.Rom.SHA384Key, HashType.SHA384.ZeroString); - rom.Write(Data.Models.Metadata.Rom.SHA512Key, HashType.SHA512.ZeroString); - rom.Write(Data.Models.Metadata.Rom.SpamSumKey, HashType.SpamSum.ZeroString); + rom.CRC16 = HashType.CRC16.ZeroString; + rom.CRC = HashType.CRC32.ZeroString; + rom.CRC64 = HashType.CRC64.ZeroString; + rom.MD2 = HashType.MD2.ZeroString; + rom.MD4 = HashType.MD4.ZeroString; + rom.MD5 = HashType.MD5.ZeroString; + rom.RIPEMD128 = HashType.RIPEMD128.ZeroString; + rom.RIPEMD160 = HashType.RIPEMD160.ZeroString; + rom.SHA1 = HashType.SHA1.ZeroString; + rom.SHA256 = HashType.SHA256.ZeroString; + rom.SHA384 = HashType.SHA384.ZeroString; + rom.SHA512 = HashType.SHA512.ZeroString; + rom.SpamSum = HashType.SpamSum.ZeroString; return rom; } diff --git a/SabreTools.Metadata.DatFiles.Test/FormatsTests.cs b/SabreTools.Metadata.DatFiles.Test/FormatsTests.cs index f2f9174c..775abe28 100644 --- a/SabreTools.Metadata.DatFiles.Test/FormatsTests.cs +++ b/SabreTools.Metadata.DatFiles.Test/FormatsTests.cs @@ -128,7 +128,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.True(actual.SequenceEqual([ nameof(Data.Models.Metadata.Rom.Name), nameof(Data.Models.Metadata.Rom.Size), - Data.Models.Metadata.Rom.SHA1Key, + nameof(Data.Models.Metadata.Rom.SHA1), ])); } @@ -289,7 +289,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.True(actual.SequenceEqual([ nameof(Data.Models.Metadata.Rom.Name), nameof(Data.Models.Metadata.Rom.Size), - Data.Models.Metadata.Rom.CRCKey, + nameof(Data.Models.Metadata.Rom.CRC), ])); } @@ -318,10 +318,10 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ nameof(Data.Models.Metadata.Rom.Name), - Data.Models.Metadata.Rom.SHA256Key, - Data.Models.Metadata.Rom.SHA1Key, - Data.Models.Metadata.Rom.MD5Key, - Data.Models.Metadata.Rom.CRCKey, + nameof(Data.Models.Metadata.Rom.SHA256), + nameof(Data.Models.Metadata.Rom.SHA1), + nameof(Data.Models.Metadata.Rom.MD5), + nameof(Data.Models.Metadata.Rom.CRC), ])); } @@ -350,7 +350,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ nameof(Data.Models.Metadata.Rom.Name), - Data.Models.Metadata.Rom.CRCKey, + nameof(Data.Models.Metadata.Rom.CRC), ])); } @@ -375,7 +375,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ nameof(Data.Models.Metadata.Rom.Name), - Data.Models.Metadata.Rom.MD2Key, + nameof(Data.Models.Metadata.Rom.MD2), ])); } @@ -400,7 +400,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ nameof(Data.Models.Metadata.Rom.Name), - Data.Models.Metadata.Rom.MD4Key, + nameof(Data.Models.Metadata.Rom.MD4), ])); } @@ -457,7 +457,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ nameof(Data.Models.Metadata.Rom.Name), - Data.Models.Metadata.Rom.MD5Key, + nameof(Data.Models.Metadata.Rom.MD5), ])); } @@ -482,7 +482,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ nameof(Data.Models.Metadata.Rom.Name), - Data.Models.Metadata.Rom.RIPEMD128Key, + nameof(Data.Models.Metadata.Rom.RIPEMD128), ])); } @@ -507,7 +507,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ nameof(Data.Models.Metadata.Rom.Name), - Data.Models.Metadata.Rom.RIPEMD160Key, + nameof(Data.Models.Metadata.Rom.RIPEMD160), ])); } @@ -564,7 +564,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ nameof(Data.Models.Metadata.Rom.Name), - Data.Models.Metadata.Rom.SHA1Key, + nameof(Data.Models.Metadata.Rom.SHA1), ])); } @@ -605,7 +605,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ nameof(Data.Models.Metadata.Rom.Name), - Data.Models.Metadata.Rom.SHA256Key, + nameof(Data.Models.Metadata.Rom.SHA256), ])); } @@ -630,7 +630,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ nameof(Data.Models.Metadata.Rom.Name), - Data.Models.Metadata.Rom.SHA384Key, + nameof(Data.Models.Metadata.Rom.SHA384), ])); } @@ -655,7 +655,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ nameof(Data.Models.Metadata.Rom.Name), - Data.Models.Metadata.Rom.SHA512Key, + nameof(Data.Models.Metadata.Rom.SHA512), ])); } @@ -696,7 +696,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ nameof(Data.Models.Metadata.Rom.Name), - Data.Models.Metadata.Rom.SpamSumKey, + nameof(Data.Models.Metadata.Rom.SpamSum), ])); } @@ -742,8 +742,8 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.True(actual.SequenceEqual([ nameof(Data.Models.Metadata.Rom.Name), nameof(Data.Models.Metadata.Rom.Size), - Data.Models.Metadata.Rom.CRCKey, - Data.Models.Metadata.Rom.SHA1Key, + nameof(Data.Models.Metadata.Rom.CRC), + nameof(Data.Models.Metadata.Rom.SHA1), ])); } @@ -807,7 +807,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.True(actual.SequenceEqual([ nameof(Data.Models.Metadata.Rom.Name), nameof(Data.Models.Metadata.Rom.Size), - Data.Models.Metadata.Rom.SHA1Key, + nameof(Data.Models.Metadata.Rom.SHA1), ])); } @@ -1124,7 +1124,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.True(actual.SequenceEqual([ nameof(Data.Models.Metadata.Rom.Name), nameof(Data.Models.Metadata.Rom.Size), - Data.Models.Metadata.Rom.SHA1Key, + nameof(Data.Models.Metadata.Rom.SHA1), ])); } @@ -1277,7 +1277,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ nameof(Data.Models.Metadata.Rom.Size), - Data.Models.Metadata.Rom.CRCKey, + nameof(Data.Models.Metadata.Rom.CRC), ])); } @@ -1306,7 +1306,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ nameof(Data.Models.Metadata.Rom.Name), - Data.Models.Metadata.Rom.SHA1Key, + nameof(Data.Models.Metadata.Rom.SHA1), ])); } @@ -1335,7 +1335,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ nameof(Data.Models.Metadata.Rom.Name), - Data.Models.Metadata.Rom.CRCKey, + nameof(Data.Models.Metadata.Rom.CRC), nameof(Data.Models.Metadata.Rom.Size), ])); } @@ -1422,7 +1422,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.True(actual.SequenceEqual([ nameof(Data.Models.Metadata.Rom.Name), nameof(Data.Models.Metadata.Rom.Size), - Data.Models.Metadata.Rom.SHA1Key, + nameof(Data.Models.Metadata.Rom.SHA1), ])); } @@ -1480,7 +1480,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.True(actual.SequenceEqual([ nameof(Data.Models.Metadata.Rom.Name), nameof(Data.Models.Metadata.Rom.Size), - Data.Models.Metadata.Rom.SHA1Key, + nameof(Data.Models.Metadata.Rom.SHA1), ])); } @@ -1538,7 +1538,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.True(actual.SequenceEqual([ nameof(Data.Models.Metadata.Rom.Name), nameof(Data.Models.Metadata.Rom.Size), - Data.Models.Metadata.Rom.SHA1Key, + nameof(Data.Models.Metadata.Rom.SHA1), ])); } diff --git a/SabreTools.Metadata.DatFiles.Test/ItemDictionaryDBTests.cs b/SabreTools.Metadata.DatFiles.Test/ItemDictionaryDBTests.cs index bcef1da0..86f5968f 100644 --- a/SabreTools.Metadata.DatFiles.Test/ItemDictionaryDBTests.cs +++ b/SabreTools.Metadata.DatFiles.Test/ItemDictionaryDBTests.cs @@ -137,12 +137,12 @@ namespace SabreTools.Metadata.DatFiles.Test Source source = new Source(0, source: null); Machine machine = new Machine(); - DatItem rom = new Rom() + DatItem rom = new Rom { Name = "item", Size = 12345, + SHA1 = "deadbeef" }; - rom.Write(Data.Models.Metadata.Rom.SHA1Key, "deadbeef"); var dict = new ItemDictionaryDB(); long sourceIndex = dict.AddSource(source); @@ -153,7 +153,7 @@ namespace SabreTools.Metadata.DatFiles.Test Rom? actualRom = actual as Rom; Assert.NotNull(actualRom); Assert.Equal(12345, actualRom.Size); - Assert.Equal("deadbeef", actual.ReadString(Data.Models.Metadata.Rom.SHA1Key)); + Assert.Equal("deadbeef", actualRom.SHA1); Assert.Equal(Data.Models.Metadata.ItemStatus.None, actualRom.Status); } @@ -178,7 +178,7 @@ namespace SabreTools.Metadata.DatFiles.Test Rom? actualRom = actual as Rom; Assert.NotNull(actualRom); Assert.Equal(12345, actualRom.Size); - Assert.Null(actual.ReadString(Data.Models.Metadata.Rom.SHA1Key)); + Assert.Null(actualRom.SHA1); Assert.Equal(Data.Models.Metadata.ItemStatus.Nodump, actualRom.Status); } @@ -188,8 +188,11 @@ namespace SabreTools.Metadata.DatFiles.Test Source source = new Source(0, source: null); Machine machine = new Machine(); - DatItem rom = new Rom { Name = "item" }; - rom.Write(Data.Models.Metadata.Rom.SHA1Key, "deadbeef"); + DatItem rom = new Rom + { + Name = "item", + SHA1 = "deadbeef" + }; var dict = new ItemDictionaryDB(); long sourceIndex = dict.AddSource(source); @@ -200,7 +203,7 @@ namespace SabreTools.Metadata.DatFiles.Test Rom? actualRom = actual as Rom; Assert.NotNull(actualRom); Assert.Null(actualRom.Size); - Assert.Equal("deadbeef", actual.ReadString(Data.Models.Metadata.Rom.SHA1Key)); + Assert.Equal("deadbeef", actualRom.SHA1); Assert.Equal(Data.Models.Metadata.ItemStatus.None, actualRom.Status); } @@ -221,7 +224,7 @@ namespace SabreTools.Metadata.DatFiles.Test Rom? actualRom = actual as Rom; Assert.NotNull(actualRom); Assert.Equal(0, actualRom.Size); - Assert.Equal(HashType.SHA1.ZeroString, actual.ReadString(Data.Models.Metadata.Rom.SHA1Key)); + Assert.Equal(HashType.SHA1.ZeroString, actualRom.SHA1); Assert.Equal(Data.Models.Metadata.ItemStatus.None, actualRom.Status); } @@ -299,22 +302,22 @@ namespace SabreTools.Metadata.DatFiles.Test Machine machine = new Machine { Name = "game-1" }; - DatItem rom1 = new Rom() + DatItem rom1 = new Rom { Name = "rom-1", Size = 1024, + CRC = "DEADBEEF", + SHA1 = "0000000fbbb37f8488100b1b4697012de631a5e6" }; - rom1.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); - rom1.Write(Data.Models.Metadata.Rom.SHA1Key, "0000000fbbb37f8488100b1b4697012de631a5e6"); - DatItem rom2 = new Rom() + DatItem rom2 = new Rom { Name = "rom-2", Size = 1024, + CRC = "DEADBEEF", + RemoveFlag = true, + SHA1 = "000000e948edcb4f7704b8af85a77a3339ecce44" }; - rom2.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); - rom2.RemoveFlag = true; - rom2.Write(Data.Models.Metadata.Rom.SHA1Key, "000000e948edcb4f7704b8af85a77a3339ecce44"); // Setup the dictionary var dict = new ItemDictionaryDB(); @@ -543,13 +546,13 @@ namespace SabreTools.Metadata.DatFiles.Test Machine machine = new Machine { Name = "game-1" }; - DatItem datItem = new Rom() + DatItem datItem = new Rom { Name = "rom-1", Size = 1024, + CRC = "DEADBEEF", + SHA1 = "0000000fbbb37f8488100b1b4697012de631a5e6" }; - datItem.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); - datItem.Write(Data.Models.Metadata.Rom.SHA1Key, "0000000fbbb37f8488100b1b4697012de631a5e6"); var dict = new ItemDictionaryDB(); long sourceIndex = dict.AddSource(source); @@ -572,13 +575,13 @@ namespace SabreTools.Metadata.DatFiles.Test Machine machine = new Machine { Name = "game-1" }; - DatItem datItem = new Rom() + DatItem datItem = new Rom { Name = "rom-1", Size = 1024, + CRC = "DEADBEEF", + SHA1 = "0000000fbbb37f8488100b1b4697012de631a5e6" }; - datItem.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); - datItem.Write(Data.Models.Metadata.Rom.SHA1Key, "0000000fbbb37f8488100b1b4697012de631a5e6"); var dict = new ItemDictionaryDB(); long sourceIndex = dict.AddSource(source); @@ -628,33 +631,33 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "rom-1", Size = 1024, + CRC = "DEADBEEF", + SHA1 = "0000000fbbb37f8488100b1b4697012de631a5e6" }; - rom1.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); - rom1.Write(Data.Models.Metadata.Rom.SHA1Key, "0000000fbbb37f8488100b1b4697012de631a5e6"); DatItem rom2 = new Rom { Name = "rom-2", Size = 1024, + CRC = "DEADBEEF", + SHA1 = "000000e948edcb4f7704b8af85a77a3339ecce44" }; - rom2.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); - rom2.Write(Data.Models.Metadata.Rom.SHA1Key, "000000e948edcb4f7704b8af85a77a3339ecce44"); DatItem rom3 = new Rom { Name = "rom-3", Size = 1024, + CRC = "DEADBEEF", + SHA1 = "00000ea4014ce66679e7e17d56ac510f67e39e26" }; - rom3.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); - rom3.Write(Data.Models.Metadata.Rom.SHA1Key, "00000ea4014ce66679e7e17d56ac510f67e39e26"); DatItem rom4 = new Rom { Name = "rom-4", Size = 1024, + CRC = "DEADBEEF", + SHA1 = "00000151d437442e74e5134023fab8bf694a2487" }; - rom4.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); - rom4.Write(Data.Models.Metadata.Rom.SHA1Key, "00000151d437442e74e5134023fab8bf694a2487"); // Setup the dictionary var dict = new ItemDictionaryDB(); @@ -686,15 +689,15 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "rom-1", Size = 1024, + SHA1 = "0000000fbbb37f8488100b1b4697012de631a5e6" }; - rom1.Write(Data.Models.Metadata.Rom.SHA1Key, "0000000fbbb37f8488100b1b4697012de631a5e6"); DatItem rom2 = new Rom { Name = "rom-2", Size = 1024, + SHA1 = "0000000fbbb37f8488100b1b4697012de631a5e6" }; - rom2.Write(Data.Models.Metadata.Rom.SHA1Key, "0000000fbbb37f8488100b1b4697012de631a5e6"); // Setup the dictionary var dict = new ItemDictionaryDB(); @@ -756,13 +759,19 @@ namespace SabreTools.Metadata.DatFiles.Test Machine? machineB = new Machine { Name = "name-same" }; long machineBIndex = dict.AddMachine(machineB); - var romA = new Rom { Name = "same-name" }; - romA.Write(Data.Models.Metadata.Rom.CRCKey, "BEEFDEAD"); + var romA = new Rom + { + Name = "same-name", + CRC = "BEEFDEAD" + }; long romAIndex = dict.AddItem(romA, machineAIndex, sourceAIndex); KeyValuePair? romAPair = new KeyValuePair(romAIndex, romA); - var romB = new Rom { Name = "same-name" }; - romB.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); + var romB = new Rom + { + Name = "same-name", + CRC = "DEADBEEF" + }; long romBIndex = dict.AddItem(romB, machineBIndex, sourceBIndex); KeyValuePair? romBPair = new KeyValuePair(romBIndex, romB); @@ -786,13 +795,19 @@ namespace SabreTools.Metadata.DatFiles.Test Machine? machineB = new Machine { Name = "name-same" }; long machineBIndex = dict.AddMachine(machineB); - var romA = new Rom { Name = "same-name" }; - romA.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); + var romA = new Rom + { + Name = "same-name", + CRC = "DEADBEEF" + }; long romAIndex = dict.AddItem(romA, machineAIndex, sourceAIndex); KeyValuePair? romAPair = new KeyValuePair(romAIndex, romA); - var romB = new Rom { Name = "same-name" }; - romB.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); + var romB = new Rom + { + Name = "same-name", + CRC = "DEADBEEF" + }; long romBIndex = dict.AddItem(romB, machineBIndex, sourceBIndex); KeyValuePair? romBPair = new KeyValuePair(romBIndex, romB); @@ -816,13 +831,19 @@ namespace SabreTools.Metadata.DatFiles.Test Machine? machineB = new Machine { Name = "not-name-same" }; long machineBIndex = dict.AddMachine(machineB); - var romA = new Rom { Name = "same-name" }; - romA.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); + var romA = new Rom + { + Name = "same-name", + CRC = "DEADBEEF" + }; long romAIndex = dict.AddItem(romA, machineAIndex, sourceAIndex); KeyValuePair? romAPair = new KeyValuePair(romAIndex, romA); - var romB = new Rom { Name = "same-name" }; - romB.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); + var romB = new Rom + { + Name = "same-name", + CRC = "DEADBEEF" + }; long romBIndex = dict.AddItem(romB, machineBIndex, sourceBIndex); KeyValuePair? romBPair = new KeyValuePair(romBIndex, romB); @@ -846,13 +867,19 @@ namespace SabreTools.Metadata.DatFiles.Test Machine? machineB = new Machine { Name = "name-same" }; long machineBIndex = dict.AddMachine(machineB); - var romA = new Rom { Name = "same-name" }; - romA.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); + var romA = new Rom + { + Name = "same-name", + CRC = "DEADBEEF" + }; long romAIndex = dict.AddItem(romA, machineAIndex, sourceAIndex); KeyValuePair? romAPair = new KeyValuePair(romAIndex, romA); - var romB = new Rom { Name = "same-name" }; - romB.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); + var romB = new Rom + { + Name = "same-name", + CRC = "DEADBEEF" + }; long romBIndex = dict.AddItem(romB, machineBIndex, sourceBIndex); KeyValuePair? romBPair = new KeyValuePair(romBIndex, romB); @@ -876,13 +903,19 @@ namespace SabreTools.Metadata.DatFiles.Test Machine? machineB = new Machine { Name = "not-name-same" }; long machineBIndex = dict.AddMachine(machineB); - var romA = new Rom { Name = "same-name" }; - romA.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); + var romA = new Rom + { + Name = "same-name", + CRC = "DEADBEEF" + }; long romAIndex = dict.AddItem(romA, machineAIndex, sourceAIndex); KeyValuePair? romAPair = new KeyValuePair(romAIndex, romA); - var romB = new Rom { Name = "same-name" }; - romB.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); + var romB = new Rom + { + Name = "same-name", + CRC = "DEADBEEF" + }; long romBIndex = dict.AddItem(romB, machineBIndex, sourceBIndex); KeyValuePair? romBPair = new KeyValuePair(romBIndex, romB); @@ -908,15 +941,15 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "rom-1", Size = 1024, + SHA1 = "0000000fbbb37f8488100b1b4697012de631a5e6" }; - rom1.Write(Data.Models.Metadata.Rom.SHA1Key, "0000000fbbb37f8488100b1b4697012de631a5e6"); DatItem rom2 = new Rom { Name = "rom-2", Size = 1024, + SHA1 = "000000e948edcb4f7704b8af85a77a3339ecce44" }; - rom2.Write(Data.Models.Metadata.Rom.SHA1Key, "000000e948edcb4f7704b8af85a77a3339ecce44"); // Setup the dictionary var dict = new ItemDictionaryDB(); @@ -930,8 +963,8 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "rom-1", Size = hasDuplicate ? 1024 : 2048, + SHA1 = "0000000fbbb37f8488100b1b4697012de631a5e6" }; - rom.Write(Data.Models.Metadata.Rom.SHA1Key, "0000000fbbb37f8488100b1b4697012de631a5e6"); var actual = dict.GetDuplicates(new KeyValuePair(-1, rom)); Assert.Equal(expected, actual.Count); @@ -955,15 +988,15 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "rom-1", Size = 1024, + SHA1 = "0000000fbbb37f8488100b1b4697012de631a5e6" }; - rom1.Write(Data.Models.Metadata.Rom.SHA1Key, "0000000fbbb37f8488100b1b4697012de631a5e6"); DatItem rom2 = new Rom { Name = "rom-2", Size = 1024, + SHA1 = "000000e948edcb4f7704b8af85a77a3339ecce44" }; - rom2.Write(Data.Models.Metadata.Rom.SHA1Key, "000000e948edcb4f7704b8af85a77a3339ecce44"); // Setup the dictionary var dict = new ItemDictionaryDB(); @@ -977,8 +1010,8 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "rom-1", Size = expected ? 1024 : 2048, + SHA1 = "0000000fbbb37f8488100b1b4697012de631a5e6" }; - rom.Write(Data.Models.Metadata.Rom.SHA1Key, "0000000fbbb37f8488100b1b4697012de631a5e6"); bool actual = dict.HasDuplicates(new KeyValuePair(-1, rom)); Assert.Equal(expected, actual); @@ -995,12 +1028,12 @@ namespace SabreTools.Metadata.DatFiles.Test Machine machine = new Machine { Name = "machine" }; - DatItem item = new Rom + var item = new Rom { Name = "rom", Size = 12345, + CRC = "deadbeef" }; - item.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); var dict = new ItemDictionaryDB(); long sourceIndex = dict.AddSource(source); @@ -1013,7 +1046,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal(1, dict.DatStatistics.GetHashCount(HashType.CRC32)); Assert.Equal(0, dict.DatStatistics.GetHashCount(HashType.MD5)); - item.Write(Data.Models.Metadata.Rom.MD5Key, "deadbeef"); + item.MD5 = "deadbeef"; dict.RecalculateStats(); diff --git a/SabreTools.Metadata.DatFiles.Test/ItemDictionaryTests.cs b/SabreTools.Metadata.DatFiles.Test/ItemDictionaryTests.cs index 90b8fa45..a7608bb2 100644 --- a/SabreTools.Metadata.DatFiles.Test/ItemDictionaryTests.cs +++ b/SabreTools.Metadata.DatFiles.Test/ItemDictionaryTests.cs @@ -145,14 +145,14 @@ namespace SabreTools.Metadata.DatFiles.Test Source source = new Source(0, source: null); Machine machine = new Machine(); - DatItem rom = new Rom() + DatItem rom = new Rom { Name = "item", Size = 12345, + SHA1 = "deadbeef", + Source = source, + Machine = machine }; - rom.Write(Data.Models.Metadata.Rom.SHA1Key, "deadbeef"); - rom.Source = source; - rom.Machine = machine; var dict = new ItemDictionary(); _ = dict.AddItem(rom, statsOnly: false); @@ -161,7 +161,7 @@ namespace SabreTools.Metadata.DatFiles.Test Rom? actualRom = actual as Rom; Assert.NotNull(actualRom); Assert.Equal(12345, actualRom.Size); - Assert.Equal("deadbeef", actual.ReadString(Data.Models.Metadata.Rom.SHA1Key)); + Assert.Equal("deadbeef", actualRom.SHA1); Assert.Equal(Data.Models.Metadata.ItemStatus.None, actualRom.Status); } @@ -186,7 +186,7 @@ namespace SabreTools.Metadata.DatFiles.Test Rom? actualRom = actual as Rom; Assert.NotNull(actualRom); Assert.Equal(12345, actualRom.Size); - Assert.Null(actual.ReadString(Data.Models.Metadata.Rom.SHA1Key)); + Assert.Null(actualRom.SHA1); Assert.Equal(Data.Models.Metadata.ItemStatus.Nodump, actualRom.Status); } @@ -196,10 +196,13 @@ namespace SabreTools.Metadata.DatFiles.Test Source source = new Source(0, source: null); Machine machine = new Machine(); - DatItem rom = new Rom { Name = "item" }; - rom.Write(Data.Models.Metadata.Rom.SHA1Key, "deadbeef"); - rom.Source = source; - rom.Machine = machine; + DatItem rom = new Rom + { + Name = "item", + SHA1 = "deadbeef", + Source = source, + Machine = machine + }; var dict = new ItemDictionary(); _ = dict.AddItem(rom, statsOnly: false); @@ -208,7 +211,7 @@ namespace SabreTools.Metadata.DatFiles.Test Rom? actualRom = actual as Rom; Assert.NotNull(actualRom); Assert.Null(actualRom.Size); - Assert.Equal("deadbeef", actual.ReadString(Data.Models.Metadata.Rom.SHA1Key)); + Assert.Equal("deadbeef", actualRom.SHA1); Assert.Equal(Data.Models.Metadata.ItemStatus.None, actualRom.Status); } @@ -232,7 +235,7 @@ namespace SabreTools.Metadata.DatFiles.Test Rom? actualRom = actual as Rom; Assert.NotNull(actualRom); Assert.Equal(0, actualRom.Size); - Assert.Equal(HashType.SHA1.ZeroString, actual.ReadString(Data.Models.Metadata.Rom.SHA1Key)); + Assert.Equal(HashType.SHA1.ZeroString, actualRom.SHA1); Assert.Equal(Data.Models.Metadata.ItemStatus.None, actualRom.Status); } @@ -288,19 +291,19 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "rom-1", Size = 1024, + CRC = "DEAEEF", + SHA1 = "0000000fbbb37f8488100b1b4697012de631a5e6" }; - rom1.Write(Data.Models.Metadata.Rom.CRCKey, "DEAEEF"); - rom1.Write(Data.Models.Metadata.Rom.SHA1Key, "0000000fbbb37f8488100b1b4697012de631a5e6"); rom1.CopyMachineInformation(machine); DatItem rom2 = new Rom { Name = "rom-2", Size = 1024, + CRC = "DEAEEF", + RemoveFlag = true, + SHA1 = "000000e948edcb4f7704b8af85a77a3339ecce44" }; - rom2.Write(Data.Models.Metadata.Rom.CRCKey, "DEAEEF"); - rom2.RemoveFlag = true; - rom2.Write(Data.Models.Metadata.Rom.SHA1Key, "000000e948edcb4f7704b8af85a77a3339ecce44"); rom2.CopyMachineInformation(machine); // Setup the dictionary @@ -437,10 +440,10 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem datItem = new Rom { Size = 1024, - Name = "rom-1" + Name = "rom-1", + CRC = "DEAEEF", + SHA1 = "0000000fbbb37f8488100b1b4697012de631a5e6" }; - datItem.Write(Data.Models.Metadata.Rom.CRCKey, "DEAEEF"); - datItem.Write(Data.Models.Metadata.Rom.SHA1Key, "0000000fbbb37f8488100b1b4697012de631a5e6"); datItem.CopyMachineInformation(machine); var dict = new ItemDictionary(); @@ -464,10 +467,10 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem datItem = new Rom { Size = 1024, - Name = "rom-1" + Name = "rom-1", + CRC = "DEAEEF", + SHA1 = "0000000fbbb37f8488100b1b4697012de631a5e6" }; - datItem.Write(Data.Models.Metadata.Rom.CRCKey, "DEAEEF"); - datItem.Write(Data.Models.Metadata.Rom.SHA1Key, "0000000fbbb37f8488100b1b4697012de631a5e6"); datItem.CopyMachineInformation(machine); var dict = new ItemDictionary(); @@ -499,36 +502,36 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "rom-1", Size = 1024, + CRC = "DEAEEF", + SHA1 = "0000000fbbb37f8488100b1b4697012de631a5e6" }; - rom1.Write(Data.Models.Metadata.Rom.CRCKey, "DEAEEF"); - rom1.Write(Data.Models.Metadata.Rom.SHA1Key, "0000000fbbb37f8488100b1b4697012de631a5e6"); rom1.CopyMachineInformation(machine1); DatItem rom2 = new Rom { Name = "rom-2", Size = 1024, + CRC = "DEAEEF", + SHA1 = "000000e948edcb4f7704b8af85a77a3339ecce44" }; - rom2.Write(Data.Models.Metadata.Rom.CRCKey, "DEAEEF"); - rom2.Write(Data.Models.Metadata.Rom.SHA1Key, "000000e948edcb4f7704b8af85a77a3339ecce44"); rom1.CopyMachineInformation(machine1); DatItem rom3 = new Rom { Name = "rom-3", Size = 1024, + CRC = "DEAEEF", + SHA1 = "00000ea4014ce66679e7e17d56ac510f67e39e26" }; - rom3.Write(Data.Models.Metadata.Rom.CRCKey, "DEAEEF"); - rom3.Write(Data.Models.Metadata.Rom.SHA1Key, "00000ea4014ce66679e7e17d56ac510f67e39e26"); rom1.CopyMachineInformation(machine2); DatItem rom4 = new Rom { Name = "rom-4", Size = 1024, + CRC = "DEAEEF", + SHA1 = "00000151d437442e74e5134023fab8bf694a2487" }; - rom4.Write(Data.Models.Metadata.Rom.CRCKey, "DEAEEF"); - rom4.Write(Data.Models.Metadata.Rom.SHA1Key, "00000151d437442e74e5134023fab8bf694a2487"); rom1.CopyMachineInformation(machine2); // Setup the dictionary @@ -556,16 +559,16 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "rom-1", Size = 1024, + SHA1 = "0000000fbbb37f8488100b1b4697012de631a5e6" }; - rom1.Write(Data.Models.Metadata.Rom.SHA1Key, "0000000fbbb37f8488100b1b4697012de631a5e6"); rom1.CopyMachineInformation(machine); DatItem rom2 = new Rom { Name = "rom-2", Size = 1024, + SHA1 = "0000000fbbb37f8488100b1b4697012de631a5e6" }; - rom2.Write(Data.Models.Metadata.Rom.SHA1Key, "0000000fbbb37f8488100b1b4697012de631a5e6"); rom2.CopyMachineInformation(machine); // Setup the dictionary @@ -610,14 +613,20 @@ namespace SabreTools.Metadata.DatFiles.Test Machine? machineB = new Machine { Name = "name-same" }; - var romA = new Rom { Name = "same-name" }; - romA.Write(Data.Models.Metadata.Rom.CRCKey, "BEEFDEAD"); - romA.Source = new Source(0); + var romA = new Rom + { + Name = "same-name", + CRC = "BEEFDEAD", + Source = new Source(0) + }; romA.CopyMachineInformation(machineA); - var romB = new Rom { Name = "same-name" }; - romB.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); - romB.Source = new Source(1); + var romB = new Rom + { + Name = "same-name", + CRC = "DEADBEEF", + Source = new Source(1) + }; romB.CopyMachineInformation(machineB); var actual = dict.GetDuplicateStatus(romA, romB); @@ -633,14 +642,20 @@ namespace SabreTools.Metadata.DatFiles.Test Machine? machineB = new Machine { Name = "name-same" }; - var romA = new Rom { Name = "same-name" }; - romA.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); - romA.Source = new Source(0); + var romA = new Rom + { + Name = "same-name", + CRC = "DEADBEEF", + Source = new Source(0) + }; romA.CopyMachineInformation(machineA); - var romB = new Rom { Name = "same-name" }; - romB.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); - romB.Source = new Source(1); + var romB = new Rom + { + Name = "same-name", + CRC = "DEADBEEF", + Source = new Source(1) + }; romB.CopyMachineInformation(machineB); var actual = dict.GetDuplicateStatus(romA, romB); @@ -656,14 +671,20 @@ namespace SabreTools.Metadata.DatFiles.Test Machine? machineB = new Machine { Name = "not-name-same" }; - var romA = new Rom { Name = "same-name" }; - romA.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); - romA.Source = new Source(0); + var romA = new Rom + { + Name = "same-name", + CRC = "DEADBEEF", + Source = new Source(0) + }; romA.CopyMachineInformation(machineA); - var romB = new Rom { Name = "same-name" }; - romB.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); - romB.Source = new Source(1); + var romB = new Rom + { + Name = "same-name", + CRC = "DEADBEEF", + Source = new Source(1) + }; romB.CopyMachineInformation(machineB); var actual = dict.GetDuplicateStatus(romA, romB); @@ -679,14 +700,20 @@ namespace SabreTools.Metadata.DatFiles.Test Machine? machineB = new Machine { Name = "name-same" }; - var romA = new Rom { Name = "same-name" }; - romA.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); - romA.Source = new Source(0); + var romA = new Rom + { + Name = "same-name", + CRC = "DEADBEEF", + Source = new Source(0) + }; romA.CopyMachineInformation(machineA); - var romB = new Rom { Name = "same-name" }; - romB.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); - romB.Source = new Source(0); + var romB = new Rom + { + Name = "same-name", + CRC = "DEADBEEF", + Source = new Source(0) + }; romB.CopyMachineInformation(machineB); var actual = dict.GetDuplicateStatus(romA, romB); @@ -702,14 +729,20 @@ namespace SabreTools.Metadata.DatFiles.Test Machine? machineB = new Machine { Name = "not-name-same" }; - var romA = new Rom { Name = "same-name" }; - romA.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); - romA.Source = new Source(0); + var romA = new Rom + { + Name = "same-name", + CRC = "DEADBEEF", + Source = new Source(0) + }; romA.CopyMachineInformation(machineA); - var romB = new Rom { Name = "same-name" }; - romB.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); - romB.Source = new Source(0); + var romB = new Rom + { + Name = "same-name", + CRC = "DEADBEEF", + Source = new Source(0) + }; romB.CopyMachineInformation(machineB); var actual = dict.GetDuplicateStatus(romA, romB); @@ -732,16 +765,16 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "rom-1", Size = 1024, + SHA1 = "0000000fbbb37f8488100b1b4697012de631a5e6" }; - rom1.Write(Data.Models.Metadata.Rom.SHA1Key, "0000000fbbb37f8488100b1b4697012de631a5e6"); rom1.CopyMachineInformation(machine); DatItem rom2 = new Rom { Name = "rom-2", Size = 1024, + SHA1 = "000000e948edcb4f7704b8af85a77a3339ecce44" }; - rom2.Write(Data.Models.Metadata.Rom.SHA1Key, "000000e948edcb4f7704b8af85a77a3339ecce44"); rom2.CopyMachineInformation(machine); // Setup the dictionary @@ -754,8 +787,8 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "rom-1", Size = hasDuplicate ? 1024 : 2048, + SHA1 = "0000000fbbb37f8488100b1b4697012de631a5e6" }; - rom.Write(Data.Models.Metadata.Rom.SHA1Key, "0000000fbbb37f8488100b1b4697012de631a5e6"); rom.CopyMachineInformation(machine); var actual = dict.GetDuplicates(rom); @@ -778,16 +811,16 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "rom-1", Size = 1024, + SHA1 = "0000000fbbb37f8488100b1b4697012de631a5e6" }; - rom1.Write(Data.Models.Metadata.Rom.SHA1Key, "0000000fbbb37f8488100b1b4697012de631a5e6"); rom1.CopyMachineInformation(machine); DatItem rom2 = new Rom { Name = "rom-2", Size = 1024, + SHA1 = "000000e948edcb4f7704b8af85a77a3339ecce44" }; - rom2.Write(Data.Models.Metadata.Rom.SHA1Key, "000000e948edcb4f7704b8af85a77a3339ecce44"); rom1.CopyMachineInformation(machine); // Setup the dictionary @@ -800,8 +833,8 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "rom-1", Size = expected ? 1024 : 2048, + SHA1 = "0000000fbbb37f8488100b1b4697012de631a5e6" }; - rom.Write(Data.Models.Metadata.Rom.SHA1Key, "0000000fbbb37f8488100b1b4697012de631a5e6"); rom1.CopyMachineInformation(machine); bool actual = dict.HasDuplicates(rom); @@ -819,14 +852,14 @@ namespace SabreTools.Metadata.DatFiles.Test Machine machine = new Machine { Name = "machine" }; - DatItem item = new Rom + var item = new Rom { Name = "rom", Size = 12345, + CRC = "deadbeef", + Source = source, + Machine = machine }; - item.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); - item.Source = source; - item.Machine = machine; var dict = new ItemDictionary(); _ = dict.AddItem(item, statsOnly: false); @@ -837,7 +870,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal(1, dict.DatStatistics.GetHashCount(HashType.CRC32)); Assert.Equal(0, dict.DatStatistics.GetHashCount(HashType.MD5)); - item.Write(Data.Models.Metadata.Rom.MD5Key, "deadbeef"); + item.MD5 = "deadbeef"; dict.RecalculateStats(); diff --git a/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs b/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs index 2b27899d..1727a456 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs @@ -370,6 +370,17 @@ namespace SabreTools.Metadata.DatFiles for (int i = 0; i < items.Length; i++) { var datItem = new Rom(items[i], machine, source, i); + + var original = items[i].Original; + if (original is not null) + { + datItem.Original = new Original + { + Value = original.Value, + Content = original.Content, + }; + } + if (datItem.Name is not null) { AddItem(datItem, statsOnly); diff --git a/SabreTools.Metadata.DatFiles/DatFile.Splitting.cs b/SabreTools.Metadata.DatFiles/DatFile.Splitting.cs index 2f179261..45637c1e 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.Splitting.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.Splitting.cs @@ -332,7 +332,7 @@ namespace SabreTools.Metadata.DatFiles // Special rom handling else if (item is Rom rom) { - string? mergeTag = rom.ReadString(Data.Models.Metadata.Rom.MergeKey); + string? mergeTag = rom.Merge; // If the merge tag exists and the parent already contains it, skip if (mergeTag is not null && GetItemsForBucket(cloneOf) @@ -468,7 +468,7 @@ namespace SabreTools.Metadata.DatFiles // Special rom handling else if (item.Value is Rom rom) { - string? mergeTag = rom.ReadString(Data.Models.Metadata.Rom.MergeKey); + string? mergeTag = rom.Merge; // If the merge tag exists and the parent already contains it, skip if (mergeTag is not null && GetItemsForBucketDB(cloneOf).Values @@ -1357,7 +1357,10 @@ namespace SabreTools.Metadata.DatFiles foreach (DatItem item in items) { // Remove the merge tag - item.Remove(Data.Models.Metadata.Rom.MergeKey); + if (item is Disk disk) + disk.Merge = null; + else if (item is Rom rom) + rom.Merge = null; // Get the machine var machine = item.Machine; diff --git a/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs b/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs index 620517c6..4f1be21e 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs @@ -208,7 +208,7 @@ namespace SabreTools.Metadata.DatFiles machine.Release = [.. machine.Release, releaseItem]; break; case DatItems.Formats.Rom rom: - var romItem = ProcessItem(rom, machine); + var romItem = ProcessItem(rom, machine, rom.Original); machine.Rom ??= []; machine.Rom = [.. machine.Rom, romItem]; @@ -584,7 +584,7 @@ namespace SabreTools.Metadata.DatFiles machine.Release = [.. machine.Release, releaseItem]; break; case DatItems.Formats.Rom rom: - var romItem = ProcessItem(rom, machine); + var romItem = ProcessItem(rom, machine, rom.Original); machine.Rom ??= []; machine.Rom = [.. machine.Rom, romItem]; @@ -853,11 +853,12 @@ namespace SabreTools.Metadata.DatFiles ///
/// Item to convert /// Machine to use for Part and DataArea + /// Original for OpenMSX /// /// This method is required because both a Rom and a Dump /// item might be created and added for a given Rom input. /// - private static Data.Models.Metadata.Rom ProcessItem(DatItems.Formats.Rom item, Data.Models.Metadata.Machine machine) + private static Data.Models.Metadata.Rom ProcessItem(DatItems.Formats.Rom item, Data.Models.Metadata.Machine machine, DatItems.Formats.Original? original) { var romItem = item.GetInternalClone(); @@ -869,21 +870,20 @@ namespace SabreTools.Metadata.DatFiles var rom = new Data.Models.Metadata.Rom(); rom.Name = romItem.Name; - rom[Data.Models.Metadata.Rom.OffsetKey] = romItem.ReadString(Data.Models.Metadata.Rom.StartKey) ?? romItem.ReadString(Data.Models.Metadata.Rom.OffsetKey); - rom[Data.Models.Metadata.Rom.OpenMSXType] = romItem.ReadString(Data.Models.Metadata.Rom.OpenMSXType); - rom[Data.Models.Metadata.Rom.RemarkKey] = romItem.ReadString(Data.Models.Metadata.Rom.RemarkKey); - rom[Data.Models.Metadata.Rom.SHA1Key] = romItem.ReadString(Data.Models.Metadata.Rom.SHA1Key); - rom[Data.Models.Metadata.Rom.StartKey] = romItem.ReadString(Data.Models.Metadata.Rom.StartKey) ?? romItem.ReadString(Data.Models.Metadata.Rom.OffsetKey); + rom.Offset = romItem.Start ?? romItem.Offset; + rom.OpenMSXType = romItem.OpenMSXType; + rom.Remark = romItem.Remark; + rom.SHA1 = romItem.SHA1; + rom.Start = romItem.Start ?? romItem.Offset; dumpRom.Rom = rom; - var romOriginal = romItem.Read("ORIGINAL"); - if (romOriginal is not null) + if (original is not null) { var newOriginal = new Data.Models.Metadata.Original { - Value = romOriginal.Value, - Content = romOriginal.Content, + Value = original.Value, + Content = original.Content, }; dumpRom.Original = newOriginal; } @@ -897,21 +897,20 @@ namespace SabreTools.Metadata.DatFiles var megaRom = new Data.Models.Metadata.Rom(); megaRom.Name = romItem.Name; - megaRom[Data.Models.Metadata.Rom.OffsetKey] = romItem.ReadString(Data.Models.Metadata.Rom.StartKey) ?? romItem.ReadString(Data.Models.Metadata.Rom.OffsetKey); - megaRom[Data.Models.Metadata.Rom.OpenMSXType] = romItem.ReadString(Data.Models.Metadata.Rom.OpenMSXType); - megaRom[Data.Models.Metadata.Rom.RemarkKey] = romItem.ReadString(Data.Models.Metadata.Rom.RemarkKey); - megaRom[Data.Models.Metadata.Rom.SHA1Key] = romItem.ReadString(Data.Models.Metadata.Rom.SHA1Key); - megaRom[Data.Models.Metadata.Rom.StartKey] = romItem.ReadString(Data.Models.Metadata.Rom.StartKey) ?? romItem.ReadString(Data.Models.Metadata.Rom.OffsetKey); + megaRom.Offset = romItem.Start ?? romItem.Offset; + megaRom.OpenMSXType = romItem.OpenMSXType; + megaRom.Remark = romItem.Remark; + megaRom.SHA1 = romItem.SHA1; + megaRom.Start = romItem.Start ?? romItem.Offset; dumpMegaRom.MegaRom = megaRom; - var megaRomOriginal = romItem.Read("ORIGINAL"); - if (megaRomOriginal is not null) + if (original is not null) { var newOriginal = new Data.Models.Metadata.Original { - Value = megaRomOriginal.Value, - Content = megaRomOriginal.Content, + Value = original.Value, + Content = original.Content, }; dumpMegaRom.Original = newOriginal; } @@ -925,21 +924,20 @@ namespace SabreTools.Metadata.DatFiles var sccPlusCart = new Data.Models.Metadata.Rom(); sccPlusCart.Name = romItem.Name; - sccPlusCart[Data.Models.Metadata.Rom.OffsetKey] = romItem.ReadString(Data.Models.Metadata.Rom.StartKey) ?? romItem.ReadString(Data.Models.Metadata.Rom.OffsetKey); - sccPlusCart[Data.Models.Metadata.Rom.OpenMSXType] = romItem.ReadString(Data.Models.Metadata.Rom.OpenMSXType); - sccPlusCart[Data.Models.Metadata.Rom.RemarkKey] = romItem.ReadString(Data.Models.Metadata.Rom.RemarkKey); - sccPlusCart[Data.Models.Metadata.Rom.SHA1Key] = romItem.ReadString(Data.Models.Metadata.Rom.SHA1Key); - sccPlusCart[Data.Models.Metadata.Rom.StartKey] = romItem.ReadString(Data.Models.Metadata.Rom.StartKey) ?? romItem.ReadString(Data.Models.Metadata.Rom.OffsetKey); + sccPlusCart.Offset = romItem.Start ?? romItem.Offset; + sccPlusCart.OpenMSXType = romItem.OpenMSXType; + sccPlusCart.Remark = romItem.Remark; + sccPlusCart.SHA1 = romItem.SHA1; + sccPlusCart.Start = romItem.Start ?? romItem.Offset; dumpSccPlusCart.SCCPlusCart = sccPlusCart; - var sccPlusCartOriginal = romItem.Read("ORIGINAL"); - if (sccPlusCartOriginal is not null) + if (original is not null) { var newOriginal = new Data.Models.Metadata.Original { - Value = sccPlusCartOriginal.Value, - Content = sccPlusCartOriginal.Content, + Value = original.Value, + Content = original.Content, }; dumpSccPlusCart.Original = newOriginal; } diff --git a/SabreTools.Metadata.DatFiles/DatFile.cs b/SabreTools.Metadata.DatFiles/DatFile.cs index ea5b2449..ec283bcf 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.cs @@ -523,7 +523,7 @@ namespace SabreTools.Metadata.DatFiles else if (item is Rom rom) { // We can only write out if there's a SHA-1 - string? sha1 = rom.ReadString(Data.Models.Metadata.Rom.SHA1Key); + string? sha1 = rom.SHA1; if (!string.IsNullOrEmpty(sha1)) { name = Utilities.GetDepotPath(sha1, Modifiers.OutputDepot.Depth)?.Replace('\\', '/'); @@ -617,20 +617,20 @@ namespace SabreTools.Metadata.DatFiles } else if (item is Rom rom) { - crc16 = rom.ReadString(Data.Models.Metadata.Rom.CRC16Key) ?? string.Empty; - crc = rom.ReadString(Data.Models.Metadata.Rom.CRCKey) ?? string.Empty; - crc64 = rom.ReadString(Data.Models.Metadata.Rom.CRC64Key) ?? string.Empty; - md2 = rom.ReadString(Data.Models.Metadata.Rom.MD2Key) ?? string.Empty; - md4 = rom.ReadString(Data.Models.Metadata.Rom.MD4Key) ?? string.Empty; - md5 = rom.ReadString(Data.Models.Metadata.Rom.MD5Key) ?? string.Empty; - ripemd128 = rom.ReadString(Data.Models.Metadata.Rom.RIPEMD128Key) ?? string.Empty; - ripemd160 = rom.ReadString(Data.Models.Metadata.Rom.RIPEMD160Key) ?? string.Empty; - sha1 = rom.ReadString(Data.Models.Metadata.Rom.SHA1Key) ?? string.Empty; - sha256 = rom.ReadString(Data.Models.Metadata.Rom.SHA256Key) ?? string.Empty; - sha384 = rom.ReadString(Data.Models.Metadata.Rom.SHA384Key) ?? string.Empty; - sha512 = rom.ReadString(Data.Models.Metadata.Rom.SHA512Key) ?? string.Empty; + crc16 = rom.CRC16 ?? string.Empty; + crc = rom.CRC ?? string.Empty; + crc64 = rom.CRC64 ?? string.Empty; + md2 = rom.MD2 ?? string.Empty; + md4 = rom.MD4 ?? string.Empty; + md5 = rom.MD5 ?? string.Empty; + ripemd128 = rom.RIPEMD128 ?? string.Empty; + ripemd160 = rom.RIPEMD160 ?? string.Empty; + sha1 = rom.SHA1 ?? string.Empty; + sha256 = rom.SHA256 ?? string.Empty; + sha384 = rom.SHA384 ?? string.Empty; + sha512 = rom.SHA512 ?? string.Empty; size = rom.Size.ToString() ?? string.Empty; - spamsum = rom.ReadString(Data.Models.Metadata.Rom.SpamSumKey) ?? string.Empty; + spamsum = rom.SpamSum ?? string.Empty; } // Now do bulk replacement where possible @@ -675,38 +675,25 @@ namespace SabreTools.Metadata.DatFiles return rom; // If the item CRC isn't "null" - if (rom.ReadString(Data.Models.Metadata.Rom.CRCKey) != "null") + if (rom.CRC != "null") return rom; // If the Rom has "null" characteristics, ensure all fields rom.Name = rom.Name == "null" ? "-" : rom.Name; rom.Size = 0; - rom.Write(Data.Models.Metadata.Rom.CRC16Key, - rom.ReadString(Data.Models.Metadata.Rom.CRC16Key) == "null" ? HashType.CRC16.ZeroString : null); - rom.Write(Data.Models.Metadata.Rom.CRCKey, - rom.ReadString(Data.Models.Metadata.Rom.CRCKey) == "null" ? HashType.CRC32.ZeroString : null); - rom.Write(Data.Models.Metadata.Rom.CRC64Key, - rom.ReadString(Data.Models.Metadata.Rom.CRC64Key) == "null" ? HashType.CRC64.ZeroString : null); - rom.Write(Data.Models.Metadata.Rom.MD2Key, - rom.ReadString(Data.Models.Metadata.Rom.MD2Key) == "null" ? HashType.MD2.ZeroString : null); - rom.Write(Data.Models.Metadata.Rom.MD4Key, - rom.ReadString(Data.Models.Metadata.Rom.MD4Key) == "null" ? HashType.MD4.ZeroString : null); - rom.Write(Data.Models.Metadata.Rom.MD5Key, - rom.ReadString(Data.Models.Metadata.Rom.MD5Key) == "null" ? HashType.MD5.ZeroString : null); - rom.Write(Data.Models.Metadata.Rom.RIPEMD128Key, - rom.ReadString(Data.Models.Metadata.Rom.RIPEMD128Key) == "null" ? HashType.RIPEMD128.ZeroString : null); - rom.Write(Data.Models.Metadata.Rom.RIPEMD160Key, - rom.ReadString(Data.Models.Metadata.Rom.RIPEMD160Key) == "null" ? HashType.RIPEMD160.ZeroString : null); - rom.Write(Data.Models.Metadata.Rom.SHA1Key, - rom.ReadString(Data.Models.Metadata.Rom.SHA1Key) == "null" ? HashType.SHA1.ZeroString : null); - rom.Write(Data.Models.Metadata.Rom.SHA256Key, - rom.ReadString(Data.Models.Metadata.Rom.SHA256Key) == "null" ? HashType.SHA256.ZeroString : null); - rom.Write(Data.Models.Metadata.Rom.SHA384Key, - rom.ReadString(Data.Models.Metadata.Rom.SHA384Key) == "null" ? HashType.SHA384.ZeroString : null); - rom.Write(Data.Models.Metadata.Rom.SHA512Key, - rom.ReadString(Data.Models.Metadata.Rom.SHA512Key) == "null" ? HashType.SHA512.ZeroString : null); - rom.Write(Data.Models.Metadata.Rom.SpamSumKey, - rom.ReadString(Data.Models.Metadata.Rom.SpamSumKey) == "null" ? HashType.SpamSum.ZeroString : null); + rom.CRC16 = rom.CRC16 == "null" ? HashType.CRC16.ZeroString : null; + rom.CRC = rom.CRC == "null" ? HashType.CRC32.ZeroString : null; + rom.CRC64 = rom.CRC64 == "null" ? HashType.CRC64.ZeroString : null; + rom.MD2 = rom.MD2 == "null" ? HashType.MD2.ZeroString : null; + rom.MD4 = rom.MD4 == "null" ? HashType.MD4.ZeroString : null; + rom.MD5 = rom.MD5 == "null" ? HashType.MD5.ZeroString : null; + rom.RIPEMD128 = rom.RIPEMD128 == "null" ? HashType.RIPEMD128.ZeroString : null; + rom.RIPEMD160 = rom.RIPEMD160 == "null" ? HashType.RIPEMD160.ZeroString : null; + rom.SHA1 = rom.SHA1 == "null" ? HashType.SHA1.ZeroString : null; + rom.SHA256 = rom.SHA256 == "null" ? HashType.SHA256.ZeroString : null; + rom.SHA384 = rom.SHA384 == "null" ? HashType.SHA384.ZeroString : null; + rom.SHA512 = rom.SHA512 == "null" ? HashType.SHA512.ZeroString : null; + rom.SpamSum = rom.SpamSum == "null" ? HashType.SpamSum.ZeroString : null; return rom; } @@ -1086,55 +1073,55 @@ namespace SabreTools.Metadata.DatFiles ///
private static string GetDuplicateSuffix(Rom datItem) { - string? crc16 = datItem.ReadString(Data.Models.Metadata.Rom.CRC16Key); + string? crc16 = datItem.CRC16; if (!string.IsNullOrEmpty(crc16)) return $"_{crc16}"; - string? crc = datItem.ReadString(Data.Models.Metadata.Rom.CRCKey); + string? crc = datItem.CRC; if (!string.IsNullOrEmpty(crc)) return $"_{crc}"; - string? crc64 = datItem.ReadString(Data.Models.Metadata.Rom.CRC64Key); + string? crc64 = datItem.CRC64; if (!string.IsNullOrEmpty(crc64)) return $"_{crc64}"; - string? md2 = datItem.ReadString(Data.Models.Metadata.Rom.MD2Key); + string? md2 = datItem.MD2; if (!string.IsNullOrEmpty(md2)) return $"_{md2}"; - string? md4 = datItem.ReadString(Data.Models.Metadata.Rom.MD4Key); + string? md4 = datItem.MD4; if (!string.IsNullOrEmpty(md4)) return $"_{md4}"; - string? md5 = datItem.ReadString(Data.Models.Metadata.Rom.MD5Key); + string? md5 = datItem.MD5; if (!string.IsNullOrEmpty(md5)) return $"_{md5}"; - string? ripemd128 = datItem.ReadString(Data.Models.Metadata.Rom.RIPEMD128Key); + string? ripemd128 = datItem.RIPEMD128; if (!string.IsNullOrEmpty(ripemd128)) return $"_{ripemd128}"; - string? ripemd160 = datItem.ReadString(Data.Models.Metadata.Rom.RIPEMD160Key); + string? ripemd160 = datItem.RIPEMD160; if (!string.IsNullOrEmpty(ripemd160)) return $"_{ripemd160}"; - string? sha1 = datItem.ReadString(Data.Models.Metadata.Rom.SHA1Key); + string? sha1 = datItem.SHA1; if (!string.IsNullOrEmpty(sha1)) return $"_{sha1}"; - string? sha256 = datItem.ReadString(Data.Models.Metadata.Rom.SHA256Key); + string? sha256 = datItem.SHA256; if (!string.IsNullOrEmpty(sha256)) return $"_{sha256}"; - string? sha384 = datItem.ReadString(Data.Models.Metadata.Rom.SHA384Key); + string? sha384 = datItem.SHA384; if (!string.IsNullOrEmpty(sha384)) return $"_{sha384}"; - string? sha512 = datItem.ReadString(Data.Models.Metadata.Rom.SHA512Key); + string? sha512 = datItem.SHA512; if (!string.IsNullOrEmpty(sha512)) return $"_{sha512}"; - string? spamSum = datItem.ReadString(Data.Models.Metadata.Rom.SpamSumKey); + string? spamSum = datItem.SpamSum; if (!string.IsNullOrEmpty(spamSum)) return $"_{spamSum}"; diff --git a/SabreTools.Metadata.DatFiles/DatStatistics.cs b/SabreTools.Metadata.DatFiles/DatStatistics.cs index 8b0af504..850d870e 100644 --- a/SabreTools.Metadata.DatFiles/DatStatistics.cs +++ b/SabreTools.Metadata.DatFiles/DatStatistics.cs @@ -375,19 +375,19 @@ namespace SabreTools.Metadata.DatFiles if (status != ItemStatus.Nodump) { TotalSize += rom.Size ?? 0; - AddHashCount(HashType.CRC16, string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.CRC16Key)) ? 0 : 1); - AddHashCount(HashType.CRC32, string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.CRCKey)) ? 0 : 1); - AddHashCount(HashType.CRC64, string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.CRC64Key)) ? 0 : 1); - AddHashCount(HashType.MD2, string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.MD2Key)) ? 0 : 1); - AddHashCount(HashType.MD4, string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.MD4Key)) ? 0 : 1); - AddHashCount(HashType.MD5, string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.MD5Key)) ? 0 : 1); - AddHashCount(HashType.RIPEMD128, string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.RIPEMD128Key)) ? 0 : 1); - AddHashCount(HashType.RIPEMD160, string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.RIPEMD160Key)) ? 0 : 1); - AddHashCount(HashType.SHA1, string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.SHA1Key)) ? 0 : 1); - AddHashCount(HashType.SHA256, string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.SHA256Key)) ? 0 : 1); - AddHashCount(HashType.SHA384, string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.SHA384Key)) ? 0 : 1); - AddHashCount(HashType.SHA512, string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.SHA512Key)) ? 0 : 1); - AddHashCount(HashType.SpamSum, string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.SpamSumKey)) ? 0 : 1); + AddHashCount(HashType.CRC16, string.IsNullOrEmpty(rom.CRC16) ? 0 : 1); + AddHashCount(HashType.CRC32, string.IsNullOrEmpty(rom.CRC) ? 0 : 1); + AddHashCount(HashType.CRC64, string.IsNullOrEmpty(rom.CRC64) ? 0 : 1); + AddHashCount(HashType.MD2, string.IsNullOrEmpty(rom.MD2) ? 0 : 1); + AddHashCount(HashType.MD4, string.IsNullOrEmpty(rom.MD4) ? 0 : 1); + AddHashCount(HashType.MD5, string.IsNullOrEmpty(rom.MD5) ? 0 : 1); + AddHashCount(HashType.RIPEMD128, string.IsNullOrEmpty(rom.RIPEMD128) ? 0 : 1); + AddHashCount(HashType.RIPEMD160, string.IsNullOrEmpty(rom.RIPEMD160) ? 0 : 1); + AddHashCount(HashType.SHA1, string.IsNullOrEmpty(rom.SHA1) ? 0 : 1); + AddHashCount(HashType.SHA256, string.IsNullOrEmpty(rom.SHA256) ? 0 : 1); + AddHashCount(HashType.SHA384, string.IsNullOrEmpty(rom.SHA384) ? 0 : 1); + AddHashCount(HashType.SHA512, string.IsNullOrEmpty(rom.SHA512) ? 0 : 1); + AddHashCount(HashType.SpamSum, string.IsNullOrEmpty(rom.SpamSum) ? 0 : 1); } AddStatusCount(ItemStatus.BadDump, status == ItemStatus.BadDump ? 1 : 0); @@ -504,19 +504,19 @@ namespace SabreTools.Metadata.DatFiles if (status != ItemStatus.Nodump) { TotalSize -= rom.Size ?? 0; - RemoveHashCount(HashType.CRC16, string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.CRC16Key)) ? 0 : 1); - RemoveHashCount(HashType.CRC32, string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.CRCKey)) ? 0 : 1); - RemoveHashCount(HashType.CRC64, string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.CRC64Key)) ? 0 : 1); - RemoveHashCount(HashType.MD2, string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.MD2Key)) ? 0 : 1); - RemoveHashCount(HashType.MD4, string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.MD4Key)) ? 0 : 1); - RemoveHashCount(HashType.MD5, string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.MD5Key)) ? 0 : 1); - RemoveHashCount(HashType.RIPEMD128, string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.RIPEMD128Key)) ? 0 : 1); - RemoveHashCount(HashType.RIPEMD160, string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.RIPEMD160Key)) ? 0 : 1); - RemoveHashCount(HashType.SHA1, string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.SHA1Key)) ? 0 : 1); - RemoveHashCount(HashType.SHA256, string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.SHA256Key)) ? 0 : 1); - RemoveHashCount(HashType.SHA384, string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.SHA384Key)) ? 0 : 1); - RemoveHashCount(HashType.SHA512, string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.SHA512Key)) ? 0 : 1); - RemoveHashCount(HashType.SpamSum, string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.SpamSumKey)) ? 0 : 1); + RemoveHashCount(HashType.CRC16, string.IsNullOrEmpty(rom.CRC16) ? 0 : 1); + RemoveHashCount(HashType.CRC32, string.IsNullOrEmpty(rom.CRC) ? 0 : 1); + RemoveHashCount(HashType.CRC64, string.IsNullOrEmpty(rom.CRC64) ? 0 : 1); + RemoveHashCount(HashType.MD2, string.IsNullOrEmpty(rom.MD2) ? 0 : 1); + RemoveHashCount(HashType.MD4, string.IsNullOrEmpty(rom.MD4) ? 0 : 1); + RemoveHashCount(HashType.MD5, string.IsNullOrEmpty(rom.MD5) ? 0 : 1); + RemoveHashCount(HashType.RIPEMD128, string.IsNullOrEmpty(rom.RIPEMD128) ? 0 : 1); + RemoveHashCount(HashType.RIPEMD160, string.IsNullOrEmpty(rom.RIPEMD160) ? 0 : 1); + RemoveHashCount(HashType.SHA1, string.IsNullOrEmpty(rom.SHA1) ? 0 : 1); + RemoveHashCount(HashType.SHA256, string.IsNullOrEmpty(rom.SHA256) ? 0 : 1); + RemoveHashCount(HashType.SHA384, string.IsNullOrEmpty(rom.SHA384) ? 0 : 1); + RemoveHashCount(HashType.SHA512, string.IsNullOrEmpty(rom.SHA512) ? 0 : 1); + RemoveHashCount(HashType.SpamSum, string.IsNullOrEmpty(rom.SpamSum) ? 0 : 1); } RemoveStatusCount(ItemStatus.BadDump, status == ItemStatus.BadDump ? 1 : 0); diff --git a/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs b/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs index eeeb506a..de90a89a 100644 --- a/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs +++ b/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs @@ -92,21 +92,21 @@ namespace SabreTools.Metadata.DatFiles.Formats missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); if (rom.Size is null || rom.Size < 0) missingFields.Add(nameof(Data.Models.Metadata.Rom.Size)); - if (string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.CRC16Key)) - && string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.CRCKey)) - && string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.CRC64Key)) - && string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.MD2Key)) - && string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.MD4Key)) - && string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.MD5Key)) - && string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.RIPEMD128Key)) - && string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.RIPEMD160Key)) - && string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.SHA1Key)) - && string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.SHA256Key)) - && string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.SHA384Key)) - && string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.SHA512Key)) - && string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.SpamSumKey))) + if (string.IsNullOrEmpty(rom.CRC16) + && string.IsNullOrEmpty(rom.CRC) + && string.IsNullOrEmpty(rom.CRC64) + && string.IsNullOrEmpty(rom.MD2) + && string.IsNullOrEmpty(rom.MD4) + && string.IsNullOrEmpty(rom.MD5) + && string.IsNullOrEmpty(rom.RIPEMD128) + && string.IsNullOrEmpty(rom.RIPEMD160) + && string.IsNullOrEmpty(rom.SHA1) + && string.IsNullOrEmpty(rom.SHA256) + && string.IsNullOrEmpty(rom.SHA384) + && string.IsNullOrEmpty(rom.SHA512) + && string.IsNullOrEmpty(rom.SpamSum)) { - missingFields.Add(Data.Models.Metadata.Rom.SHA1Key); + missingFields.Add(nameof(Data.Models.Metadata.Rom.SHA1)); } break; diff --git a/SabreTools.Metadata.DatFiles/Formats/DosCenter.cs b/SabreTools.Metadata.DatFiles/Formats/DosCenter.cs index 30af27c7..ecc5cd01 100644 --- a/SabreTools.Metadata.DatFiles/Formats/DosCenter.cs +++ b/SabreTools.Metadata.DatFiles/Formats/DosCenter.cs @@ -39,11 +39,11 @@ namespace SabreTools.Metadata.DatFiles.Formats if (rom.Size is null || rom.Size < 0) missingFields.Add(nameof(Data.Models.Metadata.Rom.Size)); // if (string.IsNullOrEmpty(rom.Date)) - // missingFields.Add(Data.Models.Metadata.Rom.DateKey); - if (string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.CRCKey))) - missingFields.Add(Data.Models.Metadata.Rom.CRCKey); + // missingFields.Add(nameof(Data.Models.Metadata.Rom.Date)); + if (string.IsNullOrEmpty(rom.CRC)) + missingFields.Add(nameof(Data.Models.Metadata.Rom.CRC)); // if (string.IsNullOrEmpty(rom.GetStringFieldValue(Data.Models.Metadata.Rom.SHA1Key))) - // missingFields.Add(Data.Models.Metadata.Rom.SHA1Key); + // missingFields.Add(nameof(Data.Models.Metadata.Rom.SHA1)); break; default: diff --git a/SabreTools.Metadata.DatFiles/Formats/EverdriveSmdb.cs b/SabreTools.Metadata.DatFiles/Formats/EverdriveSmdb.cs index e680cc80..b40adf19 100644 --- a/SabreTools.Metadata.DatFiles/Formats/EverdriveSmdb.cs +++ b/SabreTools.Metadata.DatFiles/Formats/EverdriveSmdb.cs @@ -36,14 +36,14 @@ namespace SabreTools.Metadata.DatFiles.Formats switch (datItem) { case Rom rom: - if (string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.SHA256Key))) - missingFields.Add(Data.Models.Metadata.Rom.SHA256Key); - if (string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.SHA1Key))) - missingFields.Add(Data.Models.Metadata.Rom.SHA1Key); - if (string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.MD5Key))) - missingFields.Add(Data.Models.Metadata.Rom.MD5Key); - if (string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.CRCKey))) - missingFields.Add(Data.Models.Metadata.Rom.CRCKey); + if (string.IsNullOrEmpty(rom.SHA256)) + missingFields.Add(nameof(Data.Models.Metadata.Rom.SHA256)); + if (string.IsNullOrEmpty(rom.SHA1)) + missingFields.Add(nameof(Data.Models.Metadata.Rom.SHA1)); + if (string.IsNullOrEmpty(rom.MD5)) + missingFields.Add(nameof(Data.Models.Metadata.Rom.MD5)); + if (string.IsNullOrEmpty(rom.CRC)) + missingFields.Add(nameof(Data.Models.Metadata.Rom.CRC)); break; default: diff --git a/SabreTools.Metadata.DatFiles/Formats/Listrom.cs b/SabreTools.Metadata.DatFiles/Formats/Listrom.cs index 290caf11..05d822e8 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Listrom.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Listrom.cs @@ -48,10 +48,10 @@ namespace SabreTools.Metadata.DatFiles.Formats case Rom rom: if (rom.Size is null || rom.Size < 0) missingFields.Add(nameof(Data.Models.Metadata.Rom.Size)); - if (string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.CRCKey))) - missingFields.Add(Data.Models.Metadata.Rom.CRCKey); - if (string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.SHA1Key))) - missingFields.Add(Data.Models.Metadata.Rom.SHA1Key); + if (string.IsNullOrEmpty(rom.CRC)) + missingFields.Add(nameof(Data.Models.Metadata.Rom.CRC)); + if (string.IsNullOrEmpty(rom.SHA1)) + missingFields.Add(nameof(Data.Models.Metadata.Rom.SHA1)); break; default: diff --git a/SabreTools.Metadata.DatFiles/Formats/Listxml.cs b/SabreTools.Metadata.DatFiles/Formats/Listxml.cs index e85bb7d6..f0cb7dd1 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Listxml.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Listxml.cs @@ -271,10 +271,10 @@ namespace SabreTools.Metadata.DatFiles.Formats missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); if (rom.Size is null || rom.Size < 0) missingFields.Add(nameof(Data.Models.Metadata.Rom.Size)); - if (string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.CRCKey)) - && string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.SHA1Key))) + if (string.IsNullOrEmpty(rom.CRC) + && string.IsNullOrEmpty(rom.SHA1)) { - missingFields.Add(Data.Models.Metadata.Rom.SHA1Key); + missingFields.Add(nameof(Data.Models.Metadata.Rom.SHA1)); } break; diff --git a/SabreTools.Metadata.DatFiles/Formats/Logiqx.cs b/SabreTools.Metadata.DatFiles/Formats/Logiqx.cs index dfb47dbe..976d16d8 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Logiqx.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Logiqx.cs @@ -284,21 +284,21 @@ namespace SabreTools.Metadata.DatFiles.Formats missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); if (rom.Size is null || rom.Size < 0) missingFields.Add(nameof(Data.Models.Metadata.Rom.Size)); - if (string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.CRC16Key)) - && string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.CRCKey)) - && string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.CRC64Key)) - && string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.MD2Key)) - && string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.MD4Key)) - && string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.MD5Key)) - && string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.RIPEMD128Key)) - && string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.RIPEMD160Key)) - && string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.SHA1Key)) - && string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.SHA256Key)) - && string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.SHA384Key)) - && string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.SHA512Key)) - && string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.SpamSumKey))) + if (string.IsNullOrEmpty(rom.CRC16) + && string.IsNullOrEmpty(rom.CRC) + && string.IsNullOrEmpty(rom.CRC64) + && string.IsNullOrEmpty(rom.MD2) + && string.IsNullOrEmpty(rom.MD4) + && string.IsNullOrEmpty(rom.MD5) + && string.IsNullOrEmpty(rom.RIPEMD128) + && string.IsNullOrEmpty(rom.RIPEMD160) + && string.IsNullOrEmpty(rom.SHA1) + && string.IsNullOrEmpty(rom.SHA256) + && string.IsNullOrEmpty(rom.SHA384) + && string.IsNullOrEmpty(rom.SHA512) + && string.IsNullOrEmpty(rom.SpamSum)) { - missingFields.Add(Data.Models.Metadata.Rom.SHA1Key); + missingFields.Add(nameof(Data.Models.Metadata.Rom.SHA1)); } break; diff --git a/SabreTools.Metadata.DatFiles/Formats/Md2File.cs b/SabreTools.Metadata.DatFiles/Formats/Md2File.cs index b3457a79..72c9a1be 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Md2File.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Md2File.cs @@ -38,8 +38,8 @@ namespace SabreTools.Metadata.DatFiles.Formats switch (datItem) { case Rom rom: - if (string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.MD2Key))) - missingFields.Add(Data.Models.Metadata.Rom.MD2Key); + if (string.IsNullOrEmpty(rom.MD2)) + missingFields.Add(nameof(Data.Models.Metadata.Rom.MD2)); break; default: diff --git a/SabreTools.Metadata.DatFiles/Formats/Md4File.cs b/SabreTools.Metadata.DatFiles/Formats/Md4File.cs index d1f2d030..52b0ce11 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Md4File.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Md4File.cs @@ -38,8 +38,8 @@ namespace SabreTools.Metadata.DatFiles.Formats switch (datItem) { case Rom rom: - if (string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.MD4Key))) - missingFields.Add(Data.Models.Metadata.Rom.MD4Key); + if (string.IsNullOrEmpty(rom.MD4)) + missingFields.Add(nameof(Data.Models.Metadata.Rom.MD4)); break; default: diff --git a/SabreTools.Metadata.DatFiles/Formats/Md5File.cs b/SabreTools.Metadata.DatFiles/Formats/Md5File.cs index bfa09d09..b9dcf6ff 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Md5File.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Md5File.cs @@ -50,8 +50,8 @@ namespace SabreTools.Metadata.DatFiles.Formats break; case Rom rom: - if (string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.MD5Key))) - missingFields.Add(Data.Models.Metadata.Rom.MD5Key); + if (string.IsNullOrEmpty(rom.MD5)) + missingFields.Add(nameof(Data.Models.Metadata.Rom.MD5)); break; default: diff --git a/SabreTools.Metadata.DatFiles/Formats/OfflineList.cs b/SabreTools.Metadata.DatFiles/Formats/OfflineList.cs index dfd9668f..f75f9b74 100644 --- a/SabreTools.Metadata.DatFiles/Formats/OfflineList.cs +++ b/SabreTools.Metadata.DatFiles/Formats/OfflineList.cs @@ -34,8 +34,8 @@ namespace SabreTools.Metadata.DatFiles.Formats case Rom rom: if (rom.Size is null || rom.Size < 0) missingFields.Add(nameof(Data.Models.Metadata.Rom.Size)); - if (string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.CRCKey))) - missingFields.Add(Data.Models.Metadata.Rom.CRCKey); + if (string.IsNullOrEmpty(rom.CRC)) + missingFields.Add(nameof(Data.Models.Metadata.Rom.CRC)); break; default: diff --git a/SabreTools.Metadata.DatFiles/Formats/OpenMSX.cs b/SabreTools.Metadata.DatFiles/Formats/OpenMSX.cs index 64819f1d..7924f589 100644 --- a/SabreTools.Metadata.DatFiles/Formats/OpenMSX.cs +++ b/SabreTools.Metadata.DatFiles/Formats/OpenMSX.cs @@ -75,8 +75,8 @@ The softwaredb.xml file contains information about rom mapper types switch (datItem) { case Rom rom: - if (string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.SHA1Key))) - missingFields.Add(Data.Models.Metadata.Rom.SHA1Key); + if (string.IsNullOrEmpty(rom.SHA1)) + missingFields.Add(nameof(Data.Models.Metadata.Rom.SHA1)); break; default: diff --git a/SabreTools.Metadata.DatFiles/Formats/RipeMD128File.cs b/SabreTools.Metadata.DatFiles/Formats/RipeMD128File.cs index 28512ed5..4611ecf1 100644 --- a/SabreTools.Metadata.DatFiles/Formats/RipeMD128File.cs +++ b/SabreTools.Metadata.DatFiles/Formats/RipeMD128File.cs @@ -38,8 +38,8 @@ namespace SabreTools.Metadata.DatFiles.Formats switch (datItem) { case Rom rom: - if (string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.RIPEMD128Key))) - missingFields.Add(Data.Models.Metadata.Rom.RIPEMD128Key); + if (string.IsNullOrEmpty(rom.RIPEMD128)) + missingFields.Add(nameof(Data.Models.Metadata.Rom.RIPEMD128)); break; default: diff --git a/SabreTools.Metadata.DatFiles/Formats/RipeMD160File.cs b/SabreTools.Metadata.DatFiles/Formats/RipeMD160File.cs index 4dbae14c..a42e39e8 100644 --- a/SabreTools.Metadata.DatFiles/Formats/RipeMD160File.cs +++ b/SabreTools.Metadata.DatFiles/Formats/RipeMD160File.cs @@ -38,8 +38,8 @@ namespace SabreTools.Metadata.DatFiles.Formats switch (datItem) { case Rom rom: - if (string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.RIPEMD160Key))) - missingFields.Add(Data.Models.Metadata.Rom.RIPEMD160Key); + if (string.IsNullOrEmpty(rom.RIPEMD160)) + missingFields.Add(nameof(Data.Models.Metadata.Rom.RIPEMD160)); break; default: diff --git a/SabreTools.Metadata.DatFiles/Formats/RomCenter.cs b/SabreTools.Metadata.DatFiles/Formats/RomCenter.cs index 5e53ac89..a07d6860 100644 --- a/SabreTools.Metadata.DatFiles/Formats/RomCenter.cs +++ b/SabreTools.Metadata.DatFiles/Formats/RomCenter.cs @@ -36,8 +36,8 @@ namespace SabreTools.Metadata.DatFiles.Formats switch (datItem) { case Rom rom: - if (string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.CRCKey))) - missingFields.Add(Data.Models.Metadata.Rom.CRCKey); + if (string.IsNullOrEmpty(rom.CRC)) + missingFields.Add(nameof(Data.Models.Metadata.Rom.CRC)); if (rom.Size is null || rom.Size < 0) missingFields.Add(nameof(Data.Models.Metadata.Rom.Size)); break; diff --git a/SabreTools.Metadata.DatFiles/Formats/SeparatedValue.cs b/SabreTools.Metadata.DatFiles/Formats/SeparatedValue.cs index c0bf2d1e..385331a7 100644 --- a/SabreTools.Metadata.DatFiles/Formats/SeparatedValue.cs +++ b/SabreTools.Metadata.DatFiles/Formats/SeparatedValue.cs @@ -95,15 +95,15 @@ namespace SabreTools.Metadata.DatFiles.Formats case Rom rom: if (rom.Size is null || rom.Size < 0) missingFields.Add(nameof(Data.Models.Metadata.Rom.Size)); - if (string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.CRCKey)) - && string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.MD5Key)) - && string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.SHA1Key)) - && string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.SHA256Key)) - && string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.SHA384Key)) - && string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.SHA512Key)) - && string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.SpamSumKey))) + if (string.IsNullOrEmpty(rom.CRC) + && string.IsNullOrEmpty(rom.MD5) + && string.IsNullOrEmpty(rom.SHA1) + && string.IsNullOrEmpty(rom.SHA256) + && string.IsNullOrEmpty(rom.SHA384) + && string.IsNullOrEmpty(rom.SHA512) + && string.IsNullOrEmpty(rom.SpamSum)) { - missingFields.Add(Data.Models.Metadata.Rom.SHA1Key); + missingFields.Add(nameof(Data.Models.Metadata.Rom.SHA1)); } break; diff --git a/SabreTools.Metadata.DatFiles/Formats/SfvFile.cs b/SabreTools.Metadata.DatFiles/Formats/SfvFile.cs index f106c6bd..6994ecc6 100644 --- a/SabreTools.Metadata.DatFiles/Formats/SfvFile.cs +++ b/SabreTools.Metadata.DatFiles/Formats/SfvFile.cs @@ -38,8 +38,8 @@ namespace SabreTools.Metadata.DatFiles.Formats switch (datItem) { case Rom rom: - if (string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.CRCKey))) - missingFields.Add(Data.Models.Metadata.Rom.CRCKey); + if (string.IsNullOrEmpty(rom.CRC)) + missingFields.Add(nameof(Data.Models.Metadata.Rom.CRC)); break; default: diff --git a/SabreTools.Metadata.DatFiles/Formats/Sha1File.cs b/SabreTools.Metadata.DatFiles/Formats/Sha1File.cs index 8cb8a639..f602f8cd 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Sha1File.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Sha1File.cs @@ -50,8 +50,8 @@ namespace SabreTools.Metadata.DatFiles.Formats break; case Rom rom: - if (string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.SHA1Key))) - missingFields.Add(Data.Models.Metadata.Rom.SHA1Key); + if (string.IsNullOrEmpty(rom.SHA1)) + missingFields.Add(nameof(Data.Models.Metadata.Rom.SHA1)); break; default: diff --git a/SabreTools.Metadata.DatFiles/Formats/Sha256File.cs b/SabreTools.Metadata.DatFiles/Formats/Sha256File.cs index 2a486680..53f4c750 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Sha256File.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Sha256File.cs @@ -44,8 +44,8 @@ namespace SabreTools.Metadata.DatFiles.Formats break; case Rom rom: - if (string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.SHA256Key))) - missingFields.Add(Data.Models.Metadata.Rom.SHA256Key); + if (string.IsNullOrEmpty(rom.SHA256)) + missingFields.Add(nameof(Data.Models.Metadata.Rom.SHA256)); break; default: diff --git a/SabreTools.Metadata.DatFiles/Formats/Sha384File.cs b/SabreTools.Metadata.DatFiles/Formats/Sha384File.cs index 2ef52335..8b8cada1 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Sha384File.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Sha384File.cs @@ -38,8 +38,8 @@ namespace SabreTools.Metadata.DatFiles.Formats switch (datItem) { case Rom rom: - if (string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.SHA384Key))) - missingFields.Add(Data.Models.Metadata.Rom.SHA384Key); + if (string.IsNullOrEmpty(rom.SHA384)) + missingFields.Add(nameof(Data.Models.Metadata.Rom.SHA384)); break; default: diff --git a/SabreTools.Metadata.DatFiles/Formats/Sha512File.cs b/SabreTools.Metadata.DatFiles/Formats/Sha512File.cs index 81bf39a8..1fb4f576 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Sha512File.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Sha512File.cs @@ -38,8 +38,8 @@ namespace SabreTools.Metadata.DatFiles.Formats switch (datItem) { case Rom rom: - if (string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.SHA512Key))) - missingFields.Add(Data.Models.Metadata.Rom.SHA512Key); + if (string.IsNullOrEmpty(rom.SHA512)) + missingFields.Add(nameof(Data.Models.Metadata.Rom.SHA512)); break; default: diff --git a/SabreTools.Metadata.DatFiles/Formats/SpamSumFile.cs b/SabreTools.Metadata.DatFiles/Formats/SpamSumFile.cs index 8383c5a3..73407a22 100644 --- a/SabreTools.Metadata.DatFiles/Formats/SpamSumFile.cs +++ b/SabreTools.Metadata.DatFiles/Formats/SpamSumFile.cs @@ -44,8 +44,8 @@ namespace SabreTools.Metadata.DatFiles.Formats break; case Rom rom: - if (string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.SpamSumKey))) - missingFields.Add(Data.Models.Metadata.Rom.SpamSumKey); + if (string.IsNullOrEmpty(rom.SpamSum)) + missingFields.Add(nameof(Data.Models.Metadata.Rom.SpamSum)); break; default: diff --git a/SabreTools.Metadata.DatFiles/ItemDictionary.cs b/SabreTools.Metadata.DatFiles/ItemDictionary.cs index f55c46b0..07e52fa2 100644 --- a/SabreTools.Metadata.DatFiles/ItemDictionary.cs +++ b/SabreTools.Metadata.DatFiles/ItemDictionary.cs @@ -139,7 +139,7 @@ namespace SabreTools.Metadata.DatFiles long? size = rom.Size; // If we have the case where there is SHA-1 and nothing else, we don't fill in any other part of the data - if (size is null && !string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.SHA1Key))) + if (size is null && !string.IsNullOrEmpty(rom.SHA1)) { // No-op, just catch it so it doesn't go further //logger.Verbose($"{Header.GetStringFieldValue(DatHeader.FileNameKey)}: Entry with only SHA-1 found - '{rom.Name}'"); @@ -147,22 +147,22 @@ namespace SabreTools.Metadata.DatFiles // If we have a rom and it's missing size AND the hashes match a 0-byte file, fill in the rest of the info else if ((size == 0 || size is null) - && (string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.CRCKey)) || rom.HasZeroHash())) + && (string.IsNullOrEmpty(rom.CRC) || rom.HasZeroHash())) { rom.Size = 0; - rom.Write(Data.Models.Metadata.Rom.CRC16Key, null); // HashType.CRC16.ZeroString - rom.Write(Data.Models.Metadata.Rom.CRCKey, HashType.CRC32.ZeroString); - rom.Write(Data.Models.Metadata.Rom.CRC64Key, null); // HashType.CRC64.ZeroString - rom.Write(Data.Models.Metadata.Rom.MD2Key, null); // HashType.MD2.ZeroString - rom.Write(Data.Models.Metadata.Rom.MD4Key, null); // HashType.MD4.ZeroString - rom.Write(Data.Models.Metadata.Rom.MD5Key, HashType.MD5.ZeroString); - rom.Write(Data.Models.Metadata.Rom.RIPEMD128Key, null); // HashType.RIPEMD128.ZeroString - rom.Write(Data.Models.Metadata.Rom.RIPEMD160Key, null); // HashType.RIPEMD160.ZeroString - rom.Write(Data.Models.Metadata.Rom.SHA1Key, HashType.SHA1.ZeroString); - rom.Write(Data.Models.Metadata.Rom.SHA256Key, null); // HashType.SHA256.ZeroString; - rom.Write(Data.Models.Metadata.Rom.SHA384Key, null); // HashType.SHA384.ZeroString; - rom.Write(Data.Models.Metadata.Rom.SHA512Key, null); // HashType.SHA512.ZeroString; - rom.Write(Data.Models.Metadata.Rom.SpamSumKey, null); // HashType.SpamSum.ZeroString; + rom.CRC16 = null; // HashType.CRC16.ZeroString + rom.CRC = HashType.CRC32.ZeroString; + rom.CRC64 = null; // HashType.CRC64.ZeroString + rom.MD2 = null; // HashType.MD2.ZeroString + rom.MD4 = null; // HashType.MD4.ZeroString + rom.MD5 = HashType.MD5.ZeroString; + rom.RIPEMD128 = null; // HashType.RIPEMD128.ZeroString + rom.RIPEMD160 = null; // HashType.RIPEMD160.ZeroString + rom.SHA1 = HashType.SHA1.ZeroString; + rom.SHA256 = null; // HashType.SHA256.ZeroString; + rom.SHA384 = null; // HashType.SHA384.ZeroString; + rom.SHA512 = null; // HashType.SHA512.ZeroString; + rom.SpamSum = null; // HashType.SpamSum.ZeroString; } // If the file has no size and it's not the above case, skip and log diff --git a/SabreTools.Metadata.DatFiles/ItemDictionaryDB.cs b/SabreTools.Metadata.DatFiles/ItemDictionaryDB.cs index d53bd1de..0050b835 100644 --- a/SabreTools.Metadata.DatFiles/ItemDictionaryDB.cs +++ b/SabreTools.Metadata.DatFiles/ItemDictionaryDB.cs @@ -228,7 +228,7 @@ namespace SabreTools.Metadata.DatFiles long? size = rom.Size; // If we have the case where there is SHA-1 and nothing else, we don't fill in any other part of the data - if (size is null && !string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.SHA1Key))) + if (size is null && !string.IsNullOrEmpty(rom.SHA1)) { // No-op, just catch it so it doesn't go further //logger.Verbose($"{Header.GetStringFieldValue(DatHeader.FileNameKey)}: Entry with only SHA-1 found - '{rom.Name}'"); @@ -236,22 +236,22 @@ namespace SabreTools.Metadata.DatFiles // If we have a rom and it's missing size AND the hashes match a 0-byte file, fill in the rest of the info else if ((size == 0 || size is null) - && (string.IsNullOrEmpty(rom.ReadString(Data.Models.Metadata.Rom.CRCKey)) || rom.HasZeroHash())) + && (string.IsNullOrEmpty(rom.CRC) || rom.HasZeroHash())) { rom.Size = 0; - rom.Write(Data.Models.Metadata.Rom.CRC16Key, null); // HashType.CRC16.ZeroString - rom.Write(Data.Models.Metadata.Rom.CRCKey, HashType.CRC32.ZeroString); - rom.Write(Data.Models.Metadata.Rom.CRC64Key, null); // HashType.CRC64.ZeroString - rom.Write(Data.Models.Metadata.Rom.MD2Key, null); // HashType.MD2.ZeroString - rom.Write(Data.Models.Metadata.Rom.MD4Key, null); // HashType.MD4.ZeroString - rom.Write(Data.Models.Metadata.Rom.MD5Key, HashType.MD5.ZeroString); - rom.Write(Data.Models.Metadata.Rom.RIPEMD128Key, null); // HashType.RIPEMD128.ZeroString - rom.Write(Data.Models.Metadata.Rom.RIPEMD160Key, null); // HashType.RIPEMD160.ZeroString - rom.Write(Data.Models.Metadata.Rom.SHA1Key, HashType.SHA1.ZeroString); - rom.Write(Data.Models.Metadata.Rom.SHA256Key, null); // HashType.SHA256.ZeroString; - rom.Write(Data.Models.Metadata.Rom.SHA384Key, null); // HashType.SHA384.ZeroString; - rom.Write(Data.Models.Metadata.Rom.SHA512Key, null); // HashType.SHA512.ZeroString; - rom.Write(Data.Models.Metadata.Rom.SpamSumKey, null); // HashType.SpamSum.ZeroString; + rom.CRC16 = null; // HashType.CRC16.ZeroString + rom.CRC = HashType.CRC32.ZeroString; + rom.CRC64 = null; // HashType.CRC64.ZeroString + rom.MD2 = null; // HashType.MD2.ZeroString + rom.MD4 = null; // HashType.MD4.ZeroString + rom.MD5 = HashType.MD5.ZeroString; + rom.RIPEMD128 = null; // HashType.RIPEMD128.ZeroString + rom.RIPEMD160 = null; // HashType.RIPEMD160.ZeroString + rom.SHA1 = HashType.SHA1.ZeroString; + rom.SHA256 = null; // HashType.SHA256.ZeroString; + rom.SHA384 = null; // HashType.SHA384.ZeroString; + rom.SHA512 = null; // HashType.SHA512.ZeroString; + rom.SpamSum = null; // HashType.SpamSum.ZeroString; } // If the file has no size and it's not the above case, skip and log diff --git a/SabreTools.Metadata.DatItems.Test/DatItemTests.cs b/SabreTools.Metadata.DatItems.Test/DatItemTests.cs index 070ad8e9..3cc3846e 100644 --- a/SabreTools.Metadata.DatItems.Test/DatItemTests.cs +++ b/SabreTools.Metadata.DatItems.Test/DatItemTests.cs @@ -266,11 +266,17 @@ namespace SabreTools.Metadata.DatItems.Test [InlineData("name", "name", 0)] public void CompareTo_NamesOnly(string? selfName, string? otherName, int expected) { - DatItem self = new Rom { Name = selfName }; - self.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); + DatItem self = new Rom + { + Name = selfName, + CRC = "DEADBEEF" + }; - DatItem? other = new Rom { Name = otherName }; - other.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); + DatItem? other = new Rom + { + Name = otherName, + CRC = "DEADBEEF" + }; int actual = self.CompareTo(other); Assert.Equal(expected, actual); @@ -468,20 +474,22 @@ namespace SabreTools.Metadata.DatItems.Test Machine machine = new Machine { Name = "Machine" }; - DatItem datItem = new Rom(); - datItem.Write(Data.Models.Metadata.Rom.CRC16Key, "DEADBEEF"); - datItem.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); - datItem.Write(Data.Models.Metadata.Rom.CRC64Key, "DEADBEEF"); - datItem.Write(Data.Models.Metadata.Rom.MD2Key, "DEADBEEF"); - datItem.Write(Data.Models.Metadata.Rom.MD4Key, "DEADBEEF"); - datItem.Write(Data.Models.Metadata.Rom.MD5Key, "DEADBEEF"); - datItem.Write(Data.Models.Metadata.Rom.RIPEMD128Key, "DEADBEEF"); - datItem.Write(Data.Models.Metadata.Rom.RIPEMD160Key, "DEADBEEF"); - datItem.Write(Data.Models.Metadata.Rom.SHA1Key, "DEADBEEF"); - datItem.Write(Data.Models.Metadata.Rom.SHA256Key, "DEADBEEF"); - datItem.Write(Data.Models.Metadata.Rom.SHA384Key, "DEADBEEF"); - datItem.Write(Data.Models.Metadata.Rom.SHA512Key, "DEADBEEF"); - datItem.Write(Data.Models.Metadata.Rom.SpamSumKey, "BASE64"); + DatItem datItem = new Rom + { + CRC16 = "DEADBEEF", + CRC = "DEADBEEF", + CRC64 = "DEADBEEF", + MD2 = "DEADBEEF", + MD4 = "DEADBEEF", + MD5 = "DEADBEEF", + RIPEMD128 = "DEADBEEF", + RIPEMD160 = "DEADBEEF", + SHA1 = "DEADBEEF", + SHA256 = "DEADBEEF", + SHA384 = "DEADBEEF", + SHA512 = "DEADBEEF", + SpamSum = "BASE64" + }; string actual = datItem.GetKey(bucketedBy, machine, source, lower, norename); Assert.Equal(expected, actual); diff --git a/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs b/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs index c12dd141..f02968e4 100644 --- a/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs +++ b/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs @@ -38,12 +38,12 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Rom actual = disk.ConvertToRom(); Assert.Equal("name.chd", actual.Name); - Assert.Equal("merge", actual.ReadString(Data.Models.Metadata.Rom.MergeKey)); - Assert.Equal("region", actual.ReadString(Data.Models.Metadata.Rom.RegionKey)); + Assert.Equal("merge", actual.Merge); + Assert.Equal("region", actual.Region); Assert.Equal(Data.Models.Metadata.ItemStatus.Good, actual.Status); Assert.Equal(true, actual.Optional); - Assert.Equal(HashType.MD5.ZeroString, actual.ReadString(Data.Models.Metadata.Rom.MD5Key)); - Assert.Equal(HashType.SHA1.ZeroString, actual.ReadString(Data.Models.Metadata.Rom.SHA1Key)); + Assert.Equal(HashType.MD5.ZeroString, actual.MD5); + Assert.Equal(HashType.SHA1.ZeroString, actual.SHA1); Assert.Equal(DupeType.All | DupeType.External, actual.DupeType); DataArea? actualDataArea = actual.DataArea; diff --git a/SabreTools.Metadata.DatItems.Test/Formats/FileTests.cs b/SabreTools.Metadata.DatItems.Test/Formats/FileTests.cs index 306cc776..1b4d6295 100644 --- a/SabreTools.Metadata.DatItems.Test/Formats/FileTests.cs +++ b/SabreTools.Metadata.DatItems.Test/Formats/FileTests.cs @@ -36,10 +36,10 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Assert.Equal("XXXXXX.XXXXXX", actual.Name); Assert.Equal(12345, actual.Size); - Assert.Equal("deadbeef", actual.ReadString(Data.Models.Metadata.Rom.CRCKey)); - Assert.Equal("000000000000000000000000deadbeef", actual.ReadString(Data.Models.Metadata.Rom.MD5Key)); - Assert.Equal("00000000000000000000000000000000deadbeef", actual.ReadString(Data.Models.Metadata.Rom.SHA1Key)); - Assert.Equal("00000000000000000000000000000000000000000000000000000000deadbeef", actual.ReadString(Data.Models.Metadata.Rom.SHA256Key)); + Assert.Equal("deadbeef", actual.CRC); + Assert.Equal("000000000000000000000000deadbeef", actual.MD5); + Assert.Equal("00000000000000000000000000000000deadbeef", actual.SHA1); + Assert.Equal("00000000000000000000000000000000000000000000000000000000deadbeef", actual.SHA256); Assert.Equal(DupeType.All | DupeType.External, actual.DupeType); Machine? actualMachine = actual.Machine; diff --git a/SabreTools.Metadata.DatItems.Test/Formats/MediaTests.cs b/SabreTools.Metadata.DatItems.Test/Formats/MediaTests.cs index 6bc933e3..90dc6b20 100644 --- a/SabreTools.Metadata.DatItems.Test/Formats/MediaTests.cs +++ b/SabreTools.Metadata.DatItems.Test/Formats/MediaTests.cs @@ -30,10 +30,10 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Rom actual = media.ConvertToRom(); Assert.Equal("name.aaruf", actual.Name); - Assert.Equal(HashType.MD5.ZeroString, actual.ReadString(Data.Models.Metadata.Rom.MD5Key)); - Assert.Equal(HashType.SHA1.ZeroString, actual.ReadString(Data.Models.Metadata.Rom.SHA1Key)); - Assert.Equal(HashType.SHA256.ZeroString, actual.ReadString(Data.Models.Metadata.Rom.SHA256Key)); - Assert.Equal(HashType.SpamSum.ZeroString, actual.ReadString(Data.Models.Metadata.Rom.SpamSumKey)); + Assert.Equal(HashType.MD5.ZeroString, actual.MD5); + Assert.Equal(HashType.SHA1.ZeroString, actual.SHA1); + Assert.Equal(HashType.SHA256.ZeroString, actual.SHA256); + Assert.Equal(HashType.SpamSum.ZeroString, actual.SpamSum); Assert.Equal(DupeType.All | DupeType.External, actual.DupeType); Machine? actualMachine = actual.Machine; diff --git a/SabreTools.Metadata.DatItems.Test/Formats/RomTests.cs b/SabreTools.Metadata.DatItems.Test/Formats/RomTests.cs index 60d17381..0c8347f9 100644 --- a/SabreTools.Metadata.DatItems.Test/Formats/RomTests.cs +++ b/SabreTools.Metadata.DatItems.Test/Formats/RomTests.cs @@ -15,19 +15,19 @@ namespace SabreTools.Metadata.DatItems.Formats.Test self.FillMissingInformation(other); - Assert.Null(self.ReadString(Data.Models.Metadata.Rom.CRC16Key)); - Assert.Null(self.ReadString(Data.Models.Metadata.Rom.CRCKey)); - Assert.Null(self.ReadString(Data.Models.Metadata.Rom.CRC64Key)); - Assert.Null(self.ReadString(Data.Models.Metadata.Rom.MD2Key)); - Assert.Null(self.ReadString(Data.Models.Metadata.Rom.MD4Key)); - Assert.Null(self.ReadString(Data.Models.Metadata.Rom.MD5Key)); - Assert.Null(self.ReadString(Data.Models.Metadata.Rom.RIPEMD128Key)); - Assert.Null(self.ReadString(Data.Models.Metadata.Rom.RIPEMD160Key)); - Assert.Null(self.ReadString(Data.Models.Metadata.Rom.SHA1Key)); - Assert.Null(self.ReadString(Data.Models.Metadata.Rom.SHA256Key)); - Assert.Null(self.ReadString(Data.Models.Metadata.Rom.SHA384Key)); - Assert.Null(self.ReadString(Data.Models.Metadata.Rom.SHA512Key)); - Assert.Null(self.ReadString(Data.Models.Metadata.Rom.SpamSumKey)); + Assert.Null(self.CRC16); + Assert.Null(self.CRC); + Assert.Null(self.CRC64); + Assert.Null(self.MD2); + Assert.Null(self.MD4); + Assert.Null(self.MD5); + Assert.Null(self.RIPEMD128); + Assert.Null(self.RIPEMD160); + Assert.Null(self.SHA1); + Assert.Null(self.SHA256); + Assert.Null(self.SHA384); + Assert.Null(self.SHA512); + Assert.Null(self.SpamSum); } [Fact] @@ -35,36 +35,38 @@ namespace SabreTools.Metadata.DatItems.Formats.Test { Rom self = new Rom(); - Rom other = new Rom(); - other.Write(Data.Models.Metadata.Rom.CRC16Key, "XXXXXX"); - other.Write(Data.Models.Metadata.Rom.CRCKey, "XXXXXX"); - other.Write(Data.Models.Metadata.Rom.CRC64Key, "XXXXXX"); - other.Write(Data.Models.Metadata.Rom.MD2Key, "XXXXXX"); - other.Write(Data.Models.Metadata.Rom.MD4Key, "XXXXXX"); - other.Write(Data.Models.Metadata.Rom.MD5Key, "XXXXXX"); - other.Write(Data.Models.Metadata.Rom.RIPEMD128Key, "XXXXXX"); - other.Write(Data.Models.Metadata.Rom.RIPEMD160Key, "XXXXXX"); - other.Write(Data.Models.Metadata.Rom.SHA1Key, "XXXXXX"); - other.Write(Data.Models.Metadata.Rom.SHA256Key, "XXXXXX"); - other.Write(Data.Models.Metadata.Rom.SHA384Key, "XXXXXX"); - other.Write(Data.Models.Metadata.Rom.SHA512Key, "XXXXXX"); - other.Write(Data.Models.Metadata.Rom.SpamSumKey, "XXXXXX"); + Rom other = new Rom + { + CRC16 = "XXXXXX", + CRC = "XXXXXX", + CRC64 = "XXXXXX", + MD2 = "XXXXXX", + MD4 = "XXXXXX", + MD5 = "XXXXXX", + RIPEMD128 = "XXXXXX", + RIPEMD160 = "XXXXXX", + SHA1 = "XXXXXX", + SHA256 = "XXXXXX", + SHA384 = "XXXXXX", + SHA512 = "XXXXXX", + SpamSum = "XXXXXX" + }; self.FillMissingInformation(other); - Assert.Equal("XXXXXX", self.ReadString(Data.Models.Metadata.Rom.CRC16Key)); - Assert.Equal("XXXXXX", self.ReadString(Data.Models.Metadata.Rom.CRCKey)); - Assert.Equal("XXXXXX", self.ReadString(Data.Models.Metadata.Rom.CRC64Key)); - Assert.Equal("XXXXXX", self.ReadString(Data.Models.Metadata.Rom.MD2Key)); - Assert.Equal("XXXXXX", self.ReadString(Data.Models.Metadata.Rom.MD4Key)); - Assert.Equal("XXXXXX", self.ReadString(Data.Models.Metadata.Rom.MD5Key)); - Assert.Equal("XXXXXX", self.ReadString(Data.Models.Metadata.Rom.RIPEMD128Key)); - Assert.Equal("XXXXXX", self.ReadString(Data.Models.Metadata.Rom.RIPEMD160Key)); - Assert.Equal("XXXXXX", self.ReadString(Data.Models.Metadata.Rom.SHA1Key)); - Assert.Equal("XXXXXX", self.ReadString(Data.Models.Metadata.Rom.SHA256Key)); - Assert.Equal("XXXXXX", self.ReadString(Data.Models.Metadata.Rom.SHA384Key)); - Assert.Equal("XXXXXX", self.ReadString(Data.Models.Metadata.Rom.SHA512Key)); - Assert.Equal("XXXXXX", self.ReadString(Data.Models.Metadata.Rom.SpamSumKey)); + Assert.Equal("XXXXXX", self.CRC16); + Assert.Equal("XXXXXX", self.CRC); + Assert.Equal("XXXXXX", self.CRC64); + Assert.Equal("XXXXXX", self.MD2); + Assert.Equal("XXXXXX", self.MD4); + Assert.Equal("XXXXXX", self.MD5); + Assert.Equal("XXXXXX", self.RIPEMD128); + Assert.Equal("XXXXXX", self.RIPEMD160); + Assert.Equal("XXXXXX", self.SHA1); + Assert.Equal("XXXXXX", self.SHA256); + Assert.Equal("XXXXXX", self.SHA384); + Assert.Equal("XXXXXX", self.SHA512); + Assert.Equal("XXXXXX", self.SpamSum); } #endregion @@ -82,20 +84,22 @@ namespace SabreTools.Metadata.DatItems.Formats.Test [Fact] public void HasHashes_CRC16_True() { - Rom self = new Rom(); - self.Write(Data.Models.Metadata.Rom.CRC16Key, "XXXXXX"); - self.Write(Data.Models.Metadata.Rom.CRCKey, string.Empty); - self.Write(Data.Models.Metadata.Rom.CRC64Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD2Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD4Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD5Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.RIPEMD128Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.RIPEMD160Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA1Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA256Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA384Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA512Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SpamSumKey, string.Empty); + Rom self = new Rom + { + CRC16 = "XXXXXX", + CRC = string.Empty, + CRC64 = string.Empty, + MD2 = string.Empty, + MD4 = string.Empty, + MD5 = string.Empty, + RIPEMD128 = string.Empty, + RIPEMD160 = string.Empty, + SHA1 = string.Empty, + SHA256 = string.Empty, + SHA384 = string.Empty, + SHA512 = string.Empty, + SpamSum = string.Empty + }; bool actual = self.HasHashes(); Assert.True(actual); @@ -104,20 +108,22 @@ namespace SabreTools.Metadata.DatItems.Formats.Test [Fact] public void HasHashes_CRC_True() { - Rom self = new Rom(); - self.Write(Data.Models.Metadata.Rom.CRC16Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.CRCKey, "XXXXXX"); - self.Write(Data.Models.Metadata.Rom.CRC64Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD2Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD4Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD5Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.RIPEMD128Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.RIPEMD160Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA1Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA256Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA384Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA512Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SpamSumKey, string.Empty); + Rom self = new Rom + { + CRC16 = string.Empty, + CRC = "XXXXXX", + CRC64 = string.Empty, + MD2 = string.Empty, + MD4 = string.Empty, + MD5 = string.Empty, + RIPEMD128 = string.Empty, + RIPEMD160 = string.Empty, + SHA1 = string.Empty, + SHA256 = string.Empty, + SHA384 = string.Empty, + SHA512 = string.Empty, + SpamSum = string.Empty + }; bool actual = self.HasHashes(); Assert.True(actual); @@ -126,20 +132,22 @@ namespace SabreTools.Metadata.DatItems.Formats.Test [Fact] public void HasHashes_CRC64_True() { - Rom self = new Rom(); - self.Write(Data.Models.Metadata.Rom.CRC16Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.CRCKey, string.Empty); - self.Write(Data.Models.Metadata.Rom.CRC64Key, "XXXXXX"); - self.Write(Data.Models.Metadata.Rom.MD2Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD4Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD5Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.RIPEMD128Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.RIPEMD160Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA1Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA256Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA384Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA512Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SpamSumKey, string.Empty); + Rom self = new Rom + { + CRC16 = string.Empty, + CRC = string.Empty, + CRC64 = "XXXXXX", + MD2 = string.Empty, + MD4 = string.Empty, + MD5 = string.Empty, + RIPEMD128 = string.Empty, + RIPEMD160 = string.Empty, + SHA1 = string.Empty, + SHA256 = string.Empty, + SHA384 = string.Empty, + SHA512 = string.Empty, + SpamSum = string.Empty + }; bool actual = self.HasHashes(); Assert.True(actual); @@ -148,20 +156,22 @@ namespace SabreTools.Metadata.DatItems.Formats.Test [Fact] public void HasHashes_MD2_True() { - Rom self = new Rom(); - self.Write(Data.Models.Metadata.Rom.CRC16Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.CRCKey, string.Empty); - self.Write(Data.Models.Metadata.Rom.CRC64Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD2Key, "XXXXXX"); - self.Write(Data.Models.Metadata.Rom.MD4Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD5Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.RIPEMD128Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.RIPEMD160Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA1Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA256Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA384Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA512Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SpamSumKey, string.Empty); + Rom self = new Rom + { + CRC16 = string.Empty, + CRC = string.Empty, + CRC64 = string.Empty, + MD2 = "XXXXXX", + MD4 = string.Empty, + MD5 = string.Empty, + RIPEMD128 = string.Empty, + RIPEMD160 = string.Empty, + SHA1 = string.Empty, + SHA256 = string.Empty, + SHA384 = string.Empty, + SHA512 = string.Empty, + SpamSum = string.Empty + }; bool actual = self.HasHashes(); Assert.True(actual); @@ -170,20 +180,22 @@ namespace SabreTools.Metadata.DatItems.Formats.Test [Fact] public void HasHashes_MD4_True() { - Rom self = new Rom(); - self.Write(Data.Models.Metadata.Rom.CRC16Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.CRCKey, string.Empty); - self.Write(Data.Models.Metadata.Rom.CRC64Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD2Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD4Key, "XXXXXX"); - self.Write(Data.Models.Metadata.Rom.MD5Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.RIPEMD128Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.RIPEMD160Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA1Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA256Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA384Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA512Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SpamSumKey, string.Empty); + Rom self = new Rom + { + CRC16 = string.Empty, + CRC = string.Empty, + CRC64 = string.Empty, + MD2 = string.Empty, + MD4 = "XXXXXX", + MD5 = string.Empty, + RIPEMD128 = string.Empty, + RIPEMD160 = string.Empty, + SHA1 = string.Empty, + SHA256 = string.Empty, + SHA384 = string.Empty, + SHA512 = string.Empty, + SpamSum = string.Empty + }; bool actual = self.HasHashes(); Assert.True(actual); @@ -192,20 +204,22 @@ namespace SabreTools.Metadata.DatItems.Formats.Test [Fact] public void HasHashes_MD5_True() { - Rom self = new Rom(); - self.Write(Data.Models.Metadata.Rom.CRC16Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.CRCKey, string.Empty); - self.Write(Data.Models.Metadata.Rom.CRC64Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD2Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD4Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD5Key, "XXXXXX"); - self.Write(Data.Models.Metadata.Rom.RIPEMD128Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.RIPEMD160Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA1Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA256Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA384Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA512Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SpamSumKey, string.Empty); + Rom self = new Rom + { + CRC16 = string.Empty, + CRC = string.Empty, + CRC64 = string.Empty, + MD2 = string.Empty, + MD4 = string.Empty, + MD5 = "XXXXXX", + RIPEMD128 = string.Empty, + RIPEMD160 = string.Empty, + SHA1 = string.Empty, + SHA256 = string.Empty, + SHA384 = string.Empty, + SHA512 = string.Empty, + SpamSum = string.Empty + }; bool actual = self.HasHashes(); Assert.True(actual); @@ -214,20 +228,22 @@ namespace SabreTools.Metadata.DatItems.Formats.Test [Fact] public void HasHashes_RIPEMD128_True() { - Rom self = new Rom(); - self.Write(Data.Models.Metadata.Rom.CRC16Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.CRCKey, string.Empty); - self.Write(Data.Models.Metadata.Rom.CRC64Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD2Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD4Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD5Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.RIPEMD128Key, "XXXXXX"); - self.Write(Data.Models.Metadata.Rom.RIPEMD160Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA1Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA256Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA384Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA512Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SpamSumKey, string.Empty); + Rom self = new Rom + { + CRC16 = string.Empty, + CRC = string.Empty, + CRC64 = string.Empty, + MD2 = string.Empty, + MD4 = string.Empty, + MD5 = string.Empty, + RIPEMD128 = "XXXXXX", + RIPEMD160 = string.Empty, + SHA1 = string.Empty, + SHA256 = string.Empty, + SHA384 = string.Empty, + SHA512 = string.Empty, + SpamSum = string.Empty + }; bool actual = self.HasHashes(); Assert.True(actual); @@ -236,20 +252,22 @@ namespace SabreTools.Metadata.DatItems.Formats.Test [Fact] public void HasHashes_RIPEMD160_True() { - Rom self = new Rom(); - self.Write(Data.Models.Metadata.Rom.CRC16Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.CRCKey, string.Empty); - self.Write(Data.Models.Metadata.Rom.CRC64Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD2Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD4Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD5Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.RIPEMD128Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.RIPEMD160Key, "XXXXXX"); - self.Write(Data.Models.Metadata.Rom.SHA1Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA256Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA384Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA512Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SpamSumKey, string.Empty); + Rom self = new Rom + { + CRC16 = string.Empty, + CRC = string.Empty, + CRC64 = string.Empty, + MD2 = string.Empty, + MD4 = string.Empty, + MD5 = string.Empty, + RIPEMD128 = string.Empty, + RIPEMD160 = "XXXXXX", + SHA1 = string.Empty, + SHA256 = string.Empty, + SHA384 = string.Empty, + SHA512 = string.Empty, + SpamSum = string.Empty + }; bool actual = self.HasHashes(); Assert.True(actual); @@ -258,20 +276,22 @@ namespace SabreTools.Metadata.DatItems.Formats.Test [Fact] public void HasHashes_SHA1_True() { - Rom self = new Rom(); - self.Write(Data.Models.Metadata.Rom.CRC16Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.CRCKey, string.Empty); - self.Write(Data.Models.Metadata.Rom.CRC64Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD2Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD4Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD5Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.RIPEMD128Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.RIPEMD160Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA1Key, "XXXXXX"); - self.Write(Data.Models.Metadata.Rom.SHA256Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA384Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA512Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SpamSumKey, string.Empty); + Rom self = new Rom + { + CRC16 = string.Empty, + CRC = string.Empty, + CRC64 = string.Empty, + MD2 = string.Empty, + MD4 = string.Empty, + MD5 = string.Empty, + RIPEMD128 = string.Empty, + RIPEMD160 = string.Empty, + SHA1 = "XXXXXX", + SHA256 = string.Empty, + SHA384 = string.Empty, + SHA512 = string.Empty, + SpamSum = string.Empty + }; bool actual = self.HasHashes(); Assert.True(actual); @@ -280,20 +300,22 @@ namespace SabreTools.Metadata.DatItems.Formats.Test [Fact] public void HasHashes_SHA256_True() { - Rom self = new Rom(); - self.Write(Data.Models.Metadata.Rom.CRC16Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.CRCKey, string.Empty); - self.Write(Data.Models.Metadata.Rom.CRC64Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD2Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD4Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD5Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.RIPEMD128Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.RIPEMD160Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA1Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA256Key, "XXXXXX"); - self.Write(Data.Models.Metadata.Rom.SHA384Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA512Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SpamSumKey, string.Empty); + Rom self = new Rom + { + CRC16 = string.Empty, + CRC = string.Empty, + CRC64 = string.Empty, + MD2 = string.Empty, + MD4 = string.Empty, + MD5 = string.Empty, + RIPEMD128 = string.Empty, + RIPEMD160 = string.Empty, + SHA1 = string.Empty, + SHA256 = "XXXXXX", + SHA384 = string.Empty, + SHA512 = string.Empty, + SpamSum = string.Empty + }; bool actual = self.HasHashes(); Assert.True(actual); @@ -302,20 +324,22 @@ namespace SabreTools.Metadata.DatItems.Formats.Test [Fact] public void HasHashes_SHA384_True() { - Rom self = new Rom(); - self.Write(Data.Models.Metadata.Rom.CRC16Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.CRCKey, string.Empty); - self.Write(Data.Models.Metadata.Rom.CRC64Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD2Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD4Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD5Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.RIPEMD128Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.RIPEMD160Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA1Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA256Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA384Key, "XXXXXX"); - self.Write(Data.Models.Metadata.Rom.SHA512Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SpamSumKey, string.Empty); + Rom self = new Rom + { + CRC16 = string.Empty, + CRC = string.Empty, + CRC64 = string.Empty, + MD2 = string.Empty, + MD4 = string.Empty, + MD5 = string.Empty, + RIPEMD128 = string.Empty, + RIPEMD160 = string.Empty, + SHA1 = string.Empty, + SHA256 = string.Empty, + SHA384 = "XXXXXX", + SHA512 = string.Empty, + SpamSum = string.Empty + }; bool actual = self.HasHashes(); Assert.True(actual); @@ -324,20 +348,22 @@ namespace SabreTools.Metadata.DatItems.Formats.Test [Fact] public void HasHashes_SHA512_True() { - Rom self = new Rom(); - self.Write(Data.Models.Metadata.Rom.CRC16Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.CRCKey, string.Empty); - self.Write(Data.Models.Metadata.Rom.CRC64Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD2Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD4Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD5Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.RIPEMD128Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.RIPEMD160Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA1Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA256Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA384Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA512Key, "XXXXXX"); - self.Write(Data.Models.Metadata.Rom.SpamSumKey, string.Empty); + Rom self = new Rom + { + CRC16 = string.Empty, + CRC = string.Empty, + CRC64 = string.Empty, + MD2 = string.Empty, + MD4 = string.Empty, + MD5 = string.Empty, + RIPEMD128 = string.Empty, + RIPEMD160 = string.Empty, + SHA1 = string.Empty, + SHA256 = string.Empty, + SHA384 = string.Empty, + SHA512 = "XXXXXX", + SpamSum = string.Empty + }; bool actual = self.HasHashes(); Assert.True(actual); @@ -346,20 +372,22 @@ namespace SabreTools.Metadata.DatItems.Formats.Test [Fact] public void HasHashes_SpamSum_True() { - Rom self = new Rom(); - self.Write(Data.Models.Metadata.Rom.CRC16Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.CRCKey, string.Empty); - self.Write(Data.Models.Metadata.Rom.CRC64Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD2Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD4Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD5Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.RIPEMD128Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.RIPEMD160Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA1Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA256Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA384Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA512Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SpamSumKey, "XXXXXX"); + Rom self = new Rom + { + CRC16 = string.Empty, + CRC = string.Empty, + CRC64 = string.Empty, + MD2 = string.Empty, + MD4 = string.Empty, + MD5 = string.Empty, + RIPEMD128 = string.Empty, + RIPEMD160 = string.Empty, + SHA1 = string.Empty, + SHA256 = string.Empty, + SHA384 = string.Empty, + SHA512 = string.Empty, + SpamSum = "XXXXXX" + }; bool actual = self.HasHashes(); Assert.True(actual); @@ -368,20 +396,22 @@ namespace SabreTools.Metadata.DatItems.Formats.Test [Fact] public void HasHashes_All_True() { - Rom self = new Rom(); - self.Write(Data.Models.Metadata.Rom.CRC16Key, "XXXXXX"); - self.Write(Data.Models.Metadata.Rom.CRCKey, "XXXXXX"); - self.Write(Data.Models.Metadata.Rom.CRC64Key, "XXXXXX"); - self.Write(Data.Models.Metadata.Rom.MD2Key, "XXXXXX"); - self.Write(Data.Models.Metadata.Rom.MD4Key, "XXXXXX"); - self.Write(Data.Models.Metadata.Rom.MD5Key, "XXXXXX"); - self.Write(Data.Models.Metadata.Rom.RIPEMD128Key, "XXXXXX"); - self.Write(Data.Models.Metadata.Rom.RIPEMD160Key, "XXXXXX"); - self.Write(Data.Models.Metadata.Rom.SHA1Key, "XXXXXX"); - self.Write(Data.Models.Metadata.Rom.SHA256Key, "XXXXXX"); - self.Write(Data.Models.Metadata.Rom.SHA384Key, "XXXXXX"); - self.Write(Data.Models.Metadata.Rom.SHA512Key, "XXXXXX"); - self.Write(Data.Models.Metadata.Rom.SpamSumKey, "XXXXXX"); + Rom self = new Rom + { + CRC16 = "XXXXXX", + CRC = "XXXXXX", + CRC64 = "XXXXXX", + MD2 = "XXXXXX", + MD4 = "XXXXXX", + MD5 = "XXXXXX", + RIPEMD128 = "XXXXXX", + RIPEMD160 = "XXXXXX", + SHA1 = "XXXXXX", + SHA256 = "XXXXXX", + SHA384 = "XXXXXX", + SHA512 = "XXXXXX", + SpamSum = "XXXXXX" + }; bool actual = self.HasHashes(); Assert.True(actual); @@ -402,20 +432,22 @@ namespace SabreTools.Metadata.DatItems.Formats.Test [Fact] public void HasZeroHash_NonZeroHash_False() { - Rom self = new Rom(); - self.Write(Data.Models.Metadata.Rom.CRC16Key, "XXXXXX"); - self.Write(Data.Models.Metadata.Rom.CRCKey, "XXXXXX"); - self.Write(Data.Models.Metadata.Rom.CRC64Key, "XXXXXX"); - self.Write(Data.Models.Metadata.Rom.MD2Key, "XXXXXX"); - self.Write(Data.Models.Metadata.Rom.MD4Key, "XXXXXX"); - self.Write(Data.Models.Metadata.Rom.MD5Key, "XXXXXX"); - self.Write(Data.Models.Metadata.Rom.RIPEMD128Key, "XXXXXX"); - self.Write(Data.Models.Metadata.Rom.RIPEMD160Key, "XXXXXX"); - self.Write(Data.Models.Metadata.Rom.SHA1Key, "XXXXXX"); - self.Write(Data.Models.Metadata.Rom.SHA256Key, "XXXXXX"); - self.Write(Data.Models.Metadata.Rom.SHA384Key, "XXXXXX"); - self.Write(Data.Models.Metadata.Rom.SHA512Key, "XXXXXX"); - self.Write(Data.Models.Metadata.Rom.SpamSumKey, "XXXXXX"); + Rom self = new Rom + { + CRC16 = "XXXXXX", + CRC = "XXXXXX", + CRC64 = "XXXXXX", + MD2 = "XXXXXX", + MD4 = "XXXXXX", + MD5 = "XXXXXX", + RIPEMD128 = "XXXXXX", + RIPEMD160 = "XXXXXX", + SHA1 = "XXXXXX", + SHA256 = "XXXXXX", + SHA384 = "XXXXXX", + SHA512 = "XXXXXX", + SpamSum = "XXXXXX" + }; bool actual = self.HasZeroHash(); Assert.False(actual); @@ -424,20 +456,22 @@ namespace SabreTools.Metadata.DatItems.Formats.Test [Fact] public void HasZeroHash_ZeroCRC16_True() { - Rom self = new Rom(); - self.Write(Data.Models.Metadata.Rom.CRC16Key, HashType.CRC16.ZeroString); - self.Write(Data.Models.Metadata.Rom.CRCKey, string.Empty); - self.Write(Data.Models.Metadata.Rom.CRC64Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD2Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD4Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD5Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.RIPEMD128Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.RIPEMD160Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA1Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA256Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA384Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA512Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SpamSumKey, string.Empty); + Rom self = new Rom + { + CRC16 = HashType.CRC16.ZeroString, + CRC = string.Empty, + CRC64 = string.Empty, + MD2 = string.Empty, + MD4 = string.Empty, + MD5 = string.Empty, + RIPEMD128 = string.Empty, + RIPEMD160 = string.Empty, + SHA1 = string.Empty, + SHA256 = string.Empty, + SHA384 = string.Empty, + SHA512 = string.Empty, + SpamSum = string.Empty + }; bool actual = self.HasZeroHash(); Assert.True(actual); @@ -446,20 +480,22 @@ namespace SabreTools.Metadata.DatItems.Formats.Test [Fact] public void HasZeroHash_ZeroCRC_True() { - Rom self = new Rom(); - self.Write(Data.Models.Metadata.Rom.CRC16Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.CRCKey, HashType.CRC32.ZeroString); - self.Write(Data.Models.Metadata.Rom.CRC64Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD2Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD4Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD5Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.RIPEMD128Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.RIPEMD160Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA1Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA256Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA384Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA512Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SpamSumKey, string.Empty); + Rom self = new Rom + { + CRC16 = string.Empty, + CRC = HashType.CRC32.ZeroString, + CRC64 = string.Empty, + MD2 = string.Empty, + MD4 = string.Empty, + MD5 = string.Empty, + RIPEMD128 = string.Empty, + RIPEMD160 = string.Empty, + SHA1 = string.Empty, + SHA256 = string.Empty, + SHA384 = string.Empty, + SHA512 = string.Empty, + SpamSum = string.Empty + }; bool actual = self.HasZeroHash(); Assert.True(actual); @@ -468,20 +504,22 @@ namespace SabreTools.Metadata.DatItems.Formats.Test [Fact] public void HasZeroHash_ZeroCRC64_True() { - Rom self = new Rom(); - self.Write(Data.Models.Metadata.Rom.CRC16Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.CRCKey, string.Empty); - self.Write(Data.Models.Metadata.Rom.CRC64Key, HashType.CRC64.ZeroString); - self.Write(Data.Models.Metadata.Rom.MD2Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD4Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD5Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.RIPEMD128Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.RIPEMD160Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA1Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA256Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA384Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA512Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SpamSumKey, string.Empty); + Rom self = new Rom + { + CRC16 = string.Empty, + CRC = string.Empty, + CRC64 = HashType.CRC64.ZeroString, + MD2 = string.Empty, + MD4 = string.Empty, + MD5 = string.Empty, + RIPEMD128 = string.Empty, + RIPEMD160 = string.Empty, + SHA1 = string.Empty, + SHA256 = string.Empty, + SHA384 = string.Empty, + SHA512 = string.Empty, + SpamSum = string.Empty + }; bool actual = self.HasZeroHash(); Assert.True(actual); @@ -490,20 +528,22 @@ namespace SabreTools.Metadata.DatItems.Formats.Test [Fact] public void HasZeroHash_ZeroMD2_True() { - Rom self = new Rom(); - self.Write(Data.Models.Metadata.Rom.CRC16Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.CRCKey, string.Empty); - self.Write(Data.Models.Metadata.Rom.CRC64Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD2Key, HashType.MD2.ZeroString); - self.Write(Data.Models.Metadata.Rom.MD4Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD5Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.RIPEMD128Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.RIPEMD160Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA1Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA256Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA384Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA512Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SpamSumKey, string.Empty); + Rom self = new Rom + { + CRC16 = string.Empty, + CRC = string.Empty, + CRC64 = string.Empty, + MD2 = HashType.MD2.ZeroString, + MD4 = string.Empty, + MD5 = string.Empty, + RIPEMD128 = string.Empty, + RIPEMD160 = string.Empty, + SHA1 = string.Empty, + SHA256 = string.Empty, + SHA384 = string.Empty, + SHA512 = string.Empty, + SpamSum = string.Empty + }; bool actual = self.HasZeroHash(); Assert.True(actual); @@ -512,20 +552,22 @@ namespace SabreTools.Metadata.DatItems.Formats.Test [Fact] public void HasZeroHash_ZeroMD4_True() { - Rom self = new Rom(); - self.Write(Data.Models.Metadata.Rom.CRC16Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.CRCKey, string.Empty); - self.Write(Data.Models.Metadata.Rom.CRC64Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD2Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD4Key, HashType.MD4.ZeroString); - self.Write(Data.Models.Metadata.Rom.MD5Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.RIPEMD128Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.RIPEMD160Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA1Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA256Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA384Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA512Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SpamSumKey, string.Empty); + Rom self = new Rom + { + CRC16 = string.Empty, + CRC = string.Empty, + CRC64 = string.Empty, + MD2 = string.Empty, + MD4 = HashType.MD4.ZeroString, + MD5 = string.Empty, + RIPEMD128 = string.Empty, + RIPEMD160 = string.Empty, + SHA1 = string.Empty, + SHA256 = string.Empty, + SHA384 = string.Empty, + SHA512 = string.Empty, + SpamSum = string.Empty + }; bool actual = self.HasZeroHash(); Assert.True(actual); @@ -534,20 +576,22 @@ namespace SabreTools.Metadata.DatItems.Formats.Test [Fact] public void HasZeroHash_ZeroMD5_True() { - Rom self = new Rom(); - self.Write(Data.Models.Metadata.Rom.CRC16Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.CRCKey, string.Empty); - self.Write(Data.Models.Metadata.Rom.CRC64Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD2Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD4Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD5Key, HashType.MD5.ZeroString); - self.Write(Data.Models.Metadata.Rom.RIPEMD128Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.RIPEMD160Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA1Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA256Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA384Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA512Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SpamSumKey, string.Empty); + Rom self = new Rom + { + CRC16 = string.Empty, + CRC = string.Empty, + CRC64 = string.Empty, + MD2 = string.Empty, + MD4 = string.Empty, + MD5 = HashType.MD5.ZeroString, + RIPEMD128 = string.Empty, + RIPEMD160 = string.Empty, + SHA1 = string.Empty, + SHA256 = string.Empty, + SHA384 = string.Empty, + SHA512 = string.Empty, + SpamSum = string.Empty + }; bool actual = self.HasZeroHash(); Assert.True(actual); @@ -556,20 +600,22 @@ namespace SabreTools.Metadata.DatItems.Formats.Test [Fact] public void HasZeroHash_ZeroRIPEMD128_True() { - Rom self = new Rom(); - self.Write(Data.Models.Metadata.Rom.CRC16Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.CRCKey, string.Empty); - self.Write(Data.Models.Metadata.Rom.CRC64Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD2Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD4Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD5Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.RIPEMD128Key, HashType.RIPEMD128.ZeroString); - self.Write(Data.Models.Metadata.Rom.RIPEMD160Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA1Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA256Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA384Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA512Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SpamSumKey, string.Empty); + Rom self = new Rom + { + CRC16 = string.Empty, + CRC = string.Empty, + CRC64 = string.Empty, + MD2 = string.Empty, + MD4 = string.Empty, + MD5 = string.Empty, + RIPEMD128 = HashType.RIPEMD128.ZeroString, + RIPEMD160 = string.Empty, + SHA1 = string.Empty, + SHA256 = string.Empty, + SHA384 = string.Empty, + SHA512 = string.Empty, + SpamSum = string.Empty + }; bool actual = self.HasZeroHash(); Assert.True(actual); @@ -578,20 +624,22 @@ namespace SabreTools.Metadata.DatItems.Formats.Test [Fact] public void HasZeroHash_ZeroRIPEMD160_True() { - Rom self = new Rom(); - self.Write(Data.Models.Metadata.Rom.CRC16Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.CRCKey, string.Empty); - self.Write(Data.Models.Metadata.Rom.CRC64Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD2Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD4Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD5Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.RIPEMD128Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.RIPEMD160Key, HashType.RIPEMD160.ZeroString); - self.Write(Data.Models.Metadata.Rom.SHA1Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA256Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA384Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA512Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SpamSumKey, string.Empty); + Rom self = new Rom + { + CRC16 = string.Empty, + CRC = string.Empty, + CRC64 = string.Empty, + MD2 = string.Empty, + MD4 = string.Empty, + MD5 = string.Empty, + RIPEMD128 = string.Empty, + RIPEMD160 = HashType.RIPEMD160.ZeroString, + SHA1 = string.Empty, + SHA256 = string.Empty, + SHA384 = string.Empty, + SHA512 = string.Empty, + SpamSum = string.Empty + }; bool actual = self.HasZeroHash(); Assert.True(actual); @@ -600,20 +648,22 @@ namespace SabreTools.Metadata.DatItems.Formats.Test [Fact] public void HasZeroHash_ZeroSHA1_True() { - Rom self = new Rom(); - self.Write(Data.Models.Metadata.Rom.CRC16Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.CRCKey, string.Empty); - self.Write(Data.Models.Metadata.Rom.CRC64Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD2Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD4Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD5Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.RIPEMD128Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.RIPEMD160Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA1Key, HashType.SHA1.ZeroString); - self.Write(Data.Models.Metadata.Rom.SHA256Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA384Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA512Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SpamSumKey, string.Empty); + Rom self = new Rom + { + CRC16 = string.Empty, + CRC = string.Empty, + CRC64 = string.Empty, + MD2 = string.Empty, + MD4 = string.Empty, + MD5 = string.Empty, + RIPEMD128 = string.Empty, + RIPEMD160 = string.Empty, + SHA1 = HashType.SHA1.ZeroString, + SHA256 = string.Empty, + SHA384 = string.Empty, + SHA512 = string.Empty, + SpamSum = string.Empty + }; bool actual = self.HasZeroHash(); Assert.True(actual); @@ -622,20 +672,22 @@ namespace SabreTools.Metadata.DatItems.Formats.Test [Fact] public void HasZeroHash_ZeroSHA256_True() { - Rom self = new Rom(); - self.Write(Data.Models.Metadata.Rom.CRC16Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.CRCKey, string.Empty); - self.Write(Data.Models.Metadata.Rom.CRC64Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD2Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD4Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD5Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.RIPEMD128Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.RIPEMD160Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA1Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA256Key, HashType.SHA256.ZeroString); - self.Write(Data.Models.Metadata.Rom.SHA384Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA512Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SpamSumKey, string.Empty); + Rom self = new Rom + { + CRC16 = string.Empty, + CRC = string.Empty, + CRC64 = string.Empty, + MD2 = string.Empty, + MD4 = string.Empty, + MD5 = string.Empty, + RIPEMD128 = string.Empty, + RIPEMD160 = string.Empty, + SHA1 = string.Empty, + SHA256 = HashType.SHA256.ZeroString, + SHA384 = string.Empty, + SHA512 = string.Empty, + SpamSum = string.Empty + }; bool actual = self.HasZeroHash(); Assert.True(actual); @@ -644,20 +696,22 @@ namespace SabreTools.Metadata.DatItems.Formats.Test [Fact] public void HasZeroHash_ZeroSHA384_True() { - Rom self = new Rom(); - self.Write(Data.Models.Metadata.Rom.CRC16Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.CRCKey, string.Empty); - self.Write(Data.Models.Metadata.Rom.CRC64Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD2Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD4Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD5Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.RIPEMD128Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.RIPEMD160Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA1Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA256Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA384Key, HashType.SHA384.ZeroString); - self.Write(Data.Models.Metadata.Rom.SHA512Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SpamSumKey, string.Empty); + Rom self = new Rom + { + CRC16 = string.Empty, + CRC = string.Empty, + CRC64 = string.Empty, + MD2 = string.Empty, + MD4 = string.Empty, + MD5 = string.Empty, + RIPEMD128 = string.Empty, + RIPEMD160 = string.Empty, + SHA1 = string.Empty, + SHA256 = string.Empty, + SHA384 = HashType.SHA384.ZeroString, + SHA512 = string.Empty, + SpamSum = string.Empty + }; bool actual = self.HasZeroHash(); Assert.True(actual); @@ -666,20 +720,22 @@ namespace SabreTools.Metadata.DatItems.Formats.Test [Fact] public void HasZeroHash_ZeroSHA512_True() { - Rom self = new Rom(); - self.Write(Data.Models.Metadata.Rom.CRC16Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.CRCKey, string.Empty); - self.Write(Data.Models.Metadata.Rom.CRC64Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD2Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD4Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD5Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.RIPEMD128Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.RIPEMD160Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA1Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA256Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA384Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA512Key, HashType.SHA512.ZeroString); - self.Write(Data.Models.Metadata.Rom.SpamSumKey, string.Empty); + Rom self = new Rom + { + CRC16 = string.Empty, + CRC = string.Empty, + CRC64 = string.Empty, + MD2 = string.Empty, + MD4 = string.Empty, + MD5 = string.Empty, + RIPEMD128 = string.Empty, + RIPEMD160 = string.Empty, + SHA1 = string.Empty, + SHA256 = string.Empty, + SHA384 = string.Empty, + SHA512 = HashType.SHA512.ZeroString, + SpamSum = string.Empty + }; bool actual = self.HasZeroHash(); Assert.True(actual); @@ -688,20 +744,22 @@ namespace SabreTools.Metadata.DatItems.Formats.Test [Fact] public void HasZeroHash_ZeroSpamSum_True() { - Rom self = new Rom(); - self.Write(Data.Models.Metadata.Rom.CRC16Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.CRCKey, string.Empty); - self.Write(Data.Models.Metadata.Rom.CRC64Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD2Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD4Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.MD5Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.RIPEMD128Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.RIPEMD160Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA1Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA256Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA384Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SHA512Key, string.Empty); - self.Write(Data.Models.Metadata.Rom.SpamSumKey, HashType.SpamSum.ZeroString); + Rom self = new Rom + { + CRC16 = string.Empty, + CRC = string.Empty, + CRC64 = string.Empty, + MD2 = string.Empty, + MD4 = string.Empty, + MD5 = string.Empty, + RIPEMD128 = string.Empty, + RIPEMD160 = string.Empty, + SHA1 = string.Empty, + SHA256 = string.Empty, + SHA384 = string.Empty, + SHA512 = string.Empty, + SpamSum = HashType.SpamSum.ZeroString + }; bool actual = self.HasZeroHash(); Assert.True(actual); @@ -710,20 +768,22 @@ namespace SabreTools.Metadata.DatItems.Formats.Test [Fact] public void HasZeroHash_ZeroAll_True() { - Rom self = new Rom(); - self.Write(Data.Models.Metadata.Rom.CRC16Key, HashType.CRC16.ZeroString); - self.Write(Data.Models.Metadata.Rom.CRCKey, HashType.CRC32.ZeroString); - self.Write(Data.Models.Metadata.Rom.CRC64Key, HashType.CRC64.ZeroString); - self.Write(Data.Models.Metadata.Rom.MD2Key, HashType.MD2.ZeroString); - self.Write(Data.Models.Metadata.Rom.MD4Key, HashType.MD4.ZeroString); - self.Write(Data.Models.Metadata.Rom.MD5Key, HashType.MD5.ZeroString); - self.Write(Data.Models.Metadata.Rom.RIPEMD128Key, HashType.RIPEMD128.ZeroString); - self.Write(Data.Models.Metadata.Rom.RIPEMD160Key, HashType.RIPEMD160.ZeroString); - self.Write(Data.Models.Metadata.Rom.SHA1Key, HashType.SHA1.ZeroString); - self.Write(Data.Models.Metadata.Rom.SHA256Key, HashType.SHA256.ZeroString); - self.Write(Data.Models.Metadata.Rom.SHA384Key, HashType.SHA384.ZeroString); - self.Write(Data.Models.Metadata.Rom.SHA512Key, HashType.SHA512.ZeroString); - self.Write(Data.Models.Metadata.Rom.SpamSumKey, HashType.SpamSum.ZeroString); + Rom self = new Rom + { + CRC16 = HashType.CRC16.ZeroString, + CRC = HashType.CRC32.ZeroString, + CRC64 = HashType.CRC64.ZeroString, + MD2 = HashType.MD2.ZeroString, + MD4 = HashType.MD4.ZeroString, + MD5 = HashType.MD5.ZeroString, + RIPEMD128 = HashType.RIPEMD128.ZeroString, + RIPEMD160 = HashType.RIPEMD160.ZeroString, + SHA1 = HashType.SHA1.ZeroString, + SHA256 = HashType.SHA256.ZeroString, + SHA384 = HashType.SHA384.ZeroString, + SHA512 = HashType.SHA512.ZeroString, + SpamSum = HashType.SpamSum.ZeroString + }; bool actual = self.HasZeroHash(); Assert.True(actual); @@ -801,20 +861,22 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Machine machine = new Machine { Name = "Machine" }; - DatItem datItem = new Rom(); - datItem.Write(Data.Models.Metadata.Rom.CRC16Key, "DEADBEEF"); - datItem.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); - datItem.Write(Data.Models.Metadata.Rom.CRC64Key, "DEADBEEF"); - datItem.Write(Data.Models.Metadata.Rom.MD2Key, "DEADBEEF"); - datItem.Write(Data.Models.Metadata.Rom.MD4Key, "DEADBEEF"); - datItem.Write(Data.Models.Metadata.Rom.MD5Key, "DEADBEEF"); - datItem.Write(Data.Models.Metadata.Rom.RIPEMD128Key, "DEADBEEF"); - datItem.Write(Data.Models.Metadata.Rom.RIPEMD160Key, "DEADBEEF"); - datItem.Write(Data.Models.Metadata.Rom.SHA1Key, "DEADBEEF"); - datItem.Write(Data.Models.Metadata.Rom.SHA256Key, "DEADBEEF"); - datItem.Write(Data.Models.Metadata.Rom.SHA384Key, "DEADBEEF"); - datItem.Write(Data.Models.Metadata.Rom.SHA512Key, "DEADBEEF"); - datItem.Write(Data.Models.Metadata.Rom.SpamSumKey, "DEADBEEF"); + DatItem datItem = new Rom + { + CRC16 = "DEADBEEF", + CRC = "DEADBEEF", + CRC64 = "DEADBEEF", + MD2 = "DEADBEEF", + MD4 = "DEADBEEF", + MD5 = "DEADBEEF", + RIPEMD128 = "DEADBEEF", + RIPEMD160 = "DEADBEEF", + SHA1 = "DEADBEEF", + SHA256 = "DEADBEEF", + SHA384 = "DEADBEEF", + SHA512 = "DEADBEEF", + SpamSum = "DEADBEEF" + }; string actual = datItem.GetKey(bucketedBy, machine, source, lower, norename); Assert.Equal(expected, actual); diff --git a/SabreTools.Metadata.DatItems/Formats/File.cs b/SabreTools.Metadata.DatItems/Formats/File.cs index af18a383..94b1f15a 100644 --- a/SabreTools.Metadata.DatItems/Formats/File.cs +++ b/SabreTools.Metadata.DatItems/Formats/File.cs @@ -149,10 +149,10 @@ namespace SabreTools.Metadata.DatItems.Formats rom.Name = $"{Id}.{Extension}"; rom.Size = Size; - rom.Write(Data.Models.Metadata.Rom.CRCKey, CRC); - rom.Write(Data.Models.Metadata.Rom.MD5Key, MD5); - rom.Write(Data.Models.Metadata.Rom.SHA1Key, SHA1); - rom.Write(Data.Models.Metadata.Rom.SHA256Key, SHA256); + rom.CRC = CRC; + rom.MD5 = MD5; + rom.SHA1 = SHA1; + rom.SHA256 = SHA256; rom.DupeType = DupeType; rom.Machine = Machine?.Clone() as Machine; diff --git a/SabreTools.Metadata.DatItems/Formats/Rom.cs b/SabreTools.Metadata.DatItems/Formats/Rom.cs index 511b44b3..1c74c238 100644 --- a/SabreTools.Metadata.DatItems/Formats/Rom.cs +++ b/SabreTools.Metadata.DatItems/Formats/Rom.cs @@ -12,14 +12,110 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("rom"), XmlRoot("rom")] public sealed class Rom : DatItem { - #region Temporary Constants - - public const string OriginalKey = "ORIGINAL"; - - #endregion - #region Properties + public string? Album + { + get => (_internal as Data.Models.Metadata.Rom)?.Album; + set => (_internal as Data.Models.Metadata.Rom)?.Album = value; + } + + public string? AltRomname + { + get => (_internal as Data.Models.Metadata.Rom)?.AltRomname; + set => (_internal as Data.Models.Metadata.Rom)?.AltRomname = value; + } + + public string? AltTitle + { + get => (_internal as Data.Models.Metadata.Rom)?.AltTitle; + set => (_internal as Data.Models.Metadata.Rom)?.AltTitle = value; + } + + public string? Artist + { + get => (_internal as Data.Models.Metadata.Rom)?.Artist; + set => (_internal as Data.Models.Metadata.Rom)?.Artist = value; + } + + public string? ASRDetectedLang + { + get => (_internal as Data.Models.Metadata.Rom)?.ASRDetectedLang; + set => (_internal as Data.Models.Metadata.Rom)?.ASRDetectedLang = value; + } + + public string? ASRDetectedLangConf + { + get => (_internal as Data.Models.Metadata.Rom)?.ASRDetectedLangConf; + set => (_internal as Data.Models.Metadata.Rom)?.ASRDetectedLangConf = value; + } + + public string? ASRTranscribedLang + { + get => (_internal as Data.Models.Metadata.Rom)?.ASRTranscribedLang; + set => (_internal as Data.Models.Metadata.Rom)?.ASRTranscribedLang = value; + } + + public string? Bios + { + get => (_internal as Data.Models.Metadata.Rom)?.Bios; + set => (_internal as Data.Models.Metadata.Rom)?.Bios = value; + } + + public string? Bitrate + { + get => (_internal as Data.Models.Metadata.Rom)?.Bitrate; + set => (_internal as Data.Models.Metadata.Rom)?.Bitrate = value; + } + + public string? BitTorrentMagnetHash + { + get => (_internal as Data.Models.Metadata.Rom)?.BitTorrentMagnetHash; + set => (_internal as Data.Models.Metadata.Rom)?.BitTorrentMagnetHash = value; + } + + public string? ClothCoverDetectionModuleVersion + { + get => (_internal as Data.Models.Metadata.Rom)?.ClothCoverDetectionModuleVersion; + set => (_internal as Data.Models.Metadata.Rom)?.ClothCoverDetectionModuleVersion = value; + } + + public string? CollectionCatalogNumber + { + get => (_internal as Data.Models.Metadata.Rom)?.CollectionCatalogNumber; + set => (_internal as Data.Models.Metadata.Rom)?.CollectionCatalogNumber = value; + } + + public string? Comment + { + get => (_internal as Data.Models.Metadata.Rom)?.Comment; + set => (_internal as Data.Models.Metadata.Rom)?.Comment = value; + } + + public string? CRC + { + get => (_internal as Data.Models.Metadata.Rom)?.CRC; + set => (_internal as Data.Models.Metadata.Rom)?.CRC = value; + } + + public string? CRC16 + { + get => (_internal as Data.Models.Metadata.Rom)?.CRC16; + set => (_internal as Data.Models.Metadata.Rom)?.CRC16 = value; + } + + public string? CRC64 + { + get => (_internal as Data.Models.Metadata.Rom)?.CRC64; + set => (_internal as Data.Models.Metadata.Rom)?.CRC64 = value; + } + + public string? Creator + { + get => (_internal as Data.Models.Metadata.Rom)?.Creator; + set => (_internal as Data.Models.Metadata.Rom)?.Creator = value; + } + public DataArea? DataArea { get; set; } [JsonIgnore] @@ -35,12 +131,24 @@ namespace SabreTools.Metadata.DatItems.Formats } } + public string? Date + { + get => (_internal as Data.Models.Metadata.Rom)?.Date; + set => (_internal as Data.Models.Metadata.Rom)?.Date = value; + } + public bool? Dispose { get => (_internal as Data.Models.Metadata.Rom)?.Dispose; set => (_internal as Data.Models.Metadata.Rom)?.Dispose = value; } + public string? Extension + { + get => (_internal as Data.Models.Metadata.Rom)?.Extension; + set => (_internal as Data.Models.Metadata.Rom)?.Extension = value; + } + public long? FileCount { get => (_internal as Data.Models.Metadata.Rom)?.FileCount; @@ -53,21 +161,123 @@ namespace SabreTools.Metadata.DatItems.Formats set => (_internal as Data.Models.Metadata.Rom)?.FileIsAvailable = value; } + public string? Flags + { + get => (_internal as Data.Models.Metadata.Rom)?.Flags; + set => (_internal as Data.Models.Metadata.Rom)?.Flags = value; + } + + public string? Format + { + get => (_internal as Data.Models.Metadata.Rom)?.Format; + set => (_internal as Data.Models.Metadata.Rom)?.Format = value; + } + + public string? Header + { + get => (_internal as Data.Models.Metadata.Rom)?.Header; + set => (_internal as Data.Models.Metadata.Rom)?.Header = value; + } + + public string? Height + { + get => (_internal as Data.Models.Metadata.Rom)?.Height; + set => (_internal as Data.Models.Metadata.Rom)?.Height = value; + } + + public string? hOCRCharToWordhOCRVersion + { + get => (_internal as Data.Models.Metadata.Rom)?.hOCRCharToWordhOCRVersion; + set => (_internal as Data.Models.Metadata.Rom)?.hOCRCharToWordhOCRVersion = value; + } + + public string? hOCRCharToWordModuleVersion + { + get => (_internal as Data.Models.Metadata.Rom)?.hOCRCharToWordModuleVersion; + set => (_internal as Data.Models.Metadata.Rom)?.hOCRCharToWordModuleVersion = value; + } + + public string? hOCRFtsTexthOCRVersion + { + get => (_internal as Data.Models.Metadata.Rom)?.hOCRFtsTexthOCRVersion; + set => (_internal as Data.Models.Metadata.Rom)?.hOCRFtsTexthOCRVersion = value; + } + + public string? hOCRFtsTextModuleVersion + { + get => (_internal as Data.Models.Metadata.Rom)?.hOCRFtsTextModuleVersion; + set => (_internal as Data.Models.Metadata.Rom)?.hOCRFtsTextModuleVersion = value; + } + + public string? hOCRPageIndexhOCRVersion + { + get => (_internal as Data.Models.Metadata.Rom)?.hOCRPageIndexhOCRVersion; + set => (_internal as Data.Models.Metadata.Rom)?.hOCRPageIndexhOCRVersion = value; + } + + public string? hOCRPageIndexModuleVersion + { + get => (_internal as Data.Models.Metadata.Rom)?.hOCRPageIndexModuleVersion; + set => (_internal as Data.Models.Metadata.Rom)?.hOCRPageIndexModuleVersion = value; + } + public bool? Inverted { get => (_internal as Data.Models.Metadata.Rom)?.Inverted; set => (_internal as Data.Models.Metadata.Rom)?.Inverted = value; } + public string? LastModifiedTime + { + get => (_internal as Data.Models.Metadata.Rom)?.LastModifiedTime; + set => (_internal as Data.Models.Metadata.Rom)?.LastModifiedTime = value; + } + /// /> public override ItemType ItemType => ItemType.Rom; + public string? Length + { + get => (_internal as Data.Models.Metadata.Rom)?.Length; + set => (_internal as Data.Models.Metadata.Rom)?.Length = value; + } + public LoadFlag? LoadFlag { get => (_internal as Data.Models.Metadata.Rom)?.LoadFlag; set => (_internal as Data.Models.Metadata.Rom)?.LoadFlag = value; } + public string? MatrixNumber + { + get => (_internal as Data.Models.Metadata.Rom)?.MatrixNumber; + set => (_internal as Data.Models.Metadata.Rom)?.MatrixNumber = value; + } + + public string? MD2 + { + get => (_internal as Data.Models.Metadata.Rom)?.MD2; + set => (_internal as Data.Models.Metadata.Rom)?.MD2 = value; + } + + public string? MD4 + { + get => (_internal as Data.Models.Metadata.Rom)?.MD4; + set => (_internal as Data.Models.Metadata.Rom)?.MD4 = value; + } + + public string? MD5 + { + get => (_internal as Data.Models.Metadata.Rom)?.MD5; + set => (_internal as Data.Models.Metadata.Rom)?.MD5 = value; + } + + public string? Merge + { + get => (_internal as Data.Models.Metadata.Rom)?.Merge; + set => (_internal as Data.Models.Metadata.Rom)?.Merge = value; + } + public bool? MIA { get => (_internal as Data.Models.Metadata.Rom)?.MIA; @@ -80,28 +290,41 @@ namespace SabreTools.Metadata.DatItems.Formats set => (_internal as Data.Models.Metadata.Rom)?.Name = value; } + public string? Offset + { + get => (_internal as Data.Models.Metadata.Rom)?.Offset; + set => (_internal as Data.Models.Metadata.Rom)?.Offset = value; + } + + public string? OpenMSXType + { + get => (_internal as Data.Models.Metadata.Rom)?.OpenMSXType; + set => (_internal as Data.Models.Metadata.Rom)?.OpenMSXType = value; + } + public OpenMSXSubType? OpenMSXMediaType { get => (_internal as Data.Models.Metadata.Rom)?.OpenMSXMediaType; set => (_internal as Data.Models.Metadata.Rom)?.OpenMSXMediaType = value; } + public Original? Original { get; set; } + + public string? OriginalProperty + { + get => (_internal as Data.Models.Metadata.Rom)?.Original; + set => (_internal as Data.Models.Metadata.Rom)?.Original = value; + } + + [JsonIgnore] + public bool OriginalSpecified => Original is not null; + public bool? Optional { get => (_internal as Data.Models.Metadata.Rom)?.Optional; set => (_internal as Data.Models.Metadata.Rom)?.Optional = value; } - [JsonIgnore] - public bool OriginalSpecified - { - get - { - var original = Read(OriginalKey); - return original is not null && original != default; - } - } - public Part? Part { get; set; } [JsonIgnore] @@ -115,6 +338,84 @@ namespace SabreTools.Metadata.DatItems.Formats } } + public string? PDFModuleVersion + { + get => (_internal as Data.Models.Metadata.Rom)?.PDFModuleVersion; + set => (_internal as Data.Models.Metadata.Rom)?.PDFModuleVersion = value; + } + + public string? PreviewImage + { + get => (_internal as Data.Models.Metadata.Rom)?.PreviewImage; + set => (_internal as Data.Models.Metadata.Rom)?.PreviewImage = value; + } + + public string? Publisher + { + get => (_internal as Data.Models.Metadata.Rom)?.Publisher; + set => (_internal as Data.Models.Metadata.Rom)?.Publisher = value; + } + + public string? Region + { + get => (_internal as Data.Models.Metadata.Rom)?.Region; + set => (_internal as Data.Models.Metadata.Rom)?.Region = value; + } + + public string? Remark + { + get => (_internal as Data.Models.Metadata.Rom)?.Remark; + set => (_internal as Data.Models.Metadata.Rom)?.Remark = value; + } + + public string? RIPEMD128 + { + get => (_internal as Data.Models.Metadata.Rom)?.RIPEMD128; + set => (_internal as Data.Models.Metadata.Rom)?.RIPEMD128 = value; + } + + public string? RIPEMD160 + { + get => (_internal as Data.Models.Metadata.Rom)?.RIPEMD160; + set => (_internal as Data.Models.Metadata.Rom)?.RIPEMD160 = value; + } + + public string? Rotation + { + get => (_internal as Data.Models.Metadata.Rom)?.Rotation; + set => (_internal as Data.Models.Metadata.Rom)?.Rotation = value; + } + + public string? Serial + { + get => (_internal as Data.Models.Metadata.Rom)?.Serial; + set => (_internal as Data.Models.Metadata.Rom)?.Serial = value; + } + + public string? SHA1 + { + get => (_internal as Data.Models.Metadata.Rom)?.SHA1; + set => (_internal as Data.Models.Metadata.Rom)?.SHA1 = value; + } + + public string? SHA256 + { + get => (_internal as Data.Models.Metadata.Rom)?.SHA256; + set => (_internal as Data.Models.Metadata.Rom)?.SHA256 = value; + } + + public string? SHA384 + { + get => (_internal as Data.Models.Metadata.Rom)?.SHA384; + set => (_internal as Data.Models.Metadata.Rom)?.SHA384 = value; + } + + public string? SHA512 + { + get => (_internal as Data.Models.Metadata.Rom)?.SHA512; + set => (_internal as Data.Models.Metadata.Rom)?.SHA512 = value; + } + public long? Size { get => (_internal as Data.Models.Metadata.Rom)?.Size; @@ -127,18 +428,204 @@ namespace SabreTools.Metadata.DatItems.Formats set => (_internal as Data.Models.Metadata.Rom)?.SoundOnly = value; } + public string? SourceProperty + { + get => (_internal as Data.Models.Metadata.Rom)?.Source; + set => (_internal as Data.Models.Metadata.Rom)?.Source = value; + } + + public string? SpamSum + { + get => (_internal as Data.Models.Metadata.Rom)?.SpamSum; + set => (_internal as Data.Models.Metadata.Rom)?.SpamSum = value; + } + + public string? Start + { + get => (_internal as Data.Models.Metadata.Rom)?.Start; + set => (_internal as Data.Models.Metadata.Rom)?.Start = value; + } + public ItemStatus? Status { get => (_internal as Data.Models.Metadata.Rom)?.Status; set => (_internal as Data.Models.Metadata.Rom)?.Status = value; } + public string? Summation + { + get => (_internal as Data.Models.Metadata.Rom)?.Summation; + set => (_internal as Data.Models.Metadata.Rom)?.Summation = value; + } + + public string? TesseractOCR + { + get => (_internal as Data.Models.Metadata.Rom)?.TesseractOCR; + set => (_internal as Data.Models.Metadata.Rom)?.TesseractOCR = value; + } + + public string? TesseractOCRConverted + { + get => (_internal as Data.Models.Metadata.Rom)?.TesseractOCRConverted; + set => (_internal as Data.Models.Metadata.Rom)?.TesseractOCRConverted = value; + } + + public string? TesseractOCRDetectedLang + { + get => (_internal as Data.Models.Metadata.Rom)?.TesseractOCRDetectedLang; + set => (_internal as Data.Models.Metadata.Rom)?.TesseractOCRDetectedLang = value; + } + + public string? TesseractOCRDetectedLangConf + { + get => (_internal as Data.Models.Metadata.Rom)?.TesseractOCRDetectedLangConf; + set => (_internal as Data.Models.Metadata.Rom)?.TesseractOCRDetectedLangConf = value; + } + + public string? TesseractOCRDetectedScript + { + get => (_internal as Data.Models.Metadata.Rom)?.TesseractOCRDetectedScript; + set => (_internal as Data.Models.Metadata.Rom)?.TesseractOCRDetectedScript = value; + } + + public string? TesseractOCRDetectedScriptConf + { + get => (_internal as Data.Models.Metadata.Rom)?.TesseractOCRDetectedScriptConf; + set => (_internal as Data.Models.Metadata.Rom)?.TesseractOCRDetectedScriptConf = value; + } + + public string? TesseractOCRModuleVersion + { + get => (_internal as Data.Models.Metadata.Rom)?.TesseractOCRModuleVersion; + set => (_internal as Data.Models.Metadata.Rom)?.TesseractOCRModuleVersion = value; + } + + public string? TesseractOCRParameters + { + get => (_internal as Data.Models.Metadata.Rom)?.TesseractOCRParameters; + set => (_internal as Data.Models.Metadata.Rom)?.TesseractOCRParameters = value; + } + + public string? Title + { + get => (_internal as Data.Models.Metadata.Rom)?.Title; + set => (_internal as Data.Models.Metadata.Rom)?.Title = value; + } + + public string? Track + { + get => (_internal as Data.Models.Metadata.Rom)?.Track; + set => (_internal as Data.Models.Metadata.Rom)?.Track = value; + } + public string? Value { get => (_internal as Data.Models.Metadata.Rom)?.Value; set => (_internal as Data.Models.Metadata.Rom)?.Value = value; } + public string? WhisperASRModuleVersion + { + get => (_internal as Data.Models.Metadata.Rom)?.WhisperASRModuleVersion; + set => (_internal as Data.Models.Metadata.Rom)?.WhisperASRModuleVersion = value; + } + + public string? WhisperModelHash + { + get => (_internal as Data.Models.Metadata.Rom)?.WhisperModelHash; + set => (_internal as Data.Models.Metadata.Rom)?.WhisperModelHash = value; + } + + public string? WhisperModelName + { + get => (_internal as Data.Models.Metadata.Rom)?.WhisperModelName; + set => (_internal as Data.Models.Metadata.Rom)?.WhisperModelName = value; + } + + public string? WhisperVersion + { + get => (_internal as Data.Models.Metadata.Rom)?.WhisperVersion; + set => (_internal as Data.Models.Metadata.Rom)?.WhisperVersion = value; + } + + public string? Width + { + get => (_internal as Data.Models.Metadata.Rom)?.Width; + set => (_internal as Data.Models.Metadata.Rom)?.Width = value; + } + + public string? WordConfidenceInterval0To10 + { + get => (_internal as Data.Models.Metadata.Rom)?.WordConfidenceInterval0To10; + set => (_internal as Data.Models.Metadata.Rom)?.WordConfidenceInterval0To10 = value; + } + + public string? WordConfidenceInterval11To20 + { + get => (_internal as Data.Models.Metadata.Rom)?.WordConfidenceInterval11To20; + set => (_internal as Data.Models.Metadata.Rom)?.WordConfidenceInterval11To20 = value; + } + + public string? WordConfidenceInterval21To30 + { + get => (_internal as Data.Models.Metadata.Rom)?.WordConfidenceInterval21To30; + set => (_internal as Data.Models.Metadata.Rom)?.WordConfidenceInterval21To30 = value; + } + + public string? WordConfidenceInterval31To40 + { + get => (_internal as Data.Models.Metadata.Rom)?.WordConfidenceInterval31To40; + set => (_internal as Data.Models.Metadata.Rom)?.WordConfidenceInterval31To40 = value; + } + + public string? WordConfidenceInterval41To50 + { + get => (_internal as Data.Models.Metadata.Rom)?.WordConfidenceInterval41To50; + set => (_internal as Data.Models.Metadata.Rom)?.WordConfidenceInterval41To50 = value; + } + + public string? WordConfidenceInterval51To60 + { + get => (_internal as Data.Models.Metadata.Rom)?.WordConfidenceInterval51To60; + set => (_internal as Data.Models.Metadata.Rom)?.WordConfidenceInterval51To60 = value; + } + + public string? WordConfidenceInterval61To70 + { + get => (_internal as Data.Models.Metadata.Rom)?.WordConfidenceInterval61To70; + set => (_internal as Data.Models.Metadata.Rom)?.WordConfidenceInterval61To70 = value; + } + + public string? WordConfidenceInterval71To80 + { + get => (_internal as Data.Models.Metadata.Rom)?.WordConfidenceInterval71To80; + set => (_internal as Data.Models.Metadata.Rom)?.WordConfidenceInterval71To80 = value; + } + + public string? WordConfidenceInterval81To90 + { + get => (_internal as Data.Models.Metadata.Rom)?.WordConfidenceInterval81To90; + set => (_internal as Data.Models.Metadata.Rom)?.WordConfidenceInterval81To90 = value; + } + + public string? WordConfidenceInterval91To100 + { + get => (_internal as Data.Models.Metadata.Rom)?.WordConfidenceInterval91To100; + set => (_internal as Data.Models.Metadata.Rom)?.WordConfidenceInterval91To100 = value; + } + + public string? xxHash364 + { + get => (_internal as Data.Models.Metadata.Rom)?.xxHash364; + set => (_internal as Data.Models.Metadata.Rom)?.xxHash364 = value; + } + + public string? xxHash3128 + { + get => (_internal as Data.Models.Metadata.Rom)?.xxHash3128; + set => (_internal as Data.Models.Metadata.Rom)?.xxHash3128 = value; + } + #endregion #region Constructors @@ -175,79 +662,79 @@ namespace SabreTools.Metadata.DatItems.Formats if (rom is null) return; - string name = $"{machine.Name}_{index++}{(!string.IsNullOrEmpty(rom!.ReadString(Data.Models.Metadata.Rom.RemarkKey)) ? $" {rom.ReadString(Data.Models.Metadata.Rom.RemarkKey)}" : string.Empty)}"; + string name = $"{machine.Name}_{index++}{(!string.IsNullOrEmpty(rom!.Remark) ? $" {rom.Remark}" : string.Empty)}"; Name = name; - Write(Data.Models.Metadata.Rom.OffsetKey, rom.ReadString(Data.Models.Metadata.Rom.StartKey)); + Offset = rom.Start; OpenMSXMediaType = subType; - Write(Data.Models.Metadata.Rom.OpenMSXType, rom.ReadString(Data.Models.Metadata.Rom.OpenMSXType) ?? rom.ItemType.ToString()); - Write(Data.Models.Metadata.Rom.RemarkKey, rom.ReadString(Data.Models.Metadata.Rom.RemarkKey)); - Write(Data.Models.Metadata.Rom.SHA1Key, rom.ReadString(Data.Models.Metadata.Rom.SHA1Key)); - Write(Data.Models.Metadata.Rom.StartKey, rom.ReadString(Data.Models.Metadata.Rom.StartKey)); + OpenMSXType = rom.ItemType.ToString(); + Remark = rom.Remark; + SHA1 = rom.SHA1; + Start = rom.Start; Source = source; var original = item.Original; if (original is not null) { - Write(OriginalKey, new Original + Original = new Original { Value = original.Value, Content = original.Content, - }); + }; } CopyMachineInformation(machine); // Process hash values // TODO: This should be normalized to CRC-16 - string? crc16 = ReadString(Data.Models.Metadata.Rom.CRC16Key); + string? crc16 = CRC16; if (crc16 is not null) - Write(Data.Models.Metadata.Rom.CRC16Key, NormalizeHashData(crc16, 4)); + CRC16 = NormalizeHashData(crc16, 4); - string? crc = ReadString(Data.Models.Metadata.Rom.CRCKey); + string? crc = CRC; if (crc is not null) - Write(Data.Models.Metadata.Rom.CRCKey, TextHelper.NormalizeCRC32(crc)); + CRC = TextHelper.NormalizeCRC32(crc); // TODO: This should be normalized to CRC-64 - string? crc64 = ReadString(Data.Models.Metadata.Rom.CRC64Key); + string? crc64 = CRC64; if (crc64 is not null) - Write(Data.Models.Metadata.Rom.CRC64Key, NormalizeHashData(crc64, 16)); + CRC64 = NormalizeHashData(crc64, 16); - string? md2 = ReadString(Data.Models.Metadata.Rom.MD2Key); + string? md2 = MD2; if (md2 is not null) - Write(Data.Models.Metadata.Rom.MD2Key, TextHelper.NormalizeMD2(md2)); + MD2 = TextHelper.NormalizeMD2(md2); - string? md4 = ReadString(Data.Models.Metadata.Rom.MD4Key); + string? md4 = MD4; if (md4 is not null) - Write(Data.Models.Metadata.Rom.MD4Key, TextHelper.NormalizeMD5(md4)); + MD4 = TextHelper.NormalizeMD5(md4); - string? md5 = ReadString(Data.Models.Metadata.Rom.MD5Key); + string? md5 = MD5; if (md5 is not null) - Write(Data.Models.Metadata.Rom.MD5Key, TextHelper.NormalizeMD5(md5)); + MD5 = TextHelper.NormalizeMD5(md5); - string? ripemd128 = ReadString(Data.Models.Metadata.Rom.RIPEMD128Key); + string? ripemd128 = RIPEMD128; if (ripemd128 is not null) - Write(Data.Models.Metadata.Rom.RIPEMD128Key, TextHelper.NormalizeRIPEMD128(ripemd128)); + RIPEMD128 = TextHelper.NormalizeRIPEMD128(ripemd128); - string? ripemd160 = ReadString(Data.Models.Metadata.Rom.RIPEMD160Key); + string? ripemd160 = RIPEMD160; if (ripemd160 is not null) - Write(Data.Models.Metadata.Rom.RIPEMD160Key, TextHelper.NormalizeRIPEMD160(ripemd160)); + RIPEMD160 = TextHelper.NormalizeRIPEMD160(ripemd160); - string? sha1 = ReadString(Data.Models.Metadata.Rom.SHA1Key); + string? sha1 = SHA1; if (sha1 is not null) - Write(Data.Models.Metadata.Rom.SHA1Key, TextHelper.NormalizeSHA1(sha1)); + SHA1 = TextHelper.NormalizeSHA1(sha1); - string? sha256 = ReadString(Data.Models.Metadata.Rom.SHA256Key); + string? sha256 = SHA256; if (sha256 is not null) - Write(Data.Models.Metadata.Rom.SHA256Key, TextHelper.NormalizeSHA256(sha256)); + SHA256 = TextHelper.NormalizeSHA256(sha256); - string? sha384 = ReadString(Data.Models.Metadata.Rom.SHA384Key); + string? sha384 = SHA384; if (sha384 is not null) - Write(Data.Models.Metadata.Rom.SHA384Key, TextHelper.NormalizeSHA384(sha384)); + SHA384 = TextHelper.NormalizeSHA384(sha384); - string? sha512 = ReadString(Data.Models.Metadata.Rom.SHA512Key); + string? sha512 = SHA512; if (sha512 is not null) - Write(Data.Models.Metadata.Rom.SHA512Key, TextHelper.NormalizeSHA512(sha512)); + SHA512 = TextHelper.NormalizeSHA512(sha512); } public Rom(Data.Models.Metadata.Rom item) : base(item) @@ -256,54 +743,54 @@ namespace SabreTools.Metadata.DatItems.Formats // Process hash values // TODO: This should be normalized to CRC-16 - string? crc16 = ReadString(Data.Models.Metadata.Rom.CRC16Key); + string? crc16 = CRC16; if (crc16 is not null) - Write(Data.Models.Metadata.Rom.CRC16Key, NormalizeHashData(crc16, 4)); + CRC16 = NormalizeHashData(crc16, 4); - string? crc = ReadString(Data.Models.Metadata.Rom.CRCKey); + string? crc = CRC; if (crc is not null) - Write(Data.Models.Metadata.Rom.CRCKey, TextHelper.NormalizeCRC32(crc)); + CRC = TextHelper.NormalizeCRC32(crc); // TODO: This should be normalized to CRC-64 - string? crc64 = ReadString(Data.Models.Metadata.Rom.CRC64Key); + string? crc64 = CRC64; if (crc64 is not null) - Write(Data.Models.Metadata.Rom.CRC64Key, NormalizeHashData(crc64, 16)); + CRC64 = NormalizeHashData(crc64, 16); - string? md2 = ReadString(Data.Models.Metadata.Rom.MD2Key); + string? md2 = MD2; if (md2 is not null) - Write(Data.Models.Metadata.Rom.MD2Key, TextHelper.NormalizeMD2(md2)); + MD2 = TextHelper.NormalizeMD2(md2); - string? md4 = ReadString(Data.Models.Metadata.Rom.MD4Key); + string? md4 = MD4; if (md4 is not null) - Write(Data.Models.Metadata.Rom.MD4Key, TextHelper.NormalizeMD5(md4)); + MD4 = TextHelper.NormalizeMD5(md4); - string? md5 = ReadString(Data.Models.Metadata.Rom.MD5Key); + string? md5 = MD5; if (md5 is not null) - Write(Data.Models.Metadata.Rom.MD5Key, TextHelper.NormalizeMD5(md5)); + MD5 = TextHelper.NormalizeMD5(md5); - string? ripemd128 = ReadString(Data.Models.Metadata.Rom.RIPEMD128Key); + string? ripemd128 = RIPEMD128; if (ripemd128 is not null) - Write(Data.Models.Metadata.Rom.RIPEMD128Key, TextHelper.NormalizeRIPEMD128(ripemd128)); + RIPEMD128 = TextHelper.NormalizeRIPEMD128(ripemd128); - string? ripemd160 = ReadString(Data.Models.Metadata.Rom.RIPEMD160Key); + string? ripemd160 = RIPEMD160; if (ripemd160 is not null) - Write(Data.Models.Metadata.Rom.RIPEMD160Key, TextHelper.NormalizeRIPEMD160(ripemd160)); + RIPEMD160 = TextHelper.NormalizeRIPEMD160(ripemd160); - string? sha1 = ReadString(Data.Models.Metadata.Rom.SHA1Key); + string? sha1 = SHA1; if (sha1 is not null) - Write(Data.Models.Metadata.Rom.SHA1Key, TextHelper.NormalizeSHA1(sha1)); + SHA1 = TextHelper.NormalizeSHA1(sha1); - string? sha256 = ReadString(Data.Models.Metadata.Rom.SHA256Key); + string? sha256 = SHA256; if (sha256 is not null) - Write(Data.Models.Metadata.Rom.SHA256Key, TextHelper.NormalizeSHA256(sha256)); + SHA256 = TextHelper.NormalizeSHA256(sha256); - string? sha384 = ReadString(Data.Models.Metadata.Rom.SHA384Key); + string? sha384 = SHA384; if (sha384 is not null) - Write(Data.Models.Metadata.Rom.SHA384Key, TextHelper.NormalizeSHA384(sha384)); + SHA384 = TextHelper.NormalizeSHA384(sha384); - string? sha512 = ReadString(Data.Models.Metadata.Rom.SHA512Key); + string? sha512 = SHA512; if (sha512 is not null) - Write(Data.Models.Metadata.Rom.SHA512Key, TextHelper.NormalizeSHA512(sha512)); + SHA512 = TextHelper.NormalizeSHA512(sha512); } public Rom(Data.Models.Metadata.Rom item, Machine machine, Source source) : this(item) @@ -512,55 +999,55 @@ namespace SabreTools.Metadata.DatItems.Formats switch (bucketedBy) { case ItemKey.CRC16: - key = ReadString(Data.Models.Metadata.Rom.CRC16Key); + key = CRC16; break; case ItemKey.CRC: - key = ReadString(Data.Models.Metadata.Rom.CRCKey); + key = CRC; break; case ItemKey.CRC64: - key = ReadString(Data.Models.Metadata.Rom.CRC64Key); + key = CRC64; break; case ItemKey.MD2: - key = ReadString(Data.Models.Metadata.Rom.MD2Key); + key = MD2; break; case ItemKey.MD4: - key = ReadString(Data.Models.Metadata.Rom.MD4Key); + key = MD4; break; case ItemKey.MD5: - key = ReadString(Data.Models.Metadata.Rom.MD5Key); + key = MD5; break; case ItemKey.RIPEMD128: - key = ReadString(Data.Models.Metadata.Rom.RIPEMD128Key); + key = RIPEMD128; break; case ItemKey.RIPEMD160: - key = ReadString(Data.Models.Metadata.Rom.RIPEMD160Key); + key = RIPEMD160; break; case ItemKey.SHA1: - key = ReadString(Data.Models.Metadata.Rom.SHA1Key); + key = SHA1; break; case ItemKey.SHA256: - key = ReadString(Data.Models.Metadata.Rom.SHA256Key); + key = SHA256; break; case ItemKey.SHA384: - key = ReadString(Data.Models.Metadata.Rom.SHA384Key); + key = SHA384; break; case ItemKey.SHA512: - key = ReadString(Data.Models.Metadata.Rom.SHA512Key); + key = SHA512; break; case ItemKey.SpamSum: - key = ReadString(Data.Models.Metadata.Rom.SpamSumKey); + key = SpamSum; break; // Let the base handle generic stuff diff --git a/SabreTools.Metadata.Filter.Test/FilterRunnerTests.cs b/SabreTools.Metadata.Filter.Test/FilterRunnerTests.cs index 29e258fe..303c1305 100644 --- a/SabreTools.Metadata.Filter.Test/FilterRunnerTests.cs +++ b/SabreTools.Metadata.Filter.Test/FilterRunnerTests.cs @@ -168,7 +168,7 @@ namespace SabreTools.Metadata.Filter.Test DatItem datItem = new Rom { Name = "name", - [Rom.CRCKey] = null, + CRC = null, }; bool actual = _filterRunner.Run(datItem); @@ -181,7 +181,7 @@ namespace SabreTools.Metadata.Filter.Test DatItem datItem = new Rom { Name = "name", - [Rom.CRCKey] = "", + CRC = "", }; bool actual = _filterRunner.Run(datItem); @@ -194,7 +194,7 @@ namespace SabreTools.Metadata.Filter.Test DatItem datItem = new Rom { Name = "name", - [Rom.CRCKey] = "NO_MATCH", + CRC = "NO_MATCH", }; bool actual = _filterRunner.Run(datItem); @@ -207,7 +207,7 @@ namespace SabreTools.Metadata.Filter.Test DatItem datItem = new Rom { Name = "name", - [Rom.CRCKey] = "crc", + CRC = "crc", }; bool actual = _filterRunner.Run(datItem); diff --git a/SabreTools.Metadata.Filter/FilterObject.cs b/SabreTools.Metadata.Filter/FilterObject.cs index e040019f..08861adb 100644 --- a/SabreTools.Metadata.Filter/FilterObject.cs +++ b/SabreTools.Metadata.Filter/FilterObject.cs @@ -1215,45 +1215,294 @@ namespace SabreTools.Metadata.Filter checkValue = item.Tool; return true; + case Rom item when fieldName == "album": + checkValue = item.Album; + return true; + case Rom item when fieldName == "altromname": + checkValue = item.AltRomname; + return true; + case Rom item when fieldName == "alttitle": + checkValue = item.AltTitle; + return true; + case Rom item when fieldName == "artist": + checkValue = item.Artist; + return true; + case Rom item when fieldName == "asrdetectedlang": + checkValue = item.ASRDetectedLang; + return true; + case Rom item when fieldName == "asrdetectedlangconf": + checkValue = item.ASRDetectedLangConf; + return true; + case Rom item when fieldName == "asrtranscribedlang": + checkValue = item.ASRTranscribedLang; + return true; + case Rom item when fieldName == "bios": + checkValue = item.Bios; + return true; + case Rom item when fieldName == "bitrate": + checkValue = item.Bitrate; + return true; + case Rom item when fieldName == "bittorrentmagnethash": + checkValue = item.BitTorrentMagnetHash; + return true; + case Rom item when fieldName == "clothcoverdetectionmoduleversion": + checkValue = item.ClothCoverDetectionModuleVersion; + return true; + case Rom item when fieldName == "collectioncatalognumber": + checkValue = item.CollectionCatalogNumber; + return true; + case Rom item when fieldName == "comment": + checkValue = item.Comment; + return true; + case Rom item when fieldName == "crc": + checkValue = item.CRC; + return true; + case Rom item when fieldName == "crc16": + checkValue = item.CRC16; + return true; + case Rom item when fieldName == "crc64": + checkValue = item.CRC64; + return true; + case Rom item when fieldName == "creator": + checkValue = item.Creator; + return true; + case Rom item when fieldName == "date": + checkValue = item.Date; + return true; case Rom item when fieldName == "dispose": checkValue = item.Dispose.FromYesNo(); return true; + case Rom item when fieldName == "extension": + checkValue = item.Extension; + return true; case Rom item when fieldName == "filecount": checkValue = item.FileCount?.ToString(); return true; case Rom item when fieldName == "fileisavailable": checkValue = item.FileIsAvailable.FromYesNo(); return true; + case Rom item when fieldName == "flags": + checkValue = item.Flags; + return true; + case Rom item when fieldName == "format": + checkValue = item.Format; + return true; + case Rom item when fieldName == "header": + checkValue = item.Header; + return true; + case Rom item when fieldName == "height": + checkValue = item.Height; + return true; + case Rom item when fieldName == "hocrchartowordhocrversion": + checkValue = item.hOCRCharToWordhOCRVersion; + return true; + case Rom item when fieldName == "hocrchartowordmoduleversion": + checkValue = item.hOCRCharToWordModuleVersion; + return true; + case Rom item when fieldName == "hocrftstexthocrversion": + checkValue = item.hOCRFtsTexthOCRVersion; + return true; + case Rom item when fieldName == "hocrftstextmoduleversion": + checkValue = item.hOCRFtsTextModuleVersion; + return true; + case Rom item when fieldName == "hocrpageindexhocrversion": + checkValue = item.hOCRPageIndexhOCRVersion; + return true; + case Rom item when fieldName == "hocrpageindexmoduleversion": + checkValue = item.hOCRPageIndexModuleVersion; + return true; case Rom item when fieldName == "inverted": checkValue = item.Inverted.FromYesNo(); return true; + case Rom item when fieldName == "lastmodifiedtime": + checkValue = item.LastModifiedTime; + return true; + case Rom item when fieldName == "length": + checkValue = item.Length; + return true; case Rom item when fieldName == "loadflag": checkValue = item.LoadFlag?.AsStringValue(); return true; + case Rom item when fieldName == "matrixnumber": + checkValue = item.MatrixNumber; + return true; + case Rom item when fieldName == "md2": + checkValue = item.MD2; + return true; + case Rom item when fieldName == "md4": + checkValue = item.MD4; + return true; + case Rom item when fieldName == "md5": + checkValue = item.MD5; + return true; case Rom item when fieldName == "mediatype": checkValue = item.OpenMSXMediaType?.AsStringValue(); return true; + case Rom item when fieldName == "merge": + checkValue = item.Merge; + return true; case Rom item when fieldName == "mia": checkValue = item.MIA.FromYesNo(); return true; case Rom item when fieldName == "name": checkValue = item.Name; return true; + case Rom item when fieldName == "offset": + checkValue = item.Offset; + return true; case Rom item when fieldName == "optional": checkValue = item.Optional.FromYesNo(); return true; + case Rom item when fieldName == "original": + checkValue = item.Original; + return true; + case Rom item when fieldName == "pdfmoduleversion": + checkValue = item.PDFModuleVersion; + return true; + case Rom item when fieldName == "previewimage": + checkValue = item.PreviewImage; + return true; + case Rom item when fieldName == "publisher": + checkValue = item.Publisher; + return true; + case Rom item when fieldName == "region": + checkValue = item.Region; + return true; + case Rom item when fieldName == "remark": + checkValue = item.Remark; + return true; + case Rom item when fieldName == "ripemd128": + checkValue = item.RIPEMD128; + return true; + case Rom item when fieldName == "ripemd160": + checkValue = item.RIPEMD160; + return true; + case Rom item when fieldName == "rotation": + checkValue = item.Rotation; + return true; + case Rom item when fieldName == "serial": + checkValue = item.Serial; + return true; + case Rom item when fieldName == "sha1": + checkValue = item.SHA1; + return true; + case Rom item when fieldName == "sha256": + checkValue = item.SHA256; + return true; + case Rom item when fieldName == "sha384": + checkValue = item.SHA384; + return true; + case Rom item when fieldName == "sha512": + checkValue = item.SHA512; + return true; case Rom item when fieldName == "size": checkValue = item.Size?.ToString(); return true; case Rom item when fieldName == "soundonly": checkValue = item.SoundOnly.FromYesNo(); return true; + case Rom item when fieldName == "source": + checkValue = item.Source; + return true; + case Rom item when fieldName == "spamsum": + checkValue = item.SpamSum; + return true; + case Rom item when fieldName == "start": + checkValue = item.Start; + return true; case Rom item when fieldName == "status": checkValue = item.Status?.AsStringValue(); return true; + case Rom item when fieldName == "summation": + checkValue = item.Summation; + return true; + case Rom item when fieldName == "tesseractocr": + checkValue = item.TesseractOCR; + return true; + case Rom item when fieldName == "tesseractocrconverted": + checkValue = item.TesseractOCRConverted; + return true; + case Rom item when fieldName == "tesseractocrdetectedlang": + checkValue = item.TesseractOCRDetectedLang; + return true; + case Rom item when fieldName == "tesseractocrdetectedlangconf": + checkValue = item.TesseractOCRDetectedLangConf; + return true; + case Rom item when fieldName == "tesseractocrdetectedscript": + checkValue = item.TesseractOCRDetectedScript; + return true; + case Rom item when fieldName == "tesseractocrdetectedscriptconf": + checkValue = item.TesseractOCRDetectedScriptConf; + return true; + case Rom item when fieldName == "tesseractocrmoduleversion": + checkValue = item.TesseractOCRModuleVersion; + return true; + case Rom item when fieldName == "tesseractocrparameters": + checkValue = item.TesseractOCRParameters; + return true; + case Rom item when fieldName == "title": + checkValue = item.Title; + return true; + case Rom item when fieldName == "track": + checkValue = item.Track; + return true; + case Rom item when fieldName == "openmsxtype": + checkValue = item.OpenMSXType; + return true; case Rom item when fieldName == "value": checkValue = item.Value; return true; + case Rom item when fieldName == "whisperasrmoduleversion": + checkValue = item.WhisperASRModuleVersion; + return true; + case Rom item when fieldName == "whispermodelhash": + checkValue = item.WhisperModelHash; + return true; + case Rom item when fieldName == "whispermodelname": + checkValue = item.WhisperModelName; + return true; + case Rom item when fieldName == "whisperversion": + checkValue = item.WhisperVersion; + return true; + case Rom item when fieldName == "width": + checkValue = item.Width; + return true; + case Rom item when fieldName == "wordconfidenceinterval0to10": + checkValue = item.WordConfidenceInterval0To10; + return true; + case Rom item when fieldName == "wordconfidenceinterval11to20": + checkValue = item.WordConfidenceInterval11To20; + return true; + case Rom item when fieldName == "wordconfidenceinterval21to30": + checkValue = item.WordConfidenceInterval21To30; + return true; + case Rom item when fieldName == "wordconfidenceinterval31to40": + checkValue = item.WordConfidenceInterval31To40; + return true; + case Rom item when fieldName == "wordconfidenceinterval41to50": + checkValue = item.WordConfidenceInterval41To50; + return true; + case Rom item when fieldName == "wordconfidenceinterval51to60": + checkValue = item.WordConfidenceInterval51To60; + return true; + case Rom item when fieldName == "wordconfidenceinterval61to70": + checkValue = item.WordConfidenceInterval61To70; + return true; + case Rom item when fieldName == "wordconfidenceinterval71to80": + checkValue = item.WordConfidenceInterval71To80; + return true; + case Rom item when fieldName == "wordconfidenceinterval81to90": + checkValue = item.WordConfidenceInterval81To90; + return true; + case Rom item when fieldName == "wordconfidenceinterval91to100": + checkValue = item.WordConfidenceInterval91To100; + return true; + case Rom item when fieldName == "xxhash364": + checkValue = item.xxHash364; + return true; + case Rom item when fieldName == "xxhash3128": + checkValue = item.xxHash3128; + return true; case Sample item when fieldName == "name": checkValue = item.Name; diff --git a/SabreTools.Metadata.Test/ModelBackedItemTests.cs b/SabreTools.Metadata.Test/ModelBackedItemTests.cs index db2b764f..7ae485ee 100644 --- a/SabreTools.Metadata.Test/ModelBackedItemTests.cs +++ b/SabreTools.Metadata.Test/ModelBackedItemTests.cs @@ -222,7 +222,7 @@ namespace SabreTools.Metadata.Test public void WriteWithValidation_MissingKey_False() { TestModelBackedItem? modelBackedItem = new TestModelBackedItem(); - string? fieldName = Rom.SHA1Key; + string? fieldName = "sha1"; object value = "value"; bool actual = modelBackedItem.WriteWithValidation(fieldName, value); Assert.False(actual); diff --git a/SabreTools.Serialization.CrossModel/ArchiveDotOrg.Deserializer.cs b/SabreTools.Serialization.CrossModel/ArchiveDotOrg.Deserializer.cs index 8db234f7..eee8a59f 100644 --- a/SabreTools.Serialization.CrossModel/ArchiveDotOrg.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/ArchiveDotOrg.Deserializer.cs @@ -45,68 +45,68 @@ namespace SabreTools.Serialization.CrossModel var file = new File { Name = item.Name, - Source = item.ReadString(Data.Models.Metadata.Rom.SourceKey), - BitTorrentMagnetHash = item.ReadString(Data.Models.Metadata.Rom.BitTorrentMagnetHashKey), - LastModifiedTime = item.ReadString(Data.Models.Metadata.Rom.LastModifiedTimeKey), + Source = item.Source, + BitTorrentMagnetHash = item.BitTorrentMagnetHash, + LastModifiedTime = item.LastModifiedTime, Size = item.Size?.ToString(), - MD5 = item.ReadString(Data.Models.Metadata.Rom.MD5Key), - CRC32 = item.ReadString(Data.Models.Metadata.Rom.CRCKey), - SHA1 = item.ReadString(Data.Models.Metadata.Rom.SHA1Key), + MD5 = item.MD5, + CRC32 = item.CRC, + SHA1 = item.SHA1, FileCount = item.FileCount, - Format = item.ReadString(Data.Models.Metadata.Rom.FormatKey), - Original = item.ReadString(Data.Models.Metadata.Rom.OriginalKey), - Summation = item.ReadString(Data.Models.Metadata.Rom.SummationKey), - MatrixNumber = item.ReadString(Data.Models.Metadata.Rom.MatrixNumberKey), - CollectionCatalogNumber = item.ReadString(Data.Models.Metadata.Rom.CollectionCatalogNumberKey), - Publisher = item.ReadString(Data.Models.Metadata.Rom.PublisherKey), - Comment = item.ReadString(Data.Models.Metadata.Rom.CommentKey), + Format = item.Format, + Original = item.Original, + Summation = item.Summation, + MatrixNumber = item.MatrixNumber, + CollectionCatalogNumber = item.CollectionCatalogNumber, + Publisher = item.Publisher, + Comment = item.Comment, - ASRDetectedLang = item.ReadString(Data.Models.Metadata.Rom.ASRDetectedLangKey), - ASRDetectedLangConf = item.ReadString(Data.Models.Metadata.Rom.ASRDetectedLangConfKey), - ASRTranscribedLang = item.ReadString(Data.Models.Metadata.Rom.ASRTranscribedLangKey), - WhisperASRModuleVersion = item.ReadString(Data.Models.Metadata.Rom.WhisperASRModuleVersionKey), - WhisperModelHash = item.ReadString(Data.Models.Metadata.Rom.WhisperModelHashKey), - WhisperModelName = item.ReadString(Data.Models.Metadata.Rom.WhisperModelNameKey), - WhisperVersion = item.ReadString(Data.Models.Metadata.Rom.WhisperVersionKey), + ASRDetectedLang = item.ASRDetectedLang, + ASRDetectedLangConf = item.ASRDetectedLangConf, + ASRTranscribedLang = item.ASRTranscribedLang, + WhisperASRModuleVersion = item.WhisperASRModuleVersion, + WhisperModelHash = item.WhisperModelHash, + WhisperModelName = item.WhisperModelName, + WhisperVersion = item.WhisperVersion, - ClothCoverDetectionModuleVersion = item.ReadString(Data.Models.Metadata.Rom.ClothCoverDetectionModuleVersionKey), - hOCRCharToWordhOCRVersion = item.ReadString(Data.Models.Metadata.Rom.hOCRCharToWordhOCRVersionKey), - hOCRCharToWordModuleVersion = item.ReadString(Data.Models.Metadata.Rom.hOCRCharToWordModuleVersionKey), - hOCRFtsTexthOCRVersion = item.ReadString(Data.Models.Metadata.Rom.hOCRFtsTexthOCRVersionKey), - hOCRFtsTextModuleVersion = item.ReadString(Data.Models.Metadata.Rom.hOCRFtsTextModuleVersionKey), - hOCRPageIndexhOCRVersion = item.ReadString(Data.Models.Metadata.Rom.hOCRPageIndexhOCRVersionKey), - hOCRPageIndexModuleVersion = item.ReadString(Data.Models.Metadata.Rom.hOCRPageIndexModuleVersionKey), - TesseractOCR = item.ReadString(Data.Models.Metadata.Rom.TesseractOCRKey), - TesseractOCRConverted = item.ReadString(Data.Models.Metadata.Rom.TesseractOCRConvertedKey), - TesseractOCRDetectedLang = item.ReadString(Data.Models.Metadata.Rom.TesseractOCRDetectedLangKey), - TesseractOCRDetectedLangConf = item.ReadString(Data.Models.Metadata.Rom.TesseractOCRDetectedLangConfKey), - TesseractOCRDetectedScript = item.ReadString(Data.Models.Metadata.Rom.TesseractOCRDetectedScriptKey), - TesseractOCRDetectedScriptConf = item.ReadString(Data.Models.Metadata.Rom.TesseractOCRDetectedScriptConfKey), - TesseractOCRModuleVersion = item.ReadString(Data.Models.Metadata.Rom.TesseractOCRModuleVersionKey), - TesseractOCRParameters = item.ReadString(Data.Models.Metadata.Rom.TesseractOCRParametersKey), - PDFModuleVersion = item.ReadString(Data.Models.Metadata.Rom.PDFModuleVersionKey), - WordConfidenceInterval0To10 = item.ReadString(Data.Models.Metadata.Rom.WordConfidenceInterval0To10Key), - WordConfidenceInterval11To20 = item.ReadString(Data.Models.Metadata.Rom.WordConfidenceInterval11To20Key), - WordConfidenceInterval21To30 = item.ReadString(Data.Models.Metadata.Rom.WordConfidenceInterval21To30Key), - WordConfidenceInterval31To40 = item.ReadString(Data.Models.Metadata.Rom.WordConfidenceInterval31To40Key), - WordConfidenceInterval41To50 = item.ReadString(Data.Models.Metadata.Rom.WordConfidenceInterval41To50Key), - WordConfidenceInterval51To60 = item.ReadString(Data.Models.Metadata.Rom.WordConfidenceInterval51To60Key), - WordConfidenceInterval61To70 = item.ReadString(Data.Models.Metadata.Rom.WordConfidenceInterval61To70Key), - WordConfidenceInterval71To80 = item.ReadString(Data.Models.Metadata.Rom.WordConfidenceInterval71To80Key), - WordConfidenceInterval81To90 = item.ReadString(Data.Models.Metadata.Rom.WordConfidenceInterval81To90Key), - WordConfidenceInterval91To100 = item.ReadString(Data.Models.Metadata.Rom.WordConfidenceInterval91To100Key), + ClothCoverDetectionModuleVersion = item.ClothCoverDetectionModuleVersion, + hOCRCharToWordhOCRVersion = item.hOCRCharToWordhOCRVersion, + hOCRCharToWordModuleVersion = item.hOCRCharToWordModuleVersion, + hOCRFtsTexthOCRVersion = item.hOCRFtsTexthOCRVersion, + hOCRFtsTextModuleVersion = item.hOCRFtsTextModuleVersion, + hOCRPageIndexhOCRVersion = item.hOCRPageIndexhOCRVersion, + hOCRPageIndexModuleVersion = item.hOCRPageIndexModuleVersion, + TesseractOCR = item.TesseractOCR, + TesseractOCRConverted = item.TesseractOCRConverted, + TesseractOCRDetectedLang = item.TesseractOCRDetectedLang, + TesseractOCRDetectedLangConf = item.TesseractOCRDetectedLangConf, + TesseractOCRDetectedScript = item.TesseractOCRDetectedScript, + TesseractOCRDetectedScriptConf = item.TesseractOCRDetectedScriptConf, + TesseractOCRModuleVersion = item.TesseractOCRModuleVersion, + TesseractOCRParameters = item.TesseractOCRParameters, + PDFModuleVersion = item.PDFModuleVersion, + WordConfidenceInterval0To10 = item.WordConfidenceInterval0To10, + WordConfidenceInterval11To20 = item.WordConfidenceInterval11To20, + WordConfidenceInterval21To30 = item.WordConfidenceInterval21To30, + WordConfidenceInterval31To40 = item.WordConfidenceInterval31To40, + WordConfidenceInterval41To50 = item.WordConfidenceInterval41To50, + WordConfidenceInterval51To60 = item.WordConfidenceInterval51To60, + WordConfidenceInterval61To70 = item.WordConfidenceInterval61To70, + WordConfidenceInterval71To80 = item.WordConfidenceInterval71To80, + WordConfidenceInterval81To90 = item.WordConfidenceInterval81To90, + WordConfidenceInterval91To100 = item.WordConfidenceInterval91To100, - Album = item.ReadString(Data.Models.Metadata.Rom.AlbumKey), - Artist = item.ReadString(Data.Models.Metadata.Rom.ArtistKey), - Bitrate = item.ReadString(Data.Models.Metadata.Rom.BitrateKey), - Creator = item.ReadString(Data.Models.Metadata.Rom.CreatorKey), - Height = item.ReadString(Data.Models.Metadata.Rom.HeightKey), - Length = item.ReadString(Data.Models.Metadata.Rom.LengthKey), - PreviewImage = item.ReadString(Data.Models.Metadata.Rom.PreviewImageKey), - Rotation = item.ReadString(Data.Models.Metadata.Rom.RotationKey), - Title = item.ReadString(Data.Models.Metadata.Rom.TitleKey), - Track = item.ReadString(Data.Models.Metadata.Rom.TrackKey), - Width = item.ReadString(Data.Models.Metadata.Rom.WidthKey), + Album = item.Album, + Artist = item.Artist, + Bitrate = item.Bitrate, + Creator = item.Creator, + Height = item.Height, + Length = item.Length, + PreviewImage = item.PreviewImage, + Rotation = item.Rotation, + Title = item.Title, + Track = item.Track, + Width = item.Width, }; return file; } diff --git a/SabreTools.Serialization.CrossModel/ArchiveDotOrg.Serializer.cs b/SabreTools.Serialization.CrossModel/ArchiveDotOrg.Serializer.cs index d8cca52d..ee636f3e 100644 --- a/SabreTools.Serialization.CrossModel/ArchiveDotOrg.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/ArchiveDotOrg.Serializer.cs @@ -60,68 +60,68 @@ namespace SabreTools.Serialization.CrossModel var rom = new Data.Models.Metadata.Rom { Name = item.Name, - [Data.Models.Metadata.Rom.SourceKey] = item.Source, - [Data.Models.Metadata.Rom.BitTorrentMagnetHashKey] = item.BitTorrentMagnetHash, - [Data.Models.Metadata.Rom.LastModifiedTimeKey] = item.LastModifiedTime, + Source = item.Source, + BitTorrentMagnetHash = item.BitTorrentMagnetHash, + LastModifiedTime = item.LastModifiedTime, Size = NumberHelper.ConvertToInt64(item.Size), - [Data.Models.Metadata.Rom.MD5Key] = item.MD5, - [Data.Models.Metadata.Rom.CRCKey] = item.CRC32, - [Data.Models.Metadata.Rom.SHA1Key] = item.SHA1, + MD5 = item.MD5, + CRC = item.CRC32, + SHA1 = item.SHA1, FileCount = item.FileCount, - [Data.Models.Metadata.Rom.FormatKey] = item.Format, - [Data.Models.Metadata.Rom.OriginalKey] = item.Original, - [Data.Models.Metadata.Rom.SummationKey] = item.Summation, - [Data.Models.Metadata.Rom.MatrixNumberKey] = item.MatrixNumber, - [Data.Models.Metadata.Rom.CollectionCatalogNumberKey] = item.CollectionCatalogNumber, - [Data.Models.Metadata.Rom.PublisherKey] = item.Publisher, - [Data.Models.Metadata.Rom.CommentKey] = item.Comment, + Format = item.Format, + Original = item.Original, + Summation = item.Summation, + MatrixNumber = item.MatrixNumber, + CollectionCatalogNumber = item.CollectionCatalogNumber, + Publisher = item.Publisher, + Comment = item.Comment, - [Data.Models.Metadata.Rom.ASRDetectedLangKey] = item.ASRDetectedLang, - [Data.Models.Metadata.Rom.ASRDetectedLangConfKey] = item.ASRDetectedLangConf, - [Data.Models.Metadata.Rom.ASRTranscribedLangKey] = item.ASRTranscribedLang, - [Data.Models.Metadata.Rom.WhisperASRModuleVersionKey] = item.WhisperASRModuleVersion, - [Data.Models.Metadata.Rom.WhisperModelHashKey] = item.WhisperModelHash, - [Data.Models.Metadata.Rom.WhisperModelNameKey] = item.WhisperModelName, - [Data.Models.Metadata.Rom.WhisperVersionKey] = item.WhisperVersion, + ASRDetectedLang = item.ASRDetectedLang, + ASRDetectedLangConf = item.ASRDetectedLangConf, + ASRTranscribedLang = item.ASRTranscribedLang, + WhisperASRModuleVersion = item.WhisperASRModuleVersion, + WhisperModelHash = item.WhisperModelHash, + WhisperModelName = item.WhisperModelName, + WhisperVersion = item.WhisperVersion, - [Data.Models.Metadata.Rom.ClothCoverDetectionModuleVersionKey] = item.ClothCoverDetectionModuleVersion, - [Data.Models.Metadata.Rom.hOCRCharToWordhOCRVersionKey] = item.hOCRCharToWordhOCRVersion, - [Data.Models.Metadata.Rom.hOCRCharToWordModuleVersionKey] = item.hOCRCharToWordModuleVersion, - [Data.Models.Metadata.Rom.hOCRFtsTexthOCRVersionKey] = item.hOCRFtsTexthOCRVersion, - [Data.Models.Metadata.Rom.hOCRFtsTextModuleVersionKey] = item.hOCRFtsTextModuleVersion, - [Data.Models.Metadata.Rom.hOCRPageIndexhOCRVersionKey] = item.hOCRPageIndexhOCRVersion, - [Data.Models.Metadata.Rom.hOCRPageIndexModuleVersionKey] = item.hOCRPageIndexModuleVersion, - [Data.Models.Metadata.Rom.TesseractOCRKey] = item.TesseractOCR, - [Data.Models.Metadata.Rom.TesseractOCRConvertedKey] = item.TesseractOCRConverted, - [Data.Models.Metadata.Rom.TesseractOCRDetectedLangKey] = item.TesseractOCRDetectedLang, - [Data.Models.Metadata.Rom.TesseractOCRDetectedLangConfKey] = item.TesseractOCRDetectedLangConf, - [Data.Models.Metadata.Rom.TesseractOCRDetectedScriptKey] = item.TesseractOCRDetectedScript, - [Data.Models.Metadata.Rom.TesseractOCRDetectedScriptConfKey] = item.TesseractOCRDetectedScriptConf, - [Data.Models.Metadata.Rom.TesseractOCRModuleVersionKey] = item.TesseractOCRModuleVersion, - [Data.Models.Metadata.Rom.TesseractOCRParametersKey] = item.TesseractOCRParameters, - [Data.Models.Metadata.Rom.PDFModuleVersionKey] = item.PDFModuleVersion, - [Data.Models.Metadata.Rom.WordConfidenceInterval0To10Key] = item.WordConfidenceInterval0To10, - [Data.Models.Metadata.Rom.WordConfidenceInterval11To20Key] = item.WordConfidenceInterval11To20, - [Data.Models.Metadata.Rom.WordConfidenceInterval21To30Key] = item.WordConfidenceInterval21To30, - [Data.Models.Metadata.Rom.WordConfidenceInterval31To40Key] = item.WordConfidenceInterval31To40, - [Data.Models.Metadata.Rom.WordConfidenceInterval41To50Key] = item.WordConfidenceInterval41To50, - [Data.Models.Metadata.Rom.WordConfidenceInterval51To60Key] = item.WordConfidenceInterval51To60, - [Data.Models.Metadata.Rom.WordConfidenceInterval61To70Key] = item.WordConfidenceInterval61To70, - [Data.Models.Metadata.Rom.WordConfidenceInterval71To80Key] = item.WordConfidenceInterval71To80, - [Data.Models.Metadata.Rom.WordConfidenceInterval81To90Key] = item.WordConfidenceInterval81To90, - [Data.Models.Metadata.Rom.WordConfidenceInterval91To100Key] = item.WordConfidenceInterval91To100, + ClothCoverDetectionModuleVersion = item.ClothCoverDetectionModuleVersion, + hOCRCharToWordhOCRVersion = item.hOCRCharToWordhOCRVersion, + hOCRCharToWordModuleVersion = item.hOCRCharToWordModuleVersion, + hOCRFtsTexthOCRVersion = item.hOCRFtsTexthOCRVersion, + hOCRFtsTextModuleVersion = item.hOCRFtsTextModuleVersion, + hOCRPageIndexhOCRVersion = item.hOCRPageIndexhOCRVersion, + hOCRPageIndexModuleVersion = item.hOCRPageIndexModuleVersion, + TesseractOCR = item.TesseractOCR, + TesseractOCRConverted = item.TesseractOCRConverted, + TesseractOCRDetectedLang = item.TesseractOCRDetectedLang, + TesseractOCRDetectedLangConf = item.TesseractOCRDetectedLangConf, + TesseractOCRDetectedScript = item.TesseractOCRDetectedScript, + TesseractOCRDetectedScriptConf = item.TesseractOCRDetectedScriptConf, + TesseractOCRModuleVersion = item.TesseractOCRModuleVersion, + TesseractOCRParameters = item.TesseractOCRParameters, + PDFModuleVersion = item.PDFModuleVersion, + WordConfidenceInterval0To10 = item.WordConfidenceInterval0To10, + WordConfidenceInterval11To20 = item.WordConfidenceInterval11To20, + WordConfidenceInterval21To30 = item.WordConfidenceInterval21To30, + WordConfidenceInterval31To40 = item.WordConfidenceInterval31To40, + WordConfidenceInterval41To50 = item.WordConfidenceInterval41To50, + WordConfidenceInterval51To60 = item.WordConfidenceInterval51To60, + WordConfidenceInterval61To70 = item.WordConfidenceInterval61To70, + WordConfidenceInterval71To80 = item.WordConfidenceInterval71To80, + WordConfidenceInterval81To90 = item.WordConfidenceInterval81To90, + WordConfidenceInterval91To100 = item.WordConfidenceInterval91To100, - [Data.Models.Metadata.Rom.AlbumKey] = item.Album, - [Data.Models.Metadata.Rom.ArtistKey] = item.Artist, - [Data.Models.Metadata.Rom.BitrateKey] = item.Bitrate, - [Data.Models.Metadata.Rom.CreatorKey] = item.Creator, - [Data.Models.Metadata.Rom.HeightKey] = item.Height, - [Data.Models.Metadata.Rom.LengthKey] = item.Length, - [Data.Models.Metadata.Rom.PreviewImageKey] = item.PreviewImage, - [Data.Models.Metadata.Rom.RotationKey] = item.Rotation, - [Data.Models.Metadata.Rom.TitleKey] = item.Title, - [Data.Models.Metadata.Rom.TrackKey] = item.Track, - [Data.Models.Metadata.Rom.WidthKey] = item.Width, + Album = item.Album, + Artist = item.Artist, + Bitrate = item.Bitrate, + Creator = item.Creator, + Height = item.Height, + Length = item.Length, + PreviewImage = item.PreviewImage, + Rotation = item.Rotation, + Title = item.Title, + Track = item.Track, + Width = item.Width, }; return rom; } diff --git a/SabreTools.Serialization.CrossModel/AttractMode.Deserializer.cs b/SabreTools.Serialization.CrossModel/AttractMode.Deserializer.cs index dfd38d2f..fe22f5dd 100644 --- a/SabreTools.Serialization.CrossModel/AttractMode.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/AttractMode.Deserializer.cs @@ -70,8 +70,8 @@ namespace SabreTools.Serialization.CrossModel Status = parent.Status, DisplayCount = parent.DisplayCount, DisplayType = parent.DisplayType, - AltRomname = item.ReadString(Data.Models.Metadata.Rom.AltRomnameKey), - AltTitle = item.ReadString(Data.Models.Metadata.Rom.AltTitleKey), + AltRomname = item.AltRomname, + AltTitle = item.AltTitle, Extra = parent.Extra, Buttons = parent.Buttons, Favorite = parent.Favorite, diff --git a/SabreTools.Serialization.CrossModel/AttractMode.Serializer.cs b/SabreTools.Serialization.CrossModel/AttractMode.Serializer.cs index 0e42ad1d..a2c6cd55 100644 --- a/SabreTools.Serialization.CrossModel/AttractMode.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/AttractMode.Serializer.cs @@ -72,8 +72,8 @@ namespace SabreTools.Serialization.CrossModel var rom = new Data.Models.Metadata.Rom { Name = item.Title, - [Data.Models.Metadata.Rom.AltRomnameKey] = item.AltRomname, - [Data.Models.Metadata.Rom.AltTitleKey] = item.AltTitle, + AltRomname = item.AltRomname, + AltTitle = item.AltTitle, FileIsAvailable = item.FileIsAvailable, }; return rom; diff --git a/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs b/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs index 0b4d0200..667e177c 100644 --- a/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs @@ -277,29 +277,29 @@ namespace SabreTools.Serialization.CrossModel { Name = item.Name, Size = item.Size, - CRC16 = item.ReadString(Data.Models.Metadata.Rom.CRC16Key), - CRC = item.ReadString(Data.Models.Metadata.Rom.CRCKey), - CRC64 = item.ReadString(Data.Models.Metadata.Rom.CRC64Key), - MD2 = item.ReadString(Data.Models.Metadata.Rom.MD2Key), - MD4 = item.ReadString(Data.Models.Metadata.Rom.MD4Key), - MD5 = item.ReadString(Data.Models.Metadata.Rom.MD5Key), - RIPEMD128 = item.ReadString(Data.Models.Metadata.Rom.RIPEMD128Key), - RIPEMD160 = item.ReadString(Data.Models.Metadata.Rom.RIPEMD160Key), - SHA1 = item.ReadString(Data.Models.Metadata.Rom.SHA1Key), - SHA256 = item.ReadString(Data.Models.Metadata.Rom.SHA256Key), - SHA384 = item.ReadString(Data.Models.Metadata.Rom.SHA384Key), - SHA512 = item.ReadString(Data.Models.Metadata.Rom.SHA512Key), - SpamSum = item.ReadString(Data.Models.Metadata.Rom.SpamSumKey), - xxHash364 = item.ReadString(Data.Models.Metadata.Rom.xxHash364Key), - xxHash3128 = item.ReadString(Data.Models.Metadata.Rom.xxHash3128Key), - Merge = item.ReadString(Data.Models.Metadata.Rom.MergeKey), + CRC16 = item.CRC16, + CRC = item.CRC, + CRC64 = item.CRC64, + MD2 = item.MD2, + MD4 = item.MD4, + MD5 = item.MD5, + RIPEMD128 = item.RIPEMD128, + RIPEMD160 = item.RIPEMD160, + SHA1 = item.SHA1, + SHA256 = item.SHA256, + SHA384 = item.SHA384, + SHA512 = item.SHA512, + SpamSum = item.SpamSum, + xxHash364 = item.xxHash364, + xxHash3128 = item.xxHash3128, + Merge = item.Merge, Status = item.Status, - Region = item.ReadString(Data.Models.Metadata.Rom.RegionKey), - Flags = item.ReadString(Data.Models.Metadata.Rom.FlagsKey), - Offs = item.ReadString(Data.Models.Metadata.Rom.OffsetKey), - Serial = item.ReadString(Data.Models.Metadata.Rom.SerialKey), - Header = item.ReadString(Data.Models.Metadata.Rom.HeaderKey), - Date = item.ReadString(Data.Models.Metadata.Rom.DateKey), + Region = item.Region, + Flags = item.Flags, + Offs = item.Offset, + Serial = item.Serial, + Header = item.Header, + Date = item.Date, Inverted = item.Inverted, MIA = item.MIA, }; diff --git a/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs b/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs index 3aefbebf..1bb8856c 100644 --- a/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs @@ -257,29 +257,29 @@ namespace SabreTools.Serialization.CrossModel { Name = item.Name, Size = item.Size, - [Data.Models.Metadata.Rom.CRC16Key] = item.CRC16, - [Data.Models.Metadata.Rom.CRCKey] = item.CRC, - [Data.Models.Metadata.Rom.CRC64Key] = item.CRC64, - [Data.Models.Metadata.Rom.MD2Key] = item.MD2, - [Data.Models.Metadata.Rom.MD4Key] = item.MD4, - [Data.Models.Metadata.Rom.MD5Key] = item.MD5, - [Data.Models.Metadata.Rom.RIPEMD128Key] = item.RIPEMD128, - [Data.Models.Metadata.Rom.RIPEMD160Key] = item.RIPEMD160, - [Data.Models.Metadata.Rom.SHA1Key] = item.SHA1, - [Data.Models.Metadata.Rom.SHA256Key] = item.SHA256, - [Data.Models.Metadata.Rom.SHA384Key] = item.SHA384, - [Data.Models.Metadata.Rom.SHA512Key] = item.SHA512, - [Data.Models.Metadata.Rom.SpamSumKey] = item.SpamSum, - [Data.Models.Metadata.Rom.xxHash364Key] = item.xxHash364, - [Data.Models.Metadata.Rom.xxHash3128Key] = item.xxHash3128, - [Data.Models.Metadata.Rom.MergeKey] = item.Merge, + CRC16 = item.CRC16, + CRC = item.CRC, + CRC64 = item.CRC64, + MD2 = item.MD2, + MD4 = item.MD4, + MD5 = item.MD5, + RIPEMD128 = item.RIPEMD128, + RIPEMD160 = item.RIPEMD160, + SHA1 = item.SHA1, + SHA256 = item.SHA256, + SHA384 = item.SHA384, + SHA512 = item.SHA512, + SpamSum = item.SpamSum, + xxHash364 = item.xxHash364, + xxHash3128 = item.xxHash3128, + Merge = item.Merge, Status = item.Status, - [Data.Models.Metadata.Rom.RegionKey] = item.Region, - [Data.Models.Metadata.Rom.FlagsKey] = item.Flags, - [Data.Models.Metadata.Rom.OffsetKey] = item.Offs, - [Data.Models.Metadata.Rom.SerialKey] = item.Serial, - [Data.Models.Metadata.Rom.HeaderKey] = item.Header, - [Data.Models.Metadata.Rom.DateKey] = item.Date, + Region = item.Region, + Flags = item.Flags, + Offset = item.Offs, + Serial = item.Serial, + Header = item.Header, + Date = item.Date, Inverted = item.Inverted, MIA = item.MIA, }; diff --git a/SabreTools.Serialization.CrossModel/DosCenter.Deserializer.cs b/SabreTools.Serialization.CrossModel/DosCenter.Deserializer.cs index e3ea96f1..383ff648 100644 --- a/SabreTools.Serialization.CrossModel/DosCenter.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/DosCenter.Deserializer.cs @@ -68,9 +68,9 @@ namespace SabreTools.Serialization.CrossModel { Name = item.Name, Size = item.Size, - CRC = item.ReadString(Data.Models.Metadata.Rom.CRCKey), - SHA1 = item.ReadString(Data.Models.Metadata.Rom.SHA1Key), - Date = item.ReadString(Data.Models.Metadata.Rom.DateKey), + CRC = item.CRC, + SHA1 = item.SHA1, + Date = item.Date, }; return file; } diff --git a/SabreTools.Serialization.CrossModel/DosCenter.Serializer.cs b/SabreTools.Serialization.CrossModel/DosCenter.Serializer.cs index de188ae3..92ef0e0e 100644 --- a/SabreTools.Serialization.CrossModel/DosCenter.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/DosCenter.Serializer.cs @@ -65,9 +65,9 @@ namespace SabreTools.Serialization.CrossModel { Name = item.Name, Size = item.Size, - [Data.Models.Metadata.Rom.CRCKey] = item.CRC, - [Data.Models.Metadata.Rom.SHA1Key] = item.SHA1, - [Data.Models.Metadata.Rom.DateKey] = item.Date, + CRC = item.CRC, + SHA1 = item.SHA1, + Date = item.Date, }; return rom; } diff --git a/SabreTools.Serialization.CrossModel/EverdriveSMDB.Deserializer.cs b/SabreTools.Serialization.CrossModel/EverdriveSMDB.Deserializer.cs index cf3e9c11..82a1d20a 100644 --- a/SabreTools.Serialization.CrossModel/EverdriveSMDB.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/EverdriveSMDB.Deserializer.cs @@ -45,11 +45,11 @@ namespace SabreTools.Serialization.CrossModel { var row = new Row { - SHA256 = item.ReadString(Data.Models.Metadata.Rom.SHA256Key), + SHA256 = item.SHA256, Name = item.Name, - SHA1 = item.ReadString(Data.Models.Metadata.Rom.SHA1Key), - MD5 = item.ReadString(Data.Models.Metadata.Rom.MD5Key), - CRC32 = item.ReadString(Data.Models.Metadata.Rom.CRCKey), + SHA1 = item.SHA1, + MD5 = item.MD5, + CRC32 = item.CRC, Size = item.Size, }; return row; diff --git a/SabreTools.Serialization.CrossModel/EverdriveSMDB.Serializer.cs b/SabreTools.Serialization.CrossModel/EverdriveSMDB.Serializer.cs index 39e0029e..17d1b864 100644 --- a/SabreTools.Serialization.CrossModel/EverdriveSMDB.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/EverdriveSMDB.Serializer.cs @@ -53,11 +53,11 @@ namespace SabreTools.Serialization.CrossModel { var rom = new Data.Models.Metadata.Rom { - [Data.Models.Metadata.Rom.SHA256Key] = item.SHA256, + SHA256 = item.SHA256, Name = item.Name, - [Data.Models.Metadata.Rom.SHA1Key] = item.SHA1, - [Data.Models.Metadata.Rom.MD5Key] = item.MD5, - [Data.Models.Metadata.Rom.CRCKey] = item.CRC32, + SHA1 = item.SHA1, + MD5 = item.MD5, + CRC = item.CRC32, Size = item.Size, }; return rom; diff --git a/SabreTools.Serialization.CrossModel/Hashfile.Deserializer.cs b/SabreTools.Serialization.CrossModel/Hashfile.Deserializer.cs index 73687d69..0d46bd9b 100644 --- a/SabreTools.Serialization.CrossModel/Hashfile.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Hashfile.Deserializer.cs @@ -145,7 +145,7 @@ namespace SabreTools.Serialization.CrossModel { var md2 = new MD2 { - Hash = item.ReadString(Data.Models.Metadata.Rom.MD2Key), + Hash = item.MD2, File = item.Name, }; return md2; @@ -158,7 +158,7 @@ namespace SabreTools.Serialization.CrossModel { var md4 = new MD4 { - Hash = item.ReadString(Data.Models.Metadata.Rom.MD4Key), + Hash = item.MD4, File = item.Name, }; return md4; @@ -171,7 +171,7 @@ namespace SabreTools.Serialization.CrossModel { var md5 = new MD5 { - Hash = item.ReadString(Data.Models.Metadata.Rom.MD5Key), + Hash = item.MD5, File = item.Name, }; return md5; @@ -184,7 +184,7 @@ namespace SabreTools.Serialization.CrossModel { var ripemd128 = new RIPEMD128 { - Hash = item.ReadString(Data.Models.Metadata.Rom.RIPEMD128Key), + Hash = item.RIPEMD128, File = item.Name, }; return ripemd128; @@ -197,7 +197,7 @@ namespace SabreTools.Serialization.CrossModel { var ripemd160 = new RIPEMD160 { - Hash = item.ReadString(Data.Models.Metadata.Rom.RIPEMD160Key), + Hash = item.RIPEMD160, File = item.Name, }; return ripemd160; @@ -211,7 +211,7 @@ namespace SabreTools.Serialization.CrossModel var sfv = new SFV { File = item.Name, - Hash = item.ReadString(Data.Models.Metadata.Rom.CRCKey), + Hash = item.CRC, }; return sfv; } @@ -223,7 +223,7 @@ namespace SabreTools.Serialization.CrossModel { var sha1 = new SHA1 { - Hash = item.ReadString(Data.Models.Metadata.Rom.SHA1Key), + Hash = item.SHA1, File = item.Name, }; return sha1; @@ -236,7 +236,7 @@ namespace SabreTools.Serialization.CrossModel { var sha256 = new SHA256 { - Hash = item.ReadString(Data.Models.Metadata.Rom.SHA256Key), + Hash = item.SHA256, File = item.Name, }; return sha256; @@ -249,7 +249,7 @@ namespace SabreTools.Serialization.CrossModel { var sha384 = new SHA384 { - Hash = item.ReadString(Data.Models.Metadata.Rom.SHA384Key), + Hash = item.SHA384, File = item.Name, }; return sha384; @@ -262,7 +262,7 @@ namespace SabreTools.Serialization.CrossModel { var sha512 = new SHA512 { - Hash = item.ReadString(Data.Models.Metadata.Rom.SHA512Key), + Hash = item.SHA512, File = item.Name, }; return sha512; @@ -275,7 +275,7 @@ namespace SabreTools.Serialization.CrossModel { var spamsum = new SpamSum { - Hash = item.ReadString(Data.Models.Metadata.Rom.SpamSumKey), + Hash = item.SpamSum, File = item.Name, }; return spamsum; diff --git a/SabreTools.Serialization.CrossModel/Hashfile.Serializer.cs b/SabreTools.Serialization.CrossModel/Hashfile.Serializer.cs index 5eba2478..dac2f823 100644 --- a/SabreTools.Serialization.CrossModel/Hashfile.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Hashfile.Serializer.cs @@ -74,7 +74,7 @@ namespace SabreTools.Serialization.CrossModel { var rom = new Data.Models.Metadata.Rom { - [Data.Models.Metadata.Rom.MD2Key] = item.Hash, + MD2 = item.Hash, Name = item.File, }; return rom; @@ -87,7 +87,7 @@ namespace SabreTools.Serialization.CrossModel { var rom = new Data.Models.Metadata.Rom { - [Data.Models.Metadata.Rom.MD4Key] = item.Hash, + MD4 = item.Hash, Name = item.File, }; return rom; @@ -100,7 +100,7 @@ namespace SabreTools.Serialization.CrossModel { var rom = new Data.Models.Metadata.Rom { - [Data.Models.Metadata.Rom.MD5Key] = item.Hash, + MD5 = item.Hash, Name = item.File, }; return rom; @@ -113,7 +113,7 @@ namespace SabreTools.Serialization.CrossModel { var rom = new Data.Models.Metadata.Rom { - [Data.Models.Metadata.Rom.RIPEMD128Key] = item.Hash, + RIPEMD128 = item.Hash, Name = item.File, }; return rom; @@ -126,7 +126,7 @@ namespace SabreTools.Serialization.CrossModel { var rom = new Data.Models.Metadata.Rom { - [Data.Models.Metadata.Rom.RIPEMD160Key] = item.Hash, + RIPEMD160 = item.Hash, Name = item.File, }; return rom; @@ -140,7 +140,7 @@ namespace SabreTools.Serialization.CrossModel var rom = new Data.Models.Metadata.Rom { Name = item.File, - [Data.Models.Metadata.Rom.CRCKey] = item.Hash, + CRC = item.Hash, }; return rom; } @@ -152,7 +152,7 @@ namespace SabreTools.Serialization.CrossModel { var rom = new Data.Models.Metadata.Rom { - [Data.Models.Metadata.Rom.SHA1Key] = item.Hash, + SHA1 = item.Hash, Name = item.File, }; return rom; @@ -165,7 +165,7 @@ namespace SabreTools.Serialization.CrossModel { var rom = new Data.Models.Metadata.Rom { - [Data.Models.Metadata.Rom.SHA256Key] = item.Hash, + SHA256 = item.Hash, Name = item.File, }; return rom; @@ -178,7 +178,7 @@ namespace SabreTools.Serialization.CrossModel { var rom = new Data.Models.Metadata.Rom { - [Data.Models.Metadata.Rom.SHA384Key] = item.Hash, + SHA384 = item.Hash, Name = item.File, }; return rom; @@ -191,7 +191,7 @@ namespace SabreTools.Serialization.CrossModel { var rom = new Data.Models.Metadata.Rom { - [Data.Models.Metadata.Rom.SHA512Key] = item.Hash, + SHA512 = item.Hash, Name = item.File, }; return rom; @@ -204,7 +204,7 @@ namespace SabreTools.Serialization.CrossModel { var rom = new Data.Models.Metadata.Rom { - [Data.Models.Metadata.Rom.SpamSumKey] = item.Hash, + SpamSum = item.Hash, Name = item.File, }; return rom; diff --git a/SabreTools.Serialization.CrossModel/Listrom.Deserializer.cs b/SabreTools.Serialization.CrossModel/Listrom.Deserializer.cs index fe623002..10149bc6 100644 --- a/SabreTools.Serialization.CrossModel/Listrom.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Listrom.Deserializer.cs @@ -77,8 +77,8 @@ namespace SabreTools.Serialization.CrossModel { Name = item.Name, Size = item.Size, - CRC = item.ReadString(Data.Models.Metadata.Rom.CRCKey), - SHA1 = item.ReadString(Data.Models.Metadata.Rom.SHA1Key), + CRC = item.CRC, + SHA1 = item.SHA1, }; if (item.Status == Data.Models.Metadata.ItemStatus.Nodump) diff --git a/SabreTools.Serialization.CrossModel/Listrom.Serializer.cs b/SabreTools.Serialization.CrossModel/Listrom.Serializer.cs index 11425615..0f22c669 100644 --- a/SabreTools.Serialization.CrossModel/Listrom.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Listrom.Serializer.cs @@ -98,8 +98,8 @@ namespace SabreTools.Serialization.CrossModel { Name = item.Name, Size = item.Size, - [Data.Models.Metadata.Rom.CRCKey] = item.CRC, - [Data.Models.Metadata.Rom.SHA1Key] = item.SHA1, + CRC = item.CRC, + SHA1 = item.SHA1, }; if (item.NoGoodDumpKnown) diff --git a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs index 55e169d9..bfacbdcc 100644 --- a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs @@ -563,13 +563,13 @@ namespace SabreTools.Serialization.CrossModel var rom = new Rom { Name = item.Name, - Bios = item.ReadString(Data.Models.Metadata.Rom.BiosKey), + Bios = item.Bios, Size = item.Size, - CRC = item.ReadString(Data.Models.Metadata.Rom.CRCKey), - SHA1 = item.ReadString(Data.Models.Metadata.Rom.SHA1Key), - Merge = item.ReadString(Data.Models.Metadata.Rom.MergeKey), - Region = item.ReadString(Data.Models.Metadata.Rom.RegionKey), - Offset = item.ReadString(Data.Models.Metadata.Rom.OffsetKey), + CRC = item.CRC, + SHA1 = item.SHA1, + Merge = item.Merge, + Region = item.Region, + Offset = item.Offset, Status = item.Status, Optional = item.Optional, Dispose = item.Dispose, diff --git a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs index a61e74f3..e9a8419c 100644 --- a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs @@ -530,13 +530,13 @@ namespace SabreTools.Serialization.CrossModel var rom = new Data.Models.Metadata.Rom { Name = item.Name, - [Data.Models.Metadata.Rom.BiosKey] = item.Bios, + Bios = item.Bios, Size = item.Size, - [Data.Models.Metadata.Rom.CRCKey] = item.CRC, - [Data.Models.Metadata.Rom.SHA1Key] = item.SHA1, - [Data.Models.Metadata.Rom.MergeKey] = item.Merge, - [Data.Models.Metadata.Rom.RegionKey] = item.Region, - [Data.Models.Metadata.Rom.OffsetKey] = item.Offset, + CRC = item.CRC, + SHA1 = item.SHA1, + Merge = item.Merge, + Region = item.Region, + Offset = item.Offset, Status = item.Status, Optional = item.Optional, Dispose = item.Dispose, diff --git a/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs b/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs index 712597a6..537f8047 100644 --- a/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs @@ -327,26 +327,26 @@ namespace SabreTools.Serialization.CrossModel { Name = item.Name, Size = item.Size, - CRC16 = item.ReadString(Data.Models.Metadata.Rom.CRC16Key), - CRC = item.ReadString(Data.Models.Metadata.Rom.CRCKey), - CRC64 = item.ReadString(Data.Models.Metadata.Rom.CRC64Key), - MD2 = item.ReadString(Data.Models.Metadata.Rom.MD2Key), - MD4 = item.ReadString(Data.Models.Metadata.Rom.MD4Key), - MD5 = item.ReadString(Data.Models.Metadata.Rom.MD5Key), - RIPEMD128 = item.ReadString(Data.Models.Metadata.Rom.RIPEMD128Key), - RIPEMD160 = item.ReadString(Data.Models.Metadata.Rom.RIPEMD160Key), - SHA1 = item.ReadString(Data.Models.Metadata.Rom.SHA1Key), - SHA256 = item.ReadString(Data.Models.Metadata.Rom.SHA256Key), - SHA384 = item.ReadString(Data.Models.Metadata.Rom.SHA384Key), - SHA512 = item.ReadString(Data.Models.Metadata.Rom.SHA512Key), - SpamSum = item.ReadString(Data.Models.Metadata.Rom.SpamSumKey), - xxHash364 = item.ReadString(Data.Models.Metadata.Rom.xxHash364Key), - xxHash3128 = item.ReadString(Data.Models.Metadata.Rom.xxHash3128Key), - Merge = item.ReadString(Data.Models.Metadata.Rom.MergeKey), + CRC16 = item.CRC16, + CRC = item.CRC, + CRC64 = item.CRC64, + MD2 = item.MD2, + MD4 = item.MD4, + MD5 = item.MD5, + RIPEMD128 = item.RIPEMD128, + RIPEMD160 = item.RIPEMD160, + SHA1 = item.SHA1, + SHA256 = item.SHA256, + SHA384 = item.SHA384, + SHA512 = item.SHA512, + SpamSum = item.SpamSum, + xxHash364 = item.xxHash364, + xxHash3128 = item.xxHash3128, + Merge = item.Merge, Status = item.Status, - Serial = item.ReadString(Data.Models.Metadata.Rom.SerialKey), - Header = item.ReadString(Data.Models.Metadata.Rom.HeaderKey), - Date = item.ReadString(Data.Models.Metadata.Rom.DateKey), + Serial = item.Serial, + Header = item.Header, + Date = item.Date, Inverted = item.Inverted, MIA = item.MIA, }; diff --git a/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs b/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs index df8c911f..133074b3 100644 --- a/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs @@ -306,26 +306,26 @@ namespace SabreTools.Serialization.CrossModel { Name = item.Name, Size = item.Size, - [Data.Models.Metadata.Rom.CRC16Key] = item.CRC16, - [Data.Models.Metadata.Rom.CRCKey] = item.CRC, - [Data.Models.Metadata.Rom.CRC64Key] = item.CRC64, - [Data.Models.Metadata.Rom.MD2Key] = item.MD2, - [Data.Models.Metadata.Rom.MD4Key] = item.MD4, - [Data.Models.Metadata.Rom.MD5Key] = item.MD5, - [Data.Models.Metadata.Rom.RIPEMD128Key] = item.RIPEMD128, - [Data.Models.Metadata.Rom.RIPEMD160Key] = item.RIPEMD160, - [Data.Models.Metadata.Rom.SHA1Key] = item.SHA1, - [Data.Models.Metadata.Rom.SHA256Key] = item.SHA256, - [Data.Models.Metadata.Rom.SHA384Key] = item.SHA384, - [Data.Models.Metadata.Rom.SHA512Key] = item.SHA512, - [Data.Models.Metadata.Rom.SpamSumKey] = item.SpamSum, - [Data.Models.Metadata.Rom.xxHash364Key] = item.xxHash364, - [Data.Models.Metadata.Rom.xxHash3128Key] = item.xxHash3128, - [Data.Models.Metadata.Rom.MergeKey] = item.Merge, + CRC16 = item.CRC16, + CRC = item.CRC, + CRC64 = item.CRC64, + MD2 = item.MD2, + MD4 = item.MD4, + MD5 = item.MD5, + RIPEMD128 = item.RIPEMD128, + RIPEMD160 = item.RIPEMD160, + SHA1 = item.SHA1, + SHA256 = item.SHA256, + SHA384 = item.SHA384, + SHA512 = item.SHA512, + SpamSum = item.SpamSum, + xxHash364 = item.xxHash364, + xxHash3128 = item.xxHash3128, + Merge = item.Merge, Status = item.Status, - [Data.Models.Metadata.Rom.SerialKey] = item.Serial, - [Data.Models.Metadata.Rom.HeaderKey] = item.Header, - [Data.Models.Metadata.Rom.DateKey] = item.Date, + Serial = item.Serial, + Header = item.Header, + Date = item.Date, Inverted = item.Inverted, MIA = item.MIA, }; diff --git a/SabreTools.Serialization.CrossModel/OfflineList.Deserializer.cs b/SabreTools.Serialization.CrossModel/OfflineList.Deserializer.cs index 35e03656..746b79aa 100644 --- a/SabreTools.Serialization.CrossModel/OfflineList.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/OfflineList.Deserializer.cs @@ -111,8 +111,8 @@ namespace SabreTools.Serialization.CrossModel { var fileRomCRC = new FileRomCRC { - Extension = item.ReadString(Data.Models.Metadata.Rom.ExtensionKey), - Content = item.ReadString(Data.Models.Metadata.Rom.CRCKey), + Extension = item.Extension, + Content = item.CRC, }; return fileRomCRC; } diff --git a/SabreTools.Serialization.CrossModel/OfflineList.Serializer.cs b/SabreTools.Serialization.CrossModel/OfflineList.Serializer.cs index 3da54c2d..e7bbbc42 100644 --- a/SabreTools.Serialization.CrossModel/OfflineList.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/OfflineList.Serializer.cs @@ -95,8 +95,8 @@ namespace SabreTools.Serialization.CrossModel { var rom = new Data.Models.Metadata.Rom { - [Data.Models.Metadata.Rom.ExtensionKey] = item.Extension, - [Data.Models.Metadata.Rom.CRCKey] = item.Content, + Extension = item.Extension, + CRC = item.Content, }; return rom; } diff --git a/SabreTools.Serialization.CrossModel/OpenMSX.Deserializer.cs b/SabreTools.Serialization.CrossModel/OpenMSX.Deserializer.cs index 0a021bb6..2ac846be 100644 --- a/SabreTools.Serialization.CrossModel/OpenMSX.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/OpenMSX.Deserializer.cs @@ -88,10 +88,10 @@ namespace SabreTools.Serialization.CrossModel { var megaRom = new MegaRom { - Start = item.ReadString(Data.Models.Metadata.Rom.StartKey), - Type = item.ReadString(Data.Models.Metadata.Rom.OpenMSXType), - Hash = item.ReadString(Data.Models.Metadata.Rom.SHA1Key), - Remark = item.ReadString(Data.Models.Metadata.Rom.RemarkKey), + Start = item.Start, + Type = item.OpenMSXType, + Hash = item.SHA1, + Remark = item.Remark, }; return megaRom; } @@ -116,10 +116,10 @@ namespace SabreTools.Serialization.CrossModel { var rom = new Rom { - Start = item.ReadString(Data.Models.Metadata.Rom.StartKey), - Type = item.ReadString(Data.Models.Metadata.Rom.OpenMSXType), - Hash = item.ReadString(Data.Models.Metadata.Rom.SHA1Key), - Remark = item.ReadString(Data.Models.Metadata.Rom.RemarkKey), + Start = item.Start, + Type = item.OpenMSXType, + Hash = item.SHA1, + Remark = item.Remark, }; return rom; } @@ -131,10 +131,10 @@ namespace SabreTools.Serialization.CrossModel { var sccPlusCart = new SCCPlusCart { - Start = item.ReadString(Data.Models.Metadata.Rom.StartKey), - Type = item.ReadString(Data.Models.Metadata.Rom.OpenMSXType), - Hash = item.ReadString(Data.Models.Metadata.Rom.SHA1Key), - Remark = item.ReadString(Data.Models.Metadata.Rom.RemarkKey), + Start = item.Start, + Type = item.OpenMSXType, + Hash = item.SHA1, + Remark = item.Remark, }; return sccPlusCart; } diff --git a/SabreTools.Serialization.CrossModel/OpenMSX.Serializer.cs b/SabreTools.Serialization.CrossModel/OpenMSX.Serializer.cs index e3bb4a66..d3c5b8ef 100644 --- a/SabreTools.Serialization.CrossModel/OpenMSX.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/OpenMSX.Serializer.cs @@ -110,10 +110,10 @@ namespace SabreTools.Serialization.CrossModel { var rom = new Data.Models.Metadata.Rom { - [Data.Models.Metadata.Rom.StartKey] = item.Start, - [Data.Models.Metadata.Rom.OpenMSXType] = item.Type, - [Data.Models.Metadata.Rom.SHA1Key] = item.Hash, - [Data.Models.Metadata.Rom.RemarkKey] = item.Remark, + Start = item.Start, + OpenMSXType = item.Type, + SHA1 = item.Hash, + Remark = item.Remark, }; return rom; } diff --git a/SabreTools.Serialization.CrossModel/RomCenter.Deserializer.cs b/SabreTools.Serialization.CrossModel/RomCenter.Deserializer.cs index 732c960e..80d5e5cf 100644 --- a/SabreTools.Serialization.CrossModel/RomCenter.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/RomCenter.Deserializer.cs @@ -103,10 +103,10 @@ namespace SabreTools.Serialization.CrossModel GameName = parent.Name, GameDescription = parent.Description, RomName = item.Name, - RomCRC = item.ReadString(Data.Models.Metadata.Rom.CRCKey), + RomCRC = item.CRC, RomSize = item.Size, RomOf = parent.RomOf, - MergeName = item.ReadString(Data.Models.Metadata.Rom.MergeKey), + MergeName = item.Merge, }; return row; } diff --git a/SabreTools.Serialization.CrossModel/RomCenter.Serializer.cs b/SabreTools.Serialization.CrossModel/RomCenter.Serializer.cs index 27c60028..a9e0289e 100644 --- a/SabreTools.Serialization.CrossModel/RomCenter.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/RomCenter.Serializer.cs @@ -86,9 +86,9 @@ namespace SabreTools.Serialization.CrossModel var rom = new Data.Models.Metadata.Rom { Name = item.RomName, - [Data.Models.Metadata.Rom.CRCKey] = item.RomCRC, + CRC = item.RomCRC, Size = item.RomSize, - [Data.Models.Metadata.Rom.MergeKey] = item.MergeName, + Merge = item.MergeName, }; return rom; } diff --git a/SabreTools.Serialization.CrossModel/SeparatedValue.Deserializer.cs b/SabreTools.Serialization.CrossModel/SeparatedValue.Deserializer.cs index c5861300..f055090f 100644 --- a/SabreTools.Serialization.CrossModel/SeparatedValue.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/SeparatedValue.Deserializer.cs @@ -140,13 +140,13 @@ namespace SabreTools.Serialization.CrossModel RomName = item.Name, DiskName = null, Size = item.Size, - CRC = item.ReadString(Data.Models.Metadata.Rom.CRCKey), - MD5 = item.ReadString(Data.Models.Metadata.Rom.MD5Key), - SHA1 = item.ReadString(Data.Models.Metadata.Rom.SHA1Key), - SHA256 = item.ReadString(Data.Models.Metadata.Rom.SHA256Key), - SHA384 = item.ReadString(Data.Models.Metadata.Rom.SHA384Key), - SHA512 = item.ReadString(Data.Models.Metadata.Rom.SHA512Key), - SpamSum = item.ReadString(Data.Models.Metadata.Rom.SpamSumKey), + CRC = item.CRC, + MD5 = item.MD5, + SHA1 = item.SHA1, + SHA256 = item.SHA256, + SHA384 = item.SHA384, + SHA512 = item.SHA512, + SpamSum = item.SpamSum, Status = item.Status, }; return row; diff --git a/SabreTools.Serialization.CrossModel/SeparatedValue.Serializer.cs b/SabreTools.Serialization.CrossModel/SeparatedValue.Serializer.cs index 947eb8b9..5b6b722d 100644 --- a/SabreTools.Serialization.CrossModel/SeparatedValue.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/SeparatedValue.Serializer.cs @@ -103,13 +103,13 @@ namespace SabreTools.Serialization.CrossModel { Name = item.RomName, Size = item.Size, - [Data.Models.Metadata.Rom.CRCKey] = item.CRC, - [Data.Models.Metadata.Rom.MD5Key] = item.MD5, - [Data.Models.Metadata.Rom.SHA1Key] = item.SHA1, - [Data.Models.Metadata.Rom.SHA256Key] = item.SHA256, - [Data.Models.Metadata.Rom.SHA384Key] = item.SHA384, - [Data.Models.Metadata.Rom.SHA512Key] = item.SHA512, - [Data.Models.Metadata.Rom.SpamSumKey] = item.SpamSum, + CRC = item.CRC, + MD5 = item.MD5, + SHA1 = item.SHA1, + SHA256 = item.SHA256, + SHA384 = item.SHA384, + SHA512 = item.SHA512, + SpamSum = item.SpamSum, Status = item.Status, }, _ => null, diff --git a/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs b/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs index 5da779d7..aeada097 100644 --- a/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs @@ -217,10 +217,10 @@ namespace SabreTools.Serialization.CrossModel { Name = item.Name, Size = item.Size, - Length = item.ReadString(Data.Models.Metadata.Rom.LengthKey), - CRC = item.ReadString(Data.Models.Metadata.Rom.CRCKey), - SHA1 = item.ReadString(Data.Models.Metadata.Rom.SHA1Key), - Offset = item.ReadString(Data.Models.Metadata.Rom.OffsetKey), + Length = item.Length, + CRC = item.CRC, + SHA1 = item.SHA1, + Offset = item.Offset, Value = item.Value, Status = item.Status, LoadFlag = item.LoadFlag, diff --git a/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs b/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs index c5625a60..28b8ef1b 100644 --- a/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs @@ -208,10 +208,10 @@ namespace SabreTools.Serialization.CrossModel { Name = item.Name, Size = item.Size, - [Data.Models.Metadata.Rom.LengthKey] = item.Length, - [Data.Models.Metadata.Rom.CRCKey] = item.CRC, - [Data.Models.Metadata.Rom.SHA1Key] = item.SHA1, - [Data.Models.Metadata.Rom.OffsetKey] = item.Offset, + Length = item.Length, + CRC = item.CRC, + SHA1 = item.SHA1, + Offset = item.Offset, Value = item.Value, Status = item.Status, LoadFlag = item.LoadFlag, From bf852ef0388b17719a5bb649eaa30164e4f21a99 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sat, 4 Apr 2026 23:13:36 -0400 Subject: [PATCH 102/142] DictionaryBase is no more, bon voyage --- .../MetadataExtensionsTests.cs | 6 +- SabreTools.Data.Models/Metadata/DatItem.cs | 2 +- .../Metadata/DictionaryBase.cs | 263 ------------------ SabreTools.Data.Models/Metadata/Header.cs | 10 +- SabreTools.Data.Models/Metadata/InfoSource.cs | 9 +- SabreTools.Data.Models/Metadata/Machine.cs | 2 +- .../Metadata/MetadataFile.cs | 2 +- .../DatFileTests.FromMetadata.cs | 9 +- .../DatFileTests.ToMetadata.cs | 1 + .../DatFile.FromMetadata.cs | 48 ++-- .../DatFile.ToMetadata.cs | 77 +---- SabreTools.Metadata.DatFiles/DatHeader.cs | 10 +- .../DatItemTests.cs | 2 +- .../Formats/Adjuster.cs | 2 +- .../Formats/Analog.cs | 2 +- .../Formats/Archive.cs | 2 +- .../Formats/BiosSet.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Blank.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Chip.cs | 2 +- .../Formats/Condition.cs | 2 +- .../Formats/ConfLocation.cs | 2 +- .../Formats/ConfSetting.cs | 2 +- .../Formats/Configuration.cs | 2 +- .../Formats/Control.cs | 2 +- .../Formats/DataArea.cs | 2 +- .../Formats/Device.cs | 2 +- .../Formats/DeviceRef.cs | 2 +- .../Formats/DipLocation.cs | 2 +- .../Formats/DipSwitch.cs | 2 +- .../Formats/DipValue.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Disk.cs | 2 +- .../Formats/DiskArea.cs | 2 +- .../Formats/Display.cs | 2 +- .../Formats/Driver.cs | 2 +- .../Formats/Extension.cs | 2 +- .../Formats/Feature.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Info.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Input.cs | 2 +- .../Formats/Instance.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Media.cs | 2 +- .../Formats/Original.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Part.cs | 2 +- .../Formats/PartFeature.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Port.cs | 2 +- .../Formats/RamOption.cs | 2 +- .../Formats/Release.cs | 2 +- .../Formats/ReleaseDetails.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Rom.cs | 2 +- .../Formats/Sample.cs | 2 +- .../Formats/Serials.cs | 2 +- .../Formats/SharedFeat.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Slot.cs | 2 +- .../Formats/SlotOption.cs | 2 +- .../Formats/SoftwareList.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Sound.cs | 2 +- .../Formats/SourceDetails.cs | 2 +- SabreTools.Metadata.DatItems/Machine.cs | 6 +- SabreTools.Metadata.Filter/FilterGroup.cs | 21 +- SabreTools.Metadata.Filter/FilterObject.cs | 61 ++-- SabreTools.Metadata.Filter/FilterRunner.cs | 10 +- .../ModelBackedItemTests.cs | 257 ----------------- SabreTools.Metadata/ModelBackedItem.cs | 2 +- SabreTools.Metadata/ModelBackedItemT.cs | 113 +------- .../ClrMamePro.Deserializer.cs | 2 +- .../ClrMamePro.Serializer.cs | 5 +- .../Logiqx.Serializer.cs | 2 +- .../RomCenter.Deserializer.cs | 3 +- .../SeparatedValue.Deserializer.cs | 6 +- .../SeparatedValue.Serializer.cs | 2 +- 69 files changed, 167 insertions(+), 850 deletions(-) delete mode 100644 SabreTools.Data.Models/Metadata/DictionaryBase.cs delete mode 100644 SabreTools.Metadata.Test/ModelBackedItemTests.cs diff --git a/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs b/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs index e7d0fe01..bc7a5ce5 100644 --- a/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs +++ b/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs @@ -2515,7 +2515,7 @@ namespace SabreTools.Data.Extensions.Test var other = new Disk(); self.FillMissingHashes(other); - Assert.Empty(self); + Assert.False(self.HasHashes()); } [Fact] @@ -2537,7 +2537,7 @@ namespace SabreTools.Data.Extensions.Test var self = new Media(); var other = new Media(); self.FillMissingHashes(other); - Assert.Empty(self); + Assert.False(self.HasHashes()); } [Fact] @@ -2561,7 +2561,7 @@ namespace SabreTools.Data.Extensions.Test var self = new Rom(); var other = new Rom(); self.FillMissingHashes(other); - Assert.Empty(self); + Assert.False(self.HasHashes()); } [Fact] diff --git a/SabreTools.Data.Models/Metadata/DatItem.cs b/SabreTools.Data.Models/Metadata/DatItem.cs index 85f6a0fb..13dd2bbb 100644 --- a/SabreTools.Data.Models/Metadata/DatItem.cs +++ b/SabreTools.Data.Models/Metadata/DatItem.cs @@ -6,7 +6,7 @@ namespace SabreTools.Data.Models.Metadata /// /// Format-agnostic representation of item data /// - public class DatItem : DictionaryBase + public class DatItem { /// /// Quick accessor to item type, if it exists diff --git a/SabreTools.Data.Models/Metadata/DictionaryBase.cs b/SabreTools.Data.Models/Metadata/DictionaryBase.cs deleted file mode 100644 index 9aec47bd..00000000 --- a/SabreTools.Data.Models/Metadata/DictionaryBase.cs +++ /dev/null @@ -1,263 +0,0 @@ -using System.Collections.Generic; - -namespace SabreTools.Data.Models.Metadata -{ - /// - /// Specialized dictionary base for item types - /// - public abstract class DictionaryBase : Dictionary - { - #region Read - - /// - /// Read a key as the specified type, returning null on error - /// - public T? Read(string key) - { - try - { - if (!ValidateReadKey(key)) - return default; - if (this[key] is not T) - return default; - return (T?)this[key]; - } - catch - { - return default; - } - } - - /// - /// Read a key as a bool, returning null on error - /// - /// TODO: Determine if this can be removed - public bool? ReadBool(string key) - { - if (!ValidateReadKey(key)) - return null; - - bool? asBool = Read(key); - if (asBool is not null) - return asBool; - - string? asString = Read(key); - return asString?.ToLowerInvariant() switch - { - "true" or "yes" => true, - "false" or "no" => false, - _ => null, - }; - } - - /// - /// Read a key as a double, returning null on error - /// - /// TODO: Determine if this can be removed - public double? ReadDouble(string key) - { - if (!ValidateReadKey(key)) - return null; - - double? asDouble = Read(key); - if (asDouble is not null) - return asDouble; - - float? asFloat = Read(key); - if (asFloat is not null) - return asFloat; - -#if NET5_0_OR_GREATER - System.Half? asHalf = Read(key); - if (asHalf is not null) - return (double?)asHalf; -#endif - - string? asString = Read(key); - if (asString is not null && double.TryParse(asString, out double asStringDouble)) - return asStringDouble; - - return null; - } - - /// - /// Read a key as a long, returning null on error - /// - /// TODO: Add logic to convert SI suffixes and hex - /// TODO: Determine if this can be removed - public long? ReadLong(string key) - { - if (!ValidateReadKey(key)) - return null; - - long? asLong = Read(key); - if (asLong is not null) - return asLong; - - int? asInt = Read(key); - if (asInt is not null) - return asInt; - - short? asShort = Read(key); - if (asShort is not null) - return asShort; - - string? asString = Read(key); - if (asString is not null && long.TryParse(asString, out long asStringLong)) - return asStringLong; - - return null; - } - - /// - /// Read a key as a string, returning null on error - /// - public string? ReadString(string key) - { - if (!ValidateReadKey(key)) - return null; - - string? asString = Read(key); - if (asString is not null) - return asString; - - string[]? asArray = Read(key); - if (asArray is not null) -#if NETFRAMEWORK || NETSTANDARD2_0 - return string.Join(",", asArray); -#else - return string.Join(',', asArray); -#endif - - // TODO: Add byte array conversion here - // TODO: Add byte array read helper - - return this[key]!.ToString(); - } - - /// - /// Read a key as a T[], returning null on error - /// - public T[]? ReadArray(string key) - { - if (!ValidateReadKey(key)) - return null; - - var items = Read(key); - if (items is not null) - return items; - - var single = Read(key); - if (single is not null) - return [single]; - - return null; - } - - /// - /// Read a key as a string[], returning null on error - /// - /// TODO: Determine if this can be removed - public string[]? ReadStringArray(string key) - { - if (!ValidateReadKey(key)) - return null; - - string[]? asArray = Read(key); - if (asArray is not null) - return asArray; - - string? asString = Read(key); - if (asString is not null) - return [asString]; - - asString = this[key]!.ToString(); - if (asString is not null) - return [asString]; - - return null; - } - - /// - /// Check if a key is valid for read - /// - private bool ValidateReadKey(string key) - { - if (string.IsNullOrEmpty(key)) - return false; - else if (!ContainsKey(key)) - return false; - else if (this[key] is null) - return false; - - return true; - } - - #endregion - - #region Write - - /// - /// Remove a key, if possible - /// - public new bool Remove(string? fieldName) - { - // If the item or field name are missing, we can't do anything - if (string.IsNullOrEmpty(fieldName)) - return false; - - // If the key doesn't exist, then it's already removed - if (!ContainsKey(fieldName!)) - return true; - - // Remove the key - base.Remove(fieldName!); - return true; - } - - /// - /// Replace a field from another item - /// - public bool Replace(DictionaryBase? from, string fieldName) - { - // If the source item is invalid - if (from is null) - return false; - - // If the field name is missing, we can't do anything - if (string.IsNullOrEmpty(fieldName)) - return false; - - // If the types of the items are not the same, we can't do anything - if (from.GetType() != GetType()) - return false; - - // If the key doesn't exist in the source, we can't do anything - if (!from.TryGetValue(fieldName!, out var value)) - return false; - - // Set the key - this[fieldName!] = value; - return true; - } - - /// - /// Write a key as the specified type, returning false on error - /// - /// Field to set - /// Value to set - /// True if the value was set, false otherwise - public bool Write(string fieldName, T? value) - { - // Invalid field cannot be processed - if (fieldName is null) - return false; - - // Set the value based on the type - this[fieldName] = value; - return true; - } - - #endregion - } -} diff --git a/SabreTools.Data.Models/Metadata/Header.cs b/SabreTools.Data.Models/Metadata/Header.cs index 1d8f30cb..eca5505d 100644 --- a/SabreTools.Data.Models/Metadata/Header.cs +++ b/SabreTools.Data.Models/Metadata/Header.cs @@ -6,7 +6,7 @@ namespace SabreTools.Data.Models.Metadata /// /// Format-agnostic representation of metadata header data /// - public class Header : DictionaryBase, ICloneable, IEquatable
+ public class Header : ICloneable, IEquatable
{ #region Properties @@ -37,6 +37,8 @@ namespace SabreTools.Data.Models.Metadata public string? EmulatorVersion { get; set; } + public string? FileName { get; set; } + /// (none|split|merged|nonmerged|fullmerged|device|full) "split" public MergingFlag ForceMerging { get; set; } @@ -135,6 +137,7 @@ namespace SabreTools.Data.Models.Metadata obj.Description = Description; obj.Email = Email; obj.EmulatorVersion = EmulatorVersion; + obj.FileName = FileName; obj.ForceMerging = ForceMerging; obj.ForceNodump = ForceNodump; obj.ForcePacking = ForcePacking; @@ -231,6 +234,11 @@ namespace SabreTools.Data.Models.Metadata else if (EmulatorVersion is not null && !EmulatorVersion.Equals(other.EmulatorVersion, StringComparison.OrdinalIgnoreCase)) return false; + if ((FileName is null) ^ (other.FileName is null)) + return false; + else if (FileName is not null && !FileName.Equals(other.FileName, StringComparison.OrdinalIgnoreCase)) + return false; + if (ForceMerging != other.ForceMerging) return false; diff --git a/SabreTools.Data.Models/Metadata/InfoSource.cs b/SabreTools.Data.Models/Metadata/InfoSource.cs index 0caa79bd..909fde2d 100644 --- a/SabreTools.Data.Models/Metadata/InfoSource.cs +++ b/SabreTools.Data.Models/Metadata/InfoSource.cs @@ -4,13 +4,8 @@ using Newtonsoft.Json; namespace SabreTools.Data.Models.Metadata { [JsonObject("infosource"), XmlRoot("infosource")] - public class InfoSource : DictionaryBase + public class InfoSource { - #region Keys - - /// string[] - public const string SourceKey = "source"; - - #endregion + public string[]? Source { get; set; } } } diff --git a/SabreTools.Data.Models/Metadata/Machine.cs b/SabreTools.Data.Models/Metadata/Machine.cs index 2563a549..7ca9bde4 100644 --- a/SabreTools.Data.Models/Metadata/Machine.cs +++ b/SabreTools.Data.Models/Metadata/Machine.cs @@ -5,7 +5,7 @@ namespace SabreTools.Data.Models.Metadata /// /// Format-agnostic representation of game, machine, and set data /// - public class Machine : DictionaryBase, ICloneable, IEquatable + public class Machine : ICloneable, IEquatable { #region Properties diff --git a/SabreTools.Data.Models/Metadata/MetadataFile.cs b/SabreTools.Data.Models/Metadata/MetadataFile.cs index efbfbd1c..1b23fb8e 100644 --- a/SabreTools.Data.Models/Metadata/MetadataFile.cs +++ b/SabreTools.Data.Models/Metadata/MetadataFile.cs @@ -6,7 +6,7 @@ namespace SabreTools.Data.Models.Metadata ///
/// TODO: ICloneable /// TODO: IComparable - public class MetadataFile : DictionaryBase + public class MetadataFile { public Header? Header { get; set; } diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs index bf5feeff..287dec21 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs @@ -25,7 +25,7 @@ namespace SabreTools.Metadata.DatFiles.Test [Fact] public void ConvertFromMetadata_Empty() { - Data.Models.Metadata.MetadataFile? item = []; + Data.Models.Metadata.MetadataFile? item = new Data.Models.Metadata.MetadataFile(); DatFile datFile = new Formats.Logiqx(null, useGame: false); datFile.ConvertFromMetadata(item, "filename", indexId: 0, keep: true, statsOnly: false, filterRunner: null); @@ -211,6 +211,7 @@ namespace SabreTools.Metadata.DatFiles.Test Description = "description", Email = "email", EmulatorVersion = "emulatorversion", + FileName = "filename", ForceMerging = Data.Models.Metadata.MergingFlag.Merged, ForceNodump = Data.Models.Metadata.NodumpFlag.Required, ForcePacking = Data.Models.Metadata.PackingFlag.Zip, @@ -549,7 +550,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Endianness = Data.Models.Metadata.Endianness.Big, Name = "name", - Rom = [[]], + Rom = [new Data.Models.Metadata.Rom()], Size = 12345, Width = Data.Models.Metadata.Width.Long, }; @@ -575,7 +576,7 @@ namespace SabreTools.Metadata.DatFiles.Test { return new Data.Models.Metadata.DiskArea { - Disk = [[]], + Disk = [new Data.Models.Metadata.Disk()], Name = "name", }; } @@ -716,7 +717,7 @@ namespace SabreTools.Metadata.DatFiles.Test { DataArea = [CreateMetadataDataArea()], DiskArea = [CreateMetadataDiskArea()], - DipSwitch = [[]], + DipSwitch = [new Data.Models.Metadata.DipSwitch()], Feature = [CreateMetadataFeature()], Interface = "interface", Name = "name", diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs index 305af4d3..bae88c63 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs @@ -360,6 +360,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("description", header.Description); Assert.Equal("email", header.Email); Assert.Equal("emulatorversion", header.EmulatorVersion); + Assert.Equal("filename", header.FileName); Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, header.ForceMerging); Assert.Equal(Data.Models.Metadata.NodumpFlag.Required, header.ForceNodump); Assert.Equal(Data.Models.Metadata.PackingFlag.Zip, header.ForcePacking); diff --git a/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs b/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs index 1727a456..f2e8890d 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs @@ -239,7 +239,7 @@ namespace SabreTools.Metadata.DatFiles // Convert items in the machine if (item.Adjuster is not null) { - var items = item.Adjuster ?? []; + var items = item.Adjuster; var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item)); Array.ForEach(filtered, item => { @@ -251,7 +251,7 @@ namespace SabreTools.Metadata.DatFiles if (item.Archive is not null) { - var items = item.Archive ?? []; + var items = item.Archive; var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item)); Array.ForEach(filtered, item => { @@ -263,7 +263,7 @@ namespace SabreTools.Metadata.DatFiles if (item.BiosSet is not null) { - var items = item.BiosSet ?? []; + var items = item.BiosSet; var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item)); Array.ForEach(filtered, item => { @@ -275,7 +275,7 @@ namespace SabreTools.Metadata.DatFiles if (item.Chip is not null) { - var items = item.Chip ?? []; + var items = item.Chip; var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item)); Array.ForEach(filtered, item => { @@ -287,7 +287,7 @@ namespace SabreTools.Metadata.DatFiles if (item.Configuration is not null) { - var items = item.Configuration ?? []; + var items = item.Configuration; var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item)); Array.ForEach(filtered, item => { @@ -299,7 +299,7 @@ namespace SabreTools.Metadata.DatFiles if (item.Device is not null) { - var items = item.Device ?? []; + var items = item.Device; var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item)); Array.ForEach(filtered, item => { @@ -311,7 +311,7 @@ namespace SabreTools.Metadata.DatFiles if (item.DeviceRef is not null) { - var items = item.DeviceRef ?? []; + var items = item.DeviceRef; // Do not filter these due to later use Array.ForEach(items, item => { @@ -323,7 +323,7 @@ namespace SabreTools.Metadata.DatFiles if (item.DipSwitch is not null) { - var items = item.DipSwitch ?? []; + var items = item.DipSwitch; var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item)); Array.ForEach(filtered, item => { @@ -335,7 +335,7 @@ namespace SabreTools.Metadata.DatFiles if (item.Disk is not null) { - var items = item.Disk ?? []; + var items = item.Disk; var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item)); Array.ForEach(filtered, item => { @@ -347,7 +347,7 @@ namespace SabreTools.Metadata.DatFiles if (item.Display is not null) { - var items = item.Display ?? []; + var items = item.Display; var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item)); Array.ForEach(filtered, item => { @@ -366,7 +366,7 @@ namespace SabreTools.Metadata.DatFiles if (item.Dump is not null) { - var items = item.Dump ?? []; + var items = item.Dump; for (int i = 0; i < items.Length; i++) { var datItem = new Rom(items[i], machine, source, i); @@ -391,7 +391,7 @@ namespace SabreTools.Metadata.DatFiles if (item.Feature is not null) { - var items = item.Feature ?? []; + var items = item.Feature; var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item)); Array.ForEach(filtered, item => { @@ -403,7 +403,7 @@ namespace SabreTools.Metadata.DatFiles if (item.Info is not null) { - var items = item.Info ?? []; + var items = item.Info; var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item)); Array.ForEach(filtered, item => { @@ -422,7 +422,7 @@ namespace SabreTools.Metadata.DatFiles if (item.Media is not null) { - var items = item.Media ?? []; + var items = item.Media; var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item)); Array.ForEach(filtered, item => { @@ -434,13 +434,13 @@ namespace SabreTools.Metadata.DatFiles if (item.Part is not null) { - var items = item.Part ?? []; + var items = item.Part; ProcessItems(items, machine, machineIndex: 0, source, sourceIndex, statsOnly, filterRunner); } if (item.Port is not null) { - var items = item.Port ?? []; + var items = item.Port; var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item)); Array.ForEach(filtered, item => { @@ -452,7 +452,7 @@ namespace SabreTools.Metadata.DatFiles if (item.RamOption is not null) { - var items = item.RamOption ?? []; + var items = item.RamOption; var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item)); Array.ForEach(filtered, item => { @@ -464,7 +464,7 @@ namespace SabreTools.Metadata.DatFiles if (item.Release is not null) { - var items = item.Release ?? []; + var items = item.Release; var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item)); Array.ForEach(filtered, item => { @@ -476,7 +476,7 @@ namespace SabreTools.Metadata.DatFiles if (item.Rom is not null) { - var items = item.Rom ?? []; + var items = item.Rom; var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item)); Array.ForEach(filtered, item => { @@ -491,7 +491,7 @@ namespace SabreTools.Metadata.DatFiles if (item.Sample is not null) { - var items = item.Sample ?? []; + var items = item.Sample; var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item)); Array.ForEach(filtered, item => { @@ -503,7 +503,7 @@ namespace SabreTools.Metadata.DatFiles if (item.SharedFeat is not null) { - var items = item.SharedFeat ?? []; + var items = item.SharedFeat; var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item)); Array.ForEach(filtered, item => { @@ -515,7 +515,7 @@ namespace SabreTools.Metadata.DatFiles if (item.Slot is not null) { - var items = item.Slot ?? []; + var items = item.Slot; // Do not filter these due to later use Array.ForEach(items, item => { @@ -527,7 +527,7 @@ namespace SabreTools.Metadata.DatFiles if (item.SoftwareList is not null) { - var items = item.SoftwareList ?? []; + var items = item.SoftwareList; var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item)); Array.ForEach(filtered, item => { @@ -546,7 +546,7 @@ namespace SabreTools.Metadata.DatFiles if (item.Video is not null) { - var items = item.Video ?? []; + var items = item.Video; var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item)); Array.ForEach(filtered, item => { diff --git a/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs b/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs index 4f1be21e..a18df700 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs @@ -270,25 +270,19 @@ namespace SabreTools.Metadata.DatFiles // Create the part in the dictionary, if needed if (!partItems.ContainsKey(partName)) - partItems[partName] = []; + partItems[partName] = new(); // Copy over string values partItems[partName].Name = partName; if (partItems[partName].Interface == null) partItems[partName].Interface = partItem.Interface; - // Clear any empty fields - ClearEmptyKeys(partItems[partName]); - // If the item has a DataArea mapping if (dataAreaMappings.TryGetValue(partItem, out (Data.Models.Metadata.DataArea, Data.Models.Metadata.Rom) dataAreaMap)) { // Get the mapped items var (dataArea, romItem) = dataAreaMap; - // Clear any empty fields - ClearEmptyKeys(romItem); - // Get the data area name and skip if there's none string? dataAreaName = dataArea.Name; if (dataAreaName is not null) @@ -306,16 +300,15 @@ namespace SabreTools.Metadata.DatFiles } else { - aggregateDataArea = []; - aggregateDataArea.Endianness = dataArea.Endianness; - aggregateDataArea.Name = dataArea.Name; - aggregateDataArea.Size = dataArea.Size; - aggregateDataArea.Width = dataArea.Width; + aggregateDataArea = new() + { + Endianness = dataArea.Endianness, + Name = dataArea.Name, + Size = dataArea.Size, + Width = dataArea.Width, + }; } - // Clear any empty fields - ClearEmptyKeys(aggregateDataArea); - // Get existing roms as a list var romsArr = aggregateDataArea.Rom ?? []; List roms = [.. romsArr]; @@ -343,9 +336,6 @@ namespace SabreTools.Metadata.DatFiles // Get the mapped items var (diskArea, diskItem) = diskAreaMap; - // Clear any empty fields - ClearEmptyKeys(diskItem); - // Get the disk area name and skip if there's none string? diskAreaName = diskArea.Name; if (diskAreaName is not null) @@ -363,13 +353,10 @@ namespace SabreTools.Metadata.DatFiles } else { - aggregateDiskArea = []; + aggregateDiskArea = new(); aggregateDiskArea.Name = diskArea.Name; } - // Clear any empty fields - ClearEmptyKeys(aggregateDiskArea); - // Get existing disks as a list var disksArr = aggregateDiskArea.Disk ?? []; List disks = [.. disksArr]; @@ -398,9 +385,6 @@ namespace SabreTools.Metadata.DatFiles var dipSwitchesArr = partItems[partName].DipSwitch ?? []; List dipSwitches = [.. dipSwitchesArr]; - // Clear any empty fields - ClearEmptyKeys(dipSwitchItem); - // Add the dipswitch dipSwitches.Add(dipSwitchItem); @@ -415,9 +399,6 @@ namespace SabreTools.Metadata.DatFiles var featuresArr = partItems[partName].Feature ?? []; List features = [.. featuresArr]; - // Clear any empty fields - ClearEmptyKeys(featureItem); - // Add the feature features.Add(featureItem); @@ -646,25 +627,19 @@ namespace SabreTools.Metadata.DatFiles // Create the part in the dictionary, if needed if (!partItems.ContainsKey(partName)) - partItems[partName] = []; + partItems[partName] = new(); // Copy over string values partItems[partName].Name = partName; if (partItems[partName].Interface == null) partItems[partName].Interface = partItem.Interface; - // Clear any empty fields - ClearEmptyKeys(partItems[partName]); - // If the item has a DataArea mapping if (dataAreaMappings.TryGetValue(partItem, out (Data.Models.Metadata.DataArea, Data.Models.Metadata.Rom) dataAreaMap)) { // Get the mapped items var (dataArea, romItem) = dataAreaMap; - // Clear any empty fields - ClearEmptyKeys(romItem); - // Get the data area name and skip if there's none string? dataAreaName = dataArea.Name; if (dataAreaName is not null) @@ -682,16 +657,13 @@ namespace SabreTools.Metadata.DatFiles } else { - aggregateDataArea = []; + aggregateDataArea = new(); aggregateDataArea.Endianness = dataArea.Endianness; aggregateDataArea.Name = dataArea.Name; aggregateDataArea.Size = dataArea.Size; aggregateDataArea.Width = dataArea.Width; } - // Clear any empty fields - ClearEmptyKeys(aggregateDataArea); - // Get existing roms as a list var romsArr = aggregateDataArea.Rom ?? []; List roms = [.. romsArr]; @@ -719,9 +691,6 @@ namespace SabreTools.Metadata.DatFiles // Get the mapped items var (diskArea, diskItem) = diskAreaMap; - // Clear any empty fields - ClearEmptyKeys(diskItem); - // Get the disk area name and skip if there's none string? diskAreaName = diskArea.Name; if (diskAreaName is not null) @@ -739,13 +708,10 @@ namespace SabreTools.Metadata.DatFiles } else { - aggregateDiskArea = []; + aggregateDiskArea = new(); aggregateDiskArea.Name = diskArea.Name; } - // Clear any empty fields - ClearEmptyKeys(aggregateDiskArea); - // Get existing disks as a list var disksArr = aggregateDiskArea.Disk ?? []; List disks = [.. disksArr]; @@ -774,9 +740,6 @@ namespace SabreTools.Metadata.DatFiles var dipSwitchesArr = partItems[partName].DipSwitch ?? []; List dipSwitches = [.. dipSwitchesArr]; - // Clear any empty fields - ClearEmptyKeys(dipSwitchItem); - // Add the dipswitch dipSwitches.Add(dipSwitchItem); @@ -791,9 +754,6 @@ namespace SabreTools.Metadata.DatFiles var featuresArr = partItems[partName].Feature ?? []; List features = [.. featuresArr]; - // Clear any empty fields - ClearEmptyKeys(featureItem); - // Add the feature features.Add(featureItem); @@ -953,19 +913,6 @@ namespace SabreTools.Metadata.DatFiles return romItem; } - /// - /// Clear empty keys from a DictionaryBase object - /// - private static void ClearEmptyKeys(Data.Models.Metadata.DictionaryBase obj) - { - string[] fieldNames = [.. obj.Keys]; - foreach (string fieldName in fieldNames) - { - if (obj[fieldName] is null) - obj.Remove(fieldName); - } - } - #endregion } } diff --git a/SabreTools.Metadata.DatFiles/DatHeader.cs b/SabreTools.Metadata.DatFiles/DatHeader.cs index 288f418c..5f8b4a59 100644 --- a/SabreTools.Metadata.DatFiles/DatHeader.cs +++ b/SabreTools.Metadata.DatFiles/DatHeader.cs @@ -96,10 +96,11 @@ namespace SabreTools.Metadata.DatFiles set => _internal.EmulatorVersion = value; } - /// - /// External name of the DAT - /// - public string? FileName { get; set; } + public string? FileName + { + get => _internal.FileName; + set => _internal.FileName = value; + } public MergingFlag ForceMerging { @@ -332,7 +333,6 @@ namespace SabreTools.Metadata.DatFiles public object Clone() => new DatHeader(GetInternalClone()) { DatFormat = DatFormat, - FileName = FileName, }; /// diff --git a/SabreTools.Metadata.DatItems.Test/DatItemTests.cs b/SabreTools.Metadata.DatItems.Test/DatItemTests.cs index 3cc3846e..41a74156 100644 --- a/SabreTools.Metadata.DatItems.Test/DatItemTests.cs +++ b/SabreTools.Metadata.DatItems.Test/DatItemTests.cs @@ -52,7 +52,7 @@ namespace SabreTools.Metadata.DatItems.Test /// public override TestDatItemModel GetInternalClone() { - return (_internal as TestDatItemModel)?.Clone() as TestDatItemModel ?? []; + return (_internal as TestDatItemModel)?.Clone() as TestDatItemModel ?? new(); } /// diff --git a/SabreTools.Metadata.DatItems/Formats/Adjuster.cs b/SabreTools.Metadata.DatItems/Formats/Adjuster.cs index affffe81..bc70c791 100644 --- a/SabreTools.Metadata.DatItems/Formats/Adjuster.cs +++ b/SabreTools.Metadata.DatItems/Formats/Adjuster.cs @@ -71,7 +71,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.Adjuster GetInternalClone() { - var adjusterItem = (_internal as Data.Models.Metadata.Adjuster)?.Clone() as Data.Models.Metadata.Adjuster ?? []; + var adjusterItem = (_internal as Data.Models.Metadata.Adjuster)?.Clone() as Data.Models.Metadata.Adjuster ?? new(); if (Condition is not null) adjusterItem.Condition = Condition.GetInternalClone(); diff --git a/SabreTools.Metadata.DatItems/Formats/Analog.cs b/SabreTools.Metadata.DatItems/Formats/Analog.cs index e8bbe26b..b10964e2 100644 --- a/SabreTools.Metadata.DatItems/Formats/Analog.cs +++ b/SabreTools.Metadata.DatItems/Formats/Analog.cs @@ -54,7 +54,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.Analog GetInternalClone() - => (_internal as Data.Models.Metadata.Analog)?.Clone() as Data.Models.Metadata.Analog ?? []; + => (_internal as Data.Models.Metadata.Analog)?.Clone() as Data.Models.Metadata.Analog ?? new(); #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/Archive.cs b/SabreTools.Metadata.DatItems/Formats/Archive.cs index 5a683212..cff73122 100644 --- a/SabreTools.Metadata.DatItems/Formats/Archive.cs +++ b/SabreTools.Metadata.DatItems/Formats/Archive.cs @@ -245,7 +245,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.Archive GetInternalClone() - => (_internal as Data.Models.Metadata.Archive)?.Clone() as Data.Models.Metadata.Archive ?? []; + => (_internal as Data.Models.Metadata.Archive)?.Clone() as Data.Models.Metadata.Archive ?? new(); #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/BiosSet.cs b/SabreTools.Metadata.DatItems/Formats/BiosSet.cs index 1d9d89b4..f266ecf0 100644 --- a/SabreTools.Metadata.DatItems/Formats/BiosSet.cs +++ b/SabreTools.Metadata.DatItems/Formats/BiosSet.cs @@ -66,7 +66,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.BiosSet GetInternalClone() - => (_internal as Data.Models.Metadata.BiosSet)?.Clone() as Data.Models.Metadata.BiosSet ?? []; + => (_internal as Data.Models.Metadata.BiosSet)?.Clone() as Data.Models.Metadata.BiosSet ?? new(); #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/Blank.cs b/SabreTools.Metadata.DatItems/Formats/Blank.cs index 2843e2b4..7b85232b 100644 --- a/SabreTools.Metadata.DatItems/Formats/Blank.cs +++ b/SabreTools.Metadata.DatItems/Formats/Blank.cs @@ -48,7 +48,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.Blank GetInternalClone() - => (_internal as Data.Models.Metadata.Blank)?.Clone() as Data.Models.Metadata.Blank ?? []; + => (_internal as Data.Models.Metadata.Blank)?.Clone() as Data.Models.Metadata.Blank ?? new(); #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/Chip.cs b/SabreTools.Metadata.DatItems/Formats/Chip.cs index 31540d40..6496de9f 100644 --- a/SabreTools.Metadata.DatItems/Formats/Chip.cs +++ b/SabreTools.Metadata.DatItems/Formats/Chip.cs @@ -84,7 +84,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.Chip GetInternalClone() - => (_internal as Data.Models.Metadata.Chip)?.Clone() as Data.Models.Metadata.Chip ?? []; + => (_internal as Data.Models.Metadata.Chip)?.Clone() as Data.Models.Metadata.Chip ?? new(); #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/Condition.cs b/SabreTools.Metadata.DatItems/Formats/Condition.cs index 29d52d80..25d05b81 100644 --- a/SabreTools.Metadata.DatItems/Formats/Condition.cs +++ b/SabreTools.Metadata.DatItems/Formats/Condition.cs @@ -72,7 +72,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.Condition GetInternalClone() - => (_internal as Data.Models.Metadata.Condition)?.Clone() as Data.Models.Metadata.Condition ?? []; + => (_internal as Data.Models.Metadata.Condition)?.Clone() as Data.Models.Metadata.Condition ?? new(); #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs b/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs index b2163c11..1a392563 100644 --- a/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs +++ b/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs @@ -66,7 +66,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.ConfLocation GetInternalClone() - => (_internal as Data.Models.Metadata.ConfLocation)?.Clone() as Data.Models.Metadata.ConfLocation ?? []; + => (_internal as Data.Models.Metadata.ConfLocation)?.Clone() as Data.Models.Metadata.ConfLocation ?? new(); #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs b/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs index 18260865..c40dad2c 100644 --- a/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs +++ b/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs @@ -77,7 +77,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.ConfSetting GetInternalClone() { - var confSettingItem = (_internal as Data.Models.Metadata.ConfSetting)?.Clone() as Data.Models.Metadata.ConfSetting ?? []; + var confSettingItem = (_internal as Data.Models.Metadata.ConfSetting)?.Clone() as Data.Models.Metadata.ConfSetting ?? new(); if (Condition is not null) confSettingItem.Condition = Condition.GetInternalClone(); diff --git a/SabreTools.Metadata.DatItems/Formats/Configuration.cs b/SabreTools.Metadata.DatItems/Formats/Configuration.cs index 0aaf48ec..85de6b66 100644 --- a/SabreTools.Metadata.DatItems/Formats/Configuration.cs +++ b/SabreTools.Metadata.DatItems/Formats/Configuration.cs @@ -94,7 +94,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.Configuration GetInternalClone() { - var configurationItem = (_internal as Data.Models.Metadata.Configuration)?.Clone() as Data.Models.Metadata.Configuration ?? []; + var configurationItem = (_internal as Data.Models.Metadata.Configuration)?.Clone() as Data.Models.Metadata.Configuration ?? new(); if (Condition is not null) configurationItem.Condition = Condition.GetInternalClone(); diff --git a/SabreTools.Metadata.DatItems/Formats/Control.cs b/SabreTools.Metadata.DatItems/Formats/Control.cs index 123b101d..35a0d5c6 100644 --- a/SabreTools.Metadata.DatItems/Formats/Control.cs +++ b/SabreTools.Metadata.DatItems/Formats/Control.cs @@ -120,7 +120,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.Control GetInternalClone() - => (_internal as Data.Models.Metadata.Control)?.Clone() as Data.Models.Metadata.Control ?? []; + => (_internal as Data.Models.Metadata.Control)?.Clone() as Data.Models.Metadata.Control ?? new(); #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/DataArea.cs b/SabreTools.Metadata.DatItems/Formats/DataArea.cs index 141c126d..a60830ff 100644 --- a/SabreTools.Metadata.DatItems/Formats/DataArea.cs +++ b/SabreTools.Metadata.DatItems/Formats/DataArea.cs @@ -84,7 +84,7 @@ namespace SabreTools.Metadata.DatItems.Formats public override Data.Models.Metadata.DataArea GetInternalClone() { - var partItem = (_internal as Data.Models.Metadata.DataArea)?.Clone() as Data.Models.Metadata.DataArea ?? []; + var partItem = (_internal as Data.Models.Metadata.DataArea)?.Clone() as Data.Models.Metadata.DataArea ?? new(); if (Rom is not null) partItem.Rom = Array.ConvertAll(Rom, rom => rom.GetInternalClone()); diff --git a/SabreTools.Metadata.DatItems/Formats/Device.cs b/SabreTools.Metadata.DatItems/Formats/Device.cs index 100fcdfd..58a01385 100644 --- a/SabreTools.Metadata.DatItems/Formats/Device.cs +++ b/SabreTools.Metadata.DatItems/Formats/Device.cs @@ -98,7 +98,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.Device GetInternalClone() { - var deviceItem = (_internal as Data.Models.Metadata.Device)?.Clone() as Data.Models.Metadata.Device ?? []; + var deviceItem = (_internal as Data.Models.Metadata.Device)?.Clone() as Data.Models.Metadata.Device ?? new(); deviceItem.DeviceType = DeviceType; deviceItem.FixedImage = FixedImage; diff --git a/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs b/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs index ec169f2a..84688b8a 100644 --- a/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs +++ b/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs @@ -54,7 +54,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.DeviceRef GetInternalClone() - => (_internal as Data.Models.Metadata.DeviceRef)?.Clone() as Data.Models.Metadata.DeviceRef ?? []; + => (_internal as Data.Models.Metadata.DeviceRef)?.Clone() as Data.Models.Metadata.DeviceRef ?? new(); #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/DipLocation.cs b/SabreTools.Metadata.DatItems/Formats/DipLocation.cs index 711c3b2b..ee90e76d 100644 --- a/SabreTools.Metadata.DatItems/Formats/DipLocation.cs +++ b/SabreTools.Metadata.DatItems/Formats/DipLocation.cs @@ -66,7 +66,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.DipLocation GetInternalClone() - => (_internal as Data.Models.Metadata.DipLocation)?.Clone() as Data.Models.Metadata.DipLocation ?? []; + => (_internal as Data.Models.Metadata.DipLocation)?.Clone() as Data.Models.Metadata.DipLocation ?? new(); #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs b/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs index b6758013..4f636028 100644 --- a/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs +++ b/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs @@ -121,7 +121,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.DipSwitch GetInternalClone() { - var dipSwitchItem = (_internal as Data.Models.Metadata.DipSwitch)?.Clone() as Data.Models.Metadata.DipSwitch ?? []; + var dipSwitchItem = (_internal as Data.Models.Metadata.DipSwitch)?.Clone() as Data.Models.Metadata.DipSwitch ?? new(); if (Condition is not null) dipSwitchItem.Condition = Condition.GetInternalClone(); diff --git a/SabreTools.Metadata.DatItems/Formats/DipValue.cs b/SabreTools.Metadata.DatItems/Formats/DipValue.cs index 33d61db6..2e7bb8c5 100644 --- a/SabreTools.Metadata.DatItems/Formats/DipValue.cs +++ b/SabreTools.Metadata.DatItems/Formats/DipValue.cs @@ -77,7 +77,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.DipValue GetInternalClone() { - var dipValueItem = (_internal as Data.Models.Metadata.DipValue)?.Clone() as Data.Models.Metadata.DipValue ?? []; + var dipValueItem = (_internal as Data.Models.Metadata.DipValue)?.Clone() as Data.Models.Metadata.DipValue ?? new(); if (Condition is not null) dipValueItem.Condition = Condition.GetInternalClone(); diff --git a/SabreTools.Metadata.DatItems/Formats/Disk.cs b/SabreTools.Metadata.DatItems/Formats/Disk.cs index dfa16d2f..9de6a777 100644 --- a/SabreTools.Metadata.DatItems/Formats/Disk.cs +++ b/SabreTools.Metadata.DatItems/Formats/Disk.cs @@ -143,7 +143,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.Disk GetInternalClone() - => (_internal as Data.Models.Metadata.Disk)?.Clone() as Data.Models.Metadata.Disk ?? []; + => (_internal as Data.Models.Metadata.Disk)?.Clone() as Data.Models.Metadata.Disk ?? new(); /// /// Convert a disk to the closest Rom approximation diff --git a/SabreTools.Metadata.DatItems/Formats/DiskArea.cs b/SabreTools.Metadata.DatItems/Formats/DiskArea.cs index 4ef32fa8..82f19083 100644 --- a/SabreTools.Metadata.DatItems/Formats/DiskArea.cs +++ b/SabreTools.Metadata.DatItems/Formats/DiskArea.cs @@ -66,7 +66,7 @@ namespace SabreTools.Metadata.DatItems.Formats public override Data.Models.Metadata.DiskArea GetInternalClone() { - var partItem = (_internal as Data.Models.Metadata.DiskArea)?.Clone() as Data.Models.Metadata.DiskArea ?? []; + var partItem = (_internal as Data.Models.Metadata.DiskArea)?.Clone() as Data.Models.Metadata.DiskArea ?? new(); if (Disk is not null) partItem.Disk = Array.ConvertAll(Disk, rom => rom.GetInternalClone()); diff --git a/SabreTools.Metadata.DatItems/Formats/Display.cs b/SabreTools.Metadata.DatItems/Formats/Display.cs index 570ee2ba..6642272c 100644 --- a/SabreTools.Metadata.DatItems/Formats/Display.cs +++ b/SabreTools.Metadata.DatItems/Formats/Display.cs @@ -161,7 +161,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.Display GetInternalClone() - => (_internal as Data.Models.Metadata.Display)?.Clone() as Data.Models.Metadata.Display ?? []; + => (_internal as Data.Models.Metadata.Display)?.Clone() as Data.Models.Metadata.Display ?? new(); #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/Driver.cs b/SabreTools.Metadata.DatItems/Formats/Driver.cs index 82068bc4..ffc34aa7 100644 --- a/SabreTools.Metadata.DatItems/Formats/Driver.cs +++ b/SabreTools.Metadata.DatItems/Formats/Driver.cs @@ -120,7 +120,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.Driver GetInternalClone() - => (_internal as Data.Models.Metadata.Driver)?.Clone() as Data.Models.Metadata.Driver ?? []; + => (_internal as Data.Models.Metadata.Driver)?.Clone() as Data.Models.Metadata.Driver ?? new(); #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/Extension.cs b/SabreTools.Metadata.DatItems/Formats/Extension.cs index c9afcb81..99a84580 100644 --- a/SabreTools.Metadata.DatItems/Formats/Extension.cs +++ b/SabreTools.Metadata.DatItems/Formats/Extension.cs @@ -54,7 +54,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.Extension GetInternalClone() - => (_internal as Data.Models.Metadata.Extension)?.Clone() as Data.Models.Metadata.Extension ?? []; + => (_internal as Data.Models.Metadata.Extension)?.Clone() as Data.Models.Metadata.Extension ?? new(); #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/Feature.cs b/SabreTools.Metadata.DatItems/Formats/Feature.cs index 333794a3..f794ec40 100644 --- a/SabreTools.Metadata.DatItems/Formats/Feature.cs +++ b/SabreTools.Metadata.DatItems/Formats/Feature.cs @@ -78,7 +78,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.Feature GetInternalClone() - => (_internal as Data.Models.Metadata.Feature)?.Clone() as Data.Models.Metadata.Feature ?? []; + => (_internal as Data.Models.Metadata.Feature)?.Clone() as Data.Models.Metadata.Feature ?? new(); #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/Info.cs b/SabreTools.Metadata.DatItems/Formats/Info.cs index 64480396..25596e23 100644 --- a/SabreTools.Metadata.DatItems/Formats/Info.cs +++ b/SabreTools.Metadata.DatItems/Formats/Info.cs @@ -60,7 +60,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.Info GetInternalClone() - => (_internal as Data.Models.Metadata.Info)?.Clone() as Data.Models.Metadata.Info ?? []; + => (_internal as Data.Models.Metadata.Info)?.Clone() as Data.Models.Metadata.Info ?? new(); #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/Input.cs b/SabreTools.Metadata.DatItems/Formats/Input.cs index 6dd2801c..4f36e3a6 100644 --- a/SabreTools.Metadata.DatItems/Formats/Input.cs +++ b/SabreTools.Metadata.DatItems/Formats/Input.cs @@ -96,7 +96,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.Input GetInternalClone() { - var inputItem = (_internal as Data.Models.Metadata.Input)?.Clone() as Data.Models.Metadata.Input ?? []; + var inputItem = (_internal as Data.Models.Metadata.Input)?.Clone() as Data.Models.Metadata.Input ?? new(); if (Control is not null) inputItem.Control = Array.ConvertAll(Control, control => control.GetInternalClone()); diff --git a/SabreTools.Metadata.DatItems/Formats/Instance.cs b/SabreTools.Metadata.DatItems/Formats/Instance.cs index 21de4134..ef488f77 100644 --- a/SabreTools.Metadata.DatItems/Formats/Instance.cs +++ b/SabreTools.Metadata.DatItems/Formats/Instance.cs @@ -60,7 +60,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.Instance GetInternalClone() - => (_internal as Data.Models.Metadata.Instance)?.Clone() as Data.Models.Metadata.Instance ?? []; + => (_internal as Data.Models.Metadata.Instance)?.Clone() as Data.Models.Metadata.Instance ?? new(); #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/Media.cs b/SabreTools.Metadata.DatItems/Formats/Media.cs index 0d389a02..a0f8cf32 100644 --- a/SabreTools.Metadata.DatItems/Formats/Media.cs +++ b/SabreTools.Metadata.DatItems/Formats/Media.cs @@ -96,7 +96,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.Media GetInternalClone() - => (_internal as Data.Models.Metadata.Media)?.Clone() as Data.Models.Metadata.Media ?? []; + => (_internal as Data.Models.Metadata.Media)?.Clone() as Data.Models.Metadata.Media ?? new(); /// /// Convert a media to the closest Rom approximation diff --git a/SabreTools.Metadata.DatItems/Formats/Original.cs b/SabreTools.Metadata.DatItems/Formats/Original.cs index b70be6bd..fa009098 100644 --- a/SabreTools.Metadata.DatItems/Formats/Original.cs +++ b/SabreTools.Metadata.DatItems/Formats/Original.cs @@ -35,6 +35,6 @@ namespace SabreTools.Metadata.DatItems.Formats /// Internal Original model /// [JsonIgnore] - private readonly Data.Models.Metadata.Original _internal = []; + private readonly Data.Models.Metadata.Original _internal = new(); } } diff --git a/SabreTools.Metadata.DatItems/Formats/Part.cs b/SabreTools.Metadata.DatItems/Formats/Part.cs index 36bf96b3..1bed9778 100644 --- a/SabreTools.Metadata.DatItems/Formats/Part.cs +++ b/SabreTools.Metadata.DatItems/Formats/Part.cs @@ -97,7 +97,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.Part GetInternalClone() { - var partItem = (_internal as Data.Models.Metadata.Part)?.Clone() as Data.Models.Metadata.Part ?? []; + var partItem = (_internal as Data.Models.Metadata.Part)?.Clone() as Data.Models.Metadata.Part ?? new(); if (DataArea is not null) partItem.DataArea = Array.ConvertAll(DataArea, dataArea => dataArea.GetInternalClone()); diff --git a/SabreTools.Metadata.DatItems/Formats/PartFeature.cs b/SabreTools.Metadata.DatItems/Formats/PartFeature.cs index 4d8c1d7c..ddbc350d 100644 --- a/SabreTools.Metadata.DatItems/Formats/PartFeature.cs +++ b/SabreTools.Metadata.DatItems/Formats/PartFeature.cs @@ -83,7 +83,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.Feature GetInternalClone() - => (_internal as Data.Models.Metadata.Feature)?.Clone() as Data.Models.Metadata.Feature ?? []; + => (_internal as Data.Models.Metadata.Feature)?.Clone() as Data.Models.Metadata.Feature ?? new(); #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/Port.cs b/SabreTools.Metadata.DatItems/Formats/Port.cs index b4945a42..f02216c5 100644 --- a/SabreTools.Metadata.DatItems/Formats/Port.cs +++ b/SabreTools.Metadata.DatItems/Formats/Port.cs @@ -66,7 +66,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.Port GetInternalClone() { - var portItem = (_internal as Data.Models.Metadata.Port)?.Clone() as Data.Models.Metadata.Port ?? []; + var portItem = (_internal as Data.Models.Metadata.Port)?.Clone() as Data.Models.Metadata.Port ?? new(); if (Analog is not null) portItem.Analog = Array.ConvertAll(Analog, analog => analog.GetInternalClone()); diff --git a/SabreTools.Metadata.DatItems/Formats/RamOption.cs b/SabreTools.Metadata.DatItems/Formats/RamOption.cs index 96ef6500..18455d4d 100644 --- a/SabreTools.Metadata.DatItems/Formats/RamOption.cs +++ b/SabreTools.Metadata.DatItems/Formats/RamOption.cs @@ -66,7 +66,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.RamOption GetInternalClone() - => (_internal as Data.Models.Metadata.RamOption)?.Clone() as Data.Models.Metadata.RamOption ?? []; + => (_internal as Data.Models.Metadata.RamOption)?.Clone() as Data.Models.Metadata.RamOption ?? new(); #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/Release.cs b/SabreTools.Metadata.DatItems/Formats/Release.cs index 3e478f1a..1e73c734 100644 --- a/SabreTools.Metadata.DatItems/Formats/Release.cs +++ b/SabreTools.Metadata.DatItems/Formats/Release.cs @@ -78,7 +78,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.Release GetInternalClone() - => (_internal as Data.Models.Metadata.Release)?.Clone() as Data.Models.Metadata.Release ?? []; + => (_internal as Data.Models.Metadata.Release)?.Clone() as Data.Models.Metadata.Release ?? new(); #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs b/SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs index 4b1484ee..eecd0cd6 100644 --- a/SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs +++ b/SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs @@ -143,7 +143,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.ReleaseDetails GetInternalClone() - => (_internal as Data.Models.Metadata.ReleaseDetails)?.Clone() as Data.Models.Metadata.ReleaseDetails ?? []; + => (_internal as Data.Models.Metadata.ReleaseDetails)?.Clone() as Data.Models.Metadata.ReleaseDetails ?? new(); #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/Rom.cs b/SabreTools.Metadata.DatItems/Formats/Rom.cs index 1c74c238..738980d8 100644 --- a/SabreTools.Metadata.DatItems/Formats/Rom.cs +++ b/SabreTools.Metadata.DatItems/Formats/Rom.cs @@ -899,7 +899,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.Rom GetInternalClone() - => (_internal as Data.Models.Metadata.Rom)?.Clone() as Data.Models.Metadata.Rom ?? []; + => (_internal as Data.Models.Metadata.Rom)?.Clone() as Data.Models.Metadata.Rom ?? new(); #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/Sample.cs b/SabreTools.Metadata.DatItems/Formats/Sample.cs index 9838e576..5b55097b 100644 --- a/SabreTools.Metadata.DatItems/Formats/Sample.cs +++ b/SabreTools.Metadata.DatItems/Formats/Sample.cs @@ -54,7 +54,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.Sample GetInternalClone() - => (_internal as Data.Models.Metadata.Sample)?.Clone() as Data.Models.Metadata.Sample ?? []; + => (_internal as Data.Models.Metadata.Sample)?.Clone() as Data.Models.Metadata.Sample ?? new(); #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/Serials.cs b/SabreTools.Metadata.DatItems/Formats/Serials.cs index ea942ff1..4f9e7586 100644 --- a/SabreTools.Metadata.DatItems/Formats/Serials.cs +++ b/SabreTools.Metadata.DatItems/Formats/Serials.cs @@ -132,7 +132,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.Serials GetInternalClone() - => (_internal as Data.Models.Metadata.Serials)?.Clone() as Data.Models.Metadata.Serials ?? []; + => (_internal as Data.Models.Metadata.Serials)?.Clone() as Data.Models.Metadata.Serials ?? new(); #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs b/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs index baab238c..5729d01e 100644 --- a/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs +++ b/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs @@ -60,7 +60,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.SharedFeat GetInternalClone() - => (_internal as Data.Models.Metadata.SharedFeat)?.Clone() as Data.Models.Metadata.SharedFeat ?? []; + => (_internal as Data.Models.Metadata.SharedFeat)?.Clone() as Data.Models.Metadata.SharedFeat ?? new(); #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/Slot.cs b/SabreTools.Metadata.DatItems/Formats/Slot.cs index 1f8d994a..3d5ae947 100644 --- a/SabreTools.Metadata.DatItems/Formats/Slot.cs +++ b/SabreTools.Metadata.DatItems/Formats/Slot.cs @@ -66,7 +66,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.Slot GetInternalClone() { - var slotItem = (_internal as Data.Models.Metadata.Slot)?.Clone() as Data.Models.Metadata.Slot ?? []; + var slotItem = (_internal as Data.Models.Metadata.Slot)?.Clone() as Data.Models.Metadata.Slot ?? new(); if (SlotOption is not null) slotItem.SlotOption = Array.ConvertAll(SlotOption, slotOption => slotOption.GetInternalClone()); diff --git a/SabreTools.Metadata.DatItems/Formats/SlotOption.cs b/SabreTools.Metadata.DatItems/Formats/SlotOption.cs index 9e6b24ff..ad350682 100644 --- a/SabreTools.Metadata.DatItems/Formats/SlotOption.cs +++ b/SabreTools.Metadata.DatItems/Formats/SlotOption.cs @@ -66,7 +66,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.SlotOption GetInternalClone() - => (_internal as Data.Models.Metadata.SlotOption)?.Clone() as Data.Models.Metadata.SlotOption ?? []; + => (_internal as Data.Models.Metadata.SlotOption)?.Clone() as Data.Models.Metadata.SlotOption ?? new(); #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs b/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs index 54b87152..0ea02cfe 100644 --- a/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs +++ b/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs @@ -72,7 +72,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.SoftwareList GetInternalClone() - => (_internal as Data.Models.Metadata.SoftwareList)?.Clone() as Data.Models.Metadata.SoftwareList ?? []; + => (_internal as Data.Models.Metadata.SoftwareList)?.Clone() as Data.Models.Metadata.SoftwareList ?? new(); #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/Sound.cs b/SabreTools.Metadata.DatItems/Formats/Sound.cs index b0fa077e..6cd2db8c 100644 --- a/SabreTools.Metadata.DatItems/Formats/Sound.cs +++ b/SabreTools.Metadata.DatItems/Formats/Sound.cs @@ -54,7 +54,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.Sound GetInternalClone() - => (_internal as Data.Models.Metadata.Sound)?.Clone() as Data.Models.Metadata.Sound ?? []; + => (_internal as Data.Models.Metadata.Sound)?.Clone() as Data.Models.Metadata.Sound ?? new(); #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/SourceDetails.cs b/SabreTools.Metadata.DatItems/Formats/SourceDetails.cs index eebdc473..27241376 100644 --- a/SabreTools.Metadata.DatItems/Formats/SourceDetails.cs +++ b/SabreTools.Metadata.DatItems/Formats/SourceDetails.cs @@ -192,7 +192,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.SourceDetails GetInternalClone() - => (_internal as Data.Models.Metadata.SourceDetails)?.Clone() as Data.Models.Metadata.SourceDetails ?? []; + => (_internal as Data.Models.Metadata.SourceDetails)?.Clone() as Data.Models.Metadata.SourceDetails ?? new(); #endregion diff --git a/SabreTools.Metadata.DatItems/Machine.cs b/SabreTools.Metadata.DatItems/Machine.cs index 6de98838..a5c28ae5 100644 --- a/SabreTools.Metadata.DatItems/Machine.cs +++ b/SabreTools.Metadata.DatItems/Machine.cs @@ -386,12 +386,12 @@ namespace SabreTools.Metadata.DatItems public Machine() { - _internal = []; + _internal = new(); } public Machine(Data.Models.Metadata.Machine machine) { - _internal = machine.Clone() as Data.Models.Metadata.Machine ?? []; + _internal = machine.Clone() as Data.Models.Metadata.Machine ?? new(); // Clear all lists _internal.Adjuster = null; @@ -449,7 +449,7 @@ namespace SabreTools.Metadata.DatItems /// /// Get a clone of the current internal model /// - public Data.Models.Metadata.Machine GetInternalClone() => (_internal.Clone() as Data.Models.Metadata.Machine) ?? []; + public Data.Models.Metadata.Machine GetInternalClone() => (_internal.Clone() as Data.Models.Metadata.Machine) ?? new(); #endregion diff --git a/SabreTools.Metadata.Filter/FilterGroup.cs b/SabreTools.Metadata.Filter/FilterGroup.cs index 6987d165..cbc2b98e 100644 --- a/SabreTools.Metadata.Filter/FilterGroup.cs +++ b/SabreTools.Metadata.Filter/FilterGroup.cs @@ -1,6 +1,5 @@ using System.Collections.Generic; using System.Text.RegularExpressions; -using SabreTools.Data.Models.Metadata; namespace SabreTools.Metadata.Filter { @@ -65,14 +64,14 @@ namespace SabreTools.Metadata.Filter #region Matching /// - /// Determine if a DictionaryBase object matches the group + /// Determine if a object matches the group /// - public bool Matches(DictionaryBase dictionaryBase) + public bool Matches(object obj) { return GroupType switch { - GroupType.AND => MatchesAnd(dictionaryBase), - GroupType.OR => MatchesOr(dictionaryBase), + GroupType.AND => MatchesAnd(obj), + GroupType.OR => MatchesOr(obj), GroupType.NONE => false, _ => false, @@ -82,13 +81,13 @@ namespace SabreTools.Metadata.Filter /// /// Determines if a value matches all filters /// - private bool MatchesAnd(DictionaryBase dictionaryBase) + private bool MatchesAnd(object obj) { // Run standalone filters foreach (var filter in _subfilters) { // One failed match fails the group - if (!filter.Matches(dictionaryBase)) + if (!filter.Matches(obj)) return false; } @@ -96,7 +95,7 @@ namespace SabreTools.Metadata.Filter foreach (var group in _subgroups) { // One failed match fails the group - if (!group.Matches(dictionaryBase)) + if (!group.Matches(obj)) return false; } @@ -106,13 +105,13 @@ namespace SabreTools.Metadata.Filter /// /// Determines if a value matches any filters /// - private bool MatchesOr(DictionaryBase dictionaryBase) + private bool MatchesOr(object obj) { // Run standalone filters foreach (var filter in _subfilters) { // One successful match passes the group - if (filter.Matches(dictionaryBase)) + if (filter.Matches(obj)) return true; } @@ -120,7 +119,7 @@ namespace SabreTools.Metadata.Filter foreach (var group in _subgroups) { // One successful match passes the group - if (group.Matches(dictionaryBase)) + if (group.Matches(obj)) return true; } diff --git a/SabreTools.Metadata.Filter/FilterObject.cs b/SabreTools.Metadata.Filter/FilterObject.cs index 08861adb..1e4db5d7 100644 --- a/SabreTools.Metadata.Filter/FilterObject.cs +++ b/SabreTools.Metadata.Filter/FilterObject.cs @@ -54,18 +54,18 @@ namespace SabreTools.Metadata.Filter #region Matching /// - /// Determine if a DictionaryBase object matches the key and value + /// Determine if a object matches the key and value /// - public bool Matches(DictionaryBase dictionaryBase) + public bool Matches(object obj) { return Operation switch { - Operation.Equals => MatchesEqual(dictionaryBase), - Operation.NotEquals => MatchesNotEqual(dictionaryBase), - Operation.GreaterThan => MatchesGreaterThan(dictionaryBase), - Operation.GreaterThanOrEqual => MatchesGreaterThanOrEqual(dictionaryBase), - Operation.LessThan => MatchesLessThan(dictionaryBase), - Operation.LessThanOrEqual => MatchesLessThanOrEqual(dictionaryBase), + Operation.Equals => MatchesEqual(obj), + Operation.NotEquals => MatchesNotEqual(obj), + Operation.GreaterThan => MatchesGreaterThan(obj), + Operation.GreaterThanOrEqual => MatchesGreaterThanOrEqual(obj), + Operation.LessThan => MatchesLessThan(obj), + Operation.LessThanOrEqual => MatchesLessThanOrEqual(obj), Operation.NONE => false, _ => false, @@ -75,10 +75,10 @@ namespace SabreTools.Metadata.Filter /// /// Determines if a value matches exactly /// - private bool MatchesEqual(DictionaryBase dictionaryBase) + private bool MatchesEqual(object obj) { // Process the check value - if (!GetCheckValue(dictionaryBase, Key.FieldName, out string? checkValue)) + if (!GetCheckValue(obj, Key.FieldName, out string? checkValue)) return string.IsNullOrEmpty(Value); // If a null value is expected @@ -117,10 +117,10 @@ namespace SabreTools.Metadata.Filter /// /// Determines if a value does not match exactly /// - private bool MatchesNotEqual(DictionaryBase dictionaryBase) + private bool MatchesNotEqual(object obj) { // Process the check value - if (!GetCheckValue(dictionaryBase, Key.FieldName, out string? checkValue)) + if (!GetCheckValue(obj, Key.FieldName, out string? checkValue)) return string.IsNullOrEmpty(Value); // If a null value is expected @@ -159,10 +159,10 @@ namespace SabreTools.Metadata.Filter /// /// Determines if a value is strictly greater than /// - private bool MatchesGreaterThan(DictionaryBase dictionaryBase) + private bool MatchesGreaterThan(object obj) { // Process the check value - if (!GetCheckValue(dictionaryBase, Key.FieldName, out string? checkValue)) + if (!GetCheckValue(obj, Key.FieldName, out string? checkValue)) return string.IsNullOrEmpty(Value); // Null is always failure @@ -191,10 +191,10 @@ namespace SabreTools.Metadata.Filter /// /// Determines if a value is greater than or equal /// - private bool MatchesGreaterThanOrEqual(DictionaryBase dictionaryBase) + private bool MatchesGreaterThanOrEqual(object obj) { // Process the check value - if (!GetCheckValue(dictionaryBase, Key.FieldName, out string? checkValue)) + if (!GetCheckValue(obj, Key.FieldName, out string? checkValue)) return string.IsNullOrEmpty(Value); // Null is always failure @@ -223,10 +223,10 @@ namespace SabreTools.Metadata.Filter /// /// Determines if a value is strictly less than /// - private bool MatchesLessThan(DictionaryBase dictionaryBase) + private bool MatchesLessThan(object obj) { // Process the check value - if (!GetCheckValue(dictionaryBase, Key.FieldName, out string? checkValue)) + if (!GetCheckValue(obj, Key.FieldName, out string? checkValue)) return string.IsNullOrEmpty(Value); // Null is always failure @@ -255,10 +255,10 @@ namespace SabreTools.Metadata.Filter /// /// Determines if a value is less than or equal /// - private bool MatchesLessThanOrEqual(DictionaryBase dictionaryBase) + private bool MatchesLessThanOrEqual(object obj) { // Process the check value - if (!GetCheckValue(dictionaryBase, Key.FieldName, out string? checkValue)) + if (!GetCheckValue(obj, Key.FieldName, out string? checkValue)) return string.IsNullOrEmpty(Value); // Null is always failure @@ -334,12 +334,13 @@ namespace SabreTools.Metadata.Filter } /// - /// Get the check value for a field from a DictionaryBase + /// Get the check value for a field /// - private static bool GetCheckValue(DictionaryBase dictionaryBase, string fieldName, out string? checkValue) + /// TODO: Figure out how to not have this hardcoded + private static bool GetCheckValue(object obj, string fieldName, out string? checkValue) { // Handle type-specific properties - switch (dictionaryBase) + switch (obj) { case Adjuster item when fieldName == "default": checkValue = item.Default.FromYesNo(); @@ -802,6 +803,9 @@ namespace SabreTools.Metadata.Filter case Header item when fieldName == "emulatorversion": checkValue = item.EmulatorVersion; return true; + case Header item when fieldName == "filename": + checkValue = item.FileName; + return true; case Header item when fieldName == "forcemerging": checkValue = item.ForceMerging.AsStringValue(); return true; @@ -1689,15 +1693,8 @@ namespace SabreTools.Metadata.Filter } // If the key doesn't exist, we count it as null - if (!dictionaryBase.ContainsKey(fieldName)) - { - checkValue = null; - return false; - } - - // If the value in the dictionary is null - checkValue = dictionaryBase.ReadString(fieldName); - return true; + checkValue = null; + return false; } /// diff --git a/SabreTools.Metadata.Filter/FilterRunner.cs b/SabreTools.Metadata.Filter/FilterRunner.cs index 440731a8..433a3037 100644 --- a/SabreTools.Metadata.Filter/FilterRunner.cs +++ b/SabreTools.Metadata.Filter/FilterRunner.cs @@ -30,15 +30,15 @@ namespace SabreTools.Metadata.Filter } /// - /// Run filtering on a DictionaryBase item + /// Run filtering on an item /// - public bool Run(DictionaryBase dictionaryBase) + public bool Run(object obj) { - string? itemName = dictionaryBase switch + string? itemName = obj switch { Header => "header", Machine => "machine", - DatItem => TypeHelper.GetXmlRootAttributeElementName(dictionaryBase.GetType()), + DatItem => TypeHelper.GetXmlRootAttributeElementName(obj.GetType()), _ => null, }; @@ -56,7 +56,7 @@ namespace SabreTools.Metadata.Filter continue; // If we don't get a match, it's a failure - bool matchOne = Filters[filterKey].Matches(dictionaryBase); + bool matchOne = Filters[filterKey].Matches(obj); if (!matchOne) return false; } diff --git a/SabreTools.Metadata.Test/ModelBackedItemTests.cs b/SabreTools.Metadata.Test/ModelBackedItemTests.cs deleted file mode 100644 index 7ae485ee..00000000 --- a/SabreTools.Metadata.Test/ModelBackedItemTests.cs +++ /dev/null @@ -1,257 +0,0 @@ -using SabreTools.Data.Models.Metadata; -using Xunit; - -namespace SabreTools.Metadata.Test -{ - public class ModelBackedItemTests - { - #region Private Testing Classes - - /// - /// Testing implementation of DictionaryBase - /// - private class TestDictionaryBase : DictionaryBase - { - public const string NameKey = "__NAME__"; - } - - /// - /// Testing implementation of ModelBackedItem - /// - private class TestModelBackedItem : ModelBackedItem - { - #region Comparision Methods - - /// - public override bool Equals(ModelBackedItem? other) - { - // If other is null - if (other is null) - return false; - - // If the type is mismatched - if (other is not TestModelBackedItem otherItem) - return false; - - // Compare internal models - return _internal.Equals(otherItem._internal); - } - - /// - public override bool Equals(ModelBackedItem? other) - { - // If other is null - if (other is null) - return false; - - // If the type is mismatched - if (other is not TestModelBackedItem otherItem) - return false; - - // Compare internal models - return _internal.Equals(otherItem._internal); - } - - #endregion - } - - /// - /// Alternate testing implementation of ModelBackedItem - /// - private class TestModelAltBackedItem : ModelBackedItem - { - #region Comparision Methods - - /// - public override bool Equals(ModelBackedItem? other) - { - // If other is null - if (other is null) - return false; - - // If the type is mismatched - if (other is not TestModelAltBackedItem otherItem) - return false; - - // Compare internal models - return _internal[TestDictionaryBase.NameKey] == otherItem._internal[TestDictionaryBase.NameKey]; - } - - /// - public override bool Equals(ModelBackedItem? other) - { - // If other is null - if (other is null) - return false; - - // If the type is mismatched - if (other is not TestModelAltBackedItem otherItem) - return false; - - // Compare internal models - return _internal[TestDictionaryBase.NameKey] == otherItem._internal[TestDictionaryBase.NameKey]; - } - - #endregion - } - - #endregion - - #region Remove - - [Fact] - public void Remove_NullItem_False() - { - TestModelBackedItem? modelBackedItem = null; - string? fieldName = TestDictionaryBase.NameKey; - bool? actual = modelBackedItem?.Remove(fieldName); - Assert.Null(actual); - } - - [Fact] - public void Remove_EmptyFieldName_False() - { - var modelBackedItem = new TestModelBackedItem(); - string? fieldName = string.Empty; - bool actual = modelBackedItem.Remove(fieldName); - Assert.False(actual); - } - - [Fact] - public void Remove_MissingKey_True() - { - var modelBackedItem = new TestModelBackedItem(); - string? fieldName = TestDictionaryBase.NameKey; - bool actual = modelBackedItem.Remove(fieldName); - Assert.True(actual); - Assert.Null(modelBackedItem.ReadString(fieldName)); - } - - [Fact] - public void Remove_ValidKey_True() - { - var modelBackedItem = new TestModelBackedItem(); - modelBackedItem.Write(TestDictionaryBase.NameKey, "value"); - string? fieldName = TestDictionaryBase.NameKey; - bool actual = modelBackedItem.Remove(fieldName); - Assert.True(actual); - Assert.Null(modelBackedItem.ReadString(fieldName)); - } - - #endregion - - #region Replace - - [Fact] - public void Replace_NullFrom_False() - { - TestModelBackedItem? from = null; - var to = new TestModelBackedItem(); - string? fieldName = TestDictionaryBase.NameKey; - bool actual = to.Replace(from, fieldName); - Assert.False(actual); - } - - [Fact] - public void Replace_NullTo_False() - { - TestModelBackedItem? from = null; - TestModelBackedItem? to = new TestModelBackedItem(); - string? fieldName = TestDictionaryBase.NameKey; - bool actual = to.Replace(from, fieldName); - Assert.False(actual); - } - - [Fact] - public void Replace_EmptyFieldName_False() - { - TestModelBackedItem? from = new TestModelBackedItem(); - TestModelBackedItem? to = new TestModelBackedItem(); - string? fieldName = string.Empty; - bool actual = to.Replace(from, fieldName); - Assert.False(actual); - } - - [Fact] - public void Replace_MissingKey_False() - { - TestModelBackedItem? from = new TestModelBackedItem(); - TestModelBackedItem? to = new TestModelBackedItem(); - string? fieldName = TestDictionaryBase.NameKey; - bool actual = to.Replace(from, fieldName); - Assert.False(actual); - } - - [Fact] - public void Replace_ValidKey_True() - { - TestModelBackedItem? from = new TestModelBackedItem(); - from.Write(TestDictionaryBase.NameKey, "value"); - TestModelBackedItem? to = new TestModelBackedItem(); - string? fieldName = TestDictionaryBase.NameKey; - bool actual = to.Replace(from, fieldName); - Assert.True(actual); - Assert.Equal("value", to.ReadString(TestDictionaryBase.NameKey)); - } - - #endregion - - #region WriteWithValidation - - [Fact] - public void WriteWithValidation_NullItem_False() - { - TestModelBackedItem? modelBackedItem = null; - string? fieldName = TestDictionaryBase.NameKey; - object value = "value"; - bool? actual = modelBackedItem?.WriteWithValidation(fieldName, value); - Assert.Null(actual); - } - - [Fact] - public void WriteWithValidation_EmptyFieldName_False() - { - TestModelBackedItem? modelBackedItem = new TestModelBackedItem(); - string? fieldName = string.Empty; - object value = "value"; - bool actual = modelBackedItem.WriteWithValidation(fieldName, value); - Assert.False(actual); - } - - [Fact] - public void WriteWithValidation_MissingKey_False() - { - TestModelBackedItem? modelBackedItem = new TestModelBackedItem(); - string? fieldName = "sha1"; - object value = "value"; - bool actual = modelBackedItem.WriteWithValidation(fieldName, value); - Assert.False(actual); - } - - [Fact] - public void WriteWithValidation_InvalidKey_True() - { - TestModelBackedItem? modelBackedItem = new TestModelBackedItem(); - modelBackedItem.Write(TestDictionaryBase.NameKey, "old"); - string? fieldName = "INVALID"; - object value = "value"; - bool actual = modelBackedItem.WriteWithValidation(fieldName, value); - Assert.False(actual); - Assert.Null(modelBackedItem.ReadString(fieldName)); - } - - [Fact] - public void WriteWithValidation_ValidKey_True() - { - TestModelBackedItem? modelBackedItem = new TestModelBackedItem(); - modelBackedItem.Write(TestDictionaryBase.NameKey, "old"); - string? fieldName = TestDictionaryBase.NameKey; - object value = "value"; - bool actual = modelBackedItem.WriteWithValidation(fieldName, value); - Assert.True(actual); - Assert.Equal(value, modelBackedItem.ReadString(fieldName)); - } - - #endregion - } -} diff --git a/SabreTools.Metadata/ModelBackedItem.cs b/SabreTools.Metadata/ModelBackedItem.cs index de5e7cdf..d70d4edb 100644 --- a/SabreTools.Metadata/ModelBackedItem.cs +++ b/SabreTools.Metadata/ModelBackedItem.cs @@ -3,7 +3,7 @@ namespace SabreTools.Metadata { /// - /// Represents an item that's backed by a DictionaryBase item + /// Represents an item that's backed by a constructable item /// public abstract class ModelBackedItem : IEquatable { diff --git a/SabreTools.Metadata/ModelBackedItemT.cs b/SabreTools.Metadata/ModelBackedItemT.cs index a80fe78b..7c419df0 100644 --- a/SabreTools.Metadata/ModelBackedItemT.cs +++ b/SabreTools.Metadata/ModelBackedItemT.cs @@ -5,9 +5,9 @@ using Newtonsoft.Json; namespace SabreTools.Metadata { /// - /// Represents an item that's backed by a DictionaryBase item + /// Represents an item that's backed by a constructable item /// - public abstract class ModelBackedItem : ModelBackedItem, IEquatable> where T : Data.Models.Metadata.DictionaryBase + public abstract class ModelBackedItem : ModelBackedItem, IEquatable> where T : new() { /// /// Internal model wrapped by this DatItem @@ -19,98 +19,7 @@ namespace SabreTools.Metadata public ModelBackedItem() { - _internal = Activator.CreateInstance(); - } - - #endregion - - #region Accessors - - /// - /// Get the value from a field based on the type provided - /// - /// Type of the value to get from the internal model - /// Field to retrieve - /// Value from the field, if possible - public U? Read(string fieldName) - => _internal.Read(fieldName); - - /// - /// Get the value from a field based on the type provided - /// - /// Field to retrieve - /// Value from the field, if possible - /// TODO: Determine if this can be removed - public bool? ReadBool(string fieldName) - => _internal.ReadBool(fieldName); - - /// - /// Get the value from a field based on the type provided - /// - /// Field to retrieve - /// Value from the field, if possible - /// TODO: Determine if this can be removed - public double? ReadDouble(string fieldName) - => _internal.ReadDouble(fieldName); - - /// - /// Get the value from a field based on the type provided - /// - /// Field to retrieve - /// Value from the field, if possible - /// TODO: Determine if this can be removed - public long? ReadLong(string fieldName) - => _internal.ReadLong(fieldName); - - /// - /// Get the value from a field based on the type provided - /// - /// Field to retrieve - /// Value from the field, if possible - public string? ReadString(string fieldName) - => _internal.ReadString(fieldName); - - /// - /// Get the value from a field based on the type provided - /// - /// Field to retrieve - /// Value from the field, if possible - /// TODO: Determine if this can be removed - public string[]? ReadStringArray(string fieldName) - => _internal.ReadStringArray(fieldName); - - /// - /// Set the value from a field based on the type provided - /// - /// Type of the value to set in the internal model - /// Field to set - /// Value to set - /// True if the value was set, false otherwise - public bool Write(string fieldName, U? value) - => _internal.Write(fieldName, value); - - /// - /// Set a field from the backing item validating the field is expected - /// - /// TODO: Figure out how to add this to DictionaryBase - public bool WriteWithValidation(string fieldName, object value) - { - // If the item or field name are missing, we can't do anything - if (string.IsNullOrEmpty(fieldName)) - return false; - - // Retrieve the list of valid fields for the item - var constants = TypeHelper.GetConstants(_internal.GetType()); - if (constants is null) - return false; - - // Get the value that matches the field name provided - string? realField = Array.Find(constants, c => string.Equals(c, fieldName, StringComparison.OrdinalIgnoreCase)); - if (realField is null) - return false; - - // Set the field with the new value - return _internal.Write(realField, value); + _internal = new T(); } #endregion @@ -121,21 +30,5 @@ namespace SabreTools.Metadata public abstract bool Equals(ModelBackedItem? other); #endregion - - #region Manipulation - - /// - /// Remove a field from the backing item - /// - public bool Remove(string fieldName) - => _internal.Remove(fieldName); - - /// - /// Replace a field from another ModelBackedItem - /// - public bool Replace(ModelBackedItem? from, string fieldName) - => _internal.Replace(from?._internal, fieldName); - - #endregion } } diff --git a/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs b/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs index 667e177c..3bd9a6d0 100644 --- a/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs @@ -352,7 +352,7 @@ namespace SabreTools.Serialization.CrossModel { var info = new Info(); - var sources = item.Read(Data.Models.Metadata.InfoSource.SourceKey); + var sources = item.Source; if (sources is not null && sources.Length > 0) info.Source = [.. sources]; diff --git a/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs b/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs index 1bb8856c..bf4b61ed 100644 --- a/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs @@ -337,10 +337,7 @@ namespace SabreTools.Serialization.CrossModel var sources = item.Source; if (sources is not null && sources.Length > 0) - { - string[] sourcesCopy = [.. sources]; - infoSource[Data.Models.Metadata.InfoSource.SourceKey] = sourcesCopy; - } + infoSource.Source = [.. sources]; return infoSource; } diff --git a/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs b/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs index 133074b3..2cbb2149 100644 --- a/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs @@ -37,7 +37,7 @@ namespace SabreTools.Serialization.CrossModel /// private static Data.Models.Metadata.Header ConvertHeaderToInternalModel(Datafile item) { - var header = item.Header is not null ? ConvertHeaderToInternalModel(item.Header) : []; + var header = item.Header is not null ? ConvertHeaderToInternalModel(item.Header) : new(); header.Build = item.Build; header.Debug = item.Debug; diff --git a/SabreTools.Serialization.CrossModel/RomCenter.Deserializer.cs b/SabreTools.Serialization.CrossModel/RomCenter.Deserializer.cs index 80d5e5cf..21361396 100644 --- a/SabreTools.Serialization.CrossModel/RomCenter.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/RomCenter.Deserializer.cs @@ -66,8 +66,7 @@ namespace SabreTools.Serialization.CrossModel }; } - if (item.RefName != null - || item.EmulatorVersion != null) + if (item.RefName != null || item.EmulatorVersion != null) { metadataFile.Emulator = new Emulator { diff --git a/SabreTools.Serialization.CrossModel/SeparatedValue.Deserializer.cs b/SabreTools.Serialization.CrossModel/SeparatedValue.Deserializer.cs index f055090f..b5349057 100644 --- a/SabreTools.Serialization.CrossModel/SeparatedValue.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/SeparatedValue.Deserializer.cs @@ -76,7 +76,7 @@ namespace SabreTools.Serialization.CrossModel { var row = new Row { - FileName = header?.ReadString("FILENAME"), // TODO: Make this an actual key to retrieve + FileName = header?.FileName, InternalName = header?.Name, Description = header?.Description, GameName = parent.Name, @@ -104,7 +104,7 @@ namespace SabreTools.Serialization.CrossModel { var row = new Row { - FileName = header?.ReadString("FILENAME"), // TODO: Make this an actual key to retrieve on an item -- OriginalFilename + FileName = header?.FileName, InternalName = header?.Name, Description = header?.Description, GameName = parent.Name, @@ -131,7 +131,7 @@ namespace SabreTools.Serialization.CrossModel { var row = new Row { - FileName = header?.ReadString("FILENAME"), // TODO: Make this an actual key to retrieve + FileName = header?.FileName, InternalName = header?.Name, Description = header?.Description, GameName = parent.Name, diff --git a/SabreTools.Serialization.CrossModel/SeparatedValue.Serializer.cs b/SabreTools.Serialization.CrossModel/SeparatedValue.Serializer.cs index 5b6b722d..bd619c66 100644 --- a/SabreTools.Serialization.CrossModel/SeparatedValue.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/SeparatedValue.Serializer.cs @@ -35,7 +35,7 @@ namespace SabreTools.Serialization.CrossModel if (item.Row is not null && item.Row.Length > 0) { var first = item.Row[0]; - header["FILENAME"] = first.FileName; // TODO: Make this an actual key to retrieve on an item -- OriginalFilename + header.FileName = first.FileName; header.Name = first.FileName; header.Description = first.Description; } From ed72df79a69acb96d869ec1d8fb2b5a0209cfcc2 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sun, 5 Apr 2026 00:15:40 -0400 Subject: [PATCH 103/142] Make FilterObject slightly more maintainable, slightly --- SabreTools.Metadata.Filter/FilterObject.cs | 2966 ++++++++++++-------- 1 file changed, 1818 insertions(+), 1148 deletions(-) diff --git a/SabreTools.Metadata.Filter/FilterObject.cs b/SabreTools.Metadata.Filter/FilterObject.cs index 1e4db5d7..000bd96b 100644 --- a/SabreTools.Metadata.Filter/FilterObject.cs +++ b/SabreTools.Metadata.Filter/FilterObject.cs @@ -339,1362 +339,2032 @@ namespace SabreTools.Metadata.Filter /// TODO: Figure out how to not have this hardcoded private static bool GetCheckValue(object obj, string fieldName, out string? checkValue) { - // Handle type-specific properties switch (obj) { - case Adjuster item when fieldName == "default": - checkValue = item.Default.FromYesNo(); + case Adjuster item: return GetCheckValue(item, fieldName, out checkValue); + case Analog item: return GetCheckValue(item, fieldName, out checkValue); + case Archive item: return GetCheckValue(item, fieldName, out checkValue); + case BiosSet item: return GetCheckValue(item, fieldName, out checkValue); + case Chip item: return GetCheckValue(item, fieldName, out checkValue); + case Condition item: return GetCheckValue(item, fieldName, out checkValue); + case Configuration item: return GetCheckValue(item, fieldName, out checkValue); + case ConfLocation item: return GetCheckValue(item, fieldName, out checkValue); + case ConfSetting item: return GetCheckValue(item, fieldName, out checkValue); + case Control item: return GetCheckValue(item, fieldName, out checkValue); + case DataArea item: return GetCheckValue(item, fieldName, out checkValue); + case Device item: return GetCheckValue(item, fieldName, out checkValue); + case DeviceRef item: return GetCheckValue(item, fieldName, out checkValue); + case DipLocation item: return GetCheckValue(item, fieldName, out checkValue); + case DipSwitch item: return GetCheckValue(item, fieldName, out checkValue); + case DipValue item: return GetCheckValue(item, fieldName, out checkValue); + case Disk item: return GetCheckValue(item, fieldName, out checkValue); + case DiskArea item: return GetCheckValue(item, fieldName, out checkValue); + case Display item: return GetCheckValue(item, fieldName, out checkValue); + case Driver item: return GetCheckValue(item, fieldName, out checkValue); + case Extension item: return GetCheckValue(item, fieldName, out checkValue); + case Feature item: return GetCheckValue(item, fieldName, out checkValue); + case Header item: return GetCheckValue(item, fieldName, out checkValue); + case Info item: return GetCheckValue(item, fieldName, out checkValue); + case Input item: return GetCheckValue(item, fieldName, out checkValue); + case Instance item: return GetCheckValue(item, fieldName, out checkValue); + case Machine item: return GetCheckValue(item, fieldName, out checkValue); + case Media item: return GetCheckValue(item, fieldName, out checkValue); + case Original item: return GetCheckValue(item, fieldName, out checkValue); + case Part item: return GetCheckValue(item, fieldName, out checkValue); + case Port item: return GetCheckValue(item, fieldName, out checkValue); + case RamOption item: return GetCheckValue(item, fieldName, out checkValue); + case Release item: return GetCheckValue(item, fieldName, out checkValue); + case ReleaseDetails item: return GetCheckValue(item, fieldName, out checkValue); + case Rom item: return GetCheckValue(item, fieldName, out checkValue); + case Sample item: return GetCheckValue(item, fieldName, out checkValue); + case Serials item: return GetCheckValue(item, fieldName, out checkValue); + case SharedFeat item: return GetCheckValue(item, fieldName, out checkValue); + case Slot item: return GetCheckValue(item, fieldName, out checkValue); + case SlotOption item: return GetCheckValue(item, fieldName, out checkValue); + case SoftwareList item: return GetCheckValue(item, fieldName, out checkValue); + case Sound item: return GetCheckValue(item, fieldName, out checkValue); + case SourceDetails item: return GetCheckValue(item, fieldName, out checkValue); + case Video item: return GetCheckValue(item, fieldName, out checkValue); + + // If the key doesn't exist, we count it as null + default: + checkValue = null; + return false; + } + } + + /// + /// Get the check value for a field + /// + private static bool GetCheckValue(Adjuster obj, string fieldName, out string? checkValue) + { + switch (fieldName) + { + case "default": + checkValue = obj.Default.FromYesNo(); return true; - case Adjuster item when fieldName == "name": - checkValue = item.Name; + case "name": + checkValue = obj.Name; return true; - case Analog item when fieldName == "mask": - checkValue = item.Mask; + // If the key doesn't exist, we count it as null + default: + checkValue = null; + return false; + } + } + + /// + /// Get the check value for a field + /// + private static bool GetCheckValue(Analog obj, string fieldName, out string? checkValue) + { + switch (fieldName) + { + case "mask": + checkValue = obj.Mask; return true; - case Archive item when fieldName == "additional": - checkValue = item.Additional; + // If the key doesn't exist, we count it as null + default: + checkValue = null; + return false; + } + } + + /// + /// Get the check value for a field + /// + private static bool GetCheckValue(Archive obj, string fieldName, out string? checkValue) + { + switch (fieldName) + { + case "additional": + checkValue = obj.Additional; return true; - case Archive item when fieldName == "adult": - checkValue = item.Adult is null ? null : (item.Adult == true ? "1" : "0"); + case "adult": + checkValue = obj.Adult is null ? null : (obj.Adult == true ? "1" : "0"); return true; - case Archive item when fieldName == "alt": - checkValue = item.Alt is null ? null : (item.Alt == true ? "1" : "0"); + case "alt": + checkValue = obj.Alt is null ? null : (obj.Alt == true ? "1" : "0"); return true; - case Archive item when fieldName == "bios": - checkValue = item.Bios is null ? null : (item.Bios == true ? "1" : "0"); + case "bios": + checkValue = obj.Bios is null ? null : (obj.Bios == true ? "1" : "0"); return true; - case Archive item when fieldName == "categories": - checkValue = item.Categories; + case "categories": + checkValue = obj.Categories; return true; - case Archive item when fieldName == "clone": - checkValue = item.CloneTag; + case "clone": + checkValue = obj.CloneTag; return true; - case Archive item when fieldName == "complete": - checkValue = item.Complete is null ? null : (item.Complete == true ? "1" : "0"); + case "complete": + checkValue = obj.Complete is null ? null : (obj.Complete == true ? "1" : "0"); return true; - case Archive item when fieldName == "dat": - checkValue = item.Dat is null ? null : (item.Dat == true ? "1" : "0"); + case "dat": + checkValue = obj.Dat is null ? null : (obj.Dat == true ? "1" : "0"); return true; - case Archive item when fieldName == "datternote": - checkValue = item.DatterNote; + case "datternote": + checkValue = obj.DatterNote; return true; - case Archive item when fieldName == "description": - checkValue = item.Description; + case "description": + checkValue = obj.Description; return true; - case Archive item when fieldName == "devstatus": - checkValue = item.DevStatus; + case "devstatus": + checkValue = obj.DevStatus; return true; - case Archive item when fieldName == "gameid1": - checkValue = item.GameId1; + case "gameid1": + checkValue = obj.GameId1; return true; - case Archive item when fieldName == "gameid2": - checkValue = item.GameId2; + case "gameid2": + checkValue = obj.GameId2; return true; - case Archive item when fieldName == "langchecked": - checkValue = item.LangChecked; + case "langchecked": + checkValue = obj.LangChecked; return true; - case Archive item when fieldName == "languages": - checkValue = item.Languages; + case "languages": + checkValue = obj.Languages; return true; - case Archive item when fieldName == "licensed": - checkValue = item.Licensed is null ? null : (item.Licensed == true ? "1" : "0"); + case "licensed": + checkValue = obj.Licensed is null ? null : (obj.Licensed == true ? "1" : "0"); return true; - case Archive item when fieldName == "listed": - checkValue = item.Listed is null ? null : (item.Listed == true ? "1" : "0"); + case "listed": + checkValue = obj.Listed is null ? null : (obj.Listed == true ? "1" : "0"); return true; - case Archive item when fieldName == "mergeof": - checkValue = item.MergeOf; + case "mergeof": + checkValue = obj.MergeOf; return true; - case Archive item when fieldName == "mergename": - checkValue = item.MergeName; + case "mergename": + checkValue = obj.MergeName; return true; - case Archive item when fieldName == "name": - checkValue = item.Name; + case "name": + checkValue = obj.Name; return true; - case Archive item when fieldName == "namealt": - checkValue = item.NameAlt; + case "namealt": + checkValue = obj.NameAlt; return true; - case Archive item when fieldName == "number": - checkValue = item.Number; + case "number": + checkValue = obj.Number; return true; - case Archive item when fieldName == "physical": - checkValue = item.Physical is null ? null : (item.Physical == true ? "1" : "0"); + case "physical": + checkValue = obj.Physical is null ? null : (obj.Physical == true ? "1" : "0"); return true; - case Archive item when fieldName == "pirate": - checkValue = item.Pirate is null ? null : (item.Pirate == true ? "1" : "0"); + case "pirate": + checkValue = obj.Pirate is null ? null : (obj.Pirate == true ? "1" : "0"); return true; - case Archive item when fieldName == "private": - checkValue = item.Private is null ? null : (item.Private == true ? "1" : "0"); + case "private": + checkValue = obj.Private is null ? null : (obj.Private == true ? "1" : "0"); return true; - case Archive item when fieldName == "region": - checkValue = item.Region; + case "region": + checkValue = obj.Region; return true; - case Archive item when fieldName == "regparent": - checkValue = item.RegParent; + case "regparent": + checkValue = obj.RegParent; return true; - case Archive item when fieldName == "showlang": - checkValue = item.ShowLang is null ? null : (item.ShowLang == true ? "1" : "0"); + case "showlang": + checkValue = obj.ShowLang is null ? null : (obj.ShowLang == true ? "1" : "0"); return true; - case Archive item when fieldName == "special1": - checkValue = item.Special1; + case "special1": + checkValue = obj.Special1; return true; - case Archive item when fieldName == "special2": - checkValue = item.Special2; + case "special2": + checkValue = obj.Special2; return true; - case Archive item when fieldName == "stickynote": - checkValue = item.StickyNote; + case "stickynote": + checkValue = obj.StickyNote; return true; - case Archive item when fieldName == "version1": - checkValue = item.Version1; + case "version1": + checkValue = obj.Version1; return true; - case Archive item when fieldName == "version2": - checkValue = item.Version2; + case "version2": + checkValue = obj.Version2; return true; - case BiosSet item when fieldName == "default": - checkValue = item.Default.FromYesNo(); + // If the key doesn't exist, we count it as null + default: + checkValue = null; + return false; + } + } + + /// + /// Get the check value for a field + /// + private static bool GetCheckValue(BiosSet obj, string fieldName, out string? checkValue) + { + switch (fieldName) + { + case "default": + checkValue = obj.Default.FromYesNo(); return true; - case BiosSet item when fieldName == "description": - checkValue = item.Description; + case "description": + checkValue = obj.Description; return true; - case BiosSet item when fieldName == "name": - checkValue = item.Name; + case "name": + checkValue = obj.Name; return true; - case Chip item when fieldName == "type": - checkValue = item.ChipType?.AsStringValue(); + // If the key doesn't exist, we count it as null + default: + checkValue = null; + return false; + } + } + + /// + /// Get the check value for a field + /// + private static bool GetCheckValue(Chip obj, string fieldName, out string? checkValue) + { + switch (fieldName) + { + case "type": + checkValue = obj.ChipType?.AsStringValue(); return true; - case Chip item when fieldName == "clock": - checkValue = item.Clock?.ToString(); + case "clock": + checkValue = obj.Clock?.ToString(); return true; - case Chip item when fieldName == "flags": - checkValue = item.Flags; + case "flags": + checkValue = obj.Flags; return true; - case Chip item when fieldName == "name": - checkValue = item.Name; + case "name": + checkValue = obj.Name; return true; - case Chip item when fieldName == "soundonly": - checkValue = item.SoundOnly.FromYesNo(); + case "soundonly": + checkValue = obj.SoundOnly.FromYesNo(); return true; - case Chip item when fieldName == "tag": - checkValue = item.Tag; + case "tag": + checkValue = obj.Tag; return true; - case Condition item when fieldName == "mask": - checkValue = item.Mask; + // If the key doesn't exist, we count it as null + default: + checkValue = null; + return false; + } + } + + /// + /// Get the check value for a field + /// + private static bool GetCheckValue(Condition obj, string fieldName, out string? checkValue) + { + switch (fieldName) + { + case "mask": + checkValue = obj.Mask; return true; - case Condition item when fieldName == "relation": - checkValue = item.Relation?.AsStringValue(); + case "relation": + checkValue = obj.Relation?.AsStringValue(); return true; - case Condition item when fieldName == "tag": - checkValue = item.Tag; + case "tag": + checkValue = obj.Tag; return true; - case Condition item when fieldName == "value": - checkValue = item.Value; + case "value": + checkValue = obj.Value; return true; - case Configuration item when fieldName == "mask": - checkValue = item.Mask; + // If the key doesn't exist, we count it as null + default: + checkValue = null; + return false; + } + } + + /// + /// Get the check value for a field + /// + private static bool GetCheckValue(Configuration obj, string fieldName, out string? checkValue) + { + switch (fieldName) + { + case "mask": + checkValue = obj.Mask; return true; - case Configuration item when fieldName == "name": - checkValue = item.Name; + case "name": + checkValue = obj.Name; return true; - case Configuration item when fieldName == "tag": - checkValue = item.Tag; + case "tag": + checkValue = obj.Tag; return true; - case ConfLocation item when fieldName == "inverted": - checkValue = item.Inverted.FromYesNo(); + // If the key doesn't exist, we count it as null + default: + checkValue = null; + return false; + } + } + + /// + /// Get the check value for a field + /// + private static bool GetCheckValue(ConfLocation obj, string fieldName, out string? checkValue) + { + switch (fieldName) + { + case "inverted": + checkValue = obj.Inverted.FromYesNo(); return true; - case ConfLocation item when fieldName == "name": - checkValue = item.Name; + case "name": + checkValue = obj.Name; return true; - case ConfLocation item when fieldName == "number": - checkValue = item.Number?.ToString(); + case "number": + checkValue = obj.Number?.ToString(); return true; - case ConfSetting item when fieldName == "default": - checkValue = item.Default.FromYesNo(); + // If the key doesn't exist, we count it as null + default: + checkValue = null; + return false; + } + } + + /// + /// Get the check value for a field + /// + private static bool GetCheckValue(ConfSetting obj, string fieldName, out string? checkValue) + { + switch (fieldName) + { + case "default": + checkValue = obj.Default.FromYesNo(); return true; - case ConfSetting item when fieldName == "name": - checkValue = item.Name; + case "name": + checkValue = obj.Name; return true; - case ConfSetting item when fieldName == "value": - checkValue = item.Value; + case "value": + checkValue = obj.Value; return true; - case Control item when fieldName == "buttons": - checkValue = item.Buttons?.ToString(); + // If the key doesn't exist, we count it as null + default: + checkValue = null; + return false; + } + } + + /// + /// Get the check value for a field + /// + private static bool GetCheckValue(Control obj, string fieldName, out string? checkValue) + { + switch (fieldName) + { + case "buttons": + checkValue = obj.Buttons?.ToString(); return true; - case Control item when fieldName == "type": - checkValue = item.ControlType?.AsStringValue(); + case "type": + checkValue = obj.ControlType?.AsStringValue(); return true; - case Control item when fieldName == "keydelta": - checkValue = item.KeyDelta?.ToString(); + case "keydelta": + checkValue = obj.KeyDelta?.ToString(); return true; - case Control item when fieldName == "maximum": - checkValue = item.Maximum?.ToString(); + case "maximum": + checkValue = obj.Maximum?.ToString(); return true; - case Control item when fieldName == "minimum": - checkValue = item.Minimum?.ToString(); + case "minimum": + checkValue = obj.Minimum?.ToString(); return true; - case Control item when fieldName == "player": - checkValue = item.Player?.ToString(); + case "player": + checkValue = obj.Player?.ToString(); return true; - case Control item when fieldName == "reqbuttons": - checkValue = item.ReqButtons?.ToString(); + case "reqbuttons": + checkValue = obj.ReqButtons?.ToString(); return true; - case Control item when fieldName == "reverse": - checkValue = item.Reverse.FromYesNo(); + case "reverse": + checkValue = obj.Reverse.FromYesNo(); return true; - case Control item when fieldName == "sensitivity": - checkValue = item.Sensitivity?.ToString(); + case "sensitivity": + checkValue = obj.Sensitivity?.ToString(); return true; - case Control item when fieldName == "ways": - checkValue = item.Ways; + case "ways": + checkValue = obj.Ways; return true; - case Control item when fieldName == "ways2": - checkValue = item.Ways2; + case "ways2": + checkValue = obj.Ways2; return true; - case Control item when fieldName == "ways3": - checkValue = item.Ways3; + case "ways3": + checkValue = obj.Ways3; return true; - case DataArea item when fieldName == "endianness": - checkValue = item.Endianness?.AsStringValue(); + // If the key doesn't exist, we count it as null + default: + checkValue = null; + return false; + } + } + + /// + /// Get the check value for a field + /// + private static bool GetCheckValue(DataArea obj, string fieldName, out string? checkValue) + { + switch (fieldName) + { + case "endianness": + checkValue = obj.Endianness?.AsStringValue(); return true; - case DataArea item when fieldName == "name": - checkValue = item.Name; + case "name": + checkValue = obj.Name; return true; - case DataArea item when fieldName == "size": - checkValue = item.Size?.ToString(); + case "size": + checkValue = obj.Size?.ToString(); return true; - case DataArea item when fieldName == "width": - checkValue = item.Width?.AsStringValue(); + case "width": + checkValue = obj.Width?.AsStringValue(); return true; - case Device item when fieldName == "type": - checkValue = item.DeviceType?.AsStringValue(); + // If the key doesn't exist, we count it as null + default: + checkValue = null; + return false; + } + } + + /// + /// Get the check value for a field + /// + private static bool GetCheckValue(Device obj, string fieldName, out string? checkValue) + { + switch (fieldName) + { + case "type": + checkValue = obj.DeviceType?.AsStringValue(); return true; - case Device item when fieldName == "fixedimage": - checkValue = item.FixedImage; + case "fixedimage": + checkValue = obj.FixedImage; return true; - case Device item when fieldName == "interface": - checkValue = item.Interface; + case "interface": + checkValue = obj.Interface; return true; - case Device item when fieldName == "mandatory": - checkValue = item.Mandatory.FromYesNo(); + case "mandatory": + checkValue = obj.Mandatory.FromYesNo(); return true; - case Device item when fieldName == "tag": - checkValue = item.Tag; + case "tag": + checkValue = obj.Tag; return true; - case DeviceRef item when fieldName == "name": - checkValue = item.Name; + // If the key doesn't exist, we count it as null + default: + checkValue = null; + return false; + } + } + + /// + /// Get the check value for a field + /// + private static bool GetCheckValue(DeviceRef obj, string fieldName, out string? checkValue) + { + switch (fieldName) + { + case "name": + checkValue = obj.Name; return true; - case DipLocation item when fieldName == "inverted": - checkValue = item.Inverted.FromYesNo(); + // If the key doesn't exist, we count it as null + default: + checkValue = null; + return false; + } + } + + /// + /// Get the check value for a field + /// + private static bool GetCheckValue(DipLocation obj, string fieldName, out string? checkValue) + { + switch (fieldName) + { + case "inverted": + checkValue = obj.Inverted.FromYesNo(); return true; - case DipLocation item when fieldName == "name": - checkValue = item.Name; + case "name": + checkValue = obj.Name; return true; - case DipLocation item when fieldName == "number": - checkValue = item.Number?.ToString(); + case "number": + checkValue = obj.Number?.ToString(); return true; - case DipSwitch item when fieldName == "default": - checkValue = item.Default.FromYesNo(); + // If the key doesn't exist, we count it as null + default: + checkValue = null; + return false; + } + } + + /// + /// Get the check value for a field + /// + private static bool GetCheckValue(DipSwitch obj, string fieldName, out string? checkValue) + { + switch (fieldName) + { + case "default": + checkValue = obj.Default.FromYesNo(); return true; - case DipSwitch item when fieldName == "mask": - checkValue = item.Mask; + case "mask": + checkValue = obj.Mask; return true; - case DipSwitch item when fieldName == "name": - checkValue = item.Name; + case "name": + checkValue = obj.Name; return true; - case DipSwitch item when fieldName == "tag": - checkValue = item.Tag; + case "tag": + checkValue = obj.Tag; return true; - case DipValue item when fieldName == "default": - checkValue = item.Default.FromYesNo(); + // If the key doesn't exist, we count it as null + default: + checkValue = null; + return false; + } + } + + /// + /// Get the check value for a field + /// + private static bool GetCheckValue(DipValue obj, string fieldName, out string? checkValue) + { + switch (fieldName) + { + case "default": + checkValue = obj.Default.FromYesNo(); return true; - case DipValue item when fieldName == "name": - checkValue = item.Name; + case "name": + checkValue = obj.Name; return true; - case DipValue item when fieldName == "value": - checkValue = item.Value; + case "value": + checkValue = obj.Value; return true; - case Disk item when fieldName == "flags": - checkValue = item.Flags; + // If the key doesn't exist, we count it as null + default: + checkValue = null; + return false; + } + } + + /// + /// Get the check value for a field + /// + private static bool GetCheckValue(Disk obj, string fieldName, out string? checkValue) + { + switch (fieldName) + { + case "flags": + checkValue = obj.Flags; return true; - case Disk item when fieldName == "index": - checkValue = item.Index?.ToString(); + case "index": + checkValue = obj.Index?.ToString(); return true; - case Disk item when fieldName == "md5": - checkValue = item.MD5; + case "md5": + checkValue = obj.MD5; return true; - case Disk item when fieldName == "merge": - checkValue = item.Merge; + case "merge": + checkValue = obj.Merge; return true; - case Disk item when fieldName == "name": - checkValue = item.Name; + case "name": + checkValue = obj.Name; return true; - case Disk item when fieldName == "optional": - checkValue = item.Optional.FromYesNo(); + case "optional": + checkValue = obj.Optional.FromYesNo(); return true; - case Disk item when fieldName == "region": - checkValue = item.Region; + case "region": + checkValue = obj.Region; return true; - case Disk item when fieldName == "sha1": - checkValue = item.SHA1; + case "sha1": + checkValue = obj.SHA1; return true; - case Disk item when fieldName == "status": - checkValue = item.Status?.AsStringValue(); + case "status": + checkValue = obj.Status?.AsStringValue(); return true; - case Disk item when fieldName == "writable": - checkValue = item.Writable.FromYesNo(); + case "writable": + checkValue = obj.Writable.FromYesNo(); return true; - case DiskArea item when fieldName == "name": - checkValue = item.Name; + // If the key doesn't exist, we count it as null + default: + checkValue = null; + return false; + } + } + + /// + /// Get the check value for a field + /// + private static bool GetCheckValue(DiskArea obj, string fieldName, out string? checkValue) + { + switch (fieldName) + { + case "name": + checkValue = obj.Name; return true; - case Display item when fieldName == "aspectx": - checkValue = item.AspectX?.ToString(); + // If the key doesn't exist, we count it as null + default: + checkValue = null; + return false; + } + } + + /// + /// Get the check value for a field + /// + private static bool GetCheckValue(Display obj, string fieldName, out string? checkValue) + { + switch (fieldName) + { + case "aspectx": + checkValue = obj.AspectX?.ToString(); return true; - case Display item when fieldName == "aspecty": - checkValue = item.AspectY?.ToString(); + case "aspecty": + checkValue = obj.AspectY?.ToString(); return true; - case Display item when fieldName == "flipx": - checkValue = item.FlipX.FromYesNo(); + case "flipx": + checkValue = obj.FlipX.FromYesNo(); return true; - case Display item when fieldName == "hbend": - checkValue = item.HBEnd?.ToString(); + case "hbend": + checkValue = obj.HBEnd?.ToString(); return true; - case Display item when fieldName == "hbstart": - checkValue = item.HBStart?.ToString(); + case "hbstart": + checkValue = obj.HBStart?.ToString(); return true; - case Display item when fieldName == "height" || fieldName == "y": - checkValue = item.Height?.ToString(); + case "height": + case "y": + checkValue = obj.Height?.ToString(); return true; - case Display item when fieldName == "htotal": - checkValue = item.HTotal?.ToString(); + case "htotal": + checkValue = obj.HTotal?.ToString(); return true; - case Display item when fieldName == "pixclock": - checkValue = item.PixClock?.ToString(); + case "pixclock": + checkValue = obj.PixClock?.ToString(); return true; - case Display item when fieldName == "refresh" || fieldName == "freq": - checkValue = item.Refresh?.ToString(); + case "refresh": + case "freq": + checkValue = obj.Refresh?.ToString(); return true; - case Display item when fieldName == "rotate" || fieldName == "orientation": - checkValue = item.Rotate?.AsStringValue(); + case "rotate": + case "orientation": + checkValue = obj.Rotate?.AsStringValue(); return true; - case Display item when fieldName == "type" || fieldName == "screen": - checkValue = item.DisplayType?.AsStringValue(); + case "type": + case "screen": + checkValue = obj.DisplayType?.AsStringValue(); return true; - case Display item when fieldName == "tag": - checkValue = item.Tag; + case "tag": + checkValue = obj.Tag; return true; - case Display item when fieldName == "vbend": - checkValue = item.VBEnd?.ToString(); + case "vbend": + checkValue = obj.VBEnd?.ToString(); return true; - case Display item when fieldName == "vbstart": - checkValue = item.VBStart?.ToString(); + case "vbstart": + checkValue = obj.VBStart?.ToString(); return true; - case Display item when fieldName == "vtotal": - checkValue = item.VTotal?.ToString(); + case "vtotal": + checkValue = obj.VTotal?.ToString(); return true; - case Display item when fieldName == "width" || fieldName == "x": - checkValue = item.Width?.ToString(); + case "width": + case "x": + checkValue = obj.Width?.ToString(); return true; - case Driver item when fieldName == "blit": - checkValue = item.Blit?.AsStringValue(); + // If the key doesn't exist, we count it as null + default: + checkValue = null; + return false; + } + } + + /// + /// Get the check value for a field + /// + private static bool GetCheckValue(Driver obj, string fieldName, out string? checkValue) + { + switch (fieldName) + { + case "blit": + checkValue = obj.Blit?.AsStringValue(); return true; - case Driver item when fieldName == "cocktail": - checkValue = item.Cocktail?.AsStringValue(); + case "cocktail": + checkValue = obj.Cocktail?.AsStringValue(); return true; - case Driver item when fieldName == "color": - checkValue = item.Color?.AsStringValue(); + case "color": + checkValue = obj.Color?.AsStringValue(); return true; - case Driver item when fieldName == "emulation": - checkValue = item.Emulation?.AsStringValue(); + case "emulation": + checkValue = obj.Emulation?.AsStringValue(); return true; - case Driver item when fieldName == "incomplete": - checkValue = item.Incomplete.FromYesNo(); + case "incomplete": + checkValue = obj.Incomplete.FromYesNo(); return true; - case Driver item when fieldName == "nosoundhardware": - checkValue = item.NoSoundHardware.FromYesNo(); + case "nosoundhardware": + checkValue = obj.NoSoundHardware.FromYesNo(); return true; - case Driver item when fieldName == "palettesize": - checkValue = item.PaletteSize; + case "palettesize": + checkValue = obj.PaletteSize; return true; - case Driver item when fieldName == "requiresartwork": - checkValue = item.RequiresArtwork.FromYesNo(); + case "requiresartwork": + checkValue = obj.RequiresArtwork.FromYesNo(); return true; - case Driver item when fieldName == "savestate": - checkValue = item.SaveState?.AsStringValue(); + case "savestate": + checkValue = obj.SaveState?.AsStringValue(); return true; - case Driver item when fieldName == "sound": - checkValue = item.Sound?.AsStringValue(); + case "sound": + checkValue = obj.Sound?.AsStringValue(); return true; - case Driver item when fieldName == "status": - checkValue = item.Status?.AsStringValue(); + case "status": + checkValue = obj.Status?.AsStringValue(); return true; - case Driver item when fieldName == "unofficial": - checkValue = item.Unofficial.FromYesNo(); + case "unofficial": + checkValue = obj.Unofficial.FromYesNo(); return true; - case Extension item when fieldName == "name": - checkValue = item.Name; + // If the key doesn't exist, we count it as null + default: + checkValue = null; + return false; + } + } + + /// + /// Get the check value for a field + /// + private static bool GetCheckValue(Extension obj, string fieldName, out string? checkValue) + { + switch (fieldName) + { + case "name": + checkValue = obj.Name; return true; - case Feature item when fieldName == "name": - checkValue = item.Name; + // If the key doesn't exist, we count it as null + default: + checkValue = null; + return false; + } + } + + /// + /// Get the check value for a field + /// + private static bool GetCheckValue(Feature obj, string fieldName, out string? checkValue) + { + switch (fieldName) + { + case "name": + checkValue = obj.Name; return true; - case Feature item when fieldName == "overall": - checkValue = item.Overall?.AsStringValue(); + case "overall": + checkValue = obj.Overall?.AsStringValue(); return true; - case Feature item when fieldName == "status": - checkValue = item.Status?.AsStringValue(); + case "status": + checkValue = obj.Status?.AsStringValue(); return true; - case Feature item when fieldName == "type": - checkValue = item.FeatureType?.AsStringValue(); + case "type": + checkValue = obj.FeatureType?.AsStringValue(); return true; - case Feature item when fieldName == "value": - checkValue = item.Value; + case "value": + checkValue = obj.Value; return true; - case Header item when fieldName == "author": - checkValue = item.Author; + // If the key doesn't exist, we count it as null + default: + checkValue = null; + return false; + } + } + + /// + /// Get the check value for a field + /// + private static bool GetCheckValue(Header obj, string fieldName, out string? checkValue) + { + switch (fieldName) + { + case "author": + checkValue = obj.Author; return true; - case Header item when fieldName == "biosmode": - checkValue = item.BiosMode.AsStringValue(); + case "biosmode": + checkValue = obj.BiosMode.AsStringValue(); return true; - case Header item when fieldName == "build": - checkValue = item.Build; + case "build": + checkValue = obj.Build; return true; // Header.CanOpen is intentionally skipped - case Header item when fieldName == "category": - checkValue = item.Category; + case "category": + checkValue = obj.Category; return true; - case Header item when fieldName == "comment": - checkValue = item.Comment; + case "comment": + checkValue = obj.Comment; return true; - case Header item when fieldName == "date": - checkValue = item.Date; + case "date": + checkValue = obj.Date; return true; - case Header item when fieldName == "datversion": - checkValue = item.DatVersion; + case "datversion": + checkValue = obj.DatVersion; return true; - case Header item when fieldName == "debug": - checkValue = item.Debug.FromYesNo(); + case "debug": + checkValue = obj.Debug.FromYesNo(); return true; - case Header item when fieldName == "description": - checkValue = item.Description; + case "description": + checkValue = obj.Description; return true; - case Header item when fieldName == "email": - checkValue = item.Email; + case "email": + checkValue = obj.Email; return true; - case Header item when fieldName == "emulatorversion": - checkValue = item.EmulatorVersion; + case "emulatorversion": + checkValue = obj.EmulatorVersion; return true; - case Header item when fieldName == "filename": - checkValue = item.FileName; + case "filename": + checkValue = obj.FileName; return true; - case Header item when fieldName == "forcemerging": - checkValue = item.ForceMerging.AsStringValue(); + case "forcemerging": + checkValue = obj.ForceMerging.AsStringValue(); return true; - case Header item when fieldName == "forcenodump": - checkValue = item.ForceNodump.AsStringValue(); + case "forcenodump": + checkValue = obj.ForceNodump.AsStringValue(); return true; - case Header item when fieldName == "forcepacking": - checkValue = item.ForcePacking.AsStringValue(); + case "forcepacking": + checkValue = obj.ForcePacking.AsStringValue(); return true; - case Header item when fieldName == "forcezipping": - checkValue = item.ForceZipping.FromYesNo(); + case "forcezipping": + checkValue = obj.ForceZipping.FromYesNo(); return true; // Header.HeaderRow is intentionally skipped - case Header item when fieldName == "header" || fieldName == "headerskipper" || fieldName == "skipper": - checkValue = item.HeaderSkipper; + case "header": + case "headerskipper": + case "skipper": + checkValue = obj.HeaderSkipper; return true; - case Header item when fieldName == "homepage": - checkValue = item.Homepage; + case "homepage": + checkValue = obj.Homepage; return true; - case Header item when fieldName == "id": - checkValue = item.Id; + case "id": + checkValue = obj.Id; return true; // Header.Images is intentionally skipped - case Header item when fieldName == "imfolder": - checkValue = item.ImFolder; + case "imfolder": + checkValue = obj.ImFolder; return true; // Header.Infos is intentionally skipped - case Header item when fieldName == "lockbiosmode": - checkValue = item.LockBiosMode.FromYesNo(); + case "lockbiosmode": + checkValue = obj.LockBiosMode.FromYesNo(); return true; - case Header item when fieldName == "lockrommode": - checkValue = item.LockRomMode.FromYesNo(); + case "lockrommode": + checkValue = obj.LockRomMode.FromYesNo(); return true; - case Header item when fieldName == "locksamplemode": - checkValue = item.LockSampleMode.FromYesNo(); + case "locksamplemode": + checkValue = obj.LockSampleMode.FromYesNo(); return true; - case Header item when fieldName == "mameconfig": - checkValue = item.MameConfig; + case "mameconfig": + checkValue = obj.MameConfig; return true; - case Header item when fieldName == "name": - checkValue = item.Name; + case "name": + checkValue = obj.Name; return true; // Header.NewDat is intentionally skipped - case Header item when fieldName == "notes": - checkValue = item.Notes; + case "notes": + checkValue = obj.Notes; return true; - case Header item when fieldName == "plugin": - checkValue = item.Plugin; + case "plugin": + checkValue = obj.Plugin; return true; - case Header item when fieldName == "refname": - checkValue = item.RefName; + case "refname": + checkValue = obj.RefName; return true; - case Header item when fieldName == "rommode": - checkValue = item.RomMode.AsStringValue(); + case "rommode": + checkValue = obj.RomMode.AsStringValue(); return true; - case Header item when fieldName == "romtitle": - checkValue = item.RomTitle; + case "romtitle": + checkValue = obj.RomTitle; return true; - case Header item when fieldName == "rootdir": - checkValue = item.RootDir; + case "rootdir": + checkValue = obj.RootDir; return true; - case Header item when fieldName == "samplemode": - checkValue = item.SampleMode.AsStringValue(); + case "samplemode": + checkValue = obj.SampleMode.AsStringValue(); return true; - case Header item when fieldName == "schemalocation": - checkValue = item.SchemaLocation; + case "schemalocation": + checkValue = obj.SchemaLocation; return true; - case Header item when fieldName == "screenshotsheight": - checkValue = item.ScreenshotsHeight; + case "screenshotsheight": + checkValue = obj.ScreenshotsHeight; return true; - case Header item when fieldName == "screenshotswidth": - checkValue = item.ScreenshotsWidth; + case "screenshotswidth": + checkValue = obj.ScreenshotsWidth; return true; // Header.Search is intentionally skipped - case Header item when fieldName == "system": - checkValue = item.System; + case "system": + checkValue = obj.System; return true; - case Header item when fieldName == "timestamp": - checkValue = item.Timestamp; + case "timestamp": + checkValue = obj.Timestamp; return true; - case Header item when fieldName == "type": - checkValue = item.Timestamp; + case "type": + checkValue = obj.Timestamp; return true; - case Header item when fieldName == "url": - checkValue = item.Url; + case "url": + checkValue = obj.Url; return true; - case Header item when fieldName == "version": - checkValue = item.Version; + case "version": + checkValue = obj.Version; return true; - case Info item when fieldName == "name": - checkValue = item.Name; - return true; - case Info item when fieldName == "value": - checkValue = item.Value; - return true; - - case Input item when fieldName == "buttons": - checkValue = item.Buttons?.ToString(); - return true; - case Input item when fieldName == "coins": - checkValue = item.Coins?.ToString(); - return true; - case Input item when fieldName == "controlattr": - checkValue = item.ControlAttr; - return true; - case Input item when fieldName == "players": - checkValue = item.Players?.ToString(); - return true; - case Input item when fieldName == "service": - checkValue = item.Service.FromYesNo(); - return true; - case Input item when fieldName == "tilt": - checkValue = item.Tilt.FromYesNo(); - return true; - - case Instance item when fieldName == "name": - checkValue = item.Name; - return true; - - case Machine item when fieldName == "board": - checkValue = item.Board; - return true; - case Machine item when fieldName == "buttons": - checkValue = item.Buttons; - return true; - case Machine item when fieldName == "category": - checkValue = item.Category is null ? null : string.Join(", ", item.Category); - return true; - case Machine item when fieldName == "cloneof": - checkValue = item.CloneOf; - return true; - case Machine item when fieldName == "cloneofid": - checkValue = item.CloneOfId; - return true; - case Machine item when fieldName == "comment": - checkValue = item.Comment is null ? null : string.Join(", ", item.Comment); - return true; - case Machine item when fieldName == "company": - checkValue = item.Company; - return true; - case Machine item when fieldName == "control": - checkValue = item.Control; - return true; - case Machine item when fieldName == "crc": - checkValue = item.CRC; - return true; - case Machine item when fieldName == "country": - checkValue = item.Country; - return true; - case Machine item when fieldName == "description": - checkValue = item.Description; - return true; - case Machine item when fieldName == "developer": - checkValue = item.Developer; - return true; - case Machine item when fieldName == "dirname": - checkValue = item.DirName; - return true; - case Machine item when fieldName == "displaycount": - checkValue = item.DisplayCount; - return true; - case Machine item when fieldName == "displaytype": - checkValue = item.DisplayType; - return true; - case Machine item when fieldName == "duplicateid": - checkValue = item.DuplicateID; - return true; - case Machine item when fieldName == "emulator": - checkValue = item.Emulator; - return true; - case Machine item when fieldName == "enabled": - checkValue = item.Enabled; - return true; - case Machine item when fieldName == "extra": - checkValue = item.Extra; - return true; - case Machine item when fieldName == "favorite": - checkValue = item.Favorite; - return true; - case Machine item when fieldName == "genmsxid": - checkValue = item.GenMSXID; - return true; - case Machine item when fieldName == "genre": - checkValue = item.Genre; - return true; - case Machine item when fieldName == "hash": - checkValue = item.Hash; - return true; - case Machine item when fieldName == "history": - checkValue = item.History; - return true; - case Machine item when fieldName == "id": - checkValue = item.Id; - return true; - case Machine item when fieldName == "im1crc": - checkValue = item.Im1CRC; - return true; - case Machine item when fieldName == "im2crc": - checkValue = item.Im2CRC; - return true; - case Machine item when fieldName == "imagenumber": - checkValue = item.ImageNumber; - return true; - case Machine item when fieldName == "isbios": - checkValue = item.IsBios.FromYesNo(); - return true; - case Machine item when fieldName == "isdevice": - checkValue = item.IsDevice.FromYesNo(); - return true; - case Machine item when fieldName == "ismechanical": - checkValue = item.IsMechanical.FromYesNo(); - return true; - case Machine item when fieldName == "language": - checkValue = item.Language; - return true; - case Machine item when fieldName == "location": - checkValue = item.Location; - return true; - case Machine item when fieldName == "manufacturer": - checkValue = item.Manufacturer; - return true; - case Machine item when fieldName == "name": - checkValue = item.Name; - return true; - case Machine item when fieldName == "notes": - checkValue = item.Notes; - return true; - case Machine item when fieldName == "playedcount": - checkValue = item.PlayedCount; - return true; - case Machine item when fieldName == "playedtime": - checkValue = item.PlayedTime; - return true; - case Machine item when fieldName == "players": - checkValue = item.Players; - return true; - case Machine item when fieldName == "publisher": - checkValue = item.Publisher; - return true; - case Machine item when fieldName == "ratings": - checkValue = item.Ratings; - return true; - case Machine item when fieldName == "rebuildto": - checkValue = item.RebuildTo; - return true; - case Machine item when fieldName == "relatedto": - checkValue = item.RelatedTo; - return true; - case Machine item when fieldName == "releasenumber": - checkValue = item.ReleaseNumber; - return true; - case Machine item when fieldName == "romof": - checkValue = item.RomOf; - return true; - case Machine item when fieldName == "rotation": - checkValue = item.Rotation; - return true; - case Machine item when fieldName == "runnable": - checkValue = item.Runnable?.AsStringValue(); - return true; - case Machine item when fieldName == "sampleof": - checkValue = item.SampleOf; - return true; - case Machine item when fieldName == "savetype": - checkValue = item.SaveType; - return true; - case Machine item when fieldName == "score": - checkValue = item.Score; - return true; - case Machine item when fieldName == "source": - checkValue = item.Source; - return true; - case Machine item when fieldName == "sourcefile": - checkValue = item.SourceFile; - return true; - case Machine item when fieldName == "sourcerom": - checkValue = item.SourceRom; - return true; - case Machine item when fieldName == "status": - checkValue = item.Status; - return true; - case Machine item when fieldName == "subgenre": - checkValue = item.Subgenre; - return true; - case Machine item when fieldName == "supported": - checkValue = item.Supported?.AsStringValue(); - return true; - case Machine item when fieldName == "system": - checkValue = item.System; - return true; - case Machine item when fieldName == "tags": - checkValue = item.Tags; - return true; - case Machine item when fieldName == "titleid": - checkValue = item.TitleID; - return true; - case Machine item when fieldName == "url": - checkValue = item.Url; - return true; - case Machine item when fieldName == "year": - checkValue = item.Year; - return true; - - case Media item when fieldName == "md5": - checkValue = item.MD5; - return true; - case Media item when fieldName == "name": - checkValue = item.Name; - return true; - case Media item when fieldName == "sha1": - checkValue = item.SHA1; - return true; - case Media item when fieldName == "sha256": - checkValue = item.SHA256; - return true; - case Media item when fieldName == "spamsum": - checkValue = item.SpamSum; - return true; - - case Original item when fieldName == "content": - checkValue = item.Content; - return true; - case Original item when fieldName == "value": - checkValue = item.Value.FromYesNo(); - return true; - - case Part item when fieldName == "interface": - checkValue = item.Interface; - return true; - case Part item when fieldName == "name": - checkValue = item.Name; - return true; - - case Port item when fieldName == "tag": - checkValue = item.Tag; - return true; - - case RamOption item when fieldName == "content": - checkValue = item.Content; - return true; - case RamOption item when fieldName == "default": - checkValue = item.Default.FromYesNo(); - return true; - case RamOption item when fieldName == "name": - checkValue = item.Name; - return true; - - case Release item when fieldName == "date": - checkValue = item.Date; - return true; - case Release item when fieldName == "default": - checkValue = item.Default.FromYesNo(); - return true; - case Release item when fieldName == "language": - checkValue = item.Language; - return true; - case Release item when fieldName == "name": - checkValue = item.Name; - return true; - case Release item when fieldName == "region": - checkValue = item.Region; - return true; - - case ReleaseDetails item when fieldName == "appendtonumber": - checkValue = item.AppendToNumber; - return true; - case ReleaseDetails item when fieldName == "archivename": - checkValue = item.ArchiveName; - return true; - case ReleaseDetails item when fieldName == "category": - checkValue = item.Category; - return true; - case ReleaseDetails item when fieldName == "comment": - checkValue = item.Comment; - return true; - case ReleaseDetails item when fieldName == "date": - checkValue = item.Date; - return true; - case ReleaseDetails item when fieldName == "dirname": - checkValue = item.DirName; - return true; - case ReleaseDetails item when fieldName == "group": - checkValue = item.Group; - return true; - case ReleaseDetails item when fieldName == "id": - checkValue = item.Id; - return true; - case ReleaseDetails item when fieldName == "nfocrc": - checkValue = item.NfoCRC; - return true; - case ReleaseDetails item when fieldName == "nfoname": - checkValue = item.NfoName; - return true; - case ReleaseDetails item when fieldName == "nfosize": - checkValue = item.NfoSize; - return true; - case ReleaseDetails item when fieldName == "origin": - checkValue = item.Origin; - return true; - case ReleaseDetails item when fieldName == "originalformat": - checkValue = item.OriginalFormat; - return true; - case ReleaseDetails item when fieldName == "region": - checkValue = item.Region; - return true; - case ReleaseDetails item when fieldName == "rominfo": - checkValue = item.RomInfo; - return true; - case ReleaseDetails item when fieldName == "tool": - checkValue = item.Tool; - return true; - - case Rom item when fieldName == "album": - checkValue = item.Album; - return true; - case Rom item when fieldName == "altromname": - checkValue = item.AltRomname; - return true; - case Rom item when fieldName == "alttitle": - checkValue = item.AltTitle; - return true; - case Rom item when fieldName == "artist": - checkValue = item.Artist; - return true; - case Rom item when fieldName == "asrdetectedlang": - checkValue = item.ASRDetectedLang; - return true; - case Rom item when fieldName == "asrdetectedlangconf": - checkValue = item.ASRDetectedLangConf; - return true; - case Rom item when fieldName == "asrtranscribedlang": - checkValue = item.ASRTranscribedLang; - return true; - case Rom item when fieldName == "bios": - checkValue = item.Bios; - return true; - case Rom item when fieldName == "bitrate": - checkValue = item.Bitrate; - return true; - case Rom item when fieldName == "bittorrentmagnethash": - checkValue = item.BitTorrentMagnetHash; - return true; - case Rom item when fieldName == "clothcoverdetectionmoduleversion": - checkValue = item.ClothCoverDetectionModuleVersion; - return true; - case Rom item when fieldName == "collectioncatalognumber": - checkValue = item.CollectionCatalogNumber; - return true; - case Rom item when fieldName == "comment": - checkValue = item.Comment; - return true; - case Rom item when fieldName == "crc": - checkValue = item.CRC; - return true; - case Rom item when fieldName == "crc16": - checkValue = item.CRC16; - return true; - case Rom item when fieldName == "crc64": - checkValue = item.CRC64; - return true; - case Rom item when fieldName == "creator": - checkValue = item.Creator; - return true; - case Rom item when fieldName == "date": - checkValue = item.Date; - return true; - case Rom item when fieldName == "dispose": - checkValue = item.Dispose.FromYesNo(); - return true; - case Rom item when fieldName == "extension": - checkValue = item.Extension; - return true; - case Rom item when fieldName == "filecount": - checkValue = item.FileCount?.ToString(); - return true; - case Rom item when fieldName == "fileisavailable": - checkValue = item.FileIsAvailable.FromYesNo(); - return true; - case Rom item when fieldName == "flags": - checkValue = item.Flags; - return true; - case Rom item when fieldName == "format": - checkValue = item.Format; - return true; - case Rom item when fieldName == "header": - checkValue = item.Header; - return true; - case Rom item when fieldName == "height": - checkValue = item.Height; - return true; - case Rom item when fieldName == "hocrchartowordhocrversion": - checkValue = item.hOCRCharToWordhOCRVersion; - return true; - case Rom item when fieldName == "hocrchartowordmoduleversion": - checkValue = item.hOCRCharToWordModuleVersion; - return true; - case Rom item when fieldName == "hocrftstexthocrversion": - checkValue = item.hOCRFtsTexthOCRVersion; - return true; - case Rom item when fieldName == "hocrftstextmoduleversion": - checkValue = item.hOCRFtsTextModuleVersion; - return true; - case Rom item when fieldName == "hocrpageindexhocrversion": - checkValue = item.hOCRPageIndexhOCRVersion; - return true; - case Rom item when fieldName == "hocrpageindexmoduleversion": - checkValue = item.hOCRPageIndexModuleVersion; - return true; - case Rom item when fieldName == "inverted": - checkValue = item.Inverted.FromYesNo(); - return true; - case Rom item when fieldName == "lastmodifiedtime": - checkValue = item.LastModifiedTime; - return true; - case Rom item when fieldName == "length": - checkValue = item.Length; - return true; - case Rom item when fieldName == "loadflag": - checkValue = item.LoadFlag?.AsStringValue(); - return true; - case Rom item when fieldName == "matrixnumber": - checkValue = item.MatrixNumber; - return true; - case Rom item when fieldName == "md2": - checkValue = item.MD2; - return true; - case Rom item when fieldName == "md4": - checkValue = item.MD4; - return true; - case Rom item when fieldName == "md5": - checkValue = item.MD5; - return true; - case Rom item when fieldName == "mediatype": - checkValue = item.OpenMSXMediaType?.AsStringValue(); - return true; - case Rom item when fieldName == "merge": - checkValue = item.Merge; - return true; - case Rom item when fieldName == "mia": - checkValue = item.MIA.FromYesNo(); - return true; - case Rom item when fieldName == "name": - checkValue = item.Name; - return true; - case Rom item when fieldName == "offset": - checkValue = item.Offset; - return true; - case Rom item when fieldName == "optional": - checkValue = item.Optional.FromYesNo(); - return true; - case Rom item when fieldName == "original": - checkValue = item.Original; - return true; - case Rom item when fieldName == "pdfmoduleversion": - checkValue = item.PDFModuleVersion; - return true; - case Rom item when fieldName == "previewimage": - checkValue = item.PreviewImage; - return true; - case Rom item when fieldName == "publisher": - checkValue = item.Publisher; - return true; - case Rom item when fieldName == "region": - checkValue = item.Region; - return true; - case Rom item when fieldName == "remark": - checkValue = item.Remark; - return true; - case Rom item when fieldName == "ripemd128": - checkValue = item.RIPEMD128; - return true; - case Rom item when fieldName == "ripemd160": - checkValue = item.RIPEMD160; - return true; - case Rom item when fieldName == "rotation": - checkValue = item.Rotation; - return true; - case Rom item when fieldName == "serial": - checkValue = item.Serial; - return true; - case Rom item when fieldName == "sha1": - checkValue = item.SHA1; - return true; - case Rom item when fieldName == "sha256": - checkValue = item.SHA256; - return true; - case Rom item when fieldName == "sha384": - checkValue = item.SHA384; - return true; - case Rom item when fieldName == "sha512": - checkValue = item.SHA512; - return true; - case Rom item when fieldName == "size": - checkValue = item.Size?.ToString(); - return true; - case Rom item when fieldName == "soundonly": - checkValue = item.SoundOnly.FromYesNo(); - return true; - case Rom item when fieldName == "source": - checkValue = item.Source; - return true; - case Rom item when fieldName == "spamsum": - checkValue = item.SpamSum; - return true; - case Rom item when fieldName == "start": - checkValue = item.Start; - return true; - case Rom item when fieldName == "status": - checkValue = item.Status?.AsStringValue(); - return true; - case Rom item when fieldName == "summation": - checkValue = item.Summation; - return true; - case Rom item when fieldName == "tesseractocr": - checkValue = item.TesseractOCR; - return true; - case Rom item when fieldName == "tesseractocrconverted": - checkValue = item.TesseractOCRConverted; - return true; - case Rom item when fieldName == "tesseractocrdetectedlang": - checkValue = item.TesseractOCRDetectedLang; - return true; - case Rom item when fieldName == "tesseractocrdetectedlangconf": - checkValue = item.TesseractOCRDetectedLangConf; - return true; - case Rom item when fieldName == "tesseractocrdetectedscript": - checkValue = item.TesseractOCRDetectedScript; - return true; - case Rom item when fieldName == "tesseractocrdetectedscriptconf": - checkValue = item.TesseractOCRDetectedScriptConf; - return true; - case Rom item when fieldName == "tesseractocrmoduleversion": - checkValue = item.TesseractOCRModuleVersion; - return true; - case Rom item when fieldName == "tesseractocrparameters": - checkValue = item.TesseractOCRParameters; - return true; - case Rom item when fieldName == "title": - checkValue = item.Title; - return true; - case Rom item when fieldName == "track": - checkValue = item.Track; - return true; - case Rom item when fieldName == "openmsxtype": - checkValue = item.OpenMSXType; - return true; - case Rom item when fieldName == "value": - checkValue = item.Value; - return true; - case Rom item when fieldName == "whisperasrmoduleversion": - checkValue = item.WhisperASRModuleVersion; - return true; - case Rom item when fieldName == "whispermodelhash": - checkValue = item.WhisperModelHash; - return true; - case Rom item when fieldName == "whispermodelname": - checkValue = item.WhisperModelName; - return true; - case Rom item when fieldName == "whisperversion": - checkValue = item.WhisperVersion; - return true; - case Rom item when fieldName == "width": - checkValue = item.Width; - return true; - case Rom item when fieldName == "wordconfidenceinterval0to10": - checkValue = item.WordConfidenceInterval0To10; - return true; - case Rom item when fieldName == "wordconfidenceinterval11to20": - checkValue = item.WordConfidenceInterval11To20; - return true; - case Rom item when fieldName == "wordconfidenceinterval21to30": - checkValue = item.WordConfidenceInterval21To30; - return true; - case Rom item when fieldName == "wordconfidenceinterval31to40": - checkValue = item.WordConfidenceInterval31To40; - return true; - case Rom item when fieldName == "wordconfidenceinterval41to50": - checkValue = item.WordConfidenceInterval41To50; - return true; - case Rom item when fieldName == "wordconfidenceinterval51to60": - checkValue = item.WordConfidenceInterval51To60; - return true; - case Rom item when fieldName == "wordconfidenceinterval61to70": - checkValue = item.WordConfidenceInterval61To70; - return true; - case Rom item when fieldName == "wordconfidenceinterval71to80": - checkValue = item.WordConfidenceInterval71To80; - return true; - case Rom item when fieldName == "wordconfidenceinterval81to90": - checkValue = item.WordConfidenceInterval81To90; - return true; - case Rom item when fieldName == "wordconfidenceinterval91to100": - checkValue = item.WordConfidenceInterval91To100; - return true; - case Rom item when fieldName == "xxhash364": - checkValue = item.xxHash364; - return true; - case Rom item when fieldName == "xxhash3128": - checkValue = item.xxHash3128; - return true; - - case Sample item when fieldName == "name": - checkValue = item.Name; - return true; - - case Serials item when fieldName == "boxbarcode": - checkValue = item.BoxBarcode; - return true; - case Serials item when fieldName == "boxserial": - checkValue = item.BoxSerial; - return true; - case Serials item when fieldName == "chipserial": - checkValue = item.ChipSerial; - return true; - case Serials item when fieldName == "digitalserial1": - checkValue = item.DigitalSerial1; - return true; - case Serials item when fieldName == "digitalserial2": - checkValue = item.DigitalSerial2; - return true; - case Serials item when fieldName == "lockoutserial": - checkValue = item.LockoutSerial; - return true; - case Serials item when fieldName == "mediaserial1": - checkValue = item.MediaSerial1; - return true; - case Serials item when fieldName == "mediaserial2": - checkValue = item.MediaSerial2; - return true; - case Serials item when fieldName == "mediaserial3": - checkValue = item.MediaSerial3; - return true; - case Serials item when fieldName == "mediastamp": - checkValue = item.MediaStamp; - return true; - case Serials item when fieldName == "pcbserial": - checkValue = item.PCBSerial; - return true; - case Serials item when fieldName == "romchipserial1": - checkValue = item.RomChipSerial1; - return true; - case Serials item when fieldName == "romchipserial2": - checkValue = item.RomChipSerial2; - return true; - case Serials item when fieldName == "savechipserial": - checkValue = item.SaveChipSerial; - return true; - - case SharedFeat item when fieldName == "name": - checkValue = item.Name; - return true; - case SharedFeat item when fieldName == "value": - checkValue = item.Value; - return true; - - case Slot item when fieldName == "name": - checkValue = item.Name; - return true; - - case SlotOption item when fieldName == "default": - checkValue = item.Default.FromYesNo(); - return true; - case SlotOption item when fieldName == "devname": - checkValue = item.DevName; - return true; - case SlotOption item when fieldName == "name": - checkValue = item.Name; - return true; - - case SoftwareList item when fieldName == "filter": - checkValue = item.Filter; - return true; - case SoftwareList item when fieldName == "name": - checkValue = item.Name; - return true; - case SoftwareList item when fieldName == "status": - checkValue = item.Status?.AsStringValue(); - return true; - case SoftwareList item when fieldName == "tag": - checkValue = item.Tag; - return true; - - case Sound item when fieldName == "channels": - checkValue = item.Channels?.ToString(); - return true; - - case SourceDetails item when fieldName == "appendtonumber": - checkValue = item.AppendToNumber; - return true; - case SourceDetails item when fieldName == "comment1": - checkValue = item.Comment1; - return true; - case SourceDetails item when fieldName == "comment2": - checkValue = item.Comment2; - return true; - case SourceDetails item when fieldName == "dumpdate": - checkValue = item.DumpDate; - return true; - case SourceDetails item when fieldName == "dumpdateinfo": - checkValue = item.DumpDateInfo is null ? null : (item.DumpDateInfo == true ? "1" : "0"); - return true; - case SourceDetails item when fieldName == "dumper": - checkValue = item.Dumper; - return true; - case SourceDetails item when fieldName == "id": - checkValue = item.Id; - return true; - case SourceDetails item when fieldName == "link1": - checkValue = item.Link1; - return true; - case SourceDetails item when fieldName == "link1public": - checkValue = item.Link1Public is null ? null : (item.Link1Public == true ? "1" : "0"); - return true; - case SourceDetails item when fieldName == "link2": - checkValue = item.Link2; - return true; - case SourceDetails item when fieldName == "link2public": - checkValue = item.Link2Public is null ? null : (item.Link2Public == true ? "1" : "0"); - return true; - case SourceDetails item when fieldName == "link3": - checkValue = item.Link3; - return true; - case SourceDetails item when fieldName == "link3public": - checkValue = item.Link3Public is null ? null : (item.Link3Public == true ? "1" : "0"); - return true; - case SourceDetails item when fieldName == "mediatitle": - checkValue = item.MediaTitle; - return true; - case SourceDetails item when fieldName == "nodump": - checkValue = item.Nodump is null ? null : (item.Nodump == true ? "1" : "0"); - return true; - case SourceDetails item when fieldName == "origin": - checkValue = item.Origin; - return true; - case SourceDetails item when fieldName == "originalformat": - checkValue = item.OriginalFormat; - return true; - case SourceDetails item when fieldName == "project": - checkValue = item.Project; - return true; - case SourceDetails item when fieldName == "region": - checkValue = item.Region; - return true; - case SourceDetails item when fieldName == "releasedate": - checkValue = item.ReleaseDate; - return true; - case SourceDetails item when fieldName == "releasedateinfo": - checkValue = item.ReleaseDateInfo is null ? null : (item.ReleaseDateInfo == true ? "1" : "0"); - return true; - case SourceDetails item when fieldName == "rominfo": - checkValue = item.RomInfo; - return true; - case SourceDetails item when fieldName == "section": - checkValue = item.Section; - return true; - case SourceDetails item when fieldName == "tool": - checkValue = item.Tool; - return true; - - case Video item when fieldName == "aspectx": - checkValue = item.AspectX?.ToString(); - return true; - case Video item when fieldName == "aspecty": - checkValue = item.AspectY?.ToString(); - return true; - case Video item when fieldName == "height" || fieldName == "y": - checkValue = item.Height?.ToString(); - return true; - case Video item when fieldName == "orientation" || fieldName == "rotate": - checkValue = item.Orientation?.AsStringValue(); - return true; - case Video item when fieldName == "refresh" || fieldName == "freq": - checkValue = item.Refresh?.ToString(); - return true; - case Video item when fieldName == "screen" || fieldName == "type": - checkValue = item.Screen?.AsStringValue(); - return true; - case Video item when fieldName == "width" || fieldName == "x": - checkValue = item.Width?.ToString(); - return true; - - // Fallthrough to Dictionary-based checking - default: break; + // If the key doesn't exist, we count it as null + default: + checkValue = null; + return false; } + } - // If the key doesn't exist, we count it as null - checkValue = null; - return false; + /// + /// Get the check value for a field + /// + private static bool GetCheckValue(Info obj, string fieldName, out string? checkValue) + { + switch (fieldName) + { + case "name": + checkValue = obj.Name; + return true; + case "value": + checkValue = obj.Value; + return true; + + // If the key doesn't exist, we count it as null + default: + checkValue = null; + return false; + } + } + + /// + /// Get the check value for a field + /// + private static bool GetCheckValue(Input obj, string fieldName, out string? checkValue) + { + switch (fieldName) + { + case "buttons": + checkValue = obj.Buttons?.ToString(); + return true; + case "coins": + checkValue = obj.Coins?.ToString(); + return true; + case "controlattr": + checkValue = obj.ControlAttr; + return true; + case "players": + checkValue = obj.Players?.ToString(); + return true; + case "service": + checkValue = obj.Service.FromYesNo(); + return true; + case "tilt": + checkValue = obj.Tilt.FromYesNo(); + return true; + + // If the key doesn't exist, we count it as null + default: + checkValue = null; + return false; + } + } + + /// + /// Get the check value for a field + /// + private static bool GetCheckValue(Instance obj, string fieldName, out string? checkValue) + { + switch (fieldName) + { + case "name": + checkValue = obj.Name; + return true; + + // If the key doesn't exist, we count it as null + default: + checkValue = null; + return false; + } + } + + /// + /// Get the check value for a field + /// + private static bool GetCheckValue(Machine obj, string fieldName, out string? checkValue) + { + switch (fieldName) + { + case "board": + checkValue = obj.Board; + return true; + case "buttons": + checkValue = obj.Buttons; + return true; + case "category": + checkValue = obj.Category is null ? null : string.Join(", ", obj.Category); + return true; + case "cloneof": + checkValue = obj.CloneOf; + return true; + case "cloneofid": + checkValue = obj.CloneOfId; + return true; + case "comment": + checkValue = obj.Comment is null ? null : string.Join(", ", obj.Comment); + return true; + case "company": + checkValue = obj.Company; + return true; + case "control": + checkValue = obj.Control; + return true; + case "crc": + checkValue = obj.CRC; + return true; + case "country": + checkValue = obj.Country; + return true; + case "description": + checkValue = obj.Description; + return true; + case "developer": + checkValue = obj.Developer; + return true; + case "dirname": + checkValue = obj.DirName; + return true; + case "displaycount": + checkValue = obj.DisplayCount; + return true; + case "displaytype": + checkValue = obj.DisplayType; + return true; + case "duplicateid": + checkValue = obj.DuplicateID; + return true; + case "emulator": + checkValue = obj.Emulator; + return true; + case "enabled": + checkValue = obj.Enabled; + return true; + case "extra": + checkValue = obj.Extra; + return true; + case "favorite": + checkValue = obj.Favorite; + return true; + case "genmsxid": + checkValue = obj.GenMSXID; + return true; + case "genre": + checkValue = obj.Genre; + return true; + case "hash": + checkValue = obj.Hash; + return true; + case "history": + checkValue = obj.History; + return true; + case "id": + checkValue = obj.Id; + return true; + case "im1crc": + checkValue = obj.Im1CRC; + return true; + case "im2crc": + checkValue = obj.Im2CRC; + return true; + case "imagenumber": + checkValue = obj.ImageNumber; + return true; + case "isbios": + checkValue = obj.IsBios.FromYesNo(); + return true; + case "isdevice": + checkValue = obj.IsDevice.FromYesNo(); + return true; + case "ismechanical": + checkValue = obj.IsMechanical.FromYesNo(); + return true; + case "language": + checkValue = obj.Language; + return true; + case "location": + checkValue = obj.Location; + return true; + case "manufacturer": + checkValue = obj.Manufacturer; + return true; + case "name": + checkValue = obj.Name; + return true; + case "notes": + checkValue = obj.Notes; + return true; + case "playedcount": + checkValue = obj.PlayedCount; + return true; + case "playedtime": + checkValue = obj.PlayedTime; + return true; + case "players": + checkValue = obj.Players; + return true; + case "publisher": + checkValue = obj.Publisher; + return true; + case "ratings": + checkValue = obj.Ratings; + return true; + case "rebuildto": + checkValue = obj.RebuildTo; + return true; + case "relatedto": + checkValue = obj.RelatedTo; + return true; + case "releasenumber": + checkValue = obj.ReleaseNumber; + return true; + case "romof": + checkValue = obj.RomOf; + return true; + case "rotation": + checkValue = obj.Rotation; + return true; + case "runnable": + checkValue = obj.Runnable?.AsStringValue(); + return true; + case "sampleof": + checkValue = obj.SampleOf; + return true; + case "savetype": + checkValue = obj.SaveType; + return true; + case "score": + checkValue = obj.Score; + return true; + case "source": + checkValue = obj.Source; + return true; + case "sourcefile": + checkValue = obj.SourceFile; + return true; + case "sourcerom": + checkValue = obj.SourceRom; + return true; + case "status": + checkValue = obj.Status; + return true; + case "subgenre": + checkValue = obj.Subgenre; + return true; + case "supported": + checkValue = obj.Supported?.AsStringValue(); + return true; + case "system": + checkValue = obj.System; + return true; + case "tags": + checkValue = obj.Tags; + return true; + case "titleid": + checkValue = obj.TitleID; + return true; + case "url": + checkValue = obj.Url; + return true; + case "year": + checkValue = obj.Year; + return true; + + // If the key doesn't exist, we count it as null + default: + checkValue = null; + return false; + } + } + + /// + /// Get the check value for a field + /// + private static bool GetCheckValue(Media obj, string fieldName, out string? checkValue) + { + switch (fieldName) + { + case "md5": + checkValue = obj.MD5; + return true; + case "name": + checkValue = obj.Name; + return true; + case "sha1": + checkValue = obj.SHA1; + return true; + case "sha256": + checkValue = obj.SHA256; + return true; + case "spamsum": + checkValue = obj.SpamSum; + return true; + + // If the key doesn't exist, we count it as null + default: + checkValue = null; + return false; + } + } + + /// + /// Get the check value for a field + /// + private static bool GetCheckValue(Original obj, string fieldName, out string? checkValue) + { + switch (fieldName) + { + case "content": + checkValue = obj.Content; + return true; + case "value": + checkValue = obj.Value.FromYesNo(); + return true; + + // If the key doesn't exist, we count it as null + default: + checkValue = null; + return false; + } + } + + /// + /// Get the check value for a field + /// + private static bool GetCheckValue(Part obj, string fieldName, out string? checkValue) + { + switch (fieldName) + { + case "interface": + checkValue = obj.Interface; + return true; + case "name": + checkValue = obj.Name; + return true; + + // If the key doesn't exist, we count it as null + default: + checkValue = null; + return false; + } + } + + /// + /// Get the check value for a field + /// + private static bool GetCheckValue(Port obj, string fieldName, out string? checkValue) + { + switch (fieldName) + { + case "tag": + checkValue = obj.Tag; + return true; + + // If the key doesn't exist, we count it as null + default: + checkValue = null; + return false; + } + } + + /// + /// Get the check value for a field + /// + private static bool GetCheckValue(RamOption obj, string fieldName, out string? checkValue) + { + switch (fieldName) + { + case "content": + checkValue = obj.Content; + return true; + case "default": + checkValue = obj.Default.FromYesNo(); + return true; + case "name": + checkValue = obj.Name; + return true; + + // If the key doesn't exist, we count it as null + default: + checkValue = null; + return false; + } + } + + /// + /// Get the check value for a field + /// + private static bool GetCheckValue(Release obj, string fieldName, out string? checkValue) + { + switch (fieldName) + { + case "date": + checkValue = obj.Date; + return true; + case "default": + checkValue = obj.Default.FromYesNo(); + return true; + case "language": + checkValue = obj.Language; + return true; + case "name": + checkValue = obj.Name; + return true; + case "region": + checkValue = obj.Region; + return true; + + // If the key doesn't exist, we count it as null + default: + checkValue = null; + return false; + } + } + + /// + /// Get the check value for a field + /// + private static bool GetCheckValue(ReleaseDetails obj, string fieldName, out string? checkValue) + { + switch (fieldName) + { + case "appendtonumber": + checkValue = obj.AppendToNumber; + return true; + case "archivename": + checkValue = obj.ArchiveName; + return true; + case "category": + checkValue = obj.Category; + return true; + case "comment": + checkValue = obj.Comment; + return true; + case "date": + checkValue = obj.Date; + return true; + case "dirname": + checkValue = obj.DirName; + return true; + case "group": + checkValue = obj.Group; + return true; + case "id": + checkValue = obj.Id; + return true; + case "nfocrc": + checkValue = obj.NfoCRC; + return true; + case "nfoname": + checkValue = obj.NfoName; + return true; + case "nfosize": + checkValue = obj.NfoSize; + return true; + case "origin": + checkValue = obj.Origin; + return true; + case "originalformat": + checkValue = obj.OriginalFormat; + return true; + case "region": + checkValue = obj.Region; + return true; + case "rominfo": + checkValue = obj.RomInfo; + return true; + case "tool": + checkValue = obj.Tool; + return true; + + // If the key doesn't exist, we count it as null + default: + checkValue = null; + return false; + } + } + + /// + /// Get the check value for a field + /// + private static bool GetCheckValue(Rom obj, string fieldName, out string? checkValue) + { + switch (fieldName) + { + case "album": + checkValue = obj.Album; + return true; + case "altromname": + checkValue = obj.AltRomname; + return true; + case "alttitle": + checkValue = obj.AltTitle; + return true; + case "artist": + checkValue = obj.Artist; + return true; + case "asrdetectedlang": + checkValue = obj.ASRDetectedLang; + return true; + case "asrdetectedlangconf": + checkValue = obj.ASRDetectedLangConf; + return true; + case "asrtranscribedlang": + checkValue = obj.ASRTranscribedLang; + return true; + case "bios": + checkValue = obj.Bios; + return true; + case "bitrate": + checkValue = obj.Bitrate; + return true; + case "bittorrentmagnethash": + checkValue = obj.BitTorrentMagnetHash; + return true; + case "clothcoverdetectionmoduleversion": + checkValue = obj.ClothCoverDetectionModuleVersion; + return true; + case "collectioncatalognumber": + checkValue = obj.CollectionCatalogNumber; + return true; + case "comment": + checkValue = obj.Comment; + return true; + case "crc": + checkValue = obj.CRC; + return true; + case "crc16": + checkValue = obj.CRC16; + return true; + case "crc64": + checkValue = obj.CRC64; + return true; + case "creator": + checkValue = obj.Creator; + return true; + case "date": + checkValue = obj.Date; + return true; + case "dispose": + checkValue = obj.Dispose.FromYesNo(); + return true; + case "extension": + checkValue = obj.Extension; + return true; + case "filecount": + checkValue = obj.FileCount?.ToString(); + return true; + case "fileisavailable": + checkValue = obj.FileIsAvailable.FromYesNo(); + return true; + case "flags": + checkValue = obj.Flags; + return true; + case "format": + checkValue = obj.Format; + return true; + case "header": + checkValue = obj.Header; + return true; + case "height": + checkValue = obj.Height; + return true; + case "hocrchartowordhocrversion": + checkValue = obj.hOCRCharToWordhOCRVersion; + return true; + case "hocrchartowordmoduleversion": + checkValue = obj.hOCRCharToWordModuleVersion; + return true; + case "hocrftstexthocrversion": + checkValue = obj.hOCRFtsTexthOCRVersion; + return true; + case "hocrftstextmoduleversion": + checkValue = obj.hOCRFtsTextModuleVersion; + return true; + case "hocrpageindexhocrversion": + checkValue = obj.hOCRPageIndexhOCRVersion; + return true; + case "hocrpageindexmoduleversion": + checkValue = obj.hOCRPageIndexModuleVersion; + return true; + case "inverted": + checkValue = obj.Inverted.FromYesNo(); + return true; + case "lastmodifiedtime": + checkValue = obj.LastModifiedTime; + return true; + case "length": + checkValue = obj.Length; + return true; + case "loadflag": + checkValue = obj.LoadFlag?.AsStringValue(); + return true; + case "matrixnumber": + checkValue = obj.MatrixNumber; + return true; + case "md2": + checkValue = obj.MD2; + return true; + case "md4": + checkValue = obj.MD4; + return true; + case "md5": + checkValue = obj.MD5; + return true; + case "mediatype": + checkValue = obj.OpenMSXMediaType?.AsStringValue(); + return true; + case "merge": + checkValue = obj.Merge; + return true; + case "mia": + checkValue = obj.MIA.FromYesNo(); + return true; + case "name": + checkValue = obj.Name; + return true; + case "offset": + checkValue = obj.Offset; + return true; + case "optional": + checkValue = obj.Optional.FromYesNo(); + return true; + case "original": + checkValue = obj.Original; + return true; + case "pdfmoduleversion": + checkValue = obj.PDFModuleVersion; + return true; + case "previewimage": + checkValue = obj.PreviewImage; + return true; + case "publisher": + checkValue = obj.Publisher; + return true; + case "region": + checkValue = obj.Region; + return true; + case "remark": + checkValue = obj.Remark; + return true; + case "ripemd128": + checkValue = obj.RIPEMD128; + return true; + case "ripemd160": + checkValue = obj.RIPEMD160; + return true; + case "rotation": + checkValue = obj.Rotation; + return true; + case "serial": + checkValue = obj.Serial; + return true; + case "sha1": + checkValue = obj.SHA1; + return true; + case "sha256": + checkValue = obj.SHA256; + return true; + case "sha384": + checkValue = obj.SHA384; + return true; + case "sha512": + checkValue = obj.SHA512; + return true; + case "size": + checkValue = obj.Size?.ToString(); + return true; + case "soundonly": + checkValue = obj.SoundOnly.FromYesNo(); + return true; + case "source": + checkValue = obj.Source; + return true; + case "spamsum": + checkValue = obj.SpamSum; + return true; + case "start": + checkValue = obj.Start; + return true; + case "status": + checkValue = obj.Status?.AsStringValue(); + return true; + case "summation": + checkValue = obj.Summation; + return true; + case "tesseractocr": + checkValue = obj.TesseractOCR; + return true; + case "tesseractocrconverted": + checkValue = obj.TesseractOCRConverted; + return true; + case "tesseractocrdetectedlang": + checkValue = obj.TesseractOCRDetectedLang; + return true; + case "tesseractocrdetectedlangconf": + checkValue = obj.TesseractOCRDetectedLangConf; + return true; + case "tesseractocrdetectedscript": + checkValue = obj.TesseractOCRDetectedScript; + return true; + case "tesseractocrdetectedscriptconf": + checkValue = obj.TesseractOCRDetectedScriptConf; + return true; + case "tesseractocrmoduleversion": + checkValue = obj.TesseractOCRModuleVersion; + return true; + case "tesseractocrparameters": + checkValue = obj.TesseractOCRParameters; + return true; + case "title": + checkValue = obj.Title; + return true; + case "track": + checkValue = obj.Track; + return true; + case "openmsxtype": + checkValue = obj.OpenMSXType; + return true; + case "value": + checkValue = obj.Value; + return true; + case "whisperasrmoduleversion": + checkValue = obj.WhisperASRModuleVersion; + return true; + case "whispermodelhash": + checkValue = obj.WhisperModelHash; + return true; + case "whispermodelname": + checkValue = obj.WhisperModelName; + return true; + case "whisperversion": + checkValue = obj.WhisperVersion; + return true; + case "width": + checkValue = obj.Width; + return true; + case "wordconfidenceinterval0to10": + checkValue = obj.WordConfidenceInterval0To10; + return true; + case "wordconfidenceinterval11to20": + checkValue = obj.WordConfidenceInterval11To20; + return true; + case "wordconfidenceinterval21to30": + checkValue = obj.WordConfidenceInterval21To30; + return true; + case "wordconfidenceinterval31to40": + checkValue = obj.WordConfidenceInterval31To40; + return true; + case "wordconfidenceinterval41to50": + checkValue = obj.WordConfidenceInterval41To50; + return true; + case "wordconfidenceinterval51to60": + checkValue = obj.WordConfidenceInterval51To60; + return true; + case "wordconfidenceinterval61to70": + checkValue = obj.WordConfidenceInterval61To70; + return true; + case "wordconfidenceinterval71to80": + checkValue = obj.WordConfidenceInterval71To80; + return true; + case "wordconfidenceinterval81to90": + checkValue = obj.WordConfidenceInterval81To90; + return true; + case "wordconfidenceinterval91to100": + checkValue = obj.WordConfidenceInterval91To100; + return true; + case "xxhash364": + checkValue = obj.xxHash364; + return true; + case "xxhash3128": + checkValue = obj.xxHash3128; + return true; + + // If the key doesn't exist, we count it as null + default: + checkValue = null; + return false; + } + } + + /// + /// Get the check value for a field + /// + private static bool GetCheckValue(Sample obj, string fieldName, out string? checkValue) + { + switch (fieldName) + { + case "name": + checkValue = obj.Name; + return true; + + // If the key doesn't exist, we count it as null + default: + checkValue = null; + return false; + } + } + + /// + /// Get the check value for a field + /// + private static bool GetCheckValue(Serials obj, string fieldName, out string? checkValue) + { + switch (fieldName) + { + case "boxbarcode": + checkValue = obj.BoxBarcode; + return true; + case "boxserial": + checkValue = obj.BoxSerial; + return true; + case "chipserial": + checkValue = obj.ChipSerial; + return true; + case "digitalserial1": + checkValue = obj.DigitalSerial1; + return true; + case "digitalserial2": + checkValue = obj.DigitalSerial2; + return true; + case "lockoutserial": + checkValue = obj.LockoutSerial; + return true; + case "mediaserial1": + checkValue = obj.MediaSerial1; + return true; + case "mediaserial2": + checkValue = obj.MediaSerial2; + return true; + case "mediaserial3": + checkValue = obj.MediaSerial3; + return true; + case "mediastamp": + checkValue = obj.MediaStamp; + return true; + case "pcbserial": + checkValue = obj.PCBSerial; + return true; + case "romchipserial1": + checkValue = obj.RomChipSerial1; + return true; + case "romchipserial2": + checkValue = obj.RomChipSerial2; + return true; + case "savechipserial": + checkValue = obj.SaveChipSerial; + return true; + + // If the key doesn't exist, we count it as null + default: + checkValue = null; + return false; + } + } + + /// + /// Get the check value for a field + /// + private static bool GetCheckValue(SharedFeat obj, string fieldName, out string? checkValue) + { + switch (fieldName) + { + case "name": + checkValue = obj.Name; + return true; + case "value": + checkValue = obj.Value; + return true; + + // If the key doesn't exist, we count it as null + default: + checkValue = null; + return false; + } + } + + /// + /// Get the check value for a field + /// + private static bool GetCheckValue(Slot obj, string fieldName, out string? checkValue) + { + switch (fieldName) + { + case "name": + checkValue = obj.Name; + return true; + + // If the key doesn't exist, we count it as null + default: + checkValue = null; + return false; + } + } + + /// + /// Get the check value for a field + /// + private static bool GetCheckValue(SlotOption obj, string fieldName, out string? checkValue) + { + switch (fieldName) + { + case "default": + checkValue = obj.Default.FromYesNo(); + return true; + case "devname": + checkValue = obj.DevName; + return true; + case "name": + checkValue = obj.Name; + return true; + + // If the key doesn't exist, we count it as null + default: + checkValue = null; + return false; + } + } + + /// + /// Get the check value for a field + /// + private static bool GetCheckValue(SoftwareList obj, string fieldName, out string? checkValue) + { + switch (fieldName) + { + case "filter": + checkValue = obj.Filter; + return true; + case "name": + checkValue = obj.Name; + return true; + case "status": + checkValue = obj.Status?.AsStringValue(); + return true; + case "tag": + checkValue = obj.Tag; + return true; + + // If the key doesn't exist, we count it as null + default: + checkValue = null; + return false; + } + } + + /// + /// Get the check value for a field + /// + private static bool GetCheckValue(Sound obj, string fieldName, out string? checkValue) + { + switch (fieldName) + { + case "channels": + checkValue = obj.Channels?.ToString(); + return true; + + // If the key doesn't exist, we count it as null + default: + checkValue = null; + return false; + } + } + + /// + /// Get the check value for a field + /// + private static bool GetCheckValue(SourceDetails obj, string fieldName, out string? checkValue) + { + switch (fieldName) + { + case "appendtonumber": + checkValue = obj.AppendToNumber; + return true; + case "comment1": + checkValue = obj.Comment1; + return true; + case "comment2": + checkValue = obj.Comment2; + return true; + case "dumpdate": + checkValue = obj.DumpDate; + return true; + case "dumpdateinfo": + checkValue = obj.DumpDateInfo is null ? null : (obj.DumpDateInfo == true ? "1" : "0"); + return true; + case "dumper": + checkValue = obj.Dumper; + return true; + case "id": + checkValue = obj.Id; + return true; + case "link1": + checkValue = obj.Link1; + return true; + case "link1public": + checkValue = obj.Link1Public is null ? null : (obj.Link1Public == true ? "1" : "0"); + return true; + case "link2": + checkValue = obj.Link2; + return true; + case "link2public": + checkValue = obj.Link2Public is null ? null : (obj.Link2Public == true ? "1" : "0"); + return true; + case "link3": + checkValue = obj.Link3; + return true; + case "link3public": + checkValue = obj.Link3Public is null ? null : (obj.Link3Public == true ? "1" : "0"); + return true; + case "mediatitle": + checkValue = obj.MediaTitle; + return true; + case "nodump": + checkValue = obj.Nodump is null ? null : (obj.Nodump == true ? "1" : "0"); + return true; + case "origin": + checkValue = obj.Origin; + return true; + case "originalformat": + checkValue = obj.OriginalFormat; + return true; + case "project": + checkValue = obj.Project; + return true; + case "region": + checkValue = obj.Region; + return true; + case "releasedate": + checkValue = obj.ReleaseDate; + return true; + case "releasedateinfo": + checkValue = obj.ReleaseDateInfo is null ? null : (obj.ReleaseDateInfo == true ? "1" : "0"); + return true; + case "rominfo": + checkValue = obj.RomInfo; + return true; + case "section": + checkValue = obj.Section; + return true; + case "tool": + checkValue = obj.Tool; + return true; + + // If the key doesn't exist, we count it as null + default: + checkValue = null; + return false; + } + } + + /// + /// Get the check value for a field + /// + private static bool GetCheckValue(Video obj, string fieldName, out string? checkValue) + { + switch (fieldName) + { + case "aspectx": + checkValue = obj.AspectX?.ToString(); + return true; + case "aspecty": + checkValue = obj.AspectY?.ToString(); + return true; + case "height": + case "y": + checkValue = obj.Height?.ToString(); + return true; + case "orientation": + case "rotate": + checkValue = obj.Orientation?.AsStringValue(); + return true; + case "refresh": + case "freq": + checkValue = obj.Refresh?.ToString(); + return true; + case "screen": + case "type": + checkValue = obj.Screen?.AsStringValue(); + return true; + case "width": + case "x": + checkValue = obj.Width?.ToString(); + return true; + + // If the key doesn't exist, we count it as null + default: + checkValue = null; + return false; + } } /// From 72dac4d6e236fe63bcbb425b6545f2525d6a5b40 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sun, 5 Apr 2026 00:21:19 -0400 Subject: [PATCH 104/142] The smallest cleanup --- SabreTools.Metadata.DatItems/DatItem.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/SabreTools.Metadata.DatItems/DatItem.cs b/SabreTools.Metadata.DatItems/DatItem.cs index 56036c6c..09d4cf91 100644 --- a/SabreTools.Metadata.DatItems/DatItem.cs +++ b/SabreTools.Metadata.DatItems/DatItem.cs @@ -192,8 +192,7 @@ namespace SabreTools.Metadata.DatItems /// True if the item and its machine passes the filter, false otherwise public bool PassesFilter(FilterRunner filterRunner) { - var machine = Machine; - if (machine is not null && !machine.PassesFilter(filterRunner)) + if (Machine is not null && !Machine.PassesFilter(filterRunner)) return false; return filterRunner.Run(_internal); From 2969324015eb8a21cc0973347f946e073ad778fc Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sun, 5 Apr 2026 00:25:56 -0400 Subject: [PATCH 105/142] None of these are constants now --- SabreTools.Metadata.Filter/FilterKey.cs | 42 ------------------------- SabreTools.Metadata/TypeHelper.cs | 25 --------------- 2 files changed, 67 deletions(-) diff --git a/SabreTools.Metadata.Filter/FilterKey.cs b/SabreTools.Metadata.Filter/FilterKey.cs index 9a207be5..491b9255 100644 --- a/SabreTools.Metadata.Filter/FilterKey.cs +++ b/SabreTools.Metadata.Filter/FilterKey.cs @@ -101,22 +101,6 @@ namespace SabreTools.Metadata.Filter /// private static bool ParseHeaderFilterId(ref string itemName, ref string fieldName) { - // Get the set of constants - var constants = TypeHelper.GetConstants(typeof(Header)); - if (constants is not null) - { - // Get if there's a match to a constant - string localFieldName = fieldName; - string? constantMatch = Array.Find(constants, c => string.Equals(c, localFieldName, StringComparison.OrdinalIgnoreCase)); - if (constantMatch is not null) - { - // Return the sanitized ID - itemName = "header"; - fieldName = constantMatch; - return true; - } - } - // Get the set of properties var properties = TypeHelper.GetProperties(typeof(Header)); if (properties is not null) @@ -141,22 +125,6 @@ namespace SabreTools.Metadata.Filter /// private static bool ParseMachineFilterId(ref string itemName, ref string fieldName) { - // Get the set of constants - var constants = TypeHelper.GetConstants(typeof(Machine)); - if (constants is not null) - { - // Get if there's a match to a constant - string localFieldName = fieldName; - string? constantMatch = Array.Find(constants, c => string.Equals(c, localFieldName, StringComparison.OrdinalIgnoreCase)); - if (constantMatch is not null) - { - // Return the sanitized ID - itemName = "machine"; - fieldName = constantMatch; - return true; - } - } - // Get the set of properties var properties = TypeHelper.GetProperties(typeof(Machine)); if (properties is not null) @@ -235,16 +203,6 @@ namespace SabreTools.Metadata.Filter if (itemType is null) return null; - // Get the set of constants - var constants = TypeHelper.GetConstants(itemType); - if (constants is not null) - { - // Get if there's a match to a constant - string? constantMatch = Array.Find(constants, c => string.Equals(c, fieldName, StringComparison.OrdinalIgnoreCase)); - if (constantMatch is not null) - return constantMatch; - } - // Get the set of properties var properties = TypeHelper.GetProperties(itemType); if (properties is not null) diff --git a/SabreTools.Metadata/TypeHelper.cs b/SabreTools.Metadata/TypeHelper.cs index 10c85ed5..7e732e67 100644 --- a/SabreTools.Metadata/TypeHelper.cs +++ b/SabreTools.Metadata/TypeHelper.cs @@ -2,7 +2,6 @@ using System; using System.Collections.Generic; using System.Reflection; using System.Xml.Serialization; -using SabreTools.Data.Models; using SabreTools.Data.Models.Metadata; namespace SabreTools.Metadata @@ -10,30 +9,6 @@ namespace SabreTools.Metadata // TODO: Investigate ways of either caching or speeding up these methods public static class TypeHelper { - /// - /// Get constant values for the given type, if possible - /// - /// Does not return any values marked with the - public static string[]? GetConstants(Type? type) - { - if (type is null) - return null; - - var fields = type.GetFields(BindingFlags.Static | BindingFlags.Public | BindingFlags.FlattenHierarchy); - if (fields is null) - return null; - - FieldInfo[] noFilterFields = Array.FindAll(fields, - f => f.IsLiteral - && !f.IsInitOnly - && Attribute.GetCustomAttributes(f, typeof(NoFilterAttribute)).Length == 0); - - string[] constantValues = Array.ConvertAll(noFilterFields, - f => (f.GetRawConstantValue() as string) ?? string.Empty); - - return Array.FindAll(constantValues, s => s.Length > 0); - } - /// /// Attempt to get all DatItem types /// From 285f3a267e60c572a9b73f30b442171223ce35dd Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sun, 5 Apr 2026 00:26:23 -0400 Subject: [PATCH 106/142] NoFilter attribute no longer matters --- SabreTools.Data.Models/NoFilterAttribute.cs | 8 -------- 1 file changed, 8 deletions(-) delete mode 100644 SabreTools.Data.Models/NoFilterAttribute.cs diff --git a/SabreTools.Data.Models/NoFilterAttribute.cs b/SabreTools.Data.Models/NoFilterAttribute.cs deleted file mode 100644 index 86194ed8..00000000 --- a/SabreTools.Data.Models/NoFilterAttribute.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace SabreTools.Data.Models -{ - /// - /// Marks a key as unable to be filtered on - /// - [System.AttributeUsage(System.AttributeTargets.Field)] - public class NoFilterAttribute : System.Attribute { } -} From 0ed13167baf7cba4adb5e883e37ea8ba0bbceca6 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sun, 5 Apr 2026 00:35:09 -0400 Subject: [PATCH 107/142] Invert some if statements to be clearer --- SabreTools.Metadata.Filter/FilterKey.cs | 65 +++++++++++-------------- 1 file changed, 29 insertions(+), 36 deletions(-) diff --git a/SabreTools.Metadata.Filter/FilterKey.cs b/SabreTools.Metadata.Filter/FilterKey.cs index 491b9255..ee08f2e8 100644 --- a/SabreTools.Metadata.Filter/FilterKey.cs +++ b/SabreTools.Metadata.Filter/FilterKey.cs @@ -103,21 +103,19 @@ namespace SabreTools.Metadata.Filter { // Get the set of properties var properties = TypeHelper.GetProperties(typeof(Header)); - if (properties is not null) - { - // Get if there's a match to a property - string localFieldName = fieldName; - string? propertyMatch = Array.Find(properties, c => string.Equals(c, localFieldName, StringComparison.OrdinalIgnoreCase)); - if (propertyMatch is not null) - { - // Return the sanitized ID - itemName = "header"; - fieldName = propertyMatch.ToLowerInvariant(); - return true; - } - } + if (properties is null) + return false; - return false; + // Get if there's a match to a property + string localFieldName = fieldName; + string? propertyMatch = Array.Find(properties, c => string.Equals(c, localFieldName, StringComparison.OrdinalIgnoreCase)); + if (propertyMatch is null) + return false; + + // Return the sanitized ID + itemName = "header"; + fieldName = propertyMatch.ToLowerInvariant(); + return true; } /// @@ -127,21 +125,19 @@ namespace SabreTools.Metadata.Filter { // Get the set of properties var properties = TypeHelper.GetProperties(typeof(Machine)); - if (properties is not null) - { - // Get if there's a match to a property - string localFieldName = fieldName; - string? propertyMatch = Array.Find(properties, c => string.Equals(c, localFieldName, StringComparison.OrdinalIgnoreCase)); - if (propertyMatch is not null) - { - // Return the sanitized ID - itemName = "machine"; - fieldName = propertyMatch.ToLowerInvariant(); - return true; - } - } + if (properties is null) + return false; - return false; + // Get if there's a match to a property + string localFieldName = fieldName; + string? propertyMatch = Array.Find(properties, c => string.Equals(c, localFieldName, StringComparison.OrdinalIgnoreCase)); + if (propertyMatch is null) + return false; + + // Return the sanitized ID + itemName = "machine"; + fieldName = propertyMatch.ToLowerInvariant(); + return true; } /// @@ -205,15 +201,12 @@ namespace SabreTools.Metadata.Filter // Get the set of properties var properties = TypeHelper.GetProperties(itemType); - if (properties is not null) - { - // Get if there's a match to a property - string? propertyMatch = Array.Find(properties, c => string.Equals(c, fieldName, StringComparison.OrdinalIgnoreCase)); - if (propertyMatch is not null) - return propertyMatch.ToLowerInvariant(); - } + if (properties is null) + return null; - return null; + // Get if there's a match to a property + string? propertyMatch = Array.Find(properties, c => string.Equals(c, fieldName, StringComparison.OrdinalIgnoreCase)); + return propertyMatch?.ToLowerInvariant(); } } } From 199734698848e531ac96f078779e40d70e36bfc3 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sun, 5 Apr 2026 01:08:41 -0400 Subject: [PATCH 108/142] ModelBackedItem doesn't need to be equatable --- SabreTools.Metadata.DatFiles/DatHeader.cs | 25 ++-------------- .../DatItemTests.cs | 30 ------------------- SabreTools.Metadata.DatItems/DatItem.cs | 6 ---- .../Formats/Adjuster.cs | 30 ------------------- .../Formats/Analog.cs | 30 ------------------- .../Formats/Archive.cs | 30 ------------------- .../Formats/BiosSet.cs | 30 ------------------- SabreTools.Metadata.DatItems/Formats/Blank.cs | 30 ------------------- SabreTools.Metadata.DatItems/Formats/Chip.cs | 30 ------------------- .../Formats/Condition.cs | 30 ------------------- .../Formats/ConfLocation.cs | 30 ------------------- .../Formats/ConfSetting.cs | 30 ------------------- .../Formats/Configuration.cs | 30 ------------------- .../Formats/Control.cs | 30 ------------------- .../Formats/DataArea.cs | 30 ------------------- .../Formats/Device.cs | 30 ------------------- .../Formats/DeviceRef.cs | 30 ------------------- .../Formats/DipLocation.cs | 30 ------------------- .../Formats/DipSwitch.cs | 30 ------------------- .../Formats/DipValue.cs | 30 ------------------- SabreTools.Metadata.DatItems/Formats/Disk.cs | 30 ------------------- .../Formats/DiskArea.cs | 30 ------------------- .../Formats/Display.cs | 30 ------------------- .../Formats/Driver.cs | 30 ------------------- .../Formats/Extension.cs | 30 ------------------- .../Formats/Feature.cs | 30 ------------------- SabreTools.Metadata.DatItems/Formats/File.cs | 14 --------- SabreTools.Metadata.DatItems/Formats/Info.cs | 30 ------------------- SabreTools.Metadata.DatItems/Formats/Input.cs | 30 ------------------- .../Formats/Instance.cs | 30 ------------------- SabreTools.Metadata.DatItems/Formats/Media.cs | 30 ------------------- SabreTools.Metadata.DatItems/Formats/Part.cs | 30 ------------------- .../Formats/PartFeature.cs | 30 ------------------- SabreTools.Metadata.DatItems/Formats/Port.cs | 30 ------------------- .../Formats/RamOption.cs | 30 ------------------- .../Formats/Release.cs | 30 ------------------- .../Formats/ReleaseDetails.cs | 30 ------------------- SabreTools.Metadata.DatItems/Formats/Rom.cs | 30 ------------------- .../Formats/Sample.cs | 30 ------------------- .../Formats/Serials.cs | 30 ------------------- .../Formats/SharedFeat.cs | 30 ------------------- SabreTools.Metadata.DatItems/Formats/Slot.cs | 30 ------------------- .../Formats/SlotOption.cs | 30 ------------------- .../Formats/SoftwareList.cs | 30 ------------------- SabreTools.Metadata.DatItems/Formats/Sound.cs | 30 ------------------- .../Formats/SourceDetails.cs | 30 ------------------- SabreTools.Metadata.DatItems/Machine.cs | 30 ------------------- SabreTools.Metadata/ModelBackedItem.cs | 13 ++------ SabreTools.Metadata/ModelBackedItemT.cs | 10 +------ 49 files changed, 7 insertions(+), 1381 deletions(-) diff --git a/SabreTools.Metadata.DatFiles/DatHeader.cs b/SabreTools.Metadata.DatFiles/DatHeader.cs index 5f8b4a59..5f1e5280 100644 --- a/SabreTools.Metadata.DatFiles/DatHeader.cs +++ b/SabreTools.Metadata.DatFiles/DatHeader.cs @@ -12,7 +12,7 @@ namespace SabreTools.Metadata.DatFiles /// Represents all possible DAT header information /// [JsonObject("header"), XmlRoot("header")] - public sealed class DatHeader : ModelBackedItem, ICloneable + public sealed class DatHeader : ModelBackedItem, ICloneable, IEquatable { #region Properties @@ -374,33 +374,14 @@ namespace SabreTools.Metadata.DatFiles #region Comparision Methods /// - public override bool Equals(ModelBackedItem? other) + public bool Equals(DatHeader? other) { // If other is null if (other is null) return false; - // If the type is mismatched - if (other is not DatHeader otherItem) - return false; - // Compare internal models - return _internal.Equals(otherItem._internal); - } - - /// - public override bool Equals(ModelBackedItem? other) - { - // If other is null - if (other is null) - return false; - - // If the type is mismatched - if (other is not DatHeader otherItem) - return false; - - // Compare internal models - return _internal.Equals(otherItem._internal); + return _internal.Equals(other._internal); } #endregion diff --git a/SabreTools.Metadata.DatItems.Test/DatItemTests.cs b/SabreTools.Metadata.DatItems.Test/DatItemTests.cs index 41a74156..e81048fe 100644 --- a/SabreTools.Metadata.DatItems.Test/DatItemTests.cs +++ b/SabreTools.Metadata.DatItems.Test/DatItemTests.cs @@ -61,36 +61,6 @@ namespace SabreTools.Metadata.DatItems.Test /// public override void SetName(string? name) => Name = name; - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is TestDatItem otherTestDatItem) - return ((TestDatItemModel)_internal).Equals((TestDatItemModel)otherTestDatItem._internal); - - // Everything else fails - return false; - } - - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is TestDatItem otherTestDatItem) - return ((TestDatItemModel)_internal).Equals((TestDatItemModel)otherTestDatItem._internal); - - // Everything else fails - return false; - } - /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/DatItem.cs b/SabreTools.Metadata.DatItems/DatItem.cs index 09d4cf91..ee49868d 100644 --- a/SabreTools.Metadata.DatItems/DatItem.cs +++ b/SabreTools.Metadata.DatItems/DatItem.cs @@ -168,12 +168,6 @@ namespace SabreTools.Metadata.DatItems return string.Compare(selfName, otherName, StringComparison.Ordinal); } - /// - public abstract override bool Equals(ModelBackedItem? other); - - /// - public abstract override bool Equals(ModelBackedItem? other); - /// /// Determine if an item is a duplicate using partial matching logic /// diff --git a/SabreTools.Metadata.DatItems/Formats/Adjuster.cs b/SabreTools.Metadata.DatItems/Formats/Adjuster.cs index bc70c791..27f64cbc 100644 --- a/SabreTools.Metadata.DatItems/Formats/Adjuster.cs +++ b/SabreTools.Metadata.DatItems/Formats/Adjuster.cs @@ -83,36 +83,6 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is Adjuster otherAdjuster) - return ((Data.Models.Metadata.Adjuster)_internal).Equals((Data.Models.Metadata.Adjuster)otherAdjuster._internal); - - // Everything else fails - return false; - } - - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is Adjuster otherAdjuster) - return ((Data.Models.Metadata.Adjuster)_internal).Equals((Data.Models.Metadata.Adjuster)otherAdjuster._internal); - - // Everything else fails - return false; - } - /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/Analog.cs b/SabreTools.Metadata.DatItems/Formats/Analog.cs index b10964e2..52a1c31b 100644 --- a/SabreTools.Metadata.DatItems/Formats/Analog.cs +++ b/SabreTools.Metadata.DatItems/Formats/Analog.cs @@ -60,36 +60,6 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is Analog otherAnalog) - return ((Data.Models.Metadata.Analog)_internal).Equals((Data.Models.Metadata.Analog)otherAnalog._internal); - - // Everything else fails - return false; - } - - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is Analog otherAnalog) - return ((Data.Models.Metadata.Analog)_internal).Equals((Data.Models.Metadata.Analog)otherAnalog._internal); - - // Everything else fails - return false; - } - /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/Archive.cs b/SabreTools.Metadata.DatItems/Formats/Archive.cs index cff73122..be02e39b 100644 --- a/SabreTools.Metadata.DatItems/Formats/Archive.cs +++ b/SabreTools.Metadata.DatItems/Formats/Archive.cs @@ -251,36 +251,6 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is Archive otherArchive) - return ((Data.Models.Metadata.Archive)_internal).Equals((Data.Models.Metadata.Archive)otherArchive._internal); - - // Everything else fails - return false; - } - - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is Archive otherArchive) - return ((Data.Models.Metadata.Archive)_internal).Equals((Data.Models.Metadata.Archive)otherArchive._internal); - - // Everything else fails - return false; - } - /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/BiosSet.cs b/SabreTools.Metadata.DatItems/Formats/BiosSet.cs index f266ecf0..d9f1f770 100644 --- a/SabreTools.Metadata.DatItems/Formats/BiosSet.cs +++ b/SabreTools.Metadata.DatItems/Formats/BiosSet.cs @@ -72,36 +72,6 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is BiosSet otherBiosSet) - return ((Data.Models.Metadata.BiosSet)_internal).Equals((Data.Models.Metadata.BiosSet)otherBiosSet._internal); - - // Everything else fails - return false; - } - - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is BiosSet otherBiosSet) - return ((Data.Models.Metadata.BiosSet)_internal).Equals((Data.Models.Metadata.BiosSet)otherBiosSet._internal); - - // Everything else fails - return false; - } - /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/Blank.cs b/SabreTools.Metadata.DatItems/Formats/Blank.cs index 7b85232b..263a6fb7 100644 --- a/SabreTools.Metadata.DatItems/Formats/Blank.cs +++ b/SabreTools.Metadata.DatItems/Formats/Blank.cs @@ -54,36 +54,6 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is Blank otherBlank) - return ((Data.Models.Metadata.Blank)_internal).Equals((Data.Models.Metadata.Blank)otherBlank._internal); - - // Everything else fails - return false; - } - - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is Blank otherBlank) - return ((Data.Models.Metadata.Blank)_internal).Equals((Data.Models.Metadata.Blank)otherBlank._internal); - - // Everything else fails - return false; - } - /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/Chip.cs b/SabreTools.Metadata.DatItems/Formats/Chip.cs index 6496de9f..8c1dc3bf 100644 --- a/SabreTools.Metadata.DatItems/Formats/Chip.cs +++ b/SabreTools.Metadata.DatItems/Formats/Chip.cs @@ -90,36 +90,6 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is Chip otherChip) - return ((Data.Models.Metadata.Chip)_internal).Equals((Data.Models.Metadata.Chip)otherChip._internal); - - // Everything else fails - return false; - } - - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is Chip otherChip) - return ((Data.Models.Metadata.Chip)_internal).Equals((Data.Models.Metadata.Chip)otherChip._internal); - - // Everything else fails - return false; - } - /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/Condition.cs b/SabreTools.Metadata.DatItems/Formats/Condition.cs index 25d05b81..400cf387 100644 --- a/SabreTools.Metadata.DatItems/Formats/Condition.cs +++ b/SabreTools.Metadata.DatItems/Formats/Condition.cs @@ -78,36 +78,6 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is Condition otherCondition) - return ((Data.Models.Metadata.Condition)_internal).Equals((Data.Models.Metadata.Condition)otherCondition._internal); - - // Everything else fails - return false; - } - - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is Condition otherCondition) - return ((Data.Models.Metadata.Condition)_internal).Equals((Data.Models.Metadata.Condition)otherCondition._internal); - - // Everything else fails - return false; - } - /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs b/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs index 1a392563..d8cfa92f 100644 --- a/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs +++ b/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs @@ -72,36 +72,6 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is ConfLocation otherConfLocation) - return ((Data.Models.Metadata.ConfLocation)_internal).Equals((Data.Models.Metadata.ConfLocation)otherConfLocation._internal); - - // Everything else fails - return false; - } - - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is ConfLocation otherConfLocation) - return ((Data.Models.Metadata.ConfLocation)_internal).Equals((Data.Models.Metadata.ConfLocation)otherConfLocation._internal); - - // Everything else fails - return false; - } - /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs b/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs index c40dad2c..74ec1508 100644 --- a/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs +++ b/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs @@ -89,36 +89,6 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is ConfSetting otherConfSetting) - return ((Data.Models.Metadata.ConfSetting)_internal).Equals((Data.Models.Metadata.ConfSetting)otherConfSetting._internal); - - // Everything else fails - return false; - } - - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is ConfSetting otherConfSetting) - return ((Data.Models.Metadata.ConfSetting)_internal).Equals((Data.Models.Metadata.ConfSetting)otherConfSetting._internal); - - // Everything else fails - return false; - } - /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/Configuration.cs b/SabreTools.Metadata.DatItems/Formats/Configuration.cs index 85de6b66..0bc1e744 100644 --- a/SabreTools.Metadata.DatItems/Formats/Configuration.cs +++ b/SabreTools.Metadata.DatItems/Formats/Configuration.cs @@ -112,36 +112,6 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is Configuration otherConfiguration) - return ((Data.Models.Metadata.Configuration)_internal).Equals((Data.Models.Metadata.Configuration)otherConfiguration._internal); - - // Everything else fails - return false; - } - - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is Configuration otherConfiguration) - return ((Data.Models.Metadata.Configuration)_internal).Equals((Data.Models.Metadata.Configuration)otherConfiguration._internal); - - // Everything else fails - return false; - } - /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/Control.cs b/SabreTools.Metadata.DatItems/Formats/Control.cs index 35a0d5c6..345bc974 100644 --- a/SabreTools.Metadata.DatItems/Formats/Control.cs +++ b/SabreTools.Metadata.DatItems/Formats/Control.cs @@ -126,36 +126,6 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is Control otherControl) - return ((Data.Models.Metadata.Control)_internal).Equals((Data.Models.Metadata.Control)otherControl._internal); - - // Everything else fails - return false; - } - - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is Control otherControl) - return ((Data.Models.Metadata.Control)_internal).Equals((Data.Models.Metadata.Control)otherControl._internal); - - // Everything else fails - return false; - } - /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/DataArea.cs b/SabreTools.Metadata.DatItems/Formats/DataArea.cs index a60830ff..734ec4a1 100644 --- a/SabreTools.Metadata.DatItems/Formats/DataArea.cs +++ b/SabreTools.Metadata.DatItems/Formats/DataArea.cs @@ -96,36 +96,6 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is DataArea otherDataArea) - return ((Data.Models.Metadata.DataArea)_internal).Equals((Data.Models.Metadata.DataArea)otherDataArea._internal); - - // Everything else fails - return false; - } - - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is DataArea otherDataArea) - return ((Data.Models.Metadata.DataArea)_internal).Equals((Data.Models.Metadata.DataArea)otherDataArea._internal); - - // Everything else fails - return false; - } - /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/Device.cs b/SabreTools.Metadata.DatItems/Formats/Device.cs index 58a01385..37315916 100644 --- a/SabreTools.Metadata.DatItems/Formats/Device.cs +++ b/SabreTools.Metadata.DatItems/Formats/Device.cs @@ -119,36 +119,6 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is Device otherDevice) - return ((Data.Models.Metadata.Device)_internal).Equals((Data.Models.Metadata.Device)otherDevice._internal); - - // Everything else fails - return false; - } - - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is Device otherDevice) - return ((Data.Models.Metadata.Device)_internal).Equals((Data.Models.Metadata.Device)otherDevice._internal); - - // Everything else fails - return false; - } - /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs b/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs index 84688b8a..86ff1c98 100644 --- a/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs +++ b/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs @@ -60,36 +60,6 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is DeviceRef otherDeviceRef) - return ((Data.Models.Metadata.DeviceRef)_internal).Equals((Data.Models.Metadata.DeviceRef)otherDeviceRef._internal); - - // Everything else fails - return false; - } - - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is DeviceRef otherDeviceRef) - return ((Data.Models.Metadata.DeviceRef)_internal).Equals((Data.Models.Metadata.DeviceRef)otherDeviceRef._internal); - - // Everything else fails - return false; - } - /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/DipLocation.cs b/SabreTools.Metadata.DatItems/Formats/DipLocation.cs index ee90e76d..33d234b7 100644 --- a/SabreTools.Metadata.DatItems/Formats/DipLocation.cs +++ b/SabreTools.Metadata.DatItems/Formats/DipLocation.cs @@ -72,36 +72,6 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is DipLocation otherDipLocation) - return ((Data.Models.Metadata.DipLocation)_internal).Equals((Data.Models.Metadata.DipLocation)otherDipLocation._internal); - - // Everything else fails - return false; - } - - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is DipLocation otherDipLocation) - return ((Data.Models.Metadata.DipLocation)_internal).Equals((Data.Models.Metadata.DipLocation)otherDipLocation._internal); - - // Everything else fails - return false; - } - /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs b/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs index 4f636028..fdc4a746 100644 --- a/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs +++ b/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs @@ -142,36 +142,6 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is DipSwitch otherDipSwitch) - return ((Data.Models.Metadata.DipSwitch)_internal).Equals((Data.Models.Metadata.DipSwitch)otherDipSwitch._internal); - - // Everything else fails - return false; - } - - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is DipSwitch otherDipSwitch) - return ((Data.Models.Metadata.DipSwitch)_internal).Equals((Data.Models.Metadata.DipSwitch)otherDipSwitch._internal); - - // Everything else fails - return false; - } - /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/DipValue.cs b/SabreTools.Metadata.DatItems/Formats/DipValue.cs index 2e7bb8c5..baf1c199 100644 --- a/SabreTools.Metadata.DatItems/Formats/DipValue.cs +++ b/SabreTools.Metadata.DatItems/Formats/DipValue.cs @@ -89,36 +89,6 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is DipValue otherDipValue) - return ((Data.Models.Metadata.DipValue)_internal).Equals((Data.Models.Metadata.DipValue)otherDipValue._internal); - - // Everything else fails - return false; - } - - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is DipValue otherDipValue) - return ((Data.Models.Metadata.DipValue)_internal).Equals((Data.Models.Metadata.DipValue)otherDipValue._internal); - - // Everything else fails - return false; - } - /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/Disk.cs b/SabreTools.Metadata.DatItems/Formats/Disk.cs index 9de6a777..44f85ebe 100644 --- a/SabreTools.Metadata.DatItems/Formats/Disk.cs +++ b/SabreTools.Metadata.DatItems/Formats/Disk.cs @@ -173,36 +173,6 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is Disk otherDisk) - return ((Data.Models.Metadata.Disk)_internal).Equals((Data.Models.Metadata.Disk)otherDisk._internal); - - // Everything else fails - return false; - } - - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is Disk otherDisk) - return ((Data.Models.Metadata.Disk)_internal).Equals((Data.Models.Metadata.Disk)otherDisk._internal); - - // Everything else fails - return false; - } - /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/DiskArea.cs b/SabreTools.Metadata.DatItems/Formats/DiskArea.cs index 82f19083..aa1cadf5 100644 --- a/SabreTools.Metadata.DatItems/Formats/DiskArea.cs +++ b/SabreTools.Metadata.DatItems/Formats/DiskArea.cs @@ -78,36 +78,6 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is DiskArea otherDiskArea) - return ((Data.Models.Metadata.DiskArea)_internal).Equals((Data.Models.Metadata.DiskArea)otherDiskArea._internal); - - // Everything else fails - return false; - } - - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is DiskArea otherDiskArea) - return ((Data.Models.Metadata.DiskArea)_internal).Equals((Data.Models.Metadata.DiskArea)otherDiskArea._internal); - - // Everything else fails - return false; - } - /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/Display.cs b/SabreTools.Metadata.DatItems/Formats/Display.cs index 6642272c..e699d896 100644 --- a/SabreTools.Metadata.DatItems/Formats/Display.cs +++ b/SabreTools.Metadata.DatItems/Formats/Display.cs @@ -167,36 +167,6 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is Display otherDisplay) - return ((Data.Models.Metadata.Display)_internal).Equals((Data.Models.Metadata.Display)otherDisplay._internal); - - // Everything else fails - return false; - } - - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is Display otherDisplay) - return ((Data.Models.Metadata.Display)_internal).Equals((Data.Models.Metadata.Display)otherDisplay._internal); - - // Everything else fails - return false; - } - /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/Driver.cs b/SabreTools.Metadata.DatItems/Formats/Driver.cs index ffc34aa7..f7b20f54 100644 --- a/SabreTools.Metadata.DatItems/Formats/Driver.cs +++ b/SabreTools.Metadata.DatItems/Formats/Driver.cs @@ -126,36 +126,6 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is Driver otherDriver) - return ((Data.Models.Metadata.Driver)_internal).Equals((Data.Models.Metadata.Driver)otherDriver._internal); - - // Everything else fails - return false; - } - - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is Driver otherDriver) - return ((Data.Models.Metadata.Driver)_internal).Equals((Data.Models.Metadata.Driver)otherDriver._internal); - - // Everything else fails - return false; - } - /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/Extension.cs b/SabreTools.Metadata.DatItems/Formats/Extension.cs index 99a84580..42ace9e1 100644 --- a/SabreTools.Metadata.DatItems/Formats/Extension.cs +++ b/SabreTools.Metadata.DatItems/Formats/Extension.cs @@ -60,36 +60,6 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is Extension otherExtension) - return ((Data.Models.Metadata.Extension)_internal).Equals((Data.Models.Metadata.Extension)otherExtension._internal); - - // Everything else fails - return false; - } - - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is Extension otherExtension) - return ((Data.Models.Metadata.Extension)_internal).Equals((Data.Models.Metadata.Extension)otherExtension._internal); - - // Everything else fails - return false; - } - /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/Feature.cs b/SabreTools.Metadata.DatItems/Formats/Feature.cs index f794ec40..b13c9489 100644 --- a/SabreTools.Metadata.DatItems/Formats/Feature.cs +++ b/SabreTools.Metadata.DatItems/Formats/Feature.cs @@ -84,36 +84,6 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is Feature otherFeature) - return ((Data.Models.Metadata.Feature)_internal).Equals((Data.Models.Metadata.Feature)otherFeature._internal); - - // Everything else fails - return false; - } - - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is Feature otherFeature) - return ((Data.Models.Metadata.Feature)_internal).Equals((Data.Models.Metadata.Feature)otherFeature._internal); - - // Everything else fails - return false; - } - /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/File.cs b/SabreTools.Metadata.DatItems/Formats/File.cs index 94b1f15a..d22b2f3d 100644 --- a/SabreTools.Metadata.DatItems/Formats/File.cs +++ b/SabreTools.Metadata.DatItems/Formats/File.cs @@ -166,20 +166,6 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods - /// - public override bool Equals(ModelBackedItem? other) - { - // This isn't implemented, so always return false - return false; - } - - /// - public override bool Equals(ModelBackedItem? other) - { - // This isn't implemented, so always return false - return false; - } - /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/Info.cs b/SabreTools.Metadata.DatItems/Formats/Info.cs index 25596e23..4076b87f 100644 --- a/SabreTools.Metadata.DatItems/Formats/Info.cs +++ b/SabreTools.Metadata.DatItems/Formats/Info.cs @@ -66,36 +66,6 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is Info otherInfo) - return ((Data.Models.Metadata.Info)_internal).Equals((Data.Models.Metadata.Info)otherInfo._internal); - - // Everything else fails - return false; - } - - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is Info otherInfo) - return ((Data.Models.Metadata.Info)_internal).Equals((Data.Models.Metadata.Info)otherInfo._internal); - - // Everything else fails - return false; - } - /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/Input.cs b/SabreTools.Metadata.DatItems/Formats/Input.cs index 4f36e3a6..4fc95c4d 100644 --- a/SabreTools.Metadata.DatItems/Formats/Input.cs +++ b/SabreTools.Metadata.DatItems/Formats/Input.cs @@ -108,36 +108,6 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is Input otherInput) - return ((Data.Models.Metadata.Input)_internal).Equals((Data.Models.Metadata.Input)otherInput._internal); - - // Everything else fails - return false; - } - - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is Input otherInput) - return ((Data.Models.Metadata.Input)_internal).Equals((Data.Models.Metadata.Input)otherInput._internal); - - // Everything else fails - return false; - } - /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/Instance.cs b/SabreTools.Metadata.DatItems/Formats/Instance.cs index ef488f77..73a2fc32 100644 --- a/SabreTools.Metadata.DatItems/Formats/Instance.cs +++ b/SabreTools.Metadata.DatItems/Formats/Instance.cs @@ -66,36 +66,6 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is Instance otherInstance) - return ((Data.Models.Metadata.Instance)_internal).Equals((Data.Models.Metadata.Instance)otherInstance._internal); - - // Everything else fails - return false; - } - - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is Instance otherInstance) - return ((Data.Models.Metadata.Instance)_internal).Equals((Data.Models.Metadata.Instance)otherInstance._internal); - - // Everything else fails - return false; - } - /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/Media.cs b/SabreTools.Metadata.DatItems/Formats/Media.cs index a0f8cf32..3795d907 100644 --- a/SabreTools.Metadata.DatItems/Formats/Media.cs +++ b/SabreTools.Metadata.DatItems/Formats/Media.cs @@ -118,36 +118,6 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is Media otherMedia) - return ((Data.Models.Metadata.Media)_internal).Equals((Data.Models.Metadata.Media)otherMedia._internal); - - // Everything else fails - return false; - } - - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is Media otherMedia) - return ((Data.Models.Metadata.Media)_internal).Equals((Data.Models.Metadata.Media)otherMedia._internal); - - // Everything else fails - return false; - } - /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/Part.cs b/SabreTools.Metadata.DatItems/Formats/Part.cs index 1bed9778..5cfce496 100644 --- a/SabreTools.Metadata.DatItems/Formats/Part.cs +++ b/SabreTools.Metadata.DatItems/Formats/Part.cs @@ -118,36 +118,6 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is Part otherPart) - return ((Data.Models.Metadata.Part)_internal).Equals((Data.Models.Metadata.Part)otherPart._internal); - - // Everything else fails - return false; - } - - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is Part otherPart) - return ((Data.Models.Metadata.Part)_internal).Equals((Data.Models.Metadata.Part)otherPart._internal); - - // Everything else fails - return false; - } - /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/PartFeature.cs b/SabreTools.Metadata.DatItems/Formats/PartFeature.cs index ddbc350d..c31cff0f 100644 --- a/SabreTools.Metadata.DatItems/Formats/PartFeature.cs +++ b/SabreTools.Metadata.DatItems/Formats/PartFeature.cs @@ -89,36 +89,6 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is PartFeature otherPartFeature) - return ((Data.Models.Metadata.Feature)_internal).Equals((Data.Models.Metadata.Feature)otherPartFeature._internal); - - // Everything else fails - return false; - } - - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is PartFeature otherPartFeature) - return ((Data.Models.Metadata.Feature)_internal).Equals((Data.Models.Metadata.Feature)otherPartFeature._internal); - - // Everything else fails - return false; - } - /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/Port.cs b/SabreTools.Metadata.DatItems/Formats/Port.cs index f02216c5..724ccd63 100644 --- a/SabreTools.Metadata.DatItems/Formats/Port.cs +++ b/SabreTools.Metadata.DatItems/Formats/Port.cs @@ -78,36 +78,6 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is Port otherPort) - return ((Data.Models.Metadata.Port)_internal).Equals((Data.Models.Metadata.Port)otherPort._internal); - - // Everything else fails - return false; - } - - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is Port otherPort) - return ((Data.Models.Metadata.Port)_internal).Equals((Data.Models.Metadata.Port)otherPort._internal); - - // Everything else fails - return false; - } - /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/RamOption.cs b/SabreTools.Metadata.DatItems/Formats/RamOption.cs index 18455d4d..3253f371 100644 --- a/SabreTools.Metadata.DatItems/Formats/RamOption.cs +++ b/SabreTools.Metadata.DatItems/Formats/RamOption.cs @@ -72,36 +72,6 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is RamOption otherRamOption) - return ((Data.Models.Metadata.RamOption)_internal).Equals((Data.Models.Metadata.RamOption)otherRamOption._internal); - - // Everything else fails - return false; - } - - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is RamOption otherRamOption) - return ((Data.Models.Metadata.RamOption)_internal).Equals((Data.Models.Metadata.RamOption)otherRamOption._internal); - - // Everything else fails - return false; - } - /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/Release.cs b/SabreTools.Metadata.DatItems/Formats/Release.cs index 1e73c734..980df35a 100644 --- a/SabreTools.Metadata.DatItems/Formats/Release.cs +++ b/SabreTools.Metadata.DatItems/Formats/Release.cs @@ -84,36 +84,6 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is Release otherRelease) - return ((Data.Models.Metadata.Release)_internal).Equals((Data.Models.Metadata.Release)otherRelease._internal); - - // Everything else fails - return false; - } - - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is Release otherRelease) - return ((Data.Models.Metadata.Release)_internal).Equals((Data.Models.Metadata.Release)otherRelease._internal); - - // Everything else fails - return false; - } - /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs b/SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs index eecd0cd6..182eda59 100644 --- a/SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs +++ b/SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs @@ -149,36 +149,6 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is ReleaseDetails otherReleaseDetails) - return ((Data.Models.Metadata.ReleaseDetails)_internal).Equals((Data.Models.Metadata.ReleaseDetails)otherReleaseDetails._internal); - - // Everything else fails - return false; - } - - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is ReleaseDetails otherReleaseDetails) - return ((Data.Models.Metadata.ReleaseDetails)_internal).Equals((Data.Models.Metadata.ReleaseDetails)otherReleaseDetails._internal); - - // Everything else fails - return false; - } - /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/Rom.cs b/SabreTools.Metadata.DatItems/Formats/Rom.cs index 738980d8..0f425707 100644 --- a/SabreTools.Metadata.DatItems/Formats/Rom.cs +++ b/SabreTools.Metadata.DatItems/Formats/Rom.cs @@ -905,36 +905,6 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is Rom otherRom) - return ((Data.Models.Metadata.Rom)_internal).Equals((Data.Models.Metadata.Rom)otherRom._internal); - - // Everything else fails - return false; - } - - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is Rom otherRom) - return ((Data.Models.Metadata.Rom)_internal).Equals((Data.Models.Metadata.Rom)otherRom._internal); - - // Everything else fails - return false; - } - /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/Sample.cs b/SabreTools.Metadata.DatItems/Formats/Sample.cs index 5b55097b..5fe6a8bd 100644 --- a/SabreTools.Metadata.DatItems/Formats/Sample.cs +++ b/SabreTools.Metadata.DatItems/Formats/Sample.cs @@ -60,36 +60,6 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is Sample otherSample) - return ((Data.Models.Metadata.Sample)_internal).Equals((Data.Models.Metadata.Sample)otherSample._internal); - - // Everything else fails - return false; - } - - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is Sample otherSample) - return ((Data.Models.Metadata.Sample)_internal).Equals((Data.Models.Metadata.Sample)otherSample._internal); - - // Everything else fails - return false; - } - /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/Serials.cs b/SabreTools.Metadata.DatItems/Formats/Serials.cs index 4f9e7586..98568b30 100644 --- a/SabreTools.Metadata.DatItems/Formats/Serials.cs +++ b/SabreTools.Metadata.DatItems/Formats/Serials.cs @@ -138,36 +138,6 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is Serials otherSerials) - return ((Data.Models.Metadata.Serials)_internal).Equals((Data.Models.Metadata.Serials)otherSerials._internal); - - // Everything else fails - return false; - } - - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is Serials otherSerials) - return ((Data.Models.Metadata.Serials)_internal).Equals((Data.Models.Metadata.Serials)otherSerials._internal); - - // Everything else fails - return false; - } - /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs b/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs index 5729d01e..4dd14c9b 100644 --- a/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs +++ b/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs @@ -66,36 +66,6 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is SharedFeat otherSharedFeat) - return ((Data.Models.Metadata.SharedFeat)_internal).Equals((Data.Models.Metadata.SharedFeat)otherSharedFeat._internal); - - // Everything else fails - return false; - } - - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is SharedFeat otherSharedFeat) - return ((Data.Models.Metadata.SharedFeat)_internal).Equals((Data.Models.Metadata.SharedFeat)otherSharedFeat._internal); - - // Everything else fails - return false; - } - /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/Slot.cs b/SabreTools.Metadata.DatItems/Formats/Slot.cs index 3d5ae947..7c68dc38 100644 --- a/SabreTools.Metadata.DatItems/Formats/Slot.cs +++ b/SabreTools.Metadata.DatItems/Formats/Slot.cs @@ -78,36 +78,6 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is Slot otherSlot) - return ((Data.Models.Metadata.Slot)_internal).Equals((Data.Models.Metadata.Slot)otherSlot._internal); - - // Everything else fails - return false; - } - - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is Slot otherSlot) - return ((Data.Models.Metadata.Slot)_internal).Equals((Data.Models.Metadata.Slot)otherSlot._internal); - - // Everything else fails - return false; - } - /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/SlotOption.cs b/SabreTools.Metadata.DatItems/Formats/SlotOption.cs index ad350682..a2e113c6 100644 --- a/SabreTools.Metadata.DatItems/Formats/SlotOption.cs +++ b/SabreTools.Metadata.DatItems/Formats/SlotOption.cs @@ -72,36 +72,6 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is SlotOption otherSlotOption) - return ((Data.Models.Metadata.SlotOption)_internal).Equals((Data.Models.Metadata.SlotOption)otherSlotOption._internal); - - // Everything else fails - return false; - } - - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is SlotOption otherSlotOption) - return ((Data.Models.Metadata.SlotOption)_internal).Equals((Data.Models.Metadata.SlotOption)otherSlotOption._internal); - - // Everything else fails - return false; - } - /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs b/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs index 0ea02cfe..bba7dcda 100644 --- a/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs +++ b/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs @@ -78,36 +78,6 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is SoftwareList otherSoftwareList) - return ((Data.Models.Metadata.SoftwareList)_internal).Equals((Data.Models.Metadata.SoftwareList)otherSoftwareList._internal); - - // Everything else fails - return false; - } - - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is SoftwareList otherSoftwareList) - return ((Data.Models.Metadata.SoftwareList)_internal).Equals((Data.Models.Metadata.SoftwareList)otherSoftwareList._internal); - - // Everything else fails - return false; - } - /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/Sound.cs b/SabreTools.Metadata.DatItems/Formats/Sound.cs index 6cd2db8c..7e89068c 100644 --- a/SabreTools.Metadata.DatItems/Formats/Sound.cs +++ b/SabreTools.Metadata.DatItems/Formats/Sound.cs @@ -60,36 +60,6 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is Sound otherSound) - return ((Data.Models.Metadata.Sound)_internal).Equals((Data.Models.Metadata.Sound)otherSound._internal); - - // Everything else fails - return false; - } - - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is Sound otherSound) - return ((Data.Models.Metadata.Sound)_internal).Equals((Data.Models.Metadata.Sound)otherSound._internal); - - // Everything else fails - return false; - } - /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Formats/SourceDetails.cs b/SabreTools.Metadata.DatItems/Formats/SourceDetails.cs index 27241376..1004e909 100644 --- a/SabreTools.Metadata.DatItems/Formats/SourceDetails.cs +++ b/SabreTools.Metadata.DatItems/Formats/SourceDetails.cs @@ -198,36 +198,6 @@ namespace SabreTools.Metadata.DatItems.Formats #region Comparision Methods - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is SourceDetails otherSourceDetails) - return ((Data.Models.Metadata.SourceDetails)_internal).Equals((Data.Models.Metadata.SourceDetails)otherSourceDetails._internal); - - // Everything else fails - return false; - } - - /// - public override bool Equals(ModelBackedItem? other) - { - // If the other item is null - if (other is null) - return false; - - // If the type matches - if (other is SourceDetails otherSourceDetails) - return ((Data.Models.Metadata.SourceDetails)_internal).Equals((Data.Models.Metadata.SourceDetails)otherSourceDetails._internal); - - // Everything else fails - return false; - } - /// public override bool Equals(DatItem? other) { diff --git a/SabreTools.Metadata.DatItems/Machine.cs b/SabreTools.Metadata.DatItems/Machine.cs index a5c28ae5..2f87a0a3 100644 --- a/SabreTools.Metadata.DatItems/Machine.cs +++ b/SabreTools.Metadata.DatItems/Machine.cs @@ -455,36 +455,6 @@ namespace SabreTools.Metadata.DatItems #region Comparision Methods - /// - public override bool Equals(ModelBackedItem? other) - { - // If other is null - if (other is null) - return false; - - // If the type is mismatched - if (other is not Machine otherItem) - return false; - - // Compare internal models - return _internal.Equals(otherItem._internal); - } - - /// - public override bool Equals(ModelBackedItem? other) - { - // If other is null - if (other is null) - return false; - - // If the type is mismatched - if (other is not Machine otherItem) - return false; - - // Compare internal models - return _internal.Equals(otherItem._internal); - } - /// public bool Equals(Machine? other) { diff --git a/SabreTools.Metadata/ModelBackedItem.cs b/SabreTools.Metadata/ModelBackedItem.cs index d70d4edb..5737e673 100644 --- a/SabreTools.Metadata/ModelBackedItem.cs +++ b/SabreTools.Metadata/ModelBackedItem.cs @@ -1,17 +1,10 @@ -using System; - -namespace SabreTools.Metadata +namespace SabreTools.Metadata { /// /// Represents an item that's backed by a constructable item /// - public abstract class ModelBackedItem : IEquatable + public abstract class ModelBackedItem { - #region Comparision Methods - - /// - public abstract bool Equals(ModelBackedItem? other); - - #endregion + // No common, untyped functionality } } diff --git a/SabreTools.Metadata/ModelBackedItemT.cs b/SabreTools.Metadata/ModelBackedItemT.cs index 7c419df0..0bddb5dd 100644 --- a/SabreTools.Metadata/ModelBackedItemT.cs +++ b/SabreTools.Metadata/ModelBackedItemT.cs @@ -1,4 +1,3 @@ -using System; using System.Xml.Serialization; using Newtonsoft.Json; @@ -7,7 +6,7 @@ namespace SabreTools.Metadata /// /// Represents an item that's backed by a constructable item /// - public abstract class ModelBackedItem : ModelBackedItem, IEquatable> where T : new() + public abstract class ModelBackedItem : ModelBackedItem where T : new() { /// /// Internal model wrapped by this DatItem @@ -23,12 +22,5 @@ namespace SabreTools.Metadata } #endregion - - #region Comparision Methods - - /// - public abstract bool Equals(ModelBackedItem? other); - - #endregion } } From 1a10e10fd6659cd5eceb6df082c38b291e5db5f1 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sun, 5 Apr 2026 01:19:46 -0400 Subject: [PATCH 109/142] ModelBackedItem had no actual utility anymore --- SabreTools.Metadata.DatFiles/DatHeader.cs | 16 ++++++++++++-- SabreTools.Metadata.DatItems/DatItem.cs | 11 +++++++++- SabreTools.Metadata.DatItems/Machine.cs | 11 +++++++++- SabreTools.Metadata/ModelBackedItem.cs | 10 --------- SabreTools.Metadata/ModelBackedItemT.cs | 26 ----------------------- 5 files changed, 34 insertions(+), 40 deletions(-) delete mode 100644 SabreTools.Metadata/ModelBackedItem.cs delete mode 100644 SabreTools.Metadata/ModelBackedItemT.cs diff --git a/SabreTools.Metadata.DatFiles/DatHeader.cs b/SabreTools.Metadata.DatFiles/DatHeader.cs index 5f1e5280..9a9ffe06 100644 --- a/SabreTools.Metadata.DatFiles/DatHeader.cs +++ b/SabreTools.Metadata.DatFiles/DatHeader.cs @@ -12,7 +12,7 @@ namespace SabreTools.Metadata.DatFiles /// Represents all possible DAT header information /// [JsonObject("header"), XmlRoot("header")] - public sealed class DatHeader : ModelBackedItem, ICloneable, IEquatable + public sealed class DatHeader : ICloneable, IEquatable { #region Properties @@ -314,9 +314,21 @@ namespace SabreTools.Metadata.DatFiles #endregion + #region Private Fields + + /// + /// Internal model + /// + private readonly Data.Models.Metadata.Header _internal; + + #endregion + #region Constructors - public DatHeader() { } + public DatHeader() + { + _internal = new(); + } public DatHeader(Data.Models.Metadata.Header header) { diff --git a/SabreTools.Metadata.DatItems/DatItem.cs b/SabreTools.Metadata.DatItems/DatItem.cs index ee49868d..43304e38 100644 --- a/SabreTools.Metadata.DatItems/DatItem.cs +++ b/SabreTools.Metadata.DatItems/DatItem.cs @@ -53,7 +53,7 @@ namespace SabreTools.Metadata.DatItems [XmlInclude(typeof(SoftwareList))] [XmlInclude(typeof(Sound))] [XmlInclude(typeof(SourceDetails))] - public abstract class DatItem : ModelBackedItem, IEquatable, IComparable, ICloneable + public abstract class DatItem : ICloneable, IComparable, IEquatable { #region Properties @@ -84,6 +84,15 @@ namespace SabreTools.Metadata.DatItems #endregion + #region Private Fields + + /// + /// Internal model + /// + protected Data.Models.Metadata.DatItem _internal = new(); + + #endregion + #region Logging /// diff --git a/SabreTools.Metadata.DatItems/Machine.cs b/SabreTools.Metadata.DatItems/Machine.cs index 2f87a0a3..ba2b77cb 100644 --- a/SabreTools.Metadata.DatItems/Machine.cs +++ b/SabreTools.Metadata.DatItems/Machine.cs @@ -10,7 +10,7 @@ namespace SabreTools.Metadata.DatItems /// Represents the information specific to a set/game/machine /// [JsonObject("machine"), XmlRoot("machine")] - public sealed class Machine : ModelBackedItem, ICloneable, IEquatable + public sealed class Machine : ICloneable, IEquatable { #region Properties @@ -382,6 +382,15 @@ namespace SabreTools.Metadata.DatItems #endregion + #region Private Fields + + /// + /// Internal model + /// + private Data.Models.Metadata.Machine _internal; + + #endregion + #region Constructors public Machine() diff --git a/SabreTools.Metadata/ModelBackedItem.cs b/SabreTools.Metadata/ModelBackedItem.cs deleted file mode 100644 index 5737e673..00000000 --- a/SabreTools.Metadata/ModelBackedItem.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace SabreTools.Metadata -{ - /// - /// Represents an item that's backed by a constructable item - /// - public abstract class ModelBackedItem - { - // No common, untyped functionality - } -} diff --git a/SabreTools.Metadata/ModelBackedItemT.cs b/SabreTools.Metadata/ModelBackedItemT.cs deleted file mode 100644 index 0bddb5dd..00000000 --- a/SabreTools.Metadata/ModelBackedItemT.cs +++ /dev/null @@ -1,26 +0,0 @@ -using System.Xml.Serialization; -using Newtonsoft.Json; - -namespace SabreTools.Metadata -{ - /// - /// Represents an item that's backed by a constructable item - /// - public abstract class ModelBackedItem : ModelBackedItem where T : new() - { - /// - /// Internal model wrapped by this DatItem - /// - [JsonIgnore, XmlIgnore] - protected T _internal; - - #region Constructors - - public ModelBackedItem() - { - _internal = new T(); - } - - #endregion - } -} From 5ffc9fef43b7618d5afb4e37d3b7a5d1646c887a Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sun, 5 Apr 2026 01:36:32 -0400 Subject: [PATCH 110/142] Cleanup around DatItem and DatItem This is both big and not big. The not big part of this is that I essentially just moved some stuff up to the typed type that used to live in the untyped type. The big part is that this allows every single DatItem implementation to be significantly cleaner with their implementations of the methods and internal model. --- SabreTools.Metadata.DatItems/DatItem.cs | 31 +- SabreTools.Metadata.DatItems/DatItemT.cs | 30 +- .../Formats/Adjuster.cs | 14 +- .../Formats/Analog.cs | 10 +- .../Formats/Archive.cs | 138 +++--- .../Formats/BiosSet.cs | 18 +- SabreTools.Metadata.DatItems/Formats/Blank.cs | 6 +- SabreTools.Metadata.DatItems/Formats/Chip.cs | 30 +- .../Formats/Condition.cs | 22 +- .../Formats/ConfLocation.cs | 18 +- .../Formats/ConfSetting.cs | 18 +- .../Formats/Configuration.cs | 18 +- .../Formats/Control.cs | 54 +-- .../Formats/DataArea.cs | 22 +- .../Formats/Device.cs | 26 +- .../Formats/DeviceRef.cs | 10 +- .../Formats/DipLocation.cs | 18 +- .../Formats/DipSwitch.cs | 22 +- .../Formats/DipValue.cs | 18 +- SabreTools.Metadata.DatItems/Formats/Disk.cs | 54 +-- .../Formats/DiskArea.cs | 10 +- .../Formats/Display.cs | 70 ++-- .../Formats/Driver.cs | 54 +-- .../Formats/Extension.cs | 10 +- .../Formats/Feature.cs | 26 +- SabreTools.Metadata.DatItems/Formats/File.cs | 13 + SabreTools.Metadata.DatItems/Formats/Info.cs | 14 +- SabreTools.Metadata.DatItems/Formats/Input.cs | 30 +- .../Formats/Instance.cs | 14 +- SabreTools.Metadata.DatItems/Formats/Media.cs | 34 +- SabreTools.Metadata.DatItems/Formats/Part.cs | 14 +- .../Formats/PartFeature.cs | 26 +- SabreTools.Metadata.DatItems/Formats/Port.cs | 10 +- .../Formats/RamOption.cs | 18 +- .../Formats/Release.cs | 26 +- .../Formats/ReleaseDetails.cs | 70 ++-- SabreTools.Metadata.DatItems/Formats/Rom.cs | 396 +++++++++--------- .../Formats/Sample.cs | 10 +- .../Formats/Serials.cs | 62 +-- .../Formats/SharedFeat.cs | 14 +- SabreTools.Metadata.DatItems/Formats/Slot.cs | 10 +- .../Formats/SlotOption.cs | 18 +- .../Formats/SoftwareList.cs | 22 +- SabreTools.Metadata.DatItems/Formats/Sound.cs | 10 +- .../Formats/SourceDetails.cs | 102 ++--- 45 files changed, 837 insertions(+), 823 deletions(-) diff --git a/SabreTools.Metadata.DatItems/DatItem.cs b/SabreTools.Metadata.DatItems/DatItem.cs index 43304e38..b64e7b36 100644 --- a/SabreTools.Metadata.DatItems/DatItem.cs +++ b/SabreTools.Metadata.DatItems/DatItem.cs @@ -2,7 +2,6 @@ using System; using System.Xml.Serialization; using Newtonsoft.Json; using SabreTools.Hashing; -using SabreTools.Logging; using SabreTools.Metadata.DatItems.Formats; using SabreTools.Metadata.Filter; @@ -84,25 +83,6 @@ namespace SabreTools.Metadata.DatItems #endregion - #region Private Fields - - /// - /// Internal model - /// - protected Data.Models.Metadata.DatItem _internal = new(); - - #endregion - - #region Logging - - /// - /// Static logger for static methods - /// - [JsonIgnore, XmlIgnore] - protected static readonly Logger _staticLogger = new(); - - #endregion - #region Accessors /// @@ -193,21 +173,14 @@ namespace SabreTools.Metadata.DatItems /// /// Filter runner to use for checking /// True if the item and its machine passes the filter, false otherwise - public bool PassesFilter(FilterRunner filterRunner) - { - if (Machine is not null && !Machine.PassesFilter(filterRunner)) - return false; - - return filterRunner.Run(_internal); - } + public abstract bool PassesFilter(FilterRunner filterRunner); /// /// Runs a filter and determines if it passes or not /// /// Filter runner to use for checking /// True if the item passes the filter, false otherwise - public bool PassesFilterDB(FilterRunner filterRunner) - => filterRunner.Run(_internal); + public abstract bool PassesFilterDB(FilterRunner filterRunner); #endregion diff --git a/SabreTools.Metadata.DatItems/DatItemT.cs b/SabreTools.Metadata.DatItems/DatItemT.cs index 0cb335ab..dc34727a 100644 --- a/SabreTools.Metadata.DatItems/DatItemT.cs +++ b/SabreTools.Metadata.DatItems/DatItemT.cs @@ -1,12 +1,23 @@ using System; +using SabreTools.Metadata.Filter; namespace SabreTools.Metadata.DatItems { /// /// Base class for all items included in a set that are backed by an internal model /// - public abstract class DatItem : DatItem, IEquatable>, IComparable>, ICloneable where T : Data.Models.Metadata.DatItem, new() + public abstract class DatItem : DatItem, IEquatable>, IComparable>, ICloneable + where T : Data.Models.Metadata.DatItem, new() { + #region Private Fields + + /// + /// Internal model + /// + protected T _internal; + + #endregion + #region Constructors /// @@ -71,5 +82,22 @@ namespace SabreTools.Metadata.DatItems public abstract bool Equals(DatItem? other); #endregion + + #region Manipulation + + /// + public override bool PassesFilter(FilterRunner filterRunner) + { + if (Machine is not null && !Machine.PassesFilter(filterRunner)) + return false; + + return filterRunner.Run(_internal); + } + + /// + public override bool PassesFilterDB(FilterRunner filterRunner) + => filterRunner.Run(_internal); + + #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/Adjuster.cs b/SabreTools.Metadata.DatItems/Formats/Adjuster.cs index 27f64cbc..40ea4aed 100644 --- a/SabreTools.Metadata.DatItems/Formats/Adjuster.cs +++ b/SabreTools.Metadata.DatItems/Formats/Adjuster.cs @@ -18,8 +18,8 @@ namespace SabreTools.Metadata.DatItems.Formats public bool? Default { - get => (_internal as Data.Models.Metadata.Adjuster)?.Default; - set => (_internal as Data.Models.Metadata.Adjuster)?.Default = value; + get => _internal.Default; + set => _internal.Default = value; } /// /> @@ -28,8 +28,8 @@ namespace SabreTools.Metadata.DatItems.Formats public string? Name { - get => (_internal as Data.Models.Metadata.Adjuster)?.Name; - set => (_internal as Data.Models.Metadata.Adjuster)?.Name = value; + get => _internal.Name; + set => _internal.Name = value; } #endregion @@ -71,7 +71,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.Adjuster GetInternalClone() { - var adjusterItem = (_internal as Data.Models.Metadata.Adjuster)?.Clone() as Data.Models.Metadata.Adjuster ?? new(); + var adjusterItem = _internal.Clone() as Data.Models.Metadata.Adjuster ?? new(); if (Condition is not null) adjusterItem.Condition = Condition.GetInternalClone(); @@ -92,7 +92,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Adjuster otherAdjuster) - return ((Data.Models.Metadata.Adjuster)_internal).Equals((Data.Models.Metadata.Adjuster)otherAdjuster._internal); + return _internal.Equals(otherAdjuster._internal); // Everything else fails return false; @@ -107,7 +107,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Adjuster otherAdjuster) - return ((Data.Models.Metadata.Adjuster)_internal).Equals((Data.Models.Metadata.Adjuster)otherAdjuster._internal); + return _internal.Equals(otherAdjuster._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/Analog.cs b/SabreTools.Metadata.DatItems/Formats/Analog.cs index 52a1c31b..364db483 100644 --- a/SabreTools.Metadata.DatItems/Formats/Analog.cs +++ b/SabreTools.Metadata.DatItems/Formats/Analog.cs @@ -17,8 +17,8 @@ namespace SabreTools.Metadata.DatItems.Formats public string? Mask { - get => (_internal as Data.Models.Metadata.Analog)?.Mask; - set => (_internal as Data.Models.Metadata.Analog)?.Mask = value; + get => _internal.Mask; + set => _internal.Mask = value; } #endregion @@ -54,7 +54,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.Analog GetInternalClone() - => (_internal as Data.Models.Metadata.Analog)?.Clone() as Data.Models.Metadata.Analog ?? new(); + => _internal.Clone() as Data.Models.Metadata.Analog ?? new(); #endregion @@ -69,7 +69,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Analog otherAnalog) - return ((Data.Models.Metadata.Analog)_internal).Equals((Data.Models.Metadata.Analog)otherAnalog._internal); + return _internal.Equals(otherAnalog._internal); // Everything else fails return false; @@ -84,7 +84,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Analog otherAnalog) - return ((Data.Models.Metadata.Analog)_internal).Equals((Data.Models.Metadata.Analog)otherAnalog._internal); + return _internal.Equals(otherAnalog._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/Archive.cs b/SabreTools.Metadata.DatItems/Formats/Archive.cs index be02e39b..5e68391a 100644 --- a/SabreTools.Metadata.DatItems/Formats/Archive.cs +++ b/SabreTools.Metadata.DatItems/Formats/Archive.cs @@ -13,79 +13,79 @@ namespace SabreTools.Metadata.DatItems.Formats public string? Additional { - get => (_internal as Data.Models.Metadata.Archive)?.Additional; - set => (_internal as Data.Models.Metadata.Archive)?.Additional = value; + get => _internal.Additional; + set => _internal.Additional = value; } public bool? Adult { - get => (_internal as Data.Models.Metadata.Archive)?.Adult; - set => (_internal as Data.Models.Metadata.Archive)?.Adult = value; + get => _internal.Adult; + set => _internal.Adult = value; } public bool? Alt { - get => (_internal as Data.Models.Metadata.Archive)?.Alt; - set => (_internal as Data.Models.Metadata.Archive)?.Alt = value; + get => _internal.Alt; + set => _internal.Alt = value; } public bool? Bios { - get => (_internal as Data.Models.Metadata.Archive)?.Bios; - set => (_internal as Data.Models.Metadata.Archive)?.Bios = value; + get => _internal.Bios; + set => _internal.Bios = value; } public string? Categories { - get => (_internal as Data.Models.Metadata.Archive)?.Categories; - set => (_internal as Data.Models.Metadata.Archive)?.Categories = value; + get => _internal.Categories; + set => _internal.Categories = value; } public string? CloneTag { - get => (_internal as Data.Models.Metadata.Archive)?.CloneTag; - set => (_internal as Data.Models.Metadata.Archive)?.CloneTag = value; + get => _internal.CloneTag; + set => _internal.CloneTag = value; } public bool? Complete { - get => (_internal as Data.Models.Metadata.Archive)?.Complete; - set => (_internal as Data.Models.Metadata.Archive)?.Complete = value; + get => _internal.Complete; + set => _internal.Complete = value; } public bool? Dat { - get => (_internal as Data.Models.Metadata.Archive)?.Dat; - set => (_internal as Data.Models.Metadata.Archive)?.Dat = value; + get => _internal.Dat; + set => _internal.Dat = value; } public string? DatterNote { - get => (_internal as Data.Models.Metadata.Archive)?.DatterNote; - set => (_internal as Data.Models.Metadata.Archive)?.DatterNote = value; + get => _internal.DatterNote; + set => _internal.DatterNote = value; } public string? Description { - get => (_internal as Data.Models.Metadata.Archive)?.Description; - set => (_internal as Data.Models.Metadata.Archive)?.Description = value; + get => _internal.Description; + set => _internal.Description = value; } public string? DevStatus { - get => (_internal as Data.Models.Metadata.Archive)?.DevStatus; - set => (_internal as Data.Models.Metadata.Archive)?.DevStatus = value; + get => _internal.DevStatus; + set => _internal.DevStatus = value; } public string? GameId1 { - get => (_internal as Data.Models.Metadata.Archive)?.GameId1; - set => (_internal as Data.Models.Metadata.Archive)?.GameId1 = value; + get => _internal.GameId1; + set => _internal.GameId1 = value; } public string? GameId2 { - get => (_internal as Data.Models.Metadata.Archive)?.GameId2; - set => (_internal as Data.Models.Metadata.Archive)?.GameId2 = value; + get => _internal.GameId2; + set => _internal.GameId2 = value; } /// /> @@ -94,122 +94,122 @@ namespace SabreTools.Metadata.DatItems.Formats public string? LangChecked { - get => (_internal as Data.Models.Metadata.Archive)?.LangChecked; - set => (_internal as Data.Models.Metadata.Archive)?.LangChecked = value; + get => _internal.LangChecked; + set => _internal.LangChecked = value; } public string? Languages { - get => (_internal as Data.Models.Metadata.Archive)?.Languages; - set => (_internal as Data.Models.Metadata.Archive)?.Languages = value; + get => _internal.Languages; + set => _internal.Languages = value; } public bool? Licensed { - get => (_internal as Data.Models.Metadata.Archive)?.Licensed; - set => (_internal as Data.Models.Metadata.Archive)?.Licensed = value; + get => _internal.Licensed; + set => _internal.Licensed = value; } public bool? Listed { - get => (_internal as Data.Models.Metadata.Archive)?.Listed; - set => (_internal as Data.Models.Metadata.Archive)?.Listed = value; + get => _internal.Listed; + set => _internal.Listed = value; } public string? MergeOf { - get => (_internal as Data.Models.Metadata.Archive)?.MergeOf; - set => (_internal as Data.Models.Metadata.Archive)?.MergeOf = value; + get => _internal.MergeOf; + set => _internal.MergeOf = value; } public string? MergeName { - get => (_internal as Data.Models.Metadata.Archive)?.MergeName; - set => (_internal as Data.Models.Metadata.Archive)?.MergeName = value; + get => _internal.MergeName; + set => _internal.MergeName = value; } public string? Name { - get => (_internal as Data.Models.Metadata.Archive)?.Name; - set => (_internal as Data.Models.Metadata.Archive)?.Name = value; + get => _internal.Name; + set => _internal.Name = value; } public string? NameAlt { - get => (_internal as Data.Models.Metadata.Archive)?.NameAlt; - set => (_internal as Data.Models.Metadata.Archive)?.NameAlt = value; + get => _internal.NameAlt; + set => _internal.NameAlt = value; } public string? Number { - get => (_internal as Data.Models.Metadata.Archive)?.Number; - set => (_internal as Data.Models.Metadata.Archive)?.Number = value; + get => _internal.Number; + set => _internal.Number = value; } public bool? Physical { - get => (_internal as Data.Models.Metadata.Archive)?.Physical; - set => (_internal as Data.Models.Metadata.Archive)?.Physical = value; + get => _internal.Physical; + set => _internal.Physical = value; } public bool? Pirate { - get => (_internal as Data.Models.Metadata.Archive)?.Pirate; - set => (_internal as Data.Models.Metadata.Archive)?.Pirate = value; + get => _internal.Pirate; + set => _internal.Pirate = value; } public bool? Private { - get => (_internal as Data.Models.Metadata.Archive)?.Private; - set => (_internal as Data.Models.Metadata.Archive)?.Private = value; + get => _internal.Private; + set => _internal.Private = value; } public string? Region { - get => (_internal as Data.Models.Metadata.Archive)?.Region; - set => (_internal as Data.Models.Metadata.Archive)?.Region = value; + get => _internal.Region; + set => _internal.Region = value; } public string? RegParent { - get => (_internal as Data.Models.Metadata.Archive)?.RegParent; - set => (_internal as Data.Models.Metadata.Archive)?.RegParent = value; + get => _internal.RegParent; + set => _internal.RegParent = value; } public bool? ShowLang { - get => (_internal as Data.Models.Metadata.Archive)?.ShowLang; - set => (_internal as Data.Models.Metadata.Archive)?.ShowLang = value; + get => _internal.ShowLang; + set => _internal.ShowLang = value; } public string? Special1 { - get => (_internal as Data.Models.Metadata.Archive)?.Special1; - set => (_internal as Data.Models.Metadata.Archive)?.Special1 = value; + get => _internal.Special1; + set => _internal.Special1 = value; } public string? Special2 { - get => (_internal as Data.Models.Metadata.Archive)?.Special2; - set => (_internal as Data.Models.Metadata.Archive)?.Special2 = value; + get => _internal.Special2; + set => _internal.Special2 = value; } public string? StickyNote { - get => (_internal as Data.Models.Metadata.Archive)?.StickyNote; - set => (_internal as Data.Models.Metadata.Archive)?.StickyNote = value; + get => _internal.StickyNote; + set => _internal.StickyNote = value; } public string? Version1 { - get => (_internal as Data.Models.Metadata.Archive)?.Version1; - set => (_internal as Data.Models.Metadata.Archive)?.Version1 = value; + get => _internal.Version1; + set => _internal.Version1 = value; } public string? Version2 { - get => (_internal as Data.Models.Metadata.Archive)?.Version2; - set => (_internal as Data.Models.Metadata.Archive)?.Version2 = value; + get => _internal.Version2; + set => _internal.Version2 = value; } #endregion @@ -245,7 +245,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.Archive GetInternalClone() - => (_internal as Data.Models.Metadata.Archive)?.Clone() as Data.Models.Metadata.Archive ?? new(); + => _internal.Clone() as Data.Models.Metadata.Archive ?? new(); #endregion @@ -260,7 +260,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Archive otherArchive) - return ((Data.Models.Metadata.Archive)_internal).Equals((Data.Models.Metadata.Archive)otherArchive._internal); + return _internal.Equals(otherArchive._internal); // Everything else fails return false; @@ -275,7 +275,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Archive otherArchive) - return ((Data.Models.Metadata.Archive)_internal).Equals((Data.Models.Metadata.Archive)otherArchive._internal); + return _internal.Equals(otherArchive._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/BiosSet.cs b/SabreTools.Metadata.DatItems/Formats/BiosSet.cs index d9f1f770..269c09e0 100644 --- a/SabreTools.Metadata.DatItems/Formats/BiosSet.cs +++ b/SabreTools.Metadata.DatItems/Formats/BiosSet.cs @@ -13,14 +13,14 @@ namespace SabreTools.Metadata.DatItems.Formats public bool? Default { - get => (_internal as Data.Models.Metadata.BiosSet)?.Default; - set => (_internal as Data.Models.Metadata.BiosSet)?.Default = value; + get => _internal.Default; + set => _internal.Default = value; } public string? Description { - get => (_internal as Data.Models.Metadata.BiosSet)?.Description; - set => (_internal as Data.Models.Metadata.BiosSet)?.Description = value; + get => _internal.Description; + set => _internal.Description = value; } /// /> @@ -29,8 +29,8 @@ namespace SabreTools.Metadata.DatItems.Formats public string? Name { - get => (_internal as Data.Models.Metadata.BiosSet)?.Name; - set => (_internal as Data.Models.Metadata.BiosSet)?.Name = value; + get => _internal.Name; + set => _internal.Name = value; } #endregion @@ -66,7 +66,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.BiosSet GetInternalClone() - => (_internal as Data.Models.Metadata.BiosSet)?.Clone() as Data.Models.Metadata.BiosSet ?? new(); + => _internal.Clone() as Data.Models.Metadata.BiosSet ?? new(); #endregion @@ -81,7 +81,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is BiosSet otherBiosSet) - return ((Data.Models.Metadata.BiosSet)_internal).Equals((Data.Models.Metadata.BiosSet)otherBiosSet._internal); + return _internal.Equals(otherBiosSet._internal); // Everything else fails return false; @@ -96,7 +96,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is BiosSet otherBiosSet) - return ((Data.Models.Metadata.BiosSet)_internal).Equals((Data.Models.Metadata.BiosSet)otherBiosSet._internal); + return _internal.Equals(otherBiosSet._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/Blank.cs b/SabreTools.Metadata.DatItems/Formats/Blank.cs index 263a6fb7..ecd185ce 100644 --- a/SabreTools.Metadata.DatItems/Formats/Blank.cs +++ b/SabreTools.Metadata.DatItems/Formats/Blank.cs @@ -48,7 +48,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.Blank GetInternalClone() - => (_internal as Data.Models.Metadata.Blank)?.Clone() as Data.Models.Metadata.Blank ?? new(); + => _internal.Clone() as Data.Models.Metadata.Blank ?? new(); #endregion @@ -63,7 +63,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Blank otherBlank) - return ((Data.Models.Metadata.Blank)_internal).Equals((Data.Models.Metadata.Blank)otherBlank._internal); + return _internal.Equals(otherBlank._internal); // Everything else fails return false; @@ -78,7 +78,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Blank otherBlank) - return ((Data.Models.Metadata.Blank)_internal).Equals((Data.Models.Metadata.Blank)otherBlank._internal); + return _internal.Equals(otherBlank._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/Chip.cs b/SabreTools.Metadata.DatItems/Formats/Chip.cs index 8c1dc3bf..0958c577 100644 --- a/SabreTools.Metadata.DatItems/Formats/Chip.cs +++ b/SabreTools.Metadata.DatItems/Formats/Chip.cs @@ -13,8 +13,8 @@ namespace SabreTools.Metadata.DatItems.Formats public Data.Models.Metadata.ChipType? ChipType { - get => (_internal as Data.Models.Metadata.Chip)?.ChipType; - set => (_internal as Data.Models.Metadata.Chip)?.ChipType = value; + get => _internal.ChipType; + set => _internal.ChipType = value; } /// /> @@ -23,32 +23,32 @@ namespace SabreTools.Metadata.DatItems.Formats public long? Clock { - get => (_internal as Data.Models.Metadata.Chip)?.Clock; - set => (_internal as Data.Models.Metadata.Chip)?.Clock = value; + get => _internal.Clock; + set => _internal.Clock = value; } public string? Flags { - get => (_internal as Data.Models.Metadata.Chip)?.Flags; - set => (_internal as Data.Models.Metadata.Chip)?.Flags = value; + get => _internal.Flags; + set => _internal.Flags = value; } public string? Name { - get => (_internal as Data.Models.Metadata.Chip)?.Name; - set => (_internal as Data.Models.Metadata.Chip)?.Name = value; + get => _internal.Name; + set => _internal.Name = value; } public bool? SoundOnly { - get => (_internal as Data.Models.Metadata.Chip)?.SoundOnly; - set => (_internal as Data.Models.Metadata.Chip)?.SoundOnly = value; + get => _internal.SoundOnly; + set => _internal.SoundOnly = value; } public string? Tag { - get => (_internal as Data.Models.Metadata.Chip)?.Tag; - set => (_internal as Data.Models.Metadata.Chip)?.Tag = value; + get => _internal.Tag; + set => _internal.Tag = value; } #endregion @@ -84,7 +84,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.Chip GetInternalClone() - => (_internal as Data.Models.Metadata.Chip)?.Clone() as Data.Models.Metadata.Chip ?? new(); + => _internal.Clone() as Data.Models.Metadata.Chip ?? new(); #endregion @@ -99,7 +99,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Chip otherChip) - return ((Data.Models.Metadata.Chip)_internal).Equals((Data.Models.Metadata.Chip)otherChip._internal); + return _internal.Equals(otherChip._internal); // Everything else fails return false; @@ -114,7 +114,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Chip otherChip) - return ((Data.Models.Metadata.Chip)_internal).Equals((Data.Models.Metadata.Chip)otherChip._internal); + return _internal.Equals(otherChip._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/Condition.cs b/SabreTools.Metadata.DatItems/Formats/Condition.cs index 400cf387..0f22c573 100644 --- a/SabreTools.Metadata.DatItems/Formats/Condition.cs +++ b/SabreTools.Metadata.DatItems/Formats/Condition.cs @@ -17,26 +17,26 @@ namespace SabreTools.Metadata.DatItems.Formats public string? Mask { - get => (_internal as Data.Models.Metadata.Condition)?.Mask; - set => (_internal as Data.Models.Metadata.Condition)?.Mask = value; + get => _internal.Mask; + set => _internal.Mask = value; } public Data.Models.Metadata.Relation? Relation { - get => (_internal as Data.Models.Metadata.Condition)?.Relation; - set => (_internal as Data.Models.Metadata.Condition)?.Relation = value; + get => _internal.Relation; + set => _internal.Relation = value; } public string? Tag { - get => (_internal as Data.Models.Metadata.Condition)?.Tag; - set => (_internal as Data.Models.Metadata.Condition)?.Tag = value; + get => _internal.Tag; + set => _internal.Tag = value; } public string? Value { - get => (_internal as Data.Models.Metadata.Condition)?.Value; - set => (_internal as Data.Models.Metadata.Condition)?.Value = value; + get => _internal.Value; + set => _internal.Value = value; } #endregion @@ -72,7 +72,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.Condition GetInternalClone() - => (_internal as Data.Models.Metadata.Condition)?.Clone() as Data.Models.Metadata.Condition ?? new(); + => _internal.Clone() as Data.Models.Metadata.Condition ?? new(); #endregion @@ -87,7 +87,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Condition otherCondition) - return ((Data.Models.Metadata.Condition)_internal).Equals((Data.Models.Metadata.Condition)otherCondition._internal); + return _internal.Equals(otherCondition._internal); // Everything else fails return false; @@ -102,7 +102,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Condition otherCondition) - return ((Data.Models.Metadata.Condition)_internal).Equals((Data.Models.Metadata.Condition)otherCondition._internal); + return _internal.Equals(otherCondition._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs b/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs index d8cfa92f..8f548bd3 100644 --- a/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs +++ b/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs @@ -17,20 +17,20 @@ namespace SabreTools.Metadata.DatItems.Formats public bool? Inverted { - get => (_internal as Data.Models.Metadata.ConfLocation)?.Inverted; - set => (_internal as Data.Models.Metadata.ConfLocation)?.Inverted = value; + get => _internal.Inverted; + set => _internal.Inverted = value; } public string? Name { - get => (_internal as Data.Models.Metadata.ConfLocation)?.Name; - set => (_internal as Data.Models.Metadata.ConfLocation)?.Name = value; + get => _internal.Name; + set => _internal.Name = value; } public long? Number { - get => (_internal as Data.Models.Metadata.ConfLocation)?.Number; - set => (_internal as Data.Models.Metadata.ConfLocation)?.Number = value; + get => _internal.Number; + set => _internal.Number = value; } #endregion @@ -66,7 +66,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.ConfLocation GetInternalClone() - => (_internal as Data.Models.Metadata.ConfLocation)?.Clone() as Data.Models.Metadata.ConfLocation ?? new(); + => _internal.Clone() as Data.Models.Metadata.ConfLocation ?? new(); #endregion @@ -81,7 +81,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is ConfLocation otherConfLocation) - return ((Data.Models.Metadata.ConfLocation)_internal).Equals((Data.Models.Metadata.ConfLocation)otherConfLocation._internal); + return _internal.Equals(otherConfLocation._internal); // Everything else fails return false; @@ -96,7 +96,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is ConfLocation otherConfLocation) - return ((Data.Models.Metadata.ConfLocation)_internal).Equals((Data.Models.Metadata.ConfLocation)otherConfLocation._internal); + return _internal.Equals(otherConfLocation._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs b/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs index 74ec1508..9eff671b 100644 --- a/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs +++ b/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs @@ -18,8 +18,8 @@ namespace SabreTools.Metadata.DatItems.Formats public bool? Default { - get => (_internal as Data.Models.Metadata.ConfSetting)?.Default; - set => (_internal as Data.Models.Metadata.ConfSetting)?.Default = value; + get => _internal.Default; + set => _internal.Default = value; } /// /> @@ -28,14 +28,14 @@ namespace SabreTools.Metadata.DatItems.Formats public string? Name { - get => (_internal as Data.Models.Metadata.ConfSetting)?.Name; - set => (_internal as Data.Models.Metadata.ConfSetting)?.Name = value; + get => _internal.Name; + set => _internal.Name = value; } public string? Value { - get => (_internal as Data.Models.Metadata.ConfSetting)?.Value; - set => (_internal as Data.Models.Metadata.ConfSetting)?.Value = value; + get => _internal.Value; + set => _internal.Value = value; } #endregion @@ -77,7 +77,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.ConfSetting GetInternalClone() { - var confSettingItem = (_internal as Data.Models.Metadata.ConfSetting)?.Clone() as Data.Models.Metadata.ConfSetting ?? new(); + var confSettingItem = _internal.Clone() as Data.Models.Metadata.ConfSetting ?? new(); if (Condition is not null) confSettingItem.Condition = Condition.GetInternalClone(); @@ -98,7 +98,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is ConfSetting otherConfSetting) - return ((Data.Models.Metadata.ConfSetting)_internal).Equals((Data.Models.Metadata.ConfSetting)otherConfSetting._internal); + return _internal.Equals(otherConfSetting._internal); // Everything else fails return false; @@ -113,7 +113,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is ConfSetting otherConfSetting) - return ((Data.Models.Metadata.ConfSetting)_internal).Equals((Data.Models.Metadata.ConfSetting)otherConfSetting._internal); + return _internal.Equals(otherConfSetting._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/Configuration.cs b/SabreTools.Metadata.DatItems/Formats/Configuration.cs index 0bc1e744..ebf16b55 100644 --- a/SabreTools.Metadata.DatItems/Formats/Configuration.cs +++ b/SabreTools.Metadata.DatItems/Formats/Configuration.cs @@ -33,20 +33,20 @@ namespace SabreTools.Metadata.DatItems.Formats public string? Mask { - get => (_internal as Data.Models.Metadata.Configuration)?.Mask; - set => (_internal as Data.Models.Metadata.Configuration)?.Mask = value; + get => _internal.Mask; + set => _internal.Mask = value; } public string? Name { - get => (_internal as Data.Models.Metadata.Configuration)?.Name; - set => (_internal as Data.Models.Metadata.Configuration)?.Name = value; + get => _internal.Name; + set => _internal.Name = value; } public string? Tag { - get => (_internal as Data.Models.Metadata.Configuration)?.Tag; - set => (_internal as Data.Models.Metadata.Configuration)?.Tag = value; + get => _internal.Tag; + set => _internal.Tag = value; } #endregion @@ -94,7 +94,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.Configuration GetInternalClone() { - var configurationItem = (_internal as Data.Models.Metadata.Configuration)?.Clone() as Data.Models.Metadata.Configuration ?? new(); + var configurationItem = _internal.Clone() as Data.Models.Metadata.Configuration ?? new(); if (Condition is not null) configurationItem.Condition = Condition.GetInternalClone(); @@ -121,7 +121,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Configuration otherConfiguration) - return ((Data.Models.Metadata.Configuration)_internal).Equals((Data.Models.Metadata.Configuration)otherConfiguration._internal); + return _internal.Equals(otherConfiguration._internal); // Everything else fails return false; @@ -136,7 +136,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Configuration otherConfiguration) - return ((Data.Models.Metadata.Configuration)_internal).Equals((Data.Models.Metadata.Configuration)otherConfiguration._internal); + return _internal.Equals(otherConfiguration._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/Control.cs b/SabreTools.Metadata.DatItems/Formats/Control.cs index 345bc974..c59073dc 100644 --- a/SabreTools.Metadata.DatItems/Formats/Control.cs +++ b/SabreTools.Metadata.DatItems/Formats/Control.cs @@ -13,14 +13,14 @@ namespace SabreTools.Metadata.DatItems.Formats public long? Buttons { - get => (_internal as Data.Models.Metadata.Control)?.Buttons; - set => (_internal as Data.Models.Metadata.Control)?.Buttons = value; + get => _internal.Buttons; + set => _internal.Buttons = value; } public Data.Models.Metadata.ControlType? ControlType { - get => (_internal as Data.Models.Metadata.Control)?.ControlType; - set => (_internal as Data.Models.Metadata.Control)?.ControlType = value; + get => _internal.ControlType; + set => _internal.ControlType = value; } /// /> @@ -29,62 +29,62 @@ namespace SabreTools.Metadata.DatItems.Formats public long? KeyDelta { - get => (_internal as Data.Models.Metadata.Control)?.KeyDelta; - set => (_internal as Data.Models.Metadata.Control)?.KeyDelta = value; + get => _internal.KeyDelta; + set => _internal.KeyDelta = value; } public long? Maximum { - get => (_internal as Data.Models.Metadata.Control)?.Maximum; - set => (_internal as Data.Models.Metadata.Control)?.Maximum = value; + get => _internal.Maximum; + set => _internal.Maximum = value; } public long? Minimum { - get => (_internal as Data.Models.Metadata.Control)?.Minimum; - set => (_internal as Data.Models.Metadata.Control)?.Minimum = value; + get => _internal.Minimum; + set => _internal.Minimum = value; } public long? Player { - get => (_internal as Data.Models.Metadata.Control)?.Player; - set => (_internal as Data.Models.Metadata.Control)?.Player = value; + get => _internal.Player; + set => _internal.Player = value; } public long? ReqButtons { - get => (_internal as Data.Models.Metadata.Control)?.ReqButtons; - set => (_internal as Data.Models.Metadata.Control)?.ReqButtons = value; + get => _internal.ReqButtons; + set => _internal.ReqButtons = value; } public bool? Reverse { - get => (_internal as Data.Models.Metadata.Control)?.Reverse; - set => (_internal as Data.Models.Metadata.Control)?.Reverse = value; + get => _internal.Reverse; + set => _internal.Reverse = value; } public long? Sensitivity { - get => (_internal as Data.Models.Metadata.Control)?.Sensitivity; - set => (_internal as Data.Models.Metadata.Control)?.Sensitivity = value; + get => _internal.Sensitivity; + set => _internal.Sensitivity = value; } public string? Ways { - get => (_internal as Data.Models.Metadata.Control)?.Ways; - set => (_internal as Data.Models.Metadata.Control)?.Ways = value; + get => _internal.Ways; + set => _internal.Ways = value; } public string? Ways2 { - get => (_internal as Data.Models.Metadata.Control)?.Ways2; - set => (_internal as Data.Models.Metadata.Control)?.Ways2 = value; + get => _internal.Ways2; + set => _internal.Ways2 = value; } public string? Ways3 { - get => (_internal as Data.Models.Metadata.Control)?.Ways3; - set => (_internal as Data.Models.Metadata.Control)?.Ways3 = value; + get => _internal.Ways3; + set => _internal.Ways3 = value; } #endregion @@ -120,7 +120,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.Control GetInternalClone() - => (_internal as Data.Models.Metadata.Control)?.Clone() as Data.Models.Metadata.Control ?? new(); + => _internal.Clone() as Data.Models.Metadata.Control ?? new(); #endregion @@ -135,7 +135,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Control otherControl) - return ((Data.Models.Metadata.Control)_internal).Equals((Data.Models.Metadata.Control)otherControl._internal); + return _internal.Equals(otherControl._internal); // Everything else fails return false; @@ -150,7 +150,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Control otherControl) - return ((Data.Models.Metadata.Control)_internal).Equals((Data.Models.Metadata.Control)otherControl._internal); + return _internal.Equals(otherControl._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/DataArea.cs b/SabreTools.Metadata.DatItems/Formats/DataArea.cs index 734ec4a1..95442915 100644 --- a/SabreTools.Metadata.DatItems/Formats/DataArea.cs +++ b/SabreTools.Metadata.DatItems/Formats/DataArea.cs @@ -15,8 +15,8 @@ namespace SabreTools.Metadata.DatItems.Formats public Data.Models.Metadata.Endianness? Endianness { - get => (_internal as Data.Models.Metadata.DataArea)?.Endianness; - set => (_internal as Data.Models.Metadata.DataArea)?.Endianness = value; + get => _internal.Endianness; + set => _internal.Endianness = value; } /// /> @@ -25,8 +25,8 @@ namespace SabreTools.Metadata.DatItems.Formats public string? Name { - get => (_internal as Data.Models.Metadata.DataArea)?.Name; - set => (_internal as Data.Models.Metadata.DataArea)?.Name = value; + get => _internal.Name; + set => _internal.Name = value; } public Rom[]? Rom { get; set; } @@ -36,14 +36,14 @@ namespace SabreTools.Metadata.DatItems.Formats public long? Size { - get => (_internal as Data.Models.Metadata.DataArea)?.Size; - set => (_internal as Data.Models.Metadata.DataArea)?.Size = value; + get => _internal.Size; + set => _internal.Size = value; } public Data.Models.Metadata.Width? Width { - get => (_internal as Data.Models.Metadata.DataArea)?.Width; - set => (_internal as Data.Models.Metadata.DataArea)?.Width = value; + get => _internal.Width; + set => _internal.Width = value; } #endregion @@ -84,7 +84,7 @@ namespace SabreTools.Metadata.DatItems.Formats public override Data.Models.Metadata.DataArea GetInternalClone() { - var partItem = (_internal as Data.Models.Metadata.DataArea)?.Clone() as Data.Models.Metadata.DataArea ?? new(); + var partItem = _internal.Clone() as Data.Models.Metadata.DataArea ?? new(); if (Rom is not null) partItem.Rom = Array.ConvertAll(Rom, rom => rom.GetInternalClone()); @@ -105,7 +105,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is DataArea otherDataArea) - return ((Data.Models.Metadata.DataArea)_internal).Equals((Data.Models.Metadata.DataArea)otherDataArea._internal); + return _internal.Equals(otherDataArea._internal); // Everything else fails return false; @@ -120,7 +120,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is DataArea otherDataArea) - return ((Data.Models.Metadata.DataArea)_internal).Equals((Data.Models.Metadata.DataArea)otherDataArea._internal); + return _internal.Equals(otherDataArea._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/Device.cs b/SabreTools.Metadata.DatItems/Formats/Device.cs index 37315916..2e7a2265 100644 --- a/SabreTools.Metadata.DatItems/Formats/Device.cs +++ b/SabreTools.Metadata.DatItems/Formats/Device.cs @@ -14,8 +14,8 @@ namespace SabreTools.Metadata.DatItems.Formats public Data.Models.Metadata.DeviceType? DeviceType { - get => (_internal as Data.Models.Metadata.Device)?.DeviceType; - set => (_internal as Data.Models.Metadata.Device)?.DeviceType = value; + get => _internal.DeviceType; + set => _internal.DeviceType = value; } public Extension[]? Extension { get; set; } @@ -25,8 +25,8 @@ namespace SabreTools.Metadata.DatItems.Formats public string? FixedImage { - get => (_internal as Data.Models.Metadata.Device)?.FixedImage; - set => (_internal as Data.Models.Metadata.Device)?.FixedImage = value; + get => _internal.FixedImage; + set => _internal.FixedImage = value; } public Instance? Instance { get; set; } @@ -36,8 +36,8 @@ namespace SabreTools.Metadata.DatItems.Formats public string? Interface { - get => (_internal as Data.Models.Metadata.Device)?.Interface; - set => (_internal as Data.Models.Metadata.Device)?.Interface = value; + get => _internal.Interface; + set => _internal.Interface = value; } /// /> @@ -46,14 +46,14 @@ namespace SabreTools.Metadata.DatItems.Formats public bool? Mandatory { - get => (_internal as Data.Models.Metadata.Device)?.Mandatory; - set => (_internal as Data.Models.Metadata.Device)?.Mandatory = value; + get => _internal.Mandatory; + set => _internal.Mandatory = value; } public string? Tag { - get => (_internal as Data.Models.Metadata.Device)?.Tag; - set => (_internal as Data.Models.Metadata.Device)?.Tag = value; + get => _internal.Tag; + set => _internal.Tag = value; } #endregion @@ -98,7 +98,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.Device GetInternalClone() { - var deviceItem = (_internal as Data.Models.Metadata.Device)?.Clone() as Data.Models.Metadata.Device ?? new(); + var deviceItem = _internal.Clone() as Data.Models.Metadata.Device ?? new(); deviceItem.DeviceType = DeviceType; deviceItem.FixedImage = FixedImage; @@ -128,7 +128,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Device otherDevice) - return ((Data.Models.Metadata.Device)_internal).Equals((Data.Models.Metadata.Device)otherDevice._internal); + return _internal.Equals(otherDevice._internal); // Everything else fails return false; @@ -143,7 +143,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Device otherDevice) - return ((Data.Models.Metadata.Device)_internal).Equals((Data.Models.Metadata.Device)otherDevice._internal); + return _internal.Equals(otherDevice._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs b/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs index 86ff1c98..4d7a02db 100644 --- a/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs +++ b/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs @@ -17,8 +17,8 @@ namespace SabreTools.Metadata.DatItems.Formats public string? Name { - get => (_internal as Data.Models.Metadata.DeviceRef)?.Name; - set => (_internal as Data.Models.Metadata.DeviceRef)?.Name = value; + get => _internal.Name; + set => _internal.Name = value; } #endregion @@ -54,7 +54,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.DeviceRef GetInternalClone() - => (_internal as Data.Models.Metadata.DeviceRef)?.Clone() as Data.Models.Metadata.DeviceRef ?? new(); + => _internal.Clone() as Data.Models.Metadata.DeviceRef ?? new(); #endregion @@ -69,7 +69,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is DeviceRef otherDeviceRef) - return ((Data.Models.Metadata.DeviceRef)_internal).Equals((Data.Models.Metadata.DeviceRef)otherDeviceRef._internal); + return _internal.Equals(otherDeviceRef._internal); // Everything else fails return false; @@ -84,7 +84,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is DeviceRef otherDeviceRef) - return ((Data.Models.Metadata.DeviceRef)_internal).Equals((Data.Models.Metadata.DeviceRef)otherDeviceRef._internal); + return _internal.Equals(otherDeviceRef._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/DipLocation.cs b/SabreTools.Metadata.DatItems/Formats/DipLocation.cs index 33d234b7..de8cfb1f 100644 --- a/SabreTools.Metadata.DatItems/Formats/DipLocation.cs +++ b/SabreTools.Metadata.DatItems/Formats/DipLocation.cs @@ -13,8 +13,8 @@ namespace SabreTools.Metadata.DatItems.Formats public bool? Inverted { - get => (_internal as Data.Models.Metadata.DipLocation)?.Inverted; - set => (_internal as Data.Models.Metadata.DipLocation)?.Inverted = value; + get => _internal.Inverted; + set => _internal.Inverted = value; } /// /> @@ -23,14 +23,14 @@ namespace SabreTools.Metadata.DatItems.Formats public string? Name { - get => (_internal as Data.Models.Metadata.DipLocation)?.Name; - set => (_internal as Data.Models.Metadata.DipLocation)?.Name = value; + get => _internal.Name; + set => _internal.Name = value; } public long? Number { - get => (_internal as Data.Models.Metadata.DipLocation)?.Number; - set => (_internal as Data.Models.Metadata.DipLocation)?.Number = value; + get => _internal.Number; + set => _internal.Number = value; } #endregion @@ -66,7 +66,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.DipLocation GetInternalClone() - => (_internal as Data.Models.Metadata.DipLocation)?.Clone() as Data.Models.Metadata.DipLocation ?? new(); + => _internal.Clone() as Data.Models.Metadata.DipLocation ?? new(); #endregion @@ -81,7 +81,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is DipLocation otherDipLocation) - return ((Data.Models.Metadata.DipLocation)_internal).Equals((Data.Models.Metadata.DipLocation)otherDipLocation._internal); + return _internal.Equals(otherDipLocation._internal); // Everything else fails return false; @@ -96,7 +96,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is DipLocation otherDipLocation) - return ((Data.Models.Metadata.DipLocation)_internal).Equals((Data.Models.Metadata.DipLocation)otherDipLocation._internal); + return _internal.Equals(otherDipLocation._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs b/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs index fdc4a746..a6926c51 100644 --- a/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs +++ b/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs @@ -19,8 +19,8 @@ namespace SabreTools.Metadata.DatItems.Formats public bool? Default { - get => (_internal as Data.Models.Metadata.DipSwitch)?.Default; - set => (_internal as Data.Models.Metadata.DipSwitch)?.Default = value; + get => _internal.Default; + set => _internal.Default = value; } public DipLocation[]? DipLocation { get; set; } @@ -44,14 +44,14 @@ namespace SabreTools.Metadata.DatItems.Formats public string? Mask { - get => (_internal as Data.Models.Metadata.DipSwitch)?.Mask; - set => (_internal as Data.Models.Metadata.DipSwitch)?.Mask = value; + get => _internal.Mask; + set => _internal.Mask = value; } public string? Name { - get => (_internal as Data.Models.Metadata.DipSwitch)?.Name; - set => (_internal as Data.Models.Metadata.DipSwitch)?.Name = value; + get => _internal.Name; + set => _internal.Name = value; } public Part? Part { get; set; } @@ -69,8 +69,8 @@ namespace SabreTools.Metadata.DatItems.Formats public string? Tag { - get => (_internal as Data.Models.Metadata.DipSwitch)?.Tag; - set => (_internal as Data.Models.Metadata.DipSwitch)?.Tag = value; + get => _internal.Tag; + set => _internal.Tag = value; } #endregion @@ -121,7 +121,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.DipSwitch GetInternalClone() { - var dipSwitchItem = (_internal as Data.Models.Metadata.DipSwitch)?.Clone() as Data.Models.Metadata.DipSwitch ?? new(); + var dipSwitchItem = _internal.Clone() as Data.Models.Metadata.DipSwitch ?? new(); if (Condition is not null) dipSwitchItem.Condition = Condition.GetInternalClone(); @@ -151,7 +151,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is DipSwitch otherDipSwitch) - return ((Data.Models.Metadata.DipSwitch)_internal).Equals((Data.Models.Metadata.DipSwitch)otherDipSwitch._internal); + return _internal.Equals(otherDipSwitch._internal); // Everything else fails return false; @@ -166,7 +166,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is DipSwitch otherDipSwitch) - return ((Data.Models.Metadata.DipSwitch)_internal).Equals((Data.Models.Metadata.DipSwitch)otherDipSwitch._internal); + return _internal.Equals(otherDipSwitch._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/DipValue.cs b/SabreTools.Metadata.DatItems/Formats/DipValue.cs index baf1c199..dab12584 100644 --- a/SabreTools.Metadata.DatItems/Formats/DipValue.cs +++ b/SabreTools.Metadata.DatItems/Formats/DipValue.cs @@ -18,8 +18,8 @@ namespace SabreTools.Metadata.DatItems.Formats public bool? Default { - get => (_internal as Data.Models.Metadata.DipValue)?.Default; - set => (_internal as Data.Models.Metadata.DipValue)?.Default = value; + get => _internal.Default; + set => _internal.Default = value; } /// /> @@ -28,14 +28,14 @@ namespace SabreTools.Metadata.DatItems.Formats public string? Name { - get => (_internal as Data.Models.Metadata.DipValue)?.Name; - set => (_internal as Data.Models.Metadata.DipValue)?.Name = value; + get => _internal.Name; + set => _internal.Name = value; } public string? Value { - get => (_internal as Data.Models.Metadata.DipValue)?.Value; - set => (_internal as Data.Models.Metadata.DipValue)?.Value = value; + get => _internal.Value; + set => _internal.Value = value; } #endregion @@ -77,7 +77,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.DipValue GetInternalClone() { - var dipValueItem = (_internal as Data.Models.Metadata.DipValue)?.Clone() as Data.Models.Metadata.DipValue ?? new(); + var dipValueItem = _internal.Clone() as Data.Models.Metadata.DipValue ?? new(); if (Condition is not null) dipValueItem.Condition = Condition.GetInternalClone(); @@ -98,7 +98,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is DipValue otherDipValue) - return ((Data.Models.Metadata.DipValue)_internal).Equals((Data.Models.Metadata.DipValue)otherDipValue._internal); + return _internal.Equals(otherDipValue._internal); // Everything else fails return false; @@ -113,7 +113,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is DipValue otherDipValue) - return ((Data.Models.Metadata.DipValue)_internal).Equals((Data.Models.Metadata.DipValue)otherDipValue._internal); + return _internal.Equals(otherDipValue._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/Disk.cs b/SabreTools.Metadata.DatItems/Formats/Disk.cs index 44f85ebe..4304422e 100644 --- a/SabreTools.Metadata.DatItems/Formats/Disk.cs +++ b/SabreTools.Metadata.DatItems/Formats/Disk.cs @@ -22,14 +22,14 @@ namespace SabreTools.Metadata.DatItems.Formats public string? Flags { - get => (_internal as Data.Models.Metadata.Disk)?.Flags; - set => (_internal as Data.Models.Metadata.Disk)?.Flags = value; + get => _internal.Flags; + set => _internal.Flags = value; } public long? Index { - get => (_internal as Data.Models.Metadata.Disk)?.Index; - set => (_internal as Data.Models.Metadata.Disk)?.Index = value; + get => _internal.Index; + set => _internal.Index = value; } /// /> @@ -37,26 +37,26 @@ namespace SabreTools.Metadata.DatItems.Formats public string? MD5 { - get => (_internal as Data.Models.Metadata.Disk)?.MD5; - set => (_internal as Data.Models.Metadata.Disk)?.MD5 = value; + get => _internal.MD5; + set => _internal.MD5 = value; } public string? Merge { - get => (_internal as Data.Models.Metadata.Disk)?.Merge; - set => (_internal as Data.Models.Metadata.Disk)?.Merge = value; + get => _internal.Merge; + set => _internal.Merge = value; } public string? Name { - get => (_internal as Data.Models.Metadata.Disk)?.Name; - set => (_internal as Data.Models.Metadata.Disk)?.Name = value; + get => _internal.Name; + set => _internal.Name = value; } public bool? Optional { - get => (_internal as Data.Models.Metadata.Disk)?.Optional; - set => (_internal as Data.Models.Metadata.Disk)?.Optional = value; + get => _internal.Optional; + set => _internal.Optional = value; } public Part? Part { get; set; } @@ -74,26 +74,26 @@ namespace SabreTools.Metadata.DatItems.Formats public string? Region { - get => (_internal as Data.Models.Metadata.Disk)?.Region; - set => (_internal as Data.Models.Metadata.Disk)?.Region = value; + get => _internal.Region; + set => _internal.Region = value; } public string? SHA1 { - get => (_internal as Data.Models.Metadata.Disk)?.SHA1; - set => (_internal as Data.Models.Metadata.Disk)?.SHA1 = value; + get => _internal.SHA1; + set => _internal.SHA1 = value; } public ItemStatus? Status { - get => (_internal as Data.Models.Metadata.Disk)?.Status; - set => (_internal as Data.Models.Metadata.Disk)?.Status = value; + get => _internal.Status; + set => _internal.Status = value; } public bool? Writable { - get => (_internal as Data.Models.Metadata.Disk)?.Writable; - set => (_internal as Data.Models.Metadata.Disk)?.Writable = value; + get => _internal.Writable; + set => _internal.Writable = value; } #endregion @@ -143,7 +143,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.Disk GetInternalClone() - => (_internal as Data.Models.Metadata.Disk)?.Clone() as Data.Models.Metadata.Disk ?? new(); + => _internal.Clone() as Data.Models.Metadata.Disk ?? new(); /// /// Convert a disk to the closest Rom approximation @@ -151,7 +151,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public Rom ConvertToRom() { - var rom = new Rom((_internal as Data.Models.Metadata.Disk).ConvertToRom()!); + var rom = new Rom(_internal.ConvertToRom()!); // Create a DataArea if there was an existing DiskArea if (DiskArea is not null) @@ -182,7 +182,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Disk otherDisk) - return ((Data.Models.Metadata.Disk)_internal).PartialEquals((Data.Models.Metadata.Disk)otherDisk._internal); + return _internal.PartialEquals(otherDisk._internal); // Everything else fails return false; @@ -197,7 +197,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Disk otherDisk) - return ((Data.Models.Metadata.Disk)_internal).PartialEquals((Data.Models.Metadata.Disk)otherDisk._internal); + return _internal.PartialEquals(otherDisk._internal); // Everything else fails return false; @@ -208,19 +208,19 @@ namespace SabreTools.Metadata.DatItems.Formats /// /// Disk to fill information from public void FillMissingInformation(Disk other) - => (_internal as Data.Models.Metadata.Disk).FillMissingHashes(other._internal as Data.Models.Metadata.Disk); + => _internal.FillMissingHashes(other._internal); /// /// Returns if the Rom contains any hashes /// /// True if any hash exists, false otherwise - public bool HasHashes() => (_internal as Data.Models.Metadata.Disk)?.HasHashes() ?? false; + public bool HasHashes() => _internal.HasHashes(); /// /// Returns if all of the hashes are set to their 0-byte values /// /// True if any hash matches the 0-byte value, false otherwise - public bool HasZeroHash() => (_internal as Data.Models.Metadata.Disk)?.HasZeroHash() ?? false; + public bool HasZeroHash() => _internal.HasZeroHash(); #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/DiskArea.cs b/SabreTools.Metadata.DatItems/Formats/DiskArea.cs index aa1cadf5..10662e6d 100644 --- a/SabreTools.Metadata.DatItems/Formats/DiskArea.cs +++ b/SabreTools.Metadata.DatItems/Formats/DiskArea.cs @@ -24,8 +24,8 @@ namespace SabreTools.Metadata.DatItems.Formats public string? Name { - get => (_internal as Data.Models.Metadata.DiskArea)?.Name; - set => (_internal as Data.Models.Metadata.DiskArea)?.Name = value; + get => _internal.Name; + set => _internal.Name = value; } #endregion @@ -66,7 +66,7 @@ namespace SabreTools.Metadata.DatItems.Formats public override Data.Models.Metadata.DiskArea GetInternalClone() { - var partItem = (_internal as Data.Models.Metadata.DiskArea)?.Clone() as Data.Models.Metadata.DiskArea ?? new(); + var partItem = _internal.Clone() as Data.Models.Metadata.DiskArea ?? new(); if (Disk is not null) partItem.Disk = Array.ConvertAll(Disk, rom => rom.GetInternalClone()); @@ -87,7 +87,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is DiskArea otherDiskArea) - return ((Data.Models.Metadata.DiskArea)_internal).Equals((Data.Models.Metadata.DiskArea)otherDiskArea._internal); + return _internal.Equals(otherDiskArea._internal); // Everything else fails return false; @@ -102,7 +102,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is DiskArea otherDiskArea) - return ((Data.Models.Metadata.DiskArea)_internal).Equals((Data.Models.Metadata.DiskArea)otherDiskArea._internal); + return _internal.Equals(otherDiskArea._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/Display.cs b/SabreTools.Metadata.DatItems/Formats/Display.cs index e699d896..093e0316 100644 --- a/SabreTools.Metadata.DatItems/Formats/Display.cs +++ b/SabreTools.Metadata.DatItems/Formats/Display.cs @@ -13,50 +13,50 @@ namespace SabreTools.Metadata.DatItems.Formats public long? AspectX { - get => (_internal as Data.Models.Metadata.Display)?.AspectX; - set => (_internal as Data.Models.Metadata.Display)?.AspectX = value; + get => _internal.AspectX; + set => _internal.AspectX = value; } public long? AspectY { - get => (_internal as Data.Models.Metadata.Display)?.AspectY; - set => (_internal as Data.Models.Metadata.Display)?.AspectY = value; + get => _internal.AspectY; + set => _internal.AspectY = value; } public Data.Models.Metadata.DisplayType? DisplayType { - get => (_internal as Data.Models.Metadata.Display)?.DisplayType; - set => (_internal as Data.Models.Metadata.Display)?.DisplayType = value; + get => _internal.DisplayType; + set => _internal.DisplayType = value; } public bool? FlipX { - get => (_internal as Data.Models.Metadata.Display)?.FlipX; - set => (_internal as Data.Models.Metadata.Display)?.FlipX = value; + get => _internal.FlipX; + set => _internal.FlipX = value; } public long? HBEnd { - get => (_internal as Data.Models.Metadata.Display)?.HBEnd; - set => (_internal as Data.Models.Metadata.Display)?.HBEnd = value; + get => _internal.HBEnd; + set => _internal.HBEnd = value; } public long? HBStart { - get => (_internal as Data.Models.Metadata.Display)?.HBStart; - set => (_internal as Data.Models.Metadata.Display)?.HBStart = value; + get => _internal.HBStart; + set => _internal.HBStart = value; } public long? Height { - get => (_internal as Data.Models.Metadata.Display)?.Height; - set => (_internal as Data.Models.Metadata.Display)?.Height = value; + get => _internal.Height; + set => _internal.Height = value; } public long? HTotal { - get => (_internal as Data.Models.Metadata.Display)?.HTotal; - set => (_internal as Data.Models.Metadata.Display)?.HTotal = value; + get => _internal.HTotal; + set => _internal.HTotal = value; } /// /> @@ -65,50 +65,50 @@ namespace SabreTools.Metadata.DatItems.Formats public long? PixClock { - get => (_internal as Data.Models.Metadata.Display)?.PixClock; - set => (_internal as Data.Models.Metadata.Display)?.PixClock = value; + get => _internal.PixClock; + set => _internal.PixClock = value; } public double? Refresh { - get => (_internal as Data.Models.Metadata.Display)?.Refresh; - set => (_internal as Data.Models.Metadata.Display)?.Refresh = value; + get => _internal.Refresh; + set => _internal.Refresh = value; } public Data.Models.Metadata.Rotation? Rotate { - get => (_internal as Data.Models.Metadata.Display)?.Rotate; - set => (_internal as Data.Models.Metadata.Display)?.Rotate = value; + get => _internal.Rotate; + set => _internal.Rotate = value; } public string? Tag { - get => (_internal as Data.Models.Metadata.Display)?.Tag; - set => (_internal as Data.Models.Metadata.Display)?.Tag = value; + get => _internal.Tag; + set => _internal.Tag = value; } public long? VBEnd { - get => (_internal as Data.Models.Metadata.Display)?.VBEnd; - set => (_internal as Data.Models.Metadata.Display)?.VBEnd = value; + get => _internal.VBEnd; + set => _internal.VBEnd = value; } public long? VBStart { - get => (_internal as Data.Models.Metadata.Display)?.VBStart; - set => (_internal as Data.Models.Metadata.Display)?.VBStart = value; + get => _internal.VBStart; + set => _internal.VBStart = value; } public long? VTotal { - get => (_internal as Data.Models.Metadata.Display)?.VTotal; - set => (_internal as Data.Models.Metadata.Display)?.VTotal = value; + get => _internal.VTotal; + set => _internal.VTotal = value; } public long? Width { - get => (_internal as Data.Models.Metadata.Display)?.Width; - set => (_internal as Data.Models.Metadata.Display)?.Width = value; + get => _internal.Width; + set => _internal.Width = value; } #endregion @@ -161,7 +161,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.Display GetInternalClone() - => (_internal as Data.Models.Metadata.Display)?.Clone() as Data.Models.Metadata.Display ?? new(); + => _internal.Clone() as Data.Models.Metadata.Display ?? new(); #endregion @@ -176,7 +176,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Display otherDisplay) - return ((Data.Models.Metadata.Display)_internal).Equals((Data.Models.Metadata.Display)otherDisplay._internal); + return _internal.Equals(otherDisplay._internal); // Everything else fails return false; @@ -191,7 +191,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Display otherDisplay) - return ((Data.Models.Metadata.Display)_internal).Equals((Data.Models.Metadata.Display)otherDisplay._internal); + return _internal.Equals(otherDisplay._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/Driver.cs b/SabreTools.Metadata.DatItems/Formats/Driver.cs index f7b20f54..ff1faf8c 100644 --- a/SabreTools.Metadata.DatItems/Formats/Driver.cs +++ b/SabreTools.Metadata.DatItems/Formats/Driver.cs @@ -13,32 +13,32 @@ namespace SabreTools.Metadata.DatItems.Formats public Data.Models.Metadata.Blit? Blit { - get => (_internal as Data.Models.Metadata.Driver)?.Blit; - set => (_internal as Data.Models.Metadata.Driver)?.Blit = value; + get => _internal.Blit; + set => _internal.Blit = value; } public Data.Models.Metadata.SupportStatus? Cocktail { - get => (_internal as Data.Models.Metadata.Driver)?.Cocktail; - set => (_internal as Data.Models.Metadata.Driver)?.Cocktail = value; + get => _internal.Cocktail; + set => _internal.Cocktail = value; } public Data.Models.Metadata.SupportStatus? Color { - get => (_internal as Data.Models.Metadata.Driver)?.Color; - set => (_internal as Data.Models.Metadata.Driver)?.Color = value; + get => _internal.Color; + set => _internal.Color = value; } public Data.Models.Metadata.SupportStatus? Emulation { - get => (_internal as Data.Models.Metadata.Driver)?.Emulation; - set => (_internal as Data.Models.Metadata.Driver)?.Emulation = value; + get => _internal.Emulation; + set => _internal.Emulation = value; } public bool? Incomplete { - get => (_internal as Data.Models.Metadata.Driver)?.Incomplete; - set => (_internal as Data.Models.Metadata.Driver)?.Incomplete = value; + get => _internal.Incomplete; + set => _internal.Incomplete = value; } /// /> @@ -47,44 +47,44 @@ namespace SabreTools.Metadata.DatItems.Formats public bool? NoSoundHardware { - get => (_internal as Data.Models.Metadata.Driver)?.NoSoundHardware; - set => (_internal as Data.Models.Metadata.Driver)?.NoSoundHardware = value; + get => _internal.NoSoundHardware; + set => _internal.NoSoundHardware = value; } public string? PaletteSize { - get => (_internal as Data.Models.Metadata.Driver)?.PaletteSize; - set => (_internal as Data.Models.Metadata.Driver)?.PaletteSize = value; + get => _internal.PaletteSize; + set => _internal.PaletteSize = value; } public bool? RequiresArtwork { - get => (_internal as Data.Models.Metadata.Driver)?.RequiresArtwork; - set => (_internal as Data.Models.Metadata.Driver)?.RequiresArtwork = value; + get => _internal.RequiresArtwork; + set => _internal.RequiresArtwork = value; } public Data.Models.Metadata.Supported? SaveState { - get => (_internal as Data.Models.Metadata.Driver)?.SaveState; - set => (_internal as Data.Models.Metadata.Driver)?.SaveState = value; + get => _internal.SaveState; + set => _internal.SaveState = value; } public Data.Models.Metadata.SupportStatus? Sound { - get => (_internal as Data.Models.Metadata.Driver)?.Sound; - set => (_internal as Data.Models.Metadata.Driver)?.Sound = value; + get => _internal.Sound; + set => _internal.Sound = value; } public Data.Models.Metadata.SupportStatus? Status { - get => (_internal as Data.Models.Metadata.Driver)?.Status; - set => (_internal as Data.Models.Metadata.Driver)?.Status = value; + get => _internal.Status; + set => _internal.Status = value; } public bool? Unofficial { - get => (_internal as Data.Models.Metadata.Driver)?.Unofficial; - set => (_internal as Data.Models.Metadata.Driver)?.Unofficial = value; + get => _internal.Unofficial; + set => _internal.Unofficial = value; } #endregion @@ -120,7 +120,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.Driver GetInternalClone() - => (_internal as Data.Models.Metadata.Driver)?.Clone() as Data.Models.Metadata.Driver ?? new(); + => _internal.Clone() as Data.Models.Metadata.Driver ?? new(); #endregion @@ -135,7 +135,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Driver otherDriver) - return ((Data.Models.Metadata.Driver)_internal).Equals((Data.Models.Metadata.Driver)otherDriver._internal); + return _internal.Equals(otherDriver._internal); // Everything else fails return false; @@ -150,7 +150,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Driver otherDriver) - return ((Data.Models.Metadata.Driver)_internal).Equals((Data.Models.Metadata.Driver)otherDriver._internal); + return _internal.Equals(otherDriver._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/Extension.cs b/SabreTools.Metadata.DatItems/Formats/Extension.cs index 42ace9e1..6dd07a0d 100644 --- a/SabreTools.Metadata.DatItems/Formats/Extension.cs +++ b/SabreTools.Metadata.DatItems/Formats/Extension.cs @@ -17,8 +17,8 @@ namespace SabreTools.Metadata.DatItems.Formats public string? Name { - get => (_internal as Data.Models.Metadata.Extension)?.Name; - set => (_internal as Data.Models.Metadata.Extension)?.Name = value; + get => _internal.Name; + set => _internal.Name = value; } #endregion @@ -54,7 +54,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.Extension GetInternalClone() - => (_internal as Data.Models.Metadata.Extension)?.Clone() as Data.Models.Metadata.Extension ?? new(); + => _internal.Clone() as Data.Models.Metadata.Extension ?? new(); #endregion @@ -69,7 +69,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Extension otherExtension) - return ((Data.Models.Metadata.Extension)_internal).Equals((Data.Models.Metadata.Extension)otherExtension._internal); + return _internal.Equals(otherExtension._internal); // Everything else fails return false; @@ -84,7 +84,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Extension otherExtension) - return ((Data.Models.Metadata.Extension)_internal).Equals((Data.Models.Metadata.Extension)otherExtension._internal); + return _internal.Equals(otherExtension._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/Feature.cs b/SabreTools.Metadata.DatItems/Formats/Feature.cs index b13c9489..9e712ad2 100644 --- a/SabreTools.Metadata.DatItems/Formats/Feature.cs +++ b/SabreTools.Metadata.DatItems/Formats/Feature.cs @@ -13,8 +13,8 @@ namespace SabreTools.Metadata.DatItems.Formats public Data.Models.Metadata.FeatureType? FeatureType { - get => (_internal as Data.Models.Metadata.Feature)?.FeatureType; - set => (_internal as Data.Models.Metadata.Feature)?.FeatureType = value; + get => _internal.FeatureType; + set => _internal.FeatureType = value; } /// /> @@ -23,26 +23,26 @@ namespace SabreTools.Metadata.DatItems.Formats public string? Name { - get => (_internal as Data.Models.Metadata.Feature)?.Name; - set => (_internal as Data.Models.Metadata.Feature)?.Name = value; + get => _internal.Name; + set => _internal.Name = value; } public Data.Models.Metadata.FeatureStatus? Overall { - get => (_internal as Data.Models.Metadata.Feature)?.Overall; - set => (_internal as Data.Models.Metadata.Feature)?.Overall = value; + get => _internal.Overall; + set => _internal.Overall = value; } public Data.Models.Metadata.FeatureStatus? Status { - get => (_internal as Data.Models.Metadata.Feature)?.Status; - set => (_internal as Data.Models.Metadata.Feature)?.Status = value; + get => _internal.Status; + set => _internal.Status = value; } public string? Value { - get => (_internal as Data.Models.Metadata.Feature)?.Value; - set => (_internal as Data.Models.Metadata.Feature)?.Value = value; + get => _internal.Value; + set => _internal.Value = value; } #endregion @@ -78,7 +78,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.Feature GetInternalClone() - => (_internal as Data.Models.Metadata.Feature)?.Clone() as Data.Models.Metadata.Feature ?? new(); + => _internal.Clone() as Data.Models.Metadata.Feature ?? new(); #endregion @@ -93,7 +93,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Feature otherFeature) - return ((Data.Models.Metadata.Feature)_internal).Equals((Data.Models.Metadata.Feature)otherFeature._internal); + return _internal.Equals(otherFeature._internal); // Everything else fails return false; @@ -108,7 +108,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Feature otherFeature) - return ((Data.Models.Metadata.Feature)_internal).Equals((Data.Models.Metadata.Feature)otherFeature._internal); + return _internal.Equals(otherFeature._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/File.cs b/SabreTools.Metadata.DatItems/Formats/File.cs index d22b2f3d..2e6d1849 100644 --- a/SabreTools.Metadata.DatItems/Formats/File.cs +++ b/SabreTools.Metadata.DatItems/Formats/File.cs @@ -4,6 +4,7 @@ using Newtonsoft.Json; using SabreTools.Data.Extensions; using SabreTools.Hashing; using SabreTools.IO.Extensions; +using SabreTools.Metadata.Filter; using SabreTools.Text.Extensions; // TODO: Add item mappings for all fields @@ -327,5 +328,17 @@ namespace SabreTools.Metadata.DatItems.Formats } #endregion + + #region Manipulation + + /// + /// Not implemented + public override bool PassesFilter(FilterRunner filterRunner) => false; + + /// + /// Not implemented + public override bool PassesFilterDB(FilterRunner filterRunner) => false; + + #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/Info.cs b/SabreTools.Metadata.DatItems/Formats/Info.cs index 4076b87f..46874ae4 100644 --- a/SabreTools.Metadata.DatItems/Formats/Info.cs +++ b/SabreTools.Metadata.DatItems/Formats/Info.cs @@ -17,14 +17,14 @@ namespace SabreTools.Metadata.DatItems.Formats public string? Name { - get => (_internal as Data.Models.Metadata.Info)?.Name; - set => (_internal as Data.Models.Metadata.Info)?.Name = value; + get => _internal.Name; + set => _internal.Name = value; } public string? Value { - get => (_internal as Data.Models.Metadata.Info)?.Value; - set => (_internal as Data.Models.Metadata.Info)?.Value = value; + get => _internal.Value; + set => _internal.Value = value; } #endregion @@ -60,7 +60,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.Info GetInternalClone() - => (_internal as Data.Models.Metadata.Info)?.Clone() as Data.Models.Metadata.Info ?? new(); + => _internal.Clone() as Data.Models.Metadata.Info ?? new(); #endregion @@ -75,7 +75,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Info otherInfo) - return ((Data.Models.Metadata.Info)_internal).Equals((Data.Models.Metadata.Info)otherInfo._internal); + return _internal.Equals(otherInfo._internal); // Everything else fails return false; @@ -90,7 +90,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Info otherInfo) - return ((Data.Models.Metadata.Info)_internal).Equals((Data.Models.Metadata.Info)otherInfo._internal); + return _internal.Equals(otherInfo._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/Input.cs b/SabreTools.Metadata.DatItems/Formats/Input.cs index 4fc95c4d..7e64d1ce 100644 --- a/SabreTools.Metadata.DatItems/Formats/Input.cs +++ b/SabreTools.Metadata.DatItems/Formats/Input.cs @@ -14,14 +14,14 @@ namespace SabreTools.Metadata.DatItems.Formats public long? Buttons { - get => (_internal as Data.Models.Metadata.Input)?.Buttons; - set => (_internal as Data.Models.Metadata.Input)?.Buttons = value; + get => _internal.Buttons; + set => _internal.Buttons = value; } public long? Coins { - get => (_internal as Data.Models.Metadata.Input)?.Coins; - set => (_internal as Data.Models.Metadata.Input)?.Coins = value; + get => _internal.Coins; + set => _internal.Coins = value; } public Control[]? Control { get; set; } @@ -31,8 +31,8 @@ namespace SabreTools.Metadata.DatItems.Formats public string? ControlAttr { - get => (_internal as Data.Models.Metadata.Input)?.ControlAttr; - set => (_internal as Data.Models.Metadata.Input)?.ControlAttr = value; + get => _internal.ControlAttr; + set => _internal.ControlAttr = value; } /// /> @@ -41,20 +41,20 @@ namespace SabreTools.Metadata.DatItems.Formats public long? Players { - get => (_internal as Data.Models.Metadata.Input)?.Players; - set => (_internal as Data.Models.Metadata.Input)?.Players = value; + get => _internal.Players; + set => _internal.Players = value; } public bool? Service { - get => (_internal as Data.Models.Metadata.Input)?.Service; - set => (_internal as Data.Models.Metadata.Input)?.Service = value; + get => _internal.Service; + set => _internal.Service = value; } public bool? Tilt { - get => (_internal as Data.Models.Metadata.Input)?.Tilt; - set => (_internal as Data.Models.Metadata.Input)?.Tilt = value; + get => _internal.Tilt; + set => _internal.Tilt = value; } #endregion @@ -96,7 +96,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.Input GetInternalClone() { - var inputItem = (_internal as Data.Models.Metadata.Input)?.Clone() as Data.Models.Metadata.Input ?? new(); + var inputItem = _internal.Clone() as Data.Models.Metadata.Input ?? new(); if (Control is not null) inputItem.Control = Array.ConvertAll(Control, control => control.GetInternalClone()); @@ -117,7 +117,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Input otherInput) - return ((Data.Models.Metadata.Input)_internal).Equals((Data.Models.Metadata.Input)otherInput._internal); + return _internal.Equals(otherInput._internal); // Everything else fails return false; @@ -132,7 +132,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Input otherInput) - return ((Data.Models.Metadata.Input)_internal).Equals((Data.Models.Metadata.Input)otherInput._internal); + return _internal.Equals(otherInput._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/Instance.cs b/SabreTools.Metadata.DatItems/Formats/Instance.cs index 73a2fc32..1dbf2791 100644 --- a/SabreTools.Metadata.DatItems/Formats/Instance.cs +++ b/SabreTools.Metadata.DatItems/Formats/Instance.cs @@ -13,8 +13,8 @@ namespace SabreTools.Metadata.DatItems.Formats public string? BriefName { - get => (_internal as Data.Models.Metadata.Instance)?.BriefName; - set => (_internal as Data.Models.Metadata.Instance)?.BriefName = value; + get => _internal.BriefName; + set => _internal.BriefName = value; } /// /> @@ -23,8 +23,8 @@ namespace SabreTools.Metadata.DatItems.Formats public string? Name { - get => (_internal as Data.Models.Metadata.Instance)?.Name; - set => (_internal as Data.Models.Metadata.Instance)?.Name = value; + get => _internal.Name; + set => _internal.Name = value; } #endregion @@ -60,7 +60,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.Instance GetInternalClone() - => (_internal as Data.Models.Metadata.Instance)?.Clone() as Data.Models.Metadata.Instance ?? new(); + => _internal.Clone() as Data.Models.Metadata.Instance ?? new(); #endregion @@ -75,7 +75,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Instance otherInstance) - return ((Data.Models.Metadata.Instance)_internal).Equals((Data.Models.Metadata.Instance)otherInstance._internal); + return _internal.Equals(otherInstance._internal); // Everything else fails return false; @@ -90,7 +90,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Instance otherInstance) - return ((Data.Models.Metadata.Instance)_internal).Equals((Data.Models.Metadata.Instance)otherInstance._internal); + return _internal.Equals(otherInstance._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/Media.cs b/SabreTools.Metadata.DatItems/Formats/Media.cs index 3795d907..db77a69b 100644 --- a/SabreTools.Metadata.DatItems/Formats/Media.cs +++ b/SabreTools.Metadata.DatItems/Formats/Media.cs @@ -15,8 +15,8 @@ namespace SabreTools.Metadata.DatItems.Formats public string? MD5 { - get => (_internal as Data.Models.Metadata.Media)?.MD5; - set => (_internal as Data.Models.Metadata.Media)?.MD5 = value; + get => _internal.MD5; + set => _internal.MD5 = value; } /// /> @@ -25,26 +25,26 @@ namespace SabreTools.Metadata.DatItems.Formats public string? Name { - get => (_internal as Data.Models.Metadata.Media)?.Name; - set => (_internal as Data.Models.Metadata.Media)?.Name = value; + get => _internal.Name; + set => _internal.Name = value; } public string? SHA1 { - get => (_internal as Data.Models.Metadata.Media)?.SHA1; - set => (_internal as Data.Models.Metadata.Media)?.SHA1 = value; + get => _internal.SHA1; + set => _internal.SHA1 = value; } public string? SHA256 { - get => (_internal as Data.Models.Metadata.Media)?.SHA256; - set => (_internal as Data.Models.Metadata.Media)?.SHA256 = value; + get => _internal.SHA256; + set => _internal.SHA256 = value; } public string? SpamSum { - get => (_internal as Data.Models.Metadata.Media)?.SpamSum; - set => (_internal as Data.Models.Metadata.Media)?.SpamSum = value; + get => _internal.SpamSum; + set => _internal.SpamSum = value; } #endregion @@ -96,7 +96,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.Media GetInternalClone() - => (_internal as Data.Models.Metadata.Media)?.Clone() as Data.Models.Metadata.Media ?? new(); + => _internal.Clone() as Data.Models.Metadata.Media ?? new(); /// /// Convert a media to the closest Rom approximation @@ -104,7 +104,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public Rom ConvertToRom() { - var rom = new Rom((_internal as Data.Models.Metadata.Media).ConvertToRom()!); + var rom = new Rom(_internal.ConvertToRom()!); rom.DupeType = DupeType; rom.Machine = Machine?.Clone() as Machine; @@ -127,7 +127,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Media otherMedia) - return ((Data.Models.Metadata.Media)_internal).PartialEquals((Data.Models.Metadata.Media)otherMedia._internal); + return _internal.PartialEquals(otherMedia._internal); // Everything else fails return false; @@ -142,7 +142,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Media otherMedia) - return ((Data.Models.Metadata.Media)_internal).PartialEquals((Data.Models.Metadata.Media)otherMedia._internal); + return _internal.PartialEquals(otherMedia._internal); // Everything else fails return false; @@ -153,19 +153,19 @@ namespace SabreTools.Metadata.DatItems.Formats /// /// Media to fill information from public void FillMissingInformation(Media other) - => (_internal as Data.Models.Metadata.Media).FillMissingHashes(other._internal as Data.Models.Metadata.Media); + => _internal.FillMissingHashes(other._internal); /// /// Returns if the Rom contains any hashes /// /// True if any hash exists, false otherwise - public bool HasHashes() => (_internal as Data.Models.Metadata.Media)?.HasHashes() ?? false; + public bool HasHashes() => _internal.HasHashes(); /// /// Returns if all of the hashes are set to their 0-byte values /// /// True if any hash matches the 0-byte value, false otherwise - public bool HasZeroHash() => (_internal as Data.Models.Metadata.Media)?.HasZeroHash() ?? false; + public bool HasZeroHash() => _internal.HasZeroHash(); #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/Part.cs b/SabreTools.Metadata.DatItems/Formats/Part.cs index 5cfce496..81f87ed1 100644 --- a/SabreTools.Metadata.DatItems/Formats/Part.cs +++ b/SabreTools.Metadata.DatItems/Formats/Part.cs @@ -35,8 +35,8 @@ namespace SabreTools.Metadata.DatItems.Formats public string? Interface { - get => (_internal as Data.Models.Metadata.Part)?.Interface; - set => (_internal as Data.Models.Metadata.Part)?.Interface = value; + get => _internal.Interface; + set => _internal.Interface = value; } /// /> @@ -45,8 +45,8 @@ namespace SabreTools.Metadata.DatItems.Formats public string? Name { - get => (_internal as Data.Models.Metadata.Part)?.Name; - set => (_internal as Data.Models.Metadata.Part)?.Name = value; + get => _internal.Name; + set => _internal.Name = value; } #endregion @@ -97,7 +97,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.Part GetInternalClone() { - var partItem = (_internal as Data.Models.Metadata.Part)?.Clone() as Data.Models.Metadata.Part ?? new(); + var partItem = _internal.Clone() as Data.Models.Metadata.Part ?? new(); if (DataArea is not null) partItem.DataArea = Array.ConvertAll(DataArea, dataArea => dataArea.GetInternalClone()); @@ -127,7 +127,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Part otherPart) - return ((Data.Models.Metadata.Part)_internal).Equals((Data.Models.Metadata.Part)otherPart._internal); + return _internal.Equals(otherPart._internal); // Everything else fails return false; @@ -142,7 +142,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Part otherPart) - return ((Data.Models.Metadata.Part)_internal).Equals((Data.Models.Metadata.Part)otherPart._internal); + return _internal.Equals(otherPart._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/PartFeature.cs b/SabreTools.Metadata.DatItems/Formats/PartFeature.cs index c31cff0f..a141c4bc 100644 --- a/SabreTools.Metadata.DatItems/Formats/PartFeature.cs +++ b/SabreTools.Metadata.DatItems/Formats/PartFeature.cs @@ -13,8 +13,8 @@ namespace SabreTools.Metadata.DatItems.Formats public Data.Models.Metadata.FeatureType? FeatureType { - get => (_internal as Data.Models.Metadata.Feature)?.FeatureType; - set => (_internal as Data.Models.Metadata.Feature)?.FeatureType = value; + get => _internal.FeatureType; + set => _internal.FeatureType = value; } /// /> @@ -23,14 +23,14 @@ namespace SabreTools.Metadata.DatItems.Formats public string? Name { - get => (_internal as Data.Models.Metadata.Feature)?.Name; - set => (_internal as Data.Models.Metadata.Feature)?.Name = value; + get => _internal.Name; + set => _internal.Name = value; } public Data.Models.Metadata.FeatureStatus? Overall { - get => (_internal as Data.Models.Metadata.Feature)?.Overall; - set => (_internal as Data.Models.Metadata.Feature)?.Overall = value; + get => _internal.Overall; + set => _internal.Overall = value; } public Part? Part { get; set; } @@ -40,14 +40,14 @@ namespace SabreTools.Metadata.DatItems.Formats public Data.Models.Metadata.FeatureStatus? Status { - get => (_internal as Data.Models.Metadata.Feature)?.Status; - set => (_internal as Data.Models.Metadata.Feature)?.Status = value; + get => _internal.Status; + set => _internal.Status = value; } public string? Value { - get => (_internal as Data.Models.Metadata.Feature)?.Value; - set => (_internal as Data.Models.Metadata.Feature)?.Value = value; + get => _internal.Value; + set => _internal.Value = value; } #endregion @@ -83,7 +83,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.Feature GetInternalClone() - => (_internal as Data.Models.Metadata.Feature)?.Clone() as Data.Models.Metadata.Feature ?? new(); + => _internal.Clone() as Data.Models.Metadata.Feature ?? new(); #endregion @@ -98,7 +98,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is PartFeature otherPartFeature) - return ((Data.Models.Metadata.Feature)_internal).Equals((Data.Models.Metadata.Feature)otherPartFeature._internal); + return _internal.Equals(otherPartFeature._internal); // Everything else fails return false; @@ -113,7 +113,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is PartFeature otherPartFeature) - return ((Data.Models.Metadata.Feature)_internal).Equals((Data.Models.Metadata.Feature)otherPartFeature._internal); + return _internal.Equals(otherPartFeature._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/Port.cs b/SabreTools.Metadata.DatItems/Formats/Port.cs index 724ccd63..358f872f 100644 --- a/SabreTools.Metadata.DatItems/Formats/Port.cs +++ b/SabreTools.Metadata.DatItems/Formats/Port.cs @@ -23,8 +23,8 @@ namespace SabreTools.Metadata.DatItems.Formats public string? Tag { - get => (_internal as Data.Models.Metadata.Port)?.Tag; - set => (_internal as Data.Models.Metadata.Port)?.Tag = value; + get => _internal.Tag; + set => _internal.Tag = value; } #endregion @@ -66,7 +66,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.Port GetInternalClone() { - var portItem = (_internal as Data.Models.Metadata.Port)?.Clone() as Data.Models.Metadata.Port ?? new(); + var portItem = _internal.Clone() as Data.Models.Metadata.Port ?? new(); if (Analog is not null) portItem.Analog = Array.ConvertAll(Analog, analog => analog.GetInternalClone()); @@ -87,7 +87,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Port otherPort) - return ((Data.Models.Metadata.Port)_internal).Equals((Data.Models.Metadata.Port)otherPort._internal); + return _internal.Equals(otherPort._internal); // Everything else fails return false; @@ -102,7 +102,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Port otherPort) - return ((Data.Models.Metadata.Port)_internal).Equals((Data.Models.Metadata.Port)otherPort._internal); + return _internal.Equals(otherPort._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/RamOption.cs b/SabreTools.Metadata.DatItems/Formats/RamOption.cs index 3253f371..c2d60546 100644 --- a/SabreTools.Metadata.DatItems/Formats/RamOption.cs +++ b/SabreTools.Metadata.DatItems/Formats/RamOption.cs @@ -13,14 +13,14 @@ namespace SabreTools.Metadata.DatItems.Formats public string? Content { - get => (_internal as Data.Models.Metadata.RamOption)?.Content; - set => (_internal as Data.Models.Metadata.RamOption)?.Content = value; + get => _internal.Content; + set => _internal.Content = value; } public bool? Default { - get => (_internal as Data.Models.Metadata.RamOption)?.Default; - set => (_internal as Data.Models.Metadata.RamOption)?.Default = value; + get => _internal.Default; + set => _internal.Default = value; } /// /> @@ -29,8 +29,8 @@ namespace SabreTools.Metadata.DatItems.Formats public string? Name { - get => (_internal as Data.Models.Metadata.RamOption)?.Name; - set => (_internal as Data.Models.Metadata.RamOption)?.Name = value; + get => _internal.Name; + set => _internal.Name = value; } #endregion @@ -66,7 +66,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.RamOption GetInternalClone() - => (_internal as Data.Models.Metadata.RamOption)?.Clone() as Data.Models.Metadata.RamOption ?? new(); + => _internal.Clone() as Data.Models.Metadata.RamOption ?? new(); #endregion @@ -81,7 +81,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is RamOption otherRamOption) - return ((Data.Models.Metadata.RamOption)_internal).Equals((Data.Models.Metadata.RamOption)otherRamOption._internal); + return _internal.Equals(otherRamOption._internal); // Everything else fails return false; @@ -96,7 +96,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is RamOption otherRamOption) - return ((Data.Models.Metadata.RamOption)_internal).Equals((Data.Models.Metadata.RamOption)otherRamOption._internal); + return _internal.Equals(otherRamOption._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/Release.cs b/SabreTools.Metadata.DatItems/Formats/Release.cs index 980df35a..3c66a9a4 100644 --- a/SabreTools.Metadata.DatItems/Formats/Release.cs +++ b/SabreTools.Metadata.DatItems/Formats/Release.cs @@ -13,14 +13,14 @@ namespace SabreTools.Metadata.DatItems.Formats public string? Date { - get => (_internal as Data.Models.Metadata.Release)?.Date; - set => (_internal as Data.Models.Metadata.Release)?.Date = value; + get => _internal.Date; + set => _internal.Date = value; } public bool? Default { - get => (_internal as Data.Models.Metadata.Release)?.Default; - set => (_internal as Data.Models.Metadata.Release)?.Default = value; + get => _internal.Default; + set => _internal.Default = value; } /// /> @@ -29,20 +29,20 @@ namespace SabreTools.Metadata.DatItems.Formats public string? Language { - get => (_internal as Data.Models.Metadata.Release)?.Language; - set => (_internal as Data.Models.Metadata.Release)?.Language = value; + get => _internal.Language; + set => _internal.Language = value; } public string? Name { - get => (_internal as Data.Models.Metadata.Release)?.Name; - set => (_internal as Data.Models.Metadata.Release)?.Name = value; + get => _internal.Name; + set => _internal.Name = value; } public string? Region { - get => (_internal as Data.Models.Metadata.Release)?.Region; - set => (_internal as Data.Models.Metadata.Release)?.Region = value; + get => _internal.Region; + set => _internal.Region = value; } #endregion @@ -78,7 +78,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.Release GetInternalClone() - => (_internal as Data.Models.Metadata.Release)?.Clone() as Data.Models.Metadata.Release ?? new(); + => _internal.Clone() as Data.Models.Metadata.Release ?? new(); #endregion @@ -93,7 +93,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Release otherRelease) - return ((Data.Models.Metadata.Release)_internal).Equals((Data.Models.Metadata.Release)otherRelease._internal); + return _internal.Equals(otherRelease._internal); // Everything else fails return false; @@ -108,7 +108,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Release otherRelease) - return ((Data.Models.Metadata.Release)_internal).Equals((Data.Models.Metadata.Release)otherRelease._internal); + return _internal.Equals(otherRelease._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs b/SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs index 182eda59..9584a7a4 100644 --- a/SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs +++ b/SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs @@ -13,50 +13,50 @@ namespace SabreTools.Metadata.DatItems.Formats public string? AppendToNumber { - get => (_internal as Data.Models.Metadata.ReleaseDetails)?.AppendToNumber; - set => (_internal as Data.Models.Metadata.ReleaseDetails)?.AppendToNumber = value; + get => _internal.AppendToNumber; + set => _internal.AppendToNumber = value; } public string? ArchiveName { - get => (_internal as Data.Models.Metadata.ReleaseDetails)?.ArchiveName; - set => (_internal as Data.Models.Metadata.ReleaseDetails)?.ArchiveName = value; + get => _internal.ArchiveName; + set => _internal.ArchiveName = value; } public string? Category { - get => (_internal as Data.Models.Metadata.ReleaseDetails)?.Category; - set => (_internal as Data.Models.Metadata.ReleaseDetails)?.Category = value; + get => _internal.Category; + set => _internal.Category = value; } public string? Comment { - get => (_internal as Data.Models.Metadata.ReleaseDetails)?.Comment; - set => (_internal as Data.Models.Metadata.ReleaseDetails)?.Comment = value; + get => _internal.Comment; + set => _internal.Comment = value; } public string? Date { - get => (_internal as Data.Models.Metadata.ReleaseDetails)?.Date; - set => (_internal as Data.Models.Metadata.ReleaseDetails)?.Date = value; + get => _internal.Date; + set => _internal.Date = value; } public string? DirName { - get => (_internal as Data.Models.Metadata.ReleaseDetails)?.DirName; - set => (_internal as Data.Models.Metadata.ReleaseDetails)?.DirName = value; + get => _internal.DirName; + set => _internal.DirName = value; } public string? Group { - get => (_internal as Data.Models.Metadata.ReleaseDetails)?.Group; - set => (_internal as Data.Models.Metadata.ReleaseDetails)?.Group = value; + get => _internal.Group; + set => _internal.Group = value; } public string? Id { - get => (_internal as Data.Models.Metadata.ReleaseDetails)?.Id; - set => (_internal as Data.Models.Metadata.ReleaseDetails)?.Id = value; + get => _internal.Id; + set => _internal.Id = value; } /// /> @@ -65,50 +65,50 @@ namespace SabreTools.Metadata.DatItems.Formats public string? NfoCRC { - get => (_internal as Data.Models.Metadata.ReleaseDetails)?.NfoCRC; - set => (_internal as Data.Models.Metadata.ReleaseDetails)?.NfoCRC = value; + get => _internal.NfoCRC; + set => _internal.NfoCRC = value; } public string? NfoName { - get => (_internal as Data.Models.Metadata.ReleaseDetails)?.NfoName; - set => (_internal as Data.Models.Metadata.ReleaseDetails)?.NfoName = value; + get => _internal.NfoName; + set => _internal.NfoName = value; } public string? NfoSize { - get => (_internal as Data.Models.Metadata.ReleaseDetails)?.NfoSize; - set => (_internal as Data.Models.Metadata.ReleaseDetails)?.NfoSize = value; + get => _internal.NfoSize; + set => _internal.NfoSize = value; } public string? Origin { - get => (_internal as Data.Models.Metadata.ReleaseDetails)?.Origin; - set => (_internal as Data.Models.Metadata.ReleaseDetails)?.Origin = value; + get => _internal.Origin; + set => _internal.Origin = value; } public string? OriginalFormat { - get => (_internal as Data.Models.Metadata.ReleaseDetails)?.OriginalFormat; - set => (_internal as Data.Models.Metadata.ReleaseDetails)?.OriginalFormat = value; + get => _internal.OriginalFormat; + set => _internal.OriginalFormat = value; } public string? Region { - get => (_internal as Data.Models.Metadata.ReleaseDetails)?.Region; - set => (_internal as Data.Models.Metadata.ReleaseDetails)?.Region = value; + get => _internal.Region; + set => _internal.Region = value; } public string? RomInfo { - get => (_internal as Data.Models.Metadata.ReleaseDetails)?.RomInfo; - set => (_internal as Data.Models.Metadata.ReleaseDetails)?.RomInfo = value; + get => _internal.RomInfo; + set => _internal.RomInfo = value; } public string? Tool { - get => (_internal as Data.Models.Metadata.ReleaseDetails)?.Tool; - set => (_internal as Data.Models.Metadata.ReleaseDetails)?.Tool = value; + get => _internal.Tool; + set => _internal.Tool = value; } #endregion @@ -143,7 +143,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.ReleaseDetails GetInternalClone() - => (_internal as Data.Models.Metadata.ReleaseDetails)?.Clone() as Data.Models.Metadata.ReleaseDetails ?? new(); + => _internal.Clone() as Data.Models.Metadata.ReleaseDetails ?? new(); #endregion @@ -158,7 +158,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is ReleaseDetails otherReleaseDetails) - return ((Data.Models.Metadata.ReleaseDetails)_internal).Equals((Data.Models.Metadata.ReleaseDetails)otherReleaseDetails._internal); + return _internal.Equals(otherReleaseDetails._internal); // Everything else fails return false; @@ -173,7 +173,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is ReleaseDetails otherReleaseDetails) - return ((Data.Models.Metadata.ReleaseDetails)_internal).Equals((Data.Models.Metadata.ReleaseDetails)otherReleaseDetails._internal); + return _internal.Equals(otherReleaseDetails._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/Rom.cs b/SabreTools.Metadata.DatItems/Formats/Rom.cs index 0f425707..2711f51d 100644 --- a/SabreTools.Metadata.DatItems/Formats/Rom.cs +++ b/SabreTools.Metadata.DatItems/Formats/Rom.cs @@ -16,104 +16,104 @@ namespace SabreTools.Metadata.DatItems.Formats public string? Album { - get => (_internal as Data.Models.Metadata.Rom)?.Album; - set => (_internal as Data.Models.Metadata.Rom)?.Album = value; + get => _internal.Album; + set => _internal.Album = value; } public string? AltRomname { - get => (_internal as Data.Models.Metadata.Rom)?.AltRomname; - set => (_internal as Data.Models.Metadata.Rom)?.AltRomname = value; + get => _internal.AltRomname; + set => _internal.AltRomname = value; } public string? AltTitle { - get => (_internal as Data.Models.Metadata.Rom)?.AltTitle; - set => (_internal as Data.Models.Metadata.Rom)?.AltTitle = value; + get => _internal.AltTitle; + set => _internal.AltTitle = value; } public string? Artist { - get => (_internal as Data.Models.Metadata.Rom)?.Artist; - set => (_internal as Data.Models.Metadata.Rom)?.Artist = value; + get => _internal.Artist; + set => _internal.Artist = value; } public string? ASRDetectedLang { - get => (_internal as Data.Models.Metadata.Rom)?.ASRDetectedLang; - set => (_internal as Data.Models.Metadata.Rom)?.ASRDetectedLang = value; + get => _internal.ASRDetectedLang; + set => _internal.ASRDetectedLang = value; } public string? ASRDetectedLangConf { - get => (_internal as Data.Models.Metadata.Rom)?.ASRDetectedLangConf; - set => (_internal as Data.Models.Metadata.Rom)?.ASRDetectedLangConf = value; + get => _internal.ASRDetectedLangConf; + set => _internal.ASRDetectedLangConf = value; } public string? ASRTranscribedLang { - get => (_internal as Data.Models.Metadata.Rom)?.ASRTranscribedLang; - set => (_internal as Data.Models.Metadata.Rom)?.ASRTranscribedLang = value; + get => _internal.ASRTranscribedLang; + set => _internal.ASRTranscribedLang = value; } public string? Bios { - get => (_internal as Data.Models.Metadata.Rom)?.Bios; - set => (_internal as Data.Models.Metadata.Rom)?.Bios = value; + get => _internal.Bios; + set => _internal.Bios = value; } public string? Bitrate { - get => (_internal as Data.Models.Metadata.Rom)?.Bitrate; - set => (_internal as Data.Models.Metadata.Rom)?.Bitrate = value; + get => _internal.Bitrate; + set => _internal.Bitrate = value; } public string? BitTorrentMagnetHash { - get => (_internal as Data.Models.Metadata.Rom)?.BitTorrentMagnetHash; - set => (_internal as Data.Models.Metadata.Rom)?.BitTorrentMagnetHash = value; + get => _internal.BitTorrentMagnetHash; + set => _internal.BitTorrentMagnetHash = value; } public string? ClothCoverDetectionModuleVersion { - get => (_internal as Data.Models.Metadata.Rom)?.ClothCoverDetectionModuleVersion; - set => (_internal as Data.Models.Metadata.Rom)?.ClothCoverDetectionModuleVersion = value; + get => _internal.ClothCoverDetectionModuleVersion; + set => _internal.ClothCoverDetectionModuleVersion = value; } public string? CollectionCatalogNumber { - get => (_internal as Data.Models.Metadata.Rom)?.CollectionCatalogNumber; - set => (_internal as Data.Models.Metadata.Rom)?.CollectionCatalogNumber = value; + get => _internal.CollectionCatalogNumber; + set => _internal.CollectionCatalogNumber = value; } public string? Comment { - get => (_internal as Data.Models.Metadata.Rom)?.Comment; - set => (_internal as Data.Models.Metadata.Rom)?.Comment = value; + get => _internal.Comment; + set => _internal.Comment = value; } public string? CRC { - get => (_internal as Data.Models.Metadata.Rom)?.CRC; - set => (_internal as Data.Models.Metadata.Rom)?.CRC = value; + get => _internal.CRC; + set => _internal.CRC = value; } public string? CRC16 { - get => (_internal as Data.Models.Metadata.Rom)?.CRC16; - set => (_internal as Data.Models.Metadata.Rom)?.CRC16 = value; + get => _internal.CRC16; + set => _internal.CRC16 = value; } public string? CRC64 { - get => (_internal as Data.Models.Metadata.Rom)?.CRC64; - set => (_internal as Data.Models.Metadata.Rom)?.CRC64 = value; + get => _internal.CRC64; + set => _internal.CRC64 = value; } public string? Creator { - get => (_internal as Data.Models.Metadata.Rom)?.Creator; - set => (_internal as Data.Models.Metadata.Rom)?.Creator = value; + get => _internal.Creator; + set => _internal.Creator = value; } public DataArea? DataArea { get; set; } @@ -133,104 +133,104 @@ namespace SabreTools.Metadata.DatItems.Formats public string? Date { - get => (_internal as Data.Models.Metadata.Rom)?.Date; - set => (_internal as Data.Models.Metadata.Rom)?.Date = value; + get => _internal.Date; + set => _internal.Date = value; } public bool? Dispose { - get => (_internal as Data.Models.Metadata.Rom)?.Dispose; - set => (_internal as Data.Models.Metadata.Rom)?.Dispose = value; + get => _internal.Dispose; + set => _internal.Dispose = value; } public string? Extension { - get => (_internal as Data.Models.Metadata.Rom)?.Extension; - set => (_internal as Data.Models.Metadata.Rom)?.Extension = value; + get => _internal.Extension; + set => _internal.Extension = value; } public long? FileCount { - get => (_internal as Data.Models.Metadata.Rom)?.FileCount; - set => (_internal as Data.Models.Metadata.Rom)?.FileCount = value; + get => _internal.FileCount; + set => _internal.FileCount = value; } public bool? FileIsAvailable { - get => (_internal as Data.Models.Metadata.Rom)?.FileIsAvailable; - set => (_internal as Data.Models.Metadata.Rom)?.FileIsAvailable = value; + get => _internal.FileIsAvailable; + set => _internal.FileIsAvailable = value; } public string? Flags { - get => (_internal as Data.Models.Metadata.Rom)?.Flags; - set => (_internal as Data.Models.Metadata.Rom)?.Flags = value; + get => _internal.Flags; + set => _internal.Flags = value; } public string? Format { - get => (_internal as Data.Models.Metadata.Rom)?.Format; - set => (_internal as Data.Models.Metadata.Rom)?.Format = value; + get => _internal.Format; + set => _internal.Format = value; } public string? Header { - get => (_internal as Data.Models.Metadata.Rom)?.Header; - set => (_internal as Data.Models.Metadata.Rom)?.Header = value; + get => _internal.Header; + set => _internal.Header = value; } public string? Height { - get => (_internal as Data.Models.Metadata.Rom)?.Height; - set => (_internal as Data.Models.Metadata.Rom)?.Height = value; + get => _internal.Height; + set => _internal.Height = value; } public string? hOCRCharToWordhOCRVersion { - get => (_internal as Data.Models.Metadata.Rom)?.hOCRCharToWordhOCRVersion; - set => (_internal as Data.Models.Metadata.Rom)?.hOCRCharToWordhOCRVersion = value; + get => _internal.hOCRCharToWordhOCRVersion; + set => _internal.hOCRCharToWordhOCRVersion = value; } public string? hOCRCharToWordModuleVersion { - get => (_internal as Data.Models.Metadata.Rom)?.hOCRCharToWordModuleVersion; - set => (_internal as Data.Models.Metadata.Rom)?.hOCRCharToWordModuleVersion = value; + get => _internal.hOCRCharToWordModuleVersion; + set => _internal.hOCRCharToWordModuleVersion = value; } public string? hOCRFtsTexthOCRVersion { - get => (_internal as Data.Models.Metadata.Rom)?.hOCRFtsTexthOCRVersion; - set => (_internal as Data.Models.Metadata.Rom)?.hOCRFtsTexthOCRVersion = value; + get => _internal.hOCRFtsTexthOCRVersion; + set => _internal.hOCRFtsTexthOCRVersion = value; } public string? hOCRFtsTextModuleVersion { - get => (_internal as Data.Models.Metadata.Rom)?.hOCRFtsTextModuleVersion; - set => (_internal as Data.Models.Metadata.Rom)?.hOCRFtsTextModuleVersion = value; + get => _internal.hOCRFtsTextModuleVersion; + set => _internal.hOCRFtsTextModuleVersion = value; } public string? hOCRPageIndexhOCRVersion { - get => (_internal as Data.Models.Metadata.Rom)?.hOCRPageIndexhOCRVersion; - set => (_internal as Data.Models.Metadata.Rom)?.hOCRPageIndexhOCRVersion = value; + get => _internal.hOCRPageIndexhOCRVersion; + set => _internal.hOCRPageIndexhOCRVersion = value; } public string? hOCRPageIndexModuleVersion { - get => (_internal as Data.Models.Metadata.Rom)?.hOCRPageIndexModuleVersion; - set => (_internal as Data.Models.Metadata.Rom)?.hOCRPageIndexModuleVersion = value; + get => _internal.hOCRPageIndexModuleVersion; + set => _internal.hOCRPageIndexModuleVersion = value; } public bool? Inverted { - get => (_internal as Data.Models.Metadata.Rom)?.Inverted; - set => (_internal as Data.Models.Metadata.Rom)?.Inverted = value; + get => _internal.Inverted; + set => _internal.Inverted = value; } public string? LastModifiedTime { - get => (_internal as Data.Models.Metadata.Rom)?.LastModifiedTime; - set => (_internal as Data.Models.Metadata.Rom)?.LastModifiedTime = value; + get => _internal.LastModifiedTime; + set => _internal.LastModifiedTime = value; } /// /> @@ -238,82 +238,82 @@ namespace SabreTools.Metadata.DatItems.Formats public string? Length { - get => (_internal as Data.Models.Metadata.Rom)?.Length; - set => (_internal as Data.Models.Metadata.Rom)?.Length = value; + get => _internal.Length; + set => _internal.Length = value; } public LoadFlag? LoadFlag { - get => (_internal as Data.Models.Metadata.Rom)?.LoadFlag; - set => (_internal as Data.Models.Metadata.Rom)?.LoadFlag = value; + get => _internal.LoadFlag; + set => _internal.LoadFlag = value; } public string? MatrixNumber { - get => (_internal as Data.Models.Metadata.Rom)?.MatrixNumber; - set => (_internal as Data.Models.Metadata.Rom)?.MatrixNumber = value; + get => _internal.MatrixNumber; + set => _internal.MatrixNumber = value; } public string? MD2 { - get => (_internal as Data.Models.Metadata.Rom)?.MD2; - set => (_internal as Data.Models.Metadata.Rom)?.MD2 = value; + get => _internal.MD2; + set => _internal.MD2 = value; } public string? MD4 { - get => (_internal as Data.Models.Metadata.Rom)?.MD4; - set => (_internal as Data.Models.Metadata.Rom)?.MD4 = value; + get => _internal.MD4; + set => _internal.MD4 = value; } public string? MD5 { - get => (_internal as Data.Models.Metadata.Rom)?.MD5; - set => (_internal as Data.Models.Metadata.Rom)?.MD5 = value; + get => _internal.MD5; + set => _internal.MD5 = value; } public string? Merge { - get => (_internal as Data.Models.Metadata.Rom)?.Merge; - set => (_internal as Data.Models.Metadata.Rom)?.Merge = value; + get => _internal.Merge; + set => _internal.Merge = value; } public bool? MIA { - get => (_internal as Data.Models.Metadata.Rom)?.MIA; - set => (_internal as Data.Models.Metadata.Rom)?.MIA = value; + get => _internal.MIA; + set => _internal.MIA = value; } public string? Name { - get => (_internal as Data.Models.Metadata.Rom)?.Name; - set => (_internal as Data.Models.Metadata.Rom)?.Name = value; + get => _internal.Name; + set => _internal.Name = value; } public string? Offset { - get => (_internal as Data.Models.Metadata.Rom)?.Offset; - set => (_internal as Data.Models.Metadata.Rom)?.Offset = value; + get => _internal.Offset; + set => _internal.Offset = value; } public string? OpenMSXType { - get => (_internal as Data.Models.Metadata.Rom)?.OpenMSXType; - set => (_internal as Data.Models.Metadata.Rom)?.OpenMSXType = value; + get => _internal.OpenMSXType; + set => _internal.OpenMSXType = value; } public OpenMSXSubType? OpenMSXMediaType { - get => (_internal as Data.Models.Metadata.Rom)?.OpenMSXMediaType; - set => (_internal as Data.Models.Metadata.Rom)?.OpenMSXMediaType = value; + get => _internal.OpenMSXMediaType; + set => _internal.OpenMSXMediaType = value; } public Original? Original { get; set; } public string? OriginalProperty { - get => (_internal as Data.Models.Metadata.Rom)?.Original; - set => (_internal as Data.Models.Metadata.Rom)?.Original = value; + get => _internal.Original; + set => _internal.Original = value; } [JsonIgnore] @@ -321,8 +321,8 @@ namespace SabreTools.Metadata.DatItems.Formats public bool? Optional { - get => (_internal as Data.Models.Metadata.Rom)?.Optional; - set => (_internal as Data.Models.Metadata.Rom)?.Optional = value; + get => _internal.Optional; + set => _internal.Optional = value; } public Part? Part { get; set; } @@ -340,290 +340,290 @@ namespace SabreTools.Metadata.DatItems.Formats public string? PDFModuleVersion { - get => (_internal as Data.Models.Metadata.Rom)?.PDFModuleVersion; - set => (_internal as Data.Models.Metadata.Rom)?.PDFModuleVersion = value; + get => _internal.PDFModuleVersion; + set => _internal.PDFModuleVersion = value; } public string? PreviewImage { - get => (_internal as Data.Models.Metadata.Rom)?.PreviewImage; - set => (_internal as Data.Models.Metadata.Rom)?.PreviewImage = value; + get => _internal.PreviewImage; + set => _internal.PreviewImage = value; } public string? Publisher { - get => (_internal as Data.Models.Metadata.Rom)?.Publisher; - set => (_internal as Data.Models.Metadata.Rom)?.Publisher = value; + get => _internal.Publisher; + set => _internal.Publisher = value; } public string? Region { - get => (_internal as Data.Models.Metadata.Rom)?.Region; - set => (_internal as Data.Models.Metadata.Rom)?.Region = value; + get => _internal.Region; + set => _internal.Region = value; } public string? Remark { - get => (_internal as Data.Models.Metadata.Rom)?.Remark; - set => (_internal as Data.Models.Metadata.Rom)?.Remark = value; + get => _internal.Remark; + set => _internal.Remark = value; } public string? RIPEMD128 { - get => (_internal as Data.Models.Metadata.Rom)?.RIPEMD128; - set => (_internal as Data.Models.Metadata.Rom)?.RIPEMD128 = value; + get => _internal.RIPEMD128; + set => _internal.RIPEMD128 = value; } public string? RIPEMD160 { - get => (_internal as Data.Models.Metadata.Rom)?.RIPEMD160; - set => (_internal as Data.Models.Metadata.Rom)?.RIPEMD160 = value; + get => _internal.RIPEMD160; + set => _internal.RIPEMD160 = value; } public string? Rotation { - get => (_internal as Data.Models.Metadata.Rom)?.Rotation; - set => (_internal as Data.Models.Metadata.Rom)?.Rotation = value; + get => _internal.Rotation; + set => _internal.Rotation = value; } public string? Serial { - get => (_internal as Data.Models.Metadata.Rom)?.Serial; - set => (_internal as Data.Models.Metadata.Rom)?.Serial = value; + get => _internal.Serial; + set => _internal.Serial = value; } public string? SHA1 { - get => (_internal as Data.Models.Metadata.Rom)?.SHA1; - set => (_internal as Data.Models.Metadata.Rom)?.SHA1 = value; + get => _internal.SHA1; + set => _internal.SHA1 = value; } public string? SHA256 { - get => (_internal as Data.Models.Metadata.Rom)?.SHA256; - set => (_internal as Data.Models.Metadata.Rom)?.SHA256 = value; + get => _internal.SHA256; + set => _internal.SHA256 = value; } public string? SHA384 { - get => (_internal as Data.Models.Metadata.Rom)?.SHA384; - set => (_internal as Data.Models.Metadata.Rom)?.SHA384 = value; + get => _internal.SHA384; + set => _internal.SHA384 = value; } public string? SHA512 { - get => (_internal as Data.Models.Metadata.Rom)?.SHA512; - set => (_internal as Data.Models.Metadata.Rom)?.SHA512 = value; + get => _internal.SHA512; + set => _internal.SHA512 = value; } public long? Size { - get => (_internal as Data.Models.Metadata.Rom)?.Size; - set => (_internal as Data.Models.Metadata.Rom)?.Size = value; + get => _internal.Size; + set => _internal.Size = value; } public bool? SoundOnly { - get => (_internal as Data.Models.Metadata.Rom)?.SoundOnly; - set => (_internal as Data.Models.Metadata.Rom)?.SoundOnly = value; + get => _internal.SoundOnly; + set => _internal.SoundOnly = value; } public string? SourceProperty { - get => (_internal as Data.Models.Metadata.Rom)?.Source; - set => (_internal as Data.Models.Metadata.Rom)?.Source = value; + get => _internal.Source; + set => _internal.Source = value; } public string? SpamSum { - get => (_internal as Data.Models.Metadata.Rom)?.SpamSum; - set => (_internal as Data.Models.Metadata.Rom)?.SpamSum = value; + get => _internal.SpamSum; + set => _internal.SpamSum = value; } public string? Start { - get => (_internal as Data.Models.Metadata.Rom)?.Start; - set => (_internal as Data.Models.Metadata.Rom)?.Start = value; + get => _internal.Start; + set => _internal.Start = value; } public ItemStatus? Status { - get => (_internal as Data.Models.Metadata.Rom)?.Status; - set => (_internal as Data.Models.Metadata.Rom)?.Status = value; + get => _internal.Status; + set => _internal.Status = value; } public string? Summation { - get => (_internal as Data.Models.Metadata.Rom)?.Summation; - set => (_internal as Data.Models.Metadata.Rom)?.Summation = value; + get => _internal.Summation; + set => _internal.Summation = value; } public string? TesseractOCR { - get => (_internal as Data.Models.Metadata.Rom)?.TesseractOCR; - set => (_internal as Data.Models.Metadata.Rom)?.TesseractOCR = value; + get => _internal.TesseractOCR; + set => _internal.TesseractOCR = value; } public string? TesseractOCRConverted { - get => (_internal as Data.Models.Metadata.Rom)?.TesseractOCRConverted; - set => (_internal as Data.Models.Metadata.Rom)?.TesseractOCRConverted = value; + get => _internal.TesseractOCRConverted; + set => _internal.TesseractOCRConverted = value; } public string? TesseractOCRDetectedLang { - get => (_internal as Data.Models.Metadata.Rom)?.TesseractOCRDetectedLang; - set => (_internal as Data.Models.Metadata.Rom)?.TesseractOCRDetectedLang = value; + get => _internal.TesseractOCRDetectedLang; + set => _internal.TesseractOCRDetectedLang = value; } public string? TesseractOCRDetectedLangConf { - get => (_internal as Data.Models.Metadata.Rom)?.TesseractOCRDetectedLangConf; - set => (_internal as Data.Models.Metadata.Rom)?.TesseractOCRDetectedLangConf = value; + get => _internal.TesseractOCRDetectedLangConf; + set => _internal.TesseractOCRDetectedLangConf = value; } public string? TesseractOCRDetectedScript { - get => (_internal as Data.Models.Metadata.Rom)?.TesseractOCRDetectedScript; - set => (_internal as Data.Models.Metadata.Rom)?.TesseractOCRDetectedScript = value; + get => _internal.TesseractOCRDetectedScript; + set => _internal.TesseractOCRDetectedScript = value; } public string? TesseractOCRDetectedScriptConf { - get => (_internal as Data.Models.Metadata.Rom)?.TesseractOCRDetectedScriptConf; - set => (_internal as Data.Models.Metadata.Rom)?.TesseractOCRDetectedScriptConf = value; + get => _internal.TesseractOCRDetectedScriptConf; + set => _internal.TesseractOCRDetectedScriptConf = value; } public string? TesseractOCRModuleVersion { - get => (_internal as Data.Models.Metadata.Rom)?.TesseractOCRModuleVersion; - set => (_internal as Data.Models.Metadata.Rom)?.TesseractOCRModuleVersion = value; + get => _internal.TesseractOCRModuleVersion; + set => _internal.TesseractOCRModuleVersion = value; } public string? TesseractOCRParameters { - get => (_internal as Data.Models.Metadata.Rom)?.TesseractOCRParameters; - set => (_internal as Data.Models.Metadata.Rom)?.TesseractOCRParameters = value; + get => _internal.TesseractOCRParameters; + set => _internal.TesseractOCRParameters = value; } public string? Title { - get => (_internal as Data.Models.Metadata.Rom)?.Title; - set => (_internal as Data.Models.Metadata.Rom)?.Title = value; + get => _internal.Title; + set => _internal.Title = value; } public string? Track { - get => (_internal as Data.Models.Metadata.Rom)?.Track; - set => (_internal as Data.Models.Metadata.Rom)?.Track = value; + get => _internal.Track; + set => _internal.Track = value; } public string? Value { - get => (_internal as Data.Models.Metadata.Rom)?.Value; - set => (_internal as Data.Models.Metadata.Rom)?.Value = value; + get => _internal.Value; + set => _internal.Value = value; } public string? WhisperASRModuleVersion { - get => (_internal as Data.Models.Metadata.Rom)?.WhisperASRModuleVersion; - set => (_internal as Data.Models.Metadata.Rom)?.WhisperASRModuleVersion = value; + get => _internal.WhisperASRModuleVersion; + set => _internal.WhisperASRModuleVersion = value; } public string? WhisperModelHash { - get => (_internal as Data.Models.Metadata.Rom)?.WhisperModelHash; - set => (_internal as Data.Models.Metadata.Rom)?.WhisperModelHash = value; + get => _internal.WhisperModelHash; + set => _internal.WhisperModelHash = value; } public string? WhisperModelName { - get => (_internal as Data.Models.Metadata.Rom)?.WhisperModelName; - set => (_internal as Data.Models.Metadata.Rom)?.WhisperModelName = value; + get => _internal.WhisperModelName; + set => _internal.WhisperModelName = value; } public string? WhisperVersion { - get => (_internal as Data.Models.Metadata.Rom)?.WhisperVersion; - set => (_internal as Data.Models.Metadata.Rom)?.WhisperVersion = value; + get => _internal.WhisperVersion; + set => _internal.WhisperVersion = value; } public string? Width { - get => (_internal as Data.Models.Metadata.Rom)?.Width; - set => (_internal as Data.Models.Metadata.Rom)?.Width = value; + get => _internal.Width; + set => _internal.Width = value; } public string? WordConfidenceInterval0To10 { - get => (_internal as Data.Models.Metadata.Rom)?.WordConfidenceInterval0To10; - set => (_internal as Data.Models.Metadata.Rom)?.WordConfidenceInterval0To10 = value; + get => _internal.WordConfidenceInterval0To10; + set => _internal.WordConfidenceInterval0To10 = value; } public string? WordConfidenceInterval11To20 { - get => (_internal as Data.Models.Metadata.Rom)?.WordConfidenceInterval11To20; - set => (_internal as Data.Models.Metadata.Rom)?.WordConfidenceInterval11To20 = value; + get => _internal.WordConfidenceInterval11To20; + set => _internal.WordConfidenceInterval11To20 = value; } public string? WordConfidenceInterval21To30 { - get => (_internal as Data.Models.Metadata.Rom)?.WordConfidenceInterval21To30; - set => (_internal as Data.Models.Metadata.Rom)?.WordConfidenceInterval21To30 = value; + get => _internal.WordConfidenceInterval21To30; + set => _internal.WordConfidenceInterval21To30 = value; } public string? WordConfidenceInterval31To40 { - get => (_internal as Data.Models.Metadata.Rom)?.WordConfidenceInterval31To40; - set => (_internal as Data.Models.Metadata.Rom)?.WordConfidenceInterval31To40 = value; + get => _internal.WordConfidenceInterval31To40; + set => _internal.WordConfidenceInterval31To40 = value; } public string? WordConfidenceInterval41To50 { - get => (_internal as Data.Models.Metadata.Rom)?.WordConfidenceInterval41To50; - set => (_internal as Data.Models.Metadata.Rom)?.WordConfidenceInterval41To50 = value; + get => _internal.WordConfidenceInterval41To50; + set => _internal.WordConfidenceInterval41To50 = value; } public string? WordConfidenceInterval51To60 { - get => (_internal as Data.Models.Metadata.Rom)?.WordConfidenceInterval51To60; - set => (_internal as Data.Models.Metadata.Rom)?.WordConfidenceInterval51To60 = value; + get => _internal.WordConfidenceInterval51To60; + set => _internal.WordConfidenceInterval51To60 = value; } public string? WordConfidenceInterval61To70 { - get => (_internal as Data.Models.Metadata.Rom)?.WordConfidenceInterval61To70; - set => (_internal as Data.Models.Metadata.Rom)?.WordConfidenceInterval61To70 = value; + get => _internal.WordConfidenceInterval61To70; + set => _internal.WordConfidenceInterval61To70 = value; } public string? WordConfidenceInterval71To80 { - get => (_internal as Data.Models.Metadata.Rom)?.WordConfidenceInterval71To80; - set => (_internal as Data.Models.Metadata.Rom)?.WordConfidenceInterval71To80 = value; + get => _internal.WordConfidenceInterval71To80; + set => _internal.WordConfidenceInterval71To80 = value; } public string? WordConfidenceInterval81To90 { - get => (_internal as Data.Models.Metadata.Rom)?.WordConfidenceInterval81To90; - set => (_internal as Data.Models.Metadata.Rom)?.WordConfidenceInterval81To90 = value; + get => _internal.WordConfidenceInterval81To90; + set => _internal.WordConfidenceInterval81To90 = value; } public string? WordConfidenceInterval91To100 { - get => (_internal as Data.Models.Metadata.Rom)?.WordConfidenceInterval91To100; - set => (_internal as Data.Models.Metadata.Rom)?.WordConfidenceInterval91To100 = value; + get => _internal.WordConfidenceInterval91To100; + set => _internal.WordConfidenceInterval91To100 = value; } public string? xxHash364 { - get => (_internal as Data.Models.Metadata.Rom)?.xxHash364; - set => (_internal as Data.Models.Metadata.Rom)?.xxHash364 = value; + get => _internal.xxHash364; + set => _internal.xxHash364 = value; } public string? xxHash3128 { - get => (_internal as Data.Models.Metadata.Rom)?.xxHash3128; - set => (_internal as Data.Models.Metadata.Rom)?.xxHash3128 = value; + get => _internal.xxHash3128; + set => _internal.xxHash3128 = value; } #endregion @@ -899,7 +899,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.Rom GetInternalClone() - => (_internal as Data.Models.Metadata.Rom)?.Clone() as Data.Models.Metadata.Rom ?? new(); + => _internal.Clone() as Data.Models.Metadata.Rom ?? new(); #endregion @@ -914,7 +914,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Rom otherRom) - return ((Data.Models.Metadata.Rom)_internal).PartialEquals((Data.Models.Metadata.Rom)otherRom._internal); + return _internal.PartialEquals(otherRom._internal); // Everything else fails return false; @@ -929,7 +929,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Rom otherRom) - return ((Data.Models.Metadata.Rom)_internal).PartialEquals((Data.Models.Metadata.Rom)otherRom._internal); + return _internal.PartialEquals(otherRom._internal); // Everything else fails return false; @@ -940,19 +940,19 @@ namespace SabreTools.Metadata.DatItems.Formats /// /// Rom to fill information from public void FillMissingInformation(Rom other) - => (_internal as Data.Models.Metadata.Rom).FillMissingHashes(other._internal as Data.Models.Metadata.Rom); + => _internal.FillMissingHashes(other._internal); /// /// Returns if the Rom contains any hashes /// /// True if any hash exists, false otherwise - public bool HasHashes() => (_internal as Data.Models.Metadata.Rom)?.HasHashes() ?? false; + public bool HasHashes() => _internal.HasHashes(); /// /// Returns if all of the hashes are set to their 0-byte values /// /// True if any hash matches the 0-byte value, false otherwise - public bool HasZeroHash() => (_internal as Data.Models.Metadata.Rom)?.HasZeroHash() ?? false; + public bool HasZeroHash() => _internal.HasZeroHash(); #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/Sample.cs b/SabreTools.Metadata.DatItems/Formats/Sample.cs index 5fe6a8bd..e6b82b0f 100644 --- a/SabreTools.Metadata.DatItems/Formats/Sample.cs +++ b/SabreTools.Metadata.DatItems/Formats/Sample.cs @@ -17,8 +17,8 @@ namespace SabreTools.Metadata.DatItems.Formats public string? Name { - get => (_internal as Data.Models.Metadata.Sample)?.Name; - set => (_internal as Data.Models.Metadata.Sample)?.Name = value; + get => _internal.Name; + set => _internal.Name = value; } #endregion @@ -54,7 +54,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.Sample GetInternalClone() - => (_internal as Data.Models.Metadata.Sample)?.Clone() as Data.Models.Metadata.Sample ?? new(); + => _internal.Clone() as Data.Models.Metadata.Sample ?? new(); #endregion @@ -69,7 +69,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Sample otherSample) - return ((Data.Models.Metadata.Sample)_internal).Equals((Data.Models.Metadata.Sample)otherSample._internal); + return _internal.Equals(otherSample._internal); // Everything else fails return false; @@ -84,7 +84,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Sample otherSample) - return ((Data.Models.Metadata.Sample)_internal).Equals((Data.Models.Metadata.Sample)otherSample._internal); + return _internal.Equals(otherSample._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/Serials.cs b/SabreTools.Metadata.DatItems/Formats/Serials.cs index 98568b30..9dbf1aeb 100644 --- a/SabreTools.Metadata.DatItems/Formats/Serials.cs +++ b/SabreTools.Metadata.DatItems/Formats/Serials.cs @@ -13,32 +13,32 @@ namespace SabreTools.Metadata.DatItems.Formats public string? BoxBarcode { - get => (_internal as Data.Models.Metadata.Serials)?.BoxBarcode; - set => (_internal as Data.Models.Metadata.Serials)?.BoxBarcode = value; + get => _internal.BoxBarcode; + set => _internal.BoxBarcode = value; } public string? BoxSerial { - get => (_internal as Data.Models.Metadata.Serials)?.BoxSerial; - set => (_internal as Data.Models.Metadata.Serials)?.BoxSerial = value; + get => _internal.BoxSerial; + set => _internal.BoxSerial = value; } public string? ChipSerial { - get => (_internal as Data.Models.Metadata.Serials)?.ChipSerial; - set => (_internal as Data.Models.Metadata.Serials)?.ChipSerial = value; + get => _internal.ChipSerial; + set => _internal.ChipSerial = value; } public string? DigitalSerial1 { - get => (_internal as Data.Models.Metadata.Serials)?.DigitalSerial1; - set => (_internal as Data.Models.Metadata.Serials)?.DigitalSerial1 = value; + get => _internal.DigitalSerial1; + set => _internal.DigitalSerial1 = value; } public string? DigitalSerial2 { - get => (_internal as Data.Models.Metadata.Serials)?.DigitalSerial2; - set => (_internal as Data.Models.Metadata.Serials)?.DigitalSerial2 = value; + get => _internal.DigitalSerial2; + set => _internal.DigitalSerial2 = value; } /// /> @@ -47,56 +47,56 @@ namespace SabreTools.Metadata.DatItems.Formats public string? LockoutSerial { - get => (_internal as Data.Models.Metadata.Serials)?.LockoutSerial; - set => (_internal as Data.Models.Metadata.Serials)?.LockoutSerial = value; + get => _internal.LockoutSerial; + set => _internal.LockoutSerial = value; } public string? MediaSerial1 { - get => (_internal as Data.Models.Metadata.Serials)?.MediaSerial1; - set => (_internal as Data.Models.Metadata.Serials)?.MediaSerial1 = value; + get => _internal.MediaSerial1; + set => _internal.MediaSerial1 = value; } public string? MediaSerial2 { - get => (_internal as Data.Models.Metadata.Serials)?.MediaSerial2; - set => (_internal as Data.Models.Metadata.Serials)?.MediaSerial2 = value; + get => _internal.MediaSerial2; + set => _internal.MediaSerial2 = value; } public string? MediaSerial3 { - get => (_internal as Data.Models.Metadata.Serials)?.MediaSerial3; - set => (_internal as Data.Models.Metadata.Serials)?.MediaSerial3 = value; + get => _internal.MediaSerial3; + set => _internal.MediaSerial3 = value; } public string? MediaStamp { - get => (_internal as Data.Models.Metadata.Serials)?.MediaStamp; - set => (_internal as Data.Models.Metadata.Serials)?.MediaStamp = value; + get => _internal.MediaStamp; + set => _internal.MediaStamp = value; } public string? PCBSerial { - get => (_internal as Data.Models.Metadata.Serials)?.PCBSerial; - set => (_internal as Data.Models.Metadata.Serials)?.PCBSerial = value; + get => _internal.PCBSerial; + set => _internal.PCBSerial = value; } public string? RomChipSerial1 { - get => (_internal as Data.Models.Metadata.Serials)?.RomChipSerial1; - set => (_internal as Data.Models.Metadata.Serials)?.RomChipSerial1 = value; + get => _internal.RomChipSerial1; + set => _internal.RomChipSerial1 = value; } public string? RomChipSerial2 { - get => (_internal as Data.Models.Metadata.Serials)?.RomChipSerial2; - set => (_internal as Data.Models.Metadata.Serials)?.RomChipSerial2 = value; + get => _internal.RomChipSerial2; + set => _internal.RomChipSerial2 = value; } public string? SaveChipSerial { - get => (_internal as Data.Models.Metadata.Serials)?.SaveChipSerial; - set => (_internal as Data.Models.Metadata.Serials)?.SaveChipSerial = value; + get => _internal.SaveChipSerial; + set => _internal.SaveChipSerial = value; } #endregion @@ -132,7 +132,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.Serials GetInternalClone() - => (_internal as Data.Models.Metadata.Serials)?.Clone() as Data.Models.Metadata.Serials ?? new(); + => _internal.Clone() as Data.Models.Metadata.Serials ?? new(); #endregion @@ -147,7 +147,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Serials otherSerials) - return ((Data.Models.Metadata.Serials)_internal).Equals((Data.Models.Metadata.Serials)otherSerials._internal); + return _internal.Equals(otherSerials._internal); // Everything else fails return false; @@ -162,7 +162,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Serials otherSerials) - return ((Data.Models.Metadata.Serials)_internal).Equals((Data.Models.Metadata.Serials)otherSerials._internal); + return _internal.Equals(otherSerials._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs b/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs index 4dd14c9b..d4756b78 100644 --- a/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs +++ b/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs @@ -17,14 +17,14 @@ namespace SabreTools.Metadata.DatItems.Formats public string? Name { - get => (_internal as Data.Models.Metadata.SharedFeat)?.Name; - set => (_internal as Data.Models.Metadata.SharedFeat)?.Name = value; + get => _internal.Name; + set => _internal.Name = value; } public string? Value { - get => (_internal as Data.Models.Metadata.SharedFeat)?.Value; - set => (_internal as Data.Models.Metadata.SharedFeat)?.Value = value; + get => _internal.Value; + set => _internal.Value = value; } #endregion @@ -60,7 +60,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.SharedFeat GetInternalClone() - => (_internal as Data.Models.Metadata.SharedFeat)?.Clone() as Data.Models.Metadata.SharedFeat ?? new(); + => _internal.Clone() as Data.Models.Metadata.SharedFeat ?? new(); #endregion @@ -75,7 +75,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is SharedFeat otherSharedFeat) - return ((Data.Models.Metadata.SharedFeat)_internal).Equals((Data.Models.Metadata.SharedFeat)otherSharedFeat._internal); + return _internal.Equals(otherSharedFeat._internal); // Everything else fails return false; @@ -90,7 +90,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is SharedFeat otherSharedFeat) - return ((Data.Models.Metadata.SharedFeat)_internal).Equals((Data.Models.Metadata.SharedFeat)otherSharedFeat._internal); + return _internal.Equals(otherSharedFeat._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/Slot.cs b/SabreTools.Metadata.DatItems/Formats/Slot.cs index 7c68dc38..50efb538 100644 --- a/SabreTools.Metadata.DatItems/Formats/Slot.cs +++ b/SabreTools.Metadata.DatItems/Formats/Slot.cs @@ -18,8 +18,8 @@ namespace SabreTools.Metadata.DatItems.Formats public string? Name { - get => (_internal as Data.Models.Metadata.Slot)?.Name; - set => (_internal as Data.Models.Metadata.Slot)?.Name = value; + get => _internal.Name; + set => _internal.Name = value; } public SlotOption[]? SlotOption { get; set; } @@ -66,7 +66,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.Slot GetInternalClone() { - var slotItem = (_internal as Data.Models.Metadata.Slot)?.Clone() as Data.Models.Metadata.Slot ?? new(); + var slotItem = _internal.Clone() as Data.Models.Metadata.Slot ?? new(); if (SlotOption is not null) slotItem.SlotOption = Array.ConvertAll(SlotOption, slotOption => slotOption.GetInternalClone()); @@ -87,7 +87,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Slot otherSlot) - return ((Data.Models.Metadata.Slot)_internal).Equals((Data.Models.Metadata.Slot)otherSlot._internal); + return _internal.Equals(otherSlot._internal); // Everything else fails return false; @@ -102,7 +102,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Slot otherSlot) - return ((Data.Models.Metadata.Slot)_internal).Equals((Data.Models.Metadata.Slot)otherSlot._internal); + return _internal.Equals(otherSlot._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/SlotOption.cs b/SabreTools.Metadata.DatItems/Formats/SlotOption.cs index a2e113c6..ee0bac00 100644 --- a/SabreTools.Metadata.DatItems/Formats/SlotOption.cs +++ b/SabreTools.Metadata.DatItems/Formats/SlotOption.cs @@ -13,14 +13,14 @@ namespace SabreTools.Metadata.DatItems.Formats public bool? Default { - get => (_internal as Data.Models.Metadata.SlotOption)?.Default; - set => (_internal as Data.Models.Metadata.SlotOption)?.Default = value; + get => _internal.Default; + set => _internal.Default = value; } public string? DevName { - get => (_internal as Data.Models.Metadata.SlotOption)?.DevName; - set => (_internal as Data.Models.Metadata.SlotOption)?.DevName = value; + get => _internal.DevName; + set => _internal.DevName = value; } /// /> @@ -29,8 +29,8 @@ namespace SabreTools.Metadata.DatItems.Formats public string? Name { - get => (_internal as Data.Models.Metadata.SlotOption)?.Name; - set => (_internal as Data.Models.Metadata.SlotOption)?.Name = value; + get => _internal.Name; + set => _internal.Name = value; } #endregion @@ -66,7 +66,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.SlotOption GetInternalClone() - => (_internal as Data.Models.Metadata.SlotOption)?.Clone() as Data.Models.Metadata.SlotOption ?? new(); + => _internal.Clone() as Data.Models.Metadata.SlotOption ?? new(); #endregion @@ -81,7 +81,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is SlotOption otherSlotOption) - return ((Data.Models.Metadata.SlotOption)_internal).Equals((Data.Models.Metadata.SlotOption)otherSlotOption._internal); + return _internal.Equals(otherSlotOption._internal); // Everything else fails return false; @@ -96,7 +96,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is SlotOption otherSlotOption) - return ((Data.Models.Metadata.SlotOption)_internal).Equals((Data.Models.Metadata.SlotOption)otherSlotOption._internal); + return _internal.Equals(otherSlotOption._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs b/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs index bba7dcda..3a9bd32e 100644 --- a/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs +++ b/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs @@ -13,8 +13,8 @@ namespace SabreTools.Metadata.DatItems.Formats public string? Filter { - get => (_internal as Data.Models.Metadata.SoftwareList)?.Filter; - set => (_internal as Data.Models.Metadata.SoftwareList)?.Filter = value; + get => _internal.Filter; + set => _internal.Filter = value; } /// /> @@ -23,20 +23,20 @@ namespace SabreTools.Metadata.DatItems.Formats public string? Name { - get => (_internal as Data.Models.Metadata.SoftwareList)?.Name; - set => (_internal as Data.Models.Metadata.SoftwareList)?.Name = value; + get => _internal.Name; + set => _internal.Name = value; } public Data.Models.Metadata.SoftwareListStatus? Status { - get => (_internal as Data.Models.Metadata.SoftwareList)?.Status; - set => (_internal as Data.Models.Metadata.SoftwareList)?.Status = value; + get => _internal.Status; + set => _internal.Status = value; } public string? Tag { - get => (_internal as Data.Models.Metadata.SoftwareList)?.Tag; - set => (_internal as Data.Models.Metadata.SoftwareList)?.Tag = value; + get => _internal.Tag; + set => _internal.Tag = value; } #endregion @@ -72,7 +72,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.SoftwareList GetInternalClone() - => (_internal as Data.Models.Metadata.SoftwareList)?.Clone() as Data.Models.Metadata.SoftwareList ?? new(); + => _internal.Clone() as Data.Models.Metadata.SoftwareList ?? new(); #endregion @@ -87,7 +87,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is SoftwareList otherSoftwareList) - return ((Data.Models.Metadata.SoftwareList)_internal).Equals((Data.Models.Metadata.SoftwareList)otherSoftwareList._internal); + return _internal.Equals(otherSoftwareList._internal); // Everything else fails return false; @@ -102,7 +102,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is SoftwareList otherSoftwareList) - return ((Data.Models.Metadata.SoftwareList)_internal).Equals((Data.Models.Metadata.SoftwareList)otherSoftwareList._internal); + return _internal.Equals(otherSoftwareList._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/Sound.cs b/SabreTools.Metadata.DatItems/Formats/Sound.cs index 7e89068c..d84bfe02 100644 --- a/SabreTools.Metadata.DatItems/Formats/Sound.cs +++ b/SabreTools.Metadata.DatItems/Formats/Sound.cs @@ -13,8 +13,8 @@ namespace SabreTools.Metadata.DatItems.Formats public long? Channels { - get => (_internal as Data.Models.Metadata.Sound)?.Channels; - set => (_internal as Data.Models.Metadata.Sound)?.Channels = value; + get => _internal.Channels; + set => _internal.Channels = value; } /// /> @@ -54,7 +54,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.Sound GetInternalClone() - => (_internal as Data.Models.Metadata.Sound)?.Clone() as Data.Models.Metadata.Sound ?? new(); + => _internal.Clone() as Data.Models.Metadata.Sound ?? new(); #endregion @@ -69,7 +69,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Sound otherSound) - return ((Data.Models.Metadata.Sound)_internal).Equals((Data.Models.Metadata.Sound)otherSound._internal); + return _internal.Equals(otherSound._internal); // Everything else fails return false; @@ -84,7 +84,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is Sound otherSound) - return ((Data.Models.Metadata.Sound)_internal).Equals((Data.Models.Metadata.Sound)otherSound._internal); + return _internal.Equals(otherSound._internal); // Everything else fails return false; diff --git a/SabreTools.Metadata.DatItems/Formats/SourceDetails.cs b/SabreTools.Metadata.DatItems/Formats/SourceDetails.cs index 1004e909..f012b40b 100644 --- a/SabreTools.Metadata.DatItems/Formats/SourceDetails.cs +++ b/SabreTools.Metadata.DatItems/Formats/SourceDetails.cs @@ -13,44 +13,44 @@ namespace SabreTools.Metadata.DatItems.Formats public string? AppendToNumber { - get => (_internal as Data.Models.Metadata.SourceDetails)?.AppendToNumber; - set => (_internal as Data.Models.Metadata.SourceDetails)?.AppendToNumber = value; + get => _internal.AppendToNumber; + set => _internal.AppendToNumber = value; } public string? Comment1 { - get => (_internal as Data.Models.Metadata.SourceDetails)?.Comment1; - set => (_internal as Data.Models.Metadata.SourceDetails)?.Comment1 = value; + get => _internal.Comment1; + set => _internal.Comment1 = value; } public string? Comment2 { - get => (_internal as Data.Models.Metadata.SourceDetails)?.Comment2; - set => (_internal as Data.Models.Metadata.SourceDetails)?.Comment2 = value; + get => _internal.Comment2; + set => _internal.Comment2 = value; } public string? DumpDate { - get => (_internal as Data.Models.Metadata.SourceDetails)?.DumpDate; - set => (_internal as Data.Models.Metadata.SourceDetails)?.DumpDate = value; + get => _internal.DumpDate; + set => _internal.DumpDate = value; } public bool? DumpDateInfo { - get => (_internal as Data.Models.Metadata.SourceDetails)?.DumpDateInfo; - set => (_internal as Data.Models.Metadata.SourceDetails)?.DumpDateInfo = value; + get => _internal.DumpDateInfo; + set => _internal.DumpDateInfo = value; } public string? Dumper { - get => (_internal as Data.Models.Metadata.SourceDetails)?.Dumper; - set => (_internal as Data.Models.Metadata.SourceDetails)?.Dumper = value; + get => _internal.Dumper; + set => _internal.Dumper = value; } public string? Id { - get => (_internal as Data.Models.Metadata.SourceDetails)?.Id; - set => (_internal as Data.Models.Metadata.SourceDetails)?.Id = value; + get => _internal.Id; + set => _internal.Id = value; } /// /> @@ -59,104 +59,104 @@ namespace SabreTools.Metadata.DatItems.Formats public string? Link1 { - get => (_internal as Data.Models.Metadata.SourceDetails)?.Link1; - set => (_internal as Data.Models.Metadata.SourceDetails)?.Link1 = value; + get => _internal.Link1; + set => _internal.Link1 = value; } public bool? Link1Public { - get => (_internal as Data.Models.Metadata.SourceDetails)?.Link1Public; - set => (_internal as Data.Models.Metadata.SourceDetails)?.Link1Public = value; + get => _internal.Link1Public; + set => _internal.Link1Public = value; } public string? Link2 { - get => (_internal as Data.Models.Metadata.SourceDetails)?.Link2; - set => (_internal as Data.Models.Metadata.SourceDetails)?.Link2 = value; + get => _internal.Link2; + set => _internal.Link2 = value; } public bool? Link2Public { - get => (_internal as Data.Models.Metadata.SourceDetails)?.Link2Public; - set => (_internal as Data.Models.Metadata.SourceDetails)?.Link2Public = value; + get => _internal.Link2Public; + set => _internal.Link2Public = value; } public string? Link3 { - get => (_internal as Data.Models.Metadata.SourceDetails)?.Link3; - set => (_internal as Data.Models.Metadata.SourceDetails)?.Link3 = value; + get => _internal.Link3; + set => _internal.Link3 = value; } public bool? Link3Public { - get => (_internal as Data.Models.Metadata.SourceDetails)?.Link3Public; - set => (_internal as Data.Models.Metadata.SourceDetails)?.Link3Public = value; + get => _internal.Link3Public; + set => _internal.Link3Public = value; } public string? MediaTitle { - get => (_internal as Data.Models.Metadata.SourceDetails)?.MediaTitle; - set => (_internal as Data.Models.Metadata.SourceDetails)?.MediaTitle = value; + get => _internal.MediaTitle; + set => _internal.MediaTitle = value; } public bool? Nodump { - get => (_internal as Data.Models.Metadata.SourceDetails)?.Nodump; - set => (_internal as Data.Models.Metadata.SourceDetails)?.Nodump = value; + get => _internal.Nodump; + set => _internal.Nodump = value; } public string? Origin { - get => (_internal as Data.Models.Metadata.SourceDetails)?.Origin; - set => (_internal as Data.Models.Metadata.SourceDetails)?.Origin = value; + get => _internal.Origin; + set => _internal.Origin = value; } public string? OriginalFormat { - get => (_internal as Data.Models.Metadata.SourceDetails)?.OriginalFormat; - set => (_internal as Data.Models.Metadata.SourceDetails)?.OriginalFormat = value; + get => _internal.OriginalFormat; + set => _internal.OriginalFormat = value; } public string? Project { - get => (_internal as Data.Models.Metadata.SourceDetails)?.Project; - set => (_internal as Data.Models.Metadata.SourceDetails)?.Project = value; + get => _internal.Project; + set => _internal.Project = value; } public string? Region { - get => (_internal as Data.Models.Metadata.SourceDetails)?.Region; - set => (_internal as Data.Models.Metadata.SourceDetails)?.Region = value; + get => _internal.Region; + set => _internal.Region = value; } public string? ReleaseDate { - get => (_internal as Data.Models.Metadata.SourceDetails)?.ReleaseDate; - set => (_internal as Data.Models.Metadata.SourceDetails)?.ReleaseDate = value; + get => _internal.ReleaseDate; + set => _internal.ReleaseDate = value; } public bool? ReleaseDateInfo { - get => (_internal as Data.Models.Metadata.SourceDetails)?.ReleaseDateInfo; - set => (_internal as Data.Models.Metadata.SourceDetails)?.ReleaseDateInfo = value; + get => _internal.ReleaseDateInfo; + set => _internal.ReleaseDateInfo = value; } public string? RomInfo { - get => (_internal as Data.Models.Metadata.SourceDetails)?.RomInfo; - set => (_internal as Data.Models.Metadata.SourceDetails)?.RomInfo = value; + get => _internal.RomInfo; + set => _internal.RomInfo = value; } public string? Section { - get => (_internal as Data.Models.Metadata.SourceDetails)?.Section; - set => (_internal as Data.Models.Metadata.SourceDetails)?.Section = value; + get => _internal.Section; + set => _internal.Section = value; } public string? Tool { - get => (_internal as Data.Models.Metadata.SourceDetails)?.Tool; - set => (_internal as Data.Models.Metadata.SourceDetails)?.Tool = value; + get => _internal.Tool; + set => _internal.Tool = value; } #endregion @@ -192,7 +192,7 @@ namespace SabreTools.Metadata.DatItems.Formats /// public override Data.Models.Metadata.SourceDetails GetInternalClone() - => (_internal as Data.Models.Metadata.SourceDetails)?.Clone() as Data.Models.Metadata.SourceDetails ?? new(); + => _internal.Clone() as Data.Models.Metadata.SourceDetails ?? new(); #endregion @@ -207,7 +207,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is SourceDetails otherSourceDetails) - return ((Data.Models.Metadata.SourceDetails)_internal).Equals((Data.Models.Metadata.SourceDetails)otherSourceDetails._internal); + return _internal.Equals(otherSourceDetails._internal); // Everything else fails return false; @@ -222,7 +222,7 @@ namespace SabreTools.Metadata.DatItems.Formats // If the type matches if (other is SourceDetails otherSourceDetails) - return ((Data.Models.Metadata.SourceDetails)_internal).Equals((Data.Models.Metadata.SourceDetails)otherSourceDetails._internal); + return _internal.Equals(otherSourceDetails._internal); // Everything else fails return false; From 337d4c0fedbca18ba8ad9d1d413dd1660229e132 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sun, 5 Apr 2026 01:51:07 -0400 Subject: [PATCH 111/142] Metadata DatItem should be abstract --- SabreTools.Data.Models/Metadata/DatItem.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SabreTools.Data.Models/Metadata/DatItem.cs b/SabreTools.Data.Models/Metadata/DatItem.cs index 13dd2bbb..8b3c2e7e 100644 --- a/SabreTools.Data.Models/Metadata/DatItem.cs +++ b/SabreTools.Data.Models/Metadata/DatItem.cs @@ -6,10 +6,10 @@ namespace SabreTools.Data.Models.Metadata /// /// Format-agnostic representation of item data /// - public class DatItem + public abstract class DatItem { /// - /// Quick accessor to item type, if it exists + /// Quick accessor to item type /// [JsonProperty("itemtype", DefaultValueHandling = DefaultValueHandling.Ignore), XmlElement("itemtype")] public ItemType ItemType { get; protected set; } From 0eb5da5fd4bc9657f441a439fb85bf0a2be7cd61 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sun, 5 Apr 2026 01:59:34 -0400 Subject: [PATCH 112/142] Default sort is never done, so CompareTo is useless --- .../DatItemTests.cs | 60 ------------------- SabreTools.Metadata.DatItems/DatItem.cs | 22 +------ SabreTools.Metadata.DatItems/DatItemT.cs | 22 +------ 3 files changed, 2 insertions(+), 102 deletions(-) diff --git a/SabreTools.Metadata.DatItems.Test/DatItemTests.cs b/SabreTools.Metadata.DatItems.Test/DatItemTests.cs index e81048fe..d0db98e5 100644 --- a/SabreTools.Metadata.DatItems.Test/DatItemTests.cs +++ b/SabreTools.Metadata.DatItems.Test/DatItemTests.cs @@ -194,66 +194,6 @@ namespace SabreTools.Metadata.DatItems.Test #endregion - #region CompareTo - - [Fact] - public void CompareTo_NullOther_Returns1() - { - DatItem self = new Rom(); - DatItem? other = null; - - int actual = self.CompareTo(other); - Assert.Equal(1, actual); - } - - [Fact] - public void CompareTo_DifferentOther_Returns1() - { - DatItem self = new Rom { Name = "name" }; - - DatItem? other = new Disk { Name = "name" }; - - int actual = self.CompareTo(other); - Assert.Equal(1, actual); - } - - [Fact] - public void CompareTo_Empty_Returns1() - { - DatItem self = new Rom(); - DatItem? other = new Rom(); - - int actual = self.CompareTo(other); - Assert.Equal(1, actual); - } - - [Theory] - [InlineData(null, null, 0)] - [InlineData("name", null, 1)] - [InlineData("name", "other", -1)] - [InlineData(null, "name", -1)] - [InlineData("other", "name", 1)] - [InlineData("name", "name", 0)] - public void CompareTo_NamesOnly(string? selfName, string? otherName, int expected) - { - DatItem self = new Rom - { - Name = selfName, - CRC = "DEADBEEF" - }; - - DatItem? other = new Rom - { - Name = otherName, - CRC = "DEADBEEF" - }; - - int actual = self.CompareTo(other); - Assert.Equal(expected, actual); - } - - #endregion - #region Equals [Fact] diff --git a/SabreTools.Metadata.DatItems/DatItem.cs b/SabreTools.Metadata.DatItems/DatItem.cs index b64e7b36..786515ee 100644 --- a/SabreTools.Metadata.DatItems/DatItem.cs +++ b/SabreTools.Metadata.DatItems/DatItem.cs @@ -52,7 +52,7 @@ namespace SabreTools.Metadata.DatItems [XmlInclude(typeof(SoftwareList))] [XmlInclude(typeof(Sound))] [XmlInclude(typeof(SourceDetails))] - public abstract class DatItem : ICloneable, IComparable, IEquatable + public abstract class DatItem : ICloneable, IEquatable { #region Properties @@ -137,26 +137,6 @@ namespace SabreTools.Metadata.DatItems #region Comparision Methods - /// - public int CompareTo(DatItem? other) - { - // If the other item doesn't exist - if (other is null) - return 1; - - // Get the names to avoid changing values - string? selfName = GetName(); - string? otherName = other.GetName(); - - // If the names are equal - if (selfName == otherName) - return Equals(other) ? 0 : 1; - - // If `otherName` is null, Compare will return > 0 - // If `selfName` is null, Compare will return < 0 - return string.Compare(selfName, otherName, StringComparison.Ordinal); - } - /// /// Determine if an item is a duplicate using partial matching logic /// diff --git a/SabreTools.Metadata.DatItems/DatItemT.cs b/SabreTools.Metadata.DatItems/DatItemT.cs index dc34727a..1f7b50ed 100644 --- a/SabreTools.Metadata.DatItems/DatItemT.cs +++ b/SabreTools.Metadata.DatItems/DatItemT.cs @@ -6,7 +6,7 @@ namespace SabreTools.Metadata.DatItems /// /// Base class for all items included in a set that are backed by an internal model /// - public abstract class DatItem : DatItem, IEquatable>, IComparable>, ICloneable + public abstract class DatItem : DatItem, ICloneable, IEquatable> where T : Data.Models.Metadata.DatItem, new() { #region Private Fields @@ -54,26 +54,6 @@ namespace SabreTools.Metadata.DatItems #region Comparision Methods - /// - public int CompareTo(DatItem? other) - { - // If the other item doesn't exist - if (other is null) - return 1; - - // Get the names to avoid changing values - string? selfName = GetName(); - string? otherName = other.GetName(); - - // If the names are equal - if (selfName == otherName) - return Equals(other) ? 0 : 1; - - // If `otherName` is null, Compare will return > 0 - // If `selfName` is null, Compare will return < 0 - return string.Compare(selfName, otherName, StringComparison.Ordinal); - } - /// /// Determine if an item is a duplicate using partial matching logic /// From 3caf65822f754234b0f2d3f37763210b29574c53 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sun, 5 Apr 2026 02:09:11 -0400 Subject: [PATCH 113/142] Forgot to clean up some typing --- SabreTools.Metadata.DatItems.Test/DatItemTests.cs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/SabreTools.Metadata.DatItems.Test/DatItemTests.cs b/SabreTools.Metadata.DatItems.Test/DatItemTests.cs index d0db98e5..790bc31c 100644 --- a/SabreTools.Metadata.DatItems.Test/DatItemTests.cs +++ b/SabreTools.Metadata.DatItems.Test/DatItemTests.cs @@ -37,8 +37,8 @@ namespace SabreTools.Metadata.DatItems.Test public string? Name { - get => (_internal as TestDatItemModel)?.Name; - set => (_internal as TestDatItemModel)?.Name = value; + get => _internal?.Name; + set => _internal?.Name = value; } public TestDatItem() { } @@ -52,7 +52,7 @@ namespace SabreTools.Metadata.DatItems.Test /// public override TestDatItemModel GetInternalClone() { - return (_internal as TestDatItemModel)?.Clone() as TestDatItemModel ?? new(); + return _internal?.Clone() as TestDatItemModel ?? new(); } /// @@ -70,7 +70,7 @@ namespace SabreTools.Metadata.DatItems.Test // If the type matches if (other is TestDatItem otherTestDatItem) - return ((TestDatItemModel)_internal).Equals((TestDatItemModel)otherTestDatItem._internal); + return _internal.Equals(otherTestDatItem._internal); // Everything else fails return false; @@ -85,7 +85,7 @@ namespace SabreTools.Metadata.DatItems.Test // If the type matches if (other is TestDatItem otherTestDatItem) - return ((TestDatItemModel)_internal).Equals((TestDatItemModel)otherTestDatItem._internal); + return _internal.Equals(otherTestDatItem._internal); // Everything else fails return false; From 742c991debb1be9cc4a3e0e4d617cc7f76c83dee Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sun, 5 Apr 2026 02:24:05 -0400 Subject: [PATCH 114/142] Remove now-redundant Equals methods --- SabreTools.Metadata.DatItems.Test/DatItemTests.cs | 15 --------------- SabreTools.Metadata.DatItems/DatItemT.cs | 13 +------------ SabreTools.Metadata.DatItems/Formats/Adjuster.cs | 15 --------------- SabreTools.Metadata.DatItems/Formats/Analog.cs | 15 --------------- SabreTools.Metadata.DatItems/Formats/Archive.cs | 15 --------------- SabreTools.Metadata.DatItems/Formats/BiosSet.cs | 15 --------------- SabreTools.Metadata.DatItems/Formats/Blank.cs | 15 --------------- SabreTools.Metadata.DatItems/Formats/Chip.cs | 15 --------------- SabreTools.Metadata.DatItems/Formats/Condition.cs | 15 --------------- .../Formats/ConfLocation.cs | 15 --------------- .../Formats/ConfSetting.cs | 15 --------------- .../Formats/Configuration.cs | 15 --------------- SabreTools.Metadata.DatItems/Formats/Control.cs | 15 --------------- SabreTools.Metadata.DatItems/Formats/DataArea.cs | 15 --------------- SabreTools.Metadata.DatItems/Formats/Device.cs | 15 --------------- SabreTools.Metadata.DatItems/Formats/DeviceRef.cs | 15 --------------- .../Formats/DipLocation.cs | 15 --------------- SabreTools.Metadata.DatItems/Formats/DipSwitch.cs | 15 --------------- SabreTools.Metadata.DatItems/Formats/DipValue.cs | 15 --------------- SabreTools.Metadata.DatItems/Formats/Disk.cs | 15 --------------- SabreTools.Metadata.DatItems/Formats/DiskArea.cs | 15 --------------- SabreTools.Metadata.DatItems/Formats/Display.cs | 15 --------------- SabreTools.Metadata.DatItems/Formats/Driver.cs | 15 --------------- SabreTools.Metadata.DatItems/Formats/Extension.cs | 15 --------------- SabreTools.Metadata.DatItems/Formats/Feature.cs | 15 --------------- SabreTools.Metadata.DatItems/Formats/Info.cs | 15 --------------- SabreTools.Metadata.DatItems/Formats/Input.cs | 15 --------------- SabreTools.Metadata.DatItems/Formats/Instance.cs | 15 --------------- SabreTools.Metadata.DatItems/Formats/Media.cs | 15 --------------- SabreTools.Metadata.DatItems/Formats/Part.cs | 15 --------------- .../Formats/PartFeature.cs | 15 --------------- SabreTools.Metadata.DatItems/Formats/Port.cs | 15 --------------- SabreTools.Metadata.DatItems/Formats/RamOption.cs | 15 --------------- SabreTools.Metadata.DatItems/Formats/Release.cs | 15 --------------- .../Formats/ReleaseDetails.cs | 15 --------------- SabreTools.Metadata.DatItems/Formats/Rom.cs | 15 --------------- SabreTools.Metadata.DatItems/Formats/Sample.cs | 15 --------------- SabreTools.Metadata.DatItems/Formats/Serials.cs | 15 --------------- .../Formats/SharedFeat.cs | 15 --------------- SabreTools.Metadata.DatItems/Formats/Slot.cs | 15 --------------- .../Formats/SlotOption.cs | 15 --------------- .../Formats/SoftwareList.cs | 15 --------------- SabreTools.Metadata.DatItems/Formats/Sound.cs | 15 --------------- .../Formats/SourceDetails.cs | 15 --------------- 44 files changed, 1 insertion(+), 657 deletions(-) diff --git a/SabreTools.Metadata.DatItems.Test/DatItemTests.cs b/SabreTools.Metadata.DatItems.Test/DatItemTests.cs index 790bc31c..05bb5531 100644 --- a/SabreTools.Metadata.DatItems.Test/DatItemTests.cs +++ b/SabreTools.Metadata.DatItems.Test/DatItemTests.cs @@ -75,21 +75,6 @@ namespace SabreTools.Metadata.DatItems.Test // Everything else fails return false; } - - /// - public override bool Equals(DatItem? other) - { - // If the other value is invalid - if (other is null) - return false; - - // If the type matches - if (other is TestDatItem otherTestDatItem) - return _internal.Equals(otherTestDatItem._internal); - - // Everything else fails - return false; - } } #endregion diff --git a/SabreTools.Metadata.DatItems/DatItemT.cs b/SabreTools.Metadata.DatItems/DatItemT.cs index 1f7b50ed..32f5a2f4 100644 --- a/SabreTools.Metadata.DatItems/DatItemT.cs +++ b/SabreTools.Metadata.DatItems/DatItemT.cs @@ -6,7 +6,7 @@ namespace SabreTools.Metadata.DatItems /// /// Base class for all items included in a set that are backed by an internal model /// - public abstract class DatItem : DatItem, ICloneable, IEquatable> + public abstract class DatItem : DatItem, ICloneable where T : Data.Models.Metadata.DatItem, new() { #region Private Fields @@ -52,17 +52,6 @@ namespace SabreTools.Metadata.DatItems #endregion - #region Comparision Methods - - /// - /// Determine if an item is a duplicate using partial matching logic - /// - /// DatItem to use as a baseline - /// True if the items are duplicates, false otherwise - public abstract bool Equals(DatItem? other); - - #endregion - #region Manipulation /// diff --git a/SabreTools.Metadata.DatItems/Formats/Adjuster.cs b/SabreTools.Metadata.DatItems/Formats/Adjuster.cs index 40ea4aed..4ec34bca 100644 --- a/SabreTools.Metadata.DatItems/Formats/Adjuster.cs +++ b/SabreTools.Metadata.DatItems/Formats/Adjuster.cs @@ -98,21 +98,6 @@ namespace SabreTools.Metadata.DatItems.Formats return false; } - /// - public override bool Equals(DatItem? other) - { - // If the other value is invalid - if (other is null) - return false; - - // If the type matches - if (other is Adjuster otherAdjuster) - return _internal.Equals(otherAdjuster._internal); - - // Everything else fails - return false; - } - #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/Analog.cs b/SabreTools.Metadata.DatItems/Formats/Analog.cs index 364db483..df3362ff 100644 --- a/SabreTools.Metadata.DatItems/Formats/Analog.cs +++ b/SabreTools.Metadata.DatItems/Formats/Analog.cs @@ -75,21 +75,6 @@ namespace SabreTools.Metadata.DatItems.Formats return false; } - /// - public override bool Equals(DatItem? other) - { - // If the other value is invalid - if (other is null) - return false; - - // If the type matches - if (other is Analog otherAnalog) - return _internal.Equals(otherAnalog._internal); - - // Everything else fails - return false; - } - #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/Archive.cs b/SabreTools.Metadata.DatItems/Formats/Archive.cs index 5e68391a..ec3ef1e4 100644 --- a/SabreTools.Metadata.DatItems/Formats/Archive.cs +++ b/SabreTools.Metadata.DatItems/Formats/Archive.cs @@ -266,21 +266,6 @@ namespace SabreTools.Metadata.DatItems.Formats return false; } - /// - public override bool Equals(DatItem? other) - { - // If the other value is invalid - if (other is null) - return false; - - // If the type matches - if (other is Archive otherArchive) - return _internal.Equals(otherArchive._internal); - - // Everything else fails - return false; - } - #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/BiosSet.cs b/SabreTools.Metadata.DatItems/Formats/BiosSet.cs index 269c09e0..011b338b 100644 --- a/SabreTools.Metadata.DatItems/Formats/BiosSet.cs +++ b/SabreTools.Metadata.DatItems/Formats/BiosSet.cs @@ -87,21 +87,6 @@ namespace SabreTools.Metadata.DatItems.Formats return false; } - /// - public override bool Equals(DatItem? other) - { - // If the other value is invalid - if (other is null) - return false; - - // If the type matches - if (other is BiosSet otherBiosSet) - return _internal.Equals(otherBiosSet._internal); - - // Everything else fails - return false; - } - #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/Blank.cs b/SabreTools.Metadata.DatItems/Formats/Blank.cs index ecd185ce..90b57904 100644 --- a/SabreTools.Metadata.DatItems/Formats/Blank.cs +++ b/SabreTools.Metadata.DatItems/Formats/Blank.cs @@ -69,21 +69,6 @@ namespace SabreTools.Metadata.DatItems.Formats return false; } - /// - public override bool Equals(DatItem? other) - { - // If the other value is invalid - if (other is null) - return false; - - // If the type matches - if (other is Blank otherBlank) - return _internal.Equals(otherBlank._internal); - - // Everything else fails - return false; - } - #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/Chip.cs b/SabreTools.Metadata.DatItems/Formats/Chip.cs index 0958c577..908fc8a0 100644 --- a/SabreTools.Metadata.DatItems/Formats/Chip.cs +++ b/SabreTools.Metadata.DatItems/Formats/Chip.cs @@ -105,21 +105,6 @@ namespace SabreTools.Metadata.DatItems.Formats return false; } - /// - public override bool Equals(DatItem? other) - { - // If the other value is invalid - if (other is null) - return false; - - // If the type matches - if (other is Chip otherChip) - return _internal.Equals(otherChip._internal); - - // Everything else fails - return false; - } - #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/Condition.cs b/SabreTools.Metadata.DatItems/Formats/Condition.cs index 0f22c573..6a9b8737 100644 --- a/SabreTools.Metadata.DatItems/Formats/Condition.cs +++ b/SabreTools.Metadata.DatItems/Formats/Condition.cs @@ -93,21 +93,6 @@ namespace SabreTools.Metadata.DatItems.Formats return false; } - /// - public override bool Equals(DatItem? other) - { - // If the other value is invalid - if (other is null) - return false; - - // If the type matches - if (other is Condition otherCondition) - return _internal.Equals(otherCondition._internal); - - // Everything else fails - return false; - } - #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs b/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs index 8f548bd3..86a44ae8 100644 --- a/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs +++ b/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs @@ -87,21 +87,6 @@ namespace SabreTools.Metadata.DatItems.Formats return false; } - /// - public override bool Equals(DatItem? other) - { - // If the other value is invalid - if (other is null) - return false; - - // If the type matches - if (other is ConfLocation otherConfLocation) - return _internal.Equals(otherConfLocation._internal); - - // Everything else fails - return false; - } - #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs b/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs index 9eff671b..df73c18d 100644 --- a/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs +++ b/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs @@ -104,21 +104,6 @@ namespace SabreTools.Metadata.DatItems.Formats return false; } - /// - public override bool Equals(DatItem? other) - { - // If the other value is invalid - if (other is null) - return false; - - // If the type matches - if (other is ConfSetting otherConfSetting) - return _internal.Equals(otherConfSetting._internal); - - // Everything else fails - return false; - } - #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/Configuration.cs b/SabreTools.Metadata.DatItems/Formats/Configuration.cs index ebf16b55..ab991b74 100644 --- a/SabreTools.Metadata.DatItems/Formats/Configuration.cs +++ b/SabreTools.Metadata.DatItems/Formats/Configuration.cs @@ -127,21 +127,6 @@ namespace SabreTools.Metadata.DatItems.Formats return false; } - /// - public override bool Equals(DatItem? other) - { - // If the other value is invalid - if (other is null) - return false; - - // If the type matches - if (other is Configuration otherConfiguration) - return _internal.Equals(otherConfiguration._internal); - - // Everything else fails - return false; - } - #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/Control.cs b/SabreTools.Metadata.DatItems/Formats/Control.cs index c59073dc..5ae2796e 100644 --- a/SabreTools.Metadata.DatItems/Formats/Control.cs +++ b/SabreTools.Metadata.DatItems/Formats/Control.cs @@ -141,21 +141,6 @@ namespace SabreTools.Metadata.DatItems.Formats return false; } - /// - public override bool Equals(DatItem? other) - { - // If the other value is invalid - if (other is null) - return false; - - // If the type matches - if (other is Control otherControl) - return _internal.Equals(otherControl._internal); - - // Everything else fails - return false; - } - #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/DataArea.cs b/SabreTools.Metadata.DatItems/Formats/DataArea.cs index 95442915..1692e303 100644 --- a/SabreTools.Metadata.DatItems/Formats/DataArea.cs +++ b/SabreTools.Metadata.DatItems/Formats/DataArea.cs @@ -111,21 +111,6 @@ namespace SabreTools.Metadata.DatItems.Formats return false; } - /// - public override bool Equals(DatItem? other) - { - // If the other value is invalid - if (other is null) - return false; - - // If the type matches - if (other is DataArea otherDataArea) - return _internal.Equals(otherDataArea._internal); - - // Everything else fails - return false; - } - #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/Device.cs b/SabreTools.Metadata.DatItems/Formats/Device.cs index 2e7a2265..47ed37e0 100644 --- a/SabreTools.Metadata.DatItems/Formats/Device.cs +++ b/SabreTools.Metadata.DatItems/Formats/Device.cs @@ -134,21 +134,6 @@ namespace SabreTools.Metadata.DatItems.Formats return false; } - /// - public override bool Equals(DatItem? other) - { - // If the other value is invalid - if (other is null) - return false; - - // If the type matches - if (other is Device otherDevice) - return _internal.Equals(otherDevice._internal); - - // Everything else fails - return false; - } - #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs b/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs index 4d7a02db..3d8d2668 100644 --- a/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs +++ b/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs @@ -75,21 +75,6 @@ namespace SabreTools.Metadata.DatItems.Formats return false; } - /// - public override bool Equals(DatItem? other) - { - // If the other value is invalid - if (other is null) - return false; - - // If the type matches - if (other is DeviceRef otherDeviceRef) - return _internal.Equals(otherDeviceRef._internal); - - // Everything else fails - return false; - } - #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/DipLocation.cs b/SabreTools.Metadata.DatItems/Formats/DipLocation.cs index de8cfb1f..e9b31ab1 100644 --- a/SabreTools.Metadata.DatItems/Formats/DipLocation.cs +++ b/SabreTools.Metadata.DatItems/Formats/DipLocation.cs @@ -87,21 +87,6 @@ namespace SabreTools.Metadata.DatItems.Formats return false; } - /// - public override bool Equals(DatItem? other) - { - // If the other value is invalid - if (other is null) - return false; - - // If the type matches - if (other is DipLocation otherDipLocation) - return _internal.Equals(otherDipLocation._internal); - - // Everything else fails - return false; - } - #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs b/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs index a6926c51..1a505258 100644 --- a/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs +++ b/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs @@ -157,21 +157,6 @@ namespace SabreTools.Metadata.DatItems.Formats return false; } - /// - public override bool Equals(DatItem? other) - { - // If the other value is invalid - if (other is null) - return false; - - // If the type matches - if (other is DipSwitch otherDipSwitch) - return _internal.Equals(otherDipSwitch._internal); - - // Everything else fails - return false; - } - #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/DipValue.cs b/SabreTools.Metadata.DatItems/Formats/DipValue.cs index dab12584..07e9dda6 100644 --- a/SabreTools.Metadata.DatItems/Formats/DipValue.cs +++ b/SabreTools.Metadata.DatItems/Formats/DipValue.cs @@ -104,21 +104,6 @@ namespace SabreTools.Metadata.DatItems.Formats return false; } - /// - public override bool Equals(DatItem? other) - { - // If the other value is invalid - if (other is null) - return false; - - // If the type matches - if (other is DipValue otherDipValue) - return _internal.Equals(otherDipValue._internal); - - // Everything else fails - return false; - } - #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/Disk.cs b/SabreTools.Metadata.DatItems/Formats/Disk.cs index 4304422e..b52dc849 100644 --- a/SabreTools.Metadata.DatItems/Formats/Disk.cs +++ b/SabreTools.Metadata.DatItems/Formats/Disk.cs @@ -188,21 +188,6 @@ namespace SabreTools.Metadata.DatItems.Formats return false; } - /// - public override bool Equals(DatItem? other) - { - // If the other value is invalid - if (other is null) - return false; - - // If the type matches - if (other is Disk otherDisk) - return _internal.PartialEquals(otherDisk._internal); - - // Everything else fails - return false; - } - /// /// Fill any missing size and hash information from another Disk /// diff --git a/SabreTools.Metadata.DatItems/Formats/DiskArea.cs b/SabreTools.Metadata.DatItems/Formats/DiskArea.cs index 10662e6d..2a173a39 100644 --- a/SabreTools.Metadata.DatItems/Formats/DiskArea.cs +++ b/SabreTools.Metadata.DatItems/Formats/DiskArea.cs @@ -93,21 +93,6 @@ namespace SabreTools.Metadata.DatItems.Formats return false; } - /// - public override bool Equals(DatItem? other) - { - // If the other value is invalid - if (other is null) - return false; - - // If the type matches - if (other is DiskArea otherDiskArea) - return _internal.Equals(otherDiskArea._internal); - - // Everything else fails - return false; - } - #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/Display.cs b/SabreTools.Metadata.DatItems/Formats/Display.cs index 093e0316..d3994ed2 100644 --- a/SabreTools.Metadata.DatItems/Formats/Display.cs +++ b/SabreTools.Metadata.DatItems/Formats/Display.cs @@ -182,21 +182,6 @@ namespace SabreTools.Metadata.DatItems.Formats return false; } - /// - public override bool Equals(DatItem? other) - { - // If the other value is invalid - if (other is null) - return false; - - // If the type matches - if (other is Display otherDisplay) - return _internal.Equals(otherDisplay._internal); - - // Everything else fails - return false; - } - #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/Driver.cs b/SabreTools.Metadata.DatItems/Formats/Driver.cs index ff1faf8c..b5f50a83 100644 --- a/SabreTools.Metadata.DatItems/Formats/Driver.cs +++ b/SabreTools.Metadata.DatItems/Formats/Driver.cs @@ -141,21 +141,6 @@ namespace SabreTools.Metadata.DatItems.Formats return false; } - /// - public override bool Equals(DatItem? other) - { - // If the other value is invalid - if (other is null) - return false; - - // If the type matches - if (other is Driver otherDriver) - return _internal.Equals(otherDriver._internal); - - // Everything else fails - return false; - } - #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/Extension.cs b/SabreTools.Metadata.DatItems/Formats/Extension.cs index 6dd07a0d..88ad1a4f 100644 --- a/SabreTools.Metadata.DatItems/Formats/Extension.cs +++ b/SabreTools.Metadata.DatItems/Formats/Extension.cs @@ -75,21 +75,6 @@ namespace SabreTools.Metadata.DatItems.Formats return false; } - /// - public override bool Equals(DatItem? other) - { - // If the other value is invalid - if (other is null) - return false; - - // If the type matches - if (other is Extension otherExtension) - return _internal.Equals(otherExtension._internal); - - // Everything else fails - return false; - } - #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/Feature.cs b/SabreTools.Metadata.DatItems/Formats/Feature.cs index 9e712ad2..e5c95a99 100644 --- a/SabreTools.Metadata.DatItems/Formats/Feature.cs +++ b/SabreTools.Metadata.DatItems/Formats/Feature.cs @@ -99,21 +99,6 @@ namespace SabreTools.Metadata.DatItems.Formats return false; } - /// - public override bool Equals(DatItem? other) - { - // If the other value is invalid - if (other is null) - return false; - - // If the type matches - if (other is Feature otherFeature) - return _internal.Equals(otherFeature._internal); - - // Everything else fails - return false; - } - #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/Info.cs b/SabreTools.Metadata.DatItems/Formats/Info.cs index 46874ae4..0524a03f 100644 --- a/SabreTools.Metadata.DatItems/Formats/Info.cs +++ b/SabreTools.Metadata.DatItems/Formats/Info.cs @@ -81,21 +81,6 @@ namespace SabreTools.Metadata.DatItems.Formats return false; } - /// - public override bool Equals(DatItem? other) - { - // If the other value is invalid - if (other is null) - return false; - - // If the type matches - if (other is Info otherInfo) - return _internal.Equals(otherInfo._internal); - - // Everything else fails - return false; - } - #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/Input.cs b/SabreTools.Metadata.DatItems/Formats/Input.cs index 7e64d1ce..30af67e2 100644 --- a/SabreTools.Metadata.DatItems/Formats/Input.cs +++ b/SabreTools.Metadata.DatItems/Formats/Input.cs @@ -123,21 +123,6 @@ namespace SabreTools.Metadata.DatItems.Formats return false; } - /// - public override bool Equals(DatItem? other) - { - // If the other value is invalid - if (other is null) - return false; - - // If the type matches - if (other is Input otherInput) - return _internal.Equals(otherInput._internal); - - // Everything else fails - return false; - } - #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/Instance.cs b/SabreTools.Metadata.DatItems/Formats/Instance.cs index 1dbf2791..5c1f38dd 100644 --- a/SabreTools.Metadata.DatItems/Formats/Instance.cs +++ b/SabreTools.Metadata.DatItems/Formats/Instance.cs @@ -81,21 +81,6 @@ namespace SabreTools.Metadata.DatItems.Formats return false; } - /// - public override bool Equals(DatItem? other) - { - // If the other value is invalid - if (other is null) - return false; - - // If the type matches - if (other is Instance otherInstance) - return _internal.Equals(otherInstance._internal); - - // Everything else fails - return false; - } - #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/Media.cs b/SabreTools.Metadata.DatItems/Formats/Media.cs index db77a69b..7eed9a62 100644 --- a/SabreTools.Metadata.DatItems/Formats/Media.cs +++ b/SabreTools.Metadata.DatItems/Formats/Media.cs @@ -133,21 +133,6 @@ namespace SabreTools.Metadata.DatItems.Formats return false; } - /// - public override bool Equals(DatItem? other) - { - // If the other value is invalid - if (other is null) - return false; - - // If the type matches - if (other is Media otherMedia) - return _internal.PartialEquals(otherMedia._internal); - - // Everything else fails - return false; - } - /// /// Fill any missing size and hash information from another Media /// diff --git a/SabreTools.Metadata.DatItems/Formats/Part.cs b/SabreTools.Metadata.DatItems/Formats/Part.cs index 81f87ed1..c07231d8 100644 --- a/SabreTools.Metadata.DatItems/Formats/Part.cs +++ b/SabreTools.Metadata.DatItems/Formats/Part.cs @@ -133,21 +133,6 @@ namespace SabreTools.Metadata.DatItems.Formats return false; } - /// - public override bool Equals(DatItem? other) - { - // If the other value is invalid - if (other is null) - return false; - - // If the type matches - if (other is Part otherPart) - return _internal.Equals(otherPart._internal); - - // Everything else fails - return false; - } - #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/PartFeature.cs b/SabreTools.Metadata.DatItems/Formats/PartFeature.cs index a141c4bc..de0c6ae5 100644 --- a/SabreTools.Metadata.DatItems/Formats/PartFeature.cs +++ b/SabreTools.Metadata.DatItems/Formats/PartFeature.cs @@ -104,21 +104,6 @@ namespace SabreTools.Metadata.DatItems.Formats return false; } - /// - public override bool Equals(DatItem? other) - { - // If the other value is invalid - if (other is null) - return false; - - // If the type matches - if (other is PartFeature otherPartFeature) - return _internal.Equals(otherPartFeature._internal); - - // Everything else fails - return false; - } - #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/Port.cs b/SabreTools.Metadata.DatItems/Formats/Port.cs index 358f872f..ea822baf 100644 --- a/SabreTools.Metadata.DatItems/Formats/Port.cs +++ b/SabreTools.Metadata.DatItems/Formats/Port.cs @@ -93,21 +93,6 @@ namespace SabreTools.Metadata.DatItems.Formats return false; } - /// - public override bool Equals(DatItem? other) - { - // If the other value is invalid - if (other is null) - return false; - - // If the type matches - if (other is Port otherPort) - return _internal.Equals(otherPort._internal); - - // Everything else fails - return false; - } - #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/RamOption.cs b/SabreTools.Metadata.DatItems/Formats/RamOption.cs index c2d60546..190337aa 100644 --- a/SabreTools.Metadata.DatItems/Formats/RamOption.cs +++ b/SabreTools.Metadata.DatItems/Formats/RamOption.cs @@ -87,21 +87,6 @@ namespace SabreTools.Metadata.DatItems.Formats return false; } - /// - public override bool Equals(DatItem? other) - { - // If the other value is invalid - if (other is null) - return false; - - // If the type matches - if (other is RamOption otherRamOption) - return _internal.Equals(otherRamOption._internal); - - // Everything else fails - return false; - } - #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/Release.cs b/SabreTools.Metadata.DatItems/Formats/Release.cs index 3c66a9a4..cf5303d0 100644 --- a/SabreTools.Metadata.DatItems/Formats/Release.cs +++ b/SabreTools.Metadata.DatItems/Formats/Release.cs @@ -99,21 +99,6 @@ namespace SabreTools.Metadata.DatItems.Formats return false; } - /// - public override bool Equals(DatItem? other) - { - // If the other value is invalid - if (other is null) - return false; - - // If the type matches - if (other is Release otherRelease) - return _internal.Equals(otherRelease._internal); - - // Everything else fails - return false; - } - #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs b/SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs index 9584a7a4..29886b5e 100644 --- a/SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs +++ b/SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs @@ -164,21 +164,6 @@ namespace SabreTools.Metadata.DatItems.Formats return false; } - /// - public override bool Equals(DatItem? other) - { - // If the other value is invalid - if (other is null) - return false; - - // If the type matches - if (other is ReleaseDetails otherReleaseDetails) - return _internal.Equals(otherReleaseDetails._internal); - - // Everything else fails - return false; - } - #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/Rom.cs b/SabreTools.Metadata.DatItems/Formats/Rom.cs index 2711f51d..3fc9839a 100644 --- a/SabreTools.Metadata.DatItems/Formats/Rom.cs +++ b/SabreTools.Metadata.DatItems/Formats/Rom.cs @@ -920,21 +920,6 @@ namespace SabreTools.Metadata.DatItems.Formats return false; } - /// - public override bool Equals(DatItem? other) - { - // If the other value is invalid - if (other is null) - return false; - - // If the type matches - if (other is Rom otherRom) - return _internal.PartialEquals(otherRom._internal); - - // Everything else fails - return false; - } - /// /// Fill any missing size and hash information from another Rom /// diff --git a/SabreTools.Metadata.DatItems/Formats/Sample.cs b/SabreTools.Metadata.DatItems/Formats/Sample.cs index e6b82b0f..6df58395 100644 --- a/SabreTools.Metadata.DatItems/Formats/Sample.cs +++ b/SabreTools.Metadata.DatItems/Formats/Sample.cs @@ -75,21 +75,6 @@ namespace SabreTools.Metadata.DatItems.Formats return false; } - /// - public override bool Equals(DatItem? other) - { - // If the other value is invalid - if (other is null) - return false; - - // If the type matches - if (other is Sample otherSample) - return _internal.Equals(otherSample._internal); - - // Everything else fails - return false; - } - #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/Serials.cs b/SabreTools.Metadata.DatItems/Formats/Serials.cs index 9dbf1aeb..8fb25cca 100644 --- a/SabreTools.Metadata.DatItems/Formats/Serials.cs +++ b/SabreTools.Metadata.DatItems/Formats/Serials.cs @@ -153,21 +153,6 @@ namespace SabreTools.Metadata.DatItems.Formats return false; } - /// - public override bool Equals(DatItem? other) - { - // If the other value is invalid - if (other is null) - return false; - - // If the type matches - if (other is Serials otherSerials) - return _internal.Equals(otherSerials._internal); - - // Everything else fails - return false; - } - #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs b/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs index d4756b78..ee74243c 100644 --- a/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs +++ b/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs @@ -81,21 +81,6 @@ namespace SabreTools.Metadata.DatItems.Formats return false; } - /// - public override bool Equals(DatItem? other) - { - // If the other value is invalid - if (other is null) - return false; - - // If the type matches - if (other is SharedFeat otherSharedFeat) - return _internal.Equals(otherSharedFeat._internal); - - // Everything else fails - return false; - } - #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/Slot.cs b/SabreTools.Metadata.DatItems/Formats/Slot.cs index 50efb538..cfab5278 100644 --- a/SabreTools.Metadata.DatItems/Formats/Slot.cs +++ b/SabreTools.Metadata.DatItems/Formats/Slot.cs @@ -93,21 +93,6 @@ namespace SabreTools.Metadata.DatItems.Formats return false; } - /// - public override bool Equals(DatItem? other) - { - // If the other value is invalid - if (other is null) - return false; - - // If the type matches - if (other is Slot otherSlot) - return _internal.Equals(otherSlot._internal); - - // Everything else fails - return false; - } - #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/SlotOption.cs b/SabreTools.Metadata.DatItems/Formats/SlotOption.cs index ee0bac00..8bde982e 100644 --- a/SabreTools.Metadata.DatItems/Formats/SlotOption.cs +++ b/SabreTools.Metadata.DatItems/Formats/SlotOption.cs @@ -87,21 +87,6 @@ namespace SabreTools.Metadata.DatItems.Formats return false; } - /// - public override bool Equals(DatItem? other) - { - // If the other value is invalid - if (other is null) - return false; - - // If the type matches - if (other is SlotOption otherSlotOption) - return _internal.Equals(otherSlotOption._internal); - - // Everything else fails - return false; - } - #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs b/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs index 3a9bd32e..c0823e2f 100644 --- a/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs +++ b/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs @@ -93,21 +93,6 @@ namespace SabreTools.Metadata.DatItems.Formats return false; } - /// - public override bool Equals(DatItem? other) - { - // If the other value is invalid - if (other is null) - return false; - - // If the type matches - if (other is SoftwareList otherSoftwareList) - return _internal.Equals(otherSoftwareList._internal); - - // Everything else fails - return false; - } - #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/Sound.cs b/SabreTools.Metadata.DatItems/Formats/Sound.cs index d84bfe02..fb96abf8 100644 --- a/SabreTools.Metadata.DatItems/Formats/Sound.cs +++ b/SabreTools.Metadata.DatItems/Formats/Sound.cs @@ -75,21 +75,6 @@ namespace SabreTools.Metadata.DatItems.Formats return false; } - /// - public override bool Equals(DatItem? other) - { - // If the other value is invalid - if (other is null) - return false; - - // If the type matches - if (other is Sound otherSound) - return _internal.Equals(otherSound._internal); - - // Everything else fails - return false; - } - #endregion } } diff --git a/SabreTools.Metadata.DatItems/Formats/SourceDetails.cs b/SabreTools.Metadata.DatItems/Formats/SourceDetails.cs index f012b40b..685ebcce 100644 --- a/SabreTools.Metadata.DatItems/Formats/SourceDetails.cs +++ b/SabreTools.Metadata.DatItems/Formats/SourceDetails.cs @@ -213,21 +213,6 @@ namespace SabreTools.Metadata.DatItems.Formats return false; } - /// - public override bool Equals(DatItem? other) - { - // If the other value is invalid - if (other is null) - return false; - - // If the type matches - if (other is SourceDetails otherSourceDetails) - return _internal.Equals(otherSourceDetails._internal); - - // Everything else fails - return false; - } - #endregion } } From 83407133d6a73c72a3ba76e686fb4f020b6b2582 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sun, 5 Apr 2026 10:22:44 -0400 Subject: [PATCH 115/142] Be more explicit about per-type missing fields --- SabreTools.Metadata.DatFiles/DatFile.cs | 1 - .../Formats/AttractMode.cs | 14 ++++++++++--- .../Formats/DosCenter.cs | 6 ++---- .../Formats/EverdriveSmdb.cs | 6 ++---- .../Formats/Listrom.cs | 8 ++++---- .../Formats/Md2File.cs | 6 ++---- .../Formats/Md4File.cs | 6 ++---- .../Formats/Md5File.cs | 10 ++++++---- .../Formats/OpenMSX.cs | 6 ++---- .../Formats/RipeMD128File.cs | 6 ++---- .../Formats/RipeMD160File.cs | 6 ++---- .../Formats/RomCenter.cs | 6 ++---- .../Formats/SeparatedValue.cs | 20 ++++++++++--------- .../Formats/SfvFile.cs | 6 ++---- .../Formats/Sha1File.cs | 10 ++++++---- .../Formats/Sha256File.cs | 8 ++++---- .../Formats/Sha384File.cs | 6 ++---- .../Formats/Sha512File.cs | 6 ++---- .../Formats/SpamSumFile.cs | 8 ++++---- 19 files changed, 68 insertions(+), 77 deletions(-) diff --git a/SabreTools.Metadata.DatFiles/DatFile.cs b/SabreTools.Metadata.DatFiles/DatFile.cs index ec283bcf..11818383 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.cs @@ -821,7 +821,6 @@ namespace SabreTools.Metadata.DatFiles // Set the item name back to the datItem datItem.SetName(datItemName); - output.Add(datItem); } diff --git a/SabreTools.Metadata.DatFiles/Formats/AttractMode.cs b/SabreTools.Metadata.DatFiles/Formats/AttractMode.cs index 61578ef7..7b6747cb 100644 --- a/SabreTools.Metadata.DatFiles/Formats/AttractMode.cs +++ b/SabreTools.Metadata.DatFiles/Formats/AttractMode.cs @@ -28,9 +28,17 @@ namespace SabreTools.Metadata.DatFiles.Formats { List missingFields = []; - // Check item name - if (string.IsNullOrEmpty(datItem.GetName())) - missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); + switch (datItem) + { + case DatItems.Formats.Rom rom: + if (string.IsNullOrEmpty(rom.Name)) + missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); + break; + + default: + // Item type is not supported + break; + } return missingFields; } diff --git a/SabreTools.Metadata.DatFiles/Formats/DosCenter.cs b/SabreTools.Metadata.DatFiles/Formats/DosCenter.cs index ecc5cd01..2c46c17f 100644 --- a/SabreTools.Metadata.DatFiles/Formats/DosCenter.cs +++ b/SabreTools.Metadata.DatFiles/Formats/DosCenter.cs @@ -29,13 +29,11 @@ namespace SabreTools.Metadata.DatFiles.Formats { List missingFields = []; - // Check item name - if (string.IsNullOrEmpty(datItem.GetName())) - missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); - switch (datItem) { case Rom rom: + if (string.IsNullOrEmpty(rom.Name)) + missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); if (rom.Size is null || rom.Size < 0) missingFields.Add(nameof(Data.Models.Metadata.Rom.Size)); // if (string.IsNullOrEmpty(rom.Date)) diff --git a/SabreTools.Metadata.DatFiles/Formats/EverdriveSmdb.cs b/SabreTools.Metadata.DatFiles/Formats/EverdriveSmdb.cs index b40adf19..24ea93de 100644 --- a/SabreTools.Metadata.DatFiles/Formats/EverdriveSmdb.cs +++ b/SabreTools.Metadata.DatFiles/Formats/EverdriveSmdb.cs @@ -29,13 +29,11 @@ namespace SabreTools.Metadata.DatFiles.Formats { List missingFields = []; - // Check item name - if (string.IsNullOrEmpty(datItem.GetName())) - missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); - switch (datItem) { case Rom rom: + if (string.IsNullOrEmpty(rom.Name)) + missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); if (string.IsNullOrEmpty(rom.SHA256)) missingFields.Add(nameof(Data.Models.Metadata.Rom.SHA256)); if (string.IsNullOrEmpty(rom.SHA1)) diff --git a/SabreTools.Metadata.DatFiles/Formats/Listrom.cs b/SabreTools.Metadata.DatFiles/Formats/Listrom.cs index 05d822e8..01a6e4fe 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Listrom.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Listrom.cs @@ -30,13 +30,11 @@ namespace SabreTools.Metadata.DatFiles.Formats { List missingFields = []; - // Check item name - if (string.IsNullOrEmpty(datItem.GetName())) - missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); - switch (datItem) { case Disk disk: + if (string.IsNullOrEmpty(disk.Name)) + missingFields.Add(nameof(Data.Models.Metadata.Disk.Name)); if (string.IsNullOrEmpty(disk.MD5) && string.IsNullOrEmpty(disk.SHA1)) { @@ -46,6 +44,8 @@ namespace SabreTools.Metadata.DatFiles.Formats break; case Rom rom: + if (string.IsNullOrEmpty(rom.Name)) + missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); if (rom.Size is null || rom.Size < 0) missingFields.Add(nameof(Data.Models.Metadata.Rom.Size)); if (string.IsNullOrEmpty(rom.CRC)) diff --git a/SabreTools.Metadata.DatFiles/Formats/Md2File.cs b/SabreTools.Metadata.DatFiles/Formats/Md2File.cs index 72c9a1be..53f7b99b 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Md2File.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Md2File.cs @@ -31,13 +31,11 @@ namespace SabreTools.Metadata.DatFiles.Formats { List missingFields = []; - // Check item name - if (string.IsNullOrEmpty(datItem.GetName())) - missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); - switch (datItem) { case Rom rom: + if (string.IsNullOrEmpty(rom.Name)) + missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); if (string.IsNullOrEmpty(rom.MD2)) missingFields.Add(nameof(Data.Models.Metadata.Rom.MD2)); break; diff --git a/SabreTools.Metadata.DatFiles/Formats/Md4File.cs b/SabreTools.Metadata.DatFiles/Formats/Md4File.cs index 52b0ce11..953954b3 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Md4File.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Md4File.cs @@ -31,13 +31,11 @@ namespace SabreTools.Metadata.DatFiles.Formats { List missingFields = []; - // Check item name - if (string.IsNullOrEmpty(datItem.GetName())) - missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); - switch (datItem) { case Rom rom: + if (string.IsNullOrEmpty(rom.Name)) + missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); if (string.IsNullOrEmpty(rom.MD4)) missingFields.Add(nameof(Data.Models.Metadata.Rom.MD4)); break; diff --git a/SabreTools.Metadata.DatFiles/Formats/Md5File.cs b/SabreTools.Metadata.DatFiles/Formats/Md5File.cs index b9dcf6ff..8bac1e5c 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Md5File.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Md5File.cs @@ -33,23 +33,25 @@ namespace SabreTools.Metadata.DatFiles.Formats { List missingFields = []; - // Check item name - if (string.IsNullOrEmpty(datItem.GetName())) - missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); - switch (datItem) { case Disk disk: + if (string.IsNullOrEmpty(disk.Name)) + missingFields.Add(nameof(Data.Models.Metadata.Disk.Name)); if (string.IsNullOrEmpty(disk.MD5)) missingFields.Add(nameof(Data.Models.Metadata.Disk.MD5)); break; case Media medium: + if (string.IsNullOrEmpty(medium.Name)) + missingFields.Add(nameof(Data.Models.Metadata.Media.Name)); if (string.IsNullOrEmpty(medium.MD5)) missingFields.Add(nameof(Data.Models.Metadata.Media.MD5)); break; case Rom rom: + if (string.IsNullOrEmpty(rom.Name)) + missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); if (string.IsNullOrEmpty(rom.MD5)) missingFields.Add(nameof(Data.Models.Metadata.Rom.MD5)); break; diff --git a/SabreTools.Metadata.DatFiles/Formats/OpenMSX.cs b/SabreTools.Metadata.DatFiles/Formats/OpenMSX.cs index 7924f589..04b72f91 100644 --- a/SabreTools.Metadata.DatFiles/Formats/OpenMSX.cs +++ b/SabreTools.Metadata.DatFiles/Formats/OpenMSX.cs @@ -68,13 +68,11 @@ The softwaredb.xml file contains information about rom mapper types { List missingFields = []; - // Check item name - if (string.IsNullOrEmpty(datItem.GetName())) - missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); - switch (datItem) { case Rom rom: + if (string.IsNullOrEmpty(rom.Name)) + missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); if (string.IsNullOrEmpty(rom.SHA1)) missingFields.Add(nameof(Data.Models.Metadata.Rom.SHA1)); break; diff --git a/SabreTools.Metadata.DatFiles/Formats/RipeMD128File.cs b/SabreTools.Metadata.DatFiles/Formats/RipeMD128File.cs index 4611ecf1..6dff13cb 100644 --- a/SabreTools.Metadata.DatFiles/Formats/RipeMD128File.cs +++ b/SabreTools.Metadata.DatFiles/Formats/RipeMD128File.cs @@ -31,13 +31,11 @@ namespace SabreTools.Metadata.DatFiles.Formats { List missingFields = []; - // Check item name - if (string.IsNullOrEmpty(datItem.GetName())) - missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); - switch (datItem) { case Rom rom: + if (string.IsNullOrEmpty(rom.Name)) + missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); if (string.IsNullOrEmpty(rom.RIPEMD128)) missingFields.Add(nameof(Data.Models.Metadata.Rom.RIPEMD128)); break; diff --git a/SabreTools.Metadata.DatFiles/Formats/RipeMD160File.cs b/SabreTools.Metadata.DatFiles/Formats/RipeMD160File.cs index a42e39e8..d0226012 100644 --- a/SabreTools.Metadata.DatFiles/Formats/RipeMD160File.cs +++ b/SabreTools.Metadata.DatFiles/Formats/RipeMD160File.cs @@ -31,13 +31,11 @@ namespace SabreTools.Metadata.DatFiles.Formats { List missingFields = []; - // Check item name - if (string.IsNullOrEmpty(datItem.GetName())) - missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); - switch (datItem) { case Rom rom: + if (string.IsNullOrEmpty(rom.Name)) + missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); if (string.IsNullOrEmpty(rom.RIPEMD160)) missingFields.Add(nameof(Data.Models.Metadata.Rom.RIPEMD160)); break; diff --git a/SabreTools.Metadata.DatFiles/Formats/RomCenter.cs b/SabreTools.Metadata.DatFiles/Formats/RomCenter.cs index a07d6860..ec4436e6 100644 --- a/SabreTools.Metadata.DatFiles/Formats/RomCenter.cs +++ b/SabreTools.Metadata.DatFiles/Formats/RomCenter.cs @@ -29,13 +29,11 @@ namespace SabreTools.Metadata.DatFiles.Formats { List missingFields = []; - // Check item name - if (string.IsNullOrEmpty(datItem.GetName())) - missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); - switch (datItem) { case Rom rom: + if (string.IsNullOrEmpty(rom.Name)) + missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); if (string.IsNullOrEmpty(rom.CRC)) missingFields.Add(nameof(Data.Models.Metadata.Rom.CRC)); if (rom.Size is null || rom.Size < 0) diff --git a/SabreTools.Metadata.DatFiles/Formats/SeparatedValue.cs b/SabreTools.Metadata.DatFiles/Formats/SeparatedValue.cs index 385331a7..d7f5a781 100644 --- a/SabreTools.Metadata.DatFiles/Formats/SeparatedValue.cs +++ b/SabreTools.Metadata.DatFiles/Formats/SeparatedValue.cs @@ -66,13 +66,11 @@ namespace SabreTools.Metadata.DatFiles.Formats { List missingFields = []; - // Check item name - if (string.IsNullOrEmpty(datItem.GetName())) - missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); - switch (datItem) { case Disk disk: + if (string.IsNullOrEmpty(disk.Name)) + missingFields.Add(nameof(Data.Models.Metadata.Disk.Name)); if (string.IsNullOrEmpty(disk.MD5) && string.IsNullOrEmpty(disk.SHA1)) { @@ -81,11 +79,13 @@ namespace SabreTools.Metadata.DatFiles.Formats break; - case Media media: - if (string.IsNullOrEmpty(media.MD5) - && string.IsNullOrEmpty(media.SHA1) - && string.IsNullOrEmpty(media.SHA256) - && string.IsNullOrEmpty(media.SpamSum)) + case Media medium: + if (string.IsNullOrEmpty(medium.Name)) + missingFields.Add(nameof(Data.Models.Metadata.Media.Name)); + if (string.IsNullOrEmpty(medium.MD5) + && string.IsNullOrEmpty(medium.SHA1) + && string.IsNullOrEmpty(medium.SHA256) + && string.IsNullOrEmpty(medium.SpamSum)) { missingFields.Add(nameof(Data.Models.Metadata.Media.SHA1)); } @@ -93,6 +93,8 @@ namespace SabreTools.Metadata.DatFiles.Formats break; case Rom rom: + if (string.IsNullOrEmpty(rom.Name)) + missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); if (rom.Size is null || rom.Size < 0) missingFields.Add(nameof(Data.Models.Metadata.Rom.Size)); if (string.IsNullOrEmpty(rom.CRC) diff --git a/SabreTools.Metadata.DatFiles/Formats/SfvFile.cs b/SabreTools.Metadata.DatFiles/Formats/SfvFile.cs index 6994ecc6..dedb10c9 100644 --- a/SabreTools.Metadata.DatFiles/Formats/SfvFile.cs +++ b/SabreTools.Metadata.DatFiles/Formats/SfvFile.cs @@ -31,13 +31,11 @@ namespace SabreTools.Metadata.DatFiles.Formats { List missingFields = []; - // Check item name - if (string.IsNullOrEmpty(datItem.GetName())) - missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); - switch (datItem) { case Rom rom: + if (string.IsNullOrEmpty(rom.Name)) + missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); if (string.IsNullOrEmpty(rom.CRC)) missingFields.Add(nameof(Data.Models.Metadata.Rom.CRC)); break; diff --git a/SabreTools.Metadata.DatFiles/Formats/Sha1File.cs b/SabreTools.Metadata.DatFiles/Formats/Sha1File.cs index f602f8cd..e3f04441 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Sha1File.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Sha1File.cs @@ -33,23 +33,25 @@ namespace SabreTools.Metadata.DatFiles.Formats { List missingFields = []; - // Check item name - if (string.IsNullOrEmpty(datItem.GetName())) - missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); - switch (datItem) { case Disk disk: + if (string.IsNullOrEmpty(disk.Name)) + missingFields.Add(nameof(Data.Models.Metadata.Disk.Name)); if (string.IsNullOrEmpty(disk.SHA1)) missingFields.Add(nameof(Data.Models.Metadata.Disk.SHA1)); break; case Media medium: + if (string.IsNullOrEmpty(medium.Name)) + missingFields.Add(nameof(Data.Models.Metadata.Media.Name)); if (string.IsNullOrEmpty(medium.SHA1)) missingFields.Add(nameof(Data.Models.Metadata.Media.SHA1)); break; case Rom rom: + if (string.IsNullOrEmpty(rom.Name)) + missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); if (string.IsNullOrEmpty(rom.SHA1)) missingFields.Add(nameof(Data.Models.Metadata.Rom.SHA1)); break; diff --git a/SabreTools.Metadata.DatFiles/Formats/Sha256File.cs b/SabreTools.Metadata.DatFiles/Formats/Sha256File.cs index 53f4c750..06005494 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Sha256File.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Sha256File.cs @@ -32,18 +32,18 @@ namespace SabreTools.Metadata.DatFiles.Formats { List missingFields = []; - // Check item name - if (string.IsNullOrEmpty(datItem.GetName())) - missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); - switch (datItem) { case Media medium: + if (string.IsNullOrEmpty(medium.Name)) + missingFields.Add(nameof(Data.Models.Metadata.Media.Name)); if (string.IsNullOrEmpty(medium.SHA256)) missingFields.Add(nameof(Data.Models.Metadata.Media.SHA256)); break; case Rom rom: + if (string.IsNullOrEmpty(rom.Name)) + missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); if (string.IsNullOrEmpty(rom.SHA256)) missingFields.Add(nameof(Data.Models.Metadata.Rom.SHA256)); break; diff --git a/SabreTools.Metadata.DatFiles/Formats/Sha384File.cs b/SabreTools.Metadata.DatFiles/Formats/Sha384File.cs index 8b8cada1..29b032e3 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Sha384File.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Sha384File.cs @@ -31,13 +31,11 @@ namespace SabreTools.Metadata.DatFiles.Formats { List missingFields = []; - // Check item name - if (string.IsNullOrEmpty(datItem.GetName())) - missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); - switch (datItem) { case Rom rom: + if (string.IsNullOrEmpty(rom.Name)) + missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); if (string.IsNullOrEmpty(rom.SHA384)) missingFields.Add(nameof(Data.Models.Metadata.Rom.SHA384)); break; diff --git a/SabreTools.Metadata.DatFiles/Formats/Sha512File.cs b/SabreTools.Metadata.DatFiles/Formats/Sha512File.cs index 1fb4f576..8865c4da 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Sha512File.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Sha512File.cs @@ -31,13 +31,11 @@ namespace SabreTools.Metadata.DatFiles.Formats { List missingFields = []; - // Check item name - if (string.IsNullOrEmpty(datItem.GetName())) - missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); - switch (datItem) { case Rom rom: + if (string.IsNullOrEmpty(rom.Name)) + missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); if (string.IsNullOrEmpty(rom.SHA512)) missingFields.Add(nameof(Data.Models.Metadata.Rom.SHA512)); break; diff --git a/SabreTools.Metadata.DatFiles/Formats/SpamSumFile.cs b/SabreTools.Metadata.DatFiles/Formats/SpamSumFile.cs index 73407a22..adb97965 100644 --- a/SabreTools.Metadata.DatFiles/Formats/SpamSumFile.cs +++ b/SabreTools.Metadata.DatFiles/Formats/SpamSumFile.cs @@ -32,18 +32,18 @@ namespace SabreTools.Metadata.DatFiles.Formats { List missingFields = []; - // Check item name - if (string.IsNullOrEmpty(datItem.GetName())) - missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); - switch (datItem) { case Media medium: + if (string.IsNullOrEmpty(medium.Name)) + missingFields.Add(nameof(Data.Models.Metadata.Media.Name)); if (string.IsNullOrEmpty(medium.SpamSum)) missingFields.Add(nameof(Data.Models.Metadata.Media.SpamSum)); break; case Rom rom: + if (string.IsNullOrEmpty(rom.Name)) + missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); if (string.IsNullOrEmpty(rom.SpamSum)) missingFields.Add(nameof(Data.Models.Metadata.Rom.SpamSum)); break; From 752f5d31d4d90894bba7eb574fe00a1bada8f870 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sun, 5 Apr 2026 10:40:54 -0400 Subject: [PATCH 116/142] Avoid round-trip collection conversion --- .../DatFile.ToMetadata.cs | 177 ++++++------------ 1 file changed, 61 insertions(+), 116 deletions(-) diff --git a/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs b/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs index a18df700..8f1aab16 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs @@ -309,15 +309,9 @@ namespace SabreTools.Metadata.DatFiles }; } - // Get existing roms as a list - var romsArr = aggregateDataArea.Rom ?? []; - List roms = [.. romsArr]; - // Add the rom to the data area - roms.Add(romItem); - - // Assign back the roms - aggregateDataArea.Rom = roms.ToArray(); + aggregateDataArea.Rom ??= []; + aggregateDataArea.Rom = [.. aggregateDataArea.Rom, romItem]; // Assign back the data area if (dataAreaIndex > -1) @@ -326,7 +320,7 @@ namespace SabreTools.Metadata.DatFiles dataAreas.Add(aggregateDataArea); // Assign back the data areas array - partItems[partName].DataArea = dataAreas.ToArray(); + partItems[partName].DataArea = [.. dataAreas]; } } @@ -353,19 +347,12 @@ namespace SabreTools.Metadata.DatFiles } else { - aggregateDiskArea = new(); - aggregateDiskArea.Name = diskArea.Name; + aggregateDiskArea = new Data.Models.Metadata.DiskArea { Name = diskArea.Name }; } - // Get existing disks as a list - var disksArr = aggregateDiskArea.Disk ?? []; - List disks = [.. disksArr]; - - // Add the disk to the data area - disks.Add(diskItem); - - // Assign back the disks - aggregateDiskArea.Disk = disks.ToArray(); + // Add the disk to the disk area + aggregateDiskArea.Disk ??= []; + aggregateDiskArea.Disk = [.. aggregateDiskArea.Disk, diskItem]; // Assign back the disk area if (diskAreaIndex > -1) @@ -374,36 +361,22 @@ namespace SabreTools.Metadata.DatFiles diskAreas.Add(aggregateDiskArea); // Assign back the disk areas array - partItems[partName].DiskArea = diskAreas.ToArray(); + partItems[partName].DiskArea = [.. diskAreas]; } } // If the item is a DipSwitch if (datItem is Data.Models.Metadata.DipSwitch dipSwitchItem) { - // Get existing dipswitches as a list - var dipSwitchesArr = partItems[partName].DipSwitch ?? []; - List dipSwitches = [.. dipSwitchesArr]; - - // Add the dipswitch - dipSwitches.Add(dipSwitchItem); - - // Assign back the dipswitches - partItems[partName].DipSwitch = dipSwitches.ToArray(); + partItems[partName].DipSwitch ??= []; + partItems[partName].DipSwitch = [.. partItems[partName].DipSwitch!, dipSwitchItem]; } // If the item is a Feature else if (datItem is Data.Models.Metadata.Feature featureItem) { - // Get existing features as a list - var featuresArr = partItems[partName].Feature ?? []; - List features = [.. featuresArr]; - - // Add the feature - features.Add(featureItem); - - // Assign back the features - partItems[partName].Feature = features.ToArray(); + partItems[partName].Feature ??= []; + partItems[partName].Feature = [.. partItems[partName].Feature!, featureItem]; } } @@ -657,22 +630,18 @@ namespace SabreTools.Metadata.DatFiles } else { - aggregateDataArea = new(); - aggregateDataArea.Endianness = dataArea.Endianness; - aggregateDataArea.Name = dataArea.Name; - aggregateDataArea.Size = dataArea.Size; - aggregateDataArea.Width = dataArea.Width; + aggregateDataArea = new Data.Models.Metadata.DataArea + { + Endianness = dataArea.Endianness, + Name = dataArea.Name, + Size = dataArea.Size, + Width = dataArea.Width, + }; } - // Get existing roms as a list - var romsArr = aggregateDataArea.Rom ?? []; - List roms = [.. romsArr]; - // Add the rom to the data area - roms.Add(romItem); - - // Assign back the roms - aggregateDataArea.Rom = roms.ToArray(); + aggregateDataArea.Rom ??= []; + aggregateDataArea.Rom = [.. aggregateDataArea.Rom, romItem]; // Assign back the data area if (dataAreaIndex > -1) @@ -681,7 +650,7 @@ namespace SabreTools.Metadata.DatFiles dataAreas.Add(aggregateDataArea); // Assign back the data areas array - partItems[partName].DataArea = dataAreas.ToArray(); + partItems[partName].DataArea = [.. dataAreas]; } } @@ -708,19 +677,12 @@ namespace SabreTools.Metadata.DatFiles } else { - aggregateDiskArea = new(); - aggregateDiskArea.Name = diskArea.Name; + aggregateDiskArea = new Data.Models.Metadata.DiskArea { Name = diskArea.Name }; } - // Get existing disks as a list - var disksArr = aggregateDiskArea.Disk ?? []; - List disks = [.. disksArr]; - - // Add the disk to the data area - disks.Add(diskItem); - - // Assign back the disks - aggregateDiskArea.Disk = disks.ToArray(); + // Add the disk to the disk area + aggregateDiskArea.Disk ??= []; + aggregateDiskArea.Disk = [.. aggregateDiskArea.Disk, diskItem]; // Assign back the disk area if (diskAreaIndex > -1) @@ -729,36 +691,22 @@ namespace SabreTools.Metadata.DatFiles diskAreas.Add(aggregateDiskArea); // Assign back the disk areas array - partItems[partName].DiskArea = diskAreas.ToArray(); + partItems[partName].DiskArea = [.. diskAreas]; } } // If the item is a DipSwitch if (datItem is Data.Models.Metadata.DipSwitch dipSwitchItem) { - // Get existing dipswitches as a list - var dipSwitchesArr = partItems[partName].DipSwitch ?? []; - List dipSwitches = [.. dipSwitchesArr]; - - // Add the dipswitch - dipSwitches.Add(dipSwitchItem); - - // Assign back the dipswitches - partItems[partName].DipSwitch = dipSwitches.ToArray(); + partItems[partName].DipSwitch ??= []; + partItems[partName].DipSwitch = [.. partItems[partName].DipSwitch!, dipSwitchItem]; } // If the item is a Feature else if (datItem is Data.Models.Metadata.Feature featureItem) { - // Get existing features as a list - var featuresArr = partItems[partName].Feature ?? []; - List features = [.. featuresArr]; - - // Add the feature - features.Add(featureItem); - - // Assign back the features - partItems[partName].Feature = features.ToArray(); + partItems[partName].Feature ??= []; + partItems[partName].Feature = [.. partItems[partName].Feature!, featureItem]; } } @@ -826,18 +774,17 @@ namespace SabreTools.Metadata.DatFiles switch (romItem.OpenMSXMediaType) { case OpenMSXSubType.Rom: - var dumpRom = new Data.Models.Metadata.Dump(); - var rom = new Data.Models.Metadata.Rom(); - - rom.Name = romItem.Name; - rom.Offset = romItem.Start ?? romItem.Offset; - rom.OpenMSXType = romItem.OpenMSXType; - rom.Remark = romItem.Remark; - rom.SHA1 = romItem.SHA1; - rom.Start = romItem.Start ?? romItem.Offset; - - dumpRom.Rom = rom; + var rom = new Data.Models.Metadata.Rom + { + Name = romItem.Name, + Offset = romItem.Start ?? romItem.Offset, + OpenMSXType = romItem.OpenMSXType, + Remark = romItem.Remark, + SHA1 = romItem.SHA1, + Start = romItem.Start ?? romItem.Offset, + }; + var dumpRom = new Data.Models.Metadata.Dump { Rom = rom }; if (original is not null) { var newOriginal = new Data.Models.Metadata.Original @@ -853,18 +800,17 @@ namespace SabreTools.Metadata.DatFiles break; case OpenMSXSubType.MegaRom: - var dumpMegaRom = new Data.Models.Metadata.Dump(); - var megaRom = new Data.Models.Metadata.Rom(); - - megaRom.Name = romItem.Name; - megaRom.Offset = romItem.Start ?? romItem.Offset; - megaRom.OpenMSXType = romItem.OpenMSXType; - megaRom.Remark = romItem.Remark; - megaRom.SHA1 = romItem.SHA1; - megaRom.Start = romItem.Start ?? romItem.Offset; - - dumpMegaRom.MegaRom = megaRom; + var megaRom = new Data.Models.Metadata.Rom + { + Name = romItem.Name, + Offset = romItem.Start ?? romItem.Offset, + OpenMSXType = romItem.OpenMSXType, + Remark = romItem.Remark, + SHA1 = romItem.SHA1, + Start = romItem.Start ?? romItem.Offset, + }; + var dumpMegaRom = new Data.Models.Metadata.Dump { MegaRom = megaRom }; if (original is not null) { var newOriginal = new Data.Models.Metadata.Original @@ -880,18 +826,17 @@ namespace SabreTools.Metadata.DatFiles break; case OpenMSXSubType.SCCPlusCart: - var dumpSccPlusCart = new Data.Models.Metadata.Dump(); - var sccPlusCart = new Data.Models.Metadata.Rom(); - - sccPlusCart.Name = romItem.Name; - sccPlusCart.Offset = romItem.Start ?? romItem.Offset; - sccPlusCart.OpenMSXType = romItem.OpenMSXType; - sccPlusCart.Remark = romItem.Remark; - sccPlusCart.SHA1 = romItem.SHA1; - sccPlusCart.Start = romItem.Start ?? romItem.Offset; - - dumpSccPlusCart.SCCPlusCart = sccPlusCart; + var sccPlusCart = new Data.Models.Metadata.Rom + { + Name = romItem.Name, + Offset = romItem.Start ?? romItem.Offset, + OpenMSXType = romItem.OpenMSXType, + Remark = romItem.Remark, + SHA1 = romItem.SHA1, + Start = romItem.Start ?? romItem.Offset, + }; + var dumpSccPlusCart = new Data.Models.Metadata.Dump { SCCPlusCart = sccPlusCart }; if (original is not null) { var newOriginal = new Data.Models.Metadata.Original From 25f50d19e2d743985ea856c4dc1c8f7597ea3836 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sun, 5 Apr 2026 10:42:19 -0400 Subject: [PATCH 117/142] Convert the last ToArrays that can be converted --- SabreTools.Serialization.CrossModel/Listrom.Serializer.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SabreTools.Serialization.CrossModel/Listrom.Serializer.cs b/SabreTools.Serialization.CrossModel/Listrom.Serializer.cs index 0f22c669..c1b4f534 100644 --- a/SabreTools.Serialization.CrossModel/Listrom.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Listrom.Serializer.cs @@ -64,8 +64,8 @@ namespace SabreTools.Serialization.CrossModel roms.Add(rom); } - machine.Disk = disks.ToArray(); - machine.Rom = roms.ToArray(); + machine.Disk = [.. disks]; + machine.Rom = [.. roms]; } return machine; From f93d254a6412eafd7cbeaddcc4df1046697e83c8 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sun, 5 Apr 2026 11:00:36 -0400 Subject: [PATCH 118/142] Try to make DAT statistics less intense --- SabreTools.Metadata.DatFiles/DatStatistics.cs | 396 ++++++++---------- 1 file changed, 177 insertions(+), 219 deletions(-) diff --git a/SabreTools.Metadata.DatFiles/DatStatistics.cs b/SabreTools.Metadata.DatFiles/DatStatistics.cs index 850d870e..19b0f6af 100644 --- a/SabreTools.Metadata.DatFiles/DatStatistics.cs +++ b/SabreTools.Metadata.DatFiles/DatStatistics.cs @@ -121,7 +121,7 @@ namespace SabreTools.Metadata.DatFiles RemovedCount++; // Increment the item count for the type - AddItemCount(item.ItemType); + ModifyItemCount(item.ItemType, 1); // Some item types require special processing switch (item) @@ -155,7 +155,7 @@ namespace SabreTools.Metadata.DatFiles // Loop through and add stats for all items foreach (var itemCountKvp in stats._itemCounts) { - AddItemCount(itemCountKvp.Key, itemCountKvp.Value); + ModifyItemCount(itemCountKvp.Key, itemCountKvp.Value); } GameCount += stats.GameCount; @@ -165,13 +165,13 @@ namespace SabreTools.Metadata.DatFiles // Individual hash counts foreach (var hashCountKvp in stats._hashCounts) { - AddHashCount(hashCountKvp.Key, hashCountKvp.Value); + ModifyHashCount(hashCountKvp.Key, hashCountKvp.Value); } // Individual status counts foreach (var statusCountKvp in stats._statusCounts) { - AddStatusCount(statusCountKvp.Key, statusCountKvp.Value); + ModifyStatusCount(statusCountKvp.Key, statusCountKvp.Value); } RemovedCount += stats.RemovedCount; @@ -245,7 +245,7 @@ namespace SabreTools.Metadata.DatFiles RemovedCount--; // Decrement the item count for the type - RemoveItemCount(item.ItemType); + ModifyItemCount(item.ItemType, -1); // Some item types require special processing switch (item) @@ -286,12 +286,166 @@ namespace SabreTools.Metadata.DatFiles } /// - /// Increment the hash count for a given hash type + /// Add to the statistics for a given Disk /// - /// Hash type to increment - /// Amount to increment by, defaults to 1 - private void AddHashCount(HashType hashType, long interval = 1) + /// Item to add info from + private void AddItemStatistics(Disk disk) { + ItemStatus? status = disk.Status; + if (status != ItemStatus.Nodump) + { + ModifyHashCount(HashType.MD5, string.IsNullOrEmpty(disk.MD5) ? 0 : 1); + ModifyHashCount(HashType.SHA1, string.IsNullOrEmpty(disk.SHA1) ? 0 : 1); + } + + ModifyStatusCount(ItemStatus.BadDump, status == ItemStatus.BadDump ? 1 : 0); + ModifyStatusCount(ItemStatus.Good, status == ItemStatus.Good ? 1 : 0); + ModifyStatusCount(ItemStatus.Nodump, status == ItemStatus.Nodump ? 1 : 0); + ModifyStatusCount(ItemStatus.Verified, status == ItemStatus.Verified ? 1 : 0); + } + + /// + /// Add to the statistics for a given File + /// + /// Item to add info from + private void AddItemStatistics(File file) + { + TotalSize += file.Size ?? 0; + ModifyHashCount(HashType.CRC32, string.IsNullOrEmpty(file.CRC) ? 0 : 1); + ModifyHashCount(HashType.MD5, string.IsNullOrEmpty(file.MD5) ? 0 : 1); + ModifyHashCount(HashType.SHA1, string.IsNullOrEmpty(file.SHA1) ? 0 : 1); + ModifyHashCount(HashType.SHA256, string.IsNullOrEmpty(file.SHA256) ? 0 : 1); + } + + /// + /// Add to the statistics for a given Media + /// + /// Item to add info from + private void AddItemStatistics(Media media) + { + ModifyHashCount(HashType.MD5, string.IsNullOrEmpty(media.MD5) ? 0 : 1); + ModifyHashCount(HashType.SHA1, string.IsNullOrEmpty(media.SHA1) ? 0 : 1); + ModifyHashCount(HashType.SHA256, string.IsNullOrEmpty(media.SHA256) ? 0 : 1); + ModifyHashCount(HashType.SpamSum, string.IsNullOrEmpty(media.SpamSum) ? 0 : 1); + } + + /// + /// Add to the statistics for a given Rom + /// + /// Item to add info from + private void AddItemStatistics(Rom rom) + { + ItemStatus? status = rom.Status; + if (status != ItemStatus.Nodump) + { + TotalSize += rom.Size ?? 0; + ModifyHashCount(HashType.CRC16, string.IsNullOrEmpty(rom.CRC16) ? 0 : 1); + ModifyHashCount(HashType.CRC32, string.IsNullOrEmpty(rom.CRC) ? 0 : 1); + ModifyHashCount(HashType.CRC64, string.IsNullOrEmpty(rom.CRC64) ? 0 : 1); + ModifyHashCount(HashType.MD2, string.IsNullOrEmpty(rom.MD2) ? 0 : 1); + ModifyHashCount(HashType.MD4, string.IsNullOrEmpty(rom.MD4) ? 0 : 1); + ModifyHashCount(HashType.MD5, string.IsNullOrEmpty(rom.MD5) ? 0 : 1); + ModifyHashCount(HashType.RIPEMD128, string.IsNullOrEmpty(rom.RIPEMD128) ? 0 : 1); + ModifyHashCount(HashType.RIPEMD160, string.IsNullOrEmpty(rom.RIPEMD160) ? 0 : 1); + ModifyHashCount(HashType.SHA1, string.IsNullOrEmpty(rom.SHA1) ? 0 : 1); + ModifyHashCount(HashType.SHA256, string.IsNullOrEmpty(rom.SHA256) ? 0 : 1); + ModifyHashCount(HashType.SHA384, string.IsNullOrEmpty(rom.SHA384) ? 0 : 1); + ModifyHashCount(HashType.SHA512, string.IsNullOrEmpty(rom.SHA512) ? 0 : 1); + ModifyHashCount(HashType.SpamSum, string.IsNullOrEmpty(rom.SpamSum) ? 0 : 1); + } + + ModifyStatusCount(ItemStatus.BadDump, status == ItemStatus.BadDump ? 1 : 0); + ModifyStatusCount(ItemStatus.Good, status == ItemStatus.Good ? 1 : 0); + ModifyStatusCount(ItemStatus.Nodump, status == ItemStatus.Nodump ? 1 : 0); + ModifyStatusCount(ItemStatus.Verified, status == ItemStatus.Verified ? 1 : 0); + } + + /// + /// Remove from the statistics given a Disk + /// + /// Item to remove info for + private void RemoveItemStatistics(Disk disk) + { + ItemStatus? status = disk.Status; + if (status != ItemStatus.Nodump) + { + ModifyHashCount(HashType.MD5, string.IsNullOrEmpty(disk.MD5) ? 0 : -1); + ModifyHashCount(HashType.SHA1, string.IsNullOrEmpty(disk.SHA1) ? 0 : -1); + } + + ModifyStatusCount(ItemStatus.BadDump, status == ItemStatus.BadDump ? -1 : 0); + ModifyStatusCount(ItemStatus.Good, status == ItemStatus.Good ? -1 : 0); + ModifyStatusCount(ItemStatus.Nodump, status == ItemStatus.Nodump ? -1 : 0); + ModifyStatusCount(ItemStatus.Verified, status == ItemStatus.Verified ? -1 : 0); + } + + /// + /// Remove from the statistics given a File + /// + /// Item to remove info for + private void RemoveItemStatistics(File file) + { + TotalSize -= file.Size ?? 0; + ModifyHashCount(HashType.CRC32, string.IsNullOrEmpty(file.CRC) ? 0 : -1); + ModifyHashCount(HashType.MD5, string.IsNullOrEmpty(file.MD5) ? 0 : -1); + ModifyHashCount(HashType.SHA1, string.IsNullOrEmpty(file.SHA1) ? 0 : -1); + ModifyHashCount(HashType.SHA256, string.IsNullOrEmpty(file.SHA256) ? 0 : -1); + } + + /// + /// Remove from the statistics given a Media + /// + /// Item to remove info for + private void RemoveItemStatistics(Media media) + { + ModifyHashCount(HashType.MD5, string.IsNullOrEmpty(media.MD5) ? 0 : -1); + ModifyHashCount(HashType.SHA1, string.IsNullOrEmpty(media.SHA1) ? 0 : -1); + ModifyHashCount(HashType.SHA256, string.IsNullOrEmpty(media.SHA256) ? 0 : -1); + ModifyHashCount(HashType.SpamSum, string.IsNullOrEmpty(media.SpamSum) ? 0 : -1); + } + + /// + /// Remove from the statistics given a Rom + /// + /// Item to remove info for + private void RemoveItemStatistics(Rom rom) + { + ItemStatus? status = rom.Status; + if (status != ItemStatus.Nodump) + { + TotalSize -= rom.Size ?? 0; + ModifyHashCount(HashType.CRC16, string.IsNullOrEmpty(rom.CRC16) ? 0 : -1); + ModifyHashCount(HashType.CRC32, string.IsNullOrEmpty(rom.CRC) ? 0 : -1); + ModifyHashCount(HashType.CRC64, string.IsNullOrEmpty(rom.CRC64) ? 0 : -1); + ModifyHashCount(HashType.MD2, string.IsNullOrEmpty(rom.MD2) ? 0 : -1); + ModifyHashCount(HashType.MD4, string.IsNullOrEmpty(rom.MD4) ? 0 : -1); + ModifyHashCount(HashType.MD5, string.IsNullOrEmpty(rom.MD5) ? 0 : -1); + ModifyHashCount(HashType.RIPEMD128, string.IsNullOrEmpty(rom.RIPEMD128) ? 0 : -1); + ModifyHashCount(HashType.RIPEMD160, string.IsNullOrEmpty(rom.RIPEMD160) ? 0 : -1); + ModifyHashCount(HashType.SHA1, string.IsNullOrEmpty(rom.SHA1) ? 0 : -1); + ModifyHashCount(HashType.SHA256, string.IsNullOrEmpty(rom.SHA256) ? 0 : -1); + ModifyHashCount(HashType.SHA384, string.IsNullOrEmpty(rom.SHA384) ? 0 : -1); + ModifyHashCount(HashType.SHA512, string.IsNullOrEmpty(rom.SHA512) ? 0 : -1); + ModifyHashCount(HashType.SpamSum, string.IsNullOrEmpty(rom.SpamSum) ? 0 : -1); + } + + ModifyStatusCount(ItemStatus.BadDump, status == ItemStatus.BadDump ? -1 : 0); + ModifyStatusCount(ItemStatus.Good, status == ItemStatus.Good ? -1 : 0); + ModifyStatusCount(ItemStatus.Nodump, status == ItemStatus.Nodump ? -1 : 0); + ModifyStatusCount(ItemStatus.Verified, status == ItemStatus.Verified ? -1 : 0); + } + + /// + /// Modify the hash count for a given hash type + /// + /// Hash type to change + /// Amount to change by + private void ModifyHashCount(HashType hashType, long interval) + { + // Skip if the interval is 0 + if (interval == 0) + return; + lock (_hashCounts) { if (!_hashCounts.ContainsKey(hashType)) @@ -306,10 +460,14 @@ namespace SabreTools.Metadata.DatFiles /// /// Increment the item count for a given item type /// - /// Item type to increment - /// Amount to increment by, defaults to 1 - private void AddItemCount(Data.Models.Metadata.ItemType itemType, long interval = 1) + /// Item type to change + /// Amount to change by + private void ModifyItemCount(Data.Models.Metadata.ItemType itemType, long interval) { + // Skip if the interval is 0 + if (interval == 0) + return; + lock (_itemCounts) { if (!_itemCounts.ContainsKey(itemType)) @@ -321,88 +479,17 @@ namespace SabreTools.Metadata.DatFiles } } - /// - /// Add to the statistics for a given Disk - /// - /// Item to add info from - private void AddItemStatistics(Disk disk) - { - ItemStatus? status = disk.Status; - if (status != ItemStatus.Nodump) - { - AddHashCount(HashType.MD5, string.IsNullOrEmpty(disk.MD5) ? 0 : 1); - AddHashCount(HashType.SHA1, string.IsNullOrEmpty(disk.SHA1) ? 0 : 1); - } - - AddStatusCount(ItemStatus.BadDump, status == ItemStatus.BadDump ? 1 : 0); - AddStatusCount(ItemStatus.Good, status == ItemStatus.Good ? 1 : 0); - AddStatusCount(ItemStatus.Nodump, status == ItemStatus.Nodump ? 1 : 0); - AddStatusCount(ItemStatus.Verified, status == ItemStatus.Verified ? 1 : 0); - } - - /// - /// Add to the statistics for a given File - /// - /// Item to add info from - private void AddItemStatistics(File file) - { - TotalSize += file.Size ?? 0; - AddHashCount(HashType.CRC32, string.IsNullOrEmpty(file.CRC) ? 0 : 1); - AddHashCount(HashType.MD5, string.IsNullOrEmpty(file.MD5) ? 0 : 1); - AddHashCount(HashType.SHA1, string.IsNullOrEmpty(file.SHA1) ? 0 : 1); - AddHashCount(HashType.SHA256, string.IsNullOrEmpty(file.SHA256) ? 0 : 1); - } - - /// - /// Add to the statistics for a given Media - /// - /// Item to add info from - private void AddItemStatistics(Media media) - { - AddHashCount(HashType.MD5, string.IsNullOrEmpty(media.MD5) ? 0 : 1); - AddHashCount(HashType.SHA1, string.IsNullOrEmpty(media.SHA1) ? 0 : 1); - AddHashCount(HashType.SHA256, string.IsNullOrEmpty(media.SHA256) ? 0 : 1); - AddHashCount(HashType.SpamSum, string.IsNullOrEmpty(media.SpamSum) ? 0 : 1); - } - - /// - /// Add to the statistics for a given Rom - /// - /// Item to add info from - private void AddItemStatistics(Rom rom) - { - ItemStatus? status = rom.Status; - if (status != ItemStatus.Nodump) - { - TotalSize += rom.Size ?? 0; - AddHashCount(HashType.CRC16, string.IsNullOrEmpty(rom.CRC16) ? 0 : 1); - AddHashCount(HashType.CRC32, string.IsNullOrEmpty(rom.CRC) ? 0 : 1); - AddHashCount(HashType.CRC64, string.IsNullOrEmpty(rom.CRC64) ? 0 : 1); - AddHashCount(HashType.MD2, string.IsNullOrEmpty(rom.MD2) ? 0 : 1); - AddHashCount(HashType.MD4, string.IsNullOrEmpty(rom.MD4) ? 0 : 1); - AddHashCount(HashType.MD5, string.IsNullOrEmpty(rom.MD5) ? 0 : 1); - AddHashCount(HashType.RIPEMD128, string.IsNullOrEmpty(rom.RIPEMD128) ? 0 : 1); - AddHashCount(HashType.RIPEMD160, string.IsNullOrEmpty(rom.RIPEMD160) ? 0 : 1); - AddHashCount(HashType.SHA1, string.IsNullOrEmpty(rom.SHA1) ? 0 : 1); - AddHashCount(HashType.SHA256, string.IsNullOrEmpty(rom.SHA256) ? 0 : 1); - AddHashCount(HashType.SHA384, string.IsNullOrEmpty(rom.SHA384) ? 0 : 1); - AddHashCount(HashType.SHA512, string.IsNullOrEmpty(rom.SHA512) ? 0 : 1); - AddHashCount(HashType.SpamSum, string.IsNullOrEmpty(rom.SpamSum) ? 0 : 1); - } - - AddStatusCount(ItemStatus.BadDump, status == ItemStatus.BadDump ? 1 : 0); - AddStatusCount(ItemStatus.Good, status == ItemStatus.Good ? 1 : 0); - AddStatusCount(ItemStatus.Nodump, status == ItemStatus.Nodump ? 1 : 0); - AddStatusCount(ItemStatus.Verified, status == ItemStatus.Verified ? 1 : 0); - } - /// /// Increment the item count for a given item status /// - /// Item type to increment - /// Amount to increment by, defaults to 1 - private void AddStatusCount(ItemStatus itemStatus, long interval = 1) + /// Item type to change + /// Amount to change by + private void ModifyStatusCount(ItemStatus itemStatus, long interval) { + // Skip if the interval is 0 + if (interval == 0) + return; + lock (_statusCounts) { if (!_statusCounts.ContainsKey(itemStatus)) @@ -414,135 +501,6 @@ namespace SabreTools.Metadata.DatFiles } } - /// - /// Decrement the hash count for a given hash type - /// - /// Hash type to increment - /// Amount to increment by, defaults to 1 - private void RemoveHashCount(HashType hashType, long interval = 1) - { - lock (_hashCounts) - { - if (!_hashCounts.ContainsKey(hashType)) - return; - - _hashCounts[hashType] -= interval; - if (_hashCounts[hashType] < 0) - _hashCounts[hashType] = 0; - } - } - - /// - /// Decrement the item count for a given item type - /// - /// Item type to decrement - /// Amount to increment by, defaults to 1 - private void RemoveItemCount(Data.Models.Metadata.ItemType itemType, long interval = 1) - { - lock (_itemCounts) - { - if (!_itemCounts.ContainsKey(itemType)) - return; - - _itemCounts[itemType] -= interval; - if (_itemCounts[itemType] < 0) - _itemCounts[itemType] = 0; - } - } - - /// - /// Remove from the statistics given a Disk - /// - /// Item to remove info for - private void RemoveItemStatistics(Disk disk) - { - ItemStatus? status = disk.Status; - if (status != ItemStatus.Nodump) - { - RemoveHashCount(HashType.MD5, string.IsNullOrEmpty(disk.MD5) ? 0 : 1); - RemoveHashCount(HashType.SHA1, string.IsNullOrEmpty(disk.SHA1) ? 0 : 1); - } - - RemoveStatusCount(ItemStatus.BadDump, status == ItemStatus.BadDump ? 1 : 0); - RemoveStatusCount(ItemStatus.Good, status == ItemStatus.Good ? 1 : 0); - RemoveStatusCount(ItemStatus.Nodump, status == ItemStatus.Nodump ? 1 : 0); - RemoveStatusCount(ItemStatus.Verified, status == ItemStatus.Verified ? 1 : 0); - } - - /// - /// Remove from the statistics given a File - /// - /// Item to remove info for - private void RemoveItemStatistics(File file) - { - TotalSize -= file.Size ?? 0; - RemoveHashCount(HashType.CRC32, string.IsNullOrEmpty(file.CRC) ? 0 : 1); - RemoveHashCount(HashType.MD5, string.IsNullOrEmpty(file.MD5) ? 0 : 1); - RemoveHashCount(HashType.SHA1, string.IsNullOrEmpty(file.SHA1) ? 0 : 1); - RemoveHashCount(HashType.SHA256, string.IsNullOrEmpty(file.SHA256) ? 0 : 1); - } - - /// - /// Remove from the statistics given a Media - /// - /// Item to remove info for - private void RemoveItemStatistics(Media media) - { - RemoveHashCount(HashType.MD5, string.IsNullOrEmpty(media.MD5) ? 0 : 1); - RemoveHashCount(HashType.SHA1, string.IsNullOrEmpty(media.SHA1) ? 0 : 1); - RemoveHashCount(HashType.SHA256, string.IsNullOrEmpty(media.SHA256) ? 0 : 1); - RemoveHashCount(HashType.SpamSum, string.IsNullOrEmpty(media.SpamSum) ? 0 : 1); - } - - /// - /// Remove from the statistics given a Rom - /// - /// Item to remove info for - private void RemoveItemStatistics(Rom rom) - { - ItemStatus? status = rom.Status; - if (status != ItemStatus.Nodump) - { - TotalSize -= rom.Size ?? 0; - RemoveHashCount(HashType.CRC16, string.IsNullOrEmpty(rom.CRC16) ? 0 : 1); - RemoveHashCount(HashType.CRC32, string.IsNullOrEmpty(rom.CRC) ? 0 : 1); - RemoveHashCount(HashType.CRC64, string.IsNullOrEmpty(rom.CRC64) ? 0 : 1); - RemoveHashCount(HashType.MD2, string.IsNullOrEmpty(rom.MD2) ? 0 : 1); - RemoveHashCount(HashType.MD4, string.IsNullOrEmpty(rom.MD4) ? 0 : 1); - RemoveHashCount(HashType.MD5, string.IsNullOrEmpty(rom.MD5) ? 0 : 1); - RemoveHashCount(HashType.RIPEMD128, string.IsNullOrEmpty(rom.RIPEMD128) ? 0 : 1); - RemoveHashCount(HashType.RIPEMD160, string.IsNullOrEmpty(rom.RIPEMD160) ? 0 : 1); - RemoveHashCount(HashType.SHA1, string.IsNullOrEmpty(rom.SHA1) ? 0 : 1); - RemoveHashCount(HashType.SHA256, string.IsNullOrEmpty(rom.SHA256) ? 0 : 1); - RemoveHashCount(HashType.SHA384, string.IsNullOrEmpty(rom.SHA384) ? 0 : 1); - RemoveHashCount(HashType.SHA512, string.IsNullOrEmpty(rom.SHA512) ? 0 : 1); - RemoveHashCount(HashType.SpamSum, string.IsNullOrEmpty(rom.SpamSum) ? 0 : 1); - } - - RemoveStatusCount(ItemStatus.BadDump, status == ItemStatus.BadDump ? 1 : 0); - RemoveStatusCount(ItemStatus.Good, status == ItemStatus.Good ? 1 : 0); - RemoveStatusCount(ItemStatus.Nodump, status == ItemStatus.Nodump ? 1 : 0); - RemoveStatusCount(ItemStatus.Verified, status == ItemStatus.Verified ? 1 : 0); - } - - /// - /// Decrement the item count for a given item status - /// - /// Item type to decrement - /// Amount to increment by, defaults to 1 - private void RemoveStatusCount(ItemStatus itemStatus, long interval = 1) - { - lock (_statusCounts) - { - if (!_statusCounts.ContainsKey(itemStatus)) - return; - - _statusCounts[itemStatus] -= interval; - if (_statusCounts[itemStatus] < 0) - _statusCounts[itemStatus] = 0; - } - } - #endregion } } From d8e4f963c058525beb4f7763a65a2d6685b7c73e Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sun, 5 Apr 2026 11:15:07 -0400 Subject: [PATCH 119/142] Statically cache item type names to avoid slowdowns --- SabreTools.Metadata.Filter/FilterKey.cs | 10 ++++++---- SabreTools.Metadata.Filter/FilterRunner.cs | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/SabreTools.Metadata.Filter/FilterKey.cs b/SabreTools.Metadata.Filter/FilterKey.cs index ee08f2e8..b8867fd8 100644 --- a/SabreTools.Metadata.Filter/FilterKey.cs +++ b/SabreTools.Metadata.Filter/FilterKey.cs @@ -18,6 +18,11 @@ namespace SabreTools.Metadata.Filter /// public readonly string FieldName; + /// + /// Cached item type names for filter selection + /// + private static readonly string[] _datItemTypeNames = TypeHelper.GetDatItemTypeNames(); + /// /// Validating combined key constructor /// @@ -149,12 +154,9 @@ namespace SabreTools.Metadata.Filter if (string.Equals(itemName, "datitem", StringComparison.OrdinalIgnoreCase) || string.Equals(itemName, "item", StringComparison.OrdinalIgnoreCase)) { - // Get all item types - var itemTypes = TypeHelper.GetDatItemTypeNames(); - // If we get any matches string localFieldName = fieldName; - string? matchedType = Array.Find(itemTypes, t => DatItemContainsField(t, localFieldName)); + string? matchedType = Array.Find(_datItemTypeNames, t => DatItemContainsField(t, localFieldName)); if (matchedType is not null) { // Check for a matching field diff --git a/SabreTools.Metadata.Filter/FilterRunner.cs b/SabreTools.Metadata.Filter/FilterRunner.cs index 433a3037..6d932b49 100644 --- a/SabreTools.Metadata.Filter/FilterRunner.cs +++ b/SabreTools.Metadata.Filter/FilterRunner.cs @@ -17,7 +17,7 @@ namespace SabreTools.Metadata.Filter /// /// Cached item type names for filter selection /// - private readonly string[] _datItemTypeNames = TypeHelper.GetDatItemTypeNames(); + private static readonly string[] _datItemTypeNames = TypeHelper.GetDatItemTypeNames(); public FilterRunner(FilterObject[] filters) { From 15794e07f76fb7ba834038e0dc32acb42b5106da Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sun, 5 Apr 2026 11:21:56 -0400 Subject: [PATCH 120/142] Remove one reflection-based helper --- SabreTools.Metadata.Filter/FilterKey.cs | 6 ++- SabreTools.Metadata.Filter/FilterRunner.cs | 10 +++-- SabreTools.Metadata/TypeHelper.cs | 43 ---------------------- 3 files changed, 12 insertions(+), 47 deletions(-) diff --git a/SabreTools.Metadata.Filter/FilterKey.cs b/SabreTools.Metadata.Filter/FilterKey.cs index b8867fd8..8d0160b1 100644 --- a/SabreTools.Metadata.Filter/FilterKey.cs +++ b/SabreTools.Metadata.Filter/FilterKey.cs @@ -21,7 +21,11 @@ namespace SabreTools.Metadata.Filter /// /// Cached item type names for filter selection /// - private static readonly string[] _datItemTypeNames = TypeHelper.GetDatItemTypeNames(); +#if NET5_0_OR_GREATER + private static readonly string[] _datItemTypeNames = Enum.GetNames(); +#else + private static readonly string[] _datItemTypeNames = Enum.GetNames(typeof(ItemType)); +#endif /// /// Validating combined key constructor diff --git a/SabreTools.Metadata.Filter/FilterRunner.cs b/SabreTools.Metadata.Filter/FilterRunner.cs index 6d932b49..8ab6fa96 100644 --- a/SabreTools.Metadata.Filter/FilterRunner.cs +++ b/SabreTools.Metadata.Filter/FilterRunner.cs @@ -17,7 +17,11 @@ namespace SabreTools.Metadata.Filter /// /// Cached item type names for filter selection /// - private static readonly string[] _datItemTypeNames = TypeHelper.GetDatItemTypeNames(); +#if NET5_0_OR_GREATER + private static readonly string[] _datItemTypeNames = Enum.GetNames(); +#else + private static readonly string[] _datItemTypeNames = Enum.GetNames(typeof(ItemType)); +#endif public FilterRunner(FilterObject[] filters) { @@ -38,7 +42,7 @@ namespace SabreTools.Metadata.Filter { Header => "header", Machine => "machine", - DatItem => TypeHelper.GetXmlRootAttributeElementName(obj.GetType()), + DatItem datItem => datItem.ItemType.ToString(), _ => null, }; @@ -52,7 +56,7 @@ namespace SabreTools.Metadata.Filter // Skip filters not applicable to the item if (filterKey.StartsWith("item.") && Array.IndexOf(_datItemTypeNames, itemName) == -1) continue; - else if (!filterKey.StartsWith("item.") && !filterKey.StartsWith(itemName)) + else if (!filterKey.StartsWith("item.") && !filterKey.StartsWith(itemName, StringComparison.OrdinalIgnoreCase)) continue; // If we don't get a match, it's a failure diff --git a/SabreTools.Metadata/TypeHelper.cs b/SabreTools.Metadata/TypeHelper.cs index 7e732e67..4a42a98d 100644 --- a/SabreTools.Metadata/TypeHelper.cs +++ b/SabreTools.Metadata/TypeHelper.cs @@ -1,5 +1,4 @@ using System; -using System.Collections.Generic; using System.Reflection; using System.Xml.Serialization; using SabreTools.Data.Models.Metadata; @@ -9,48 +8,6 @@ namespace SabreTools.Metadata // TODO: Investigate ways of either caching or speeding up these methods public static class TypeHelper { - /// - /// Attempt to get all DatItem types - /// - public static string[] GetDatItemTypeNames() - { - List typeNames = []; - - // Loop through all loaded assemblies - foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies()) - { - // If not all types can be loaded, use the ones that could be - Type?[] assemblyTypes = []; - try - { - assemblyTypes = assembly.GetTypes(); - } - catch (ReflectionTypeLoadException rtle) - { - assemblyTypes = Array.FindAll(rtle.Types ?? [], t => t is not null); - } - - // Loop through all types - foreach (Type? type in assemblyTypes) - { - // If the type is invalid - if (type is null) - continue; - - // If the type isn't a class or doesn't implement the interface - if (!type.IsClass || !typeof(DatItem).IsAssignableFrom(type)) - continue; - - // Get the XML type name - string? elementName = GetXmlRootAttributeElementName(type); - if (elementName is not null) - typeNames.Add(elementName); - } - } - - return [.. typeNames]; - } - /// /// Attempt to get the DatItem type from the name /// From d78c1eb9eda271d7fa45bc2df9407c5fe7b37763 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sun, 5 Apr 2026 11:24:47 -0400 Subject: [PATCH 121/142] GetProperties is only used by filters --- SabreTools.Metadata.Filter/FilterKey.cs | 23 ++++++++++++++++++++--- SabreTools.Metadata/TypeHelper.cs | 16 ---------------- 2 files changed, 20 insertions(+), 19 deletions(-) diff --git a/SabreTools.Metadata.Filter/FilterKey.cs b/SabreTools.Metadata.Filter/FilterKey.cs index 8d0160b1..6ecda77e 100644 --- a/SabreTools.Metadata.Filter/FilterKey.cs +++ b/SabreTools.Metadata.Filter/FilterKey.cs @@ -1,4 +1,5 @@ using System; +using System.Reflection; using SabreTools.Data.Models.Metadata; namespace SabreTools.Metadata.Filter @@ -111,7 +112,7 @@ namespace SabreTools.Metadata.Filter private static bool ParseHeaderFilterId(ref string itemName, ref string fieldName) { // Get the set of properties - var properties = TypeHelper.GetProperties(typeof(Header)); + var properties = GetProperties(typeof(Header)); if (properties is null) return false; @@ -133,7 +134,7 @@ namespace SabreTools.Metadata.Filter private static bool ParseMachineFilterId(ref string itemName, ref string fieldName) { // Get the set of properties - var properties = TypeHelper.GetProperties(typeof(Machine)); + var properties = GetProperties(typeof(Machine)); if (properties is null) return false; @@ -206,7 +207,7 @@ namespace SabreTools.Metadata.Filter return null; // Get the set of properties - var properties = TypeHelper.GetProperties(itemType); + var properties = GetProperties(itemType); if (properties is null) return null; @@ -214,5 +215,21 @@ namespace SabreTools.Metadata.Filter string? propertyMatch = Array.Find(properties, c => string.Equals(c, fieldName, StringComparison.OrdinalIgnoreCase)); return propertyMatch?.ToLowerInvariant(); } + + /// + /// Get property names for the given type, if possible + /// + private static string[]? GetProperties(Type? type) + { + if (type is null) + return null; + + var properties = type.GetProperties(BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public); + if (properties is null) + return null; + + string[] propertyNames = Array.ConvertAll(properties, f => f.Name); + return Array.FindAll(propertyNames, s => s.Length > 0); + } } } diff --git a/SabreTools.Metadata/TypeHelper.cs b/SabreTools.Metadata/TypeHelper.cs index 4a42a98d..1f6b3475 100644 --- a/SabreTools.Metadata/TypeHelper.cs +++ b/SabreTools.Metadata/TypeHelper.cs @@ -55,22 +55,6 @@ namespace SabreTools.Metadata return null; } - /// - /// Get property names for the given type, if possible - /// - public static string[]? GetProperties(Type? type) - { - if (type is null) - return null; - - var properties = type.GetProperties(BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public); - if (properties is null) - return null; - - string[] propertyNames = Array.ConvertAll(properties, f => f.Name); - return Array.FindAll(propertyNames, s => s.Length > 0); - } - /// /// Attempt to get the XmlRootAttribute.ElementName value from a type /// From d6edc33dd216e288ada94acf2be728a8918de957 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sun, 5 Apr 2026 11:28:48 -0400 Subject: [PATCH 122/142] TypeHelper was only used by Filter in general --- SabreTools.Metadata.Filter/FilterKey.cs | 58 +++++++++++++++++++- SabreTools.Metadata/TypeHelper.cs | 73 ------------------------- 2 files changed, 57 insertions(+), 74 deletions(-) delete mode 100644 SabreTools.Metadata/TypeHelper.cs diff --git a/SabreTools.Metadata.Filter/FilterKey.cs b/SabreTools.Metadata.Filter/FilterKey.cs index 6ecda77e..7666d353 100644 --- a/SabreTools.Metadata.Filter/FilterKey.cs +++ b/SabreTools.Metadata.Filter/FilterKey.cs @@ -1,5 +1,6 @@ using System; using System.Reflection; +using System.Xml.Serialization; using SabreTools.Data.Models.Metadata; namespace SabreTools.Metadata.Filter @@ -202,7 +203,7 @@ namespace SabreTools.Metadata.Filter private static string? GetMatchingField(string itemName, string fieldName) { // Get the correct item type - var itemType = TypeHelper.GetDatItemType(itemName.ToLowerInvariant()); + var itemType = GetDatItemType(itemName.ToLowerInvariant()); if (itemType is null) return null; @@ -216,6 +217,59 @@ namespace SabreTools.Metadata.Filter return propertyMatch?.ToLowerInvariant(); } + #region Reflection-based Helpers + + /// + /// Attempt to get the DatItem type from the name + /// + private static Type? GetDatItemType(string? itemType) + { + if (string.IsNullOrEmpty(itemType)) + return null; + + // Loop through all loaded assemblies + foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies()) + { + // If not all types can be loaded, use the ones that could be + Type?[] assemblyTypes = []; + try + { + assemblyTypes = assembly.GetTypes(); + } + catch (ReflectionTypeLoadException rtle) + { + assemblyTypes = Array.FindAll(rtle.Types ?? [], t => t is not null); + } + + // Loop through all types + foreach (Type? type in assemblyTypes) + { + // If the type is invalid + if (type is null) + continue; + + // If the type isn't a class or doesn't implement the interface + if (!type.IsClass || !typeof(DatItem).IsAssignableFrom(type)) + continue; + + // Get the XML type name +#if NET20 || NET35 || NET40 + string? elementName = (Attribute.GetCustomAttribute(type, typeof(XmlRootAttribute)) as XmlRootAttribute)!.ElementName; +#else + string? elementName = type.GetCustomAttribute()?.ElementName; +#endif + if (elementName is null) + continue; + + // If the name matches + if (string.Equals(elementName, itemType, StringComparison.OrdinalIgnoreCase)) + return type; + } + } + + return null; + } + /// /// Get property names for the given type, if possible /// @@ -231,5 +285,7 @@ namespace SabreTools.Metadata.Filter string[] propertyNames = Array.ConvertAll(properties, f => f.Name); return Array.FindAll(propertyNames, s => s.Length > 0); } + + #endregion } } diff --git a/SabreTools.Metadata/TypeHelper.cs b/SabreTools.Metadata/TypeHelper.cs deleted file mode 100644 index 1f6b3475..00000000 --- a/SabreTools.Metadata/TypeHelper.cs +++ /dev/null @@ -1,73 +0,0 @@ -using System; -using System.Reflection; -using System.Xml.Serialization; -using SabreTools.Data.Models.Metadata; - -namespace SabreTools.Metadata -{ - // TODO: Investigate ways of either caching or speeding up these methods - public static class TypeHelper - { - /// - /// Attempt to get the DatItem type from the name - /// - public static Type? GetDatItemType(string? itemType) - { - if (string.IsNullOrEmpty(itemType)) - return null; - - // Loop through all loaded assemblies - foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies()) - { - // If not all types can be loaded, use the ones that could be - Type?[] assemblyTypes = []; - try - { - assemblyTypes = assembly.GetTypes(); - } - catch (ReflectionTypeLoadException rtle) - { - assemblyTypes = Array.FindAll(rtle.Types ?? [], t => t is not null); - } - - // Loop through all types - foreach (Type? type in assemblyTypes) - { - // If the type is invalid - if (type is null) - continue; - - // If the type isn't a class or doesn't implement the interface - if (!type.IsClass || !typeof(DatItem).IsAssignableFrom(type)) - continue; - - // Get the XML type name - string? elementName = GetXmlRootAttributeElementName(type); - if (elementName is null) - continue; - - // If the name matches - if (string.Equals(elementName, itemType, StringComparison.OrdinalIgnoreCase)) - return type; - } - } - - return null; - } - - /// - /// Attempt to get the XmlRootAttribute.ElementName value from a type - /// - public static string? GetXmlRootAttributeElementName(Type? type) - { - if (type is null) - return null; - -#if NET20 || NET35 || NET40 - return (Attribute.GetCustomAttribute(type, typeof(XmlRootAttribute)) as XmlRootAttribute)!.ElementName; -#else - return type.GetCustomAttribute()?.ElementName; -#endif - } - } -} From fe0768dad78fe04e9dd4909d9ebb67090634d664 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sun, 5 Apr 2026 14:02:06 -0400 Subject: [PATCH 123/142] DepotInformation should be responsible for path generation --- .../DepotInformationTests.cs | 47 ++++++++++++++ SabreTools.Metadata.DatFiles/DatFile.cs | 6 +- .../DepotInformation.cs | 61 ++++++++++++++++++- SabreTools.Metadata.Test/UtilitiesTests.cs | 38 ------------ SabreTools.Metadata/Utilities.cs | 50 +-------------- 5 files changed, 110 insertions(+), 92 deletions(-) create mode 100644 SabreTools.Metadata.DatFiles.Test/DepotInformationTests.cs diff --git a/SabreTools.Metadata.DatFiles.Test/DepotInformationTests.cs b/SabreTools.Metadata.DatFiles.Test/DepotInformationTests.cs new file mode 100644 index 00000000..1a3ad828 --- /dev/null +++ b/SabreTools.Metadata.DatFiles.Test/DepotInformationTests.cs @@ -0,0 +1,47 @@ +using Xunit; + +namespace SabreTools.Metadata.DatFiles.Test +{ + public class DepotInformationTests + { + #region GetDepotPath + + [Theory] + [InlineData(null, 0, null)] + [InlineData(null, 4, null)] + [InlineData(new byte[] { 0x12, 0x34, 0x56 }, 0, null)] + [InlineData(new byte[] { 0x12, 0x34, 0x56 }, 4, null)] + [InlineData(new byte[] { 0xda, 0x39, 0xa3, 0xee, 0x5e, 0x6b, 0x4b, 0x0d, 0x32, 0x55, 0xbf, 0xef, 0x95, 0x60, 0x18, 0x90, 0xaf, 0xd8, 0x07, 0x09 }, -1, "da39a3ee5e6b4b0d3255bfef95601890afd80709.gz")] + [InlineData(new byte[] { 0xda, 0x39, 0xa3, 0xee, 0x5e, 0x6b, 0x4b, 0x0d, 0x32, 0x55, 0xbf, 0xef, 0x95, 0x60, 0x18, 0x90, 0xaf, 0xd8, 0x07, 0x09 }, 0, "da39a3ee5e6b4b0d3255bfef95601890afd80709.gz")] + [InlineData(new byte[] { 0xda, 0x39, 0xa3, 0xee, 0x5e, 0x6b, 0x4b, 0x0d, 0x32, 0x55, 0xbf, 0xef, 0x95, 0x60, 0x18, 0x90, 0xaf, 0xd8, 0x07, 0x09 }, 1, "da\\da39a3ee5e6b4b0d3255bfef95601890afd80709.gz")] + public void GetDepotPath_Array(byte[]? hash, int depth, string? expected) + { + var depot = new DepotInformation(isActive: true, depth: depth); + string? actual = depot.GetDepotPath(hash); + if (System.IO.Path.DirectorySeparatorChar == '/') + expected = expected?.Replace('\\', '/'); + + Assert.Equal(expected, actual); + } + + [Theory] + [InlineData(null, 0, null)] + [InlineData(null, 4, null)] + [InlineData("123456", 0, null)] + [InlineData("123456", 4, null)] + [InlineData("da39a3ee5e6b4b0d3255bfef95601890afd80709", -1, "da39a3ee5e6b4b0d3255bfef95601890afd80709.gz")] + [InlineData("da39a3ee5e6b4b0d3255bfef95601890afd80709", 0, "da39a3ee5e6b4b0d3255bfef95601890afd80709.gz")] + [InlineData("da39a3ee5e6b4b0d3255bfef95601890afd80709", 1, "da\\da39a3ee5e6b4b0d3255bfef95601890afd80709.gz")] + public void GetDepotPath_String(string? hash, int depth, string? expected) + { + var depot = new DepotInformation(isActive: true, depth: depth); + string? actual = depot.GetDepotPath(hash); + if (System.IO.Path.DirectorySeparatorChar == '/') + expected = expected?.Replace('\\', '/'); + + Assert.Equal(expected, actual); + } + + #endregion + } +} diff --git a/SabreTools.Metadata.DatFiles/DatFile.cs b/SabreTools.Metadata.DatFiles/DatFile.cs index 11818383..1a17abd5 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.cs @@ -506,7 +506,7 @@ namespace SabreTools.Metadata.DatFiles string? sha1 = disk.SHA1; if (!string.IsNullOrEmpty(sha1)) { - name = Utilities.GetDepotPath(sha1, Modifiers.OutputDepot.Depth)?.Replace('\\', '/'); + name = Modifiers.OutputDepot.GetDepotPath(sha1)?.Replace('\\', '/'); disk.Name = $"{pre}{name}{post}"; } } @@ -516,7 +516,7 @@ namespace SabreTools.Metadata.DatFiles string? sha1 = media.SHA1; if (!string.IsNullOrEmpty(sha1)) { - name = Utilities.GetDepotPath(sha1, Modifiers.OutputDepot.Depth)?.Replace('\\', '/'); + name = Modifiers.OutputDepot.GetDepotPath(sha1)?.Replace('\\', '/'); media.Name = $"{pre}{name}{post}"; } } @@ -526,7 +526,7 @@ namespace SabreTools.Metadata.DatFiles string? sha1 = rom.SHA1; if (!string.IsNullOrEmpty(sha1)) { - name = Utilities.GetDepotPath(sha1, Modifiers.OutputDepot.Depth)?.Replace('\\', '/'); + name = Modifiers.OutputDepot.GetDepotPath(sha1)?.Replace('\\', '/'); rom.Name = $"{pre}{name}{post}"; } } diff --git a/SabreTools.Metadata.DatFiles/DepotInformation.cs b/SabreTools.Metadata.DatFiles/DepotInformation.cs index 219b398d..4188f458 100644 --- a/SabreTools.Metadata.DatFiles/DepotInformation.cs +++ b/SabreTools.Metadata.DatFiles/DepotInformation.cs @@ -1,5 +1,7 @@ using System; +using System.IO; using SabreTools.Hashing; +using SabreTools.Text.Extensions; namespace SabreTools.Metadata.DatFiles { @@ -23,6 +25,11 @@ namespace SabreTools.Metadata.DatFiles /// public int Depth { get; } + /// + /// Maximum depth allowed for path generation + /// + private static readonly int MaximumDepth = HashType.SHA1.ZeroBytes.Length; + /// /// Constructor /// @@ -50,8 +57,8 @@ namespace SabreTools.Metadata.DatFiles Depth = 4; else if (Depth < 0) Depth = 0; - else if (Depth > HashType.SHA1.ZeroBytes.Length) - Depth = HashType.SHA1.ZeroBytes.Length; + else if (Depth > MaximumDepth) + Depth = MaximumDepth; } #region Cloning @@ -62,5 +69,55 @@ namespace SabreTools.Metadata.DatFiles public object Clone() => new DepotInformation(Name, IsActive, Depth); #endregion + + #region Path Generation + + /// + /// Get a proper romba subpath + /// + /// SHA-1 hash to get the path for + /// Positive value representing the depth of the depot + /// Subfolder path for the given hash, including the filename and .gz extension + public string? GetDepotPath(byte[]? hash) + { + string? sha1 = hash.ToHexString(); + return GetDepotPath(sha1); + } + + /// + /// Get a proper romba subpath + /// + /// SHA-1 hash to get the path for + /// Subfolder path for the given hash, including the filename and .gz extension + public string? GetDepotPath(string? hash) + { + // If the hash is null, then we return null + if (hash is null) + return null; + + // If the hash isn't the right size, then we return null + if (hash.Length != HashType.SHA1.ZeroString.Length) + return null; + + // Cap the depth between 0 and 20, for now + int depth = Depth; + if (depth < 0) + depth = 0; + else if (depth > MaximumDepth) + depth = MaximumDepth; + + // Loop through and generate the subdirectory + string path = string.Empty; + for (int i = 0; i < depth; i++) + { + path += hash.Substring(i * 2, 2) + Path.DirectorySeparatorChar; + } + + // Now append the filename + path += $"{hash}.gz"; + return path; + } + + #endregion } } diff --git a/SabreTools.Metadata.Test/UtilitiesTests.cs b/SabreTools.Metadata.Test/UtilitiesTests.cs index fdc34b8d..1344505c 100644 --- a/SabreTools.Metadata.Test/UtilitiesTests.cs +++ b/SabreTools.Metadata.Test/UtilitiesTests.cs @@ -4,44 +4,6 @@ namespace SabreTools.Metadata.Test { public class UtilitiesTests { - #region GetDepotPath - - [Theory] - [InlineData(null, 0, null)] - [InlineData(null, 4, null)] - [InlineData(new byte[] { 0x12, 0x34, 0x56 }, 0, null)] - [InlineData(new byte[] { 0x12, 0x34, 0x56 }, 4, null)] - [InlineData(new byte[] { 0xda, 0x39, 0xa3, 0xee, 0x5e, 0x6b, 0x4b, 0x0d, 0x32, 0x55, 0xbf, 0xef, 0x95, 0x60, 0x18, 0x90, 0xaf, 0xd8, 0x07, 0x09 }, -1, "da39a3ee5e6b4b0d3255bfef95601890afd80709.gz")] - [InlineData(new byte[] { 0xda, 0x39, 0xa3, 0xee, 0x5e, 0x6b, 0x4b, 0x0d, 0x32, 0x55, 0xbf, 0xef, 0x95, 0x60, 0x18, 0x90, 0xaf, 0xd8, 0x07, 0x09 }, 0, "da39a3ee5e6b4b0d3255bfef95601890afd80709.gz")] - [InlineData(new byte[] { 0xda, 0x39, 0xa3, 0xee, 0x5e, 0x6b, 0x4b, 0x0d, 0x32, 0x55, 0xbf, 0xef, 0x95, 0x60, 0x18, 0x90, 0xaf, 0xd8, 0x07, 0x09 }, 1, "da\\da39a3ee5e6b4b0d3255bfef95601890afd80709.gz")] - public void GetDepotPath_Array(byte[]? hash, int depth, string? expected) - { - string? actual = Utilities.GetDepotPath(hash, depth); - if (System.IO.Path.DirectorySeparatorChar == '/') - expected = expected?.Replace('\\', '/'); - - Assert.Equal(expected, actual); - } - - [Theory] - [InlineData(null, 0, null)] - [InlineData(null, 4, null)] - [InlineData("123456", 0, null)] - [InlineData("123456", 4, null)] - [InlineData("da39a3ee5e6b4b0d3255bfef95601890afd80709", -1, "da39a3ee5e6b4b0d3255bfef95601890afd80709.gz")] - [InlineData("da39a3ee5e6b4b0d3255bfef95601890afd80709", 0, "da39a3ee5e6b4b0d3255bfef95601890afd80709.gz")] - [InlineData("da39a3ee5e6b4b0d3255bfef95601890afd80709", 1, "da\\da39a3ee5e6b4b0d3255bfef95601890afd80709.gz")] - public void GetDepotPath_String(string? hash, int depth, string? expected) - { - string? actual = Utilities.GetDepotPath(hash, depth); - if (System.IO.Path.DirectorySeparatorChar == '/') - expected = expected?.Replace('\\', '/'); - - Assert.Equal(expected, actual); - } - - #endregion - #region HasValidDatExtension [Theory] diff --git a/SabreTools.Metadata/Utilities.cs b/SabreTools.Metadata/Utilities.cs index 966e60d1..71a9516b 100644 --- a/SabreTools.Metadata/Utilities.cs +++ b/SabreTools.Metadata/Utilities.cs @@ -1,6 +1,4 @@ using System.IO; -using SabreTools.Hashing; -using SabreTools.Text.Extensions; namespace SabreTools.Metadata { @@ -9,53 +7,7 @@ namespace SabreTools.Metadata /// public static class Utilities { - /// - /// Get a proper romba sub path - /// - /// SHA-1 hash to get the path for - /// Positive value representing the depth of the depot - /// Subfolder path for the given hash - public static string? GetDepotPath(byte[]? hash, int depth) - { - string? sha1 = hash.ToHexString(); - return GetDepotPath(sha1, depth); - } - - /// - /// Get a proper romba sub path - /// - /// SHA-1 hash to get the path for - /// Positive value representing the depth of the depot - /// Subfolder path for the given hash - public static string? GetDepotPath(string? hash, int depth) - { - // If the hash is null, then we return null - if (hash is null) - return null; - - // If the hash isn't the right size, then we return null - if (hash.Length != HashType.SHA1.ZeroString.Length) - return null; - - // Cap the depth between 0 and 20, for now - if (depth < 0) - depth = 0; - else if (depth > HashType.SHA1.ZeroBytes.Length) - depth = HashType.SHA1.ZeroBytes.Length; - - // Loop through and generate the subdirectory - string path = string.Empty; - for (int i = 0; i < depth; i++) - { - path += hash.Substring(i * 2, 2) + Path.DirectorySeparatorChar; - } - - // Now append the filename - path += $"{hash}.gz"; - return path; - } - - /// + /// /// Get if the given path has a valid DAT extension /// /// Path to check From f6f5818767f45309147c3922179b85ef4580b7f1 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sun, 5 Apr 2026 14:58:29 -0400 Subject: [PATCH 124/142] This utility method has been relocated in ST --- README.MD | 1 - .../SabreTools.Metadata.DatFiles.Test.csproj | 1 - .../SabreTools.Metadata.DatFiles.csproj | 1 - .../SabreTools.Metadata.DatItems.csproj | 1 - .../SabreTools.Metadata.Filter.csproj | 3 +- .../SabreTools.Metadata.Test.csproj | 21 -------- SabreTools.Metadata.Test/UtilitiesTests.cs | 32 ------------ SabreTools.Metadata/README.MD | 3 -- .../SabreTools.Metadata.csproj | 42 ---------------- SabreTools.Metadata/Utilities.cs | 49 ------------------- SabreTools.Serialization.sln | 28 ----------- .../SabreTools.Serialization.csproj | 2 - publish-nix.sh | 1 - publish-win.ps1 | 1 - 14 files changed, 2 insertions(+), 184 deletions(-) delete mode 100644 SabreTools.Metadata.Test/SabreTools.Metadata.Test.csproj delete mode 100644 SabreTools.Metadata.Test/UtilitiesTests.cs delete mode 100644 SabreTools.Metadata/README.MD delete mode 100644 SabreTools.Metadata/SabreTools.Metadata.csproj delete mode 100644 SabreTools.Metadata/Utilities.cs diff --git a/README.MD b/README.MD index 56f6bbf7..115ee792 100644 --- a/README.MD +++ b/README.MD @@ -82,7 +82,6 @@ Below are a list of the included namespaces with links to their README files: - [SabreTools.Data.Extensions](https://github.com/SabreTools/SabreTools.Serialization/tree/main/SabreTools.Data.Extensions) - [SabreTools.Data.Models](https://github.com/SabreTools/SabreTools.Serialization/tree/main/SabreTools.Data.Models) -- [SabreTools.Metadata](https://github.com/SabreTools/SabreTools.Serialization/tree/main/SabreTools.Metadata) - [SabreTools.Metadata.DatFiles](https://github.com/SabreTools/SabreTools.Serialization/tree/main/SabreTools.Metadata.DatFiles) - [SabreTools.Metadata.DatItems](https://github.com/SabreTools/SabreTools.Serialization/tree/main/SabreTools.Metadata.Datitems) - [SabreTools.Metadata.Filter](https://github.com/SabreTools/SabreTools.Serialization/tree/main/SabreTools.Metadata.Filter) diff --git a/SabreTools.Metadata.DatFiles.Test/SabreTools.Metadata.DatFiles.Test.csproj b/SabreTools.Metadata.DatFiles.Test/SabreTools.Metadata.DatFiles.Test.csproj index 959644aa..1699dd34 100644 --- a/SabreTools.Metadata.DatFiles.Test/SabreTools.Metadata.DatFiles.Test.csproj +++ b/SabreTools.Metadata.DatFiles.Test/SabreTools.Metadata.DatFiles.Test.csproj @@ -16,7 +16,6 @@ - diff --git a/SabreTools.Metadata.DatFiles/SabreTools.Metadata.DatFiles.csproj b/SabreTools.Metadata.DatFiles/SabreTools.Metadata.DatFiles.csproj index 456ff794..6e3aa439 100644 --- a/SabreTools.Metadata.DatFiles/SabreTools.Metadata.DatFiles.csproj +++ b/SabreTools.Metadata.DatFiles/SabreTools.Metadata.DatFiles.csproj @@ -36,7 +36,6 @@ - diff --git a/SabreTools.Metadata.DatItems/SabreTools.Metadata.DatItems.csproj b/SabreTools.Metadata.DatItems/SabreTools.Metadata.DatItems.csproj index 32969615..b9f908bf 100644 --- a/SabreTools.Metadata.DatItems/SabreTools.Metadata.DatItems.csproj +++ b/SabreTools.Metadata.DatItems/SabreTools.Metadata.DatItems.csproj @@ -38,7 +38,6 @@ - diff --git a/SabreTools.Metadata.Filter/SabreTools.Metadata.Filter.csproj b/SabreTools.Metadata.Filter/SabreTools.Metadata.Filter.csproj index db5f8b40..f2f804c6 100644 --- a/SabreTools.Metadata.Filter/SabreTools.Metadata.Filter.csproj +++ b/SabreTools.Metadata.Filter/SabreTools.Metadata.Filter.csproj @@ -31,7 +31,8 @@ - + + diff --git a/SabreTools.Metadata.Test/SabreTools.Metadata.Test.csproj b/SabreTools.Metadata.Test/SabreTools.Metadata.Test.csproj deleted file mode 100644 index 805e3d58..00000000 --- a/SabreTools.Metadata.Test/SabreTools.Metadata.Test.csproj +++ /dev/null @@ -1,21 +0,0 @@ - - - - net8.0;net9.0;net10.0 - false - latest - enable - - - - - - - - - - - - - - \ No newline at end of file diff --git a/SabreTools.Metadata.Test/UtilitiesTests.cs b/SabreTools.Metadata.Test/UtilitiesTests.cs deleted file mode 100644 index 1344505c..00000000 --- a/SabreTools.Metadata.Test/UtilitiesTests.cs +++ /dev/null @@ -1,32 +0,0 @@ -using Xunit; - -namespace SabreTools.Metadata.Test -{ - public class UtilitiesTests - { - #region HasValidDatExtension - - [Theory] - [InlineData(null, false)] - [InlineData("", false)] - [InlineData("no-extension", false)] - [InlineData("no-extension.", false)] - [InlineData("invalid.ext", false)] - [InlineData("invalid..ext", false)] - [InlineData("INVALID.EXT", false)] - [InlineData("INVALID..EXT", false)] - [InlineData(".dat", true)] - [InlineData(".DAT", true)] - [InlineData("valid_extension.dat", true)] - [InlineData("valid_extension..dat", true)] - [InlineData("valid_extension.DAT", true)] - [InlineData("valid_extension..DAT", true)] - public void HasValidDatExtensionTest(string? path, bool expected) - { - bool actual = Utilities.HasValidDatExtension(path); - Assert.Equal(expected, actual); - } - - #endregion - } -} diff --git a/SabreTools.Metadata/README.MD b/SabreTools.Metadata/README.MD deleted file mode 100644 index 27ed651c..00000000 --- a/SabreTools.Metadata/README.MD +++ /dev/null @@ -1,3 +0,0 @@ -# SabreTools.Metadata - -This library contains common code used across multiple metadata file operations. diff --git a/SabreTools.Metadata/SabreTools.Metadata.csproj b/SabreTools.Metadata/SabreTools.Metadata.csproj deleted file mode 100644 index b412ad6a..00000000 --- a/SabreTools.Metadata/SabreTools.Metadata.csproj +++ /dev/null @@ -1,42 +0,0 @@ - - - - - net20;net35;net40;net452;net462;net472;net48;netcoreapp3.1;net5.0;net6.0;net7.0;net8.0;net9.0;net10.0;netstandard2.0;netstandard2.1 - true - false - false - true - latest - enable - true - snupkg - true - 2.3.0 - - - Matt Nadareski - Core functionality for metadata file processing - Copyright (c) Matt Nadareski 2016-2026 - https://github.com/SabreTools/ - README.md - https://github.com/SabreTools/SabreTools.Serialization - git - metadata dat datfile - MIT - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/SabreTools.Metadata/Utilities.cs b/SabreTools.Metadata/Utilities.cs deleted file mode 100644 index 71a9516b..00000000 --- a/SabreTools.Metadata/Utilities.cs +++ /dev/null @@ -1,49 +0,0 @@ -using System.IO; - -namespace SabreTools.Metadata -{ - /// - /// Static utility functions used throughout the library - /// - public static class Utilities - { - /// - /// Get if the given path has a valid DAT extension - /// - /// Path to check - /// True if the extension is valid, false otherwise - public static bool HasValidDatExtension(string? path) - { - // If the path is null or empty, then we return false - if (string.IsNullOrEmpty(path)) - return false; - - // Get the extension from the path, if possible - string ext = Path.GetExtension(path).TrimStart('.').ToLowerInvariant(); - - // Check against the list of known DAT extensions - return ext switch - { - "csv" => true, - "dat" => true, - "json" => true, - "md2" => true, - "md4" => true, - "md5" => true, - "ripemd128" => true, - "ripemd160" => true, - "sfv" => true, - "sha1" => true, - "sha256" => true, - "sha384" => true, - "sha512" => true, - "spamsum" => true, - "ssv" => true, - "tsv" => true, - "txt" => true, - "xml" => true, - _ => false, - }; - } - } -} diff --git a/SabreTools.Serialization.sln b/SabreTools.Serialization.sln index 4d6f4e26..5c811755 100644 --- a/SabreTools.Serialization.sln +++ b/SabreTools.Serialization.sln @@ -35,12 +35,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SabreTools.Serialization.Re EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SabreTools.Serialization.Writers.Test", "SabreTools.Serialization.Writers.Test\SabreTools.Serialization.Writers.Test.csproj", "{99619CA9-6D7D-4653-BD1E-8F586F219607}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SabreTools.Metadata", "SabreTools.Metadata\SabreTools.Metadata.csproj", "{F4C9FAE7-6777-4C1A-BEE7-DA664CA3485B}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SabreTools.Metadata.Filter", "SabreTools.Metadata.Filter\SabreTools.Metadata.Filter.csproj", "{76E096C6-72A9-4A5C-A250-95D2BBBFA5D1}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SabreTools.Metadata.Test", "SabreTools.Metadata.Test\SabreTools.Metadata.Test.csproj", "{D817566C-C94F-4ADE-A36A-F67B3F644299}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SabreTools.Metadata.Filter.Test", "SabreTools.Metadata.Filter.Test\SabreTools.Metadata.Filter.Test.csproj", "{43D66007-FCAA-4F69-893B-562B0B61B8B1}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SabreTools.Metadata.DatItems", "SabreTools.Metadata.DatItems\SabreTools.Metadata.DatItems.csproj", "{14931F5A-203A-4C22-A162-D38288B6A576}" @@ -253,18 +249,6 @@ Global {99619CA9-6D7D-4653-BD1E-8F586F219607}.Release|x64.Build.0 = Release|Any CPU {99619CA9-6D7D-4653-BD1E-8F586F219607}.Release|x86.ActiveCfg = Release|Any CPU {99619CA9-6D7D-4653-BD1E-8F586F219607}.Release|x86.Build.0 = Release|Any CPU - {F4C9FAE7-6777-4C1A-BEE7-DA664CA3485B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F4C9FAE7-6777-4C1A-BEE7-DA664CA3485B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F4C9FAE7-6777-4C1A-BEE7-DA664CA3485B}.Debug|x64.ActiveCfg = Debug|Any CPU - {F4C9FAE7-6777-4C1A-BEE7-DA664CA3485B}.Debug|x64.Build.0 = Debug|Any CPU - {F4C9FAE7-6777-4C1A-BEE7-DA664CA3485B}.Debug|x86.ActiveCfg = Debug|Any CPU - {F4C9FAE7-6777-4C1A-BEE7-DA664CA3485B}.Debug|x86.Build.0 = Debug|Any CPU - {F4C9FAE7-6777-4C1A-BEE7-DA664CA3485B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F4C9FAE7-6777-4C1A-BEE7-DA664CA3485B}.Release|Any CPU.Build.0 = Release|Any CPU - {F4C9FAE7-6777-4C1A-BEE7-DA664CA3485B}.Release|x64.ActiveCfg = Release|Any CPU - {F4C9FAE7-6777-4C1A-BEE7-DA664CA3485B}.Release|x64.Build.0 = Release|Any CPU - {F4C9FAE7-6777-4C1A-BEE7-DA664CA3485B}.Release|x86.ActiveCfg = Release|Any CPU - {F4C9FAE7-6777-4C1A-BEE7-DA664CA3485B}.Release|x86.Build.0 = Release|Any CPU {76E096C6-72A9-4A5C-A250-95D2BBBFA5D1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {76E096C6-72A9-4A5C-A250-95D2BBBFA5D1}.Debug|Any CPU.Build.0 = Debug|Any CPU {76E096C6-72A9-4A5C-A250-95D2BBBFA5D1}.Debug|x64.ActiveCfg = Debug|Any CPU @@ -277,18 +261,6 @@ Global {76E096C6-72A9-4A5C-A250-95D2BBBFA5D1}.Release|x64.Build.0 = Release|Any CPU {76E096C6-72A9-4A5C-A250-95D2BBBFA5D1}.Release|x86.ActiveCfg = Release|Any CPU {76E096C6-72A9-4A5C-A250-95D2BBBFA5D1}.Release|x86.Build.0 = Release|Any CPU - {D817566C-C94F-4ADE-A36A-F67B3F644299}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D817566C-C94F-4ADE-A36A-F67B3F644299}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D817566C-C94F-4ADE-A36A-F67B3F644299}.Debug|x64.ActiveCfg = Debug|Any CPU - {D817566C-C94F-4ADE-A36A-F67B3F644299}.Debug|x64.Build.0 = Debug|Any CPU - {D817566C-C94F-4ADE-A36A-F67B3F644299}.Debug|x86.ActiveCfg = Debug|Any CPU - {D817566C-C94F-4ADE-A36A-F67B3F644299}.Debug|x86.Build.0 = Debug|Any CPU - {D817566C-C94F-4ADE-A36A-F67B3F644299}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D817566C-C94F-4ADE-A36A-F67B3F644299}.Release|Any CPU.Build.0 = Release|Any CPU - {D817566C-C94F-4ADE-A36A-F67B3F644299}.Release|x64.ActiveCfg = Release|Any CPU - {D817566C-C94F-4ADE-A36A-F67B3F644299}.Release|x64.Build.0 = Release|Any CPU - {D817566C-C94F-4ADE-A36A-F67B3F644299}.Release|x86.ActiveCfg = Release|Any CPU - {D817566C-C94F-4ADE-A36A-F67B3F644299}.Release|x86.Build.0 = Release|Any CPU {43D66007-FCAA-4F69-893B-562B0B61B8B1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {43D66007-FCAA-4F69-893B-562B0B61B8B1}.Debug|Any CPU.Build.0 = Debug|Any CPU {43D66007-FCAA-4F69-893B-562B0B61B8B1}.Debug|x64.ActiveCfg = Debug|Any CPU diff --git a/SabreTools.Serialization/SabreTools.Serialization.csproj b/SabreTools.Serialization/SabreTools.Serialization.csproj index e55b7136..0e55eabf 100644 --- a/SabreTools.Serialization/SabreTools.Serialization.csproj +++ b/SabreTools.Serialization/SabreTools.Serialization.csproj @@ -41,8 +41,6 @@ - - diff --git a/publish-nix.sh b/publish-nix.sh index d6052210..43ef7555 100755 --- a/publish-nix.sh +++ b/publish-nix.sh @@ -81,7 +81,6 @@ if [ $NO_BUILD = false ]; then if [ $INCLUDE_UNPUBLISHED = true ]; then dotnet pack SabreTools.Data.Extensions/SabreTools.Data.Extensions.csproj --output $BUILD_FOLDER dotnet pack SabreTools.Data.Models/SabreTools.Data.Models.csproj --output $BUILD_FOLDER - dotnet pack SabreTools.Metadata/SabreTools.Metadata.csproj --output $BUILD_FOLDER dotnet pack SabreTools.Metadata.DatFiles/SabreTools.Metadata.DatFiles.csproj --output $BUILD_FOLDER dotnet pack SabreTools.Metadata.DatItems/SabreTools.Metadata.DatItems.csproj --output $BUILD_FOLDER dotnet pack SabreTools.Metadata.Filter/SabreTools.Metadata.Filter.csproj --output $BUILD_FOLDER diff --git a/publish-win.ps1 b/publish-win.ps1 index 681204d0..e3ef7611 100644 --- a/publish-win.ps1 +++ b/publish-win.ps1 @@ -72,7 +72,6 @@ if (!$NO_BUILD.IsPresent) { if ($INCLUDE_UNPUBLISHED.IsPresent) { dotnet pack SabreTools.Data.Extensions\SabreTools.Data.Extensions.csproj --output $BUILD_FOLDER dotnet pack SabreTools.Data.Models\SabreTools.Data.Models.csproj --output $BUILD_FOLDER - dotnet pack SabreTools.Metadata\SabreTools.Metadata.csproj --output $BUILD_FOLDER dotnet pack SabreTools.Metadata.DatFiles\SabreTools.Metadata.DatFiles.csproj --output $BUILD_FOLDER dotnet pack SabreTools.Metadata.DatItems\SabreTools.Metadata.DatItems.csproj --output $BUILD_FOLDER dotnet pack SabreTools.Metadata.Filter\SabreTools.Metadata.Filter.csproj --output $BUILD_FOLDER From 6a7d6e16b7b8ae29b1c2350c9ce7039bae914d42 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sun, 5 Apr 2026 19:28:06 -0400 Subject: [PATCH 125/142] Fix framework difference --- SabreTools.Metadata.DatFiles/DatFile.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SabreTools.Metadata.DatFiles/DatFile.cs b/SabreTools.Metadata.DatFiles/DatFile.cs index 1a17abd5..e177af3a 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.cs @@ -116,7 +116,7 @@ namespace SabreTools.Metadata.DatFiles { string[] splitpath = path.TrimEnd(Path.DirectorySeparatorChar).Split(Path.DirectorySeparatorChar); #if NETFRAMEWORK || NETSTANDARD - name = splitpath[splitpath.Length - 1]; + name = splitpath[splitpath.Length - 1] + (bare ? string.Empty : $" ({date})"); description = splitpath[splitpath.Length - 1] + (bare ? string.Empty : $" ({date})"); #else name = splitpath[^1] + (bare ? string.Empty : $" ({date})"); From e2b2f4d8a5e76ddefb887a0cbcb70c3f3e55ed35 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Mon, 6 Apr 2026 07:44:19 -0400 Subject: [PATCH 126/142] Rename "CRC" to "CRC32" where appropriate --- .../MetadataExtensionsTests.cs | 164 +++++++++--------- .../MetadataExtensions.cs | 26 +-- SabreTools.Data.Models/Metadata/Rom.cs | 8 +- .../DatFileTests.Filtering.cs | 4 +- .../DatFileTests.FromMetadata.cs | 4 +- .../DatFileTests.Splitting.cs | 76 ++++---- .../DatFileTests.ToMetadata.cs | 2 +- .../DatFileTests.cs | 78 ++++----- .../DatStatisticsTests.cs | 2 +- .../FormatsTests.cs | 12 +- .../ItemDictionaryDBTests.cs | 40 ++--- .../ItemDictionaryTests.cs | 40 ++--- SabreTools.Metadata.DatFiles/DatFile.cs | 19 +- SabreTools.Metadata.DatFiles/DatStatistics.cs | 4 +- .../Formats/ClrMamePro.cs | 2 +- .../Formats/DosCenter.cs | 4 +- .../Formats/EverdriveSmdb.cs | 4 +- .../Formats/Listrom.cs | 4 +- .../Formats/Listxml.cs | 2 +- .../Formats/Logiqx.cs | 2 +- .../Formats/OfflineList.cs | 4 +- .../Formats/RomCenter.cs | 4 +- .../Formats/SeparatedValue.cs | 2 +- .../Formats/SfvFile.cs | 4 +- .../ItemDictionary.cs | 8 +- .../ItemDictionaryDB.cs | 8 +- .../DatItemTests.cs | 18 +- .../Formats/DiskTests.cs | 8 +- .../Formats/FileTests.cs | 10 +- .../Formats/MediaTests.cs | 8 +- .../Formats/RomTests.cs | 78 ++++----- SabreTools.Metadata.DatItems/DatItem.cs | 2 +- SabreTools.Metadata.DatItems/Enums.cs | 2 +- SabreTools.Metadata.DatItems/Formats/File.cs | 4 +- SabreTools.Metadata.DatItems/Formats/Rom.cs | 28 +-- .../FilterRunnerTests.cs | 8 +- SabreTools.Metadata.Filter/FilterObject.cs | 7 +- .../ArchiveDotOrg.Deserializer.cs | 2 +- .../ArchiveDotOrg.Serializer.cs | 2 +- .../ClrMamePro.Deserializer.cs | 2 +- .../ClrMamePro.Serializer.cs | 2 +- .../DosCenter.Deserializer.cs | 2 +- .../DosCenter.Serializer.cs | 2 +- .../EverdriveSMDB.Deserializer.cs | 2 +- .../EverdriveSMDB.Serializer.cs | 2 +- .../Hashfile.Deserializer.cs | 2 +- .../Hashfile.Serializer.cs | 2 +- .../Listrom.Deserializer.cs | 2 +- .../Listrom.Serializer.cs | 2 +- .../Listxml.Deserializer.cs | 2 +- .../Listxml.Serializer.cs | 2 +- .../Logiqx.Deserializer.cs | 2 +- .../Logiqx.Serializer.cs | 2 +- .../OfflineList.Deserializer.cs | 2 +- .../OfflineList.Serializer.cs | 2 +- .../RomCenter.Deserializer.cs | 2 +- .../RomCenter.Serializer.cs | 2 +- .../SeparatedValue.Deserializer.cs | 2 +- .../SeparatedValue.Serializer.cs | 2 +- .../SoftwareList.Deserializer.cs | 2 +- .../SoftwareList.Serializer.cs | 2 +- 61 files changed, 375 insertions(+), 373 deletions(-) diff --git a/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs b/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs index bc7a5ce5..511c9165 100644 --- a/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs +++ b/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs @@ -349,7 +349,7 @@ namespace SabreTools.Data.Extensions.Test Name = "name", Size = 12345, CRC16 = string.Empty, - CRC = string.Empty, + CRC32 = string.Empty, CRC64 = string.Empty, MD2 = string.Empty, MD4 = string.Empty, @@ -368,7 +368,7 @@ namespace SabreTools.Data.Extensions.Test Name = "name", Size = 12345, CRC16 = string.Empty, - CRC = string.Empty, + CRC32 = string.Empty, CRC64 = string.Empty, MD2 = string.Empty, MD4 = string.Empty, @@ -394,7 +394,7 @@ namespace SabreTools.Data.Extensions.Test Name = "name", Size = 12345, CRC16 = "XXXXXX", - CRC = string.Empty, + CRC32 = string.Empty, CRC64 = "XXXXXX", MD2 = string.Empty, MD4 = "XXXXXX", @@ -412,7 +412,7 @@ namespace SabreTools.Data.Extensions.Test Name = "name", Size = 12345, CRC16 = string.Empty, - CRC = "XXXXXX", + CRC32 = "XXXXXX", CRC64 = string.Empty, MD2 = "XXXXXX", MD4 = string.Empty, @@ -437,7 +437,7 @@ namespace SabreTools.Data.Extensions.Test { Name = "XXXXXX1", CRC16 = "XXXXXX", - CRC = "XXXXXX", + CRC32 = "XXXXXX", CRC64 = "XXXXXX", MD2 = "XXXXXX", MD4 = "XXXXXX", @@ -455,7 +455,7 @@ namespace SabreTools.Data.Extensions.Test Name = "XXXXXX2", Size = 12345, CRC16 = "XXXXXX", - CRC = "XXXXXX", + CRC32 = "XXXXXX", CRC64 = "XXXXXX", MD2 = "XXXXXX", MD4 = "XXXXXX", @@ -481,7 +481,7 @@ namespace SabreTools.Data.Extensions.Test Name = "XXXXXX1", Size = 12345, CRC16 = "XXXXXX", - CRC = "XXXXXX", + CRC32 = "XXXXXX", CRC64 = "XXXXXX", MD2 = "XXXXXX", MD4 = "XXXXXX", @@ -498,7 +498,7 @@ namespace SabreTools.Data.Extensions.Test { Name = "XXXXXX2", CRC16 = "XXXXXX", - CRC = "XXXXXX", + CRC32 = "XXXXXX", CRC64 = "XXXXXX", MD2 = "XXXXXX", MD4 = "XXXXXX", @@ -524,7 +524,7 @@ namespace SabreTools.Data.Extensions.Test Name = "XXXXXX1", Size = 12345, CRC16 = "XXXXXX", - CRC = string.Empty, + CRC32 = string.Empty, CRC64 = string.Empty, MD2 = string.Empty, MD4 = string.Empty, @@ -542,7 +542,7 @@ namespace SabreTools.Data.Extensions.Test Name = "XXXXXX2", Size = 12345, CRC16 = "XXXXXX", - CRC = "XXXXXX", + CRC32 = "XXXXXX", CRC64 = "XXXXXX", MD2 = "XXXXXX", MD4 = "XXXXXX", @@ -568,7 +568,7 @@ namespace SabreTools.Data.Extensions.Test Name = "XXXXXX1", Size = 12345, CRC16 = string.Empty, - CRC = "XXXXXX", + CRC32 = "XXXXXX", CRC64 = string.Empty, MD2 = string.Empty, MD4 = string.Empty, @@ -586,7 +586,7 @@ namespace SabreTools.Data.Extensions.Test Name = "XXXXXX2", Size = 12345, CRC16 = "XXXXXX", - CRC = "XXXXXX", + CRC32 = "XXXXXX", CRC64 = "XXXXXX", MD2 = "XXXXXX", MD4 = "XXXXXX", @@ -612,7 +612,7 @@ namespace SabreTools.Data.Extensions.Test Name = "XXXXXX1", Size = 12345, CRC16 = string.Empty, - CRC = string.Empty, + CRC32 = string.Empty, CRC64 = "XXXXXX", MD2 = string.Empty, MD4 = string.Empty, @@ -630,7 +630,7 @@ namespace SabreTools.Data.Extensions.Test Name = "XXXXXX2", Size = 12345, CRC16 = "XXXXXX", - CRC = "XXXXXX", + CRC32 = "XXXXXX", CRC64 = "XXXXXX", MD2 = "XXXXXX", MD4 = "XXXXXX", @@ -656,7 +656,7 @@ namespace SabreTools.Data.Extensions.Test Name = "XXXXXX1", Size = 12345, CRC16 = string.Empty, - CRC = string.Empty, + CRC32 = string.Empty, CRC64 = string.Empty, MD2 = "XXXXXX", MD4 = string.Empty, @@ -674,7 +674,7 @@ namespace SabreTools.Data.Extensions.Test Name = "XXXXXX2", Size = 12345, CRC16 = "XXXXXX", - CRC = "XXXXXX", + CRC32 = "XXXXXX", CRC64 = "XXXXXX", MD2 = "XXXXXX", MD4 = "XXXXXX", @@ -700,7 +700,7 @@ namespace SabreTools.Data.Extensions.Test Name = "XXXXXX1", Size = 12345, CRC16 = string.Empty, - CRC = string.Empty, + CRC32 = string.Empty, CRC64 = string.Empty, MD2 = string.Empty, MD4 = "XXXXXX", @@ -718,7 +718,7 @@ namespace SabreTools.Data.Extensions.Test Name = "XXXXXX2", Size = 12345, CRC16 = "XXXXXX", - CRC = "XXXXXX", + CRC32 = "XXXXXX", CRC64 = "XXXXXX", MD2 = "XXXXXX", MD4 = "XXXXXX", @@ -744,7 +744,7 @@ namespace SabreTools.Data.Extensions.Test Name = "XXXXXX1", Size = 12345, CRC16 = string.Empty, - CRC = string.Empty, + CRC32 = string.Empty, CRC64 = string.Empty, MD2 = string.Empty, MD4 = string.Empty, @@ -762,7 +762,7 @@ namespace SabreTools.Data.Extensions.Test Name = "XXXXXX2", Size = 12345, CRC16 = "XXXXXX", - CRC = "XXXXXX", + CRC32 = "XXXXXX", CRC64 = "XXXXXX", MD2 = "XXXXXX", MD4 = "XXXXXX", @@ -788,7 +788,7 @@ namespace SabreTools.Data.Extensions.Test Name = "XXXXXX1", Size = 12345, CRC16 = string.Empty, - CRC = string.Empty, + CRC32 = string.Empty, CRC64 = string.Empty, MD2 = string.Empty, MD4 = string.Empty, @@ -806,7 +806,7 @@ namespace SabreTools.Data.Extensions.Test Name = "XXXXXX2", Size = 12345, CRC16 = "XXXXXX", - CRC = "XXXXXX", + CRC32 = "XXXXXX", CRC64 = "XXXXXX", MD2 = "XXXXXX", MD4 = "XXXXXX", @@ -832,7 +832,7 @@ namespace SabreTools.Data.Extensions.Test Name = "XXXXXX1", Size = 12345, CRC16 = string.Empty, - CRC = string.Empty, + CRC32 = string.Empty, CRC64 = string.Empty, MD2 = string.Empty, MD4 = string.Empty, @@ -850,7 +850,7 @@ namespace SabreTools.Data.Extensions.Test Name = "XXXXXX2", Size = 12345, CRC16 = "XXXXXX", - CRC = "XXXXXX", + CRC32 = "XXXXXX", CRC64 = "XXXXXX", MD2 = "XXXXXX", MD4 = "XXXXXX", @@ -876,7 +876,7 @@ namespace SabreTools.Data.Extensions.Test Name = "XXXXXX1", Size = 12345, CRC16 = string.Empty, - CRC = string.Empty, + CRC32 = string.Empty, CRC64 = string.Empty, MD2 = string.Empty, MD4 = string.Empty, @@ -894,7 +894,7 @@ namespace SabreTools.Data.Extensions.Test Name = "XXXXXX2", Size = 12345, CRC16 = "XXXXXX", - CRC = "XXXXXX", + CRC32 = "XXXXXX", CRC64 = "XXXXXX", MD2 = "XXXXXX", MD4 = "XXXXXX", @@ -920,7 +920,7 @@ namespace SabreTools.Data.Extensions.Test Name = "XXXXXX1", Size = 12345, CRC16 = string.Empty, - CRC = string.Empty, + CRC32 = string.Empty, CRC64 = string.Empty, MD2 = string.Empty, MD4 = string.Empty, @@ -938,7 +938,7 @@ namespace SabreTools.Data.Extensions.Test Name = "XXXXXX2", Size = 12345, CRC16 = "XXXXXX", - CRC = "XXXXXX", + CRC32 = "XXXXXX", CRC64 = "XXXXXX", MD2 = "XXXXXX", MD4 = "XXXXXX", @@ -964,7 +964,7 @@ namespace SabreTools.Data.Extensions.Test Name = "XXXXXX1", Size = 12345, CRC16 = string.Empty, - CRC = string.Empty, + CRC32 = string.Empty, CRC64 = string.Empty, MD2 = string.Empty, MD4 = string.Empty, @@ -982,7 +982,7 @@ namespace SabreTools.Data.Extensions.Test Name = "XXXXXX2", Size = 12345, CRC16 = "XXXXXX", - CRC = "XXXXXX", + CRC32 = "XXXXXX", CRC64 = "XXXXXX", MD2 = "XXXXXX", MD4 = "XXXXXX", @@ -1008,7 +1008,7 @@ namespace SabreTools.Data.Extensions.Test Name = "XXXXXX1", Size = 12345, CRC16 = string.Empty, - CRC = string.Empty, + CRC32 = string.Empty, CRC64 = string.Empty, MD2 = string.Empty, MD4 = string.Empty, @@ -1026,7 +1026,7 @@ namespace SabreTools.Data.Extensions.Test Name = "XXXXXX2", Size = 12345, CRC16 = "XXXXXX", - CRC = "XXXXXX", + CRC32 = "XXXXXX", CRC64 = "XXXXXX", MD2 = "XXXXXX", MD4 = "XXXXXX", @@ -1052,7 +1052,7 @@ namespace SabreTools.Data.Extensions.Test Name = "XXXXXX1", Size = 12345, CRC16 = string.Empty, - CRC = string.Empty, + CRC32 = string.Empty, CRC64 = string.Empty, MD2 = string.Empty, MD4 = string.Empty, @@ -1070,7 +1070,7 @@ namespace SabreTools.Data.Extensions.Test Name = "XXXXXX2", Size = 12345, CRC16 = "XXXXXX", - CRC = "XXXXXX", + CRC32 = "XXXXXX", CRC64 = "XXXXXX", MD2 = "XXXXXX", MD4 = "XXXXXX", @@ -1096,7 +1096,7 @@ namespace SabreTools.Data.Extensions.Test Name = "XXXXXX1", Size = 12345, CRC16 = "XXXXXX", - CRC = "XXXXXX", + CRC32 = "XXXXXX", CRC64 = "XXXXXX", MD2 = "XXXXXX", MD4 = "XXXXXX", @@ -1114,7 +1114,7 @@ namespace SabreTools.Data.Extensions.Test Name = "XXXXXX2", Size = 12345, CRC16 = "XXXXXX", - CRC = "XXXXXX", + CRC32 = "XXXXXX", CRC64 = "XXXXXX", MD2 = "XXXXXX", MD4 = "XXXXXX", @@ -1380,7 +1380,7 @@ namespace SabreTools.Data.Extensions.Test Rom self = new Rom { CRC16 = "XXXXXX", - CRC = string.Empty, + CRC32 = string.Empty, CRC64 = "XXXXXX", MD2 = string.Empty, MD4 = "XXXXXX", @@ -1396,7 +1396,7 @@ namespace SabreTools.Data.Extensions.Test Rom other = new Rom { CRC16 = string.Empty, - CRC = "XXXXXX", + CRC32 = "XXXXXX", CRC64 = string.Empty, MD2 = "XXXXXX", MD4 = string.Empty, @@ -1420,7 +1420,7 @@ namespace SabreTools.Data.Extensions.Test Rom self = new Rom { CRC16 = "XXXXXX", - CRC = string.Empty, + CRC32 = string.Empty, CRC64 = string.Empty, MD2 = string.Empty, MD4 = string.Empty, @@ -1436,7 +1436,7 @@ namespace SabreTools.Data.Extensions.Test Rom other = new Rom { CRC16 = "XXXXXX", - CRC = "XXXXXX", + CRC32 = "XXXXXX", CRC64 = "XXXXXX", MD2 = "XXXXXX", MD4 = "XXXXXX", @@ -1460,7 +1460,7 @@ namespace SabreTools.Data.Extensions.Test Rom self = new Rom { CRC16 = string.Empty, - CRC = "XXXXXX", + CRC32 = "XXXXXX", CRC64 = string.Empty, MD2 = string.Empty, MD4 = string.Empty, @@ -1476,7 +1476,7 @@ namespace SabreTools.Data.Extensions.Test Rom other = new Rom { CRC16 = "XXXXXX", - CRC = "XXXXXX", + CRC32 = "XXXXXX", CRC64 = "XXXXXX", MD2 = "XXXXXX", MD4 = "XXXXXX", @@ -1500,7 +1500,7 @@ namespace SabreTools.Data.Extensions.Test Rom self = new Rom { CRC16 = string.Empty, - CRC = string.Empty, + CRC32 = string.Empty, CRC64 = "XXXXXX", MD2 = string.Empty, MD4 = string.Empty, @@ -1516,7 +1516,7 @@ namespace SabreTools.Data.Extensions.Test Rom other = new Rom { CRC16 = "XXXXXX", - CRC = "XXXXXX", + CRC32 = "XXXXXX", CRC64 = "XXXXXX", MD2 = "XXXXXX", MD4 = "XXXXXX", @@ -1540,7 +1540,7 @@ namespace SabreTools.Data.Extensions.Test Rom self = new Rom { CRC16 = string.Empty, - CRC = string.Empty, + CRC32 = string.Empty, CRC64 = string.Empty, MD2 = "XXXXXX", MD4 = string.Empty, @@ -1556,7 +1556,7 @@ namespace SabreTools.Data.Extensions.Test Rom other = new Rom { CRC16 = "XXXXXX", - CRC = "XXXXXX", + CRC32 = "XXXXXX", CRC64 = "XXXXXX", MD2 = "XXXXXX", MD4 = "XXXXXX", @@ -1580,7 +1580,7 @@ namespace SabreTools.Data.Extensions.Test Rom self = new Rom { CRC16 = string.Empty, - CRC = string.Empty, + CRC32 = string.Empty, CRC64 = string.Empty, MD2 = string.Empty, MD4 = "XXXXXX", @@ -1596,7 +1596,7 @@ namespace SabreTools.Data.Extensions.Test Rom other = new Rom { CRC16 = "XXXXXX", - CRC = "XXXXXX", + CRC32 = "XXXXXX", CRC64 = "XXXXXX", MD2 = "XXXXXX", MD4 = "XXXXXX", @@ -1620,7 +1620,7 @@ namespace SabreTools.Data.Extensions.Test Rom self = new Rom { CRC16 = string.Empty, - CRC = string.Empty, + CRC32 = string.Empty, CRC64 = string.Empty, MD2 = string.Empty, MD4 = string.Empty, @@ -1636,7 +1636,7 @@ namespace SabreTools.Data.Extensions.Test Rom other = new Rom { CRC16 = "XXXXXX", - CRC = "XXXXXX", + CRC32 = "XXXXXX", CRC64 = "XXXXXX", MD2 = "XXXXXX", MD4 = "XXXXXX", @@ -1660,7 +1660,7 @@ namespace SabreTools.Data.Extensions.Test Rom self = new Rom { CRC16 = string.Empty, - CRC = string.Empty, + CRC32 = string.Empty, CRC64 = string.Empty, MD2 = string.Empty, MD4 = string.Empty, @@ -1676,7 +1676,7 @@ namespace SabreTools.Data.Extensions.Test Rom other = new Rom { CRC16 = "XXXXXX", - CRC = "XXXXXX", + CRC32 = "XXXXXX", CRC64 = "XXXXXX", MD2 = "XXXXXX", MD4 = "XXXXXX", @@ -1700,7 +1700,7 @@ namespace SabreTools.Data.Extensions.Test Rom self = new Rom { CRC16 = string.Empty, - CRC = string.Empty, + CRC32 = string.Empty, CRC64 = string.Empty, MD2 = string.Empty, MD4 = string.Empty, @@ -1716,7 +1716,7 @@ namespace SabreTools.Data.Extensions.Test Rom other = new Rom { CRC16 = "XXXXXX", - CRC = "XXXXXX", + CRC32 = "XXXXXX", CRC64 = "XXXXXX", MD2 = "XXXXXX", MD4 = "XXXXXX", @@ -1740,7 +1740,7 @@ namespace SabreTools.Data.Extensions.Test Rom self = new Rom { CRC16 = string.Empty, - CRC = string.Empty, + CRC32 = string.Empty, CRC64 = string.Empty, MD2 = string.Empty, MD4 = string.Empty, @@ -1756,7 +1756,7 @@ namespace SabreTools.Data.Extensions.Test Rom other = new Rom { CRC16 = "XXXXXX", - CRC = "XXXXXX", + CRC32 = "XXXXXX", CRC64 = "XXXXXX", MD2 = "XXXXXX", MD4 = "XXXXXX", @@ -1780,7 +1780,7 @@ namespace SabreTools.Data.Extensions.Test Rom self = new Rom { CRC16 = string.Empty, - CRC = string.Empty, + CRC32 = string.Empty, CRC64 = string.Empty, MD2 = string.Empty, MD4 = string.Empty, @@ -1796,7 +1796,7 @@ namespace SabreTools.Data.Extensions.Test Rom other = new Rom { CRC16 = "XXXXXX", - CRC = "XXXXXX", + CRC32 = "XXXXXX", CRC64 = "XXXXXX", MD2 = "XXXXXX", MD4 = "XXXXXX", @@ -1820,7 +1820,7 @@ namespace SabreTools.Data.Extensions.Test Rom self = new Rom { CRC16 = string.Empty, - CRC = string.Empty, + CRC32 = string.Empty, CRC64 = string.Empty, MD2 = string.Empty, MD4 = string.Empty, @@ -1836,7 +1836,7 @@ namespace SabreTools.Data.Extensions.Test Rom other = new Rom { CRC16 = "XXXXXX", - CRC = "XXXXXX", + CRC32 = "XXXXXX", CRC64 = "XXXXXX", MD2 = "XXXXXX", MD4 = "XXXXXX", @@ -1860,7 +1860,7 @@ namespace SabreTools.Data.Extensions.Test Rom self = new Rom { CRC16 = string.Empty, - CRC = string.Empty, + CRC32 = string.Empty, CRC64 = string.Empty, MD2 = string.Empty, MD4 = string.Empty, @@ -1876,7 +1876,7 @@ namespace SabreTools.Data.Extensions.Test Rom other = new Rom { CRC16 = "XXXXXX", - CRC = "XXXXXX", + CRC32 = "XXXXXX", CRC64 = "XXXXXX", MD2 = "XXXXXX", MD4 = "XXXXXX", @@ -1900,7 +1900,7 @@ namespace SabreTools.Data.Extensions.Test Rom self = new Rom { CRC16 = string.Empty, - CRC = string.Empty, + CRC32 = string.Empty, CRC64 = string.Empty, MD2 = string.Empty, MD4 = string.Empty, @@ -1916,7 +1916,7 @@ namespace SabreTools.Data.Extensions.Test Rom other = new Rom { CRC16 = "XXXXXX", - CRC = "XXXXXX", + CRC32 = "XXXXXX", CRC64 = "XXXXXX", MD2 = "XXXXXX", MD4 = "XXXXXX", @@ -1940,7 +1940,7 @@ namespace SabreTools.Data.Extensions.Test Rom self = new Rom { CRC16 = "XXXXXX", - CRC = "XXXXXX", + CRC32 = "XXXXXX", CRC64 = "XXXXXX", MD2 = "XXXXXX", MD4 = "XXXXXX", @@ -1956,7 +1956,7 @@ namespace SabreTools.Data.Extensions.Test Rom other = new Rom { CRC16 = "XXXXXX", - CRC = "XXXXXX", + CRC32 = "XXXXXX", CRC64 = "XXXXXX", MD2 = "XXXXXX", MD4 = "XXXXXX", @@ -2150,7 +2150,7 @@ namespace SabreTools.Data.Extensions.Test var self = new Rom { CRC16 = "XXXXXX", - CRC = "XXXXXX", + CRC32 = "XXXXXX", CRC64 = "XXXXXX", MD2 = "XXXXXX", MD4 = "XXXXXX", @@ -2174,7 +2174,7 @@ namespace SabreTools.Data.Extensions.Test var self = new Rom { CRC16 = HashType.CRC16.ZeroString, - CRC = string.Empty, + CRC32 = string.Empty, CRC64 = string.Empty, MD2 = string.Empty, MD4 = string.Empty, @@ -2198,7 +2198,7 @@ namespace SabreTools.Data.Extensions.Test var self = new Rom { CRC16 = string.Empty, - CRC = HashType.CRC32.ZeroString, + CRC32 = HashType.CRC32.ZeroString, CRC64 = string.Empty, MD2 = string.Empty, MD4 = string.Empty, @@ -2222,7 +2222,7 @@ namespace SabreTools.Data.Extensions.Test var self = new Rom { CRC16 = string.Empty, - CRC = string.Empty, + CRC32 = string.Empty, CRC64 = HashType.CRC64.ZeroString, MD2 = string.Empty, MD4 = string.Empty, @@ -2246,7 +2246,7 @@ namespace SabreTools.Data.Extensions.Test var self = new Rom { CRC16 = string.Empty, - CRC = string.Empty, + CRC32 = string.Empty, CRC64 = string.Empty, MD2 = HashType.MD2.ZeroString, MD4 = string.Empty, @@ -2270,7 +2270,7 @@ namespace SabreTools.Data.Extensions.Test var self = new Rom { CRC16 = string.Empty, - CRC = string.Empty, + CRC32 = string.Empty, CRC64 = string.Empty, MD2 = string.Empty, MD4 = HashType.MD4.ZeroString, @@ -2294,7 +2294,7 @@ namespace SabreTools.Data.Extensions.Test var self = new Rom { CRC16 = string.Empty, - CRC = string.Empty, + CRC32 = string.Empty, CRC64 = string.Empty, MD2 = string.Empty, MD4 = string.Empty, @@ -2318,7 +2318,7 @@ namespace SabreTools.Data.Extensions.Test var self = new Rom { CRC16 = string.Empty, - CRC = string.Empty, + CRC32 = string.Empty, CRC64 = string.Empty, MD2 = string.Empty, MD4 = string.Empty, @@ -2342,7 +2342,7 @@ namespace SabreTools.Data.Extensions.Test var self = new Rom { CRC16 = string.Empty, - CRC = string.Empty, + CRC32 = string.Empty, CRC64 = string.Empty, MD2 = string.Empty, MD4 = string.Empty, @@ -2366,7 +2366,7 @@ namespace SabreTools.Data.Extensions.Test var self = new Rom { CRC16 = string.Empty, - CRC = string.Empty, + CRC32 = string.Empty, CRC64 = string.Empty, MD2 = string.Empty, MD4 = string.Empty, @@ -2390,7 +2390,7 @@ namespace SabreTools.Data.Extensions.Test var self = new Rom { CRC16 = string.Empty, - CRC = string.Empty, + CRC32 = string.Empty, CRC64 = string.Empty, MD2 = string.Empty, MD4 = string.Empty, @@ -2414,7 +2414,7 @@ namespace SabreTools.Data.Extensions.Test var self = new Rom { CRC16 = string.Empty, - CRC = string.Empty, + CRC32 = string.Empty, CRC64 = string.Empty, MD2 = string.Empty, MD4 = string.Empty, @@ -2438,7 +2438,7 @@ namespace SabreTools.Data.Extensions.Test var self = new Rom { CRC16 = string.Empty, - CRC = string.Empty, + CRC32 = string.Empty, CRC64 = string.Empty, MD2 = string.Empty, MD4 = string.Empty, @@ -2462,7 +2462,7 @@ namespace SabreTools.Data.Extensions.Test var self = new Rom { CRC16 = string.Empty, - CRC = string.Empty, + CRC32 = string.Empty, CRC64 = string.Empty, MD2 = string.Empty, MD4 = string.Empty, @@ -2486,7 +2486,7 @@ namespace SabreTools.Data.Extensions.Test var self = new Rom { CRC16 = HashType.CRC16.ZeroString, - CRC = HashType.CRC32.ZeroString, + CRC32 = HashType.CRC32.ZeroString, CRC64 = HashType.CRC64.ZeroString, MD2 = HashType.MD2.ZeroString, MD4 = HashType.MD4.ZeroString, @@ -2571,7 +2571,7 @@ namespace SabreTools.Data.Extensions.Test var other = new Rom { CRC16 = "XXXXXX", - CRC = "XXXXXX", + CRC32 = "XXXXXX", CRC64 = "XXXXXX", MD2 = "XXXXXX", MD4 = "XXXXXX", diff --git a/SabreTools.Data.Extensions/MetadataExtensions.cs b/SabreTools.Data.Extensions/MetadataExtensions.cs index 6788036a..375e866c 100644 --- a/SabreTools.Data.Extensions/MetadataExtensions.cs +++ b/SabreTools.Data.Extensions/MetadataExtensions.cs @@ -248,8 +248,8 @@ namespace SabreTools.Data.Extensions string? otherCrc16 = other.CRC16; bool conditionalCrc16 = ConditionalHashEquals(selfCrc16, otherCrc16); - string? selfCrc = self.CRC; - string? otherCrc = other.CRC; + string? selfCrc = self.CRC32; + string? otherCrc = other.CRC32; bool conditionalCrc = ConditionalHashEquals(selfCrc, otherCrc); string? selfCrc64 = self.CRC64; @@ -345,7 +345,7 @@ namespace SabreTools.Data.Extensions public static bool HasHashes(this Rom rom) { bool crc16Null = string.IsNullOrEmpty(rom.CRC16); - bool crcNull = string.IsNullOrEmpty(rom.CRC); + bool crc32Null = string.IsNullOrEmpty(rom.CRC32); bool crc64Null = string.IsNullOrEmpty(rom.CRC64); bool md2Null = string.IsNullOrEmpty(rom.MD2); bool md4Null = string.IsNullOrEmpty(rom.MD4); @@ -359,7 +359,7 @@ namespace SabreTools.Data.Extensions bool spamsumNull = string.IsNullOrEmpty(rom.SpamSum); return !crc16Null - || !crcNull + || !crc32Null || !crc64Null || !md2Null || !md4Null @@ -419,8 +419,8 @@ namespace SabreTools.Data.Extensions string? crc16 = rom.CRC16; bool crc16Null = string.IsNullOrEmpty(crc16) || string.Equals(crc16, HashType.CRC16.ZeroString, StringComparison.OrdinalIgnoreCase); - string? crc = rom.CRC; - bool crcNull = string.IsNullOrEmpty(crc) || string.Equals(crc, HashType.CRC32.ZeroString, StringComparison.OrdinalIgnoreCase); + string? crc32 = rom.CRC32; + bool crc32Null = string.IsNullOrEmpty(crc32) || string.Equals(crc32, HashType.CRC32.ZeroString, StringComparison.OrdinalIgnoreCase); string? crc64 = rom.CRC64; bool crc64Null = string.IsNullOrEmpty(crc64) || string.Equals(crc64, HashType.CRC64.ZeroString, StringComparison.OrdinalIgnoreCase); @@ -456,7 +456,7 @@ namespace SabreTools.Data.Extensions bool spamsumNull = string.IsNullOrEmpty(spamsum) || string.Equals(spamsum, HashType.SpamSum.ZeroString, StringComparison.OrdinalIgnoreCase); return crc16Null - && crcNull + && crc32Null && crc64Null && md2Null && md4Null @@ -516,8 +516,8 @@ namespace SabreTools.Data.Extensions bool crc16Null = string.IsNullOrEmpty(self.CRC16); crc16Null ^= string.IsNullOrEmpty(other.CRC16); - bool crcNull = string.IsNullOrEmpty(self.CRC); - crcNull ^= string.IsNullOrEmpty(other.CRC); + bool crc32Null = string.IsNullOrEmpty(self.CRC32); + crc32Null ^= string.IsNullOrEmpty(other.CRC32); bool crc64Null = string.IsNullOrEmpty(self.CRC64); crc64Null ^= string.IsNullOrEmpty(other.CRC64); @@ -553,7 +553,7 @@ namespace SabreTools.Data.Extensions spamsumNull ^= string.IsNullOrEmpty(other.SpamSum); return !crc16Null - || !crcNull + || !crc32Null || !crc64Null || !md2Null || !md4Null @@ -637,10 +637,10 @@ namespace SabreTools.Data.Extensions if (string.IsNullOrEmpty(selfCrc16) && !string.IsNullOrEmpty(otherCrc16)) self.CRC16 = otherCrc16; - string? selfCrc = self.CRC; - string? otherCrc = other.CRC; + string? selfCrc = self.CRC32; + string? otherCrc = other.CRC32; if (string.IsNullOrEmpty(selfCrc) && !string.IsNullOrEmpty(otherCrc)) - self.CRC = otherCrc; + self.CRC32 = otherCrc; string? selfCrc64 = self.CRC64; string? otherCrc64 = other.CRC64; diff --git a/SabreTools.Data.Models/Metadata/Rom.cs b/SabreTools.Data.Models/Metadata/Rom.cs index 4432bdac..9799e501 100644 --- a/SabreTools.Data.Models/Metadata/Rom.cs +++ b/SabreTools.Data.Models/Metadata/Rom.cs @@ -88,11 +88,11 @@ namespace SabreTools.Data.Models.Metadata /// ArchiveDotOrg.File public string? Comment { get; set; } - /// Also "crc32" in ArchiveDotOrg.File - public string? CRC { get; set; } - public string? CRC16 { get; set; } + /// Mainly "crc", named here for clarity + public string? CRC32 { get; set; } + public string? CRC64 { get; set; } /// ArchiveDotOrg.File @@ -300,8 +300,8 @@ namespace SabreTools.Data.Models.Metadata obj.ClothCoverDetectionModuleVersion = ClothCoverDetectionModuleVersion; obj.CollectionCatalogNumber = CollectionCatalogNumber; obj.Comment = Comment; - obj.CRC = CRC; obj.CRC16 = CRC16; + obj.CRC32 = CRC32; obj.CRC64 = CRC64; obj.Creator = Creator; obj.Date = Date; diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.Filtering.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.Filtering.cs index ab29e76f..4cc0e32e 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.Filtering.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.Filtering.cs @@ -24,7 +24,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem datItem = new Rom { Name = "rom.bin", - CRC = "deadbeef", + CRC32 = "deadbeef", Machine = machine, Source = source }; @@ -53,7 +53,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem datItem = new Rom { Name = "rom.bin", - CRC = "deadbeef", + CRC32 = "deadbeef", Machine = machine, Source = source }; diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs index 287dec21..f8ae9252 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs @@ -795,8 +795,8 @@ namespace SabreTools.Metadata.DatFiles.Test ClothCoverDetectionModuleVersion = "cloth_cover_detection_module_version", CollectionCatalogNumber = "collection-catalog-number", Comment = "comment", - CRC = HashType.CRC32.ZeroString, CRC16 = HashType.CRC16.ZeroString, + CRC32 = HashType.CRC32.ZeroString, CRC64 = HashType.CRC64.ZeroString, Creator = "creator", Date = "date", @@ -1507,8 +1507,8 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("cloth_cover_detection_module_version", rom.ClothCoverDetectionModuleVersion); Assert.Equal("collection-catalog-number", rom.CollectionCatalogNumber); Assert.Equal("comment", rom.Comment); - Assert.Equal(HashType.CRC32.ZeroString, rom.CRC); Assert.Equal(HashType.CRC16.ZeroString, rom.CRC16); + Assert.Equal(HashType.CRC32.ZeroString, rom.CRC32); Assert.Equal(HashType.CRC64.ZeroString, rom.CRC64); Assert.Equal("creator", rom.Creator); Assert.Equal("date", rom.Date); diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.Splitting.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.Splitting.cs index 7b33f0ab..88b5c885 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.Splitting.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.Splitting.cs @@ -27,7 +27,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "parent_rom", Size = 12345, - CRC = "deadbeef", + CRC32 = "deadbeef", Machine = parentMachine, Source = source }; @@ -36,7 +36,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "match_child_rom", Size = 12345, - CRC = "deadbeef", + CRC32 = "deadbeef", Machine = childMachine, Source = source }; @@ -45,7 +45,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "no_match_child_rom", Size = 12345, - CRC = "beefdead", + CRC32 = "beefdead", Machine = childMachine, Source = source }; @@ -79,7 +79,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "parent_rom", Size = 12345, - CRC = "deadbeef", + CRC32 = "deadbeef", Machine = parentMachine, Source = source }; @@ -88,7 +88,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "match_child_rom", Size = 12345, - CRC = "deadbeef", + CRC32 = "deadbeef", Machine = childMachine, Source = source }; @@ -97,7 +97,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "no_match_child_rom", Size = 12345, - CRC = "beefdead", + CRC32 = "beefdead", Machine = childMachine, Source = source }; @@ -131,7 +131,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "parent_rom", Size = 12345, - CRC = "deadbeef", + CRC32 = "deadbeef", Machine = parentMachine, Source = source }; @@ -140,7 +140,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "match_child_rom", Size = 12345, - CRC = "deadbeef", + CRC32 = "deadbeef", Machine = childMachine, Source = source }; @@ -149,7 +149,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "no_match_child_rom", Size = 12345, - CRC = "beefdead", + CRC32 = "beefdead", Machine = childMachine, Source = source }; @@ -186,7 +186,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "parent_rom", Size = 12345, - CRC = "deadbeef", + CRC32 = "deadbeef", Machine = parentMachine, Source = source }; @@ -195,7 +195,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "match_child_rom", Size = 12345, - CRC = "deadbeef", + CRC32 = "deadbeef", Machine = childMachine, Source = source }; @@ -204,7 +204,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "no_match_child_rom", Size = 12345, - CRC = "beefdead", + CRC32 = "beefdead", Machine = childMachine, Source = source }; @@ -245,7 +245,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "parent_rom", Size = 12345, - CRC = "deadbeef", + CRC32 = "deadbeef", Machine = parentMachine, Source = source }; @@ -254,7 +254,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "match_child_rom", Size = 12345, - CRC = "deadbeef", + CRC32 = "deadbeef", Machine = childMachine, Source = source }; @@ -263,7 +263,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "no_match_child_rom", Size = 12345, - CRC = "beefdead", + CRC32 = "beefdead", Machine = childMachine, Source = source }; @@ -297,7 +297,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "parent_rom", Size = 12345, - CRC = "deadbeef", + CRC32 = "deadbeef", Machine = parentMachine, Source = source }; @@ -306,7 +306,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "match_child_rom", Size = 12345, - CRC = "deadbeef", + CRC32 = "deadbeef", Machine = childMachine, Source = source }; @@ -315,7 +315,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "no_match_child_rom", Size = 12345, - CRC = "beefdead", + CRC32 = "beefdead", Machine = childMachine, Source = source }; @@ -375,7 +375,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "rom", Size = 12345, - CRC = "deadbeef", + CRC32 = "deadbeef", Machine = itemMachine, Source = source }; @@ -434,7 +434,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "rom", Size = 12345, - CRC = "deadbeef" + CRC32 = "deadbeef" }; DatItem deviceRef = new DeviceRef @@ -486,7 +486,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "parent_rom", Size = 12345, - CRC = "deadbeef", + CRC32 = "deadbeef", Machine = parentMachine, Source = source }; @@ -495,7 +495,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "match_child_rom", Size = 12345, - CRC = "deadbeef", + CRC32 = "deadbeef", Machine = childMachine, Source = source }; @@ -504,7 +504,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "no_match_child_rom", Size = 12345, - CRC = "beefdead", + CRC32 = "beefdead", Machine = childMachine, Source = source }; @@ -538,7 +538,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "parent_rom", Size = 12345, - CRC = "deadbeef", + CRC32 = "deadbeef", Machine = parentMachine, Source = source }; @@ -547,7 +547,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "match_child_rom", Size = 12345, - CRC = "deadbeef", + CRC32 = "deadbeef", Machine = childMachine, Source = source }; @@ -556,7 +556,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "no_match_child_rom", Size = 12345, - CRC = "beefdead", + CRC32 = "beefdead", Machine = childMachine, Source = source }; @@ -677,7 +677,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "parent_rom", Size = 12345, - CRC = "deadbeef", + CRC32 = "deadbeef", Machine = parentMachine, Source = source }; @@ -686,7 +686,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "match_child_rom", Size = 12345, - CRC = "deadbeef", + CRC32 = "deadbeef", Machine = childMachine, Source = source }; @@ -695,7 +695,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "no_match_child_rom", Size = 12345, - CRC = "beefdead", + CRC32 = "beefdead", Machine = childMachine, Source = source }; @@ -737,7 +737,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "parent_rom", Size = 12345, - CRC = "deadbeef", + CRC32 = "deadbeef", Machine = parentMachine, Source = source }; @@ -746,7 +746,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "match_child_rom", Size = 12345, - CRC = "deadbeef", + CRC32 = "deadbeef", Machine = childMachine, Source = source }; @@ -755,7 +755,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "no_match_child_rom", Size = 12345, - CRC = "beefdead", + CRC32 = "beefdead", Machine = childMachine, Source = source }; @@ -801,7 +801,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "parent_rom", Size = 12345, - CRC = "deadbeef", + CRC32 = "deadbeef", Machine = parentMachine, Source = source }; @@ -810,7 +810,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "match_child_rom", Size = 12345, - CRC = "deadbeef", + CRC32 = "deadbeef", Machine = childMachine, Source = source }; @@ -819,7 +819,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "no_match_child_rom", Size = 12345, - CRC = "beefdead", + CRC32 = "beefdead", Machine = childMachine, Source = source }; @@ -857,7 +857,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "parent_rom", Size = 12345, - CRC = "deadbeef", + CRC32 = "deadbeef", Machine = parentMachine, Source = source }; @@ -866,7 +866,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "match_child_rom", Size = 12345, - CRC = "deadbeef", + CRC32 = "deadbeef", Machine = childMachine, Source = source }; @@ -875,7 +875,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "no_match_child_rom", Size = 12345, - CRC = "beefdead", + CRC32 = "beefdead", Machine = childMachine, Source = source }; diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs index bae88c63..fbeabf12 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs @@ -1039,8 +1039,8 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("cloth_cover_detection_module_version", rom.ClothCoverDetectionModuleVersion); Assert.Equal("collection-catalog-number", rom.CollectionCatalogNumber); Assert.Equal("comment", rom.Comment); - Assert.Equal(HashType.CRC32.ZeroString, rom.CRC); Assert.Equal(HashType.CRC16.ZeroString, rom.CRC16); + Assert.Equal(HashType.CRC32.ZeroString, rom.CRC32); Assert.Equal(HashType.CRC64.ZeroString, rom.CRC64); Assert.Equal("creator", rom.Creator); Assert.Equal("date", rom.Date); diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.cs index 7bf11cde..1df827ad 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.cs @@ -35,7 +35,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem rom = new Rom { Name = "rom", - CRC = "deadbeef", + CRC32 = "deadbeef", Source = source, Machine = machine }; @@ -1378,7 +1378,7 @@ namespace SabreTools.Metadata.DatFiles.Test Name = "name", Size = 12345, CRC16 = "crc16", - CRC = "crc", + CRC32 = "crc32", CRC64 = "crc64", MD2 = "md2", MD4 = "md4", @@ -1481,7 +1481,7 @@ namespace SabreTools.Metadata.DatFiles.Test public void FormatPrefixPostfix_Rom() { string fix = "%game%_%machine%_%name%_%manufacturer%_%publisher%_%category%_%crc16%_%crc%_%crc64%_%md2%_%md4%_%md5%_%ripemd128%_%ripemd160%_%sha1%_%sha256%_%sha384%_%sha512%_%size%_%spamsum%"; - string expected = "machine_machine_name_manufacturer_publisher_category_crc16_crc_crc64_md2_md4_md5_ripemd128_ripemd160_sha1_sha256_sha384_sha512_12345_spamsum"; + string expected = "machine_machine_name_manufacturer_publisher_category_crc16_crc32_crc64_md2_md4_md5_ripemd128_ripemd160_sha1_sha256_sha384_sha512_12345_spamsum"; Machine machine = new Machine { @@ -1496,7 +1496,7 @@ namespace SabreTools.Metadata.DatFiles.Test Name = "name", Size = 12345, CRC16 = "crc16", - CRC = "crc", + CRC32 = "crc32", CRC64 = "crc64", MD2 = "md2", MD4 = "md4", @@ -1531,7 +1531,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(rom); Assert.Equal(12345, rom.Size); Assert.Null(rom.CRC16); - Assert.Null(rom.CRC); + Assert.Null(rom.CRC32); Assert.Null(rom.CRC64); Assert.Null(rom.MD2); Assert.Null(rom.MD4); @@ -1550,14 +1550,14 @@ namespace SabreTools.Metadata.DatFiles.Test { DatItem item = new Rom { - CRC = HashType.CRC32.ZeroString + CRC32 = HashType.CRC32.ZeroString }; DatItem actual = DatFile.ProcessNullifiedItem(item); Rom? rom = actual as Rom; Assert.NotNull(rom); Assert.Null(rom.Size); - Assert.Equal(HashType.CRC32.ZeroString, rom.CRC); + Assert.Equal(HashType.CRC32.ZeroString, rom.CRC32); Assert.Null(rom.MD2); Assert.Null(rom.MD4); Assert.Null(rom.MD5); @@ -1576,7 +1576,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem item = new Rom { CRC16 = "null", - CRC = "null", + CRC32 = "null", CRC64 = "null", MD2 = "null", MD4 = "null", @@ -1595,7 +1595,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(rom); Assert.Equal(0, rom.Size); Assert.Equal(HashType.CRC16.ZeroString, rom.CRC16); - Assert.Equal(HashType.CRC32.ZeroString, rom.CRC); + Assert.Equal(HashType.CRC32.ZeroString, rom.CRC32); Assert.Equal(HashType.CRC64.ZeroString, rom.CRC64); Assert.Equal(HashType.MD2.ZeroString, rom.MD2); Assert.Equal(HashType.MD4.ZeroString, rom.MD4); @@ -1793,12 +1793,12 @@ namespace SabreTools.Metadata.DatFiles.Test } [Fact] - public void GetDuplicateSuffix_Rom_CRC() + public void GetDuplicateSuffix_Rom_CRC32() { string hash = "XXXXXX"; DatItem datItem = new Rom { - CRC = hash + CRC32 = hash }; string actual = DatFile.GetDuplicateSuffix(datItem); @@ -1982,7 +1982,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "name", Size = 12345, - CRC = "crc", + CRC32 = "crc", Machine = (Machine)machine.Clone(), Source = (Source)source.Clone() }; @@ -1997,7 +1997,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actualRomA); Assert.Equal("name", actualRomA.Name); Assert.Equal(12345, actualRomA.Size); - Assert.Equal("crc", actualRomA.CRC); + Assert.Equal("crc", actualRomA.CRC32); } [Fact] @@ -2011,7 +2011,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "romA", Size = 12345, - CRC = "crc", + CRC32 = "crc", Machine = (Machine)machine.Clone(), Source = (Source)source.Clone() }; @@ -2020,7 +2020,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "romB", Size = 23456, - CRC = "crc2", + CRC32 = "crc2", Machine = (Machine)machine.Clone(), Source = (Source)source.Clone() }; @@ -2036,13 +2036,13 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actualRomA); Assert.Equal("romA", actualRomA.Name); Assert.Equal(12345, actualRomA.Size); - Assert.Equal("crc", actualRomA.CRC); + Assert.Equal("crc", actualRomA.CRC32); Rom? actualRomB = actual[1] as Rom; Assert.NotNull(actualRomB); Assert.Equal("romB", actualRomB.Name); Assert.Equal(23456, actualRomB.Size); - Assert.Equal("crc2", actualRomB.CRC); + Assert.Equal("crc2", actualRomB.CRC32); } [Fact] @@ -2056,7 +2056,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "rom", Size = 12345, - CRC = "crc", + CRC32 = "crc", Machine = (Machine)machine.Clone(), Source = (Source)source.Clone() }; @@ -2065,7 +2065,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "rom", Size = 12345, - CRC = "crc", + CRC32 = "crc", Machine = (Machine)machine.Clone(), Source = (Source)source.Clone() }; @@ -2080,7 +2080,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actualRomA); Assert.Equal("rom", actualRomA.Name); Assert.Equal(12345, actualRomA.Size); - Assert.Equal("crc", actualRomA.CRC); + Assert.Equal("crc", actualRomA.CRC32); } [Fact] @@ -2094,7 +2094,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "rom", Size = 12345, - CRC = "crc", + CRC32 = "crc", Machine = (Machine)machine.Clone(), Source = (Source)source.Clone() }; @@ -2103,7 +2103,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "rom", Size = 23456, - CRC = "crc2", + CRC32 = "crc2", Machine = (Machine)machine.Clone(), Source = (Source)source.Clone() }; @@ -2119,13 +2119,13 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actualRomA); Assert.Equal("rom", actualRomA.Name); Assert.Equal(12345, actualRomA.Size); - Assert.Equal("crc", actualRomA.CRC); + Assert.Equal("crc", actualRomA.CRC32); Rom? actualRomB = actual[1] as Rom; Assert.NotNull(actualRomB); Assert.Equal("rom_crc2", actualRomB.Name); Assert.Equal(23456, actualRomB.Size); - Assert.Equal("crc2", actualRomB.CRC); + Assert.Equal("crc2", actualRomB.CRC32); } #endregion @@ -2154,7 +2154,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "name", Size = 12345, - CRC = "crc", + CRC32 = "crc", Machine = (Machine)machine.Clone(), Source = (Source)source.Clone() }; @@ -2171,7 +2171,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actualRomA); Assert.Equal("name", actualRomA.Name); Assert.Equal(12345, actualRomA.Size); - Assert.Equal("crc", actualRomA.CRC); + Assert.Equal("crc", actualRomA.CRC32); } [Fact] @@ -2185,7 +2185,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "romA", Size = 12345, - CRC = "crc", + CRC32 = "crc", Machine = (Machine)machine.Clone(), Source = (Source)source.Clone() }; @@ -2194,7 +2194,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "romB", Size = 23456, - CRC = "crc2", + CRC32 = "crc2", Machine = (Machine)machine.Clone(), Source = (Source)source.Clone() }; @@ -2213,13 +2213,13 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actualRomA); Assert.Equal("romA", actualRomA.Name); Assert.Equal(12345, actualRomA.Size); - Assert.Equal("crc", actualRomA.CRC); + Assert.Equal("crc", actualRomA.CRC32); Rom? actualRomB = actual[1].Value as Rom; Assert.NotNull(actualRomB); Assert.Equal("romB", actualRomB.Name); Assert.Equal(23456, actualRomB.Size); - Assert.Equal("crc2", actualRomB.CRC); + Assert.Equal("crc2", actualRomB.CRC32); } [Fact] @@ -2237,7 +2237,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "rom", Size = 12345, - CRC = "crc" + CRC32 = "crc" }; long romAIndex = datFile.AddItemDB(romA, machineIndex, sourceIndex, statsOnly: false); @@ -2245,7 +2245,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "rom", Size = 12345, - CRC = "crc" + CRC32 = "crc" }; long romBIndex = datFile.AddItemDB(romB, machineIndex, sourceIndex, statsOnly: false); @@ -2261,7 +2261,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actualRomA); Assert.Equal("rom", actualRomA.Name); Assert.Equal(12345, actualRomA.Size); - Assert.Equal("crc", actualRomA.CRC); + Assert.Equal("crc", actualRomA.CRC32); } [Fact] @@ -2275,7 +2275,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "rom", Size = 12345, - CRC = "crc", + CRC32 = "crc", Machine = (Machine)machine.Clone(), Source = (Source)source.Clone() }; @@ -2284,7 +2284,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "rom", Size = 23456, - CRC = "crc2", + CRC32 = "crc2", Machine = (Machine)machine.Clone(), Source = (Source)source.Clone() }; @@ -2303,13 +2303,13 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actualRomA); Assert.Equal("rom", actualRomA.Name); Assert.Equal(12345, actualRomA.Size); - Assert.Equal("crc", actualRomA.CRC); + Assert.Equal("crc", actualRomA.CRC32); Rom? actualRomB = actual[1].Value as Rom; Assert.NotNull(actualRomB); Assert.Equal("rom_crc2", actualRomB.Name); Assert.Equal(23456, actualRomB.Size); - Assert.Equal("crc2", actualRomB.CRC); + Assert.Equal("crc2", actualRomB.CRC32); } #endregion @@ -2363,7 +2363,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "name", Size = 12345, - CRC = "crc" + CRC32 = "crc" }; DatFile datFile = new Logiqx(null, useGame: false); @@ -2402,7 +2402,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "name", Size = 12345, - CRC = "crc", + CRC32 = "crc", MD2 = "crc", MD4 = "crc", MD5 = "crc", diff --git a/SabreTools.Metadata.DatFiles.Test/DatStatisticsTests.cs b/SabreTools.Metadata.DatFiles.Test/DatStatisticsTests.cs index b5b16cb7..4af801e8 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatStatisticsTests.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatStatisticsTests.cs @@ -305,7 +305,7 @@ namespace SabreTools.Metadata.DatFiles.Test Size = 1 }; rom.CRC16 = HashType.CRC16.ZeroString; - rom.CRC = HashType.CRC32.ZeroString; + rom.CRC32 = HashType.CRC32.ZeroString; rom.CRC64 = HashType.CRC64.ZeroString; rom.MD2 = HashType.MD2.ZeroString; rom.MD4 = HashType.MD4.ZeroString; diff --git a/SabreTools.Metadata.DatFiles.Test/FormatsTests.cs b/SabreTools.Metadata.DatFiles.Test/FormatsTests.cs index 775abe28..63b7cf5e 100644 --- a/SabreTools.Metadata.DatFiles.Test/FormatsTests.cs +++ b/SabreTools.Metadata.DatFiles.Test/FormatsTests.cs @@ -289,7 +289,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.True(actual.SequenceEqual([ nameof(Data.Models.Metadata.Rom.Name), nameof(Data.Models.Metadata.Rom.Size), - nameof(Data.Models.Metadata.Rom.CRC), + nameof(Data.Models.Metadata.Rom.CRC32), ])); } @@ -321,7 +321,7 @@ namespace SabreTools.Metadata.DatFiles.Test nameof(Data.Models.Metadata.Rom.SHA256), nameof(Data.Models.Metadata.Rom.SHA1), nameof(Data.Models.Metadata.Rom.MD5), - nameof(Data.Models.Metadata.Rom.CRC), + nameof(Data.Models.Metadata.Rom.CRC32), ])); } @@ -350,7 +350,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ nameof(Data.Models.Metadata.Rom.Name), - nameof(Data.Models.Metadata.Rom.CRC), + nameof(Data.Models.Metadata.Rom.CRC32), ])); } @@ -742,7 +742,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.True(actual.SequenceEqual([ nameof(Data.Models.Metadata.Rom.Name), nameof(Data.Models.Metadata.Rom.Size), - nameof(Data.Models.Metadata.Rom.CRC), + nameof(Data.Models.Metadata.Rom.CRC32), nameof(Data.Models.Metadata.Rom.SHA1), ])); } @@ -1277,7 +1277,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ nameof(Data.Models.Metadata.Rom.Size), - nameof(Data.Models.Metadata.Rom.CRC), + nameof(Data.Models.Metadata.Rom.CRC32), ])); } @@ -1335,7 +1335,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ nameof(Data.Models.Metadata.Rom.Name), - nameof(Data.Models.Metadata.Rom.CRC), + nameof(Data.Models.Metadata.Rom.CRC32), nameof(Data.Models.Metadata.Rom.Size), ])); } diff --git a/SabreTools.Metadata.DatFiles.Test/ItemDictionaryDBTests.cs b/SabreTools.Metadata.DatFiles.Test/ItemDictionaryDBTests.cs index 86f5968f..eca25387 100644 --- a/SabreTools.Metadata.DatFiles.Test/ItemDictionaryDBTests.cs +++ b/SabreTools.Metadata.DatFiles.Test/ItemDictionaryDBTests.cs @@ -306,7 +306,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "rom-1", Size = 1024, - CRC = "DEADBEEF", + CRC32 = "DEADBEEF", SHA1 = "0000000fbbb37f8488100b1b4697012de631a5e6" }; @@ -314,7 +314,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "rom-2", Size = 1024, - CRC = "DEADBEEF", + CRC32 = "DEADBEEF", RemoveFlag = true, SHA1 = "000000e948edcb4f7704b8af85a77a3339ecce44" }; @@ -550,7 +550,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "rom-1", Size = 1024, - CRC = "DEADBEEF", + CRC32 = "DEADBEEF", SHA1 = "0000000fbbb37f8488100b1b4697012de631a5e6" }; @@ -579,7 +579,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "rom-1", Size = 1024, - CRC = "DEADBEEF", + CRC32 = "DEADBEEF", SHA1 = "0000000fbbb37f8488100b1b4697012de631a5e6" }; @@ -616,7 +616,7 @@ namespace SabreTools.Metadata.DatFiles.Test [Theory] [InlineData(ItemKey.NULL, 2)] [InlineData(ItemKey.Machine, 2)] - [InlineData(ItemKey.CRC, 1)] + [InlineData(ItemKey.CRC32, 1)] [InlineData(ItemKey.SHA1, 4)] public void BucketByTest(ItemKey itemKey, int expected) { @@ -631,7 +631,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "rom-1", Size = 1024, - CRC = "DEADBEEF", + CRC32 = "DEADBEEF", SHA1 = "0000000fbbb37f8488100b1b4697012de631a5e6" }; @@ -639,7 +639,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "rom-2", Size = 1024, - CRC = "DEADBEEF", + CRC32 = "DEADBEEF", SHA1 = "000000e948edcb4f7704b8af85a77a3339ecce44" }; @@ -647,7 +647,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "rom-3", Size = 1024, - CRC = "DEADBEEF", + CRC32 = "DEADBEEF", SHA1 = "00000ea4014ce66679e7e17d56ac510f67e39e26" }; @@ -655,7 +655,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "rom-4", Size = 1024, - CRC = "DEADBEEF", + CRC32 = "DEADBEEF", SHA1 = "00000151d437442e74e5134023fab8bf694a2487" }; @@ -762,7 +762,7 @@ namespace SabreTools.Metadata.DatFiles.Test var romA = new Rom { Name = "same-name", - CRC = "BEEFDEAD" + CRC32 = "BEEFDEAD" }; long romAIndex = dict.AddItem(romA, machineAIndex, sourceAIndex); KeyValuePair? romAPair = new KeyValuePair(romAIndex, romA); @@ -770,7 +770,7 @@ namespace SabreTools.Metadata.DatFiles.Test var romB = new Rom { Name = "same-name", - CRC = "DEADBEEF" + CRC32 = "DEADBEEF" }; long romBIndex = dict.AddItem(romB, machineBIndex, sourceBIndex); KeyValuePair? romBPair = new KeyValuePair(romBIndex, romB); @@ -798,7 +798,7 @@ namespace SabreTools.Metadata.DatFiles.Test var romA = new Rom { Name = "same-name", - CRC = "DEADBEEF" + CRC32 = "DEADBEEF" }; long romAIndex = dict.AddItem(romA, machineAIndex, sourceAIndex); KeyValuePair? romAPair = new KeyValuePair(romAIndex, romA); @@ -806,7 +806,7 @@ namespace SabreTools.Metadata.DatFiles.Test var romB = new Rom { Name = "same-name", - CRC = "DEADBEEF" + CRC32 = "DEADBEEF" }; long romBIndex = dict.AddItem(romB, machineBIndex, sourceBIndex); KeyValuePair? romBPair = new KeyValuePair(romBIndex, romB); @@ -834,7 +834,7 @@ namespace SabreTools.Metadata.DatFiles.Test var romA = new Rom { Name = "same-name", - CRC = "DEADBEEF" + CRC32 = "DEADBEEF" }; long romAIndex = dict.AddItem(romA, machineAIndex, sourceAIndex); KeyValuePair? romAPair = new KeyValuePair(romAIndex, romA); @@ -842,7 +842,7 @@ namespace SabreTools.Metadata.DatFiles.Test var romB = new Rom { Name = "same-name", - CRC = "DEADBEEF" + CRC32 = "DEADBEEF" }; long romBIndex = dict.AddItem(romB, machineBIndex, sourceBIndex); KeyValuePair? romBPair = new KeyValuePair(romBIndex, romB); @@ -870,7 +870,7 @@ namespace SabreTools.Metadata.DatFiles.Test var romA = new Rom { Name = "same-name", - CRC = "DEADBEEF" + CRC32 = "DEADBEEF" }; long romAIndex = dict.AddItem(romA, machineAIndex, sourceAIndex); KeyValuePair? romAPair = new KeyValuePair(romAIndex, romA); @@ -878,7 +878,7 @@ namespace SabreTools.Metadata.DatFiles.Test var romB = new Rom { Name = "same-name", - CRC = "DEADBEEF" + CRC32 = "DEADBEEF" }; long romBIndex = dict.AddItem(romB, machineBIndex, sourceBIndex); KeyValuePair? romBPair = new KeyValuePair(romBIndex, romB); @@ -906,7 +906,7 @@ namespace SabreTools.Metadata.DatFiles.Test var romA = new Rom { Name = "same-name", - CRC = "DEADBEEF" + CRC32 = "DEADBEEF" }; long romAIndex = dict.AddItem(romA, machineAIndex, sourceAIndex); KeyValuePair? romAPair = new KeyValuePair(romAIndex, romA); @@ -914,7 +914,7 @@ namespace SabreTools.Metadata.DatFiles.Test var romB = new Rom { Name = "same-name", - CRC = "DEADBEEF" + CRC32 = "DEADBEEF" }; long romBIndex = dict.AddItem(romB, machineBIndex, sourceBIndex); KeyValuePair? romBPair = new KeyValuePair(romBIndex, romB); @@ -1032,7 +1032,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "rom", Size = 12345, - CRC = "deadbeef" + CRC32 = "deadbeef" }; var dict = new ItemDictionaryDB(); diff --git a/SabreTools.Metadata.DatFiles.Test/ItemDictionaryTests.cs b/SabreTools.Metadata.DatFiles.Test/ItemDictionaryTests.cs index a7608bb2..d256b23a 100644 --- a/SabreTools.Metadata.DatFiles.Test/ItemDictionaryTests.cs +++ b/SabreTools.Metadata.DatFiles.Test/ItemDictionaryTests.cs @@ -291,7 +291,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "rom-1", Size = 1024, - CRC = "DEAEEF", + CRC32 = "DEAEEF", SHA1 = "0000000fbbb37f8488100b1b4697012de631a5e6" }; rom1.CopyMachineInformation(machine); @@ -300,7 +300,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "rom-2", Size = 1024, - CRC = "DEAEEF", + CRC32 = "DEAEEF", RemoveFlag = true, SHA1 = "000000e948edcb4f7704b8af85a77a3339ecce44" }; @@ -441,7 +441,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Size = 1024, Name = "rom-1", - CRC = "DEAEEF", + CRC32 = "DEAEEF", SHA1 = "0000000fbbb37f8488100b1b4697012de631a5e6" }; datItem.CopyMachineInformation(machine); @@ -468,7 +468,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Size = 1024, Name = "rom-1", - CRC = "DEAEEF", + CRC32 = "DEAEEF", SHA1 = "0000000fbbb37f8488100b1b4697012de631a5e6" }; datItem.CopyMachineInformation(machine); @@ -489,7 +489,7 @@ namespace SabreTools.Metadata.DatFiles.Test [Theory] [InlineData(ItemKey.NULL, 2)] [InlineData(ItemKey.Machine, 2)] - [InlineData(ItemKey.CRC, 1)] + [InlineData(ItemKey.CRC32, 1)] [InlineData(ItemKey.SHA1, 4)] public void BucketByTest(ItemKey itemKey, int expected) { @@ -502,7 +502,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "rom-1", Size = 1024, - CRC = "DEAEEF", + CRC32 = "DEAEEF", SHA1 = "0000000fbbb37f8488100b1b4697012de631a5e6" }; rom1.CopyMachineInformation(machine1); @@ -511,7 +511,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "rom-2", Size = 1024, - CRC = "DEAEEF", + CRC32 = "DEAEEF", SHA1 = "000000e948edcb4f7704b8af85a77a3339ecce44" }; rom1.CopyMachineInformation(machine1); @@ -520,7 +520,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "rom-3", Size = 1024, - CRC = "DEAEEF", + CRC32 = "DEAEEF", SHA1 = "00000ea4014ce66679e7e17d56ac510f67e39e26" }; rom1.CopyMachineInformation(machine2); @@ -529,7 +529,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "rom-4", Size = 1024, - CRC = "DEAEEF", + CRC32 = "DEAEEF", SHA1 = "00000151d437442e74e5134023fab8bf694a2487" }; rom1.CopyMachineInformation(machine2); @@ -616,7 +616,7 @@ namespace SabreTools.Metadata.DatFiles.Test var romA = new Rom { Name = "same-name", - CRC = "BEEFDEAD", + CRC32 = "BEEFDEAD", Source = new Source(0) }; romA.CopyMachineInformation(machineA); @@ -624,7 +624,7 @@ namespace SabreTools.Metadata.DatFiles.Test var romB = new Rom { Name = "same-name", - CRC = "DEADBEEF", + CRC32 = "DEADBEEF", Source = new Source(1) }; romB.CopyMachineInformation(machineB); @@ -645,7 +645,7 @@ namespace SabreTools.Metadata.DatFiles.Test var romA = new Rom { Name = "same-name", - CRC = "DEADBEEF", + CRC32 = "DEADBEEF", Source = new Source(0) }; romA.CopyMachineInformation(machineA); @@ -653,7 +653,7 @@ namespace SabreTools.Metadata.DatFiles.Test var romB = new Rom { Name = "same-name", - CRC = "DEADBEEF", + CRC32 = "DEADBEEF", Source = new Source(1) }; romB.CopyMachineInformation(machineB); @@ -674,7 +674,7 @@ namespace SabreTools.Metadata.DatFiles.Test var romA = new Rom { Name = "same-name", - CRC = "DEADBEEF", + CRC32 = "DEADBEEF", Source = new Source(0) }; romA.CopyMachineInformation(machineA); @@ -682,7 +682,7 @@ namespace SabreTools.Metadata.DatFiles.Test var romB = new Rom { Name = "same-name", - CRC = "DEADBEEF", + CRC32 = "DEADBEEF", Source = new Source(1) }; romB.CopyMachineInformation(machineB); @@ -703,7 +703,7 @@ namespace SabreTools.Metadata.DatFiles.Test var romA = new Rom { Name = "same-name", - CRC = "DEADBEEF", + CRC32 = "DEADBEEF", Source = new Source(0) }; romA.CopyMachineInformation(machineA); @@ -711,7 +711,7 @@ namespace SabreTools.Metadata.DatFiles.Test var romB = new Rom { Name = "same-name", - CRC = "DEADBEEF", + CRC32 = "DEADBEEF", Source = new Source(0) }; romB.CopyMachineInformation(machineB); @@ -732,7 +732,7 @@ namespace SabreTools.Metadata.DatFiles.Test var romA = new Rom { Name = "same-name", - CRC = "DEADBEEF", + CRC32 = "DEADBEEF", Source = new Source(0) }; romA.CopyMachineInformation(machineA); @@ -740,7 +740,7 @@ namespace SabreTools.Metadata.DatFiles.Test var romB = new Rom { Name = "same-name", - CRC = "DEADBEEF", + CRC32 = "DEADBEEF", Source = new Source(0) }; romB.CopyMachineInformation(machineB); @@ -856,7 +856,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Name = "rom", Size = 12345, - CRC = "deadbeef", + CRC32 = "deadbeef", Source = source, Machine = machine }; diff --git a/SabreTools.Metadata.DatFiles/DatFile.cs b/SabreTools.Metadata.DatFiles/DatFile.cs index e177af3a..8d446fdf 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.cs @@ -579,7 +579,7 @@ namespace SabreTools.Metadata.DatFiles category = machine?.Category is null ? string.Empty : string.Join(", ", machine.Category), name = item.GetName() ?? type.AsStringValue() ?? string.Empty, crc16 = string.Empty, - crc = string.Empty, + crc32 = string.Empty, crc64 = string.Empty, md2 = string.Empty, md4 = string.Empty, @@ -603,7 +603,7 @@ namespace SabreTools.Metadata.DatFiles { name = $"{file.Id}.{file.Extension}"; size = file.Size.ToString() ?? string.Empty; - crc = file.CRC ?? string.Empty; + crc32 = file.CRC ?? string.Empty; md5 = file.MD5 ?? string.Empty; sha1 = file.SHA1 ?? string.Empty; sha256 = file.SHA256 ?? string.Empty; @@ -618,7 +618,7 @@ namespace SabreTools.Metadata.DatFiles else if (item is Rom rom) { crc16 = rom.CRC16 ?? string.Empty; - crc = rom.CRC ?? string.Empty; + crc32 = rom.CRC32 ?? string.Empty; crc64 = rom.CRC64 ?? string.Empty; md2 = rom.MD2 ?? string.Empty; md4 = rom.MD4 ?? string.Empty; @@ -642,7 +642,8 @@ namespace SabreTools.Metadata.DatFiles .Replace("%publisher%", publisher) .Replace("%category%", category) .Replace("%crc16%", crc16) - .Replace("%crc%", crc) + .Replace("%crc%", crc32) + .Replace("%crc32%", crc32) .Replace("%crc64%", crc64) .Replace("%md2%", md2) .Replace("%md4%", md4) @@ -675,14 +676,14 @@ namespace SabreTools.Metadata.DatFiles return rom; // If the item CRC isn't "null" - if (rom.CRC != "null") + if (rom.CRC32 != "null") return rom; // If the Rom has "null" characteristics, ensure all fields rom.Name = rom.Name == "null" ? "-" : rom.Name; rom.Size = 0; rom.CRC16 = rom.CRC16 == "null" ? HashType.CRC16.ZeroString : null; - rom.CRC = rom.CRC == "null" ? HashType.CRC32.ZeroString : null; + rom.CRC32 = rom.CRC32 == "null" ? HashType.CRC32.ZeroString : null; rom.CRC64 = rom.CRC64 == "null" ? HashType.CRC64.ZeroString : null; rom.MD2 = rom.MD2 == "null" ? HashType.MD2.ZeroString : null; rom.MD4 = rom.MD4 == "null" ? HashType.MD4.ZeroString : null; @@ -1076,9 +1077,9 @@ namespace SabreTools.Metadata.DatFiles if (!string.IsNullOrEmpty(crc16)) return $"_{crc16}"; - string? crc = datItem.CRC; - if (!string.IsNullOrEmpty(crc)) - return $"_{crc}"; + string? crc32 = datItem.CRC32; + if (!string.IsNullOrEmpty(crc32)) + return $"_{crc32}"; string? crc64 = datItem.CRC64; if (!string.IsNullOrEmpty(crc64)) diff --git a/SabreTools.Metadata.DatFiles/DatStatistics.cs b/SabreTools.Metadata.DatFiles/DatStatistics.cs index 19b0f6af..b2e5c857 100644 --- a/SabreTools.Metadata.DatFiles/DatStatistics.cs +++ b/SabreTools.Metadata.DatFiles/DatStatistics.cs @@ -340,7 +340,7 @@ namespace SabreTools.Metadata.DatFiles { TotalSize += rom.Size ?? 0; ModifyHashCount(HashType.CRC16, string.IsNullOrEmpty(rom.CRC16) ? 0 : 1); - ModifyHashCount(HashType.CRC32, string.IsNullOrEmpty(rom.CRC) ? 0 : 1); + ModifyHashCount(HashType.CRC32, string.IsNullOrEmpty(rom.CRC32) ? 0 : 1); ModifyHashCount(HashType.CRC64, string.IsNullOrEmpty(rom.CRC64) ? 0 : 1); ModifyHashCount(HashType.MD2, string.IsNullOrEmpty(rom.MD2) ? 0 : 1); ModifyHashCount(HashType.MD4, string.IsNullOrEmpty(rom.MD4) ? 0 : 1); @@ -415,7 +415,7 @@ namespace SabreTools.Metadata.DatFiles { TotalSize -= rom.Size ?? 0; ModifyHashCount(HashType.CRC16, string.IsNullOrEmpty(rom.CRC16) ? 0 : -1); - ModifyHashCount(HashType.CRC32, string.IsNullOrEmpty(rom.CRC) ? 0 : -1); + ModifyHashCount(HashType.CRC32, string.IsNullOrEmpty(rom.CRC32) ? 0 : -1); ModifyHashCount(HashType.CRC64, string.IsNullOrEmpty(rom.CRC64) ? 0 : -1); ModifyHashCount(HashType.MD2, string.IsNullOrEmpty(rom.MD2) ? 0 : -1); ModifyHashCount(HashType.MD4, string.IsNullOrEmpty(rom.MD4) ? 0 : -1); diff --git a/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs b/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs index de90a89a..22f7d359 100644 --- a/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs +++ b/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs @@ -93,7 +93,7 @@ namespace SabreTools.Metadata.DatFiles.Formats if (rom.Size is null || rom.Size < 0) missingFields.Add(nameof(Data.Models.Metadata.Rom.Size)); if (string.IsNullOrEmpty(rom.CRC16) - && string.IsNullOrEmpty(rom.CRC) + && string.IsNullOrEmpty(rom.CRC32) && string.IsNullOrEmpty(rom.CRC64) && string.IsNullOrEmpty(rom.MD2) && string.IsNullOrEmpty(rom.MD4) diff --git a/SabreTools.Metadata.DatFiles/Formats/DosCenter.cs b/SabreTools.Metadata.DatFiles/Formats/DosCenter.cs index 2c46c17f..2d1152a6 100644 --- a/SabreTools.Metadata.DatFiles/Formats/DosCenter.cs +++ b/SabreTools.Metadata.DatFiles/Formats/DosCenter.cs @@ -38,8 +38,8 @@ namespace SabreTools.Metadata.DatFiles.Formats missingFields.Add(nameof(Data.Models.Metadata.Rom.Size)); // if (string.IsNullOrEmpty(rom.Date)) // missingFields.Add(nameof(Data.Models.Metadata.Rom.Date)); - if (string.IsNullOrEmpty(rom.CRC)) - missingFields.Add(nameof(Data.Models.Metadata.Rom.CRC)); + if (string.IsNullOrEmpty(rom.CRC32)) + missingFields.Add(nameof(Data.Models.Metadata.Rom.CRC32)); // if (string.IsNullOrEmpty(rom.GetStringFieldValue(Data.Models.Metadata.Rom.SHA1Key))) // missingFields.Add(nameof(Data.Models.Metadata.Rom.SHA1)); break; diff --git a/SabreTools.Metadata.DatFiles/Formats/EverdriveSmdb.cs b/SabreTools.Metadata.DatFiles/Formats/EverdriveSmdb.cs index 24ea93de..6c019e65 100644 --- a/SabreTools.Metadata.DatFiles/Formats/EverdriveSmdb.cs +++ b/SabreTools.Metadata.DatFiles/Formats/EverdriveSmdb.cs @@ -40,8 +40,8 @@ namespace SabreTools.Metadata.DatFiles.Formats missingFields.Add(nameof(Data.Models.Metadata.Rom.SHA1)); if (string.IsNullOrEmpty(rom.MD5)) missingFields.Add(nameof(Data.Models.Metadata.Rom.MD5)); - if (string.IsNullOrEmpty(rom.CRC)) - missingFields.Add(nameof(Data.Models.Metadata.Rom.CRC)); + if (string.IsNullOrEmpty(rom.CRC32)) + missingFields.Add(nameof(Data.Models.Metadata.Rom.CRC32)); break; default: diff --git a/SabreTools.Metadata.DatFiles/Formats/Listrom.cs b/SabreTools.Metadata.DatFiles/Formats/Listrom.cs index 01a6e4fe..4b2aebf1 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Listrom.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Listrom.cs @@ -48,8 +48,8 @@ namespace SabreTools.Metadata.DatFiles.Formats missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); if (rom.Size is null || rom.Size < 0) missingFields.Add(nameof(Data.Models.Metadata.Rom.Size)); - if (string.IsNullOrEmpty(rom.CRC)) - missingFields.Add(nameof(Data.Models.Metadata.Rom.CRC)); + if (string.IsNullOrEmpty(rom.CRC32)) + missingFields.Add(nameof(Data.Models.Metadata.Rom.CRC32)); if (string.IsNullOrEmpty(rom.SHA1)) missingFields.Add(nameof(Data.Models.Metadata.Rom.SHA1)); break; diff --git a/SabreTools.Metadata.DatFiles/Formats/Listxml.cs b/SabreTools.Metadata.DatFiles/Formats/Listxml.cs index f0cb7dd1..4cd7ae9e 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Listxml.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Listxml.cs @@ -271,7 +271,7 @@ namespace SabreTools.Metadata.DatFiles.Formats missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); if (rom.Size is null || rom.Size < 0) missingFields.Add(nameof(Data.Models.Metadata.Rom.Size)); - if (string.IsNullOrEmpty(rom.CRC) + if (string.IsNullOrEmpty(rom.CRC32) && string.IsNullOrEmpty(rom.SHA1)) { missingFields.Add(nameof(Data.Models.Metadata.Rom.SHA1)); diff --git a/SabreTools.Metadata.DatFiles/Formats/Logiqx.cs b/SabreTools.Metadata.DatFiles/Formats/Logiqx.cs index 976d16d8..82d809e6 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Logiqx.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Logiqx.cs @@ -285,7 +285,7 @@ namespace SabreTools.Metadata.DatFiles.Formats if (rom.Size is null || rom.Size < 0) missingFields.Add(nameof(Data.Models.Metadata.Rom.Size)); if (string.IsNullOrEmpty(rom.CRC16) - && string.IsNullOrEmpty(rom.CRC) + && string.IsNullOrEmpty(rom.CRC32) && string.IsNullOrEmpty(rom.CRC64) && string.IsNullOrEmpty(rom.MD2) && string.IsNullOrEmpty(rom.MD4) diff --git a/SabreTools.Metadata.DatFiles/Formats/OfflineList.cs b/SabreTools.Metadata.DatFiles/Formats/OfflineList.cs index f75f9b74..34a2ab00 100644 --- a/SabreTools.Metadata.DatFiles/Formats/OfflineList.cs +++ b/SabreTools.Metadata.DatFiles/Formats/OfflineList.cs @@ -34,8 +34,8 @@ namespace SabreTools.Metadata.DatFiles.Formats case Rom rom: if (rom.Size is null || rom.Size < 0) missingFields.Add(nameof(Data.Models.Metadata.Rom.Size)); - if (string.IsNullOrEmpty(rom.CRC)) - missingFields.Add(nameof(Data.Models.Metadata.Rom.CRC)); + if (string.IsNullOrEmpty(rom.CRC32)) + missingFields.Add(nameof(Data.Models.Metadata.Rom.CRC32)); break; default: diff --git a/SabreTools.Metadata.DatFiles/Formats/RomCenter.cs b/SabreTools.Metadata.DatFiles/Formats/RomCenter.cs index ec4436e6..7a6b3548 100644 --- a/SabreTools.Metadata.DatFiles/Formats/RomCenter.cs +++ b/SabreTools.Metadata.DatFiles/Formats/RomCenter.cs @@ -34,8 +34,8 @@ namespace SabreTools.Metadata.DatFiles.Formats case Rom rom: if (string.IsNullOrEmpty(rom.Name)) missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); - if (string.IsNullOrEmpty(rom.CRC)) - missingFields.Add(nameof(Data.Models.Metadata.Rom.CRC)); + if (string.IsNullOrEmpty(rom.CRC32)) + missingFields.Add(nameof(Data.Models.Metadata.Rom.CRC32)); if (rom.Size is null || rom.Size < 0) missingFields.Add(nameof(Data.Models.Metadata.Rom.Size)); break; diff --git a/SabreTools.Metadata.DatFiles/Formats/SeparatedValue.cs b/SabreTools.Metadata.DatFiles/Formats/SeparatedValue.cs index d7f5a781..9fde320b 100644 --- a/SabreTools.Metadata.DatFiles/Formats/SeparatedValue.cs +++ b/SabreTools.Metadata.DatFiles/Formats/SeparatedValue.cs @@ -97,7 +97,7 @@ namespace SabreTools.Metadata.DatFiles.Formats missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); if (rom.Size is null || rom.Size < 0) missingFields.Add(nameof(Data.Models.Metadata.Rom.Size)); - if (string.IsNullOrEmpty(rom.CRC) + if (string.IsNullOrEmpty(rom.CRC32) && string.IsNullOrEmpty(rom.MD5) && string.IsNullOrEmpty(rom.SHA1) && string.IsNullOrEmpty(rom.SHA256) diff --git a/SabreTools.Metadata.DatFiles/Formats/SfvFile.cs b/SabreTools.Metadata.DatFiles/Formats/SfvFile.cs index dedb10c9..af53c640 100644 --- a/SabreTools.Metadata.DatFiles/Formats/SfvFile.cs +++ b/SabreTools.Metadata.DatFiles/Formats/SfvFile.cs @@ -36,8 +36,8 @@ namespace SabreTools.Metadata.DatFiles.Formats case Rom rom: if (string.IsNullOrEmpty(rom.Name)) missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); - if (string.IsNullOrEmpty(rom.CRC)) - missingFields.Add(nameof(Data.Models.Metadata.Rom.CRC)); + if (string.IsNullOrEmpty(rom.CRC32)) + missingFields.Add(nameof(Data.Models.Metadata.Rom.CRC32)); break; default: diff --git a/SabreTools.Metadata.DatFiles/ItemDictionary.cs b/SabreTools.Metadata.DatFiles/ItemDictionary.cs index 07e52fa2..8bd036a8 100644 --- a/SabreTools.Metadata.DatFiles/ItemDictionary.cs +++ b/SabreTools.Metadata.DatFiles/ItemDictionary.cs @@ -147,11 +147,11 @@ namespace SabreTools.Metadata.DatFiles // If we have a rom and it's missing size AND the hashes match a 0-byte file, fill in the rest of the info else if ((size == 0 || size is null) - && (string.IsNullOrEmpty(rom.CRC) || rom.HasZeroHash())) + && (string.IsNullOrEmpty(rom.CRC32) || rom.HasZeroHash())) { rom.Size = 0; rom.CRC16 = null; // HashType.CRC16.ZeroString - rom.CRC = HashType.CRC32.ZeroString; + rom.CRC32 = HashType.CRC32.ZeroString; rom.CRC64 = null; // HashType.CRC64.ZeroString rom.MD2 = null; // HashType.MD2.ZeroString rom.MD4 = null; // HashType.MD4.ZeroString @@ -710,9 +710,9 @@ namespace SabreTools.Metadata.DatFiles else if (diskCount + mediaCount + romCount - nodumpCount == DatStatistics.GetHashCount(HashType.CRC16)) return ItemKey.CRC16; - // Otherwise, we bucket by CRC + // Otherwise, we bucket by CRC32 else - return ItemKey.CRC; + return ItemKey.CRC32; } /// diff --git a/SabreTools.Metadata.DatFiles/ItemDictionaryDB.cs b/SabreTools.Metadata.DatFiles/ItemDictionaryDB.cs index 0050b835..bb024f69 100644 --- a/SabreTools.Metadata.DatFiles/ItemDictionaryDB.cs +++ b/SabreTools.Metadata.DatFiles/ItemDictionaryDB.cs @@ -236,11 +236,11 @@ namespace SabreTools.Metadata.DatFiles // If we have a rom and it's missing size AND the hashes match a 0-byte file, fill in the rest of the info else if ((size == 0 || size is null) - && (string.IsNullOrEmpty(rom.CRC) || rom.HasZeroHash())) + && (string.IsNullOrEmpty(rom.CRC32) || rom.HasZeroHash())) { rom.Size = 0; rom.CRC16 = null; // HashType.CRC16.ZeroString - rom.CRC = HashType.CRC32.ZeroString; + rom.CRC32 = HashType.CRC32.ZeroString; rom.CRC64 = null; // HashType.CRC64.ZeroString rom.MD2 = null; // HashType.MD2.ZeroString rom.MD4 = null; // HashType.MD4.ZeroString @@ -1025,9 +1025,9 @@ namespace SabreTools.Metadata.DatFiles else if (diskCount + mediaCount + romCount - nodumpCount == DatStatistics.GetHashCount(HashType.CRC16)) return ItemKey.CRC16; - // Otherwise, we bucket by CRC + // Otherwise, we bucket by CRC32 else - return ItemKey.CRC; + return ItemKey.CRC32; } /// diff --git a/SabreTools.Metadata.DatItems.Test/DatItemTests.cs b/SabreTools.Metadata.DatItems.Test/DatItemTests.cs index 05bb5531..1dceb862 100644 --- a/SabreTools.Metadata.DatItems.Test/DatItemTests.cs +++ b/SabreTools.Metadata.DatItems.Test/DatItemTests.cs @@ -242,10 +242,10 @@ namespace SabreTools.Metadata.DatItems.Test [InlineData(ItemKey.CRC16, false, true, "0000")] [InlineData(ItemKey.CRC16, true, false, "0000")] [InlineData(ItemKey.CRC16, true, true, "0000")] - [InlineData(ItemKey.CRC, false, false, "00000000")] - [InlineData(ItemKey.CRC, false, true, "00000000")] - [InlineData(ItemKey.CRC, true, false, "00000000")] - [InlineData(ItemKey.CRC, true, true, "00000000")] + [InlineData(ItemKey.CRC32, false, false, "00000000")] + [InlineData(ItemKey.CRC32, false, true, "00000000")] + [InlineData(ItemKey.CRC32, true, false, "00000000")] + [InlineData(ItemKey.CRC32, true, true, "00000000")] [InlineData(ItemKey.CRC64, false, false, "0000000000000000")] [InlineData(ItemKey.CRC64, false, true, "0000000000000000")] [InlineData(ItemKey.CRC64, true, false, "0000000000000000")] @@ -315,10 +315,10 @@ namespace SabreTools.Metadata.DatItems.Test [InlineData(ItemKey.CRC16, false, true, "DEADBEEF")] [InlineData(ItemKey.CRC16, true, false, "deadbeef")] [InlineData(ItemKey.CRC16, true, true, "deadbeef")] - [InlineData(ItemKey.CRC, false, false, "DEADBEEF")] - [InlineData(ItemKey.CRC, false, true, "DEADBEEF")] - [InlineData(ItemKey.CRC, true, false, "deadbeef")] - [InlineData(ItemKey.CRC, true, true, "deadbeef")] + [InlineData(ItemKey.CRC32, false, false, "DEADBEEF")] + [InlineData(ItemKey.CRC32, false, true, "DEADBEEF")] + [InlineData(ItemKey.CRC32, true, false, "deadbeef")] + [InlineData(ItemKey.CRC32, true, true, "deadbeef")] [InlineData(ItemKey.CRC64, false, false, "DEADBEEF")] [InlineData(ItemKey.CRC64, false, true, "DEADBEEF")] [InlineData(ItemKey.CRC64, true, false, "deadbeef")] @@ -372,7 +372,7 @@ namespace SabreTools.Metadata.DatItems.Test DatItem datItem = new Rom { CRC16 = "DEADBEEF", - CRC = "DEADBEEF", + CRC32 = "DEADBEEF", CRC64 = "DEADBEEF", MD2 = "DEADBEEF", MD4 = "DEADBEEF", diff --git a/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs b/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs index f02968e4..f449b974 100644 --- a/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs +++ b/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs @@ -228,10 +228,10 @@ namespace SabreTools.Metadata.DatItems.Formats.Test [InlineData(ItemKey.Machine, false, true, "Machine")] [InlineData(ItemKey.Machine, true, false, "0000000000-machine")] [InlineData(ItemKey.Machine, true, true, "machine")] - [InlineData(ItemKey.CRC, false, false, "00000000")] - [InlineData(ItemKey.CRC, false, true, "00000000")] - [InlineData(ItemKey.CRC, true, false, "00000000")] - [InlineData(ItemKey.CRC, true, true, "00000000")] + [InlineData(ItemKey.CRC32, false, false, "00000000")] + [InlineData(ItemKey.CRC32, false, true, "00000000")] + [InlineData(ItemKey.CRC32, true, false, "00000000")] + [InlineData(ItemKey.CRC32, true, true, "00000000")] [InlineData(ItemKey.MD2, false, false, "8350e5a3e24c153df2275c9f80692773")] [InlineData(ItemKey.MD2, false, true, "8350e5a3e24c153df2275c9f80692773")] [InlineData(ItemKey.MD2, true, false, "8350e5a3e24c153df2275c9f80692773")] diff --git a/SabreTools.Metadata.DatItems.Test/Formats/FileTests.cs b/SabreTools.Metadata.DatItems.Test/Formats/FileTests.cs index 1b4d6295..fc9c29bb 100644 --- a/SabreTools.Metadata.DatItems.Test/Formats/FileTests.cs +++ b/SabreTools.Metadata.DatItems.Test/Formats/FileTests.cs @@ -36,7 +36,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Assert.Equal("XXXXXX.XXXXXX", actual.Name); Assert.Equal(12345, actual.Size); - Assert.Equal("deadbeef", actual.CRC); + Assert.Equal("deadbeef", actual.CRC32); Assert.Equal("000000000000000000000000deadbeef", actual.MD5); Assert.Equal("00000000000000000000000000000000deadbeef", actual.SHA1); Assert.Equal("00000000000000000000000000000000000000000000000000000000deadbeef", actual.SHA256); @@ -299,10 +299,10 @@ namespace SabreTools.Metadata.DatItems.Formats.Test [InlineData(ItemKey.Machine, false, true, "Machine")] [InlineData(ItemKey.Machine, true, false, "0000000000-machine")] [InlineData(ItemKey.Machine, true, true, "machine")] - [InlineData(ItemKey.CRC, false, false, "deadbeef")] - [InlineData(ItemKey.CRC, false, true, "deadbeef")] - [InlineData(ItemKey.CRC, true, false, "deadbeef")] - [InlineData(ItemKey.CRC, true, true, "deadbeef")] + [InlineData(ItemKey.CRC32, false, false, "deadbeef")] + [InlineData(ItemKey.CRC32, false, true, "deadbeef")] + [InlineData(ItemKey.CRC32, true, false, "deadbeef")] + [InlineData(ItemKey.CRC32, true, true, "deadbeef")] [InlineData(ItemKey.MD2, false, false, "8350e5a3e24c153df2275c9f80692773")] [InlineData(ItemKey.MD2, false, true, "8350e5a3e24c153df2275c9f80692773")] [InlineData(ItemKey.MD2, true, false, "8350e5a3e24c153df2275c9f80692773")] diff --git a/SabreTools.Metadata.DatItems.Test/Formats/MediaTests.cs b/SabreTools.Metadata.DatItems.Test/Formats/MediaTests.cs index 90dc6b20..11840acc 100644 --- a/SabreTools.Metadata.DatItems.Test/Formats/MediaTests.cs +++ b/SabreTools.Metadata.DatItems.Test/Formats/MediaTests.cs @@ -290,10 +290,10 @@ namespace SabreTools.Metadata.DatItems.Formats.Test [InlineData(ItemKey.Machine, false, true, "Machine")] [InlineData(ItemKey.Machine, true, false, "0000000000-machine")] [InlineData(ItemKey.Machine, true, true, "machine")] - [InlineData(ItemKey.CRC, false, false, "00000000")] - [InlineData(ItemKey.CRC, false, true, "00000000")] - [InlineData(ItemKey.CRC, true, false, "00000000")] - [InlineData(ItemKey.CRC, true, true, "00000000")] + [InlineData(ItemKey.CRC32, false, false, "00000000")] + [InlineData(ItemKey.CRC32, false, true, "00000000")] + [InlineData(ItemKey.CRC32, true, false, "00000000")] + [InlineData(ItemKey.CRC32, true, true, "00000000")] [InlineData(ItemKey.MD2, false, false, "8350e5a3e24c153df2275c9f80692773")] [InlineData(ItemKey.MD2, false, true, "8350e5a3e24c153df2275c9f80692773")] [InlineData(ItemKey.MD2, true, false, "8350e5a3e24c153df2275c9f80692773")] diff --git a/SabreTools.Metadata.DatItems.Test/Formats/RomTests.cs b/SabreTools.Metadata.DatItems.Test/Formats/RomTests.cs index 0c8347f9..f66a3e91 100644 --- a/SabreTools.Metadata.DatItems.Test/Formats/RomTests.cs +++ b/SabreTools.Metadata.DatItems.Test/Formats/RomTests.cs @@ -16,7 +16,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test self.FillMissingInformation(other); Assert.Null(self.CRC16); - Assert.Null(self.CRC); + Assert.Null(self.CRC32); Assert.Null(self.CRC64); Assert.Null(self.MD2); Assert.Null(self.MD4); @@ -38,7 +38,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Rom other = new Rom { CRC16 = "XXXXXX", - CRC = "XXXXXX", + CRC32 = "XXXXXX", CRC64 = "XXXXXX", MD2 = "XXXXXX", MD4 = "XXXXXX", @@ -55,7 +55,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test self.FillMissingInformation(other); Assert.Equal("XXXXXX", self.CRC16); - Assert.Equal("XXXXXX", self.CRC); + Assert.Equal("XXXXXX", self.CRC32); Assert.Equal("XXXXXX", self.CRC64); Assert.Equal("XXXXXX", self.MD2); Assert.Equal("XXXXXX", self.MD4); @@ -87,7 +87,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Rom self = new Rom { CRC16 = "XXXXXX", - CRC = string.Empty, + CRC32 = string.Empty, CRC64 = string.Empty, MD2 = string.Empty, MD4 = string.Empty, @@ -106,12 +106,12 @@ namespace SabreTools.Metadata.DatItems.Formats.Test } [Fact] - public void HasHashes_CRC_True() + public void HasHashes_CRC32_True() { Rom self = new Rom { CRC16 = string.Empty, - CRC = "XXXXXX", + CRC32 = "XXXXXX", CRC64 = string.Empty, MD2 = string.Empty, MD4 = string.Empty, @@ -135,7 +135,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Rom self = new Rom { CRC16 = string.Empty, - CRC = string.Empty, + CRC32 = string.Empty, CRC64 = "XXXXXX", MD2 = string.Empty, MD4 = string.Empty, @@ -159,7 +159,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Rom self = new Rom { CRC16 = string.Empty, - CRC = string.Empty, + CRC32 = string.Empty, CRC64 = string.Empty, MD2 = "XXXXXX", MD4 = string.Empty, @@ -183,7 +183,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Rom self = new Rom { CRC16 = string.Empty, - CRC = string.Empty, + CRC32 = string.Empty, CRC64 = string.Empty, MD2 = string.Empty, MD4 = "XXXXXX", @@ -207,7 +207,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Rom self = new Rom { CRC16 = string.Empty, - CRC = string.Empty, + CRC32 = string.Empty, CRC64 = string.Empty, MD2 = string.Empty, MD4 = string.Empty, @@ -231,7 +231,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Rom self = new Rom { CRC16 = string.Empty, - CRC = string.Empty, + CRC32 = string.Empty, CRC64 = string.Empty, MD2 = string.Empty, MD4 = string.Empty, @@ -255,7 +255,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Rom self = new Rom { CRC16 = string.Empty, - CRC = string.Empty, + CRC32 = string.Empty, CRC64 = string.Empty, MD2 = string.Empty, MD4 = string.Empty, @@ -279,7 +279,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Rom self = new Rom { CRC16 = string.Empty, - CRC = string.Empty, + CRC32 = string.Empty, CRC64 = string.Empty, MD2 = string.Empty, MD4 = string.Empty, @@ -303,7 +303,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Rom self = new Rom { CRC16 = string.Empty, - CRC = string.Empty, + CRC32 = string.Empty, CRC64 = string.Empty, MD2 = string.Empty, MD4 = string.Empty, @@ -327,7 +327,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Rom self = new Rom { CRC16 = string.Empty, - CRC = string.Empty, + CRC32 = string.Empty, CRC64 = string.Empty, MD2 = string.Empty, MD4 = string.Empty, @@ -351,7 +351,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Rom self = new Rom { CRC16 = string.Empty, - CRC = string.Empty, + CRC32 = string.Empty, CRC64 = string.Empty, MD2 = string.Empty, MD4 = string.Empty, @@ -375,7 +375,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Rom self = new Rom { CRC16 = string.Empty, - CRC = string.Empty, + CRC32 = string.Empty, CRC64 = string.Empty, MD2 = string.Empty, MD4 = string.Empty, @@ -399,7 +399,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Rom self = new Rom { CRC16 = "XXXXXX", - CRC = "XXXXXX", + CRC32 = "XXXXXX", CRC64 = "XXXXXX", MD2 = "XXXXXX", MD4 = "XXXXXX", @@ -435,7 +435,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Rom self = new Rom { CRC16 = "XXXXXX", - CRC = "XXXXXX", + CRC32 = "XXXXXX", CRC64 = "XXXXXX", MD2 = "XXXXXX", MD4 = "XXXXXX", @@ -459,7 +459,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Rom self = new Rom { CRC16 = HashType.CRC16.ZeroString, - CRC = string.Empty, + CRC32 = string.Empty, CRC64 = string.Empty, MD2 = string.Empty, MD4 = string.Empty, @@ -478,12 +478,12 @@ namespace SabreTools.Metadata.DatItems.Formats.Test } [Fact] - public void HasZeroHash_ZeroCRC_True() + public void HasZeroHash_ZeroCRC32_True() { Rom self = new Rom { CRC16 = string.Empty, - CRC = HashType.CRC32.ZeroString, + CRC32 = HashType.CRC32.ZeroString, CRC64 = string.Empty, MD2 = string.Empty, MD4 = string.Empty, @@ -507,7 +507,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Rom self = new Rom { CRC16 = string.Empty, - CRC = string.Empty, + CRC32 = string.Empty, CRC64 = HashType.CRC64.ZeroString, MD2 = string.Empty, MD4 = string.Empty, @@ -531,7 +531,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Rom self = new Rom { CRC16 = string.Empty, - CRC = string.Empty, + CRC32 = string.Empty, CRC64 = string.Empty, MD2 = HashType.MD2.ZeroString, MD4 = string.Empty, @@ -555,7 +555,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Rom self = new Rom { CRC16 = string.Empty, - CRC = string.Empty, + CRC32 = string.Empty, CRC64 = string.Empty, MD2 = string.Empty, MD4 = HashType.MD4.ZeroString, @@ -579,7 +579,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Rom self = new Rom { CRC16 = string.Empty, - CRC = string.Empty, + CRC32 = string.Empty, CRC64 = string.Empty, MD2 = string.Empty, MD4 = string.Empty, @@ -603,7 +603,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Rom self = new Rom { CRC16 = string.Empty, - CRC = string.Empty, + CRC32 = string.Empty, CRC64 = string.Empty, MD2 = string.Empty, MD4 = string.Empty, @@ -627,7 +627,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Rom self = new Rom { CRC16 = string.Empty, - CRC = string.Empty, + CRC32 = string.Empty, CRC64 = string.Empty, MD2 = string.Empty, MD4 = string.Empty, @@ -651,7 +651,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Rom self = new Rom { CRC16 = string.Empty, - CRC = string.Empty, + CRC32 = string.Empty, CRC64 = string.Empty, MD2 = string.Empty, MD4 = string.Empty, @@ -675,7 +675,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Rom self = new Rom { CRC16 = string.Empty, - CRC = string.Empty, + CRC32 = string.Empty, CRC64 = string.Empty, MD2 = string.Empty, MD4 = string.Empty, @@ -699,7 +699,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Rom self = new Rom { CRC16 = string.Empty, - CRC = string.Empty, + CRC32 = string.Empty, CRC64 = string.Empty, MD2 = string.Empty, MD4 = string.Empty, @@ -723,7 +723,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Rom self = new Rom { CRC16 = string.Empty, - CRC = string.Empty, + CRC32 = string.Empty, CRC64 = string.Empty, MD2 = string.Empty, MD4 = string.Empty, @@ -747,7 +747,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Rom self = new Rom { CRC16 = string.Empty, - CRC = string.Empty, + CRC32 = string.Empty, CRC64 = string.Empty, MD2 = string.Empty, MD4 = string.Empty, @@ -771,7 +771,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Rom self = new Rom { CRC16 = HashType.CRC16.ZeroString, - CRC = HashType.CRC32.ZeroString, + CRC32 = HashType.CRC32.ZeroString, CRC64 = HashType.CRC64.ZeroString, MD2 = HashType.MD2.ZeroString, MD4 = HashType.MD4.ZeroString, @@ -807,10 +807,10 @@ namespace SabreTools.Metadata.DatItems.Formats.Test [InlineData(ItemKey.CRC16, false, true, "DEADBEEF")] [InlineData(ItemKey.CRC16, true, false, "deadbeef")] [InlineData(ItemKey.CRC16, true, true, "deadbeef")] - [InlineData(ItemKey.CRC, false, false, "DEADBEEF")] - [InlineData(ItemKey.CRC, false, true, "DEADBEEF")] - [InlineData(ItemKey.CRC, true, false, "deadbeef")] - [InlineData(ItemKey.CRC, true, true, "deadbeef")] + [InlineData(ItemKey.CRC32, false, false, "DEADBEEF")] + [InlineData(ItemKey.CRC32, false, true, "DEADBEEF")] + [InlineData(ItemKey.CRC32, true, false, "deadbeef")] + [InlineData(ItemKey.CRC32, true, true, "deadbeef")] [InlineData(ItemKey.CRC64, false, false, "DEADBEEF")] [InlineData(ItemKey.CRC64, false, true, "DEADBEEF")] [InlineData(ItemKey.CRC64, true, false, "deadbeef")] @@ -864,7 +864,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test DatItem datItem = new Rom { CRC16 = "DEADBEEF", - CRC = "DEADBEEF", + CRC32 = "DEADBEEF", CRC64 = "DEADBEEF", MD2 = "DEADBEEF", MD4 = "DEADBEEF", diff --git a/SabreTools.Metadata.DatItems/DatItem.cs b/SabreTools.Metadata.DatItems/DatItem.cs index 786515ee..7b458c6f 100644 --- a/SabreTools.Metadata.DatItems/DatItem.cs +++ b/SabreTools.Metadata.DatItems/DatItem.cs @@ -190,7 +190,7 @@ namespace SabreTools.Metadata.DatItems key = HashType.CRC16.ZeroString; break; - case ItemKey.CRC: + case ItemKey.CRC32: key = HashType.CRC32.ZeroString; break; diff --git a/SabreTools.Metadata.DatItems/Enums.cs b/SabreTools.Metadata.DatItems/Enums.cs index 85084652..f9575317 100644 --- a/SabreTools.Metadata.DatItems/Enums.cs +++ b/SabreTools.Metadata.DatItems/Enums.cs @@ -27,7 +27,7 @@ namespace SabreTools.Metadata.DatItems Machine, CRC16, - CRC, + CRC32, CRC64, MD2, MD4, diff --git a/SabreTools.Metadata.DatItems/Formats/File.cs b/SabreTools.Metadata.DatItems/Formats/File.cs index 2e6d1849..7125228a 100644 --- a/SabreTools.Metadata.DatItems/Formats/File.cs +++ b/SabreTools.Metadata.DatItems/Formats/File.cs @@ -150,7 +150,7 @@ namespace SabreTools.Metadata.DatItems.Formats rom.Name = $"{Id}.{Extension}"; rom.Size = Size; - rom.CRC = CRC; + rom.CRC32 = CRC; rom.MD5 = MD5; rom.SHA1 = SHA1; rom.SHA256 = SHA256; @@ -297,7 +297,7 @@ namespace SabreTools.Metadata.DatItems.Formats // Now determine what the key should be based on the bucketedBy value switch (bucketedBy) { - case ItemKey.CRC: + case ItemKey.CRC32: key = CRC; break; diff --git a/SabreTools.Metadata.DatItems/Formats/Rom.cs b/SabreTools.Metadata.DatItems/Formats/Rom.cs index 3fc9839a..5d8b22d7 100644 --- a/SabreTools.Metadata.DatItems/Formats/Rom.cs +++ b/SabreTools.Metadata.DatItems/Formats/Rom.cs @@ -92,18 +92,18 @@ namespace SabreTools.Metadata.DatItems.Formats set => _internal.Comment = value; } - public string? CRC - { - get => _internal.CRC; - set => _internal.CRC = value; - } - public string? CRC16 { get => _internal.CRC16; set => _internal.CRC16 = value; } + public string? CRC32 + { + get => _internal.CRC32; + set => _internal.CRC32 = value; + } + public string? CRC64 { get => _internal.CRC64; @@ -691,9 +691,9 @@ namespace SabreTools.Metadata.DatItems.Formats if (crc16 is not null) CRC16 = NormalizeHashData(crc16, 4); - string? crc = CRC; - if (crc is not null) - CRC = TextHelper.NormalizeCRC32(crc); + string? crc32 = CRC32; + if (crc32 is not null) + CRC32 = TextHelper.NormalizeCRC32(crc32); // TODO: This should be normalized to CRC-64 string? crc64 = CRC64; @@ -747,9 +747,9 @@ namespace SabreTools.Metadata.DatItems.Formats if (crc16 is not null) CRC16 = NormalizeHashData(crc16, 4); - string? crc = CRC; - if (crc is not null) - CRC = TextHelper.NormalizeCRC32(crc); + string? crc32 = CRC32; + if (crc32 is not null) + CRC32 = TextHelper.NormalizeCRC32(crc32); // TODO: This should be normalized to CRC-64 string? crc64 = CRC64; @@ -957,8 +957,8 @@ namespace SabreTools.Metadata.DatItems.Formats key = CRC16; break; - case ItemKey.CRC: - key = CRC; + case ItemKey.CRC32: + key = CRC32; break; case ItemKey.CRC64: diff --git a/SabreTools.Metadata.Filter.Test/FilterRunnerTests.cs b/SabreTools.Metadata.Filter.Test/FilterRunnerTests.cs index 303c1305..ae901d3d 100644 --- a/SabreTools.Metadata.Filter.Test/FilterRunnerTests.cs +++ b/SabreTools.Metadata.Filter.Test/FilterRunnerTests.cs @@ -168,7 +168,7 @@ namespace SabreTools.Metadata.Filter.Test DatItem datItem = new Rom { Name = "name", - CRC = null, + CRC32 = null, }; bool actual = _filterRunner.Run(datItem); @@ -181,7 +181,7 @@ namespace SabreTools.Metadata.Filter.Test DatItem datItem = new Rom { Name = "name", - CRC = "", + CRC32 = "", }; bool actual = _filterRunner.Run(datItem); @@ -194,7 +194,7 @@ namespace SabreTools.Metadata.Filter.Test DatItem datItem = new Rom { Name = "name", - CRC = "NO_MATCH", + CRC32 = "NO_MATCH", }; bool actual = _filterRunner.Run(datItem); @@ -207,7 +207,7 @@ namespace SabreTools.Metadata.Filter.Test DatItem datItem = new Rom { Name = "name", - CRC = "crc", + CRC32 = "crc", }; bool actual = _filterRunner.Run(datItem); diff --git a/SabreTools.Metadata.Filter/FilterObject.cs b/SabreTools.Metadata.Filter/FilterObject.cs index 000bd96b..cee98f14 100644 --- a/SabreTools.Metadata.Filter/FilterObject.cs +++ b/SabreTools.Metadata.Filter/FilterObject.cs @@ -1799,12 +1799,13 @@ namespace SabreTools.Metadata.Filter case "comment": checkValue = obj.Comment; return true; - case "crc": - checkValue = obj.CRC; - return true; case "crc16": checkValue = obj.CRC16; return true; + case "crc": + case "crc32": + checkValue = obj.CRC32; + return true; case "crc64": checkValue = obj.CRC64; return true; diff --git a/SabreTools.Serialization.CrossModel/ArchiveDotOrg.Deserializer.cs b/SabreTools.Serialization.CrossModel/ArchiveDotOrg.Deserializer.cs index eee8a59f..8f2af666 100644 --- a/SabreTools.Serialization.CrossModel/ArchiveDotOrg.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/ArchiveDotOrg.Deserializer.cs @@ -50,7 +50,7 @@ namespace SabreTools.Serialization.CrossModel LastModifiedTime = item.LastModifiedTime, Size = item.Size?.ToString(), MD5 = item.MD5, - CRC32 = item.CRC, + CRC32 = item.CRC32, SHA1 = item.SHA1, FileCount = item.FileCount, Format = item.Format, diff --git a/SabreTools.Serialization.CrossModel/ArchiveDotOrg.Serializer.cs b/SabreTools.Serialization.CrossModel/ArchiveDotOrg.Serializer.cs index ee636f3e..f6c5a214 100644 --- a/SabreTools.Serialization.CrossModel/ArchiveDotOrg.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/ArchiveDotOrg.Serializer.cs @@ -65,7 +65,7 @@ namespace SabreTools.Serialization.CrossModel LastModifiedTime = item.LastModifiedTime, Size = NumberHelper.ConvertToInt64(item.Size), MD5 = item.MD5, - CRC = item.CRC32, + CRC32 = item.CRC32, SHA1 = item.SHA1, FileCount = item.FileCount, Format = item.Format, diff --git a/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs b/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs index 3bd9a6d0..e6ee071e 100644 --- a/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs @@ -278,7 +278,7 @@ namespace SabreTools.Serialization.CrossModel Name = item.Name, Size = item.Size, CRC16 = item.CRC16, - CRC = item.CRC, + CRC = item.CRC32, CRC64 = item.CRC64, MD2 = item.MD2, MD4 = item.MD4, diff --git a/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs b/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs index bf4b61ed..21277c45 100644 --- a/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs @@ -258,7 +258,7 @@ namespace SabreTools.Serialization.CrossModel Name = item.Name, Size = item.Size, CRC16 = item.CRC16, - CRC = item.CRC, + CRC32 = item.CRC, CRC64 = item.CRC64, MD2 = item.MD2, MD4 = item.MD4, diff --git a/SabreTools.Serialization.CrossModel/DosCenter.Deserializer.cs b/SabreTools.Serialization.CrossModel/DosCenter.Deserializer.cs index 383ff648..cbc35182 100644 --- a/SabreTools.Serialization.CrossModel/DosCenter.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/DosCenter.Deserializer.cs @@ -68,7 +68,7 @@ namespace SabreTools.Serialization.CrossModel { Name = item.Name, Size = item.Size, - CRC = item.CRC, + CRC = item.CRC32, SHA1 = item.SHA1, Date = item.Date, }; diff --git a/SabreTools.Serialization.CrossModel/DosCenter.Serializer.cs b/SabreTools.Serialization.CrossModel/DosCenter.Serializer.cs index 92ef0e0e..fcf1d643 100644 --- a/SabreTools.Serialization.CrossModel/DosCenter.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/DosCenter.Serializer.cs @@ -65,7 +65,7 @@ namespace SabreTools.Serialization.CrossModel { Name = item.Name, Size = item.Size, - CRC = item.CRC, + CRC32 = item.CRC, SHA1 = item.SHA1, Date = item.Date, }; diff --git a/SabreTools.Serialization.CrossModel/EverdriveSMDB.Deserializer.cs b/SabreTools.Serialization.CrossModel/EverdriveSMDB.Deserializer.cs index 82a1d20a..65c882b9 100644 --- a/SabreTools.Serialization.CrossModel/EverdriveSMDB.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/EverdriveSMDB.Deserializer.cs @@ -49,7 +49,7 @@ namespace SabreTools.Serialization.CrossModel Name = item.Name, SHA1 = item.SHA1, MD5 = item.MD5, - CRC32 = item.CRC, + CRC32 = item.CRC32, Size = item.Size, }; return row; diff --git a/SabreTools.Serialization.CrossModel/EverdriveSMDB.Serializer.cs b/SabreTools.Serialization.CrossModel/EverdriveSMDB.Serializer.cs index 17d1b864..1324bd1f 100644 --- a/SabreTools.Serialization.CrossModel/EverdriveSMDB.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/EverdriveSMDB.Serializer.cs @@ -57,7 +57,7 @@ namespace SabreTools.Serialization.CrossModel Name = item.Name, SHA1 = item.SHA1, MD5 = item.MD5, - CRC = item.CRC32, + CRC32 = item.CRC32, Size = item.Size, }; return rom; diff --git a/SabreTools.Serialization.CrossModel/Hashfile.Deserializer.cs b/SabreTools.Serialization.CrossModel/Hashfile.Deserializer.cs index 0d46bd9b..d2ddd494 100644 --- a/SabreTools.Serialization.CrossModel/Hashfile.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Hashfile.Deserializer.cs @@ -211,7 +211,7 @@ namespace SabreTools.Serialization.CrossModel var sfv = new SFV { File = item.Name, - Hash = item.CRC, + Hash = item.CRC32, }; return sfv; } diff --git a/SabreTools.Serialization.CrossModel/Hashfile.Serializer.cs b/SabreTools.Serialization.CrossModel/Hashfile.Serializer.cs index dac2f823..0601c170 100644 --- a/SabreTools.Serialization.CrossModel/Hashfile.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Hashfile.Serializer.cs @@ -140,7 +140,7 @@ namespace SabreTools.Serialization.CrossModel var rom = new Data.Models.Metadata.Rom { Name = item.File, - CRC = item.Hash, + CRC32 = item.Hash, }; return rom; } diff --git a/SabreTools.Serialization.CrossModel/Listrom.Deserializer.cs b/SabreTools.Serialization.CrossModel/Listrom.Deserializer.cs index 10149bc6..8e9eb039 100644 --- a/SabreTools.Serialization.CrossModel/Listrom.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Listrom.Deserializer.cs @@ -77,7 +77,7 @@ namespace SabreTools.Serialization.CrossModel { Name = item.Name, Size = item.Size, - CRC = item.CRC, + CRC = item.CRC32, SHA1 = item.SHA1, }; diff --git a/SabreTools.Serialization.CrossModel/Listrom.Serializer.cs b/SabreTools.Serialization.CrossModel/Listrom.Serializer.cs index c1b4f534..2dea8f1e 100644 --- a/SabreTools.Serialization.CrossModel/Listrom.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Listrom.Serializer.cs @@ -98,7 +98,7 @@ namespace SabreTools.Serialization.CrossModel { Name = item.Name, Size = item.Size, - CRC = item.CRC, + CRC32 = item.CRC, SHA1 = item.SHA1, }; diff --git a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs index bfacbdcc..f581bba5 100644 --- a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs @@ -565,7 +565,7 @@ namespace SabreTools.Serialization.CrossModel Name = item.Name, Bios = item.Bios, Size = item.Size, - CRC = item.CRC, + CRC = item.CRC32, SHA1 = item.SHA1, Merge = item.Merge, Region = item.Region, diff --git a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs index e9a8419c..12a0820a 100644 --- a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs @@ -532,7 +532,7 @@ namespace SabreTools.Serialization.CrossModel Name = item.Name, Bios = item.Bios, Size = item.Size, - CRC = item.CRC, + CRC32 = item.CRC, SHA1 = item.SHA1, Merge = item.Merge, Region = item.Region, diff --git a/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs b/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs index 537f8047..2465875e 100644 --- a/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs @@ -328,7 +328,7 @@ namespace SabreTools.Serialization.CrossModel Name = item.Name, Size = item.Size, CRC16 = item.CRC16, - CRC = item.CRC, + CRC = item.CRC32, CRC64 = item.CRC64, MD2 = item.MD2, MD4 = item.MD4, diff --git a/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs b/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs index 2cbb2149..918902bf 100644 --- a/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs @@ -307,7 +307,7 @@ namespace SabreTools.Serialization.CrossModel Name = item.Name, Size = item.Size, CRC16 = item.CRC16, - CRC = item.CRC, + CRC32 = item.CRC, CRC64 = item.CRC64, MD2 = item.MD2, MD4 = item.MD4, diff --git a/SabreTools.Serialization.CrossModel/OfflineList.Deserializer.cs b/SabreTools.Serialization.CrossModel/OfflineList.Deserializer.cs index 746b79aa..c12ea698 100644 --- a/SabreTools.Serialization.CrossModel/OfflineList.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/OfflineList.Deserializer.cs @@ -112,7 +112,7 @@ namespace SabreTools.Serialization.CrossModel var fileRomCRC = new FileRomCRC { Extension = item.Extension, - Content = item.CRC, + Content = item.CRC32, }; return fileRomCRC; } diff --git a/SabreTools.Serialization.CrossModel/OfflineList.Serializer.cs b/SabreTools.Serialization.CrossModel/OfflineList.Serializer.cs index e7bbbc42..68062497 100644 --- a/SabreTools.Serialization.CrossModel/OfflineList.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/OfflineList.Serializer.cs @@ -96,7 +96,7 @@ namespace SabreTools.Serialization.CrossModel var rom = new Data.Models.Metadata.Rom { Extension = item.Extension, - CRC = item.Content, + CRC32 = item.Content, }; return rom; } diff --git a/SabreTools.Serialization.CrossModel/RomCenter.Deserializer.cs b/SabreTools.Serialization.CrossModel/RomCenter.Deserializer.cs index 21361396..ff40b851 100644 --- a/SabreTools.Serialization.CrossModel/RomCenter.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/RomCenter.Deserializer.cs @@ -102,7 +102,7 @@ namespace SabreTools.Serialization.CrossModel GameName = parent.Name, GameDescription = parent.Description, RomName = item.Name, - RomCRC = item.CRC, + RomCRC = item.CRC32, RomSize = item.Size, RomOf = parent.RomOf, MergeName = item.Merge, diff --git a/SabreTools.Serialization.CrossModel/RomCenter.Serializer.cs b/SabreTools.Serialization.CrossModel/RomCenter.Serializer.cs index a9e0289e..d7a52ca9 100644 --- a/SabreTools.Serialization.CrossModel/RomCenter.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/RomCenter.Serializer.cs @@ -86,7 +86,7 @@ namespace SabreTools.Serialization.CrossModel var rom = new Data.Models.Metadata.Rom { Name = item.RomName, - CRC = item.RomCRC, + CRC32 = item.RomCRC, Size = item.RomSize, Merge = item.MergeName, }; diff --git a/SabreTools.Serialization.CrossModel/SeparatedValue.Deserializer.cs b/SabreTools.Serialization.CrossModel/SeparatedValue.Deserializer.cs index b5349057..6f8387f7 100644 --- a/SabreTools.Serialization.CrossModel/SeparatedValue.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/SeparatedValue.Deserializer.cs @@ -140,7 +140,7 @@ namespace SabreTools.Serialization.CrossModel RomName = item.Name, DiskName = null, Size = item.Size, - CRC = item.CRC, + CRC = item.CRC32, MD5 = item.MD5, SHA1 = item.SHA1, SHA256 = item.SHA256, diff --git a/SabreTools.Serialization.CrossModel/SeparatedValue.Serializer.cs b/SabreTools.Serialization.CrossModel/SeparatedValue.Serializer.cs index bd619c66..4fea2eef 100644 --- a/SabreTools.Serialization.CrossModel/SeparatedValue.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/SeparatedValue.Serializer.cs @@ -103,7 +103,7 @@ namespace SabreTools.Serialization.CrossModel { Name = item.RomName, Size = item.Size, - CRC = item.CRC, + CRC32 = item.CRC, MD5 = item.MD5, SHA1 = item.SHA1, SHA256 = item.SHA256, diff --git a/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs b/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs index aeada097..aabb248a 100644 --- a/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs @@ -218,7 +218,7 @@ namespace SabreTools.Serialization.CrossModel Name = item.Name, Size = item.Size, Length = item.Length, - CRC = item.CRC, + CRC = item.CRC32, SHA1 = item.SHA1, Offset = item.Offset, Value = item.Value, diff --git a/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs b/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs index 28b8ef1b..ded48ee2 100644 --- a/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs @@ -209,7 +209,7 @@ namespace SabreTools.Serialization.CrossModel Name = item.Name, Size = item.Size, Length = item.Length, - CRC = item.CRC, + CRC32 = item.CRC, SHA1 = item.SHA1, Offset = item.Offset, Value = item.Value, From c0872cb97b2c93177d6855bab3fe414ed88c6255 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Mon, 6 Apr 2026 10:18:00 -0400 Subject: [PATCH 127/142] Checkpoint reflection replacement --- .../FilterObjectTests.cs | 218 ++++++++++++++++++ SabreTools.Metadata.Filter/FilterKey.cs | 144 +++++++++++- SabreTools.Metadata.Filter/FilterObject.cs | 2 + 3 files changed, 358 insertions(+), 6 deletions(-) diff --git a/SabreTools.Metadata.Filter.Test/FilterObjectTests.cs b/SabreTools.Metadata.Filter.Test/FilterObjectTests.cs index b96571ae..5a679f5d 100644 --- a/SabreTools.Metadata.Filter.Test/FilterObjectTests.cs +++ b/SabreTools.Metadata.Filter.Test/FilterObjectTests.cs @@ -472,5 +472,223 @@ namespace SabreTools.Metadata.Filter.Test } #endregion + + #region Adjuster + + [Theory] + [InlineData("adjuster.default", "yes")] + [InlineData("adjuster.name", "name")] + public void Matches_Adjsuter(string itemField, string value) + { + var filter = new FilterObject(itemField, value, Operation.Equals); + Adjuster obj = new Adjuster + { + Default = true, + Name = "name", + }; + + bool actual = filter.Matches(obj); + Assert.True(actual); + } + + #endregion + + #region Analog + + [Theory] + [InlineData("analog.mask", "mask")] + public void Matches_Analog(string itemField, string value) + { + var filter = new FilterObject(itemField, value, Operation.Equals); + Analog obj = new Analog + { + Mask = "mask", + }; + + bool actual = filter.Matches(obj); + Assert.True(actual); + } + + #endregion + + #region Archive + + [Theory] + [InlineData("archive.additional", "additional")] + [InlineData("archive.adult", "1")] + [InlineData("archive.alt", "1")] + [InlineData("archive.bios", "1")] + [InlineData("archive.categories", "categories")] + [InlineData("archive.clone", "clone")] + [InlineData("archive.clonetag", "clone")] + [InlineData("archive.complete", "1")] + [InlineData("archive.dat", "1")] + [InlineData("archive.datternote", "datternote")] + [InlineData("archive.description", "description")] + [InlineData("archive.devstatus", "devstatus")] + [InlineData("archive.gameid1", "gameid1")] + [InlineData("archive.gameid2", "gameid2")] + [InlineData("archive.langchecked", "langchecked")] + [InlineData("archive.languages", "languages")] + [InlineData("archive.licensed", "1")] + [InlineData("archive.listed", "1")] + [InlineData("archive.mergeof", "mergeof")] + [InlineData("archive.mergename", "mergename")] + [InlineData("archive.name", "name")] + [InlineData("archive.namealt", "namealt")] + [InlineData("archive.number", "number")] + [InlineData("archive.physical", "1")] + [InlineData("archive.pirate", "1")] + [InlineData("archive.private", "1")] + [InlineData("archive.region", "region")] + [InlineData("archive.regparent", "regparent")] + [InlineData("archive.showlang", "1")] + [InlineData("archive.special1", "special1")] + [InlineData("archive.special2", "special2")] + [InlineData("archive.stickynote", "stickynote")] + [InlineData("archive.version1", "version1")] + [InlineData("archive.version2", "version2")] + public void Matches_Archive(string itemField, string value) + { + var filter = new FilterObject(itemField, value, Operation.Equals); + Archive obj = new Archive + { + Additional = "additional", + Adult = true, + Alt = true, + Bios = true, + Categories = "categories", + CloneTag = "clone", + Complete = true, + Dat = true, + DatterNote = "datternote", + Description = "description", + DevStatus = "devstatus", + GameId1 = "gameid1", + GameId2 = "gameid2", + LangChecked = "langchecked", + Languages = "languages", + Licensed = true, + Listed = true, + MergeOf = "mergeof", + MergeName = "mergename", + Name = "name", + NameAlt = "namealt", + Number = "number", + Physical = true, + Pirate = true, + Private = true, + Region = "region", + RegParent = "regparent", + ShowLang = true, + Special1 = "special1", + Special2 = "special2", + StickyNote = "stickynote", + Version1 = "version1", + Version2 = "version2", + }; + + bool actual = filter.Matches(obj); + Assert.True(actual); + } + + #endregion + + #region BiosSet + + [Theory] + [InlineData("biosset.default", "yes")] + [InlineData("biosset.description", "description")] + [InlineData("biosset.name", "name")] + public void Matches_BiosSet(string itemField, string value) + { + var filter = new FilterObject(itemField, value, Operation.Equals); + BiosSet obj = new BiosSet + { + Default = true, + Description = "description", + Name = "name", + }; + + bool actual = filter.Matches(obj); + Assert.True(actual); + } + + #endregion + + #region Chip + + [Theory] + [InlineData("chip.type", "audio")] + [InlineData("chip.chiptype", "audio")] + [InlineData("chip.clock", "12345")] + [InlineData("chip.flags", "flags")] + [InlineData("chip.name", "name")] + [InlineData("chip.soundonly", "yes")] + [InlineData("chip.tag", "tag")] + public void Matches_Chip(string itemField, string value) + { + var filter = new FilterObject(itemField, value, Operation.Equals); + Chip obj = new Chip + { + ChipType = ChipType.Audio, + Clock = 12345, + Flags = "flags", + Name = "name", + SoundOnly = true, + Tag = "tag", + }; + + bool actual = filter.Matches(obj); + Assert.True(actual); + } + + #endregion + + #region Condition + + [Theory] + [InlineData("condition.mask", "mask")] + [InlineData("condition.relation", "ne")] + [InlineData("condition.tag", "tag")] + [InlineData("condition.value", "value")] + public void Matches_Condition(string itemField, string value) + { + var filter = new FilterObject(itemField, value, Operation.Equals); + Condition obj = new Condition + { + Mask = "mask", + Relation = Relation.NotEqual, + Tag = "tag", + Value = "value", + }; + + bool actual = filter.Matches(obj); + Assert.True(actual); + } + + #endregion + + #region Configuration + + [Theory] + [InlineData("configuration.mask", "mask")] + [InlineData("configuration.name", "name")] + [InlineData("configuration.tag", "tag")] + public void Matches_Configuration(string itemField, string value) + { + var filter = new FilterObject(itemField, value, Operation.Equals); + Configuration obj = new Configuration + { + Mask = "mask", + Name = "name", + Tag = "tag", + }; + + bool actual = filter.Matches(obj); + Assert.True(actual); + } + + #endregion } } diff --git a/SabreTools.Metadata.Filter/FilterKey.cs b/SabreTools.Metadata.Filter/FilterKey.cs index 7666d353..64442a27 100644 --- a/SabreTools.Metadata.Filter/FilterKey.cs +++ b/SabreTools.Metadata.Filter/FilterKey.cs @@ -10,6 +10,8 @@ namespace SabreTools.Metadata.Filter /// public class FilterKey { + #region Properties + /// /// Item name associated with the filter /// @@ -20,6 +22,10 @@ namespace SabreTools.Metadata.Filter /// public readonly string FieldName; + #endregion + + #region Constants + /// /// Cached item type names for filter selection /// @@ -29,6 +35,111 @@ namespace SabreTools.Metadata.Filter private static readonly string[] _datItemTypeNames = Enum.GetNames(typeof(ItemType)); #endif + /// + /// Known keys for Adjuster + /// + private static readonly string[] _adjusterKeys = + [ + "default", + "name" + ]; + + /// + /// Known keys for Analog + /// + private static readonly string[] _analogKeys = + [ + "mask" + ]; + + /// + /// Known keys for Archive + /// + private static readonly string[] _archiveKeys = + [ + "additional", + "adult", + "alt", + "bios", + "categories", + "clone", + "clonetag", + "complete", + "dat", + "datternote", + "description", + "devstatus", + "gameid1", + "gameid2", + "langchecked", + "languages", + "licensed", + "listed", + "mergeof", + "mergename", + "name", + "namealt", + "number", + "physical", + "pirate", + "private", + "region", + "regparent", + "showlang", + "special1", + "special2", + "stickynote", + "version1", + "version2", + ]; + + /// + /// Known keys for BiosSet + /// + private static readonly string[] _biossetKeys = + [ + "default", + "description", + "name", + ]; + + /// + /// Known keys for Chip + /// + private static readonly string[] _chipKeys = + [ + "chiptype", + "clock", + "flags", + "name", + "soundonly", + "tag", + "type", + ]; + + /// + /// Known keys for Condition + /// + private static readonly string[] _conditionKeys = + [ + "mask", + "relation", + "tag", + "value", + ]; + + /// + /// Known keys for Configuration + /// + private static readonly string[] _configurationKeys = + [ + "mask", + "name", + "tag", + ]; + + #endregion + /// /// Validating combined key constructor /// @@ -202,13 +313,34 @@ namespace SabreTools.Metadata.Filter /// private static string? GetMatchingField(string itemName, string fieldName) { - // Get the correct item type - var itemType = GetDatItemType(itemName.ToLowerInvariant()); - if (itemType is null) - return null; - // Get the set of properties - var properties = GetProperties(itemType); + string[]? properties = itemName.ToLowerInvariant() switch + { + "adjuster" => _adjusterKeys, + "analog" => _analogKeys, + "archive" => _archiveKeys, + "biosset" => _biossetKeys, + "chip" => _chipKeys, + "condition" => _conditionKeys, + "configuration" => _configurationKeys, + _ => null, + }; + + // TODO: Remove this fallback path + if (properties is null) + { + // Get the correct item type + var itemType = GetDatItemType(itemName.ToLowerInvariant()); + if (itemType is null) + return null; + + properties = GetProperties(itemType); + + // Special cases for mismatched names + if (properties is not null && itemType == typeof(Rom)) + properties = [.. properties, "crc"]; + } + if (properties is null) return null; diff --git a/SabreTools.Metadata.Filter/FilterObject.cs b/SabreTools.Metadata.Filter/FilterObject.cs index cee98f14..def15fcf 100644 --- a/SabreTools.Metadata.Filter/FilterObject.cs +++ b/SabreTools.Metadata.Filter/FilterObject.cs @@ -455,6 +455,7 @@ namespace SabreTools.Metadata.Filter checkValue = obj.Categories; return true; case "clone": + case "clonetag": checkValue = obj.CloneTag; return true; case "complete": @@ -577,6 +578,7 @@ namespace SabreTools.Metadata.Filter { switch (fieldName) { + case "chiptype": case "type": checkValue = obj.ChipType?.AsStringValue(); return true; From adfc2cde842a3a8034d5231cedecd501114b1d92 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Mon, 6 Apr 2026 14:46:34 -0400 Subject: [PATCH 128/142] Checkpoint reflection replacement --- .../FilterObjectTests.cs | 200 ++++++++++++++++++ SabreTools.Metadata.Filter/FilterKey.cs | 101 +++++++++ SabreTools.Metadata.Filter/FilterObject.cs | 2 + 3 files changed, 303 insertions(+) diff --git a/SabreTools.Metadata.Filter.Test/FilterObjectTests.cs b/SabreTools.Metadata.Filter.Test/FilterObjectTests.cs index 5a679f5d..f803661d 100644 --- a/SabreTools.Metadata.Filter.Test/FilterObjectTests.cs +++ b/SabreTools.Metadata.Filter.Test/FilterObjectTests.cs @@ -690,5 +690,205 @@ namespace SabreTools.Metadata.Filter.Test } #endregion + + #region ConfLocation + + [Theory] + [InlineData("conflocation.inverted", "yes")] + [InlineData("conflocation.name", "name")] + [InlineData("conflocation.number", "12345")] + public void Matches_ConfLocation(string itemField, string value) + { + var filter = new FilterObject(itemField, value, Operation.Equals); + ConfLocation obj = new ConfLocation + { + Inverted = true, + Name = "name", + Number = 12345, + }; + + bool actual = filter.Matches(obj); + Assert.True(actual); + } + + #endregion + + #region ConfSetting + + [Theory] + [InlineData("confsetting.default", "yes")] + [InlineData("confsetting.name", "name")] + [InlineData("confsetting.value", "value")] + public void Matches_ConfSetting(string itemField, string value) + { + var filter = new FilterObject(itemField, value, Operation.Equals); + ConfSetting obj = new ConfSetting + { + Default = true, + Name = "name", + Value = "value", + }; + + bool actual = filter.Matches(obj); + Assert.True(actual); + } + + #endregion + + #region Control + + [Theory] + [InlineData("control.buttons", "12345")] + [InlineData("control.type", "lightgun")] + [InlineData("control.controltype", "lightgun")] + [InlineData("control.keydelta", "12345")] + [InlineData("control.maximum", "12345")] + [InlineData("control.minimum", "12345")] + [InlineData("control.player", "12345")] + [InlineData("control.reqbuttons", "12345")] + [InlineData("control.reverse", "yes")] + [InlineData("control.sensitivity", "12345")] + [InlineData("control.ways", "ways")] + [InlineData("control.ways2", "ways2")] + [InlineData("control.ways3", "ways3")] + public void Matches_Control(string itemField, string value) + { + var filter = new FilterObject(itemField, value, Operation.Equals); + Control obj = new Control + { + Buttons = 12345, + ControlType = ControlType.Lightgun, + KeyDelta = 12345, + Maximum = 12345, + Minimum = 12345, + Player = 12345, + ReqButtons = 12345, + Reverse = true, + Sensitivity = 12345, + Ways = "ways", + Ways2 = "ways2", + Ways3 = "ways3", + }; + + bool actual = filter.Matches(obj); + Assert.True(actual); + } + + #endregion + + #region DataArea + + [Theory] + [InlineData("dataarea.endianness", "big")] + [InlineData("dataarea.name", "name")] + [InlineData("dataarea.size", "12345")] + [InlineData("dataarea.width", "16")] + public void Matches_DataArea(string itemField, string value) + { + var filter = new FilterObject(itemField, value, Operation.Equals); + DataArea obj = new DataArea + { + Endianness = Endianness.Big, + Name = "name", + Size = 12345, + Width = Width.Short, + }; + + bool actual = filter.Matches(obj); + Assert.True(actual); + } + + #endregion + + #region Device + + [Theory] + [InlineData("device.devicetype", "punchcard")] + [InlineData("device.type", "punchcard")] + [InlineData("device.fixedimage", "fixedimage")] + [InlineData("device.interface", "interface")] + [InlineData("device.mandatory", "yes")] + [InlineData("device.tag", "tag")] + public void Matches_Device(string itemField, string value) + { + var filter = new FilterObject(itemField, value, Operation.Equals); + Device obj = new Device + { + DeviceType = DeviceType.PunchCard, + FixedImage = "fixedimage", + Interface = "interface", + Mandatory = true, + Tag = "tag", + }; + + bool actual = filter.Matches(obj); + Assert.True(actual); + } + + #endregion + + #region Device + + [Theory] + [InlineData("deviceref.name", "name")] + public void Matches_DeviceRef(string itemField, string value) + { + var filter = new FilterObject(itemField, value, Operation.Equals); + DeviceRef obj = new DeviceRef + { + Name = "name", + }; + + bool actual = filter.Matches(obj); + Assert.True(actual); + } + + #endregion + + #region DipLocation + + [Theory] + [InlineData("diplocation.inverted", "yes")] + [InlineData("diplocation.name", "name")] + [InlineData("diplocation.number", "12345")] + public void Matches_DipLocation(string itemField, string value) + { + var filter = new FilterObject(itemField, value, Operation.Equals); + DipLocation obj = new DipLocation + { + Inverted = true, + Name = "name", + Number = 12345, + }; + + bool actual = filter.Matches(obj); + Assert.True(actual); + } + + #endregion + + #region DipSwitch + + [Theory] + [InlineData("dipswitch.default", "yes")] + [InlineData("dipswitch.mask", "mask")] + [InlineData("dipswitch.name", "name")] + [InlineData("dipswitch.tag", "tag")] + public void Matches_DipSwitch(string itemField, string value) + { + var filter = new FilterObject(itemField, value, Operation.Equals); + DipSwitch obj = new DipSwitch + { + Default = true, + Mask = "mask", + Name = "name", + Tag = "tag", + }; + + bool actual = filter.Matches(obj); + Assert.True(actual); + } + + #endregion } } diff --git a/SabreTools.Metadata.Filter/FilterKey.cs b/SabreTools.Metadata.Filter/FilterKey.cs index 64442a27..244d5ea4 100644 --- a/SabreTools.Metadata.Filter/FilterKey.cs +++ b/SabreTools.Metadata.Filter/FilterKey.cs @@ -138,6 +138,99 @@ namespace SabreTools.Metadata.Filter "tag", ]; + /// + /// Known keys for ConfLocation + /// + private static readonly string[] _confLocationKeys = + [ + "inverted", + "name", + "number", + ]; + + /// + /// Known keys for ConfSetting + /// + private static readonly string[] _confSettingKeys = + [ + "default", + "name", + "value", + ]; + + /// + /// Known keys for Control + /// + private static readonly string[] _controlKeys = + [ + "buttons", + "controltype", + "keydelta", + "maximum", + "minimum", + "player", + "reqbuttons", + "reverse", + "sensitivity", + "type", + "ways", + "ways2", + "ways3", + ]; + + /// + /// Known keys for DataArea + /// + private static readonly string[] _dataAreaKeys = + [ + "endianness", + "name", + "size", + "width", + ]; + + /// + /// Known keys for Device + /// + private static readonly string[] _deviceKeys = + [ + "devicetype", + "fixedimage", + "interface", + "mandatory", + "tag", + "type", + ]; + + /// + /// Known keys for DeviceRef + /// + private static readonly string[] _deviceRefKeys = + [ + "name", + ]; + + /// + /// Known keys for DipLocation + /// + private static readonly string[] _dipLocationKeys = + [ + "inverted", + "name", + "number", + ]; + + /// + /// Known keys for DipSwitch + /// + private static readonly string[] _dipSwitchKeys = + [ + "default", + "mask", + "name", + "tag", + ]; + #endregion /// @@ -323,6 +416,14 @@ namespace SabreTools.Metadata.Filter "chip" => _chipKeys, "condition" => _conditionKeys, "configuration" => _configurationKeys, + "conflocation" => _confLocationKeys, + "confsetting" => _confSettingKeys, + "control" => _controlKeys, + "dataarea" => _dataAreaKeys, + "device" => _deviceKeys, + "deviceref" => _deviceRefKeys, + "diplocation" => _dipLocationKeys, + "dipswitch" => _dipSwitchKeys, _ => null, }; diff --git a/SabreTools.Metadata.Filter/FilterObject.cs b/SabreTools.Metadata.Filter/FilterObject.cs index def15fcf..4bef1d2b 100644 --- a/SabreTools.Metadata.Filter/FilterObject.cs +++ b/SabreTools.Metadata.Filter/FilterObject.cs @@ -714,6 +714,7 @@ namespace SabreTools.Metadata.Filter case "buttons": checkValue = obj.Buttons?.ToString(); return true; + case "controltype": case "type": checkValue = obj.ControlType?.AsStringValue(); return true; @@ -789,6 +790,7 @@ namespace SabreTools.Metadata.Filter { switch (fieldName) { + case "devicetype": case "type": checkValue = obj.DeviceType?.AsStringValue(); return true; From 4772768c1fcc6a21bbce399548d34dc251412f3d Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Mon, 6 Apr 2026 15:03:16 -0400 Subject: [PATCH 129/142] Handle item type filtering properly again --- .../MetadataExtensionsTests.cs | 112 +++++++++++++++ .../MetadataExtensions.cs | 126 +++++++++++++++++ .../ExtensionsTests.cs | 116 ---------------- SabreTools.Metadata.DatItems/Extensions.cs | 130 ------------------ SabreTools.Metadata.Filter/FilterKey.cs | 11 +- SabreTools.Metadata.Filter/FilterObject.cs | 22 +-- 6 files changed, 258 insertions(+), 259 deletions(-) diff --git a/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs b/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs index 511c9165..149f2e11 100644 --- a/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs +++ b/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs @@ -2734,6 +2734,67 @@ namespace SabreTools.Data.Extensions.Test Assert.Equal(expected, actual); } + [Theory] + [InlineData(null, ItemType.NULL)] + [InlineData("adjuster", ItemType.Adjuster)] + [InlineData("analog", ItemType.Analog)] + [InlineData("archive", ItemType.Archive)] + [InlineData("biosset", ItemType.BiosSet)] + [InlineData("blank", ItemType.Blank)] + [InlineData("chip", ItemType.Chip)] + [InlineData("condition", ItemType.Condition)] + [InlineData("configuration", ItemType.Configuration)] + [InlineData("conflocation", ItemType.ConfLocation)] + [InlineData("confsetting", ItemType.ConfSetting)] + [InlineData("control", ItemType.Control)] + [InlineData("dataarea", ItemType.DataArea)] + [InlineData("device", ItemType.Device)] + [InlineData("deviceref", ItemType.DeviceRef)] + [InlineData("device_ref", ItemType.DeviceRef)] + [InlineData("diplocation", ItemType.DipLocation)] + [InlineData("dipswitch", ItemType.DipSwitch)] + [InlineData("dipvalue", ItemType.DipValue)] + [InlineData("disk", ItemType.Disk)] + [InlineData("diskarea", ItemType.DiskArea)] + [InlineData("display", ItemType.Display)] + [InlineData("driver", ItemType.Driver)] + [InlineData("extension", ItemType.Extension)] + [InlineData("feature", ItemType.Feature)] + [InlineData("file", ItemType.File)] + [InlineData("info", ItemType.Info)] + [InlineData("input", ItemType.Input)] + [InlineData("instance", ItemType.Instance)] + [InlineData("media", ItemType.Media)] + [InlineData("part", ItemType.Part)] + [InlineData("partfeature", ItemType.PartFeature)] + [InlineData("part_feature", ItemType.PartFeature)] + [InlineData("port", ItemType.Port)] + [InlineData("ramoption", ItemType.RamOption)] + [InlineData("ram_option", ItemType.RamOption)] + [InlineData("release", ItemType.Release)] + [InlineData("releasedetails", ItemType.ReleaseDetails)] + [InlineData("release_details", ItemType.ReleaseDetails)] + [InlineData("rom", ItemType.Rom)] + [InlineData("sample", ItemType.Sample)] + [InlineData("serials", ItemType.Serials)] + [InlineData("sharedfeat", ItemType.SharedFeat)] + [InlineData("shared_feat", ItemType.SharedFeat)] + [InlineData("sharedfeature", ItemType.SharedFeat)] + [InlineData("shared_feature", ItemType.SharedFeat)] + [InlineData("slot", ItemType.Slot)] + [InlineData("slotoption", ItemType.SlotOption)] + [InlineData("slot_option", ItemType.SlotOption)] + [InlineData("softwarelist", ItemType.SoftwareList)] + [InlineData("software_list", ItemType.SoftwareList)] + [InlineData("sound", ItemType.Sound)] + [InlineData("sourcedetails", ItemType.SourceDetails)] + [InlineData("source_details", ItemType.SourceDetails)] + public void AsItemTypeTest(string? field, ItemType expected) + { + ItemType actual = field.AsItemType(); + Assert.Equal(expected, actual); + } + [Theory] [InlineData(null, null)] [InlineData("load16_byte", LoadFlag.Load16Byte)] @@ -3074,6 +3135,57 @@ namespace SabreTools.Data.Extensions.Test Assert.Equal(expected, actual); } + [Theory] + [InlineData(ItemType.NULL, null)] + [InlineData(ItemType.Adjuster, "adjuster")] + [InlineData(ItemType.Analog, "analog")] + [InlineData(ItemType.Archive, "archive")] + [InlineData(ItemType.BiosSet, "biosset")] + [InlineData(ItemType.Blank, "blank")] + [InlineData(ItemType.Chip, "chip")] + [InlineData(ItemType.Condition, "condition")] + [InlineData(ItemType.Configuration, "configuration")] + [InlineData(ItemType.ConfLocation, "conflocation")] + [InlineData(ItemType.ConfSetting, "confsetting")] + [InlineData(ItemType.Control, "control")] + [InlineData(ItemType.DataArea, "dataarea")] + [InlineData(ItemType.Device, "device")] + [InlineData(ItemType.DeviceRef, "device_ref")] + [InlineData(ItemType.DipLocation, "diplocation")] + [InlineData(ItemType.DipSwitch, "dipswitch")] + [InlineData(ItemType.DipValue, "dipvalue")] + [InlineData(ItemType.Disk, "disk")] + [InlineData(ItemType.DiskArea, "diskarea")] + [InlineData(ItemType.Display, "display")] + [InlineData(ItemType.Driver, "driver")] + [InlineData(ItemType.Extension, "extension")] + [InlineData(ItemType.Feature, "feature")] + [InlineData(ItemType.File, "file")] + [InlineData(ItemType.Info, "info")] + [InlineData(ItemType.Input, "input")] + [InlineData(ItemType.Instance, "instance")] + [InlineData(ItemType.Media, "media")] + [InlineData(ItemType.Part, "part")] + [InlineData(ItemType.PartFeature, "part_feature")] + [InlineData(ItemType.Port, "port")] + [InlineData(ItemType.RamOption, "ramoption")] + [InlineData(ItemType.Release, "release")] + [InlineData(ItemType.ReleaseDetails, "release_details")] + [InlineData(ItemType.Rom, "rom")] + [InlineData(ItemType.Sample, "sample")] + [InlineData(ItemType.Serials, "serials")] + [InlineData(ItemType.SharedFeat, "sharedfeat")] + [InlineData(ItemType.Slot, "slot")] + [InlineData(ItemType.SlotOption, "slotoption")] + [InlineData(ItemType.SoftwareList, "softwarelist")] + [InlineData(ItemType.Sound, "sound")] + [InlineData(ItemType.SourceDetails, "source_details")] + public void FromItemTypeTest(ItemType field, string? expected) + { + string? actual = field.AsStringValue(); + Assert.Equal(expected, actual); + } + [Theory] [InlineData((LoadFlag)int.MaxValue, null)] [InlineData(LoadFlag.Load16Byte, "load16_byte")] diff --git a/SabreTools.Data.Extensions/MetadataExtensions.cs b/SabreTools.Data.Extensions/MetadataExtensions.cs index 375e866c..80b2547c 100644 --- a/SabreTools.Data.Extensions/MetadataExtensions.cs +++ b/SabreTools.Data.Extensions/MetadataExtensions.cs @@ -887,6 +887,68 @@ namespace SabreTools.Data.Extensions }; } + /// + /// Get the enum value for an input string, if possible + /// + /// String value to parse/param> + /// Enum value representing the input, default on error + public static ItemType AsItemType(this string? value) + { + return value?.ToLowerInvariant() switch + { + // "Actionable" item types + "rom" => ItemType.Rom, + "disk" => ItemType.Disk, + "file" => ItemType.File, + "media" => ItemType.Media, + + // "Auxiliary" item types + "adjuster" => ItemType.Adjuster, + "analog" => ItemType.Analog, + "archive" => ItemType.Archive, + "biosset" => ItemType.BiosSet, + "chip" => ItemType.Chip, + "condition" => ItemType.Condition, + "configuration" => ItemType.Configuration, + "conflocation" => ItemType.ConfLocation, + "confsetting" => ItemType.ConfSetting, + "control" => ItemType.Control, + "dataarea" => ItemType.DataArea, + "device" => ItemType.Device, + "device_ref" or "deviceref" => ItemType.DeviceRef, + "diplocation" => ItemType.DipLocation, + "dipswitch" => ItemType.DipSwitch, + "dipvalue" => ItemType.DipValue, + "diskarea" => ItemType.DiskArea, + "display" => ItemType.Display, + "driver" => ItemType.Driver, + "dump" => ItemType.Dump, + "extension" => ItemType.Extension, + "feature" => ItemType.Feature, + "info" => ItemType.Info, + "input" => ItemType.Input, + "instance" => ItemType.Instance, + "original" => ItemType.Original, + "part" => ItemType.Part, + "part_feature" or "partfeature" => ItemType.PartFeature, + "port" => ItemType.Port, + "ramoption" or "ram_option" => ItemType.RamOption, + "release" => ItemType.Release, + "release_details" or "releasedetails" => ItemType.ReleaseDetails, + "sample" => ItemType.Sample, + "serials" => ItemType.Serials, + "sharedfeat" or "shared_feat" or "sharedfeature" or "shared_feature" => ItemType.SharedFeat, + "slot" => ItemType.Slot, + "slotoption" or "slot_option" => ItemType.SlotOption, + "softwarelist" or "software_list" => ItemType.SoftwareList, + "sound" => ItemType.Sound, + "source_details" or "sourcedetails" => ItemType.SourceDetails, + "video" => ItemType.Video, + "blank" => ItemType.Blank, + _ => ItemType.NULL, + }; + } + /// /// Get the enum value for an input string, if possible /// @@ -1308,6 +1370,70 @@ namespace SabreTools.Data.Extensions }; } + /// + /// Get the string value for an input enum, if possible + /// + /// Enum value to parse/param> + /// String value representing the input, default on error + public static string? AsStringValue(this ItemType value) + { + return value switch + { + // "Actionable" item types + ItemType.Rom => "rom", + ItemType.Disk => "disk", + ItemType.File => "file", + ItemType.Media => "media", + + // "Auxiliary" item types + ItemType.Adjuster => "adjuster", + ItemType.Analog => "analog", + ItemType.Archive => "archive", + ItemType.BiosSet => "biosset", + ItemType.Chip => "chip", + ItemType.Condition => "condition", + ItemType.Configuration => "configuration", + ItemType.ConfLocation => "conflocation", + ItemType.ConfSetting => "confsetting", + ItemType.Control => "control", + ItemType.DataArea => "dataarea", + ItemType.Device => "device", + ItemType.DeviceRef => "device_ref", + ItemType.DipLocation => "diplocation", + ItemType.DipSwitch => "dipswitch", + ItemType.DipValue => "dipvalue", + ItemType.DiskArea => "diskarea", + ItemType.Display => "display", + ItemType.Driver => "driver", + ItemType.Dump => "dump", + ItemType.Extension => "extension", + ItemType.Feature => "feature", + ItemType.Info => "info", + ItemType.Input => "input", + ItemType.Instance => "instance", + ItemType.Original => "original", + ItemType.Part => "part", + ItemType.PartFeature => "part_feature", + ItemType.Port => "port", + ItemType.RamOption => "ramoption", + ItemType.Release => "release", + ItemType.ReleaseDetails => "release_details", + ItemType.Sample => "sample", + ItemType.Serials => "serials", + ItemType.SharedFeat => "sharedfeat", + ItemType.Slot => "slot", + ItemType.SlotOption => "slotoption", + ItemType.SoftwareList => "softwarelist", + ItemType.Sound => "sound", + ItemType.SourceDetails => "source_details", + ItemType.Video => "video", + ItemType.Blank => "blank", + + ItemType.NULL => null, + _ => null, + }; + } + /// /// Get the string value for an input enum, if possible /// diff --git a/SabreTools.Metadata.DatItems.Test/ExtensionsTests.cs b/SabreTools.Metadata.DatItems.Test/ExtensionsTests.cs index 26473563..fa2c4e86 100644 --- a/SabreTools.Metadata.DatItems.Test/ExtensionsTests.cs +++ b/SabreTools.Metadata.DatItems.Test/ExtensionsTests.cs @@ -6,67 +6,6 @@ namespace SabreTools.Metadata.DatItems.Test { #region String to Enum - [Theory] - [InlineData(null, Data.Models.Metadata.ItemType.NULL)] - [InlineData("adjuster", Data.Models.Metadata.ItemType.Adjuster)] - [InlineData("analog", Data.Models.Metadata.ItemType.Analog)] - [InlineData("archive", Data.Models.Metadata.ItemType.Archive)] - [InlineData("biosset", Data.Models.Metadata.ItemType.BiosSet)] - [InlineData("blank", Data.Models.Metadata.ItemType.Blank)] - [InlineData("chip", Data.Models.Metadata.ItemType.Chip)] - [InlineData("condition", Data.Models.Metadata.ItemType.Condition)] - [InlineData("configuration", Data.Models.Metadata.ItemType.Configuration)] - [InlineData("conflocation", Data.Models.Metadata.ItemType.ConfLocation)] - [InlineData("confsetting", Data.Models.Metadata.ItemType.ConfSetting)] - [InlineData("control", Data.Models.Metadata.ItemType.Control)] - [InlineData("dataarea", Data.Models.Metadata.ItemType.DataArea)] - [InlineData("device", Data.Models.Metadata.ItemType.Device)] - [InlineData("deviceref", Data.Models.Metadata.ItemType.DeviceRef)] - [InlineData("device_ref", Data.Models.Metadata.ItemType.DeviceRef)] - [InlineData("diplocation", Data.Models.Metadata.ItemType.DipLocation)] - [InlineData("dipswitch", Data.Models.Metadata.ItemType.DipSwitch)] - [InlineData("dipvalue", Data.Models.Metadata.ItemType.DipValue)] - [InlineData("disk", Data.Models.Metadata.ItemType.Disk)] - [InlineData("diskarea", Data.Models.Metadata.ItemType.DiskArea)] - [InlineData("display", Data.Models.Metadata.ItemType.Display)] - [InlineData("driver", Data.Models.Metadata.ItemType.Driver)] - [InlineData("extension", Data.Models.Metadata.ItemType.Extension)] - [InlineData("feature", Data.Models.Metadata.ItemType.Feature)] - [InlineData("file", Data.Models.Metadata.ItemType.File)] - [InlineData("info", Data.Models.Metadata.ItemType.Info)] - [InlineData("input", Data.Models.Metadata.ItemType.Input)] - [InlineData("instance", Data.Models.Metadata.ItemType.Instance)] - [InlineData("media", Data.Models.Metadata.ItemType.Media)] - [InlineData("part", Data.Models.Metadata.ItemType.Part)] - [InlineData("partfeature", Data.Models.Metadata.ItemType.PartFeature)] - [InlineData("part_feature", Data.Models.Metadata.ItemType.PartFeature)] - [InlineData("port", Data.Models.Metadata.ItemType.Port)] - [InlineData("ramoption", Data.Models.Metadata.ItemType.RamOption)] - [InlineData("ram_option", Data.Models.Metadata.ItemType.RamOption)] - [InlineData("release", Data.Models.Metadata.ItemType.Release)] - [InlineData("releasedetails", Data.Models.Metadata.ItemType.ReleaseDetails)] - [InlineData("release_details", Data.Models.Metadata.ItemType.ReleaseDetails)] - [InlineData("rom", Data.Models.Metadata.ItemType.Rom)] - [InlineData("sample", Data.Models.Metadata.ItemType.Sample)] - [InlineData("serials", Data.Models.Metadata.ItemType.Serials)] - [InlineData("sharedfeat", Data.Models.Metadata.ItemType.SharedFeat)] - [InlineData("shared_feat", Data.Models.Metadata.ItemType.SharedFeat)] - [InlineData("sharedfeature", Data.Models.Metadata.ItemType.SharedFeat)] - [InlineData("shared_feature", Data.Models.Metadata.ItemType.SharedFeat)] - [InlineData("slot", Data.Models.Metadata.ItemType.Slot)] - [InlineData("slotoption", Data.Models.Metadata.ItemType.SlotOption)] - [InlineData("slot_option", Data.Models.Metadata.ItemType.SlotOption)] - [InlineData("softwarelist", Data.Models.Metadata.ItemType.SoftwareList)] - [InlineData("software_list", Data.Models.Metadata.ItemType.SoftwareList)] - [InlineData("sound", Data.Models.Metadata.ItemType.Sound)] - [InlineData("sourcedetails", Data.Models.Metadata.ItemType.SourceDetails)] - [InlineData("source_details", Data.Models.Metadata.ItemType.SourceDetails)] - public void AsItemTypeTest(string? field, Data.Models.Metadata.ItemType expected) - { - Data.Models.Metadata.ItemType actual = field.AsItemType(); - Assert.Equal(expected, actual); - } - [Theory] [InlineData(null, MachineType.None)] [InlineData("none", MachineType.None)] @@ -82,60 +21,5 @@ namespace SabreTools.Metadata.DatItems.Test } #endregion - - #region Enum to String - - [Theory] - [InlineData(Data.Models.Metadata.ItemType.NULL, null)] - [InlineData(Data.Models.Metadata.ItemType.Adjuster, "adjuster")] - [InlineData(Data.Models.Metadata.ItemType.Analog, "analog")] - [InlineData(Data.Models.Metadata.ItemType.Archive, "archive")] - [InlineData(Data.Models.Metadata.ItemType.BiosSet, "biosset")] - [InlineData(Data.Models.Metadata.ItemType.Blank, "blank")] - [InlineData(Data.Models.Metadata.ItemType.Chip, "chip")] - [InlineData(Data.Models.Metadata.ItemType.Condition, "condition")] - [InlineData(Data.Models.Metadata.ItemType.Configuration, "configuration")] - [InlineData(Data.Models.Metadata.ItemType.ConfLocation, "conflocation")] - [InlineData(Data.Models.Metadata.ItemType.ConfSetting, "confsetting")] - [InlineData(Data.Models.Metadata.ItemType.Control, "control")] - [InlineData(Data.Models.Metadata.ItemType.DataArea, "dataarea")] - [InlineData(Data.Models.Metadata.ItemType.Device, "device")] - [InlineData(Data.Models.Metadata.ItemType.DeviceRef, "device_ref")] - [InlineData(Data.Models.Metadata.ItemType.DipLocation, "diplocation")] - [InlineData(Data.Models.Metadata.ItemType.DipSwitch, "dipswitch")] - [InlineData(Data.Models.Metadata.ItemType.DipValue, "dipvalue")] - [InlineData(Data.Models.Metadata.ItemType.Disk, "disk")] - [InlineData(Data.Models.Metadata.ItemType.DiskArea, "diskarea")] - [InlineData(Data.Models.Metadata.ItemType.Display, "display")] - [InlineData(Data.Models.Metadata.ItemType.Driver, "driver")] - [InlineData(Data.Models.Metadata.ItemType.Extension, "extension")] - [InlineData(Data.Models.Metadata.ItemType.Feature, "feature")] - [InlineData(Data.Models.Metadata.ItemType.File, "file")] - [InlineData(Data.Models.Metadata.ItemType.Info, "info")] - [InlineData(Data.Models.Metadata.ItemType.Input, "input")] - [InlineData(Data.Models.Metadata.ItemType.Instance, "instance")] - [InlineData(Data.Models.Metadata.ItemType.Media, "media")] - [InlineData(Data.Models.Metadata.ItemType.Part, "part")] - [InlineData(Data.Models.Metadata.ItemType.PartFeature, "part_feature")] - [InlineData(Data.Models.Metadata.ItemType.Port, "port")] - [InlineData(Data.Models.Metadata.ItemType.RamOption, "ramoption")] - [InlineData(Data.Models.Metadata.ItemType.Release, "release")] - [InlineData(Data.Models.Metadata.ItemType.ReleaseDetails, "release_details")] - [InlineData(Data.Models.Metadata.ItemType.Rom, "rom")] - [InlineData(Data.Models.Metadata.ItemType.Sample, "sample")] - [InlineData(Data.Models.Metadata.ItemType.Serials, "serials")] - [InlineData(Data.Models.Metadata.ItemType.SharedFeat, "sharedfeat")] - [InlineData(Data.Models.Metadata.ItemType.Slot, "slot")] - [InlineData(Data.Models.Metadata.ItemType.SlotOption, "slotoption")] - [InlineData(Data.Models.Metadata.ItemType.SoftwareList, "softwarelist")] - [InlineData(Data.Models.Metadata.ItemType.Sound, "sound")] - [InlineData(Data.Models.Metadata.ItemType.SourceDetails, "source_details")] - public void FromItemTypeTest(Data.Models.Metadata.ItemType field, string? expected) - { - string? actual = field.AsStringValue(); - Assert.Equal(expected, actual); - } - - #endregion } } diff --git a/SabreTools.Metadata.DatItems/Extensions.cs b/SabreTools.Metadata.DatItems/Extensions.cs index 5a7f0def..4be3682b 100644 --- a/SabreTools.Metadata.DatItems/Extensions.cs +++ b/SabreTools.Metadata.DatItems/Extensions.cs @@ -4,68 +4,6 @@ namespace SabreTools.Metadata.DatItems { #region String to Enum - /// - /// Get the enum value for an input string, if possible - /// - /// String value to parse/param> - /// Enum value representing the input, default on error - public static Data.Models.Metadata.ItemType AsItemType(this string? value) - { - return value?.ToLowerInvariant() switch - { - // "Actionable" item types - "rom" => Data.Models.Metadata.ItemType.Rom, - "disk" => Data.Models.Metadata.ItemType.Disk, - "file" => Data.Models.Metadata.ItemType.File, - "media" => Data.Models.Metadata.ItemType.Media, - - // "Auxiliary" item types - "adjuster" => Data.Models.Metadata.ItemType.Adjuster, - "analog" => Data.Models.Metadata.ItemType.Analog, - "archive" => Data.Models.Metadata.ItemType.Archive, - "biosset" => Data.Models.Metadata.ItemType.BiosSet, - "chip" => Data.Models.Metadata.ItemType.Chip, - "condition" => Data.Models.Metadata.ItemType.Condition, - "configuration" => Data.Models.Metadata.ItemType.Configuration, - "conflocation" => Data.Models.Metadata.ItemType.ConfLocation, - "confsetting" => Data.Models.Metadata.ItemType.ConfSetting, - "control" => Data.Models.Metadata.ItemType.Control, - "dataarea" => Data.Models.Metadata.ItemType.DataArea, - "device" => Data.Models.Metadata.ItemType.Device, - "device_ref" or "deviceref" => Data.Models.Metadata.ItemType.DeviceRef, - "diplocation" => Data.Models.Metadata.ItemType.DipLocation, - "dipswitch" => Data.Models.Metadata.ItemType.DipSwitch, - "dipvalue" => Data.Models.Metadata.ItemType.DipValue, - "diskarea" => Data.Models.Metadata.ItemType.DiskArea, - "display" => Data.Models.Metadata.ItemType.Display, - "driver" => Data.Models.Metadata.ItemType.Driver, - "dump" => Data.Models.Metadata.ItemType.Dump, - "extension" => Data.Models.Metadata.ItemType.Extension, - "feature" => Data.Models.Metadata.ItemType.Feature, - "info" => Data.Models.Metadata.ItemType.Info, - "input" => Data.Models.Metadata.ItemType.Input, - "instance" => Data.Models.Metadata.ItemType.Instance, - "original" => Data.Models.Metadata.ItemType.Original, - "part" => Data.Models.Metadata.ItemType.Part, - "part_feature" or "partfeature" => Data.Models.Metadata.ItemType.PartFeature, - "port" => Data.Models.Metadata.ItemType.Port, - "ramoption" or "ram_option" => Data.Models.Metadata.ItemType.RamOption, - "release" => Data.Models.Metadata.ItemType.Release, - "release_details" or "releasedetails" => Data.Models.Metadata.ItemType.ReleaseDetails, - "sample" => Data.Models.Metadata.ItemType.Sample, - "serials" => Data.Models.Metadata.ItemType.Serials, - "sharedfeat" or "shared_feat" or "sharedfeature" or "shared_feature" => Data.Models.Metadata.ItemType.SharedFeat, - "slot" => Data.Models.Metadata.ItemType.Slot, - "slotoption" or "slot_option" => Data.Models.Metadata.ItemType.SlotOption, - "softwarelist" or "software_list" => Data.Models.Metadata.ItemType.SoftwareList, - "sound" => Data.Models.Metadata.ItemType.Sound, - "source_details" or "sourcedetails" => Data.Models.Metadata.ItemType.SourceDetails, - "video" => Data.Models.Metadata.ItemType.Video, - "blank" => Data.Models.Metadata.ItemType.Blank, - _ => Data.Models.Metadata.ItemType.NULL, - }; - } - /// /// Get the enum value for an input string, if possible /// @@ -84,73 +22,5 @@ namespace SabreTools.Metadata.DatItems } #endregion - - #region Enum to String - - /// - /// Get the string value for an input enum, if possible - /// - /// Enum value to parse/param> - /// String value representing the input, default on error - public static string? AsStringValue(this Data.Models.Metadata.ItemType value) - { - return value switch - { - // "Actionable" item types - Data.Models.Metadata.ItemType.Rom => "rom", - Data.Models.Metadata.ItemType.Disk => "disk", - Data.Models.Metadata.ItemType.File => "file", - Data.Models.Metadata.ItemType.Media => "media", - - // "Auxiliary" item types - Data.Models.Metadata.ItemType.Adjuster => "adjuster", - Data.Models.Metadata.ItemType.Analog => "analog", - Data.Models.Metadata.ItemType.Archive => "archive", - Data.Models.Metadata.ItemType.BiosSet => "biosset", - Data.Models.Metadata.ItemType.Chip => "chip", - Data.Models.Metadata.ItemType.Condition => "condition", - Data.Models.Metadata.ItemType.Configuration => "configuration", - Data.Models.Metadata.ItemType.ConfLocation => "conflocation", - Data.Models.Metadata.ItemType.ConfSetting => "confsetting", - Data.Models.Metadata.ItemType.Control => "control", - Data.Models.Metadata.ItemType.DataArea => "dataarea", - Data.Models.Metadata.ItemType.Device => "device", - Data.Models.Metadata.ItemType.DeviceRef => "device_ref", - Data.Models.Metadata.ItemType.DipLocation => "diplocation", - Data.Models.Metadata.ItemType.DipSwitch => "dipswitch", - Data.Models.Metadata.ItemType.DipValue => "dipvalue", - Data.Models.Metadata.ItemType.DiskArea => "diskarea", - Data.Models.Metadata.ItemType.Display => "display", - Data.Models.Metadata.ItemType.Driver => "driver", - Data.Models.Metadata.ItemType.Dump => "dump", - Data.Models.Metadata.ItemType.Extension => "extension", - Data.Models.Metadata.ItemType.Feature => "feature", - Data.Models.Metadata.ItemType.Info => "info", - Data.Models.Metadata.ItemType.Input => "input", - Data.Models.Metadata.ItemType.Instance => "instance", - Data.Models.Metadata.ItemType.Original => "original", - Data.Models.Metadata.ItemType.Part => "part", - Data.Models.Metadata.ItemType.PartFeature => "part_feature", - Data.Models.Metadata.ItemType.Port => "port", - Data.Models.Metadata.ItemType.RamOption => "ramoption", - Data.Models.Metadata.ItemType.Release => "release", - Data.Models.Metadata.ItemType.ReleaseDetails => "release_details", - Data.Models.Metadata.ItemType.Sample => "sample", - Data.Models.Metadata.ItemType.Serials => "serials", - Data.Models.Metadata.ItemType.SharedFeat => "sharedfeat", - Data.Models.Metadata.ItemType.Slot => "slot", - Data.Models.Metadata.ItemType.SlotOption => "slotoption", - Data.Models.Metadata.ItemType.SoftwareList => "softwarelist", - Data.Models.Metadata.ItemType.Sound => "sound", - Data.Models.Metadata.ItemType.SourceDetails => "source_details", - Data.Models.Metadata.ItemType.Video => "video", - Data.Models.Metadata.ItemType.Blank => "blank", - - Data.Models.Metadata.ItemType.NULL => null, - _ => null, - }; - } - - #endregion } } diff --git a/SabreTools.Metadata.Filter/FilterKey.cs b/SabreTools.Metadata.Filter/FilterKey.cs index 244d5ea4..2136f482 100644 --- a/SabreTools.Metadata.Filter/FilterKey.cs +++ b/SabreTools.Metadata.Filter/FilterKey.cs @@ -114,7 +114,6 @@ namespace SabreTools.Metadata.Filter "name", "soundonly", "tag", - "type", ]; /// @@ -172,7 +171,6 @@ namespace SabreTools.Metadata.Filter "reqbuttons", "reverse", "sensitivity", - "type", "ways", "ways2", "ways3", @@ -199,7 +197,6 @@ namespace SabreTools.Metadata.Filter "interface", "mandatory", "tag", - "type", ]; /// @@ -364,6 +361,14 @@ namespace SabreTools.Metadata.Filter if (string.Equals(itemName, "datitem", StringComparison.OrdinalIgnoreCase) || string.Equals(itemName, "item", StringComparison.OrdinalIgnoreCase)) { + // Handle item type + if (string.Equals(fieldName, "type", StringComparison.OrdinalIgnoreCase)) + { + itemName = "item"; + fieldName = "type"; + return true; + } + // If we get any matches string localFieldName = fieldName; string? matchedType = Array.Find(_datItemTypeNames, t => DatItemContainsField(t, localFieldName)); diff --git a/SabreTools.Metadata.Filter/FilterObject.cs b/SabreTools.Metadata.Filter/FilterObject.cs index 4bef1d2b..cedc5e89 100644 --- a/SabreTools.Metadata.Filter/FilterObject.cs +++ b/SabreTools.Metadata.Filter/FilterObject.cs @@ -336,9 +336,16 @@ namespace SabreTools.Metadata.Filter /// /// Get the check value for a field /// - /// TODO: Figure out how to not have this hardcoded private static bool GetCheckValue(object obj, string fieldName, out string? checkValue) { + // Special case for item type + if (obj is DatItem datItem + && string.Equals(fieldName, "type", StringComparison.OrdinalIgnoreCase)) + { + checkValue = datItem.ItemType.AsStringValue(); + return true; + } + switch (obj) { case Adjuster item: return GetCheckValue(item, fieldName, out checkValue); @@ -579,7 +586,6 @@ namespace SabreTools.Metadata.Filter switch (fieldName) { case "chiptype": - case "type": checkValue = obj.ChipType?.AsStringValue(); return true; case "clock": @@ -715,7 +721,6 @@ namespace SabreTools.Metadata.Filter checkValue = obj.Buttons?.ToString(); return true; case "controltype": - case "type": checkValue = obj.ControlType?.AsStringValue(); return true; case "keydelta": @@ -791,7 +796,6 @@ namespace SabreTools.Metadata.Filter switch (fieldName) { case "devicetype": - case "type": checkValue = obj.DeviceType?.AsStringValue(); return true; case "fixedimage": @@ -1010,7 +1014,6 @@ namespace SabreTools.Metadata.Filter case "orientation": checkValue = obj.Rotate?.AsStringValue(); return true; - case "type": case "screen": checkValue = obj.DisplayType?.AsStringValue(); return true; @@ -1114,6 +1117,9 @@ namespace SabreTools.Metadata.Filter { switch (fieldName) { + case "featuretype": + checkValue = obj.FeatureType?.AsStringValue(); + return true; case "name": checkValue = obj.Name; return true; @@ -1123,9 +1129,6 @@ namespace SabreTools.Metadata.Filter case "status": checkValue = obj.Status?.AsStringValue(); return true; - case "type": - checkValue = obj.FeatureType?.AsStringValue(); - return true; case "value": checkValue = obj.Value; return true; @@ -1264,7 +1267,7 @@ namespace SabreTools.Metadata.Filter checkValue = obj.Timestamp; return true; case "type": - checkValue = obj.Timestamp; + checkValue = obj.Type; return true; case "url": checkValue = obj.Url; @@ -2357,7 +2360,6 @@ namespace SabreTools.Metadata.Filter checkValue = obj.Refresh?.ToString(); return true; case "screen": - case "type": checkValue = obj.Screen?.AsStringValue(); return true; case "width": From 2aca55a895e55a2ae1c0f40bbabf9a8763bc3766 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Mon, 6 Apr 2026 15:39:40 -0400 Subject: [PATCH 130/142] Add machine type analogue filtering again --- SabreTools.Metadata.Filter/FilterKey.cs | 8 ++++++ SabreTools.Metadata.Filter/FilterObject.cs | 30 ++++++++++++++++++++++ SabreTools.Metadata.Filter/FilterRunner.cs | 8 ------ 3 files changed, 38 insertions(+), 8 deletions(-) diff --git a/SabreTools.Metadata.Filter/FilterKey.cs b/SabreTools.Metadata.Filter/FilterKey.cs index 2136f482..d48200c3 100644 --- a/SabreTools.Metadata.Filter/FilterKey.cs +++ b/SabreTools.Metadata.Filter/FilterKey.cs @@ -335,6 +335,14 @@ namespace SabreTools.Metadata.Filter /// private static bool ParseMachineFilterId(ref string itemName, ref string fieldName) { + // Special case for machine type + if (string.Equals(fieldName, "type", StringComparison.OrdinalIgnoreCase)) + { + itemName = "machine"; + fieldName = "type"; + return true; + } + // Get the set of properties var properties = GetProperties(typeof(Machine)); if (properties is null) diff --git a/SabreTools.Metadata.Filter/FilterObject.cs b/SabreTools.Metadata.Filter/FilterObject.cs index cedc5e89..a73f8032 100644 --- a/SabreTools.Metadata.Filter/FilterObject.cs +++ b/SabreTools.Metadata.Filter/FilterObject.cs @@ -77,6 +77,21 @@ namespace SabreTools.Metadata.Filter /// private bool MatchesEqual(object obj) { + // Special case for machine type + if (obj is Machine machine + && string.Equals(Key.ItemName, "machine", StringComparison.OrdinalIgnoreCase) + && string.Equals(Key.FieldName, "type", StringComparison.OrdinalIgnoreCase)) + { + return Value?.ToLowerInvariant() switch + { + "none" => machine.IsBios != true && machine.IsDevice != true && machine.IsMechanical != true, + "bios" => machine.IsBios == true, + "device" or "dev" => machine.IsDevice == true, + "mechanical" or "mech" => machine.IsMechanical == true, + _ => false, + }; + } + // Process the check value if (!GetCheckValue(obj, Key.FieldName, out string? checkValue)) return string.IsNullOrEmpty(Value); @@ -119,6 +134,21 @@ namespace SabreTools.Metadata.Filter /// private bool MatchesNotEqual(object obj) { + // Special case for machine type + if (obj is Machine machine + && string.Equals(Key.ItemName, "machine", StringComparison.OrdinalIgnoreCase) + && string.Equals(Key.FieldName, "type", StringComparison.OrdinalIgnoreCase)) + { + return Value?.ToLowerInvariant() switch + { + "none" => machine.IsBios == true || machine.IsDevice == true || machine.IsMechanical == true, + "bios" => machine.IsBios != true, + "device" or "dev" => machine.IsDevice != true, + "mechanical" or "mech" => machine.IsMechanical != true, + _ => true, + }; + } + // Process the check value if (!GetCheckValue(obj, Key.FieldName, out string? checkValue)) return string.IsNullOrEmpty(Value); diff --git a/SabreTools.Metadata.Filter/FilterRunner.cs b/SabreTools.Metadata.Filter/FilterRunner.cs index 8ab6fa96..2bc9fef5 100644 --- a/SabreTools.Metadata.Filter/FilterRunner.cs +++ b/SabreTools.Metadata.Filter/FilterRunner.cs @@ -76,14 +76,6 @@ namespace SabreTools.Metadata.Filter // Get the key as a string string key = filter.Key.ToString(); - // Special case for machine types - if (filter.Key.ItemName == "machine" && filter.Key.FieldName == "isbios") - key = $"{"machine"}.COMBINEDTYPE"; - else if (filter.Key.ItemName == "machine" && filter.Key.FieldName == "isdevice") - key = $"{"machine"}.COMBINEDTYPE"; - else if (filter.Key.ItemName == "machine" && filter.Key.FieldName == "ismechanical") - key = $"{"machine"}.COMBINEDTYPE"; - // Set the expected group type GroupType groupType = GroupType.OR; From 0350d8f58fe1469708764d20aa31357d9da76670 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Mon, 6 Apr 2026 16:19:20 -0400 Subject: [PATCH 131/142] Checkpoint reflection replacement --- SabreTools.Metadata.DatFiles/DatFile.cs | 1 + .../Formats/SabreJSON.cs | 1 + .../FilterObjectTests.cs | 132 +++++++++++++++++- SabreTools.Metadata.Filter/FilterKey.cs | 69 ++++++++- SabreTools.Metadata.Filter/FilterObject.cs | 7 +- 5 files changed, 203 insertions(+), 7 deletions(-) diff --git a/SabreTools.Metadata.DatFiles/DatFile.cs b/SabreTools.Metadata.DatFiles/DatFile.cs index 8d446fdf..4cf55e40 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.IO; using System.Xml.Serialization; using Newtonsoft.Json; +using SabreTools.Data.Extensions; using SabreTools.Hashing; using SabreTools.Logging; using SabreTools.Metadata.DatItems; diff --git a/SabreTools.Metadata.DatFiles/Formats/SabreJSON.cs b/SabreTools.Metadata.DatFiles/Formats/SabreJSON.cs index 6c7a0732..cbd62453 100644 --- a/SabreTools.Metadata.DatFiles/Formats/SabreJSON.cs +++ b/SabreTools.Metadata.DatFiles/Formats/SabreJSON.cs @@ -6,6 +6,7 @@ using System.Text; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using Newtonsoft.Json.Serialization; +using SabreTools.Data.Extensions; using SabreTools.Metadata.DatItems; using SabreTools.Metadata.DatItems.Formats; using SabreTools.Metadata.Filter; diff --git a/SabreTools.Metadata.Filter.Test/FilterObjectTests.cs b/SabreTools.Metadata.Filter.Test/FilterObjectTests.cs index f803661d..197ea58d 100644 --- a/SabreTools.Metadata.Filter.Test/FilterObjectTests.cs +++ b/SabreTools.Metadata.Filter.Test/FilterObjectTests.cs @@ -619,7 +619,6 @@ namespace SabreTools.Metadata.Filter.Test #region Chip [Theory] - [InlineData("chip.type", "audio")] [InlineData("chip.chiptype", "audio")] [InlineData("chip.clock", "12345")] [InlineData("chip.flags", "flags")] @@ -739,7 +738,6 @@ namespace SabreTools.Metadata.Filter.Test [Theory] [InlineData("control.buttons", "12345")] - [InlineData("control.type", "lightgun")] [InlineData("control.controltype", "lightgun")] [InlineData("control.keydelta", "12345")] [InlineData("control.maximum", "12345")] @@ -804,7 +802,6 @@ namespace SabreTools.Metadata.Filter.Test [Theory] [InlineData("device.devicetype", "punchcard")] - [InlineData("device.type", "punchcard")] [InlineData("device.fixedimage", "fixedimage")] [InlineData("device.interface", "interface")] [InlineData("device.mandatory", "yes")] @@ -890,5 +887,134 @@ namespace SabreTools.Metadata.Filter.Test } #endregion + + #region DipValue + + [Theory] + [InlineData("dipvalue.default", "yes")] + [InlineData("dipvalue.name", "name")] + [InlineData("dipvalue.value", "value")] + public void Matches_DipValue(string itemField, string value) + { + var filter = new FilterObject(itemField, value, Operation.Equals); + DipValue obj = new DipValue + { + Default = true, + Name = "name", + Value = "value", + }; + + bool actual = filter.Matches(obj); + Assert.True(actual); + } + + #endregion + + #region Disk + + [Theory] + [InlineData("disk.flags", "flags")] + [InlineData("disk.index", "12345")] + [InlineData("disk.md5", "md5")] + [InlineData("disk.merge", "merge")] + [InlineData("disk.name", "name")] + [InlineData("disk.optional", "yes")] + [InlineData("disk.region", "region")] + [InlineData("disk.sha1", "sha1")] + [InlineData("disk.status", "nodump")] + [InlineData("disk.writable", "yes")] + public void Matches_Disk(string itemField, string value) + { + var filter = new FilterObject(itemField, value, Operation.Equals); + Disk obj = new Disk + { + Flags = "flags", + Index = 12345, + MD5 = "md5", + Merge = "merge", + Name = "name", + Optional = true, + Region = "region", + SHA1 = "sha1", + Status = ItemStatus.Nodump, + Writable = true, + }; + + bool actual = filter.Matches(obj); + Assert.True(actual); + } + + #endregion + + #region DiskArea + + [Theory] + [InlineData("diskarea.name", "name")] + public void Matches_DiskArea(string itemField, string value) + { + var filter = new FilterObject(itemField, value, Operation.Equals); + DiskArea obj = new DiskArea + { + Name = "name", + }; + + bool actual = filter.Matches(obj); + Assert.True(actual); + } + + #endregion + + #region Display + + [Theory] + [InlineData("display.aspectx", "12345")] + [InlineData("display.aspecty", "12345")] + [InlineData("display.displaytype", "vector")] + [InlineData("display.screen", "vector")] + [InlineData("display.flipx", "yes")] + [InlineData("display.hbend", "12345")] + [InlineData("display.hbstart", "12345")] + [InlineData("display.height", "12345")] + [InlineData("display.y", "12345")] + [InlineData("display.htotal", "12345")] + [InlineData("display.pixclock", "12345")] + [InlineData("display.refresh", "123.45")] + [InlineData("display.freq", "123.45")] + [InlineData("display.rotate", "90")] + [InlineData("display.orientation", "90")] + [InlineData("display.tag", "tag")] + [InlineData("display.vbend", "12345")] + [InlineData("display.vbstart", "12345")] + [InlineData("display.vtotal", "12345")] + [InlineData("display.width", "12345")] + [InlineData("display.x", "12345")] + public void Matches_Display(string itemField, string value) + { + var filter = new FilterObject(itemField, value, Operation.Equals); + Display obj = new Display + { + AspectX = 12345, + AspectY = 12345, + DisplayType = DisplayType.Vector, + FlipX = true, + HBEnd = 12345, + HBStart = 12345, + Height = 12345, + HTotal = 12345, + PixClock = 12345, + Refresh = 123.45, + Rotate = Rotation.East, + Tag = "tag", + VBEnd = 12345, + VBStart = 12345, + VTotal = 12345, + Width = 12345, + }; + + bool actual = filter.Matches(obj); + Assert.True(actual); + } + + #endregion } } diff --git a/SabreTools.Metadata.Filter/FilterKey.cs b/SabreTools.Metadata.Filter/FilterKey.cs index d48200c3..d7d2e4a1 100644 --- a/SabreTools.Metadata.Filter/FilterKey.cs +++ b/SabreTools.Metadata.Filter/FilterKey.cs @@ -217,7 +217,7 @@ namespace SabreTools.Metadata.Filter "number", ]; - /// + /// /// Known keys for DipSwitch /// private static readonly string[] _dipSwitchKeys = @@ -228,6 +228,69 @@ namespace SabreTools.Metadata.Filter "tag", ]; + /// + /// Known keys for DipSwitch + /// + private static readonly string[] _dipValueKeys = + [ + "default", + "name", + "value", + ]; + + /// + /// Known keys for Disk + /// + private static readonly string[] _diskKeys = + [ + "flags", + "index", + "md5", + "merge", + "name", + "optional", + "region", + "sha1", + "status", + "writable", + ]; + + /// + /// Known keys for DiskArea + /// + private static readonly string[] _diskAreaKeys = + [ + "name", + ]; + + /// + /// Known keys for Display + /// + private static readonly string[] _displayKeys = + [ + "aspectx", + "aspecty", + "displaytype", + "flipx", + "freq", + "hbend", + "hbstart", + "height", + "htotal", + "orientation", + "pixclock", + "refresh", + "rotate", + "screen", + "tag", + "vbend", + "vbstart", + "vtotal", + "width", + "x", + "y", + ]; + #endregion /// @@ -437,6 +500,10 @@ namespace SabreTools.Metadata.Filter "deviceref" => _deviceRefKeys, "diplocation" => _dipLocationKeys, "dipswitch" => _dipSwitchKeys, + "dipvalue" => _dipValueKeys, + "disk" => _diskKeys, + "diskarea" => _diskAreaKeys, + "display" => _displayKeys, _ => null, }; diff --git a/SabreTools.Metadata.Filter/FilterObject.cs b/SabreTools.Metadata.Filter/FilterObject.cs index a73f8032..e011ddfa 100644 --- a/SabreTools.Metadata.Filter/FilterObject.cs +++ b/SabreTools.Metadata.Filter/FilterObject.cs @@ -1017,6 +1017,10 @@ namespace SabreTools.Metadata.Filter case "aspecty": checkValue = obj.AspectY?.ToString(); return true; + case "displaytype": + case "screen": + checkValue = obj.DisplayType?.AsStringValue(); + return true; case "flipx": checkValue = obj.FlipX.FromYesNo(); return true; @@ -1044,9 +1048,6 @@ namespace SabreTools.Metadata.Filter case "orientation": checkValue = obj.Rotate?.AsStringValue(); return true; - case "screen": - checkValue = obj.DisplayType?.AsStringValue(); - return true; case "tag": checkValue = obj.Tag; return true; From f3d6adbe1de9daa79aee4fc5b33140195794a1cc Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Mon, 6 Apr 2026 18:37:56 -0400 Subject: [PATCH 132/142] Add RV-specific deduped status --- SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs | 3 +++ SabreTools.Data.Extensions/MetadataExtensions.cs | 2 ++ SabreTools.Data.Models/Metadata/Enums.cs | 3 +++ SabreTools.Metadata.DatFiles/DatStatistics.cs | 4 ++++ 4 files changed, 12 insertions(+) diff --git a/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs b/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs index 149f2e11..f994865f 100644 --- a/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs +++ b/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs @@ -2728,6 +2728,7 @@ namespace SabreTools.Data.Extensions.Test [InlineData("nodump", ItemStatus.Nodump)] [InlineData("yes", ItemStatus.Nodump)] [InlineData("verified", ItemStatus.Verified)] + [InlineData("deduped", ItemStatus.Deduped)] public void AsItemStatusTest(string? field, ItemStatus? expected) { ItemStatus? actual = field.AsItemStatus(); @@ -3129,6 +3130,8 @@ namespace SabreTools.Data.Extensions.Test [InlineData(ItemStatus.Nodump, false, "nodump")] [InlineData(ItemStatus.Verified, true, "verified")] [InlineData(ItemStatus.Verified, false, "verified")] + [InlineData(ItemStatus.Deduped, true, "deduped")] + [InlineData(ItemStatus.Deduped, false, "deduped")] public void FromItemStatusTest(ItemStatus field, bool useSecond, string? expected) { string? actual = field.AsStringValue(useSecond); diff --git a/SabreTools.Data.Extensions/MetadataExtensions.cs b/SabreTools.Data.Extensions/MetadataExtensions.cs index 80b2547c..9852c363 100644 --- a/SabreTools.Data.Extensions/MetadataExtensions.cs +++ b/SabreTools.Data.Extensions/MetadataExtensions.cs @@ -883,6 +883,7 @@ namespace SabreTools.Data.Extensions "baddump" => ItemStatus.BadDump, "nodump" or "yes" => ItemStatus.Nodump, "verified" => ItemStatus.Verified, + "deduped" => ItemStatus.Deduped, _ => null, }; } @@ -1366,6 +1367,7 @@ namespace SabreTools.Data.Extensions ItemStatus.BadDump => "baddump", ItemStatus.Nodump => useSecond ? "yes" : "nodump", ItemStatus.Verified => "verified", + ItemStatus.Deduped => "deduped", _ => null, }; } diff --git a/SabreTools.Data.Models/Metadata/Enums.cs b/SabreTools.Data.Models/Metadata/Enums.cs index bf01b1cf..d29315e0 100644 --- a/SabreTools.Data.Models/Metadata/Enums.cs +++ b/SabreTools.Data.Models/Metadata/Enums.cs @@ -256,6 +256,9 @@ namespace SabreTools.Data.Models.Metadata /// "verified" Verified, + + /// "deduped", RomVault extensions + Deduped, } /// diff --git a/SabreTools.Metadata.DatFiles/DatStatistics.cs b/SabreTools.Metadata.DatFiles/DatStatistics.cs index b2e5c857..e07673c4 100644 --- a/SabreTools.Metadata.DatFiles/DatStatistics.cs +++ b/SabreTools.Metadata.DatFiles/DatStatistics.cs @@ -302,6 +302,7 @@ namespace SabreTools.Metadata.DatFiles ModifyStatusCount(ItemStatus.Good, status == ItemStatus.Good ? 1 : 0); ModifyStatusCount(ItemStatus.Nodump, status == ItemStatus.Nodump ? 1 : 0); ModifyStatusCount(ItemStatus.Verified, status == ItemStatus.Verified ? 1 : 0); + ModifyStatusCount(ItemStatus.Deduped, status == ItemStatus.Deduped ? 1 : 0); } /// @@ -358,6 +359,7 @@ namespace SabreTools.Metadata.DatFiles ModifyStatusCount(ItemStatus.Good, status == ItemStatus.Good ? 1 : 0); ModifyStatusCount(ItemStatus.Nodump, status == ItemStatus.Nodump ? 1 : 0); ModifyStatusCount(ItemStatus.Verified, status == ItemStatus.Verified ? 1 : 0); + ModifyStatusCount(ItemStatus.Deduped, status == ItemStatus.Deduped ? 1 : 0); } /// @@ -377,6 +379,7 @@ namespace SabreTools.Metadata.DatFiles ModifyStatusCount(ItemStatus.Good, status == ItemStatus.Good ? -1 : 0); ModifyStatusCount(ItemStatus.Nodump, status == ItemStatus.Nodump ? -1 : 0); ModifyStatusCount(ItemStatus.Verified, status == ItemStatus.Verified ? -1 : 0); + ModifyStatusCount(ItemStatus.Deduped, status == ItemStatus.Deduped ? -1 : 0); } /// @@ -433,6 +436,7 @@ namespace SabreTools.Metadata.DatFiles ModifyStatusCount(ItemStatus.Good, status == ItemStatus.Good ? -1 : 0); ModifyStatusCount(ItemStatus.Nodump, status == ItemStatus.Nodump ? -1 : 0); ModifyStatusCount(ItemStatus.Verified, status == ItemStatus.Verified ? -1 : 0); + ModifyStatusCount(ItemStatus.Deduped, status == ItemStatus.Deduped ? -1 : 0); } /// From 2d6e9d7875d513c9aefdd7c605a5929bd1046a76 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Mon, 6 Apr 2026 18:51:09 -0400 Subject: [PATCH 133/142] Add RomVault subheader --- SabreTools.Data.Models/Logiqx/Header.cs | 3 +++ SabreTools.Data.Models/Logiqx/RomVault.cs | 25 +++++++++++++++++++ .../LogiqxTests.cs | 22 ++++++++++++++++ .../Logiqx.Deserializer.cs | 10 ++++++++ .../LogiqxTests.cs | 22 ++++++++++++++++ SabreTools.Serialization.Readers/Logiqx.cs | 24 ++++++++++++++++++ SabreTools.Serialization.Writers/Logiqx.cs | 23 +++++++++++++++++ 7 files changed, 129 insertions(+) create mode 100644 SabreTools.Data.Models/Logiqx/RomVault.cs diff --git a/SabreTools.Data.Models/Logiqx/Header.cs b/SabreTools.Data.Models/Logiqx/Header.cs index 86619e68..504615e9 100644 --- a/SabreTools.Data.Models/Logiqx/Header.cs +++ b/SabreTools.Data.Models/Logiqx/Header.cs @@ -52,6 +52,9 @@ namespace SabreTools.Data.Models.Logiqx [XmlElement("type")] public string? Type { get; set; } + [XmlElement("romvault")] + public RomVault? RomVault { get; set; } + [XmlElement("clrmamepro")] public ClrMamePro? ClrMamePro { get; set; } diff --git a/SabreTools.Data.Models/Logiqx/RomVault.cs b/SabreTools.Data.Models/Logiqx/RomVault.cs new file mode 100644 index 00000000..3bccee00 --- /dev/null +++ b/SabreTools.Data.Models/Logiqx/RomVault.cs @@ -0,0 +1,25 @@ +using System.Xml; +using System.Xml.Serialization; +using SabreTools.Data.Models.Metadata; + +namespace SabreTools.Data.Models.Logiqx +{ + [XmlRoot("romvault")] + public class RomVault + { + [XmlAttribute("header")] + public string? Header { get; set; } + + /// (none|split|merged|nonmerged|fullmerged|device|full) "split" + [XmlAttribute("forcemerging")] + public MergingFlag ForceMerging { get; set; } + + /// (obsolete|required|ignore) "obsolete" + [XmlAttribute("forcenodump")] + public NodumpFlag ForceNodump { get; set; } + + /// (zip|unzip) "zip" + [XmlAttribute("forcepacking")] + public PackingFlag ForcePacking { get; set; } + } +} diff --git a/SabreTools.Serialization.CrossModel.Test/LogiqxTests.cs b/SabreTools.Serialization.CrossModel.Test/LogiqxTests.cs index 9f86e1cc..5f31d4da 100644 --- a/SabreTools.Serialization.CrossModel.Test/LogiqxTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/LogiqxTests.cs @@ -73,6 +73,14 @@ namespace SabreTools.Serialization.CrossModel.Test /// private static Data.Models.Logiqx.Datafile Build(bool game) { + var romvault = new Data.Models.Logiqx.RomVault + { + Header = "XXXXXX", + ForceMerging = Data.Models.Metadata.MergingFlag.Merged, + ForceNodump = Data.Models.Metadata.NodumpFlag.Required, + ForcePacking = Data.Models.Metadata.PackingFlag.Zip, + }; + var clrmamepro = new Data.Models.Logiqx.ClrMamePro { Header = "XXXXXX", @@ -107,6 +115,7 @@ namespace SabreTools.Serialization.CrossModel.Test Url = "XXXXXX", Comment = "XXXXXX", Type = "XXXXXX", + RomVault = romvault, ClrMamePro = clrmamepro, RomCenter = romcenter, }; @@ -303,10 +312,23 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", header.Url); Assert.Equal("XXXXXX", header.Comment); Assert.Equal("XXXXXX", header.Type); + Validate(header.RomVault); Validate(header.ClrMamePro); Validate(header.RomCenter); } + /// + /// Validate a RomVault + /// + private static void Validate(Data.Models.Logiqx.RomVault? rv) + { + Assert.NotNull(rv); + Assert.Equal("XXXXXX", rv.Header); + Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, rv.ForceMerging); + Assert.Equal(Data.Models.Metadata.NodumpFlag.Required, rv.ForceNodump); + Assert.Equal(Data.Models.Metadata.PackingFlag.Zip, rv.ForcePacking); + } + /// /// Validate a ClrMamePro /// diff --git a/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs b/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs index 2465875e..823efbb8 100644 --- a/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs @@ -61,6 +61,16 @@ namespace SabreTools.Serialization.CrossModel || item.ForceNodump is not Data.Models.Metadata.NodumpFlag.None || item.ForcePacking is not Data.Models.Metadata.PackingFlag.None) { + header.RomVault = new RomVault(); + if (item.HeaderSkipper is not null) + header.RomVault.Header = item.HeaderSkipper; + if (item.ForceMerging is not Data.Models.Metadata.MergingFlag.None) + header.RomVault.ForceMerging = item.ForceMerging; + if (item.ForceNodump is not Data.Models.Metadata.NodumpFlag.None) + header.RomVault.ForceNodump = item.ForceNodump; + if (item.ForcePacking is not Data.Models.Metadata.PackingFlag.None) + header.RomVault.ForcePacking = item.ForcePacking; + header.ClrMamePro = new Data.Models.Logiqx.ClrMamePro(); if (item.HeaderSkipper is not null) header.ClrMamePro.Header = item.HeaderSkipper; diff --git a/SabreTools.Serialization.Readers.Test/LogiqxTests.cs b/SabreTools.Serialization.Readers.Test/LogiqxTests.cs index 90eb74a1..1d073ccd 100644 --- a/SabreTools.Serialization.Readers.Test/LogiqxTests.cs +++ b/SabreTools.Serialization.Readers.Test/LogiqxTests.cs @@ -138,6 +138,14 @@ namespace SabreTools.Serialization.Readers.Test /// private static Data.Models.Logiqx.Datafile Build(bool game) { + var romvault = new Data.Models.Logiqx.RomVault + { + Header = "XXXXXX", + ForceMerging = Data.Models.Metadata.MergingFlag.Merged, + ForceNodump = Data.Models.Metadata.NodumpFlag.Required, + ForcePacking = Data.Models.Metadata.PackingFlag.Zip, + }; + var clrmamepro = new Data.Models.Logiqx.ClrMamePro { Header = "XXXXXX", @@ -172,6 +180,7 @@ namespace SabreTools.Serialization.Readers.Test Url = "XXXXXX", Comment = "XXXXXX", Type = "XXXXXX", + RomVault = romvault, ClrMamePro = clrmamepro, RomCenter = romcenter, }; @@ -356,10 +365,23 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", header.Url); Assert.Equal("XXXXXX", header.Comment); Assert.Equal("XXXXXX", header.Type); + Validate(header.RomVault); Validate(header.ClrMamePro); Validate(header.RomCenter); } + /// + /// Validate a RomVault + /// + private static void Validate(Data.Models.Logiqx.RomVault? rv) + { + Assert.NotNull(rv); + Assert.Equal("XXXXXX", rv.Header); + Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, rv.ForceMerging); + Assert.Equal(Data.Models.Metadata.NodumpFlag.Required, rv.ForceNodump); + Assert.Equal(Data.Models.Metadata.PackingFlag.Zip, rv.ForcePacking); + } + /// /// Validate a ClrMamePro /// diff --git a/SabreTools.Serialization.Readers/Logiqx.cs b/SabreTools.Serialization.Readers/Logiqx.cs index 25c6e534..df1d2f3f 100644 --- a/SabreTools.Serialization.Readers/Logiqx.cs +++ b/SabreTools.Serialization.Readers/Logiqx.cs @@ -244,6 +244,13 @@ namespace SabreTools.Serialization.Readers obj.Type = reader.ReadElementContentAsString(); break; + case "romvault": + if (obj.RomVault is not null && Debug) + Console.WriteLine($"'{reader.Name}' element already found, overwriting"); + + obj.RomVault = ParseRomVault(reader); + reader.Skip(); + break; case "clrmamepro": if (obj.ClrMamePro is not null && Debug) Console.WriteLine($"'{reader.Name}' element already found, overwriting"); @@ -289,6 +296,23 @@ namespace SabreTools.Serialization.Readers return obj; } + /// + /// Parse from an XmlTextReader into a RomVault + /// + /// XmlTextReader to read from + /// Filled RomVault on success, null on error + public RomVault ParseRomVault(XmlTextReader reader) + { + var obj = new RomVault(); + + obj.Header = reader.GetAttribute("header"); + obj.ForceMerging = reader.GetAttribute("forcemerging").AsMergingFlag(); + obj.ForceNodump = reader.GetAttribute("forcenodump").AsNodumpFlag(); + obj.ForcePacking = reader.GetAttribute("forcepacking").AsPackingFlag(); + + return obj; + } + #endregion #region Items diff --git a/SabreTools.Serialization.Writers/Logiqx.cs b/SabreTools.Serialization.Writers/Logiqx.cs index 7ecfd167..9ce88276 100644 --- a/SabreTools.Serialization.Writers/Logiqx.cs +++ b/SabreTools.Serialization.Writers/Logiqx.cs @@ -159,6 +159,9 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalElementString("comment", obj.Comment); writer.WriteOptionalElementString("type", obj.Type); + if (obj.RomVault is not null) + WriteRomVault(obj.RomVault, writer); + if (obj.ClrMamePro is not null) WriteClrMamePro(obj.ClrMamePro, writer); @@ -192,6 +195,26 @@ namespace SabreTools.Serialization.Writers writer.WriteEndElement(); } + /// + /// Write a RomVault to an XmlTextWriter + /// + /// RomVault to write + /// XmlTextReader to write to + private static void WriteRomVault(RomVault obj, XmlTextWriter writer) + { + writer.WriteStartElement("romvault"); + + writer.WriteOptionalAttributeString("header", obj.Header); + if (obj.ForceMerging != Data.Models.Metadata.MergingFlag.None) + writer.WriteOptionalAttributeString("forcemerging", obj.ForceMerging.AsStringValue()); + if (obj.ForceNodump != Data.Models.Metadata.NodumpFlag.None) + writer.WriteOptionalAttributeString("forcenodump", obj.ForceNodump.AsStringValue()); + if (obj.ForcePacking != Data.Models.Metadata.PackingFlag.None) + writer.WriteOptionalAttributeString("forcepacking", obj.ForcePacking.AsStringValue()); + + writer.WriteEndElement(); + } + #endregion #region Items From 39a31b3a979c240417034f31fd66e089a83a868b Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Mon, 6 Apr 2026 19:10:40 -0400 Subject: [PATCH 134/142] Checkpoint reflection replacement --- .../FilterObjectTests.cs | 202 ++++++++++++++++++ SabreTools.Metadata.Filter/FilterKey.cs | 108 +++++++++- 2 files changed, 304 insertions(+), 6 deletions(-) diff --git a/SabreTools.Metadata.Filter.Test/FilterObjectTests.cs b/SabreTools.Metadata.Filter.Test/FilterObjectTests.cs index 197ea58d..58baa327 100644 --- a/SabreTools.Metadata.Filter.Test/FilterObjectTests.cs +++ b/SabreTools.Metadata.Filter.Test/FilterObjectTests.cs @@ -1016,5 +1016,207 @@ namespace SabreTools.Metadata.Filter.Test } #endregion + + #region Driver + + [Theory] + [InlineData("driver.blit", "dirty")] + [InlineData("driver.cocktail", "test")] + [InlineData("driver.color", "test")] + [InlineData("driver.emulation", "test")] + [InlineData("driver.incomplete", "yes")] + [InlineData("driver.nosoundhardware", "yes")] + [InlineData("driver.palettesize", "palettesize")] + [InlineData("driver.requiresartwork", "yes")] + [InlineData("driver.savestate", "partial")] + [InlineData("driver.sound", "test")] + [InlineData("driver.status", "test")] + [InlineData("driver.unofficial", "yes")] + public void Matches_Driver(string itemField, string value) + { + var filter = new FilterObject(itemField, value, Operation.Equals); + Driver obj = new Driver + { + Blit = Blit.Dirty, + Cocktail = SupportStatus.Test, + Color = SupportStatus.Test, + Emulation = SupportStatus.Test, + Incomplete = true, + NoSoundHardware = true, + PaletteSize = "palettesize", + RequiresArtwork = true, + SaveState = Supported.Partial, + Sound = SupportStatus.Test, + Status = SupportStatus.Test, + Unofficial = true, + }; + + bool actual = filter.Matches(obj); + Assert.True(actual); + } + + #endregion + + #region Extension + + [Theory] + [InlineData("extension.name", "name")] + public void Matches_Extension(string itemField, string value) + { + var filter = new FilterObject(itemField, value, Operation.Equals); + Extension obj = new Extension + { + Name = "name", + }; + + bool actual = filter.Matches(obj); + Assert.True(actual); + } + + #endregion + + #region Feature + + [Theory] + [InlineData("feature.featuretype", "printer")] + [InlineData("feature.name", "name")] + [InlineData("feature.overall", "imperfect")] + [InlineData("feature.status", "imperfect")] + [InlineData("feature.value", "value")] + public void Matches_Feature(string itemField, string value) + { + var filter = new FilterObject(itemField, value, Operation.Equals); + Feature obj = new Feature + { + FeatureType = FeatureType.Printer, + Name = "name", + Overall = FeatureStatus.Imperfect, + Status = FeatureStatus.Imperfect, + Value = "value", + }; + + bool actual = filter.Matches(obj); + Assert.True(actual); + } + + #endregion + + #region Header + + [Theory] + [InlineData("header.author", "author")] + [InlineData("header.biosmode", "merged")] + [InlineData("header.build", "build")] + [InlineData("header.category", "category")] + [InlineData("header.comment", "comment")] + [InlineData("header.date", "date")] + [InlineData("header.datversion", "datversion")] + [InlineData("header.debug", "yes")] + [InlineData("header.description", "description")] + [InlineData("header.email", "email")] + [InlineData("header.emulatorversion", "emulatorversion")] + [InlineData("header.filename", "filename")] + [InlineData("header.forcemerging", "merged")] + [InlineData("header.forcenodump", "required")] + [InlineData("header.forcepacking", "zip")] + [InlineData("header.forcezipping", "yes")] + [InlineData("header.header", "header")] + [InlineData("header.headerskipper", "header")] + [InlineData("header.skipper", "header")] + [InlineData("header.homepage", "homepage")] + [InlineData("header.id", "id")] + [InlineData("header.imfolder", "imfolder")] + [InlineData("header.lockbiosmode", "yes")] + [InlineData("header.lockrommode", "yes")] + [InlineData("header.locksamplemode", "yes")] + [InlineData("header.mameconfig", "mameconfig")] + [InlineData("header.name", "name")] + [InlineData("header.notes", "notes")] + [InlineData("header.plugin", "plugin")] + [InlineData("header.refname", "refname")] + [InlineData("header.rommode", "merged")] + [InlineData("header.romtitle", "romtitle")] + [InlineData("header.rootdir", "rootdir")] + [InlineData("header.samplemode", "merged")] + [InlineData("header.schemalocation", "schemalocation")] + [InlineData("header.screenshotsheight", "screenshotsheight")] + [InlineData("header.screenshotswidth", "screenshotswidth")] + [InlineData("header.system", "system")] + [InlineData("header.timestamp", "timestamp")] + [InlineData("header.type", "type")] + [InlineData("header.url", "url")] + [InlineData("header.version", "version")] + public void Matches_Header(string itemField, string value) + { + var filter = new FilterObject(itemField, value, Operation.Equals); + Header obj = new Header + { + Author = "author", + BiosMode = MergingFlag.Merged, + Build = "build", + Category = "category", + Comment = "comment", + Date = "date", + DatVersion = "datversion", + Debug = true, + Description = "description", + Email = "email", + EmulatorVersion = "emulatorversion", + FileName = "filename", + ForceMerging = MergingFlag.Merged, + ForceNodump = NodumpFlag.Required, + ForcePacking = PackingFlag.Zip, + ForceZipping = true, + HeaderSkipper = "header", + Homepage = "homepage", + Id = "id", + ImFolder = "imfolder", + LockBiosMode = true, + LockRomMode = true, + LockSampleMode = true, + MameConfig = "mameconfig", + Name = "name", + Notes = "notes", + Plugin = "plugin", + RefName = "refname", + RomMode = MergingFlag.Merged, + RomTitle = "romtitle", + RootDir = "rootdir", + SampleMode = MergingFlag.Merged, + SchemaLocation = "schemalocation", + ScreenshotsHeight = "screenshotsheight", + ScreenshotsWidth = "screenshotswidth", + System = "system", + Timestamp = "timestamp", + Type = "type", + Url = "url", + Version = "version", + }; + + bool actual = filter.Matches(obj); + Assert.True(actual); + } + + #endregion + + #region Info + + [Theory] + [InlineData("info.name", "name")] + [InlineData("info.value", "value")] + public void Matches_Info(string itemField, string value) + { + var filter = new FilterObject(itemField, value, Operation.Equals); + Info obj = new Info + { + Name = "name", + Value = "value", + }; + + bool actual = filter.Matches(obj); + Assert.True(actual); + } + + #endregion } } diff --git a/SabreTools.Metadata.Filter/FilterKey.cs b/SabreTools.Metadata.Filter/FilterKey.cs index d7d2e4a1..e215ae67 100644 --- a/SabreTools.Metadata.Filter/FilterKey.cs +++ b/SabreTools.Metadata.Filter/FilterKey.cs @@ -291,6 +291,103 @@ namespace SabreTools.Metadata.Filter "y", ]; + /// + /// Known keys for Driver + /// + private static readonly string[] _driverKeys = + [ + "blit", + "cocktail", + "color", + "emulation", + "incomplete", + "nosoundhardware", + "palettesize", + "requiresartwork", + "savestate", + "sound", + "status", + "unofficial", + ]; + + /// + /// Known keys for Extension + /// + private static readonly string[] _extensionKeys = + [ + "name", + ]; + + /// + /// Known keys for Feature/PartFeature + /// + private static readonly string[] _featureKeys = + [ + "featuretype", + "name", + "overall", + "status", + "value", + ]; + + /// + /// Known keys for Header + /// + private static readonly string[] _headerKeys = + [ + "author", + "biosmode", + "build", + "category", + "comment", + "date", + "datversion", + "debug", + "description", + "email", + "emulatorversion", + "filename", + "forcemerging", + "forcenodump", + "forcepacking", + "forcezipping", + "header", + "headerskipper", + "homepage", + "id", + "imfolder", + "lockbiosmode", + "lockrommode", + "locksamplemode", + "mameconfig", + "name", + "notes", + "plugin", + "refname", + "rommode", + "romtitle", + "rootdir", + "samplemode", + "schemalocation", + "screenshotsheight", + "screenshotswidth", + "skipper", + "system", + "timestamp", + "type", + "url", + "version", + ]; + + /// + /// Known keys for Info + /// + private static readonly string[] _infoKeys = + [ + "name", + "value", + ]; + #endregion /// @@ -376,14 +473,9 @@ namespace SabreTools.Metadata.Filter /// private static bool ParseHeaderFilterId(ref string itemName, ref string fieldName) { - // Get the set of properties - var properties = GetProperties(typeof(Header)); - if (properties is null) - return false; - // Get if there's a match to a property string localFieldName = fieldName; - string? propertyMatch = Array.Find(properties, c => string.Equals(c, localFieldName, StringComparison.OrdinalIgnoreCase)); + string? propertyMatch = Array.Find(_headerKeys, c => string.Equals(c, localFieldName, StringComparison.OrdinalIgnoreCase)); if (propertyMatch is null) return false; @@ -504,6 +596,10 @@ namespace SabreTools.Metadata.Filter "disk" => _diskKeys, "diskarea" => _diskAreaKeys, "display" => _displayKeys, + "driver" => _driverKeys, + "extension" => _extensionKeys, + "feature" or "partfeature" => _featureKeys, + "info" => _infoKeys, _ => null, }; From b4be581879240f7796495e41b373845c1f15afe3 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Tue, 7 Apr 2026 09:12:27 -0400 Subject: [PATCH 135/142] Checkpoint reflection replacement --- .../DatFileTests.FromMetadata.cs | 2 + .../FilterObjectTests.cs | 188 ++++++++++++++++++ SabreTools.Metadata.Filter/FilterKey.cs | 107 ++++++++-- SabreTools.Metadata.Filter/FilterObject.cs | 1 + 4 files changed, 284 insertions(+), 14 deletions(-) diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs index f8ae9252..bf77eaaf 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs @@ -336,6 +336,7 @@ namespace SabreTools.Metadata.DatFiles.Test System = "system", Tags = "tags", TitleID = "titleid", + Url = "url", Video = [CreateMetadataVideo()], Year = "year", }; @@ -1113,6 +1114,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("system", machine.System); Assert.Equal("tags", machine.Tags); Assert.Equal("titleid", machine.TitleID); + Assert.Equal("url", machine.Url); Assert.Equal("year", machine.Year); string[]? categories = machine.Category; diff --git a/SabreTools.Metadata.Filter.Test/FilterObjectTests.cs b/SabreTools.Metadata.Filter.Test/FilterObjectTests.cs index 58baa327..ad1aabcb 100644 --- a/SabreTools.Metadata.Filter.Test/FilterObjectTests.cs +++ b/SabreTools.Metadata.Filter.Test/FilterObjectTests.cs @@ -1,5 +1,6 @@ using System; using SabreTools.Data.Models.Metadata; +using SabreTools.Hashing; using Xunit; namespace SabreTools.Metadata.Filter.Test @@ -1218,5 +1219,192 @@ namespace SabreTools.Metadata.Filter.Test } #endregion + + #region Input + + [Theory] + [InlineData("input.buttons", "12345")] + [InlineData("input.coins", "12345")] + [InlineData("input.control", "control")] + [InlineData("input.controlattr", "control")] + [InlineData("input.players", "12345")] + [InlineData("input.service", "yes")] + [InlineData("input.tilt", "yes")] + public void Matches_Input(string itemField, string value) + { + var filter = new FilterObject(itemField, value, Operation.Equals); + Input obj = new Input + { + Buttons = 12345, + Coins = 12345, + ControlAttr = "control", + Players = 12345, + Service = true, + Tilt = true, + }; + + bool actual = filter.Matches(obj); + Assert.True(actual); + } + + #endregion + + #region Instance + + [Theory] + [InlineData("instance.name", "name")] + public void Matches_Instance(string itemField, string value) + { + var filter = new FilterObject(itemField, value, Operation.Equals); + Instance obj = new Instance + { + Name = "name", + }; + + bool actual = filter.Matches(obj); + Assert.True(actual); + } + + #endregion + + #region Machine + + [Theory] + [InlineData("machine.board", "board")] + [InlineData("machine.buttons", "buttons")] + [InlineData("machine.category", "category")] + [InlineData("machine.cloneof", "cloneof")] + [InlineData("machine.comment", "comment")] + [InlineData("machine.company", "company")] + [InlineData("machine.control", "control")] + [InlineData("machine.crc", "crc")] + [InlineData("machine.country", "country")] + [InlineData("machine.description", "description")] + [InlineData("machine.developer", "developer")] + [InlineData("machine.dirname", "dirname")] + [InlineData("machine.displaycount", "displaycount")] + [InlineData("machine.displaytype", "displaytype")] + [InlineData("machine.duplicateid", "duplicateid")] + [InlineData("machine.emulator", "emulator")] + [InlineData("machine.enabled", "enabled")] + [InlineData("machine.extra", "extra")] + [InlineData("machine.favorite", "favorite")] + [InlineData("machine.genmsxid", "genmsxid")] + [InlineData("machine.genre", "genre")] + [InlineData("machine.hash", "hash")] + [InlineData("machine.history", "history")] + [InlineData("machine.id", "id")] + [InlineData("machine.im1crc", "00000000")] + [InlineData("machine.im2crc", "00000000")] + [InlineData("machine.imagenumber", "imagenumber")] + [InlineData("machine.isbios", "yes")] + [InlineData("machine.isdevice", "yes")] + [InlineData("machine.ismechanical", "yes")] + [InlineData("machine.language", "language")] + [InlineData("machine.location", "location")] + [InlineData("machine.manufacturer", "manufacturer")] + [InlineData("machine.name", "name")] + [InlineData("machine.notes", "notes")] + [InlineData("machine.playedcount", "playedcount")] + [InlineData("machine.playedtime", "playedtime")] + [InlineData("machine.players", "players")] + [InlineData("machine.publisher", "publisher")] + [InlineData("machine.ratings", "ratings")] + [InlineData("machine.rebuildto", "rebuildto")] + [InlineData("machine.relatedto", "relatedto")] + [InlineData("machine.releasenumber", "releasenumber")] + [InlineData("machine.romof", "romof")] + [InlineData("machine.rotation", "rotation")] + [InlineData("machine.runnable", "yes")] + [InlineData("machine.sampleof", "sampleof")] + [InlineData("machine.savetype", "savetype")] + [InlineData("machine.score", "score")] + [InlineData("machine.source", "source")] + [InlineData("machine.sourcefile", "sourcefile")] + [InlineData("machine.sourcerom", "sourcerom")] + [InlineData("machine.status", "status")] + [InlineData("machine.subgenre", "subgenre")] + [InlineData("machine.supported", "yes")] + [InlineData("machine.system", "system")] + [InlineData("machine.tags", "tags")] + [InlineData("machine.type", "bios")] + [InlineData("machine.type", "device")] + [InlineData("machine.type", "mechanical")] + [InlineData("machine.titleid", "titleid")] + [InlineData("machine.url", "url")] + [InlineData("machine.year", "year")] + public void Matches_Machine(string itemField, string value) + { + var filter = new FilterObject(itemField, value, Operation.Equals); + Machine obj = new Machine + { + Board = "board", + Buttons = "buttons", + Category = ["category"], + CloneOf = "cloneof", + CloneOfId = "cloneofid", + Comment = ["comment"], + Company = "company", + Control = "control", + CRC = "crc", + Country = "country", + Description = "description", + Developer = "developer", + DirName = "dirname", + DisplayCount = "displaycount", + DisplayType = "displaytype", + DuplicateID = "duplicateid", + Emulator = "emulator", + Enabled = "enabled", + Extra = "extra", + Favorite = "favorite", + GenMSXID = "genmsxid", + Genre = "genre", + Hash = "hash", + History = "history", + Id = "id", + Im1CRC = HashType.CRC32.ZeroString, + Im2CRC = HashType.CRC32.ZeroString, + ImageNumber = "imagenumber", + IsBios = true, + IsDevice = true, + IsMechanical = true, + Language = "language", + Location = "location", + Manufacturer = "manufacturer", + Name = "name", + Notes = "notes", + PlayedCount = "playedcount", + PlayedTime = "playedtime", + Players = "players", + Publisher = "publisher", + Ratings = "ratings", + RebuildTo = "rebuildto", + RelatedTo = "relatedto", + ReleaseNumber = "releasenumber", + RomOf = "romof", + Rotation = "rotation", + Runnable = Runnable.Yes, + SampleOf = "sampleof", + SaveType = "savetype", + Score = "score", + Source = "source", + SourceFile = "sourcefile", + SourceRom = "sourcerom", + Status = "status", + Subgenre = "subgenre", + Supported = Supported.Yes, + System = "system", + Tags = "tags", + TitleID = "titleid", + Url = "url", + Year = "year", + }; + + bool actual = filter.Matches(obj); + Assert.True(actual); + } + + #endregion } } diff --git a/SabreTools.Metadata.Filter/FilterKey.cs b/SabreTools.Metadata.Filter/FilterKey.cs index e215ae67..792b9f60 100644 --- a/SabreTools.Metadata.Filter/FilterKey.cs +++ b/SabreTools.Metadata.Filter/FilterKey.cs @@ -388,6 +388,96 @@ namespace SabreTools.Metadata.Filter "value", ]; + /// + /// Known keys for Input + /// + private static readonly string[] _inputKeys = + [ + "buttons", + "coins", + "control", + "controlattr", + "players", + "service", + "tilt", + ]; + + /// + /// Known keys for Instance + /// + private static readonly string[] _instanceKeys = + [ + "name", + ]; + + /// + /// Known keys for Machine + /// + private static readonly string[] _machineKeys = + [ + "board", + "buttons", + "category", + "cloneof", + "comment", + "company", + "control", + "crc", + "country", + "description", + "developer", + "dirname", + "displaycount", + "displaytype", + "duplicateid", + "emulator", + "enabled", + "extra", + "favorite", + "genmsxid", + "genre", + "hash", + "history", + "id", + "im1crc", + "im2crc", + "imagenumber", + "isbios", + "isdevice", + "ismechanical", + "language", + "location", + "manufacturer", + "name", + "notes", + "playedcount", + "playedtime", + "players", + "publisher", + "ratings", + "rebuildto", + "relatedto", + "releasenumber", + "romof", + "rotation", + "runnable", + "sampleof", + "savetype", + "score", + "source", + "sourcefile", + "sourcerom", + "status", + "subgenre", + "supported", + "system", + "tags", + "titleid", + "type", + "url", + "year", + ]; + #endregion /// @@ -490,22 +580,9 @@ namespace SabreTools.Metadata.Filter /// private static bool ParseMachineFilterId(ref string itemName, ref string fieldName) { - // Special case for machine type - if (string.Equals(fieldName, "type", StringComparison.OrdinalIgnoreCase)) - { - itemName = "machine"; - fieldName = "type"; - return true; - } - - // Get the set of properties - var properties = GetProperties(typeof(Machine)); - if (properties is null) - return false; - // Get if there's a match to a property string localFieldName = fieldName; - string? propertyMatch = Array.Find(properties, c => string.Equals(c, localFieldName, StringComparison.OrdinalIgnoreCase)); + string? propertyMatch = Array.Find(_machineKeys, c => string.Equals(c, localFieldName, StringComparison.OrdinalIgnoreCase)); if (propertyMatch is null) return false; @@ -600,6 +677,8 @@ namespace SabreTools.Metadata.Filter "extension" => _extensionKeys, "feature" or "partfeature" => _featureKeys, "info" => _infoKeys, + "input" => _inputKeys, + "instance" => _instanceKeys, _ => null, }; diff --git a/SabreTools.Metadata.Filter/FilterObject.cs b/SabreTools.Metadata.Filter/FilterObject.cs index e011ddfa..b5995153 100644 --- a/SabreTools.Metadata.Filter/FilterObject.cs +++ b/SabreTools.Metadata.Filter/FilterObject.cs @@ -1348,6 +1348,7 @@ namespace SabreTools.Metadata.Filter case "coins": checkValue = obj.Coins?.ToString(); return true; + case "control": case "controlattr": checkValue = obj.ControlAttr; return true; From 278bfafae51bea4978ff2be02665bda1d32264ed Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Tue, 7 Apr 2026 09:24:23 -0400 Subject: [PATCH 136/142] Checkpoint reflection replacement --- .../FilterObjectTests.cs | 84 +++++++++++++++++++ SabreTools.Metadata.Filter/FilterKey.cs | 44 ++++++++++ 2 files changed, 128 insertions(+) diff --git a/SabreTools.Metadata.Filter.Test/FilterObjectTests.cs b/SabreTools.Metadata.Filter.Test/FilterObjectTests.cs index ad1aabcb..6cb95ee8 100644 --- a/SabreTools.Metadata.Filter.Test/FilterObjectTests.cs +++ b/SabreTools.Metadata.Filter.Test/FilterObjectTests.cs @@ -1406,5 +1406,89 @@ namespace SabreTools.Metadata.Filter.Test } #endregion + + #region Media + + [Theory] + [InlineData("media.md5", "md5")] + [InlineData("media.name", "name")] + [InlineData("media.sha1", "sha1")] + [InlineData("media.sha256", "sha256")] + [InlineData("media.spamsum", "spamsum")] + public void Matches_Media(string itemField, string value) + { + var filter = new FilterObject(itemField, value, Operation.Equals); + Media obj = new Media + { + MD5 = "md5", + Name = "name", + SHA1 = "sha1", + SHA256 = "sha256", + SpamSum = "spamsum", + }; + + bool actual = filter.Matches(obj); + Assert.True(actual); + } + + #endregion + + #region Original + + [Theory] + [InlineData("original.content", "content")] + [InlineData("original.value", "yes")] + public void Matches_Original(string itemField, string value) + { + var filter = new FilterObject(itemField, value, Operation.Equals); + Original obj = new Original + { + Content = "content", + Value = true, + }; + + bool actual = filter.Matches(obj); + Assert.True(actual); + } + + #endregion + + #region Part + + [Theory] + [InlineData("part.interface", "interface")] + [InlineData("part.name", "name")] + public void Matches_Part(string itemField, string value) + { + var filter = new FilterObject(itemField, value, Operation.Equals); + Part obj = new Part + { + Interface = "interface", + Name = "name", + }; + + bool actual = filter.Matches(obj); + Assert.True(actual); + } + + #endregion + + #region Port + + [Theory] + [InlineData("port.tag", "tag")] + public void Matches_Port(string itemField, string value) + { + var filter = new FilterObject(itemField, value, Operation.Equals); + Port obj = new Port + { + Tag = "tag", + }; + + bool actual = filter.Matches(obj); + Assert.True(actual); + } + + #endregion } } diff --git a/SabreTools.Metadata.Filter/FilterKey.cs b/SabreTools.Metadata.Filter/FilterKey.cs index 792b9f60..4e35717a 100644 --- a/SabreTools.Metadata.Filter/FilterKey.cs +++ b/SabreTools.Metadata.Filter/FilterKey.cs @@ -478,6 +478,44 @@ namespace SabreTools.Metadata.Filter "year", ]; + /// + /// Known keys for Media + /// + private static readonly string[] _mediaKeys = + [ + "md5", + "name", + "sha1", + "sha256", + "spamsum", + ]; + + /// + /// Known keys for Original + /// + private static readonly string[] _originalKeys = + [ + "content", + "value", + ]; + + /// + /// Known keys for Part + /// + private static readonly string[] _partKeys = + [ + "interface", + "name", + ]; + + /// + /// Known keys for Port + /// + private static readonly string[] _portKeys = + [ + "tag", + ]; + #endregion /// @@ -676,9 +714,15 @@ namespace SabreTools.Metadata.Filter "driver" => _driverKeys, "extension" => _extensionKeys, "feature" or "partfeature" => _featureKeys, + "game" or "machine" or "resource" or "set" => _machineKeys, + "header" => _headerKeys, "info" => _infoKeys, "input" => _inputKeys, "instance" => _instanceKeys, + "media" => _mediaKeys, + "original" => _originalKeys, + "part" => _partKeys, + "port" => _portKeys, _ => null, }; From 3412bbf33ae372f2e7df7e7d9b45fcde28fc77e3 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Tue, 7 Apr 2026 09:36:43 -0400 Subject: [PATCH 137/142] Checkpoint reflection replacement --- .../FilterObjectTests.cs | 96 +++++++++++++++++++ SabreTools.Metadata.Filter/FilterKey.cs | 48 ++++++++++ 2 files changed, 144 insertions(+) diff --git a/SabreTools.Metadata.Filter.Test/FilterObjectTests.cs b/SabreTools.Metadata.Filter.Test/FilterObjectTests.cs index 6cb95ee8..02207af0 100644 --- a/SabreTools.Metadata.Filter.Test/FilterObjectTests.cs +++ b/SabreTools.Metadata.Filter.Test/FilterObjectTests.cs @@ -1490,5 +1490,101 @@ namespace SabreTools.Metadata.Filter.Test } #endregion + + #region RamOption + + [Theory] + [InlineData("ramoption.content", "content")] + [InlineData("ramoption.default", "yes")] + [InlineData("ramoption.name", "name")] + public void Matches_RamOption(string itemField, string value) + { + var filter = new FilterObject(itemField, value, Operation.Equals); + RamOption obj = new RamOption + { + Content = "content", + Default = true, + Name = "name", + }; + + bool actual = filter.Matches(obj); + Assert.True(actual); + } + + #endregion + + #region Release + + [Theory] + [InlineData("release.date", "date")] + [InlineData("release.default", "yes")] + [InlineData("release.language", "language")] + [InlineData("release.name", "name")] + [InlineData("release.region", "region")] + public void Matches_Release(string itemField, string value) + { + var filter = new FilterObject(itemField, value, Operation.Equals); + Release obj = new Release + { + Date = "date", + Default = true, + Language = "language", + Name = "name", + Region = "region", + }; + + bool actual = filter.Matches(obj); + Assert.True(actual); + } + + #endregion + + #region ReleaseDetails + + [Theory] + [InlineData("releasedetails.appendtonumber", "appendtonumber")] + [InlineData("releasedetails.archivename", "archivename")] + [InlineData("releasedetails.category", "category")] + [InlineData("releasedetails.comment", "comment")] + [InlineData("releasedetails.date", "date")] + [InlineData("releasedetails.dirname", "dirname")] + [InlineData("releasedetails.group", "group")] + [InlineData("releasedetails.id", "id")] + [InlineData("releasedetails.nfocrc", "nfocrc")] + [InlineData("releasedetails.nfoname", "nfoname")] + [InlineData("releasedetails.nfosize", "nfosize")] + [InlineData("releasedetails.origin", "origin")] + [InlineData("releasedetails.originalformat", "originalformat")] + [InlineData("releasedetails.region", "region")] + [InlineData("releasedetails.rominfo", "rominfo")] + [InlineData("releasedetails.tool", "tool")] + public void Matches_ReleaseDetails(string itemField, string value) + { + var filter = new FilterObject(itemField, value, Operation.Equals); + ReleaseDetails obj = new ReleaseDetails + { + AppendToNumber = "appendtonumber", + ArchiveName = "archivename", + Category = "category", + Comment = "comment", + Date = "date", + DirName = "dirname", + Group = "group", + Id = "id", + NfoCRC = "nfocrc", + NfoName = "nfoname", + NfoSize = "nfosize", + Origin = "origin", + OriginalFormat = "originalformat", + Region = "region", + RomInfo = "rominfo", + Tool = "tool", + }; + + bool actual = filter.Matches(obj); + Assert.True(actual); + } + + #endregion } } diff --git a/SabreTools.Metadata.Filter/FilterKey.cs b/SabreTools.Metadata.Filter/FilterKey.cs index 4e35717a..da454a00 100644 --- a/SabreTools.Metadata.Filter/FilterKey.cs +++ b/SabreTools.Metadata.Filter/FilterKey.cs @@ -516,6 +516,51 @@ namespace SabreTools.Metadata.Filter "tag", ]; + /// + /// Known keys for RamOption + /// + private static readonly string[] _ramOptionKeys = + [ + "content", + "default", + "name", + ]; + + /// + /// Known keys for Release + /// + private static readonly string[] _releaseKeys = + [ + "date", + "default", + "language", + "name", + "region", + ]; + + /// + /// Known keys ReleaseDetails Release + /// + private static readonly string[] _releaseDetailsKeys = + [ + "appendtonumber", + "archivename", + "category", + "comment", + "date", + "dirname", + "group", + "id", + "nfocrc", + "nfoname", + "nfosize", + "origin", + "originalformat", + "region", + "rominfo", + "tool", + ]; + #endregion /// @@ -723,6 +768,9 @@ namespace SabreTools.Metadata.Filter "original" => _originalKeys, "part" => _partKeys, "port" => _portKeys, + "ramoption" => _ramOptionKeys, + "release" => _releaseKeys, + "releasedetails" => _releaseDetailsKeys, _ => null, }; From 18b3152a6c65605a39f6da9b3b9eaa832cd599b9 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Tue, 7 Apr 2026 10:14:54 -0400 Subject: [PATCH 138/142] Checkpoint reflection replacement --- .../FilterObjectTests.cs | 250 ++++++++++++++++++ SabreTools.Metadata.Filter/FilterKey.cs | 148 ++++++++++- SabreTools.Metadata.Filter/FilterObject.cs | 47 +++- 3 files changed, 441 insertions(+), 4 deletions(-) diff --git a/SabreTools.Metadata.Filter.Test/FilterObjectTests.cs b/SabreTools.Metadata.Filter.Test/FilterObjectTests.cs index 02207af0..3e6d69c1 100644 --- a/SabreTools.Metadata.Filter.Test/FilterObjectTests.cs +++ b/SabreTools.Metadata.Filter.Test/FilterObjectTests.cs @@ -1586,5 +1586,255 @@ namespace SabreTools.Metadata.Filter.Test } #endregion + + #region Rom + + [Theory] + [InlineData("rom.album", "album")] + [InlineData("rom.alt_romname", "alt_romname")] + [InlineData("rom.altromname", "alt_romname")] + [InlineData("rom.alt_title", "alt_title")] + [InlineData("rom.alttitle", "alt_title")] + [InlineData("rom.artist", "artist")] + [InlineData("rom.asr_detected_lang", "asr_detected_lang")] + [InlineData("rom.asrdetectedlang", "asr_detected_lang")] + [InlineData("rom.asr_detected_lang_conf", "asr_detected_lang_conf")] + [InlineData("rom.asrdetectedlangconf", "asr_detected_lang_conf")] + [InlineData("rom.asr_transcribed_lang", "asr_transcribed_lang")] + [InlineData("rom.asrtranscribedlang", "asr_transcribed_lang")] + [InlineData("rom.bios", "bios")] + [InlineData("rom.bitrate", "bitrate")] + [InlineData("rom.bittorrentmagnethash", "btih")] + [InlineData("rom.btih", "btih")] + [InlineData("rom.cloth_cover_detection_module_version", "cloth_cover_detection_module_version")] + [InlineData("rom.clothcoverdetectionmoduleversion", "cloth_cover_detection_module_version")] + [InlineData("rom.collection-catalog-number", "collection-catalog-number")] + [InlineData("rom.collectioncatalognumber", "collection-catalog-number")] + [InlineData("rom.comment", "comment")] + [InlineData("rom.crc16", "0000")] + [InlineData("rom.crc", "00000000")] + [InlineData("rom.crc32", "00000000")] + [InlineData("rom.crc64", "0000000000000000")] + [InlineData("rom.creator", "creator")] + [InlineData("rom.date", "date")] + [InlineData("rom.dispose", "yes")] + [InlineData("rom.extension", "extension")] + [InlineData("rom.filecount", "12345")] + [InlineData("rom.fileisavailable", "yes")] + [InlineData("rom.flags", "flags")] + [InlineData("rom.format", "format")] + [InlineData("rom.header", "header")] + [InlineData("rom.height", "height")] + [InlineData("rom.hocr_char_to_word_hocr_version", "hocr_char_to_word_hocr_version")] + [InlineData("rom.hocrchartowordhocrversion", "hocr_char_to_word_hocr_version")] + [InlineData("rom.hocr_char_to_word_module_version", "hocr_char_to_word_module_version")] + [InlineData("rom.hocrchartowordmoduleversion", "hocr_char_to_word_module_version")] + [InlineData("rom.hocr_fts_text_hocr_version", "hocr_fts_text_hocr_version")] + [InlineData("rom.hocrftstexthocrversion", "hocr_fts_text_hocr_version")] + [InlineData("rom.hocr_fts_text_module_version", "hocr_fts_text_module_version")] + [InlineData("rom.hocrftstextmoduleversion", "hocr_fts_text_module_version")] + [InlineData("rom.hocr_pageindex_hocr_version", "hocr_pageindex_hocr_version")] + [InlineData("rom.hocrpageindexhocrversion", "hocr_pageindex_hocr_version")] + [InlineData("rom.hocr_pageindex_module_version", "hocr_pageindex_module_version")] + [InlineData("rom.hocrpageindexmoduleversion", "hocr_pageindex_module_version")] + [InlineData("rom.inverted", "yes")] + [InlineData("rom.mtime", "mtime")] + [InlineData("rom.lastmodifiedtime", "mtime")] + [InlineData("rom.length", "length")] + [InlineData("rom.loadflag", "load16_byte")] + [InlineData("rom.matrix_number", "matrix_number")] + [InlineData("rom.matrixnumber", "matrix_number")] + [InlineData("rom.md2", "8350e5a3e24c153df2275c9f80692773")] + [InlineData("rom.md4", "31d6cfe0d16ae931b73c59d7e0c089c0")] + [InlineData("rom.md5", "d41d8cd98f00b204e9800998ecf8427e")] + [InlineData("rom.mediatype", "megarom")] + [InlineData("rom.openmsxmediatype", "megarom")] + [InlineData("rom.merge", "merge")] + [InlineData("rom.mia", "yes")] + [InlineData("rom.name", "name")] + [InlineData("rom.offset", "offset")] + [InlineData("rom.openmsxtype", "type")] + [InlineData("rom.optional", "yes")] + [InlineData("rom.original", "original")] + [InlineData("rom.pdf_module_version", "pdf_module_version")] + [InlineData("rom.pdfmoduleversion", "pdf_module_version")] + [InlineData("rom.preview-image", "preview-image")] + [InlineData("rom.previewimage", "preview-image")] + [InlineData("rom.publisher", "publisher")] + [InlineData("rom.region", "region")] + [InlineData("rom.remark", "remark")] + [InlineData("rom.ripemd128", "cdf26213a150dc3ecb610f18f6b38b46")] + [InlineData("rom.ripemd160", "9c1185a5c5e9fc54612808977ee8f548b2258d31")] + [InlineData("rom.rotation", "rotation")] + [InlineData("rom.serial", "serial")] + [InlineData("rom.sha1", "da39a3ee5e6b4b0d3255bfef95601890afd80709")] + [InlineData("rom.sha256", "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855")] + [InlineData("rom.sha384", "38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b")] + [InlineData("rom.sha512", "cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e")] + [InlineData("rom.size", "12345")] + [InlineData("rom.soundonly", "yes")] + [InlineData("rom.source", "source")] + [InlineData("rom.spamsum", "3::")] + [InlineData("rom.start", "start")] + [InlineData("rom.status", "good")] + [InlineData("rom.summation", "summation")] + [InlineData("rom.ocr", "ocr")] + [InlineData("rom.tesseractocr", "ocr")] + [InlineData("rom.ocr_converted", "ocr_converted")] + [InlineData("rom.tesseractocrconverted", "ocr_converted")] + [InlineData("rom.ocr_detected_lang", "ocr_detected_lang")] + [InlineData("rom.tesseractocrdetectedlang", "ocr_detected_lang")] + [InlineData("rom.ocr_detected_lang_conf", "ocr_detected_lang_conf")] + [InlineData("rom.tesseractocrdetectedlangconf", "ocr_detected_lang_conf")] + [InlineData("rom.ocr_detected_script", "ocr_detected_script")] + [InlineData("rom.tesseractocrdetectedscript", "ocr_detected_script")] + [InlineData("rom.ocr_detected_script_conf", "ocr_detected_script_conf")] + [InlineData("rom.tesseractocrdetectedscriptconf", "ocr_detected_script_conf")] + [InlineData("rom.ocr_module_version", "ocr_module_version")] + [InlineData("rom.tesseractocrmoduleversion", "ocr_module_version")] + [InlineData("rom.ocr_parameters", "ocr_parameters")] + [InlineData("rom.tesseractocrparameters", "ocr_parameters")] + [InlineData("rom.title", "title")] + [InlineData("rom.track", "track")] + [InlineData("rom.value", "value")] + [InlineData("rom.whisper_asr_module_version", "whisper_asr_module_version")] + [InlineData("rom.whisperasrmoduleversion", "whisper_asr_module_version")] + [InlineData("rom.whisper_model_hash", "whisper_model_hash")] + [InlineData("rom.whispermodelhash", "whisper_model_hash")] + [InlineData("rom.whisper_model_name", "whisper_model_name")] + [InlineData("rom.whispermodelname", "whisper_model_name")] + [InlineData("rom.whisper_version", "whisper_version")] + [InlineData("rom.whisperversion", "whisper_version")] + [InlineData("rom.width", "width")] + [InlineData("rom.word_conf_0_10", "word_conf_0_10")] + [InlineData("rom.wordconfidenceinterval0to10", "word_conf_0_10")] + [InlineData("rom.word_conf_11_20", "word_conf_11_20")] + [InlineData("rom.wordconfidenceinterval11to20", "word_conf_11_20")] + [InlineData("rom.word_conf_21_30", "word_conf_21_30")] + [InlineData("rom.wordconfidenceinterval21to30", "word_conf_21_30")] + [InlineData("rom.word_conf_31_40", "word_conf_31_40")] + [InlineData("rom.wordconfidenceinterval31to40", "word_conf_31_40")] + [InlineData("rom.word_conf_41_50", "word_conf_41_50")] + [InlineData("rom.wordconfidenceinterval41to50", "word_conf_41_50")] + [InlineData("rom.word_conf_51_60", "word_conf_51_60")] + [InlineData("rom.wordconfidenceinterval51to60", "word_conf_51_60")] + [InlineData("rom.word_conf_61_70", "word_conf_61_70")] + [InlineData("rom.wordconfidenceinterval61to70", "word_conf_61_70")] + [InlineData("rom.word_conf_71_80", "word_conf_71_80")] + [InlineData("rom.wordconfidenceinterval71to80", "word_conf_71_80")] + [InlineData("rom.word_conf_81_90", "word_conf_81_90")] + [InlineData("rom.wordconfidenceinterval81to90", "word_conf_81_90")] + [InlineData("rom.word_conf_91_100", "word_conf_91_100")] + [InlineData("rom.wordconfidenceinterval91to100", "word_conf_91_100")] + [InlineData("rom.xxhash364", "2d06800538d394c2")] + [InlineData("rom.xxhash3128", "99aa06d3014798d86001c324468d497f")] + public void Matches_Rom(string itemField, string value) + { + var filter = new FilterObject(itemField, value, Operation.Equals); + Rom obj = new Rom + { + Album = "album", + AltRomname = "alt_romname", + AltTitle = "alt_title", + Artist = "artist", + ASRDetectedLang = "asr_detected_lang", + ASRDetectedLangConf = "asr_detected_lang_conf", + ASRTranscribedLang = "asr_transcribed_lang", + Bios = "bios", + Bitrate = "bitrate", + BitTorrentMagnetHash = "btih", + ClothCoverDetectionModuleVersion = "cloth_cover_detection_module_version", + CollectionCatalogNumber = "collection-catalog-number", + Comment = "comment", + CRC16 = HashType.CRC16.ZeroString, + CRC32 = HashType.CRC32.ZeroString, + CRC64 = HashType.CRC64.ZeroString, + Creator = "creator", + Date = "date", + Dispose = true, + Extension = "extension", + FileCount = 12345, + FileIsAvailable = true, + Flags = "flags", + Format = "format", + Header = "header", + Height = "height", + hOCRCharToWordhOCRVersion = "hocr_char_to_word_hocr_version", + hOCRCharToWordModuleVersion = "hocr_char_to_word_module_version", + hOCRFtsTexthOCRVersion = "hocr_fts_text_hocr_version", + hOCRFtsTextModuleVersion = "hocr_fts_text_module_version", + hOCRPageIndexhOCRVersion = "hocr_pageindex_hocr_version", + hOCRPageIndexModuleVersion = "hocr_pageindex_module_version", + Inverted = true, + LastModifiedTime = "mtime", + Length = "length", + LoadFlag = LoadFlag.Load16Byte, + MatrixNumber = "matrix_number", + MD2 = HashType.MD2.ZeroString, + MD4 = HashType.MD4.ZeroString, + MD5 = HashType.MD5.ZeroString, + Merge = "merge", + MIA = true, + Name = "name", + Offset = "offset", + OpenMSXMediaType = OpenMSXSubType.MegaRom, + OpenMSXType = "type", + Optional = true, + Original = "original", + PDFModuleVersion = "pdf_module_version", + PreviewImage = "preview-image", + Publisher = "publisher", + Region = "region", + Remark = "remark", + RIPEMD128 = HashType.RIPEMD128.ZeroString, + RIPEMD160 = HashType.RIPEMD160.ZeroString, + Rotation = "rotation", + Serial = "serial", + SHA1 = HashType.SHA1.ZeroString, + SHA256 = HashType.SHA256.ZeroString, + SHA384 = HashType.SHA384.ZeroString, + SHA512 = HashType.SHA512.ZeroString, + Size = 12345, + SoundOnly = true, + Source = "source", + SpamSum = HashType.SpamSum.ZeroString, + Start = "start", + Status = ItemStatus.Good, + Summation = "summation", + TesseractOCR = "ocr", + TesseractOCRConverted = "ocr_converted", + TesseractOCRDetectedLang = "ocr_detected_lang", + TesseractOCRDetectedLangConf = "ocr_detected_lang_conf", + TesseractOCRDetectedScript = "ocr_detected_script", + TesseractOCRDetectedScriptConf = "ocr_detected_script_conf", + TesseractOCRModuleVersion = "ocr_module_version", + TesseractOCRParameters = "ocr_parameters", + Title = "title", + Track = "track", + Value = "value", + WhisperASRModuleVersion = "whisper_asr_module_version", + WhisperModelHash = "whisper_model_hash", + WhisperModelName = "whisper_model_name", + WhisperVersion = "whisper_version", + Width = "width", + WordConfidenceInterval0To10 = "word_conf_0_10", + WordConfidenceInterval11To20 = "word_conf_11_20", + WordConfidenceInterval21To30 = "word_conf_21_30", + WordConfidenceInterval31To40 = "word_conf_31_40", + WordConfidenceInterval41To50 = "word_conf_41_50", + WordConfidenceInterval51To60 = "word_conf_51_60", + WordConfidenceInterval61To70 = "word_conf_61_70", + WordConfidenceInterval71To80 = "word_conf_71_80", + WordConfidenceInterval81To90 = "word_conf_81_90", + WordConfidenceInterval91To100 = "word_conf_91_100", + xxHash364 = HashType.XxHash3.ZeroString, + xxHash3128 = HashType.XxHash128.ZeroString, + }; + + bool actual = filter.Matches(obj); + Assert.True(actual); + } + + #endregion } } diff --git a/SabreTools.Metadata.Filter/FilterKey.cs b/SabreTools.Metadata.Filter/FilterKey.cs index da454a00..a357f711 100644 --- a/SabreTools.Metadata.Filter/FilterKey.cs +++ b/SabreTools.Metadata.Filter/FilterKey.cs @@ -539,7 +539,7 @@ namespace SabreTools.Metadata.Filter ]; /// - /// Known keys ReleaseDetails Release + /// Known keys for ReleaseDetails /// private static readonly string[] _releaseDetailsKeys = [ @@ -561,6 +561,151 @@ namespace SabreTools.Metadata.Filter "tool", ]; + /// + /// Known keys for Rom + /// + private static readonly string[] _romKeys = + [ + "album", + "alt_romname", + "alt_title", + "altromname", + "alttitle", + "artist", + "asr_detected_lang", + "asr_detected_lang_conf", + "asr_transcribed_lang", + "asrdetectedlang", + "asrdetectedlangconf", + "asrtranscribedlang", + "bios", + "bitrate", + "bittorrentmagnethash", + "btih", + "cloth_cover_detection_module_version", + "clothcoverdetectionmoduleversion", + "collection-catalog-number", + "collectioncatalognumber", + "comment", + "crc", + "crc16", + "crc32", + "crc64", + "creator", + "date", + "dispose", + "extension", + "filecount", + "fileisavailable", + "flags", + "format", + "header", + "height", + "hocr_char_to_word_hocr_version", + "hocr_char_to_word_module_version", + "hocr_fts_text_hocr_version", + "hocr_fts_text_module_version", + "hocr_pageindex_hocr_version", + "hocr_pageindex_module_version", + "hocrchartowordhocrversion", + "hocrchartowordmoduleversion", + "hocrftstexthocrversion", + "hocrftstextmoduleversion", + "hocrpageindexhocrversion", + "hocrpageindexmoduleversion", + "inverted", + "lastmodifiedtime", + "length", + "loadflag", + "matrix_number", + "matrixnumber", + "md2", + "md4", + "md5", + "mediatype", + "merge", + "mia", + "mtime", + "name", + "ocr", + "ocr_converted", + "ocr_detected_lang", + "ocr_detected_lang_conf", + "ocr_detected_script", + "ocr_detected_script_conf", + "ocr_module_version", + "ocr_parameters", + "offset", + "openmsxmediatype", + "openmsxtype", + "optional", + "original", + "pdf_module_version", + "pdfmoduleversion", + "preview-image", + "previewimage", + "publisher", + "region", + "remark", + "ripemd128", + "ripemd160", + "rotation", + "serial", + "sha1", + "sha256", + "sha384", + "sha512", + "size", + "soundonly", + "source", + "spamsum", + "start", + "status", + "summation", + "tesseractocr", + "tesseractocrconverted", + "tesseractocrdetectedlang", + "tesseractocrdetectedlangconf", + "tesseractocrdetectedscript", + "tesseractocrdetectedscriptconf", + "tesseractocrmoduleversion", + "tesseractocrparameters", + "title", + "track", + "value", + "whisper_asr_module_version", + "whisper_model_hash", + "whisper_model_name", + "whisper_version", + "whisperasrmoduleversion", + "whispermodelhash", + "whispermodelname", + "whisperversion", + "width", + "word_conf_0_10", + "word_conf_11_20", + "word_conf_21_30", + "word_conf_31_40", + "word_conf_41_50", + "word_conf_51_60", + "word_conf_61_70", + "word_conf_71_80", + "word_conf_81_90", + "word_conf_91_100", + "wordconfidenceinterval0to10", + "wordconfidenceinterval11to20", + "wordconfidenceinterval21to30", + "wordconfidenceinterval31to40", + "wordconfidenceinterval41to50", + "wordconfidenceinterval51to60", + "wordconfidenceinterval61to70", + "wordconfidenceinterval71to80", + "wordconfidenceinterval81to90", + "wordconfidenceinterval91to100", + "xxhash3128", + "xxhash364", + ]; + #endregion /// @@ -771,6 +916,7 @@ namespace SabreTools.Metadata.Filter "ramoption" => _ramOptionKeys, "release" => _releaseKeys, "releasedetails" => _releaseDetailsKeys, + "rom" => _romKeys, _ => null, }; diff --git a/SabreTools.Metadata.Filter/FilterObject.cs b/SabreTools.Metadata.Filter/FilterObject.cs index b5995153..721584fd 100644 --- a/SabreTools.Metadata.Filter/FilterObject.cs +++ b/SabreTools.Metadata.Filter/FilterObject.cs @@ -1802,21 +1802,26 @@ namespace SabreTools.Metadata.Filter case "album": checkValue = obj.Album; return true; + case "alt_romname": case "altromname": checkValue = obj.AltRomname; return true; + case "alt_title": case "alttitle": checkValue = obj.AltTitle; return true; case "artist": checkValue = obj.Artist; return true; + case "asr_detected_lang": case "asrdetectedlang": checkValue = obj.ASRDetectedLang; return true; + case "asr_detected_lang_conf": case "asrdetectedlangconf": checkValue = obj.ASRDetectedLangConf; return true; + case "asr_transcribed_lang": case "asrtranscribedlang": checkValue = obj.ASRTranscribedLang; return true; @@ -1826,12 +1831,15 @@ namespace SabreTools.Metadata.Filter case "bitrate": checkValue = obj.Bitrate; return true; + case "btih": case "bittorrentmagnethash": checkValue = obj.BitTorrentMagnetHash; return true; + case "cloth_cover_detection_module_version": case "clothcoverdetectionmoduleversion": checkValue = obj.ClothCoverDetectionModuleVersion; return true; + case "collection-catalog-number": case "collectioncatalognumber": checkValue = obj.CollectionCatalogNumber; return true; @@ -1878,27 +1886,34 @@ namespace SabreTools.Metadata.Filter case "height": checkValue = obj.Height; return true; + case "hocr_char_to_word_hocr_version": case "hocrchartowordhocrversion": checkValue = obj.hOCRCharToWordhOCRVersion; return true; + case "hocr_char_to_word_module_version": case "hocrchartowordmoduleversion": checkValue = obj.hOCRCharToWordModuleVersion; return true; + case "hocr_fts_text_hocr_version": case "hocrftstexthocrversion": checkValue = obj.hOCRFtsTexthOCRVersion; return true; + case "hocr_fts_text_module_version": case "hocrftstextmoduleversion": checkValue = obj.hOCRFtsTextModuleVersion; return true; + case "hocr_pageindex_hocr_version": case "hocrpageindexhocrversion": checkValue = obj.hOCRPageIndexhOCRVersion; return true; + case "hocr_pageindex_module_version": case "hocrpageindexmoduleversion": checkValue = obj.hOCRPageIndexModuleVersion; return true; case "inverted": checkValue = obj.Inverted.FromYesNo(); return true; + case "mtime": case "lastmodifiedtime": checkValue = obj.LastModifiedTime; return true; @@ -1908,6 +1923,7 @@ namespace SabreTools.Metadata.Filter case "loadflag": checkValue = obj.LoadFlag?.AsStringValue(); return true; + case "matrix_number": case "matrixnumber": checkValue = obj.MatrixNumber; return true; @@ -1921,6 +1937,7 @@ namespace SabreTools.Metadata.Filter checkValue = obj.MD5; return true; case "mediatype": + case "openmsxmediatype": checkValue = obj.OpenMSXMediaType?.AsStringValue(); return true; case "merge": @@ -1935,15 +1952,20 @@ namespace SabreTools.Metadata.Filter case "offset": checkValue = obj.Offset; return true; + case "openmsxtype": + checkValue = obj.OpenMSXType; + return true; case "optional": checkValue = obj.Optional.FromYesNo(); return true; case "original": checkValue = obj.Original; return true; + case "pdf_module_version": case "pdfmoduleversion": checkValue = obj.PDFModuleVersion; return true; + case "preview-image": case "previewimage": checkValue = obj.PreviewImage; return true; @@ -2001,27 +2023,35 @@ namespace SabreTools.Metadata.Filter case "summation": checkValue = obj.Summation; return true; + case "ocr": case "tesseractocr": checkValue = obj.TesseractOCR; return true; + case "ocr_converted": case "tesseractocrconverted": checkValue = obj.TesseractOCRConverted; return true; + case "ocr_detected_lang": case "tesseractocrdetectedlang": checkValue = obj.TesseractOCRDetectedLang; return true; + case "ocr_detected_lang_conf": case "tesseractocrdetectedlangconf": checkValue = obj.TesseractOCRDetectedLangConf; return true; + case "ocr_detected_script": case "tesseractocrdetectedscript": checkValue = obj.TesseractOCRDetectedScript; return true; + case "ocr_detected_script_conf": case "tesseractocrdetectedscriptconf": checkValue = obj.TesseractOCRDetectedScriptConf; return true; + case "ocr_module_version": case "tesseractocrmoduleversion": checkValue = obj.TesseractOCRModuleVersion; return true; + case "ocr_parameters": case "tesseractocrparameters": checkValue = obj.TesseractOCRParameters; return true; @@ -2031,54 +2061,65 @@ namespace SabreTools.Metadata.Filter case "track": checkValue = obj.Track; return true; - case "openmsxtype": - checkValue = obj.OpenMSXType; - return true; case "value": checkValue = obj.Value; return true; + case "whisper_asr_module_version": case "whisperasrmoduleversion": checkValue = obj.WhisperASRModuleVersion; return true; + case "whisper_model_hash": case "whispermodelhash": checkValue = obj.WhisperModelHash; return true; + case "whisper_model_name": case "whispermodelname": checkValue = obj.WhisperModelName; return true; + case "whisper_version": case "whisperversion": checkValue = obj.WhisperVersion; return true; case "width": checkValue = obj.Width; return true; + case "word_conf_0_10": case "wordconfidenceinterval0to10": checkValue = obj.WordConfidenceInterval0To10; return true; + case "word_conf_11_20": case "wordconfidenceinterval11to20": checkValue = obj.WordConfidenceInterval11To20; return true; + case "word_conf_21_30": case "wordconfidenceinterval21to30": checkValue = obj.WordConfidenceInterval21To30; return true; + case "word_conf_31_40": case "wordconfidenceinterval31to40": checkValue = obj.WordConfidenceInterval31To40; return true; + case "word_conf_41_50": case "wordconfidenceinterval41to50": checkValue = obj.WordConfidenceInterval41To50; return true; + case "word_conf_51_60": case "wordconfidenceinterval51to60": checkValue = obj.WordConfidenceInterval51To60; return true; + case "word_conf_61_70": case "wordconfidenceinterval61to70": checkValue = obj.WordConfidenceInterval61To70; return true; + case "word_conf_71_80": case "wordconfidenceinterval71to80": checkValue = obj.WordConfidenceInterval71To80; return true; + case "word_conf_81_90": case "wordconfidenceinterval81to90": checkValue = obj.WordConfidenceInterval81To90; return true; + case "word_conf_91_100": case "wordconfidenceinterval91to100": checkValue = obj.WordConfidenceInterval91To100; return true; From 6ba4a5b3abed87137553671f20c1d05a8840a808 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Tue, 7 Apr 2026 10:26:58 -0400 Subject: [PATCH 139/142] Checkpoint reflection replacement --- .../FilterObjectTests.cs | 62 +++++++++++++++++++ SabreTools.Metadata.Filter/FilterKey.cs | 31 ++++++++++ 2 files changed, 93 insertions(+) diff --git a/SabreTools.Metadata.Filter.Test/FilterObjectTests.cs b/SabreTools.Metadata.Filter.Test/FilterObjectTests.cs index 3e6d69c1..740cd32a 100644 --- a/SabreTools.Metadata.Filter.Test/FilterObjectTests.cs +++ b/SabreTools.Metadata.Filter.Test/FilterObjectTests.cs @@ -1836,5 +1836,67 @@ namespace SabreTools.Metadata.Filter.Test } #endregion + + #region Sample + + [Theory] + [InlineData("sample.name", "name")] + public void Matches_Sample(string itemField, string value) + { + var filter = new FilterObject(itemField, value, Operation.Equals); + Sample obj = new Sample + { + Name = "name", + }; + + bool actual = filter.Matches(obj); + Assert.True(actual); + } + + #endregion + + #region Serials + + [Theory] + [InlineData("serials.boxbarcode", "boxbarcode")] + [InlineData("serials.boxserial", "boxserial")] + [InlineData("serials.chipserial", "chipserial")] + [InlineData("serials.digitalserial1", "digitalserial1")] + [InlineData("serials.digitalserial2", "digitalserial2")] + [InlineData("serials.lockoutserial", "lockoutserial")] + [InlineData("serials.mediaserial1", "mediaserial1")] + [InlineData("serials.mediaserial2", "mediaserial2")] + [InlineData("serials.mediaserial3", "mediaserial3")] + [InlineData("serials.mediastamp", "mediastamp")] + [InlineData("serials.pcbserial", "pcbserial")] + [InlineData("serials.romchipserial1", "romchipserial1")] + [InlineData("serials.romchipserial2", "romchipserial2")] + [InlineData("serials.savechipserial", "savechipserial")] + public void Matches_Serials(string itemField, string value) + { + var filter = new FilterObject(itemField, value, Operation.Equals); + Serials obj = new Serials + { + BoxBarcode = "boxbarcode", + BoxSerial = "boxserial", + ChipSerial = "chipserial", + DigitalSerial1 = "digitalserial1", + DigitalSerial2 = "digitalserial2", + LockoutSerial = "lockoutserial", + MediaSerial1 = "mediaserial1", + MediaSerial2 = "mediaserial2", + MediaSerial3 = "mediaserial3", + MediaStamp = "mediastamp", + PCBSerial = "pcbserial", + RomChipSerial1 = "romchipserial1", + RomChipSerial2 = "romchipserial2", + SaveChipSerial = "savechipserial", + }; + + bool actual = filter.Matches(obj); + Assert.True(actual); + } + + #endregion } } diff --git a/SabreTools.Metadata.Filter/FilterKey.cs b/SabreTools.Metadata.Filter/FilterKey.cs index a357f711..42bd62a8 100644 --- a/SabreTools.Metadata.Filter/FilterKey.cs +++ b/SabreTools.Metadata.Filter/FilterKey.cs @@ -706,6 +706,35 @@ namespace SabreTools.Metadata.Filter "xxhash364", ]; + /// + /// Known keys for Sample + /// + private static readonly string[] _sampleKeys = + [ + "name", + ]; + + /// + /// Known keys for Serials + /// + private static readonly string[] _serialsKeys = + [ + "boxbarcode", + "boxserial", + "chipserial", + "digitalserial1", + "digitalserial2", + "lockoutserial", + "mediaserial1", + "mediaserial2", + "mediaserial3", + "mediastamp", + "pcbserial", + "romchipserial1", + "romchipserial2", + "savechipserial", + ]; + #endregion /// @@ -917,6 +946,8 @@ namespace SabreTools.Metadata.Filter "release" => _releaseKeys, "releasedetails" => _releaseDetailsKeys, "rom" => _romKeys, + "sample" => _sampleKeys, + "serials" => _serialsKeys, _ => null, }; From 76c5dc40e366c278bf20f8672fc15d378b9160fe Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Tue, 7 Apr 2026 10:37:03 -0400 Subject: [PATCH 140/142] Checkpoint reflection replacement --- .../FilterObjectTests.cs | 84 +++++++++++ SabreTools.Metadata.Filter/FilterKey.cs | 131 ++++++------------ 2 files changed, 126 insertions(+), 89 deletions(-) diff --git a/SabreTools.Metadata.Filter.Test/FilterObjectTests.cs b/SabreTools.Metadata.Filter.Test/FilterObjectTests.cs index 740cd32a..0891efee 100644 --- a/SabreTools.Metadata.Filter.Test/FilterObjectTests.cs +++ b/SabreTools.Metadata.Filter.Test/FilterObjectTests.cs @@ -1898,5 +1898,89 @@ namespace SabreTools.Metadata.Filter.Test } #endregion + + #region SharedFeat + + [Theory] + [InlineData("sharedfeat.name", "name")] + [InlineData("sharedfeat.value", "value")] + public void Matches_SharedFeat(string itemField, string value) + { + var filter = new FilterObject(itemField, value, Operation.Equals); + SharedFeat obj = new SharedFeat + { + Name = "name", + Value = "value", + }; + + bool actual = filter.Matches(obj); + Assert.True(actual); + } + + #endregion + + #region Slot + + [Theory] + [InlineData("slot.name", "name")] + public void Matches_Slot(string itemField, string value) + { + var filter = new FilterObject(itemField, value, Operation.Equals); + Slot obj = new Slot + { + Name = "name", + }; + + bool actual = filter.Matches(obj); + Assert.True(actual); + } + + #endregion + + #region SlotOption + + [Theory] + [InlineData("slotoption.default", "yes")] + [InlineData("slotoption.devname", "devname")] + [InlineData("slotoption.name", "name")] + public void Matches_SlotOption(string itemField, string value) + { + var filter = new FilterObject(itemField, value, Operation.Equals); + SlotOption obj = new SlotOption + { + Default = true, + DevName = "devname", + Name = "name", + }; + + bool actual = filter.Matches(obj); + Assert.True(actual); + } + + #endregion + + #region SoftwareList + + [Theory] + [InlineData("softwarelist.filter", "filter")] + [InlineData("softwarelist.name", "name")] + [InlineData("softwarelist.status", "original")] + [InlineData("softwarelist.tag", "tag")] + public void Matches_SoftwareList(string itemField, string value) + { + var filter = new FilterObject(itemField, value, Operation.Equals); + SoftwareList obj = new SoftwareList + { + Filter = "filter", + Name = "name", + Status = SoftwareListStatus.Original, + Tag = "tag", + }; + + bool actual = filter.Matches(obj); + Assert.True(actual); + } + + #endregion } } diff --git a/SabreTools.Metadata.Filter/FilterKey.cs b/SabreTools.Metadata.Filter/FilterKey.cs index 42bd62a8..5e54de55 100644 --- a/SabreTools.Metadata.Filter/FilterKey.cs +++ b/SabreTools.Metadata.Filter/FilterKey.cs @@ -1,6 +1,4 @@ using System; -using System.Reflection; -using System.Xml.Serialization; using SabreTools.Data.Models.Metadata; namespace SabreTools.Metadata.Filter @@ -735,6 +733,44 @@ namespace SabreTools.Metadata.Filter "savechipserial", ]; + /// + /// Known keys for SharedFeat + /// + private static readonly string[] _sharedFeatKeys = + [ + "name", + "value", + ]; + + /// + /// Known keys for Slot + /// + private static readonly string[] _slotKeys = + [ + "name", + ]; + + /// + /// Known keys for SlotOption + /// + private static readonly string[] _slotOptionKeys = + [ + "default", + "devname", + "name", + ]; + + /// + /// Known keys for SoftwareList + /// + private static readonly string[] _softwareListKeys = + [ + "filter", + "name", + "status", + "tag", + ]; + #endregion /// @@ -948,24 +984,12 @@ namespace SabreTools.Metadata.Filter "rom" => _romKeys, "sample" => _sampleKeys, "serials" => _serialsKeys, + "sharedfeat" => _sharedFeatKeys, + "slot" => _slotKeys, + "slotoption" => _slotOptionKeys, + "softwarelist" => _softwareListKeys, _ => null, }; - - // TODO: Remove this fallback path - if (properties is null) - { - // Get the correct item type - var itemType = GetDatItemType(itemName.ToLowerInvariant()); - if (itemType is null) - return null; - - properties = GetProperties(itemType); - - // Special cases for mismatched names - if (properties is not null && itemType == typeof(Rom)) - properties = [.. properties, "crc"]; - } - if (properties is null) return null; @@ -973,76 +997,5 @@ namespace SabreTools.Metadata.Filter string? propertyMatch = Array.Find(properties, c => string.Equals(c, fieldName, StringComparison.OrdinalIgnoreCase)); return propertyMatch?.ToLowerInvariant(); } - - #region Reflection-based Helpers - - /// - /// Attempt to get the DatItem type from the name - /// - private static Type? GetDatItemType(string? itemType) - { - if (string.IsNullOrEmpty(itemType)) - return null; - - // Loop through all loaded assemblies - foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies()) - { - // If not all types can be loaded, use the ones that could be - Type?[] assemblyTypes = []; - try - { - assemblyTypes = assembly.GetTypes(); - } - catch (ReflectionTypeLoadException rtle) - { - assemblyTypes = Array.FindAll(rtle.Types ?? [], t => t is not null); - } - - // Loop through all types - foreach (Type? type in assemblyTypes) - { - // If the type is invalid - if (type is null) - continue; - - // If the type isn't a class or doesn't implement the interface - if (!type.IsClass || !typeof(DatItem).IsAssignableFrom(type)) - continue; - - // Get the XML type name -#if NET20 || NET35 || NET40 - string? elementName = (Attribute.GetCustomAttribute(type, typeof(XmlRootAttribute)) as XmlRootAttribute)!.ElementName; -#else - string? elementName = type.GetCustomAttribute()?.ElementName; -#endif - if (elementName is null) - continue; - - // If the name matches - if (string.Equals(elementName, itemType, StringComparison.OrdinalIgnoreCase)) - return type; - } - } - - return null; - } - - /// - /// Get property names for the given type, if possible - /// - private static string[]? GetProperties(Type? type) - { - if (type is null) - return null; - - var properties = type.GetProperties(BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public); - if (properties is null) - return null; - - string[] propertyNames = Array.ConvertAll(properties, f => f.Name); - return Array.FindAll(propertyNames, s => s.Length > 0); - } - - #endregion } } From 94658ae2254042216c0654ce1e5e4e31749dd3fc Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Tue, 7 Apr 2026 11:17:57 -0400 Subject: [PATCH 141/142] Filter tree is reflection-free --- .../FilterObjectTests.cs | 117 ++++++++++++++++++ SabreTools.Metadata.Filter/FilterKey.cs | 61 +++++++++ SabreTools.Metadata.Filter/FilterObject.cs | 3 +- 3 files changed, 180 insertions(+), 1 deletion(-) diff --git a/SabreTools.Metadata.Filter.Test/FilterObjectTests.cs b/SabreTools.Metadata.Filter.Test/FilterObjectTests.cs index 0891efee..069351a8 100644 --- a/SabreTools.Metadata.Filter.Test/FilterObjectTests.cs +++ b/SabreTools.Metadata.Filter.Test/FilterObjectTests.cs @@ -1982,5 +1982,122 @@ namespace SabreTools.Metadata.Filter.Test } #endregion + + #region Sound + + [Theory] + [InlineData("sound.channels", "12345")] + public void Matches_Sound(string itemField, string value) + { + var filter = new FilterObject(itemField, value, Operation.Equals); + Sound obj = new Sound + { + Channels = 12345, + }; + + bool actual = filter.Matches(obj); + Assert.True(actual); + } + + #endregion + + #region SourceDetails + + [Theory] + [InlineData("sourcedetails.appendtonumber", "appendtonumber")] + [InlineData("sourcedetails.comment1", "comment1")] + [InlineData("sourcedetails.comment2", "comment2")] + [InlineData("sourcedetails.dumpdate", "dumpdate")] + [InlineData("sourcedetails.dumpdateinfo", "1")] + [InlineData("sourcedetails.dumper", "dumper")] + [InlineData("sourcedetails.id", "id")] + [InlineData("sourcedetails.link1", "link1")] + [InlineData("sourcedetails.link1public", "1")] + [InlineData("sourcedetails.link2", "link2")] + [InlineData("sourcedetails.link2public", "1")] + [InlineData("sourcedetails.link3", "link3")] + [InlineData("sourcedetails.link3public", "1")] + [InlineData("sourcedetails.mediatitle", "mediatitle")] + [InlineData("sourcedetails.nodump", "1")] + [InlineData("sourcedetails.origin", "origin")] + [InlineData("sourcedetails.originalformat", "originalformat")] + [InlineData("sourcedetails.project", "project")] + [InlineData("sourcedetails.region", "region")] + [InlineData("sourcedetails.releasedate", "releasedate")] + [InlineData("sourcedetails.releasedateinfo", "1")] + [InlineData("sourcedetails.rominfo", "rominfo")] + [InlineData("sourcedetails.section", "section")] + [InlineData("sourcedetails.tool", "tool")] + public void Matches_SourceDetails(string itemField, string value) + { + var filter = new FilterObject(itemField, value, Operation.Equals); + SourceDetails obj = new SourceDetails + { + AppendToNumber = "appendtonumber", + Comment1 = "comment1", + Comment2 = "comment2", + DumpDate = "dumpdate", + DumpDateInfo = true, + Dumper = "dumper", + Id = "id", + Link1 = "link1", + Link1Public = true, + Link2 = "link2", + Link2Public = true, + Link3 = "link3", + Link3Public = true, + MediaTitle = "mediatitle", + Nodump = true, + Origin = "origin", + OriginalFormat = "originalformat", + Project = "project", + Region = "region", + ReleaseDate = "releasedate", + ReleaseDateInfo = true, + RomInfo = "rominfo", + Section = "section", + Tool = "tool", + }; + + bool actual = filter.Matches(obj); + Assert.True(actual); + } + + #endregion + + #region Video + + [Theory] + [InlineData("video.aspectx", "12345")] + [InlineData("video.aspecty", "12345")] + [InlineData("video.height", "12345")] + [InlineData("video.y", "12345")] + [InlineData("video.orientation", "horizontal")] + [InlineData("video.rotate", "horizontal")] + [InlineData("video.refresh", "123.45")] + [InlineData("video.freq", "123.45")] + [InlineData("video.displaytype", "vector")] + [InlineData("video.screen", "vector")] + [InlineData("video.width", "12345")] + [InlineData("video.x", "12345")] + public void Matches_Video(string itemField, string value) + { + var filter = new FilterObject(itemField, value, Operation.Equals); + Video obj = new Video + { + AspectX = 12345, + AspectY = 12345, + Height = 12345, + Orientation = Rotation.East, + Refresh = 123.45, + Screen = DisplayType.Vector, + Width = 12345, + }; + + bool actual = filter.Matches(obj); + Assert.True(actual); + } + + #endregion } } diff --git a/SabreTools.Metadata.Filter/FilterKey.cs b/SabreTools.Metadata.Filter/FilterKey.cs index 5e54de55..012a745c 100644 --- a/SabreTools.Metadata.Filter/FilterKey.cs +++ b/SabreTools.Metadata.Filter/FilterKey.cs @@ -771,6 +771,64 @@ namespace SabreTools.Metadata.Filter "tag", ]; + /// + /// Known keys for Sound + /// + private static readonly string[] _soundKeys = + [ + "channels", + ]; + + /// + /// Known keys for SourceDetails + /// + private static readonly string[] _sourceDetailsKeys = + [ + "appendtonumber", + "comment1", + "comment2", + "dumpdate", + "dumpdateinfo", + "dumper", + "id", + "link1", + "link1public", + "link2", + "link2public", + "link3", + "link3public", + "mediatitle", + "nodump", + "origin", + "originalformat", + "project", + "region", + "releasedate", + "releasedateinfo", + "rominfo", + "section", + "tool", + ]; + + /// + /// Known keys for Video + /// + private static readonly string[] _videoKeys = + [ + "aspectx", + "aspecty", + "displaytype", + "freq", + "height", + "orientation", + "refresh", + "rotate", + "screen", + "width", + "x", + "y", + ]; + #endregion /// @@ -988,6 +1046,9 @@ namespace SabreTools.Metadata.Filter "slot" => _slotKeys, "slotoption" => _slotOptionKeys, "softwarelist" => _softwareListKeys, + "sound" => _soundKeys, + "sourcedetails" => _sourceDetailsKeys, + "video" => _videoKeys, _ => null, }; if (properties is null) diff --git a/SabreTools.Metadata.Filter/FilterObject.cs b/SabreTools.Metadata.Filter/FilterObject.cs index 721584fd..4e95bc33 100644 --- a/SabreTools.Metadata.Filter/FilterObject.cs +++ b/SabreTools.Metadata.Filter/FilterObject.cs @@ -2426,12 +2426,13 @@ namespace SabreTools.Metadata.Filter return true; case "orientation": case "rotate": - checkValue = obj.Orientation?.AsStringValue(); + checkValue = obj.Orientation?.AsStringValue(useSecond: true); return true; case "refresh": case "freq": checkValue = obj.Refresh?.ToString(); return true; + case "displaytype": case "screen": checkValue = obj.Screen?.AsStringValue(); return true; From 0363b1dd96f600b06dfc143445f46d7f21a788f2 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Tue, 7 Apr 2026 11:23:10 -0400 Subject: [PATCH 142/142] Slight code cleanliness updates --- SabreTools.Metadata.Filter/FilterKey.cs | 4 + SabreTools.Metadata.Filter/FilterObject.cs | 138 +++++++++++---------- 2 files changed, 75 insertions(+), 67 deletions(-) diff --git a/SabreTools.Metadata.Filter/FilterKey.cs b/SabreTools.Metadata.Filter/FilterKey.cs index 012a745c..f74a1481 100644 --- a/SabreTools.Metadata.Filter/FilterKey.cs +++ b/SabreTools.Metadata.Filter/FilterKey.cs @@ -33,6 +33,8 @@ namespace SabreTools.Metadata.Filter private static readonly string[] _datItemTypeNames = Enum.GetNames(typeof(ItemType)); #endif + #region Per-Type Accepted Keys + /// /// Known keys for Adjuster /// @@ -831,6 +833,8 @@ namespace SabreTools.Metadata.Filter #endregion + #endregion + /// /// Validating combined key constructor /// diff --git a/SabreTools.Metadata.Filter/FilterObject.cs b/SabreTools.Metadata.Filter/FilterObject.cs index 4e95bc33..baeb6bb8 100644 --- a/SabreTools.Metadata.Filter/FilterObject.cs +++ b/SabreTools.Metadata.Filter/FilterObject.cs @@ -430,6 +430,77 @@ namespace SabreTools.Metadata.Filter } } + /// + /// Derive an operation from the input string, if possible + /// + private static Operation GetOperation(string? operation) + { + return operation?.ToLowerInvariant() switch + { + "=" => Operation.Equals, + "=:" => Operation.Equals, + "==" => Operation.Equals, + ":" => Operation.Equals, + "::" => Operation.Equals, + ":=" => Operation.Equals, + + "!" => Operation.NotEquals, + "!=" => Operation.NotEquals, + "!:" => Operation.NotEquals, + + ">" => Operation.GreaterThan, + ">:" => Operation.GreaterThanOrEqual, + ">=" => Operation.GreaterThanOrEqual, + "!<" => Operation.GreaterThanOrEqual, + + "<" => Operation.LessThan, + "<:" => Operation.LessThanOrEqual, + "<=" => Operation.LessThanOrEqual, + "!>" => Operation.LessThanOrEqual, + + _ => Operation.NONE, + }; + } + + /// + /// Derive a key, operation, and value from the input string, if possible + /// + private static bool SplitFilterString(string? filterString, out string? key, out Operation operation, out string? value) + { + // Set default values + key = null; operation = Operation.NONE; value = null; + + if (string.IsNullOrEmpty(filterString)) + return false; + + // Trim quotations, if necessary +#if NETCOREAPP || NETSTANDARD2_1_OR_GREATER + if (filterString!.StartsWith('\"')) + filterString = filterString[1..^1]; +#else + if (filterString!.StartsWith("\"")) + filterString = filterString.Substring(1, filterString.Length - 2); +#endif + + // Split the string using regex + var match = Regex.Match(filterString, @"^(?[a-zA-Z._]+)(?[=!:><]{1,2})(?.*)$", RegexOptions.Compiled); + if (!match.Success) + return false; + + key = match.Groups["itemField"].Value; + operation = GetOperation(match.Groups["operation"].Value); + + // Only non-zero length values are counted as non-null + if (match.Groups["value"]?.Value?.Length > 0) + value = match.Groups["value"].Value; + + return true; + } + + #endregion + + #region Per-Type Check Value Retrieval + /// /// Get the check value for a field /// @@ -2448,73 +2519,6 @@ namespace SabreTools.Metadata.Filter } } - /// - /// Derive an operation from the input string, if possible - /// - private static Operation GetOperation(string? operation) - { - return operation?.ToLowerInvariant() switch - { - "=" => Operation.Equals, - "=:" => Operation.Equals, - "==" => Operation.Equals, - ":" => Operation.Equals, - "::" => Operation.Equals, - ":=" => Operation.Equals, - - "!" => Operation.NotEquals, - "!=" => Operation.NotEquals, - "!:" => Operation.NotEquals, - - ">" => Operation.GreaterThan, - ">:" => Operation.GreaterThanOrEqual, - ">=" => Operation.GreaterThanOrEqual, - "!<" => Operation.GreaterThanOrEqual, - - "<" => Operation.LessThan, - "<:" => Operation.LessThanOrEqual, - "<=" => Operation.LessThanOrEqual, - "!>" => Operation.LessThanOrEqual, - - _ => Operation.NONE, - }; - } - - /// - /// Derive a key, operation, and value from the input string, if possible - /// - private static bool SplitFilterString(string? filterString, out string? key, out Operation operation, out string? value) - { - // Set default values - key = null; operation = Operation.NONE; value = null; - - if (string.IsNullOrEmpty(filterString)) - return false; - - // Trim quotations, if necessary -#if NETCOREAPP || NETSTANDARD2_1_OR_GREATER - if (filterString!.StartsWith('\"')) - filterString = filterString[1..^1]; -#else - if (filterString!.StartsWith("\"")) - filterString = filterString.Substring(1, filterString.Length - 2); -#endif - - // Split the string using regex - var match = Regex.Match(filterString, @"^(?[a-zA-Z._]+)(?[=!:><]{1,2})(?.*)$", RegexOptions.Compiled); - if (!match.Success) - return false; - - key = match.Groups["itemField"].Value; - operation = GetOperation(match.Groups["operation"].Value); - - // Only non-zero length values are counted as non-null - if (match.Groups["value"]?.Value?.Length > 0) - value = match.Groups["value"].Value; - - return true; - } - #endregion } }