Make ReleaseDetails more complete

This commit is contained in:
Matt Nadareski
2026-04-03 19:11:55 -04:00
parent c623c2b1f6
commit 5b3ff31f85
8 changed files with 408 additions and 134 deletions

View File

@@ -180,6 +180,8 @@ namespace SabreTools.Data.Extensions
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 Serials serials)
return serials.Clone() as Serials;
else if (self is SharedFeat sharedFeat)

View File

@@ -1,63 +1,164 @@
using System;
using System.Xml.Serialization;
using Newtonsoft.Json;
namespace SabreTools.Data.Models.Metadata
{
[JsonObject("release_details"), XmlRoot("release_details")]
public class ReleaseDetails : DatItem
public class ReleaseDetails : DatItem, ICloneable, IEquatable<ReleaseDetails>
{
#region Keys
#region Properties
/// <remarks>string</remarks>
public const string IdKey = "id";
public string? AppendToNumber { get; set; }
/// <remarks>string</remarks>
public const string AppendToNumberKey = "appendtonumber";
public string? ArchiveName { get; set; }
/// <remarks>string</remarks>
public const string DateKey = "date";
public string? Category { get; set; }
/// <remarks>string</remarks>
public const string OriginalFormatKey = "originalformat";
public string? Comment { get; set; }
/// <remarks>string</remarks>
public const string GroupKey = "group";
public string? Date { get; set; }
/// <remarks>string</remarks>
public const string DirNameKey = "dirname";
public string? DirName { get; set; }
/// <remarks>string</remarks>
public const string NfoNameKey = "nfoname";
public string? Group { get; set; }
/// <remarks>string</remarks>
public const string NfoSizeKey = "nfosize";
public string? Id { get; set; }
/// <remarks>string</remarks>
public const string NfoCRCKey = "nfocrc";
public string? NfoCRC { get; set; }
/// <remarks>string</remarks>
public const string ArchiveNameKey = "archivename";
public string? NfoName { get; set; }
/// <remarks>string</remarks>
public const string RomInfoKey = "rominfo";
public string? NfoSize { get; set; }
/// <remarks>string</remarks>
public const string CategoryKey = "category";
public string? Origin { get; set; }
/// <remarks>string</remarks>
public const string CommentKey = "comment";
public string? OriginalFormat { get; set; }
/// <remarks>string</remarks>
public const string ToolKey = "tool";
public string? Region { get; set; }
/// <remarks>string</remarks>
public const string RegionKey = "region";
public string? RomInfo { get; set; }
/// <remarks>string</remarks>
public const string OriginKey = "origin";
public string? Tool { get; set; }
#endregion
public ReleaseDetails() => ItemType = ItemType.ReleaseDetails;
/// <inheritdoc/>
public object Clone()
{
var obj = new ReleaseDetails();
obj.AppendToNumber = AppendToNumber;
obj.ArchiveName = ArchiveName;
obj.Category = Category;
obj.Comment = Comment;
obj.Date = Date;
obj.DirName = DirName;
obj.Group = Group;
obj.Id = Id;
obj.NfoCRC = NfoCRC;
obj.NfoName = NfoName;
obj.NfoSize = NfoSize;
obj.Origin = Origin;
obj.OriginalFormat = OriginalFormat;
obj.Region = Region;
obj.RomInfo = RomInfo;
obj.Tool = Tool;
return obj;
}
/// <inheritdoc/>
public bool Equals(ReleaseDetails? other)
{
// Null never matches
if (other is null)
return false;
// Properties
if ((AppendToNumber is null) ^ (other.AppendToNumber is null))
return false;
else if (AppendToNumber is not null && !AppendToNumber.Equals(other.AppendToNumber, StringComparison.OrdinalIgnoreCase))
return false;
if ((ArchiveName is null) ^ (other.ArchiveName is null))
return false;
else if (ArchiveName is not null && !ArchiveName.Equals(other.ArchiveName, 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 ((DirName is null) ^ (other.DirName is null))
return false;
else if (DirName is not null && !DirName.Equals(other.DirName, StringComparison.OrdinalIgnoreCase))
return false;
if ((Group is null) ^ (other.Group is null))
return false;
else if (Group is not null && !Group.Equals(other.Group, 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 ((NfoCRC is null) ^ (other.NfoCRC is null))
return false;
else if (NfoCRC is not null && !NfoCRC.Equals(other.NfoCRC, StringComparison.OrdinalIgnoreCase))
return false;
if ((NfoName is null) ^ (other.NfoName is null))
return false;
else if (NfoName is not null && !NfoName.Equals(other.NfoName, StringComparison.OrdinalIgnoreCase))
return false;
if ((NfoSize is null) ^ (other.NfoSize is null))
return false;
else if (NfoSize is not null && !NfoSize.Equals(other.NfoSize, StringComparison.OrdinalIgnoreCase))
return false;
if ((Origin is null) ^ (other.Origin is null))
return false;
else if (Origin is not null && !Origin.Equals(other.Origin, StringComparison.OrdinalIgnoreCase))
return false;
if ((OriginalFormat is null) ^ (other.OriginalFormat is null))
return false;
else if (OriginalFormat is not null && !OriginalFormat.Equals(other.OriginalFormat, StringComparison.OrdinalIgnoreCase))
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 ((RomInfo is null) ^ (other.RomInfo is null))
return false;
else if (RomInfo is not null && !RomInfo.Equals(other.RomInfo, StringComparison.OrdinalIgnoreCase))
return false;
if ((Tool is null) ^ (other.Tool is null))
return false;
else if (Tool is not null && !Tool.Equals(other.Tool, StringComparison.OrdinalIgnoreCase))
return false;
return true;
}
}
}

View File

@@ -749,22 +749,22 @@ namespace SabreTools.Metadata.DatFiles.Test
{
return new Data.Models.Metadata.ReleaseDetails
{
[Data.Models.Metadata.ReleaseDetails.IdKey] = "id",
[Data.Models.Metadata.ReleaseDetails.AppendToNumberKey] = "appendtonumber",
[Data.Models.Metadata.ReleaseDetails.DateKey] = "date",
[Data.Models.Metadata.ReleaseDetails.OriginalFormatKey] = "originalformat",
[Data.Models.Metadata.ReleaseDetails.GroupKey] = "group",
[Data.Models.Metadata.ReleaseDetails.DirNameKey] = "dirname",
[Data.Models.Metadata.ReleaseDetails.NfoNameKey] = "nfoname",
[Data.Models.Metadata.ReleaseDetails.NfoSizeKey] = "nfosize",
[Data.Models.Metadata.ReleaseDetails.NfoCRCKey] = "nfocrc",
[Data.Models.Metadata.ReleaseDetails.ArchiveNameKey] = "archivename",
[Data.Models.Metadata.ReleaseDetails.RomInfoKey] = "rominfo",
[Data.Models.Metadata.ReleaseDetails.CategoryKey] = "category",
[Data.Models.Metadata.ReleaseDetails.CommentKey] = "comment",
[Data.Models.Metadata.ReleaseDetails.ToolKey] = "tool",
[Data.Models.Metadata.ReleaseDetails.RegionKey] = "region",
[Data.Models.Metadata.ReleaseDetails.OriginKey] = "origin",
AppendToNumber = "appendtonumber",
ArchiveName = "archivename",
Category = "category",
Comment = "comment",
Date = "date",
DirName = "dirname",
Group = "group",
Id = "id",
Origin = "origin",
OriginalFormat = "originalformat",
NfoCRC = "nfocrc",
NfoName = "nfoname",
NfoSize = "nfosize",
Region = "region",
RomInfo = "rominfo",
Tool = "tool",
};
}
@@ -1471,6 +1471,27 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.Equal("region", release.Region);
}
private static void ValidateReleaseDetails(ReleaseDetails? releaseDetails)
{
Assert.NotNull(releaseDetails);
Assert.Equal("appendtonumber", releaseDetails.AppendToNumber);
Assert.Equal("archivename", releaseDetails.ArchiveName);
Assert.Equal("category", releaseDetails.Category);
Assert.Equal("comment", releaseDetails.Comment);
Assert.Equal("date", releaseDetails.Date);
Assert.Equal("dirname", releaseDetails.DirName);
Assert.Equal("group", releaseDetails.Group);
Assert.Equal("id", releaseDetails.Id);
Assert.Equal("nfocrc", releaseDetails.NfoCRC);
Assert.Equal("nfoname", releaseDetails.NfoName);
Assert.Equal("nfosize", releaseDetails.NfoSize);
Assert.Equal("origin", releaseDetails.Origin);
Assert.Equal("originalformat", releaseDetails.OriginalFormat);
Assert.Equal("region", releaseDetails.Region);
Assert.Equal("rominfo", releaseDetails.RomInfo);
Assert.Equal("tool", releaseDetails.Tool);
}
private static void ValidateRom(Rom? rom)
{
Assert.NotNull(rom);

View File

@@ -1016,22 +1016,22 @@ namespace SabreTools.Metadata.DatFiles.Test
private static void ValidateMetadataReleaseDetails(Data.Models.Metadata.ReleaseDetails? releaseDetails)
{
Assert.NotNull(releaseDetails);
Assert.Equal("id", releaseDetails.ReadString(Data.Models.Metadata.ReleaseDetails.IdKey));
Assert.Equal("appendtonumber", releaseDetails.ReadString(Data.Models.Metadata.ReleaseDetails.AppendToNumberKey));
Assert.Equal("date", releaseDetails.ReadString(Data.Models.Metadata.ReleaseDetails.DateKey));
Assert.Equal("originalformat", releaseDetails.ReadString(Data.Models.Metadata.ReleaseDetails.OriginalFormatKey));
Assert.Equal("group", releaseDetails.ReadString(Data.Models.Metadata.ReleaseDetails.GroupKey));
Assert.Equal("dirname", releaseDetails.ReadString(Data.Models.Metadata.ReleaseDetails.DirNameKey));
Assert.Equal("nfoname", releaseDetails.ReadString(Data.Models.Metadata.ReleaseDetails.NfoNameKey));
Assert.Equal("nfosize", releaseDetails.ReadString(Data.Models.Metadata.ReleaseDetails.NfoSizeKey));
Assert.Equal("nfocrc", releaseDetails.ReadString(Data.Models.Metadata.ReleaseDetails.NfoCRCKey));
Assert.Equal("archivename", releaseDetails.ReadString(Data.Models.Metadata.ReleaseDetails.ArchiveNameKey));
Assert.Equal("rominfo", releaseDetails.ReadString(Data.Models.Metadata.ReleaseDetails.RomInfoKey));
Assert.Equal("category", releaseDetails.ReadString(Data.Models.Metadata.ReleaseDetails.CategoryKey));
Assert.Equal("comment", releaseDetails.ReadString(Data.Models.Metadata.ReleaseDetails.CommentKey));
Assert.Equal("tool", releaseDetails.ReadString(Data.Models.Metadata.ReleaseDetails.ToolKey));
Assert.Equal("region", releaseDetails.ReadString(Data.Models.Metadata.ReleaseDetails.RegionKey));
Assert.Equal("origin", releaseDetails.ReadString(Data.Models.Metadata.ReleaseDetails.OriginKey));
Assert.Equal("id", releaseDetails.Id);
Assert.Equal("appendtonumber", releaseDetails.AppendToNumber);
Assert.Equal("date", releaseDetails.Date);
Assert.Equal("originalformat", releaseDetails.OriginalFormat);
Assert.Equal("group", releaseDetails.Group);
Assert.Equal("dirname", releaseDetails.DirName);
Assert.Equal("nfoname", releaseDetails.NfoName);
Assert.Equal("nfosize", releaseDetails.NfoSize);
Assert.Equal("nfocrc", releaseDetails.NfoCRC);
Assert.Equal("archivename", releaseDetails.ArchiveName);
Assert.Equal("rominfo", releaseDetails.RomInfo);
Assert.Equal("category", releaseDetails.Category);
Assert.Equal("comment", releaseDetails.Comment);
Assert.Equal("tool", releaseDetails.Tool);
Assert.Equal("region", releaseDetails.Region);
Assert.Equal("origin", releaseDetails.Origin);
}
private static void ValidateMetadataRom(Data.Models.Metadata.Rom? rom)

View File

@@ -12,10 +12,106 @@ namespace SabreTools.Metadata.DatItems.Formats
{
#region Fields
public string? AppendToNumber
{
get => (_internal as Data.Models.Metadata.ReleaseDetails)?.AppendToNumber;
set => (_internal as Data.Models.Metadata.ReleaseDetails)?.AppendToNumber = value;
}
public string? ArchiveName
{
get => (_internal as Data.Models.Metadata.ReleaseDetails)?.ArchiveName;
set => (_internal as Data.Models.Metadata.ReleaseDetails)?.ArchiveName = value;
}
public string? Category
{
get => (_internal as Data.Models.Metadata.ReleaseDetails)?.Category;
set => (_internal as Data.Models.Metadata.ReleaseDetails)?.Category = value;
}
public string? Comment
{
get => (_internal as Data.Models.Metadata.ReleaseDetails)?.Comment;
set => (_internal as Data.Models.Metadata.ReleaseDetails)?.Comment = value;
}
public string? Date
{
get => (_internal as Data.Models.Metadata.ReleaseDetails)?.Date;
set => (_internal as Data.Models.Metadata.ReleaseDetails)?.Date = value;
}
public string? DirName
{
get => (_internal as Data.Models.Metadata.ReleaseDetails)?.DirName;
set => (_internal as Data.Models.Metadata.ReleaseDetails)?.DirName = value;
}
public string? Group
{
get => (_internal as Data.Models.Metadata.ReleaseDetails)?.Group;
set => (_internal as Data.Models.Metadata.ReleaseDetails)?.Group = value;
}
public string? Id
{
get => (_internal as Data.Models.Metadata.ReleaseDetails)?.Id;
set => (_internal as Data.Models.Metadata.ReleaseDetails)?.Id = value;
}
/// <inheritdoc>/>
public override Data.Models.Metadata.ItemType ItemType
=> Data.Models.Metadata.ItemType.ReleaseDetails;
public string? NfoCRC
{
get => (_internal as Data.Models.Metadata.ReleaseDetails)?.NfoCRC;
set => (_internal as Data.Models.Metadata.ReleaseDetails)?.NfoCRC = value;
}
public string? NfoName
{
get => (_internal as Data.Models.Metadata.ReleaseDetails)?.NfoName;
set => (_internal as Data.Models.Metadata.ReleaseDetails)?.NfoName = value;
}
public string? NfoSize
{
get => (_internal as Data.Models.Metadata.ReleaseDetails)?.NfoSize;
set => (_internal as Data.Models.Metadata.ReleaseDetails)?.NfoSize = value;
}
public string? Origin
{
get => (_internal as Data.Models.Metadata.ReleaseDetails)?.Origin;
set => (_internal as Data.Models.Metadata.ReleaseDetails)?.Origin = value;
}
public string? OriginalFormat
{
get => (_internal as Data.Models.Metadata.ReleaseDetails)?.OriginalFormat;
set => (_internal as Data.Models.Metadata.ReleaseDetails)?.OriginalFormat = value;
}
public string? Region
{
get => (_internal as Data.Models.Metadata.ReleaseDetails)?.Region;
set => (_internal as Data.Models.Metadata.ReleaseDetails)?.Region = value;
}
public string? RomInfo
{
get => (_internal as Data.Models.Metadata.ReleaseDetails)?.RomInfo;
set => (_internal as Data.Models.Metadata.ReleaseDetails)?.RomInfo = value;
}
public string? Tool
{
get => (_internal as Data.Models.Metadata.ReleaseDetails)?.Tool;
set => (_internal as Data.Models.Metadata.ReleaseDetails)?.Tool = value;
}
#endregion
#region Constructors

View File

@@ -787,6 +787,55 @@ namespace SabreTools.Metadata.Filter
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 == "dispose":
checkValue = item.Dispose.FromYesNo();
return true;

View File

@@ -316,6 +316,11 @@ namespace SabreTools.Metadata
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

View File

@@ -140,30 +140,30 @@ namespace SabreTools.Serialization.Readers.Test
var sourceDetails = new Data.Models.NoIntroDatabase.SourceDetails
{
Id = "XXXXXX",
AppendToNumber = "XXXXXX",
Section = "XXXXXX",
RomInfo = "XXXXXX",
DumpDate = "XXXXXX",
Id = "id",
AppendToNumber = "appendtonumber",
Section = "section",
RomInfo = "rominfo",
DumpDate = "dumpdate",
DumpDateInfo = true,
ReleaseDate = "XXXXXX",
ReleaseDate = "releasedate",
ReleaseDateInfo = true,
Dumper = "XXXXXX",
Project = "XXXXXX",
OriginalFormat = "XXXXXX",
Dumper = "dumper",
Project = "project",
OriginalFormat = "originalformat",
Nodump = true,
Tool = "XXXXXX",
Origin = "XXXXXX",
Comment1 = "XXXXXX",
Comment2 = "XXXXXX",
Link1 = "XXXXXX",
Tool = "tool",
Origin = "origin",
Comment1 = "comment1",
Comment2 = "comment2",
Link1 = "link1",
Link1Public = true,
Link2 = "XXXXXX",
Link2 = "link2",
Link2Public = true,
Link3 = "XXXXXX",
Link3 = "link3",
Link3Public = true,
Region = "XXXXXX",
MediaTitle = "XXXXXX",
Region = "region",
MediaTitle = "mediatitle",
};
var serials = new Data.Models.NoIntroDatabase.Serials
@@ -222,22 +222,22 @@ namespace SabreTools.Serialization.Readers.Test
var releaseDetails = new Data.Models.NoIntroDatabase.ReleaseDetails
{
Id = "XXXXXX",
AppendToNumber = "XXXXXX",
Date = "XXXXXX",
OriginalFormat = "XXXXXX",
Group = "XXXXXX",
DirName = "XXXXXX",
NfoName = "XXXXXX",
NfoSize = "XXXXXX",
NfoCRC = "XXXXXX",
ArchiveName = "XXXXXX",
RomInfo = "XXXXXX",
Category = "XXXXXX",
Comment = "XXXXXX",
Tool = "XXXXXX",
Region = "XXXXXX",
Origin = "XXXXXX",
Id = "id",
AppendToNumber = "appendtonumber",
Date = "date",
OriginalFormat = "originalformat",
Group = "group",
DirName = "dirname",
NfoName = "nfoname",
NfoSize = "nfosize",
NfoCRC = "nfocrc",
ArchiveName = "archivename",
RomInfo = "rominfo",
Category = "category",
Comment = "comment",
Tool = "tool",
Region = "region",
Origin = "origin",
};
var release = new Data.Models.NoIntroDatabase.Release
@@ -356,30 +356,30 @@ namespace SabreTools.Serialization.Readers.Test
private static void Validate(Data.Models.NoIntroDatabase.SourceDetails? sourceDetails)
{
Assert.NotNull(sourceDetails);
Assert.Equal("XXXXXX", sourceDetails.Id);
Assert.Equal("XXXXXX", sourceDetails.AppendToNumber);
Assert.Equal("XXXXXX", sourceDetails.Section);
Assert.Equal("XXXXXX", sourceDetails.RomInfo);
Assert.Equal("XXXXXX", sourceDetails.DumpDate);
Assert.Equal("id", sourceDetails.Id);
Assert.Equal("appendtonumber", sourceDetails.AppendToNumber);
Assert.Equal("section", sourceDetails.Section);
Assert.Equal("rominfo", sourceDetails.RomInfo);
Assert.Equal("dumpdate", sourceDetails.DumpDate);
Assert.Equal(true, sourceDetails.DumpDateInfo);
Assert.Equal("XXXXXX", sourceDetails.ReleaseDate);
Assert.Equal("releasedate", sourceDetails.ReleaseDate);
Assert.Equal(true, sourceDetails.ReleaseDateInfo);
Assert.Equal("XXXXXX", sourceDetails.Dumper);
Assert.Equal("XXXXXX", sourceDetails.Project);
Assert.Equal("XXXXXX", sourceDetails.OriginalFormat);
Assert.Equal("dumper", sourceDetails.Dumper);
Assert.Equal("project", sourceDetails.Project);
Assert.Equal("originalformat", sourceDetails.OriginalFormat);
Assert.Equal(true, sourceDetails.Nodump);
Assert.Equal("XXXXXX", sourceDetails.Tool);
Assert.Equal("XXXXXX", sourceDetails.Origin);
Assert.Equal("XXXXXX", sourceDetails.Comment1);
Assert.Equal("XXXXXX", sourceDetails.Comment2);
Assert.Equal("XXXXXX", sourceDetails.Link1);
Assert.Equal("tool", sourceDetails.Tool);
Assert.Equal("origin", sourceDetails.Origin);
Assert.Equal("comment1", sourceDetails.Comment1);
Assert.Equal("comment2", sourceDetails.Comment2);
Assert.Equal("link1", sourceDetails.Link1);
Assert.Equal(true, sourceDetails.Link1Public);
Assert.Equal("XXXXXX", sourceDetails.Link2);
Assert.Equal("link2", sourceDetails.Link2);
Assert.Equal(true, sourceDetails.Link2Public);
Assert.Equal("XXXXXX", sourceDetails.Link3);
Assert.Equal("link3", sourceDetails.Link3);
Assert.Equal(true, sourceDetails.Link3Public);
Assert.Equal("XXXXXX", sourceDetails.Region);
Assert.Equal("XXXXXX", sourceDetails.MediaTitle);
Assert.Equal("region", sourceDetails.Region);
Assert.Equal("mediatitle", sourceDetails.MediaTitle);
}
/// <summary>
@@ -459,22 +459,22 @@ namespace SabreTools.Serialization.Readers.Test
private static void Validate(Data.Models.NoIntroDatabase.ReleaseDetails? releaseDetails)
{
Assert.NotNull(releaseDetails);
Assert.Equal("XXXXXX", releaseDetails.Id);
Assert.Equal("XXXXXX", releaseDetails.AppendToNumber);
Assert.Equal("XXXXXX", releaseDetails.Date);
Assert.Equal("XXXXXX", releaseDetails.OriginalFormat);
Assert.Equal("XXXXXX", releaseDetails.Group);
Assert.Equal("XXXXXX", releaseDetails.DirName);
Assert.Equal("XXXXXX", releaseDetails.NfoName);
Assert.Equal("XXXXXX", releaseDetails.NfoSize);
Assert.Equal("XXXXXX", releaseDetails.NfoCRC);
Assert.Equal("XXXXXX", releaseDetails.ArchiveName);
Assert.Equal("XXXXXX", releaseDetails.RomInfo);
Assert.Equal("XXXXXX", releaseDetails.Category);
Assert.Equal("XXXXXX", releaseDetails.Comment);
Assert.Equal("XXXXXX", releaseDetails.Tool);
Assert.Equal("XXXXXX", releaseDetails.Region);
Assert.Equal("XXXXXX", releaseDetails.Origin);
Assert.Equal("id", releaseDetails.Id);
Assert.Equal("appendtonumber", releaseDetails.AppendToNumber);
Assert.Equal("date", releaseDetails.Date);
Assert.Equal("originalformat", releaseDetails.OriginalFormat);
Assert.Equal("group", releaseDetails.Group);
Assert.Equal("dirname", releaseDetails.DirName);
Assert.Equal("nfoname", releaseDetails.NfoName);
Assert.Equal("nfosize", releaseDetails.NfoSize);
Assert.Equal("nfocrc", releaseDetails.NfoCRC);
Assert.Equal("archivename", releaseDetails.ArchiveName);
Assert.Equal("rominfo", releaseDetails.RomInfo);
Assert.Equal("category", releaseDetails.Category);
Assert.Equal("comment", releaseDetails.Comment);
Assert.Equal("tool", releaseDetails.Tool);
Assert.Equal("region", releaseDetails.Region);
Assert.Equal("origin", releaseDetails.Origin);
}
}
}