Finish writing ConvertToMetadata and making fixes related

This commit is contained in:
Matt Nadareski
2025-01-11 23:03:32 -05:00
parent 1763796f9f
commit 41ab9826a3
4 changed files with 294 additions and 237 deletions

View File

@@ -453,7 +453,7 @@ namespace SabreTools.DatFiles.Test
[Models.Metadata.Device.FixedImageKey] = "fixedimage",
[Models.Metadata.Device.InstanceKey] = CreateMetadataInstance(),
[Models.Metadata.Device.InterfaceKey] = "interface",
[Models.Metadata.Device.MandatoryKey] = 1,
[Models.Metadata.Device.MandatoryKey] = 1L,
[Models.Metadata.Device.TagKey] = "tag",
[Models.Metadata.Device.DeviceTypeKey] = "punchtape",
};

View File

@@ -1,4 +1,6 @@
using System;
using System.Collections.Generic;
using SabreTools.Core;
using SabreTools.DatItems;
using SabreTools.DatItems.Formats;
using SabreTools.Hashing;
@@ -79,7 +81,7 @@ namespace SabreTools.DatFiles.Test
Models.Metadata.MetadataFile? actual = datFile.ConvertToMetadata();
Assert.NotNull(actual);
Models.Metadata.Machine[]? machines = actual.Read<Models.Metadata.Machine[]>(Models.Metadata.MetadataFile.MachineKey);
Models.Metadata.Machine[]? machines = actual.ReadItemArray<Models.Metadata.Machine>(Models.Metadata.MetadataFile.MachineKey);
Assert.NotNull(machines);
Models.Metadata.Machine actualMachine = Assert.Single(machines);
ValidateMetadataMachine(actualMachine);
@@ -418,7 +420,6 @@ namespace SabreTools.DatFiles.Test
Assert.Equal("version", header.ReadString(Models.Metadata.Header.VersionKey));
}
// TODO: Add reading all item types here
private static void ValidateMetadataMachine(Models.Metadata.Machine machine)
{
Assert.Equal("board", machine.ReadString(Models.Metadata.Machine.BoardKey));
@@ -471,105 +472,149 @@ namespace SabreTools.DatFiles.Test
Assert.Equal("tags", machine.ReadString(Models.Metadata.Machine.TagsKey));
Assert.Equal("year", machine.ReadString(Models.Metadata.Machine.YearKey));
Models.Metadata.Adjuster[]? adjusters = machine.Read<Models.Metadata.Adjuster[]>(Models.Metadata.Machine.AdjusterKey);
Models.Metadata.Adjuster[]? adjusters = machine.ReadItemArray<Models.Metadata.Adjuster>(Models.Metadata.Machine.AdjusterKey);
Assert.NotNull(adjusters);
Models.Metadata.Adjuster adjuster = Assert.Single(adjusters);
ValidateMetadataAdjuster(adjuster);
Models.Metadata.Archive[]? archives = machine.Read<Models.Metadata.Archive[]>(Models.Metadata.Machine.ArchiveKey);
Models.Metadata.Archive[]? archives = machine.ReadItemArray<Models.Metadata.Archive>(Models.Metadata.Machine.ArchiveKey);
Assert.NotNull(archives);
Models.Metadata.Archive archive = Assert.Single(archives);
ValidateMetadataArchive(archive);
Models.Metadata.BiosSet[]? biosSets = machine.Read<Models.Metadata.BiosSet[]>(Models.Metadata.Machine.BiosSetKey);
Models.Metadata.BiosSet[]? biosSets = machine.ReadItemArray<Models.Metadata.BiosSet>(Models.Metadata.Machine.BiosSetKey);
Assert.NotNull(biosSets);
Models.Metadata.BiosSet biosSet = Assert.Single(biosSets);
ValidateMetadataBiosSet(biosSet);
Models.Metadata.Chip[]? chips = machine.Read<Models.Metadata.Chip[]>(Models.Metadata.Machine.ChipKey);
Models.Metadata.Chip[]? chips = machine.ReadItemArray<Models.Metadata.Chip>(Models.Metadata.Machine.ChipKey);
Assert.NotNull(chips);
Models.Metadata.Chip chip = Assert.Single(chips);
ValidateMetadataChip(chip);
Models.Metadata.Configuration[]? configurations = machine.Read<Models.Metadata.Configuration[]>(Models.Metadata.Machine.ConfigurationKey);
Models.Metadata.Configuration[]? configurations = machine.ReadItemArray<Models.Metadata.Configuration>(Models.Metadata.Machine.ConfigurationKey);
Assert.NotNull(configurations);
Models.Metadata.Configuration configuration = Assert.Single(configurations);
ValidateMetadataConfiguration(configuration);
Models.Metadata.Device[]? devices = machine.Read<Models.Metadata.Device[]>(Models.Metadata.Machine.DeviceKey);
Models.Metadata.Device[]? devices = machine.ReadItemArray<Models.Metadata.Device>(Models.Metadata.Machine.DeviceKey);
Assert.NotNull(devices);
Models.Metadata.Device device = Assert.Single(devices);
ValidateMetadataDevice(device);
Models.Metadata.DeviceRef[]? deviceRefs = machine.Read<Models.Metadata.DeviceRef[]>(Models.Metadata.Machine.DeviceRefKey);
Models.Metadata.DeviceRef[]? deviceRefs = machine.ReadItemArray<Models.Metadata.DeviceRef>(Models.Metadata.Machine.DeviceRefKey);
Assert.NotNull(deviceRefs);
Models.Metadata.DeviceRef deviceRef = Assert.Single(deviceRefs);
ValidateMetadataDeviceRef(deviceRef);
Models.Metadata.DipSwitch[]? dipSwitches = machine.Read<Models.Metadata.DipSwitch[]>(Models.Metadata.Machine.DipSwitchKey);
Models.Metadata.DipSwitch[]? dipSwitches = machine.ReadItemArray<Models.Metadata.DipSwitch>(Models.Metadata.Machine.DipSwitchKey);
Assert.NotNull(dipSwitches);
Models.Metadata.DipSwitch dipSwitch = Assert.Single(dipSwitches);
Assert.Equal(2, dipSwitches.Length);
Models.Metadata.DipSwitch dipSwitch = dipSwitches[0];
ValidateMetadataDipSwitch(dipSwitch);
Models.Metadata.Disk[]? disks = machine.Read<Models.Metadata.Disk[]>(Models.Metadata.Machine.DiskKey);
Models.Metadata.Disk[]? disks = machine.ReadItemArray<Models.Metadata.Disk>(Models.Metadata.Machine.DiskKey);
Assert.NotNull(disks);
Models.Metadata.Disk disk = Assert.Single(disks);
Assert.Equal(2, disks.Length);
Models.Metadata.Disk disk = disks[0];
ValidateMetadataDisk(disk);
Models.Metadata.Display[]? displays = machine.Read<Models.Metadata.Display[]>(Models.Metadata.Machine.DisplayKey);
Models.Metadata.Display[]? displays = machine.ReadItemArray<Models.Metadata.Display>(Models.Metadata.Machine.DisplayKey);
Assert.NotNull(displays);
Models.Metadata.Display display = Assert.Single(displays);
Assert.Equal(2, displays.Length);
Models.Metadata.Display? display = Array.Find(displays, d => !d.ContainsKey(Models.Metadata.Video.AspectXKey));
ValidateMetadataDisplay(display);
Models.Metadata.Driver? driver = machine.Read<Models.Metadata.Driver>(Models.Metadata.Machine.DriverKey);
Models.Metadata.Driver[]? drivers = machine.ReadItemArray<Models.Metadata.Driver>(Models.Metadata.Machine.DriverKey);
Assert.NotNull(drivers);
Models.Metadata.Driver driver = Assert.Single(drivers);
ValidateMetadataDriver(driver);
// TODO: Implement this validation
// Models.Metadata.Dump[]? dumps = machine.Read<Models.Metadata.Dump[]>(Models.Metadata.Machine.DumpKey);
// Models.Metadata.Dump[]? dumps = machine.ReadItemArray<Models.Metadata.Dump>(Models.Metadata.Machine.DumpKey);
// Assert.NotNull(dumps);
// Models.Metadata.Dump dump = Assert.Single(dumps);
// ValidateMetadataDump(dump);
Models.Metadata.Feature[]? features = machine.Read<Models.Metadata.Feature[]>(Models.Metadata.Machine.FeatureKey);
Models.Metadata.Feature[]? features = machine.ReadItemArray<Models.Metadata.Feature>(Models.Metadata.Machine.FeatureKey);
Assert.NotNull(features);
Models.Metadata.Feature feature = Assert.Single(features);
Assert.Equal(2, features.Length);
Models.Metadata.Feature feature = features[0];
ValidateMetadataFeature(feature);
Models.Metadata.Info[]? infos = machine.Read<Models.Metadata.Info[]>(Models.Metadata.Machine.InfoKey);
Models.Metadata.Info[]? infos = machine.ReadItemArray<Models.Metadata.Info>(Models.Metadata.Machine.InfoKey);
Assert.NotNull(infos);
Models.Metadata.Info info = Assert.Single(infos);
ValidateMetadataInfo(info);
Models.Metadata.Input? input = machine.Read<Models.Metadata.Input>(Models.Metadata.Machine.InputKey);
Models.Metadata.Input[]? inputs = machine.ReadItemArray<Models.Metadata.Input>(Models.Metadata.Machine.InputKey);
Assert.NotNull(inputs);
Models.Metadata.Input input = Assert.Single(inputs);
ValidateMetadataInput(input);
Models.Metadata.Media[]? media = machine.Read<Models.Metadata.Media[]>(Models.Metadata.Machine.MediaKey);
Models.Metadata.Media[]? media = machine.ReadItemArray<Models.Metadata.Media>(Models.Metadata.Machine.MediaKey);
Assert.NotNull(media);
Models.Metadata.Media medium = Assert.Single(media);
ValidateMetadataMedia(medium);
Models.Metadata.Part[]? parts = machine.Read<Models.Metadata.Part[]>(Models.Metadata.Machine.PartKey);
Models.Metadata.Part[]? parts = machine.ReadItemArray<Models.Metadata.Part>(Models.Metadata.Machine.PartKey);
Assert.NotNull(parts);
Models.Metadata.Part part = Assert.Single(parts);
ValidateMetadataPart(part);
Models.Metadata.Port[]? ports = machine.Read<Models.Metadata.Port[]>(Models.Metadata.Machine.PortKey);
Models.Metadata.Port[]? ports = machine.ReadItemArray<Models.Metadata.Port>(Models.Metadata.Machine.PortKey);
Assert.NotNull(ports);
Models.Metadata.Port port = Assert.Single(ports);
ValidateMetadataPort(port);
Models.Metadata.RamOption[]? ramOptions = machine.Read<Models.Metadata.RamOption[]>(Models.Metadata.Machine.RamOptionKey);
Models.Metadata.RamOption[]? ramOptions = machine.ReadItemArray<Models.Metadata.RamOption>(Models.Metadata.Machine.RamOptionKey);
Assert.NotNull(ramOptions);
Models.Metadata.RamOption ramOption = Assert.Single(ramOptions);
ValidateMetadataRamOption(ramOption);
Models.Metadata.Release[]? releases = machine.Read<Models.Metadata.Release[]>(Models.Metadata.Machine.ReleaseKey);
Models.Metadata.Release[]? releases = machine.ReadItemArray<Models.Metadata.Release>(Models.Metadata.Machine.ReleaseKey);
Assert.NotNull(releases);
Models.Metadata.Release release = Assert.Single(releases);
ValidateMetadataRelease(release);
Models.Metadata.Rom[]? roms = machine.ReadItemArray<Models.Metadata.Rom>(Models.Metadata.Machine.RomKey);
Assert.NotNull(roms);
Assert.Equal(2, roms.Length);
Models.Metadata.Rom rom = roms[0];
ValidateMetadataRom(rom);
Models.Metadata.Sample[]? samples = machine.ReadItemArray<Models.Metadata.Sample>(Models.Metadata.Machine.SampleKey);
Assert.NotNull(samples);
Models.Metadata.Sample sample = Assert.Single(samples);
ValidateMetadataSample(sample);
Models.Metadata.SharedFeat[]? sharedFeats = machine.ReadItemArray<Models.Metadata.SharedFeat>(Models.Metadata.Machine.SharedFeatKey);
Assert.NotNull(sharedFeats);
Models.Metadata.SharedFeat sharedFeat = Assert.Single(sharedFeats);
ValidateMetadataSharedFeat(sharedFeat);
Models.Metadata.Slot[]? slots = machine.ReadItemArray<Models.Metadata.Slot>(Models.Metadata.Machine.SlotKey);
Assert.NotNull(slots);
Models.Metadata.Slot slot = Assert.Single(slots);
ValidateMetadataSlot(slot);
Models.Metadata.SoftwareList[]? softwareLists = machine.ReadItemArray<Models.Metadata.SoftwareList>(Models.Metadata.Machine.SoftwareListKey);
Assert.NotNull(softwareLists);
Models.Metadata.SoftwareList softwareList = Assert.Single(softwareLists);
ValidateMetadataSoftwareList(softwareList);
Models.Metadata.Sound[]? sounds = machine.ReadItemArray<Models.Metadata.Sound>(Models.Metadata.Machine.SoundKey);
Assert.NotNull(sounds);
Models.Metadata.Sound sound = Assert.Single(sounds);
ValidateMetadataSound(sound);
Models.Logiqx.Trurip? trurip = machine.Read<Models.Logiqx.Trurip>(Models.Metadata.Machine.TruripKey);
ValidateMetadataTrurip(trurip);
Models.Metadata.Video[]? videos = machine.ReadItemArray<Models.Metadata.Video>(Models.Metadata.Machine.VideoKey);
Assert.NotNull(videos);
Models.Metadata.Video video = Assert.Single(videos);
ValidateMetadataVideo(video);
}
private static void ValidateMetadataAdjuster(Models.Metadata.Adjuster? adjuster)
@@ -632,12 +677,12 @@ namespace SabreTools.DatFiles.Test
Models.Metadata.Condition? condition = configuration.Read<Models.Metadata.Condition>(Models.Metadata.Configuration.ConditionKey);
ValidateMetadataCondition(condition);
Models.Metadata.ConfLocation[]? confLocations = configuration.Read<Models.Metadata.ConfLocation[]>(Models.Metadata.Configuration.ConfLocationKey);
Models.Metadata.ConfLocation[]? confLocations = configuration.ReadItemArray<Models.Metadata.ConfLocation>(Models.Metadata.Configuration.ConfLocationKey);
Assert.NotNull(confLocations);
Models.Metadata.ConfLocation? confLocation = Assert.Single(confLocations);
ValidateMetadataConfLocation(confLocation);
Models.Metadata.ConfSetting[]? confSettings = configuration.Read<Models.Metadata.ConfSetting[]>(Models.Metadata.Configuration.ConfSettingKey);
Models.Metadata.ConfSetting[]? confSettings = configuration.ReadItemArray<Models.Metadata.ConfSetting>(Models.Metadata.Configuration.ConfSettingKey);
Assert.NotNull(confSettings);
Models.Metadata.ConfSetting? confSetting = Assert.Single(confSettings);
ValidateMetadataConfSetting(confSetting);
@@ -679,14 +724,19 @@ namespace SabreTools.DatFiles.Test
Assert.Equal("ways3", control.ReadString(Models.Metadata.Control.Ways3Key));
}
// private static void ValidateMetadataDataArea(DataArea? dataArea)
// {
// Assert.NotNull(dataArea);
// Assert.Equal("big", dataArea.ReadString(Models.Metadata.DataArea.EndiannessKey));
// Assert.Equal("name", dataArea.ReadString(Models.Metadata.DataArea.NameKey));
// Assert.Equal(12345, dataArea.ReadLong(Models.Metadata.DataArea.SizeKey));
// Assert.Equal(64, dataArea.ReadLong(Models.Metadata.DataArea.WidthKey));
// }
private static void ValidateMetadataDataArea(Models.Metadata.DataArea? dataArea)
{
Assert.NotNull(dataArea);
Assert.Equal("big", dataArea.ReadString(Models.Metadata.DataArea.EndiannessKey));
Assert.Equal("name", dataArea.ReadString(Models.Metadata.DataArea.NameKey));
Assert.Equal(12345, dataArea.ReadLong(Models.Metadata.DataArea.SizeKey));
Assert.Equal(64, dataArea.ReadLong(Models.Metadata.DataArea.WidthKey));
Models.Metadata.Rom[]? roms = dataArea.ReadItemArray<Models.Metadata.Rom>(Models.Metadata.DataArea.RomKey);
Assert.NotNull(roms);
Models.Metadata.Rom? rom = Assert.Single(roms);
ValidateMetadataRom(rom);
}
private static void ValidateMetadataDevice(Models.Metadata.Device? device)
{
@@ -697,7 +747,7 @@ namespace SabreTools.DatFiles.Test
Assert.Equal("tag", device.ReadString(Models.Metadata.Device.TagKey));
Assert.Equal("punchtape", device.ReadString(Models.Metadata.Device.DeviceTypeKey));
Models.Metadata.Extension[]? extensions = device.Read<Models.Metadata.Extension[]>(Models.Metadata.Device.ExtensionKey);
Models.Metadata.Extension[]? extensions = device.ReadItemArray<Models.Metadata.Extension>(Models.Metadata.Device.ExtensionKey);
Assert.NotNull(extensions);
Models.Metadata.Extension? extension = Assert.Single(extensions);
ValidateMetadataExtension(extension);
@@ -731,12 +781,12 @@ namespace SabreTools.DatFiles.Test
Models.Metadata.Condition? condition = dipSwitch.Read<Models.Metadata.Condition>(Models.Metadata.DipSwitch.ConditionKey);
ValidateMetadataCondition(condition);
Models.Metadata.DipLocation[]? dipLocations = dipSwitch.Read<Models.Metadata.DipLocation[]>(Models.Metadata.DipSwitch.DipLocationKey);
Models.Metadata.DipLocation[]? dipLocations = dipSwitch.ReadItemArray<Models.Metadata.DipLocation>(Models.Metadata.DipSwitch.DipLocationKey);
Assert.NotNull(dipLocations);
Models.Metadata.DipLocation? dipLocation = Assert.Single(dipLocations);
ValidateMetadataDipLocation(dipLocation);
Models.Metadata.DipValue[]? dipValues = dipSwitch.Read<Models.Metadata.DipValue[]>(Models.Metadata.DipSwitch.DipValueKey);
Models.Metadata.DipValue[]? dipValues = dipSwitch.ReadItemArray<Models.Metadata.DipValue>(Models.Metadata.DipSwitch.DipValueKey);
Assert.NotNull(dipValues);
Models.Metadata.DipValue? dipValue = Assert.Single(dipValues);
ValidateMetadataDipValue(dipValue);
@@ -772,11 +822,16 @@ namespace SabreTools.DatFiles.Test
Assert.True(disk.ReadBool(Models.Metadata.Disk.WritableKey));
}
// private static void ValidateMetadataDiskArea(Models.Metadata.DiskArea? diskArea)
// {
// Assert.NotNull(diskArea);
// Assert.Equal("name", diskArea.ReadString(Models.Metadata.DiskArea.NameKey));
// }
private static void ValidateMetadataDiskArea(Models.Metadata.DiskArea? diskArea)
{
Assert.NotNull(diskArea);
Assert.Equal("name", diskArea.ReadString(Models.Metadata.DiskArea.NameKey));
Models.Metadata.Disk[]? disks = diskArea.ReadItemArray<Models.Metadata.Disk>(Models.Metadata.DiskArea.DiskKey);
Assert.NotNull(disks);
Models.Metadata.Disk? disk = Assert.Single(disks);
ValidateMetadataDisk(disk);
}
private static void ValidateMetadataDisplay(Models.Metadata.Display? display)
{
@@ -846,7 +901,7 @@ namespace SabreTools.DatFiles.Test
Assert.True(input.ReadBool(Models.Metadata.Input.ServiceKey));
Assert.True(input.ReadBool(Models.Metadata.Input.TiltKey));
Models.Metadata.Control[]? controls = input.Read<Models.Metadata.Control[]>(Models.Metadata.Input.ControlKey);
Models.Metadata.Control[]? controls = input.ReadItemArray<Models.Metadata.Control>(Models.Metadata.Input.ControlKey);
Assert.NotNull(controls);
Models.Metadata.Control? control = Assert.Single(controls);
ValidateMetadataControl(control);
@@ -869,33 +924,39 @@ namespace SabreTools.DatFiles.Test
Assert.Equal(ZeroHash.SpamSumStr, media.ReadString(Models.Metadata.Media.SpamSumKey));
}
// TODO: Ensure type arrays are validated
private static void ValidateMetadataPart(Models.Metadata.Part? part)
{
Assert.NotNull(part);
Assert.Equal("interface", part.ReadString(Models.Metadata.Part.InterfaceKey));
Assert.Equal("name", part.ReadString(Models.Metadata.Part.NameKey));
Models.Metadata.DataArea[]? dataAreas = part.ReadItemArray<Models.Metadata.DataArea>(Models.Metadata.Part.DataAreaKey);
Assert.NotNull(dataAreas);
Models.Metadata.DataArea? dataArea = Assert.Single(dataAreas);
ValidateMetadataDataArea(dataArea);
Models.Metadata.DiskArea[]? diskAreas = part.ReadItemArray<Models.Metadata.DiskArea>(Models.Metadata.Part.DiskAreaKey);
Assert.NotNull(diskAreas);
Models.Metadata.DiskArea? diskArea = Assert.Single(diskAreas);
ValidateMetadataDiskArea(diskArea);
Models.Metadata.DipSwitch[]? dipSwitches = part.ReadItemArray<Models.Metadata.DipSwitch>(Models.Metadata.Part.DipSwitchKey);
Assert.NotNull(dipSwitches);
Models.Metadata.DipSwitch? dipSwitch = Assert.Single(dipSwitches);
ValidateMetadataDipSwitch(dipSwitch);
Models.Metadata.Feature[]? features = part.ReadItemArray<Models.Metadata.Feature>(Models.Metadata.Part.FeatureKey);
Assert.NotNull(features);
Models.Metadata.Feature? feature = Assert.Single(features);
ValidateMetadataFeature(feature);
}
// private static void ValidateMetadataPartFeature(Models.Metadata.PartFeature? partFeature)
// {
// Assert.NotNull(partFeature);
// Assert.Equal("name", partFeature.ReadString(Models.Metadata.Feature.NameKey));
// Assert.Equal("imperfect", partFeature.ReadString(Models.Metadata.Feature.OverallKey));
// Assert.Equal("imperfect", partFeature.ReadString(Models.Metadata.Feature.StatusKey));
// Assert.Equal("protection", partFeature.ReadString(Models.Metadata.Feature.FeatureTypeKey));
// Assert.Equal("value", partFeature.ReadString(Models.Metadata.Feature.ValueKey));
// Part? part = partFeature.Read<Part>(PartFeature.PartKey);
// ValidateMetadataPart(part);
// }
private static void ValidateMetadataPort(Models.Metadata.Port? port)
{
Assert.NotNull(port);
Assert.Equal("tag", port.ReadString(Models.Metadata.Port.TagKey));
Models.Metadata.Analog[]? dipValues = port.Read<Models.Metadata.Analog[]>(Models.Metadata.Port.AnalogKey);
Models.Metadata.Analog[]? dipValues = port.ReadItemArray<Models.Metadata.Analog>(Models.Metadata.Port.AnalogKey);
Assert.NotNull(dipValues);
Models.Metadata.Analog? dipValue = Assert.Single(dipValues);
ValidateMetadataAnalog(dipValue);
@@ -919,152 +980,153 @@ namespace SabreTools.DatFiles.Test
Assert.Equal("region", release.ReadString(Models.Metadata.Release.RegionKey));
}
// private static void ValidateMetadataRom(Models.Metadata.Rom? rom)
// {
// Assert.NotNull(rom);
// Assert.Equal("album", rom.ReadString(Models.Metadata.Rom.AlbumKey));
// Assert.Equal("alt_romname", rom.ReadString(Models.Metadata.Rom.AltRomnameKey));
// Assert.Equal("alt_title", rom.ReadString(Models.Metadata.Rom.AltTitleKey));
// Assert.Equal("artist", rom.ReadString(Models.Metadata.Rom.ArtistKey));
// Assert.Equal("asr_detected_lang", rom.ReadString(Models.Metadata.Rom.ASRDetectedLangKey));
// Assert.Equal("asr_detected_lang_conf", rom.ReadString(Models.Metadata.Rom.ASRDetectedLangConfKey));
// Assert.Equal("asr_transcribed_lang", rom.ReadString(Models.Metadata.Rom.ASRTranscribedLangKey));
// Assert.Equal("bios", rom.ReadString(Models.Metadata.Rom.BiosKey));
// Assert.Equal("bitrate", rom.ReadString(Models.Metadata.Rom.BitrateKey));
// Assert.Equal("btih", rom.ReadString(Models.Metadata.Rom.BitTorrentMagnetHashKey));
// Assert.Equal("cloth_cover_detection_module_version", rom.ReadString(Models.Metadata.Rom.ClothCoverDetectionModuleVersionKey));
// Assert.Equal("collection-catalog-number", rom.ReadString(Models.Metadata.Rom.CollectionCatalogNumberKey));
// Assert.Equal("comment", rom.ReadString(Models.Metadata.Rom.CommentKey));
// Assert.Equal(ZeroHash.CRC32Str, rom.ReadString(Models.Metadata.Rom.CRCKey));
// Assert.Equal("creator", rom.ReadString(Models.Metadata.Rom.CreatorKey));
// Assert.Equal("date", rom.ReadString(Models.Metadata.Rom.DateKey));
// Assert.True(rom.ReadBool(Models.Metadata.Rom.DisposeKey));
// Assert.Equal("extension", rom.ReadString(Models.Metadata.Rom.ExtensionKey));
// Assert.Equal(12345, rom.ReadLong(Models.Metadata.Rom.FileCountKey));
// Assert.True(rom.ReadBool(Models.Metadata.Rom.FileIsAvailableKey));
// Assert.Equal("flags", rom.ReadString(Models.Metadata.Rom.FlagsKey));
// Assert.Equal("format", rom.ReadString(Models.Metadata.Rom.FormatKey));
// Assert.Equal("header", rom.ReadString(Models.Metadata.Rom.HeaderKey));
// Assert.Equal("height", rom.ReadString(Models.Metadata.Rom.HeightKey));
// Assert.Equal("hocr_char_to_word_hocr_version", rom.ReadString(Models.Metadata.Rom.hOCRCharToWordhOCRVersionKey));
// Assert.Equal("hocr_char_to_word_module_version", rom.ReadString(Models.Metadata.Rom.hOCRCharToWordModuleVersionKey));
// Assert.Equal("hocr_fts_text_hocr_version", rom.ReadString(Models.Metadata.Rom.hOCRFtsTexthOCRVersionKey));
// Assert.Equal("hocr_fts_text_module_version", rom.ReadString(Models.Metadata.Rom.hOCRFtsTextModuleVersionKey));
// Assert.Equal("hocr_pageindex_hocr_version", rom.ReadString(Models.Metadata.Rom.hOCRPageIndexhOCRVersionKey));
// Assert.Equal("hocr_pageindex_module_version", rom.ReadString(Models.Metadata.Rom.hOCRPageIndexModuleVersionKey));
// Assert.True(rom.ReadBool(Models.Metadata.Rom.InvertedKey));
// Assert.Equal("mtime", rom.ReadString(Models.Metadata.Rom.LastModifiedTimeKey));
// Assert.Equal("length", rom.ReadString(Models.Metadata.Rom.LengthKey));
// Assert.Equal("load16_byte", rom.ReadString(Models.Metadata.Rom.LoadFlagKey));
// Assert.Equal("matrix_number", rom.ReadString(Models.Metadata.Rom.MatrixNumberKey));
// Assert.Equal(ZeroHash.GetString(HashType.MD2), rom.ReadString(Models.Metadata.Rom.MD2Key));
// Assert.Equal(ZeroHash.GetString(HashType.MD4), rom.ReadString(Models.Metadata.Rom.MD4Key));
// Assert.Equal(ZeroHash.MD5Str, rom.ReadString(Models.Metadata.Rom.MD5Key));
// Assert.Null(rom.ReadString(Models.Metadata.Rom.OpenMSXMediaType)); // Omit due to other test
// Assert.Equal("merge", rom.ReadString(Models.Metadata.Rom.MergeKey));
// Assert.True(rom.ReadBool(Models.Metadata.Rom.MIAKey));
// Assert.Equal("name", rom.ReadString(Models.Metadata.Rom.NameKey));
// Assert.Equal("ocr", rom.ReadString(Models.Metadata.Rom.TesseractOCRKey));
// Assert.Equal("ocr_converted", rom.ReadString(Models.Metadata.Rom.TesseractOCRConvertedKey));
// Assert.Equal("ocr_detected_lang", rom.ReadString(Models.Metadata.Rom.TesseractOCRDetectedLangKey));
// Assert.Equal("ocr_detected_lang_conf", rom.ReadString(Models.Metadata.Rom.TesseractOCRDetectedLangConfKey));
// Assert.Equal("ocr_detected_script", rom.ReadString(Models.Metadata.Rom.TesseractOCRDetectedScriptKey));
// Assert.Equal("ocr_detected_script_conf", rom.ReadString(Models.Metadata.Rom.TesseractOCRDetectedScriptConfKey));
// Assert.Equal("ocr_module_version", rom.ReadString(Models.Metadata.Rom.TesseractOCRModuleVersionKey));
// Assert.Equal("ocr_parameters", rom.ReadString(Models.Metadata.Rom.TesseractOCRParametersKey));
// Assert.Equal("offset", rom.ReadString(Models.Metadata.Rom.OffsetKey));
// Assert.True(rom.ReadBool(Models.Metadata.Rom.OptionalKey));
// Assert.Equal("original", rom.ReadString(Models.Metadata.Rom.OriginalKey));
// Assert.Equal("pdf_module_version", rom.ReadString(Models.Metadata.Rom.PDFModuleVersionKey));
// Assert.Equal("preview-image", rom.ReadString(Models.Metadata.Rom.PreviewImageKey));
// Assert.Equal("publisher", rom.ReadString(Models.Metadata.Rom.PublisherKey));
// Assert.Equal("region", rom.ReadString(Models.Metadata.Rom.RegionKey));
// Assert.Equal("remark", rom.ReadString(Models.Metadata.Rom.RemarkKey));
// Assert.Equal("rotation", rom.ReadString(Models.Metadata.Rom.RotationKey));
// Assert.Equal("serial", rom.ReadString(Models.Metadata.Rom.SerialKey));
// Assert.Equal(ZeroHash.SHA1Str, rom.ReadString(Models.Metadata.Rom.SHA1Key));
// Assert.Equal(ZeroHash.SHA256Str, rom.ReadString(Models.Metadata.Rom.SHA256Key));
// Assert.Equal(ZeroHash.SHA384Str, rom.ReadString(Models.Metadata.Rom.SHA384Key));
// Assert.Equal(ZeroHash.SHA512Str, rom.ReadString(Models.Metadata.Rom.SHA512Key));
// Assert.Equal(12345, rom.ReadLong(Models.Metadata.Rom.SizeKey));
// Assert.True(rom.ReadBool(Models.Metadata.Rom.SoundOnlyKey));
// Assert.Equal("source", rom.ReadString(Models.Metadata.Rom.SourceKey));
// Assert.Equal(ZeroHash.SpamSumStr, rom.ReadString(Models.Metadata.Rom.SpamSumKey));
// Assert.Equal("start", rom.ReadString(Models.Metadata.Rom.StartKey));
// Assert.Equal("good", rom.ReadString(Models.Metadata.Rom.StatusKey));
// Assert.Equal("summation", rom.ReadString(Models.Metadata.Rom.SummationKey));
// Assert.Equal("title", rom.ReadString(Models.Metadata.Rom.TitleKey));
// Assert.Equal("track", rom.ReadString(Models.Metadata.Rom.TrackKey));
// Assert.Equal("type", rom.ReadString(Models.Metadata.Rom.OpenMSXType));
// Assert.Equal("value", rom.ReadString(Models.Metadata.Rom.ValueKey));
// Assert.Equal("whisper_asr_module_version", rom.ReadString(Models.Metadata.Rom.WhisperASRModuleVersionKey));
// Assert.Equal("whisper_model_hash", rom.ReadString(Models.Metadata.Rom.WhisperModelHashKey));
// Assert.Equal("whisper_model_name", rom.ReadString(Models.Metadata.Rom.WhisperModelNameKey));
// Assert.Equal("whisper_version", rom.ReadString(Models.Metadata.Rom.WhisperVersionKey));
// Assert.Equal("width", rom.ReadString(Models.Metadata.Rom.WidthKey));
// Assert.Equal("word_conf_0_10", rom.ReadString(Models.Metadata.Rom.WordConfidenceInterval0To10Key));
// Assert.Equal("word_conf_11_20", rom.ReadString(Models.Metadata.Rom.WordConfidenceInterval11To20Key));
// Assert.Equal("word_conf_21_30", rom.ReadString(Models.Metadata.Rom.WordConfidenceInterval21To30Key));
// Assert.Equal("word_conf_31_40", rom.ReadString(Models.Metadata.Rom.WordConfidenceInterval31To40Key));
// Assert.Equal("word_conf_41_50", rom.ReadString(Models.Metadata.Rom.WordConfidenceInterval41To50Key));
// Assert.Equal("word_conf_51_60", rom.ReadString(Models.Metadata.Rom.WordConfidenceInterval51To60Key));
// Assert.Equal("word_conf_61_70", rom.ReadString(Models.Metadata.Rom.WordConfidenceInterval61To70Key));
// Assert.Equal("word_conf_71_80", rom.ReadString(Models.Metadata.Rom.WordConfidenceInterval71To80Key));
// Assert.Equal("word_conf_81_90", rom.ReadString(Models.Metadata.Rom.WordConfidenceInterval81To90Key));
// Assert.Equal("word_conf_91_100", rom.ReadString(Models.Metadata.Rom.WordConfidenceInterval91To100Key));
// Assert.Equal(ZeroHash.GetString(HashType.XxHash3), rom.ReadString(Models.Metadata.Rom.xxHash364Key));
// Assert.Equal(ZeroHash.GetString(HashType.XxHash128), rom.ReadString(Models.Metadata.Rom.xxHash3128Key));
// }
private static void ValidateMetadataRom(Models.Metadata.Rom? rom)
{
Assert.NotNull(rom);
Assert.Equal("album", rom.ReadString(Models.Metadata.Rom.AlbumKey));
Assert.Equal("alt_romname", rom.ReadString(Models.Metadata.Rom.AltRomnameKey));
Assert.Equal("alt_title", rom.ReadString(Models.Metadata.Rom.AltTitleKey));
Assert.Equal("artist", rom.ReadString(Models.Metadata.Rom.ArtistKey));
Assert.Equal("asr_detected_lang", rom.ReadString(Models.Metadata.Rom.ASRDetectedLangKey));
Assert.Equal("asr_detected_lang_conf", rom.ReadString(Models.Metadata.Rom.ASRDetectedLangConfKey));
Assert.Equal("asr_transcribed_lang", rom.ReadString(Models.Metadata.Rom.ASRTranscribedLangKey));
Assert.Equal("bios", rom.ReadString(Models.Metadata.Rom.BiosKey));
Assert.Equal("bitrate", rom.ReadString(Models.Metadata.Rom.BitrateKey));
Assert.Equal("btih", rom.ReadString(Models.Metadata.Rom.BitTorrentMagnetHashKey));
Assert.Equal("cloth_cover_detection_module_version", rom.ReadString(Models.Metadata.Rom.ClothCoverDetectionModuleVersionKey));
Assert.Equal("collection-catalog-number", rom.ReadString(Models.Metadata.Rom.CollectionCatalogNumberKey));
Assert.Equal("comment", rom.ReadString(Models.Metadata.Rom.CommentKey));
Assert.Equal(ZeroHash.CRC32Str, rom.ReadString(Models.Metadata.Rom.CRCKey));
Assert.Equal("creator", rom.ReadString(Models.Metadata.Rom.CreatorKey));
Assert.Equal("date", rom.ReadString(Models.Metadata.Rom.DateKey));
Assert.True(rom.ReadBool(Models.Metadata.Rom.DisposeKey));
Assert.Equal("extension", rom.ReadString(Models.Metadata.Rom.ExtensionKey));
Assert.Equal(12345, rom.ReadLong(Models.Metadata.Rom.FileCountKey));
Assert.True(rom.ReadBool(Models.Metadata.Rom.FileIsAvailableKey));
Assert.Equal("flags", rom.ReadString(Models.Metadata.Rom.FlagsKey));
Assert.Equal("format", rom.ReadString(Models.Metadata.Rom.FormatKey));
Assert.Equal("header", rom.ReadString(Models.Metadata.Rom.HeaderKey));
Assert.Equal("height", rom.ReadString(Models.Metadata.Rom.HeightKey));
Assert.Equal("hocr_char_to_word_hocr_version", rom.ReadString(Models.Metadata.Rom.hOCRCharToWordhOCRVersionKey));
Assert.Equal("hocr_char_to_word_module_version", rom.ReadString(Models.Metadata.Rom.hOCRCharToWordModuleVersionKey));
Assert.Equal("hocr_fts_text_hocr_version", rom.ReadString(Models.Metadata.Rom.hOCRFtsTexthOCRVersionKey));
Assert.Equal("hocr_fts_text_module_version", rom.ReadString(Models.Metadata.Rom.hOCRFtsTextModuleVersionKey));
Assert.Equal("hocr_pageindex_hocr_version", rom.ReadString(Models.Metadata.Rom.hOCRPageIndexhOCRVersionKey));
Assert.Equal("hocr_pageindex_module_version", rom.ReadString(Models.Metadata.Rom.hOCRPageIndexModuleVersionKey));
Assert.True(rom.ReadBool(Models.Metadata.Rom.InvertedKey));
Assert.Equal("mtime", rom.ReadString(Models.Metadata.Rom.LastModifiedTimeKey));
Assert.Equal("length", rom.ReadString(Models.Metadata.Rom.LengthKey));
Assert.Equal("load16_byte", rom.ReadString(Models.Metadata.Rom.LoadFlagKey));
Assert.Equal("matrix_number", rom.ReadString(Models.Metadata.Rom.MatrixNumberKey));
Assert.Equal(ZeroHash.GetString(HashType.MD2), rom.ReadString(Models.Metadata.Rom.MD2Key));
Assert.Equal(ZeroHash.GetString(HashType.MD4), rom.ReadString(Models.Metadata.Rom.MD4Key));
Assert.Equal(ZeroHash.MD5Str, rom.ReadString(Models.Metadata.Rom.MD5Key));
Assert.Null(rom.ReadString(Models.Metadata.Rom.OpenMSXMediaType)); // Omit due to other test
Assert.Equal("merge", rom.ReadString(Models.Metadata.Rom.MergeKey));
Assert.True(rom.ReadBool(Models.Metadata.Rom.MIAKey));
Assert.Equal("name", rom.ReadString(Models.Metadata.Rom.NameKey));
Assert.Equal("ocr", rom.ReadString(Models.Metadata.Rom.TesseractOCRKey));
Assert.Equal("ocr_converted", rom.ReadString(Models.Metadata.Rom.TesseractOCRConvertedKey));
Assert.Equal("ocr_detected_lang", rom.ReadString(Models.Metadata.Rom.TesseractOCRDetectedLangKey));
Assert.Equal("ocr_detected_lang_conf", rom.ReadString(Models.Metadata.Rom.TesseractOCRDetectedLangConfKey));
Assert.Equal("ocr_detected_script", rom.ReadString(Models.Metadata.Rom.TesseractOCRDetectedScriptKey));
Assert.Equal("ocr_detected_script_conf", rom.ReadString(Models.Metadata.Rom.TesseractOCRDetectedScriptConfKey));
Assert.Equal("ocr_module_version", rom.ReadString(Models.Metadata.Rom.TesseractOCRModuleVersionKey));
Assert.Equal("ocr_parameters", rom.ReadString(Models.Metadata.Rom.TesseractOCRParametersKey));
Assert.Equal("offset", rom.ReadString(Models.Metadata.Rom.OffsetKey));
Assert.True(rom.ReadBool(Models.Metadata.Rom.OptionalKey));
Assert.Equal("original", rom.ReadString(Models.Metadata.Rom.OriginalKey));
Assert.Equal("pdf_module_version", rom.ReadString(Models.Metadata.Rom.PDFModuleVersionKey));
Assert.Equal("preview-image", rom.ReadString(Models.Metadata.Rom.PreviewImageKey));
Assert.Equal("publisher", rom.ReadString(Models.Metadata.Rom.PublisherKey));
Assert.Equal("region", rom.ReadString(Models.Metadata.Rom.RegionKey));
Assert.Equal("remark", rom.ReadString(Models.Metadata.Rom.RemarkKey));
Assert.Equal("rotation", rom.ReadString(Models.Metadata.Rom.RotationKey));
Assert.Equal("serial", rom.ReadString(Models.Metadata.Rom.SerialKey));
Assert.Equal(ZeroHash.SHA1Str, rom.ReadString(Models.Metadata.Rom.SHA1Key));
Assert.Equal(ZeroHash.SHA256Str, rom.ReadString(Models.Metadata.Rom.SHA256Key));
Assert.Equal(ZeroHash.SHA384Str, rom.ReadString(Models.Metadata.Rom.SHA384Key));
Assert.Equal(ZeroHash.SHA512Str, rom.ReadString(Models.Metadata.Rom.SHA512Key));
Assert.Equal(12345, rom.ReadLong(Models.Metadata.Rom.SizeKey));
Assert.True(rom.ReadBool(Models.Metadata.Rom.SoundOnlyKey));
Assert.Equal("source", rom.ReadString(Models.Metadata.Rom.SourceKey));
Assert.Equal(ZeroHash.SpamSumStr, rom.ReadString(Models.Metadata.Rom.SpamSumKey));
Assert.Equal("start", rom.ReadString(Models.Metadata.Rom.StartKey));
Assert.Equal("good", rom.ReadString(Models.Metadata.Rom.StatusKey));
Assert.Equal("summation", rom.ReadString(Models.Metadata.Rom.SummationKey));
Assert.Equal("title", rom.ReadString(Models.Metadata.Rom.TitleKey));
Assert.Equal("track", rom.ReadString(Models.Metadata.Rom.TrackKey));
Assert.Equal("type", rom.ReadString(Models.Metadata.Rom.OpenMSXType));
Assert.Equal("value", rom.ReadString(Models.Metadata.Rom.ValueKey));
Assert.Equal("whisper_asr_module_version", rom.ReadString(Models.Metadata.Rom.WhisperASRModuleVersionKey));
Assert.Equal("whisper_model_hash", rom.ReadString(Models.Metadata.Rom.WhisperModelHashKey));
Assert.Equal("whisper_model_name", rom.ReadString(Models.Metadata.Rom.WhisperModelNameKey));
Assert.Equal("whisper_version", rom.ReadString(Models.Metadata.Rom.WhisperVersionKey));
Assert.Equal("width", rom.ReadString(Models.Metadata.Rom.WidthKey));
Assert.Equal("word_conf_0_10", rom.ReadString(Models.Metadata.Rom.WordConfidenceInterval0To10Key));
Assert.Equal("word_conf_11_20", rom.ReadString(Models.Metadata.Rom.WordConfidenceInterval11To20Key));
Assert.Equal("word_conf_21_30", rom.ReadString(Models.Metadata.Rom.WordConfidenceInterval21To30Key));
Assert.Equal("word_conf_31_40", rom.ReadString(Models.Metadata.Rom.WordConfidenceInterval31To40Key));
Assert.Equal("word_conf_41_50", rom.ReadString(Models.Metadata.Rom.WordConfidenceInterval41To50Key));
Assert.Equal("word_conf_51_60", rom.ReadString(Models.Metadata.Rom.WordConfidenceInterval51To60Key));
Assert.Equal("word_conf_61_70", rom.ReadString(Models.Metadata.Rom.WordConfidenceInterval61To70Key));
Assert.Equal("word_conf_71_80", rom.ReadString(Models.Metadata.Rom.WordConfidenceInterval71To80Key));
Assert.Equal("word_conf_81_90", rom.ReadString(Models.Metadata.Rom.WordConfidenceInterval81To90Key));
Assert.Equal("word_conf_91_100", rom.ReadString(Models.Metadata.Rom.WordConfidenceInterval91To100Key));
Assert.Equal(ZeroHash.GetString(HashType.XxHash3), rom.ReadString(Models.Metadata.Rom.xxHash364Key));
Assert.Equal(ZeroHash.GetString(HashType.XxHash128), rom.ReadString(Models.Metadata.Rom.xxHash3128Key));
}
// private static void ValidateMetadataSample(Models.Metadata.Sample? sample)
// {
// Assert.NotNull(sample);
// Assert.Equal("name", sample.ReadString(Models.Metadata.Sample.NameKey));
// }
private static void ValidateMetadataSample(Models.Metadata.Sample? sample)
{
Assert.NotNull(sample);
Assert.Equal("name", sample.ReadString(Models.Metadata.Sample.NameKey));
}
// private static void ValidateMetadataSharedFeat(Models.Metadata.SharedFeat? sharedFeat)
// {
// Assert.NotNull(sharedFeat);
// Assert.Equal("name", sharedFeat.ReadString(Models.Metadata.SharedFeat.NameKey));
// Assert.Equal("value", sharedFeat.ReadString(Models.Metadata.SharedFeat.ValueKey));
// }
private static void ValidateMetadataSharedFeat(Models.Metadata.SharedFeat? sharedFeat)
{
Assert.NotNull(sharedFeat);
Assert.Equal("name", sharedFeat.ReadString(Models.Metadata.SharedFeat.NameKey));
Assert.Equal("value", sharedFeat.ReadString(Models.Metadata.SharedFeat.ValueKey));
}
// private static void ValidateMetadataSlot(Models.Metadata.Slot? slot)
// {
// Assert.NotNull(slot);
// Assert.Equal("name", slot.ReadString(Models.Metadata.Slot.NameKey));
private static void ValidateMetadataSlot(Models.Metadata.Slot? slot)
{
Assert.NotNull(slot);
Assert.Equal("name", slot.ReadString(Models.Metadata.Slot.NameKey));
// SlotOption[]? slotOptions = slot.Read<SlotOption[]>(Models.Metadata.Slot.SlotOptionKey);
// Assert.NotNull(slotOptions);
// SlotOption? slotOption = Assert.Single(slotOptions);
// ValidateMetadataSlotOption(slotOption);
// }
Models.Metadata.SlotOption[]? slotOptions = slot.ReadItemArray<Models.Metadata.SlotOption>(Models.Metadata.Slot.SlotOptionKey);
Assert.NotNull(slotOptions);
Models.Metadata.SlotOption? slotOption = Assert.Single(slotOptions);
ValidateMetadataSlotOption(slotOption);
}
// private static void ValidateMetadataSlotOption(Models.Metadata.SlotOption? slotOption)
// {
// Assert.NotNull(slotOption);
// Assert.True(slotOption.ReadBool(Models.Metadata.SlotOption.DefaultKey));
// Assert.Equal("devname", slotOption.ReadString(Models.Metadata.SlotOption.DevNameKey));
// Assert.Equal("name", slotOption.ReadString(Models.Metadata.SlotOption.NameKey));
// }
private static void ValidateMetadataSlotOption(Models.Metadata.SlotOption? slotOption)
{
Assert.NotNull(slotOption);
Assert.True(slotOption.ReadBool(Models.Metadata.SlotOption.DefaultKey));
Assert.Equal("devname", slotOption.ReadString(Models.Metadata.SlotOption.DevNameKey));
Assert.Equal("name", slotOption.ReadString(Models.Metadata.SlotOption.NameKey));
}
// private static void ValidateMetadataSoftwareList(Models.Metadata.SoftwareList? softwareList)
// {
// Assert.NotNull(softwareList);
// Assert.Equal("description", softwareList.ReadString(Models.Metadata.SoftwareList.DescriptionKey));
// Assert.Equal("filter", softwareList.ReadString(Models.Metadata.SoftwareList.FilterKey));
// Assert.Equal("name", softwareList.ReadString(Models.Metadata.SoftwareList.NameKey));
// Assert.Equal("notes", softwareList.ReadString(Models.Metadata.SoftwareList.NotesKey));
// // TODO: Figure out why Models.Metadata.SoftwareList.SoftwareKey doesn't get processed
// Assert.Equal("original", softwareList.ReadString(Models.Metadata.SoftwareList.StatusKey));
// Assert.Equal("tag", softwareList.ReadString(Models.Metadata.SoftwareList.TagKey));
// }
private static void ValidateMetadataSoftwareList(Models.Metadata.SoftwareList? softwareList)
{
Assert.NotNull(softwareList);
Assert.Equal("description", softwareList.ReadString(Models.Metadata.SoftwareList.DescriptionKey));
Assert.Equal("filter", softwareList.ReadString(Models.Metadata.SoftwareList.FilterKey));
Assert.Equal("name", softwareList.ReadString(Models.Metadata.SoftwareList.NameKey));
Assert.Equal("notes", softwareList.ReadString(Models.Metadata.SoftwareList.NotesKey));
Assert.Equal("original", softwareList.ReadString(Models.Metadata.SoftwareList.StatusKey));
Assert.Equal("tag", softwareList.ReadString(Models.Metadata.SoftwareList.TagKey));
// private static void ValidateMetadataSound(Models.Metadata.Sound? sound)
// {
// Assert.NotNull(sound);
// Assert.Equal(12345, sound.ReadLong(Models.Metadata.Sound.ChannelsKey));
// }
// TODO: Figure out why Models.Metadata.SoftwareList.SoftwareKey doesn't get processed
}
private static void ValidateMetadataSound(Models.Metadata.Sound? sound)
{
Assert.NotNull(sound);
Assert.Equal(12345, sound.ReadLong(Models.Metadata.Sound.ChannelsKey));
}
private static void ValidateMetadataTrurip(Models.Logiqx.Trurip? trurip)
{
@@ -1079,23 +1141,23 @@ namespace SabreTools.DatFiles.Test
Assert.Equal("score", trurip.Score);
Assert.Equal("players", trurip.Players);
Assert.Equal("enabled", trurip.Enabled);
Assert.Equal("True", trurip.CRC);
Assert.Equal("source", trurip.Source);
Assert.Equal("yes", trurip.CRC);
Assert.Equal("sourcefile", trurip.Source);
Assert.Equal("cloneof", trurip.CloneOf);
Assert.Equal("relatedto", trurip.RelatedTo);
}
// private static void ValidateMetadataVideo(Models.Metadata.Video? video)
// {
// Assert.NotNull(video);
// Assert.Equal(12345, video.ReadLong(Models.Metadata.Video.AspectXKey));
// Assert.Equal(12345, video.ReadLong(Models.Metadata.Video.AspectYKey));
// Assert.Equal("vector", video.ReadString(Models.Metadata.Video.DisplayTypeKey));
// Assert.Equal(12345, video.ReadLong(Models.Metadata.Video.HeightKey));
// Assert.Equal(12345, video.ReadLong(Models.Metadata.Video.RefreshKey));
// Assert.Equal(12345, video.ReadLong(Models.Metadata.Video.WidthKey));
// Assert.Equal(90, video.ReadLong(Models.Metadata.Video.RotateKey));
// }
private static void ValidateMetadataVideo(Models.Metadata.Video? video)
{
Assert.NotNull(video);
Assert.Equal(12345, video.ReadLong(Models.Metadata.Video.AspectXKey));
Assert.Equal(12345, video.ReadLong(Models.Metadata.Video.AspectYKey));
Assert.Equal(12345, video.ReadLong(Models.Metadata.Video.HeightKey));
Assert.Equal("vertical", video.ReadString(Models.Metadata.Video.OrientationKey));
Assert.Equal(12345, video.ReadLong(Models.Metadata.Video.RefreshKey));
Assert.Equal("vector", video.ReadString(Models.Metadata.Video.ScreenKey));
Assert.Equal(12345, video.ReadLong(Models.Metadata.Video.WidthKey));
}
#endregion
}

View File

@@ -1076,6 +1076,18 @@ namespace SabreTools.DatFiles
videoItem[Models.Metadata.Video.ScreenKey] = displayItem.ReadString(Models.Metadata.Display.DisplayTypeKey).AsEnumValue<DisplayType>().AsStringValue();
videoItem[Models.Metadata.Video.WidthKey] = displayItem.ReadLong(Models.Metadata.Display.WidthKey).ToString();
switch (displayItem.ReadLong(Models.Metadata.Display.RotateKey))
{
case 0:
case 180:
videoItem[Models.Metadata.Video.OrientationKey] = "horizontal";
break;
case 90:
case 270:
videoItem[Models.Metadata.Video.OrientationKey] = "vertical";
break;
}
EnsureMachineKey<Models.Metadata.Video?>(machine, Models.Metadata.Machine.VideoKey);
AppendToMachineKey(machine, Models.Metadata.Machine.VideoKey, videoItem);
}
@@ -1094,14 +1106,8 @@ namespace SabreTools.DatFiles
var controls = item.GetFieldValue<DatItems.Formats.Control[]?>(Models.Metadata.Input.ControlKey);
if (controls != null)
{
List<Models.Metadata.Control> controlItems = [];
foreach (var control in controls)
{
var controlItem = control.GetInternalClone();
controlItems.Add(controlItem);
}
inputItem[Models.Metadata.Input.ControlKey] = controlItems.ToArray();
Models.Metadata.Control[] controlItems = Array.ConvertAll(controls, control => control.GetInternalClone());
inputItem[Models.Metadata.Input.ControlKey] = controlItems;
}
return inputItem;
@@ -1118,14 +1124,8 @@ namespace SabreTools.DatFiles
var analogs = item.GetFieldValue<DatItems.Formats.Analog[]?>(Models.Metadata.Port.AnalogKey);
if (analogs != null)
{
List<Models.Metadata.Analog> analogItems = [];
foreach (var analog in analogs)
{
var extensionItem = analog.GetInternalClone();
analogItems.Add(extensionItem);
}
slotItem[Models.Metadata.Port.AnalogKey] = analogItems.ToArray();
Models.Metadata.Analog[] analogItems = Array.ConvertAll(analogs, analog => analog.GetInternalClone());
slotItem[Models.Metadata.Port.AnalogKey] = analogItems;
}
return slotItem;
@@ -1242,14 +1242,8 @@ namespace SabreTools.DatFiles
var slotOptions = item.GetFieldValue<DatItems.Formats.SlotOption[]?>(Models.Metadata.Slot.SlotOptionKey);
if (slotOptions != null)
{
List<Models.Metadata.SlotOption> slotOptionItems = [];
foreach (var slotOption in slotOptions)
{
var extensionItem = slotOption.GetInternalClone();
slotOptionItems.Add(extensionItem);
}
slotItem[Models.Metadata.Slot.SlotOptionKey] = slotOptionItems.ToArray();
Models.Metadata.SlotOption[] slotOptionItems = Array.ConvertAll(slotOptions, slotOption => slotOption.GetInternalClone());
slotItem[Models.Metadata.Slot.SlotOptionKey] = slotOptionItems;
}
return slotItem;

View File

@@ -608,6 +608,7 @@ namespace SabreTools.DatItems
/// <summary>
/// Get a clone of the current internal model
/// </summary>
/// TODO: Make virtual so individuals can handle conversion
public T GetInternalClone() => (_internal.Clone() as T)!;
#endregion