Add ClrMamePro deserialization test, fix issues

This commit is contained in:
Matt Nadareski
2023-07-13 23:04:11 -04:00
parent fa2f1659b8
commit ecac575521
19 changed files with 1596 additions and 215 deletions

View File

@@ -1,9 +1,16 @@
namespace SabreTools.Models.ClrMamePro
{
/// <remarks>archive</remarks>
public class Archive
public class Archive : ItemBase
{
/// <remarks>name</remarks>
public string Name { get; set; }
#region DO NOT USE IN PRODUCTION
/// <remarks>Should be empty</remarks>
public string[]? ADDITIONAL_ELEMENTS { get; set; }
#endregion
}
}

View File

@@ -1,7 +1,7 @@
namespace SabreTools.Models.ClrMamePro
{
/// <remarks>biosset</remarks>
public class BiosSet
public class BiosSet : ItemBase
{
/// <remarks>name</remarks>
public string Name { get; set; }
@@ -11,5 +11,12 @@ namespace SabreTools.Models.ClrMamePro
/// <remarks>default</remarks>
public string? Default { get; set; }
#region DO NOT USE IN PRODUCTION
/// <remarks>Should be empty</remarks>
public string[]? ADDITIONAL_ELEMENTS { get; set; }
#endregion
}
}

View File

@@ -47,5 +47,12 @@ namespace SabreTools.Models.ClrMamePro
/// <remarks>forcepacking</remarks>
public string? ForcePacking { get; set; }
#region DO NOT USE IN PRODUCTION
/// <remarks>Should be empty</remarks>
public string[]? ADDITIONAL_ELEMENTS { get; set; }
#endregion
}
}

View File

@@ -1,7 +1,7 @@
namespace SabreTools.Models.ClrMamePro
{
/// <remarks>disk</remarks>
public class Disk
public class Disk : ItemBase
{
/// <remarks>name</remarks>
public string Name { get; set; }
@@ -17,5 +17,15 @@ namespace SabreTools.Models.ClrMamePro
/// <remarks>status</remarks>
public string? Status { get; set; }
/// <remarks>flags</remarks>
public string? Flags { get; set; }
#region DO NOT USE IN PRODUCTION
/// <remarks>Should be empty</remarks>
public string[]? ADDITIONAL_ELEMENTS { get; set; }
#endregion
}
}

View File

@@ -1,55 +1,5 @@
namespace SabreTools.Models.ClrMamePro
{
/// <remarks>game</remarks>
public class Game
{
/// <remarks>name</remarks>
public string? Name { get; set; }
/// <remarks>description</remarks>
public string? Description { get; set; }
/// <remarks>year</remarks>
public string? Year { get; set; }
/// <remarks>manufacturer</remarks>
public string? Manufacturer { get; set; }
/// <remarks>category</remarks>
public string? Category { get; set; }
/// <remarks>cloneof</remarks>
public string? CloneOf { get; set; }
/// <remarks>romof</remarks>
public string? RomOf { get; set; }
/// <remarks>sampleof</remarks>
public string? SampleOf { get; set; }
/// <remarks>release</remarks>
public Release[]? Release { get; set; }
/// <remarks>biosset</remarks>
public BiosSet[]? BiosSet { get; set; }
/// <remarks>rom</remarks>
public Rom[]? Rom { get; set; }
/// <remarks>disk</remarks>
public Disk[]? Disk { get; set; }
/// <remarks>sample</remarks>
public Sample[]? Sample { get; set; }
/// <remarks>archive</remarks>
public Archive[]? Archive { get; set; }
#region Aaru Extensions
/// <remarks>media; Appears after Disk</remarks>
public Media[]? Media { get; set; }
#endregion
}
public class Game : GameBase { }
}

View File

@@ -0,0 +1,42 @@
namespace SabreTools.Models.ClrMamePro
{
/// <summary>
/// Base class to unify the various game-like types
/// </summary>
public abstract class GameBase
{
/// <remarks>name</remarks>
public string? Name { get; set; }
/// <remarks>description</remarks>
public string? Description { get; set; }
/// <remarks>year</remarks>
public string? Year { get; set; }
/// <remarks>manufacturer</remarks>
public string? Manufacturer { get; set; }
/// <remarks>category</remarks>
public string? Category { get; set; }
/// <remarks>cloneof</remarks>
public string? CloneOf { get; set; }
/// <remarks>romof</remarks>
public string? RomOf { get; set; }
/// <remarks>sampleof</remarks>
public string? SampleOf { get; set; }
/// <remarks>release, biosset, rom, disk, media, sample, archive</remarks>
public ItemBase[]? Item { get; set; }
#region DO NOT USE IN PRODUCTION
/// <remarks>Should be empty</remarks>
public string[]? ADDITIONAL_ELEMENTS { get; set; }
#endregion
}
}

View File

@@ -0,0 +1,7 @@
namespace SabreTools.Models.ClrMamePro
{
/// <summary>
/// Base class to unify the various item types
/// </summary>
public abstract class ItemBase { }
}

View File

@@ -1,55 +1,5 @@
namespace SabreTools.Models.ClrMamePro
{
/// <remarks>machine</remarks>
public class Machine
{
/// <remarks>name</remarks>
public string? Name { get; set; }
/// <remarks>description</remarks>
public string? Description { get; set; }
/// <remarks>year</remarks>
public string? Year { get; set; }
/// <remarks>manufacturer</remarks>
public string? Manufacturer { get; set; }
/// <remarks>category</remarks>
public string? Category { get; set; }
/// <remarks>cloneof</remarks>
public string? CloneOf { get; set; }
/// <remarks>romof</remarks>
public string? RomOf { get; set; }
/// <remarks>sampleof</remarks>
public string? SampleOf { get; set; }
/// <remarks>release</remarks>
public Release[]? Release { get; set; }
/// <remarks>biosset</remarks>
public BiosSet[]? BiosSet { get; set; }
/// <remarks>rom</remarks>
public Rom[]? Rom { get; set; }
/// <remarks>disk</remarks>
public Disk[]? Disk { get; set; }
/// <remarks>sample</remarks>
public Sample[]? Sample { get; set; }
/// <remarks>archive</remarks>
public Archive[]? Archive { get; set; }
#region Aaru Extensions
/// <remarks>media; Appears after Disk</remarks>
public Media[]? Media { get; set; }
#endregion
}
public class Machine : GameBase { }
}

View File

@@ -1,7 +1,7 @@
namespace SabreTools.Models.ClrMamePro
{
/// <remarks>media</remarks>
public class Media
public class Media : ItemBase
{
/// <remarks>name</remarks>
public string Name { get; set; }
@@ -17,5 +17,12 @@ namespace SabreTools.Models.ClrMamePro
/// <remarks>spamsum</remarks>
public string? SpamSum { get; set; }
#region DO NOT USE IN PRODUCTION
/// <remarks>Should be empty</remarks>
public string[]? ADDITIONAL_ELEMENTS { get; set; }
#endregion
}
}

View File

@@ -0,0 +1,18 @@
namespace SabreTools.Models.ClrMamePro
{
public class MetadataFile
{
/// <remarks>clrmamepro</remarks>
public ClrMamePro? ClrMamePro { get; set; }
/// <remarks>game, machine, resource, set</remarks>
public GameBase[]? Game { get; set; }
#region DO NOT USE IN PRODUCTION
/// <remarks>Should be empty</remarks>
public string[]? ADDITIONAL_ELEMENTS { get; set; }
#endregion
}
}

View File

@@ -1,7 +1,7 @@
namespace SabreTools.Models.ClrMamePro
{
/// <remarks>release</remarks>
public class Release
public class Release : ItemBase
{
/// <remarks>name</remarks>
public string Name { get; set; }
@@ -17,5 +17,12 @@ namespace SabreTools.Models.ClrMamePro
/// <remarks>default</remarks>
public string? Default { get; set; }
#region DO NOT USE IN PRODUCTION
/// <remarks>Should be empty</remarks>
public string[]? ADDITIONAL_ELEMENTS { get; set; }
#endregion
}
}

View File

@@ -1,55 +1,5 @@
namespace SabreTools.Models.ClrMamePro
{
/// <remarks>resource</remarks>
public class Resource
{
/// <remarks>name</remarks>
public string? Name { get; set; }
/// <remarks>description</remarks>
public string? Description { get; set; }
/// <remarks>year</remarks>
public string? Year { get; set; }
/// <remarks>manufacturer</remarks>
public string? Manufacturer { get; set; }
/// <remarks>category</remarks>
public string? Category { get; set; }
/// <remarks>cloneof</remarks>
public string? CloneOf { get; set; }
/// <remarks>romof</remarks>
public string? RomOf { get; set; }
/// <remarks>sampleof</remarks>
public string? SampleOf { get; set; }
/// <remarks>release</remarks>
public Release[]? Release { get; set; }
/// <remarks>biosset</remarks>
public BiosSet[]? BiosSet { get; set; }
/// <remarks>rom</remarks>
public Rom[]? Rom { get; set; }
/// <remarks>disk</remarks>
public Disk[]? Disk { get; set; }
/// <remarks>sample</remarks>
public Sample[]? Sample { get; set; }
/// <remarks>archive</remarks>
public Archive[]? Archive { get; set; }
#region Aaru Extensions
/// <remarks>media; Appears after Disk</remarks>
public Media[]? Media { get; set; }
#endregion
}
public class Resource : GameBase { }
}

View File

@@ -1,13 +1,13 @@
namespace SabreTools.Models.ClrMamePro
{
/// <remarks>rom</remarks>
public class Rom
public class Rom : ItemBase
{
/// <remarks>name</remarks>
public string Name { get; set; }
/// <remarks>size</remarks>
public long Size { get; set; }
/// <remarks>size, Numeric</remarks>
public string Size { get; set; }
/// <remarks>crc</remarks>
public string? CRC { get; set; }
@@ -24,6 +24,9 @@ namespace SabreTools.Models.ClrMamePro
/// <remarks>status</remarks>
public string? Status { get; set; }
/// <remarks>flags</remarks>
public string? Flags { get; set; }
/// <remarks>date</remarks>
public string? Date { get; set; }
@@ -66,10 +69,17 @@ namespace SabreTools.Models.ClrMamePro
#region RomVault Extensions
/// <remarks>inverted; Boolean; Appears after Date</remarks>
public bool? Inverted { get; set; }
public string? Inverted { get; set; }
/// <remarks>mia; Boolean; Appears after Inverted</remarks>
public bool? MIA { get; set; }
public string? MIA { get; set; }
#endregion
#region DO NOT USE IN PRODUCTION
/// <remarks>Should be empty</remarks>
public string[]? ADDITIONAL_ELEMENTS { get; set; }
#endregion
}

View File

@@ -1,9 +1,16 @@
namespace SabreTools.Models.ClrMamePro
{
/// <remarks>sample</remarks>
public class Sample
public class Sample : ItemBase
{
/// <remarks>name</remarks>
public string Name { get; set; }
#region DO NOT USE IN PRODUCTION
/// <remarks>Should be empty</remarks>
public string[]? ADDITIONAL_ELEMENTS { get; set; }
#endregion
}
}

View File

@@ -1,55 +1,5 @@
namespace SabreTools.Models.ClrMamePro
{
/// <remarks>set</remarks>
public class Set
{
/// <remarks>name</remarks>
public string? Name { get; set; }
/// <remarks>description</remarks>
public string? Description { get; set; }
/// <remarks>year</remarks>
public string? Year { get; set; }
/// <remarks>manufacturer</remarks>
public string? Manufacturer { get; set; }
/// <remarks>category</remarks>
public string? Category { get; set; }
/// <remarks>cloneof</remarks>
public string? CloneOf { get; set; }
/// <remarks>romof</remarks>
public string? RomOf { get; set; }
/// <remarks>sampleof</remarks>
public string? SampleOf { get; set; }
/// <remarks>release</remarks>
public Release[]? Release { get; set; }
/// <remarks>biosset</remarks>
public BiosSet[]? BiosSet { get; set; }
/// <remarks>rom</remarks>
public Rom[]? Rom { get; set; }
/// <remarks>disk</remarks>
public Disk[]? Disk { get; set; }
/// <remarks>sample</remarks>
public Sample[]? Sample { get; set; }
/// <remarks>archive</remarks>
public Archive[]? Archive { get; set; }
#region Aaru Extensions
/// <remarks>media; Appears after Disk</remarks>
public Media[]? Media { get; set; }
#endregion
}
public class Set : GameBase { }
}