mirror of
https://github.com/SabreTools/SabreTools.Serialization.git
synced 2026-07-08 18:06:41 +00:00
Device.Manadatory converted to property
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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,
|
||||
};
|
||||
}
|
||||
|
||||
@@ -18,9 +18,9 @@ namespace SabreTools.Data.Models.Listxml
|
||||
[XmlAttribute("fixed_image")]
|
||||
public string? FixedImage { get; set; }
|
||||
|
||||
/// <remarks>Numeric boolean</remarks>
|
||||
/// <remarks>(0|1) "0"</remarks>
|
||||
[XmlAttribute("mandatory")]
|
||||
public string? Mandatory { get; set; }
|
||||
public bool? Mandatory { get; set; }
|
||||
|
||||
[XmlAttribute("interface")]
|
||||
public string? Interface { get; set; }
|
||||
|
||||
@@ -11,6 +11,9 @@ namespace SabreTools.Data.Models.Metadata
|
||||
/// <remarks>(unknown|cartridge|floppydisk|harddisk|cylinder|cassette|punchcard|punchtape|printout|serial|parallel|snapshot|quickload|memcard|cdrom|magtape|romimage|midiin|midiout|picture|vidfile)</remarks>
|
||||
public DeviceType? DeviceType { get; set; }
|
||||
|
||||
/// <remarks>(0|1) "0"</remarks>
|
||||
public bool? Mandatory { get; set; }
|
||||
|
||||
#endregion
|
||||
|
||||
#region Keys
|
||||
@@ -29,10 +32,6 @@ namespace SabreTools.Data.Models.Metadata
|
||||
/// <remarks>string</remarks>
|
||||
public const string InterfaceKey = "interface";
|
||||
|
||||
/// <remarks>(0|1) "0"</remarks>
|
||||
/// TODO: Convert to bool?
|
||||
public const string MandatoryKey = "mandatory";
|
||||
|
||||
/// <remarks>string</remarks>
|
||||
public const string TagKey = "tag";
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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<string?>(Data.Models.Metadata.Device.MandatoryKey, mandatory.FromYesNo());
|
||||
|
||||
// Handle subitems
|
||||
var instance = item.Read<Data.Models.Metadata.Instance>(Data.Models.Metadata.Device.InstanceKey);
|
||||
if (instance is not null)
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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),
|
||||
};
|
||||
|
||||
|
||||
@@ -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,
|
||||
};
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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<Extension> extensions = [];
|
||||
|
||||
@@ -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<Extension> extensions = [];
|
||||
|
||||
@@ -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<Extension> extensions = [];
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user