ConvertFromMetadata tests checkpoint

This commit is contained in:
Matt Nadareski
2025-01-10 14:02:32 -05:00
parent caf20ffbea
commit a4f0540736
2 changed files with 71 additions and 3 deletions

View File

@@ -249,6 +249,33 @@ namespace SabreTools.DatFiles.Test
[Models.Metadata.DeviceRef.NameKey] = "name", [Models.Metadata.DeviceRef.NameKey] = "name",
}; };
Models.Metadata.DipLocation dipLocation = new Models.Metadata.DipLocation
{
[Models.Metadata.DipLocation.InvertedKey] = "yes",
[Models.Metadata.DipLocation.NameKey] = "name",
[Models.Metadata.DipLocation.NumberKey] = "number",
};
Models.Metadata.DipValue dipValue = new Models.Metadata.DipValue
{
[Models.Metadata.DipValue.ConditionKey] = condition,
[Models.Metadata.DipValue.DefaultKey] = "yes",
[Models.Metadata.DipValue.NameKey] = "name",
[Models.Metadata.DipValue.ValueKey] = "value",
};
Models.Metadata.DipSwitch dipSwitch = new Models.Metadata.DipSwitch
{
[Models.Metadata.DipSwitch.ConditionKey] = condition,
[Models.Metadata.DipSwitch.DefaultKey] = "yes",
[Models.Metadata.DipSwitch.DipLocationKey] = new Models.Metadata.DipLocation[] { dipLocation },
[Models.Metadata.DipSwitch.DipValueKey] = new Models.Metadata.DipValue[] { dipValue },
[Models.Metadata.DipSwitch.EntryKey] = new string[] { "entry" },
[Models.Metadata.DipSwitch.MaskKey] = "mask",
[Models.Metadata.DipSwitch.NameKey] = "name",
[Models.Metadata.DipSwitch.TagKey] = "tag",
};
// TODO: Build a machine with one of every item // TODO: Build a machine with one of every item
Models.Metadata.Machine machine = new Models.Metadata.Machine Models.Metadata.Machine machine = new Models.Metadata.Machine
{ {
@@ -269,7 +296,7 @@ namespace SabreTools.DatFiles.Test
[Models.Metadata.Machine.DescriptionKey] = "description", [Models.Metadata.Machine.DescriptionKey] = "description",
[Models.Metadata.Machine.DeviceKey] = new Models.Metadata.Device[] { device }, [Models.Metadata.Machine.DeviceKey] = new Models.Metadata.Device[] { device },
[Models.Metadata.Machine.DeviceRefKey] = new Models.Metadata.DeviceRef[] { deviceRef }, [Models.Metadata.Machine.DeviceRefKey] = new Models.Metadata.DeviceRef[] { deviceRef },
[Models.Metadata.Machine.DipSwitchKey] = "REPLACE", // Type array [Models.Metadata.Machine.DipSwitchKey] = new Models.Metadata.DipSwitch[] { dipSwitch },
[Models.Metadata.Machine.DirNameKey] = "dirname", [Models.Metadata.Machine.DirNameKey] = "dirname",
[Models.Metadata.Machine.DiskKey] = "REPLACE", // Type array [Models.Metadata.Machine.DiskKey] = "REPLACE", // Type array
[Models.Metadata.Machine.DisplayCountKey] = "displaycount", [Models.Metadata.Machine.DisplayCountKey] = "displaycount",
@@ -354,7 +381,6 @@ namespace SabreTools.DatFiles.Test
Assert.Equal("control", actualMachine.GetStringFieldValue(Models.Metadata.Machine.ControlKey)); Assert.Equal("control", actualMachine.GetStringFieldValue(Models.Metadata.Machine.ControlKey));
Assert.Equal("country", actualMachine.GetStringFieldValue(Models.Metadata.Machine.CountryKey)); Assert.Equal("country", actualMachine.GetStringFieldValue(Models.Metadata.Machine.CountryKey));
Assert.Equal("description", actualMachine.GetStringFieldValue(Models.Metadata.Machine.DescriptionKey)); Assert.Equal("description", actualMachine.GetStringFieldValue(Models.Metadata.Machine.DescriptionKey));
// Assert.Equal("REPLACE", actualMachine.GetStringFieldValue(Models.Metadata.Machine.DipSwitchKey)); // Type array
Assert.Equal("dirname", actualMachine.GetStringFieldValue(Models.Metadata.Machine.DirNameKey)); Assert.Equal("dirname", actualMachine.GetStringFieldValue(Models.Metadata.Machine.DirNameKey));
// Assert.Equal("REPLACE", actualMachine.GetStringFieldValue(Models.Metadata.Machine.DiskKey)); // Type array // Assert.Equal("REPLACE", actualMachine.GetStringFieldValue(Models.Metadata.Machine.DiskKey)); // Type array
Assert.Equal("displaycount", actualMachine.GetStringFieldValue(Models.Metadata.Machine.DisplayCountKey)); Assert.Equal("displaycount", actualMachine.GetStringFieldValue(Models.Metadata.Machine.DisplayCountKey));
@@ -510,6 +536,48 @@ namespace SabreTools.DatFiles.Test
Assert.NotNull(actualDeviceRef); Assert.NotNull(actualDeviceRef);
Assert.Equal("name", actualDeviceRef.GetStringFieldValue(Models.Metadata.DeviceRef.NameKey)); Assert.Equal("name", actualDeviceRef.GetStringFieldValue(Models.Metadata.DeviceRef.NameKey));
DatItems.Formats.DipSwitch? actualDipSwitch = Array.Find(datItems, item => item is DatItems.Formats.DipSwitch) as DatItems.Formats.DipSwitch;
Assert.NotNull(actualDipSwitch);
Assert.True(actualDipSwitch.GetBoolFieldValue(Models.Metadata.DipSwitch.DefaultKey));
Assert.Equal("mask", actualDipSwitch.GetStringFieldValue(Models.Metadata.DipSwitch.MaskKey));
Assert.Equal("name", actualDipSwitch.GetStringFieldValue(Models.Metadata.DipSwitch.NameKey));
Assert.Equal("tag", actualDipSwitch.GetStringFieldValue(Models.Metadata.DipSwitch.TagKey));
DatItems.Formats.Condition? actualDipSwitchCondition = actualDipSwitch.GetFieldValue<DatItems.Formats.Condition>(Models.Metadata.DipSwitch.ConditionKey);
Assert.NotNull(actualDipSwitchCondition);
Assert.Equal("value", actualDipSwitchCondition.GetStringFieldValue(Models.Metadata.Condition.ValueKey));
Assert.Equal("mask", actualDipSwitchCondition.GetStringFieldValue(Models.Metadata.Condition.MaskKey));
Assert.Equal("eq", actualDipSwitchCondition.GetStringFieldValue(Models.Metadata.Condition.RelationKey));
Assert.Equal("tag", actualDipSwitchCondition.GetStringFieldValue(Models.Metadata.Condition.TagKey));
DatItems.Formats.DipLocation[]? actualDipSwitchDipLocations = actualDipSwitch.GetFieldValue<DatItems.Formats.DipLocation[]>(Models.Metadata.DipSwitch.DipLocationKey);
Assert.NotNull(actualDipSwitchDipLocations);
DatItems.Formats.DipLocation? actualDipSwitchDipLocation = Assert.Single(actualDipSwitchDipLocations);
Assert.NotNull(actualDipSwitchDipLocation);
Assert.True(actualDipSwitchDipLocation.GetBoolFieldValue(Models.Metadata.DipLocation.InvertedKey));
Assert.Equal("name", actualDipSwitchDipLocation.GetStringFieldValue(Models.Metadata.DipLocation.NameKey));
Assert.Equal("number", actualDipSwitchDipLocation.GetStringFieldValue(Models.Metadata.DipLocation.NumberKey));
DatItems.Formats.DipValue[]? actualDipSwitchDipValues = actualDipSwitch.GetFieldValue<DatItems.Formats.DipValue[]>(Models.Metadata.DipSwitch.DipValueKey);
Assert.NotNull(actualDipSwitchDipValues);
DatItems.Formats.DipValue? actualDipSwitchDipValue = Assert.Single(actualDipSwitchDipValues);
Assert.NotNull(actualDipSwitchDipValue);
Assert.True(actualDipSwitchDipValue.GetBoolFieldValue(Models.Metadata.DipValue.DefaultKey));
Assert.Equal("name", actualDipSwitchDipValue.GetStringFieldValue(Models.Metadata.DipValue.NameKey));
Assert.Equal("value", actualDipSwitchDipValue.GetStringFieldValue(Models.Metadata.DipValue.ValueKey));
DatItems.Formats.Condition? actualDipSwitchDipValueCondition = actualDipSwitchDipValue.GetFieldValue<DatItems.Formats.Condition>(Models.Metadata.DipValue.ConditionKey);
Assert.NotNull(actualDipSwitchDipValueCondition);
Assert.Equal("value", actualDipSwitchDipValueCondition.GetStringFieldValue(Models.Metadata.Condition.ValueKey));
Assert.Equal("mask", actualDipSwitchDipValueCondition.GetStringFieldValue(Models.Metadata.Condition.MaskKey));
Assert.Equal("eq", actualDipSwitchDipValueCondition.GetStringFieldValue(Models.Metadata.Condition.RelationKey));
Assert.Equal("tag", actualDipSwitchDipValueCondition.GetStringFieldValue(Models.Metadata.Condition.TagKey));
string[]? actualDipSwitchEntries = actualDipSwitch.GetStringArrayFieldValue(Models.Metadata.DipSwitch.EntryKey);
Assert.NotNull(actualDipSwitchEntries);
string actualDipSwitchEntry = Assert.Single(actualDipSwitchEntries);
Assert.Equal("entry", actualDipSwitchEntry);
// TODO: Validate all fields // TODO: Validate all fields
} }

View File

@@ -741,7 +741,7 @@ namespace SabreTools.DatFiles
if (subItem.GetBoolFieldValue(Models.Metadata.DipValue.DefaultKey) != null) if (subItem.GetBoolFieldValue(Models.Metadata.DipValue.DefaultKey) != null)
subItem.SetFieldValue<string?>(Models.Metadata.DipValue.DefaultKey, subItem.GetBoolFieldValue(Models.Metadata.DipValue.DefaultKey).FromYesNo()); subItem.SetFieldValue<string?>(Models.Metadata.DipValue.DefaultKey, subItem.GetBoolFieldValue(Models.Metadata.DipValue.DefaultKey).FromYesNo());
var subCondition = item.Read<Models.Metadata.Condition>(Models.Metadata.DipValue.ConditionKey); var subCondition = subItem.GetFieldValue<Models.Metadata.Condition>(Models.Metadata.DipValue.ConditionKey);
if (subCondition != null) if (subCondition != null)
{ {
var subSubItem = new DatItems.Formats.Condition(subCondition); var subSubItem = new DatItems.Formats.Condition(subCondition);