mirror of
https://github.com/claunia/SabreTools.git
synced 2025-12-16 19:14:27 +00:00
Add OfflineList deserialization test, fix issues
This commit is contained in:
@@ -8,5 +8,17 @@ namespace SabreTools.Models.OfflineList
|
|||||||
{
|
{
|
||||||
[XmlElement("extension")]
|
[XmlElement("extension")]
|
||||||
public string[]? Extension { get; set; }
|
public string[]? Extension { get; set; }
|
||||||
|
|
||||||
|
#region DO NOT USE IN PRODUCTION
|
||||||
|
|
||||||
|
/// <remarks>Should be empty</remarks>
|
||||||
|
[XmlAnyAttribute]
|
||||||
|
public XmlAttribute[]? ADDITIONAL_ATTRIBUTES { get; set; }
|
||||||
|
|
||||||
|
/// <remarks>Should be empty</remarks>
|
||||||
|
[XmlAnyElement]
|
||||||
|
public object[]? ADDITIONAL_ELEMENTS { get; set; }
|
||||||
|
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -9,6 +9,9 @@ namespace SabreTools.Models.OfflineList
|
|||||||
[XmlElement("datName")]
|
[XmlElement("datName")]
|
||||||
public string? DatName { get; set; }
|
public string? DatName { get; set; }
|
||||||
|
|
||||||
|
[XmlElement("imFolder")]
|
||||||
|
public string? ImFolder { get; set; }
|
||||||
|
|
||||||
[XmlElement("datVersion")]
|
[XmlElement("datVersion")]
|
||||||
public string? DatVersion { get; set; }
|
public string? DatVersion { get; set; }
|
||||||
|
|
||||||
@@ -35,7 +38,19 @@ namespace SabreTools.Models.OfflineList
|
|||||||
[XmlElement("search")]
|
[XmlElement("search")]
|
||||||
public Search? Search { get; set; }
|
public Search? Search { get; set; }
|
||||||
|
|
||||||
[XmlElement("romtitle")]
|
[XmlElement("romTitle")]
|
||||||
public string? RomTitle { get; set; }
|
public string? RomTitle { get; set; }
|
||||||
|
|
||||||
|
#region DO NOT USE IN PRODUCTION
|
||||||
|
|
||||||
|
/// <remarks>Should be empty</remarks>
|
||||||
|
[XmlAnyAttribute]
|
||||||
|
public XmlAttribute[]? ADDITIONAL_ATTRIBUTES { get; set; }
|
||||||
|
|
||||||
|
/// <remarks>Should be empty</remarks>
|
||||||
|
[XmlAnyElement]
|
||||||
|
public object[]? ADDITIONAL_ELEMENTS { get; set; }
|
||||||
|
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -6,10 +6,28 @@ namespace SabreTools.Models.OfflineList
|
|||||||
[XmlRoot("dat")]
|
[XmlRoot("dat")]
|
||||||
public class Dat
|
public class Dat
|
||||||
{
|
{
|
||||||
|
[XmlAttribute(Namespace = "http://www.w3.org/2001/XMLSchema-instance", AttributeName = "noNamespaceSchemaLocation")]
|
||||||
|
public string? NoNamespaceSchemaLocation { get; set; }
|
||||||
|
|
||||||
[XmlElement("configuration")]
|
[XmlElement("configuration")]
|
||||||
public Configuration? Configuration { get; set; }
|
public Configuration? Configuration { get; set; }
|
||||||
|
|
||||||
[XmlElement("games")]
|
[XmlElement("games")]
|
||||||
public Games? Games { get; set; }
|
public Games? Games { get; set; }
|
||||||
|
|
||||||
|
[XmlElement("gui")]
|
||||||
|
public GUI? GUI { get; set; }
|
||||||
|
|
||||||
|
#region DO NOT USE IN PRODUCTION
|
||||||
|
|
||||||
|
/// <remarks>Should be empty</remarks>
|
||||||
|
[XmlAnyAttribute]
|
||||||
|
public XmlAttribute[]? ADDITIONAL_ATTRIBUTES { get; set; }
|
||||||
|
|
||||||
|
/// <remarks>Should be empty</remarks>
|
||||||
|
[XmlAnyElement]
|
||||||
|
public object[]? ADDITIONAL_ELEMENTS { get; set; }
|
||||||
|
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -11,5 +11,17 @@ namespace SabreTools.Models.OfflineList
|
|||||||
|
|
||||||
[XmlText]
|
[XmlText]
|
||||||
public string? Content { get; set; }
|
public string? Content { get; set; }
|
||||||
|
|
||||||
|
#region DO NOT USE IN PRODUCTION
|
||||||
|
|
||||||
|
/// <remarks>Should be empty</remarks>
|
||||||
|
[XmlAnyAttribute]
|
||||||
|
public XmlAttribute[]? ADDITIONAL_ATTRIBUTES { get; set; }
|
||||||
|
|
||||||
|
/// <remarks>Should be empty</remarks>
|
||||||
|
[XmlAnyElement]
|
||||||
|
public object[]? ADDITIONAL_ELEMENTS { get; set; }
|
||||||
|
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -11,5 +11,17 @@ namespace SabreTools.Models.OfflineList
|
|||||||
|
|
||||||
[XmlText]
|
[XmlText]
|
||||||
public string? Content { get; set; }
|
public string? Content { get; set; }
|
||||||
|
|
||||||
|
#region DO NOT USE IN PRODUCTION
|
||||||
|
|
||||||
|
/// <remarks>Should be empty</remarks>
|
||||||
|
[XmlAnyAttribute]
|
||||||
|
public XmlAttribute[]? ADDITIONAL_ATTRIBUTES { get; set; }
|
||||||
|
|
||||||
|
/// <remarks>Should be empty</remarks>
|
||||||
|
[XmlAnyElement]
|
||||||
|
public object[]? ADDITIONAL_ELEMENTS { get; set; }
|
||||||
|
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -8,5 +8,17 @@ namespace SabreTools.Models.OfflineList
|
|||||||
{
|
{
|
||||||
[XmlElement("romCRC")]
|
[XmlElement("romCRC")]
|
||||||
public FileRomCRC[]? RomCRC { get; set; }
|
public FileRomCRC[]? RomCRC { get; set; }
|
||||||
|
|
||||||
|
#region DO NOT USE IN PRODUCTION
|
||||||
|
|
||||||
|
/// <remarks>Should be empty</remarks>
|
||||||
|
[XmlAnyAttribute]
|
||||||
|
public XmlAttribute[]? ADDITIONAL_ATTRIBUTES { get; set; }
|
||||||
|
|
||||||
|
/// <remarks>Should be empty</remarks>
|
||||||
|
[XmlAnyElement]
|
||||||
|
public object[]? ADDITIONAL_ELEMENTS { get; set; }
|
||||||
|
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -15,5 +15,17 @@ namespace SabreTools.Models.OfflineList
|
|||||||
|
|
||||||
[XmlText]
|
[XmlText]
|
||||||
public string? Content { get; set; }
|
public string? Content { get; set; }
|
||||||
|
|
||||||
|
#region DO NOT USE IN PRODUCTION
|
||||||
|
|
||||||
|
/// <remarks>Should be empty</remarks>
|
||||||
|
[XmlAnyAttribute]
|
||||||
|
public XmlAttribute[]? ADDITIONAL_ATTRIBUTES { get; set; }
|
||||||
|
|
||||||
|
/// <remarks>Should be empty</remarks>
|
||||||
|
[XmlAnyElement]
|
||||||
|
public object[]? ADDITIONAL_ELEMENTS { get; set; }
|
||||||
|
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
24
SabreTools.Models/OfflineList/GUI.cs
Normal file
24
SabreTools.Models/OfflineList/GUI.cs
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
using System.Xml;
|
||||||
|
using System.Xml.Serialization;
|
||||||
|
|
||||||
|
namespace SabreTools.Models.OfflineList
|
||||||
|
{
|
||||||
|
[XmlRoot("gui")]
|
||||||
|
public class GUI
|
||||||
|
{
|
||||||
|
[XmlElement("images")]
|
||||||
|
public Images? Images { get; set; }
|
||||||
|
|
||||||
|
#region DO NOT USE IN PRODUCTION
|
||||||
|
|
||||||
|
/// <remarks>Should be empty</remarks>
|
||||||
|
[XmlAnyAttribute]
|
||||||
|
public XmlAttribute[]? ADDITIONAL_ATTRIBUTES { get; set; }
|
||||||
|
|
||||||
|
/// <remarks>Should be empty</remarks>
|
||||||
|
[XmlAnyElement]
|
||||||
|
public object[]? ADDITIONAL_ELEMENTS { get; set; }
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -45,7 +45,19 @@ namespace SabreTools.Models.OfflineList
|
|||||||
[XmlElement("comment")]
|
[XmlElement("comment")]
|
||||||
public string? Comment { get; set; }
|
public string? Comment { get; set; }
|
||||||
|
|
||||||
[XmlElement("duplicateId")]
|
[XmlElement("duplicateID")]
|
||||||
public string? DuplicateID { get; set; }
|
public string? DuplicateID { get; set; }
|
||||||
|
|
||||||
|
#region DO NOT USE IN PRODUCTION
|
||||||
|
|
||||||
|
/// <remarks>Should be empty</remarks>
|
||||||
|
[XmlAnyAttribute]
|
||||||
|
public XmlAttribute[]? ADDITIONAL_ATTRIBUTES { get; set; }
|
||||||
|
|
||||||
|
/// <remarks>Should be empty</remarks>
|
||||||
|
[XmlAnyElement]
|
||||||
|
public object[]? ADDITIONAL_ELEMENTS { get; set; }
|
||||||
|
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -8,5 +8,17 @@ namespace SabreTools.Models.OfflineList
|
|||||||
{
|
{
|
||||||
[XmlElement("game")]
|
[XmlElement("game")]
|
||||||
public Game[]? Game { get; set; }
|
public Game[]? Game { get; set; }
|
||||||
|
|
||||||
|
#region DO NOT USE IN PRODUCTION
|
||||||
|
|
||||||
|
/// <remarks>Should be empty</remarks>
|
||||||
|
[XmlAnyAttribute]
|
||||||
|
public XmlAttribute[]? ADDITIONAL_ATTRIBUTES { get; set; }
|
||||||
|
|
||||||
|
/// <remarks>Should be empty</remarks>
|
||||||
|
[XmlAnyElement]
|
||||||
|
public object[]? ADDITIONAL_ELEMENTS { get; set; }
|
||||||
|
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
33
SabreTools.Models/OfflineList/Image.cs
Normal file
33
SabreTools.Models/OfflineList/Image.cs
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
using System.Xml;
|
||||||
|
using System.Xml.Serialization;
|
||||||
|
|
||||||
|
namespace SabreTools.Models.OfflineList
|
||||||
|
{
|
||||||
|
[XmlRoot("image")]
|
||||||
|
public class Image
|
||||||
|
{
|
||||||
|
[XmlAttribute("x")]
|
||||||
|
public string? X { get; set; }
|
||||||
|
|
||||||
|
[XmlAttribute("y")]
|
||||||
|
public string? Y { get; set; }
|
||||||
|
|
||||||
|
[XmlAttribute("width")]
|
||||||
|
public string? Width { get; set; }
|
||||||
|
|
||||||
|
[XmlAttribute("height")]
|
||||||
|
public string? Height { get; set; }
|
||||||
|
|
||||||
|
#region DO NOT USE IN PRODUCTION
|
||||||
|
|
||||||
|
/// <remarks>Should be empty</remarks>
|
||||||
|
[XmlAnyAttribute]
|
||||||
|
public XmlAttribute[]? ADDITIONAL_ATTRIBUTES { get; set; }
|
||||||
|
|
||||||
|
/// <remarks>Should be empty</remarks>
|
||||||
|
[XmlAnyElement]
|
||||||
|
public object[]? ADDITIONAL_ELEMENTS { get; set; }
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
||||||
30
SabreTools.Models/OfflineList/Images.cs
Normal file
30
SabreTools.Models/OfflineList/Images.cs
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
using System.Xml;
|
||||||
|
using System.Xml.Serialization;
|
||||||
|
|
||||||
|
namespace SabreTools.Models.OfflineList
|
||||||
|
{
|
||||||
|
[XmlRoot("images")]
|
||||||
|
public class Images
|
||||||
|
{
|
||||||
|
[XmlAttribute("width")]
|
||||||
|
public string? Width { get; set; }
|
||||||
|
|
||||||
|
[XmlAttribute("height")]
|
||||||
|
public string? Height { get; set; }
|
||||||
|
|
||||||
|
[XmlElement("image")]
|
||||||
|
public Image[]? Image { get; set; }
|
||||||
|
|
||||||
|
#region DO NOT USE IN PRODUCTION
|
||||||
|
|
||||||
|
/// <remarks>Should be empty</remarks>
|
||||||
|
[XmlAnyAttribute]
|
||||||
|
public XmlAttribute[]? ADDITIONAL_ATTRIBUTES { get; set; }
|
||||||
|
|
||||||
|
/// <remarks>Should be empty</remarks>
|
||||||
|
[XmlAnyElement]
|
||||||
|
public object[]? ADDITIONAL_ELEMENTS { get; set; }
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -5,14 +5,29 @@ namespace SabreTools.Models.OfflineList
|
|||||||
{
|
{
|
||||||
public class InfoBase
|
public class InfoBase
|
||||||
{
|
{
|
||||||
|
/// <remarks>Boolean</remarks>
|
||||||
[XmlAttribute("visible")]
|
[XmlAttribute("visible")]
|
||||||
public bool? Visible { get; set; }
|
public string? Visible { get; set; }
|
||||||
|
|
||||||
|
/// <remarks>Boolean</remarks>
|
||||||
[XmlAttribute("inNamingOption")]
|
[XmlAttribute("inNamingOption")]
|
||||||
public bool? InNamingOption { get; set; }
|
public string? InNamingOption { get; set; }
|
||||||
|
|
||||||
|
/// <remarks>Boolean</remarks>
|
||||||
[XmlAttribute("default")]
|
[XmlAttribute("default")]
|
||||||
public bool? Default { get; set; }
|
public string? Default { get; set; }
|
||||||
|
|
||||||
|
#region DO NOT USE IN PRODUCTION
|
||||||
|
|
||||||
|
/// <remarks>Should be empty</remarks>
|
||||||
|
[XmlAnyAttribute]
|
||||||
|
public XmlAttribute[]? ADDITIONAL_ATTRIBUTES { get; set; }
|
||||||
|
|
||||||
|
/// <remarks>Should be empty</remarks>
|
||||||
|
[XmlAnyElement]
|
||||||
|
public object[]? ADDITIONAL_ELEMENTS { get; set; }
|
||||||
|
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
|
|
||||||
[XmlRoot("title")]
|
[XmlRoot("title")]
|
||||||
@@ -27,6 +42,9 @@ namespace SabreTools.Models.OfflineList
|
|||||||
[XmlRoot("sourceRom")]
|
[XmlRoot("sourceRom")]
|
||||||
public class SourceRom : InfoBase { }
|
public class SourceRom : InfoBase { }
|
||||||
|
|
||||||
|
[XmlRoot("saveType")]
|
||||||
|
public class SaveType : InfoBase { }
|
||||||
|
|
||||||
[XmlRoot("romSize")]
|
[XmlRoot("romSize")]
|
||||||
public class RomSize : InfoBase { }
|
public class RomSize : InfoBase { }
|
||||||
|
|
||||||
|
|||||||
@@ -18,6 +18,9 @@ namespace SabreTools.Models.OfflineList
|
|||||||
[XmlElement("sourceRom")]
|
[XmlElement("sourceRom")]
|
||||||
public SourceRom? SourceRom { get; set; }
|
public SourceRom? SourceRom { get; set; }
|
||||||
|
|
||||||
|
[XmlElement("saveType")]
|
||||||
|
public SaveType? SaveType { get; set; }
|
||||||
|
|
||||||
[XmlElement("romSize")]
|
[XmlElement("romSize")]
|
||||||
public RomSize? RomSize { get; set; }
|
public RomSize? RomSize { get; set; }
|
||||||
|
|
||||||
@@ -41,5 +44,17 @@ namespace SabreTools.Models.OfflineList
|
|||||||
|
|
||||||
[XmlElement("languages")]
|
[XmlElement("languages")]
|
||||||
public Languages? Languages { get; set; }
|
public Languages? Languages { get; set; }
|
||||||
|
|
||||||
|
#region DO NOT USE IN PRODUCTION
|
||||||
|
|
||||||
|
/// <remarks>Should be empty</remarks>
|
||||||
|
[XmlAnyAttribute]
|
||||||
|
public XmlAttribute[]? ADDITIONAL_ATTRIBUTES { get; set; }
|
||||||
|
|
||||||
|
/// <remarks>Should be empty</remarks>
|
||||||
|
[XmlAnyElement]
|
||||||
|
public object[]? ADDITIONAL_ELEMENTS { get; set; }
|
||||||
|
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -14,5 +14,17 @@ namespace SabreTools.Models.OfflineList
|
|||||||
|
|
||||||
[XmlElement("imURL")]
|
[XmlElement("imURL")]
|
||||||
public string? ImUrl { get; set; }
|
public string? ImUrl { get; set; }
|
||||||
|
|
||||||
|
#region DO NOT USE IN PRODUCTION
|
||||||
|
|
||||||
|
/// <remarks>Should be empty</remarks>
|
||||||
|
[XmlAnyAttribute]
|
||||||
|
public XmlAttribute[]? ADDITIONAL_ATTRIBUTES { get; set; }
|
||||||
|
|
||||||
|
/// <remarks>Should be empty</remarks>
|
||||||
|
[XmlAnyElement]
|
||||||
|
public object[]? ADDITIONAL_ELEMENTS { get; set; }
|
||||||
|
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -8,5 +8,17 @@ namespace SabreTools.Models.OfflineList
|
|||||||
{
|
{
|
||||||
[XmlElement("to")]
|
[XmlElement("to")]
|
||||||
public To[]? To { get; set; }
|
public To[]? To { get; set; }
|
||||||
|
|
||||||
|
#region DO NOT USE IN PRODUCTION
|
||||||
|
|
||||||
|
/// <remarks>Should be empty</remarks>
|
||||||
|
[XmlAnyAttribute]
|
||||||
|
public XmlAttribute[]? ADDITIONAL_ATTRIBUTES { get; set; }
|
||||||
|
|
||||||
|
/// <remarks>Should be empty</remarks>
|
||||||
|
[XmlAnyElement]
|
||||||
|
public object[]? ADDITIONAL_ELEMENTS { get; set; }
|
||||||
|
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -9,13 +9,27 @@ namespace SabreTools.Models.OfflineList
|
|||||||
[XmlAttribute("value")]
|
[XmlAttribute("value")]
|
||||||
public string? Value { get; set; }
|
public string? Value { get; set; }
|
||||||
|
|
||||||
|
/// <remarks>Boolean</remarks>
|
||||||
[XmlAttribute("default")]
|
[XmlAttribute("default")]
|
||||||
public bool? Default { get; set; }
|
public string? Default { get; set; }
|
||||||
|
|
||||||
|
/// <remarks>Boolean</remarks>
|
||||||
[XmlAttribute("auto")]
|
[XmlAttribute("auto")]
|
||||||
public bool? Auto { get; set; }
|
public string? Auto { get; set; }
|
||||||
|
|
||||||
[XmlElement("find")]
|
[XmlElement("find")]
|
||||||
public Find[]? Find { get; set; }
|
public Find[]? Find { get; set; }
|
||||||
|
|
||||||
|
#region DO NOT USE IN PRODUCTION
|
||||||
|
|
||||||
|
/// <remarks>Should be empty</remarks>
|
||||||
|
[XmlAnyAttribute]
|
||||||
|
public XmlAttribute[]? ADDITIONAL_ATTRIBUTES { get; set; }
|
||||||
|
|
||||||
|
/// <remarks>Should be empty</remarks>
|
||||||
|
[XmlAnyElement]
|
||||||
|
public object[]? ADDITIONAL_ELEMENTS { get; set; }
|
||||||
|
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -262,6 +262,217 @@ namespace SabreTools.Test.Parser
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void OfflineListDeserializeTest()
|
||||||
|
{
|
||||||
|
// Open the file for reading
|
||||||
|
string filename = System.IO.Path.Combine(Environment.CurrentDirectory, "TestData", "test-offlinelist-files.xml");
|
||||||
|
using var fs = System.IO.File.OpenRead(filename);
|
||||||
|
using var xr = System.Xml.XmlReader.Create(fs, new System.Xml.XmlReaderSettings { DtdProcessing = System.Xml.DtdProcessing.Ignore });
|
||||||
|
|
||||||
|
// Setup the serializer
|
||||||
|
var serializer = new XmlSerializer(typeof(Models.OfflineList.Dat));
|
||||||
|
|
||||||
|
// Deserialize the file
|
||||||
|
var dat = serializer.Deserialize(xr) as Models.OfflineList.Dat;
|
||||||
|
|
||||||
|
// Validate the values
|
||||||
|
Assert.NotNull(dat);
|
||||||
|
Assert.NotNull(dat.Games);
|
||||||
|
Assert.NotNull(dat.Games.Game);
|
||||||
|
Assert.Equal(6750, dat.Games.Game.Length);
|
||||||
|
|
||||||
|
// Validate we're not missing any attributes or elements
|
||||||
|
Assert.Null(dat.ADDITIONAL_ATTRIBUTES);
|
||||||
|
Assert.Null(dat.ADDITIONAL_ELEMENTS);
|
||||||
|
if (dat.Configuration != null)
|
||||||
|
{
|
||||||
|
var configuration = dat.Configuration;
|
||||||
|
Assert.Null(configuration.ADDITIONAL_ATTRIBUTES);
|
||||||
|
Assert.Null(configuration.ADDITIONAL_ELEMENTS);
|
||||||
|
|
||||||
|
if (configuration.Infos != null)
|
||||||
|
{
|
||||||
|
var infos = configuration.Infos;
|
||||||
|
Assert.Null(infos.ADDITIONAL_ATTRIBUTES);
|
||||||
|
Assert.Null(infos.ADDITIONAL_ELEMENTS);
|
||||||
|
|
||||||
|
if (infos.Title != null)
|
||||||
|
{
|
||||||
|
var title = infos.Title;
|
||||||
|
Assert.Null(title.ADDITIONAL_ATTRIBUTES);
|
||||||
|
Assert.Null(title.ADDITIONAL_ELEMENTS);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (infos.Location != null)
|
||||||
|
{
|
||||||
|
var location = infos.Location;
|
||||||
|
Assert.Null(location.ADDITIONAL_ATTRIBUTES);
|
||||||
|
Assert.Null(location.ADDITIONAL_ELEMENTS);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (infos.Publisher != null)
|
||||||
|
{
|
||||||
|
var publisher = infos.Publisher;
|
||||||
|
Assert.Null(publisher.ADDITIONAL_ATTRIBUTES);
|
||||||
|
Assert.Null(publisher.ADDITIONAL_ELEMENTS);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (infos.SourceRom != null)
|
||||||
|
{
|
||||||
|
var sourceRom = infos.SourceRom;
|
||||||
|
Assert.Null(sourceRom.ADDITIONAL_ATTRIBUTES);
|
||||||
|
Assert.Null(sourceRom.ADDITIONAL_ELEMENTS);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (infos.SaveType != null)
|
||||||
|
{
|
||||||
|
var saveType = infos.SaveType;
|
||||||
|
Assert.Null(saveType.ADDITIONAL_ATTRIBUTES);
|
||||||
|
Assert.Null(saveType.ADDITIONAL_ELEMENTS);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (infos.RomSize != null)
|
||||||
|
{
|
||||||
|
var romSize = infos.RomSize;
|
||||||
|
Assert.Null(romSize.ADDITIONAL_ATTRIBUTES);
|
||||||
|
Assert.Null(romSize.ADDITIONAL_ELEMENTS);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (infos.ReleaseNumber != null)
|
||||||
|
{
|
||||||
|
var releaseNumber = infos.ReleaseNumber;
|
||||||
|
Assert.Null(releaseNumber.ADDITIONAL_ATTRIBUTES);
|
||||||
|
Assert.Null(releaseNumber.ADDITIONAL_ELEMENTS);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (infos.LanguageNumber != null)
|
||||||
|
{
|
||||||
|
var languageNumber = infos.LanguageNumber;
|
||||||
|
Assert.Null(languageNumber.ADDITIONAL_ATTRIBUTES);
|
||||||
|
Assert.Null(languageNumber.ADDITIONAL_ELEMENTS);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (infos.Comment != null)
|
||||||
|
{
|
||||||
|
var comment = infos.Comment;
|
||||||
|
Assert.Null(comment.ADDITIONAL_ATTRIBUTES);
|
||||||
|
Assert.Null(comment.ADDITIONAL_ELEMENTS);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (infos.RomCRC != null)
|
||||||
|
{
|
||||||
|
var romCRC = infos.RomCRC;
|
||||||
|
Assert.Null(romCRC.ADDITIONAL_ATTRIBUTES);
|
||||||
|
Assert.Null(romCRC.ADDITIONAL_ELEMENTS);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (infos.Im1CRC != null)
|
||||||
|
{
|
||||||
|
var im1CRC = infos.Im1CRC;
|
||||||
|
Assert.Null(im1CRC.ADDITIONAL_ATTRIBUTES);
|
||||||
|
Assert.Null(im1CRC.ADDITIONAL_ELEMENTS);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (infos.Im2CRC != null)
|
||||||
|
{
|
||||||
|
var im2CRC = infos.Im2CRC;
|
||||||
|
Assert.Null(im2CRC.ADDITIONAL_ATTRIBUTES);
|
||||||
|
Assert.Null(im2CRC.ADDITIONAL_ELEMENTS);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (infos.Languages != null)
|
||||||
|
{
|
||||||
|
var languages = infos.Languages;
|
||||||
|
Assert.Null(languages.ADDITIONAL_ATTRIBUTES);
|
||||||
|
Assert.Null(languages.ADDITIONAL_ELEMENTS);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (configuration.CanOpen != null)
|
||||||
|
{
|
||||||
|
var canOpen = configuration.CanOpen;
|
||||||
|
Assert.Null(canOpen.ADDITIONAL_ATTRIBUTES);
|
||||||
|
Assert.Null(canOpen.ADDITIONAL_ELEMENTS);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (configuration.NewDat != null)
|
||||||
|
{
|
||||||
|
var newDat = configuration.NewDat;
|
||||||
|
Assert.Null(newDat.ADDITIONAL_ATTRIBUTES);
|
||||||
|
Assert.Null(newDat.ADDITIONAL_ELEMENTS);
|
||||||
|
|
||||||
|
if (newDat.DatUrl != null)
|
||||||
|
{
|
||||||
|
var datURL = newDat.DatUrl;
|
||||||
|
Assert.Null(datURL.ADDITIONAL_ATTRIBUTES);
|
||||||
|
Assert.Null(datURL.ADDITIONAL_ELEMENTS);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (configuration.Search != null)
|
||||||
|
{
|
||||||
|
var search = configuration.Search;
|
||||||
|
Assert.Null(search.ADDITIONAL_ATTRIBUTES);
|
||||||
|
Assert.Null(search.ADDITIONAL_ELEMENTS);
|
||||||
|
|
||||||
|
foreach (var to in search.To ?? Array.Empty<Models.OfflineList.To>())
|
||||||
|
{
|
||||||
|
Assert.Null(to.ADDITIONAL_ATTRIBUTES);
|
||||||
|
Assert.Null(to.ADDITIONAL_ELEMENTS);
|
||||||
|
|
||||||
|
foreach (var find in to.Find ?? Array.Empty<Models.OfflineList.Find>())
|
||||||
|
{
|
||||||
|
Assert.Null(find.ADDITIONAL_ATTRIBUTES);
|
||||||
|
Assert.Null(find.ADDITIONAL_ELEMENTS);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Assert.Null(dat.Games.ADDITIONAL_ATTRIBUTES);
|
||||||
|
Assert.Null(dat.Games.ADDITIONAL_ELEMENTS);
|
||||||
|
|
||||||
|
foreach (var game in dat.Games.Game)
|
||||||
|
{
|
||||||
|
Assert.Null(game.ADDITIONAL_ATTRIBUTES);
|
||||||
|
Assert.Null(game.ADDITIONAL_ELEMENTS);
|
||||||
|
|
||||||
|
if (game.Files != null)
|
||||||
|
{
|
||||||
|
var files = game.Files;
|
||||||
|
Assert.Null(files.ADDITIONAL_ATTRIBUTES);
|
||||||
|
Assert.Null(files.ADDITIONAL_ELEMENTS);
|
||||||
|
|
||||||
|
foreach (var romCRC in files.RomCRC ?? Array.Empty<Models.OfflineList.FileRomCRC>())
|
||||||
|
{
|
||||||
|
Assert.Null(romCRC.ADDITIONAL_ATTRIBUTES);
|
||||||
|
Assert.Null(romCRC.ADDITIONAL_ELEMENTS);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dat.GUI != null)
|
||||||
|
{
|
||||||
|
var gui = dat.GUI;
|
||||||
|
Assert.Null(gui.ADDITIONAL_ATTRIBUTES);
|
||||||
|
Assert.Null(gui.ADDITIONAL_ELEMENTS);
|
||||||
|
|
||||||
|
if (gui.Images != null)
|
||||||
|
{
|
||||||
|
var images = gui.Images;
|
||||||
|
Assert.Null(images.ADDITIONAL_ATTRIBUTES);
|
||||||
|
Assert.Null(images.ADDITIONAL_ELEMENTS);
|
||||||
|
|
||||||
|
foreach (var image in images.Image ?? Array.Empty<Models.OfflineList.Image>())
|
||||||
|
{
|
||||||
|
Assert.Null(image.ADDITIONAL_ATTRIBUTES);
|
||||||
|
Assert.Null(image.ADDITIONAL_ELEMENTS);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void OpenMSXDeserializeTest()
|
public void OpenMSXDeserializeTest()
|
||||||
{
|
{
|
||||||
|
|||||||
121575
SabreTools.Test/TestData/test-offlinelist-files.xml
Normal file
121575
SabreTools.Test/TestData/test-offlinelist-files.xml
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user