Convert Sound.Channels to long as a test

This commit is contained in:
Matt Nadareski
2026-04-02 22:45:33 -04:00
parent 2b472c6f37
commit 11803aa34c
31 changed files with 60 additions and 49 deletions

View File

@@ -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;

View File

@@ -6,6 +6,6 @@ namespace SabreTools.Data.Models.ClrMamePro
{
/// <remarks>channels, Numeric?</remarks>
[Required]
public string? Channels { get; set; }
public long? Channels { get; set; }
}
}

View File

@@ -9,6 +9,6 @@ namespace SabreTools.Data.Models.Listxml
/// <remarks>Numeric</remarks>
[Required]
[XmlAttribute("channels")]
public string? Channels { get; set; }
public long? Channels { get; set; }
}
}

View File

@@ -6,10 +6,9 @@ namespace SabreTools.Data.Models.Metadata
[JsonObject("sound"), XmlRoot("sound")]
public class Sound : DatItem
{
#region Keys
#region Properties
/// <remarks>long</remarks>
public const string ChannelsKey = "channels";
public long? Channels { get; set; }
#endregion

View File

@@ -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

View File

@@ -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)

View File

@@ -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),
]));
}

View File

@@ -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:

View File

@@ -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:

View File

@@ -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;
}
/// <inheritdoc>/>
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<string?>(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)
{

View File

@@ -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;

View File

@@ -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);
}
/// <summary>

View File

@@ -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);
}
/// <summary>

View File

@@ -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);
}
/// <summary>

View File

@@ -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);
}
/// <summary>

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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);
}
/// <summary>

View File

@@ -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);
}
/// <summary>

View File

@@ -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);
}
/// <summary>

View File

@@ -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);
}
/// <summary>

View File

@@ -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

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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
}

View File

@@ -823,7 +823,7 @@ namespace SabreTools.Serialization.Writers
{
writer.WriteStartElement("sound");
writer.WriteRequiredAttributeString("channels", obj.Channels);
writer.WriteRequiredAttributeString("channels", obj.Channels?.ToString());
writer.WriteEndElement();
}

View File

@@ -821,7 +821,7 @@ namespace SabreTools.Serialization.Writers
{
writer.WriteStartElement("sound");
writer.WriteRequiredAttributeString("channels", obj.Channels);
writer.WriteRequiredAttributeString("channels", obj.Channels?.ToString());
writer.WriteEndElement();
}

View File

@@ -821,7 +821,7 @@ namespace SabreTools.Serialization.Writers
{
writer.WriteStartElement("sound");
writer.WriteRequiredAttributeString("channels", obj.Channels);
writer.WriteRequiredAttributeString("channels", obj.Channels?.ToString());
writer.WriteEndElement();
}