mirror of
https://github.com/claunia/SabreTools.git
synced 2025-12-16 19:14:27 +00:00
Add listxml deserialization test, fix issues
This commit is contained in:
@@ -14,5 +14,17 @@ namespace SabreTools.Models.Listxml
|
||||
|
||||
[XmlElement("condition")]
|
||||
public Condition? Condition { 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.Listxml
|
||||
{
|
||||
[XmlAttribute("mask")]
|
||||
public string Mask { 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.Listxml
|
||||
/// <remarks>(yes|no) "no"</remarks>
|
||||
[XmlAttribute("default")]
|
||||
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
|
||||
}
|
||||
}
|
||||
@@ -18,5 +18,17 @@ namespace SabreTools.Models.Listxml
|
||||
|
||||
[XmlAttribute("clock")]
|
||||
public string? Clock { 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
|
||||
}
|
||||
}
|
||||
@@ -18,5 +18,17 @@ namespace SabreTools.Models.Listxml
|
||||
|
||||
[XmlAttribute("value")]
|
||||
public string Value { 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
|
||||
}
|
||||
}
|
||||
@@ -16,5 +16,17 @@ namespace SabreTools.Models.Listxml
|
||||
/// <remarks>(yes|no) "no"</remarks>
|
||||
[XmlAttribute("inverted")]
|
||||
public string? Inverted { 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
|
||||
}
|
||||
}
|
||||
@@ -18,5 +18,17 @@ namespace SabreTools.Models.Listxml
|
||||
|
||||
[XmlElement("condition")]
|
||||
public Condition? Condition { 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
|
||||
}
|
||||
}
|
||||
@@ -23,5 +23,17 @@ namespace SabreTools.Models.Listxml
|
||||
|
||||
[XmlElement("confsetting")]
|
||||
public ConfSetting[]? ConfSetting { 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
|
||||
}
|
||||
}
|
||||
@@ -52,5 +52,17 @@ namespace SabreTools.Models.Listxml
|
||||
/// <remarks>Numeric?</remarks>
|
||||
[XmlAttribute("ways3")]
|
||||
public string? Ways3 { 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
|
||||
}
|
||||
}
|
||||
@@ -26,5 +26,17 @@ namespace SabreTools.Models.Listxml
|
||||
|
||||
[XmlElement("extension")]
|
||||
public Extension[]? 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
|
||||
}
|
||||
}
|
||||
@@ -8,5 +8,17 @@ namespace SabreTools.Models.Listxml
|
||||
{
|
||||
[XmlAttribute("name")]
|
||||
public string Name { 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
|
||||
}
|
||||
}
|
||||
@@ -16,5 +16,17 @@ namespace SabreTools.Models.Listxml
|
||||
/// <remarks>(yes|no) "no"</remarks>
|
||||
[XmlAttribute("inverted")]
|
||||
public string? Inverted { 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
|
||||
}
|
||||
}
|
||||
@@ -23,5 +23,17 @@ namespace SabreTools.Models.Listxml
|
||||
|
||||
[XmlElement("dipvalue")]
|
||||
public DipValue[]? DipValue { 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
|
||||
}
|
||||
}
|
||||
@@ -18,5 +18,17 @@ namespace SabreTools.Models.Listxml
|
||||
|
||||
[XmlElement("condition")]
|
||||
public Condition? Condition { 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,5 +33,17 @@ namespace SabreTools.Models.Listxml
|
||||
/// <remarks>(yes|no) "no"</remarks>
|
||||
[XmlAttribute("optional")]
|
||||
public string? Optional { 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,7 +15,7 @@ namespace SabreTools.Models.Listxml
|
||||
|
||||
/// <remarks>(0|90|180|270)</remarks>
|
||||
[XmlAttribute("rotate")]
|
||||
public long? Rotate { get; set; }
|
||||
public string? Rotate { get; set; }
|
||||
|
||||
/// <remarks>(yes|no) "no"</remarks>
|
||||
[XmlAttribute("flipx")]
|
||||
@@ -60,5 +60,17 @@ namespace SabreTools.Models.Listxml
|
||||
/// <remarks>Numeric?</remarks>
|
||||
[XmlAttribute("vbstart")]
|
||||
public string? VBStart { 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
|
||||
}
|
||||
}
|
||||
@@ -37,5 +37,17 @@ namespace SabreTools.Models.Listxml
|
||||
/// <remarks>(yes|no) "no"</remarks>
|
||||
[XmlAttribute("incomplete")]
|
||||
public string? Incomplete { 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.Listxml
|
||||
{
|
||||
[XmlAttribute("name")]
|
||||
public string Name { 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
|
||||
}
|
||||
}
|
||||
@@ -17,5 +17,17 @@ namespace SabreTools.Models.Listxml
|
||||
/// <remarks>(unemulated|imperfect)</remarks>
|
||||
[XmlAttribute("overall")]
|
||||
public string? Overall { 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
|
||||
}
|
||||
}
|
||||
@@ -25,5 +25,17 @@ namespace SabreTools.Models.Listxml
|
||||
/// <remarks>Numeric?</remarks>
|
||||
[XmlElement("control")]
|
||||
public Control[]? Control { 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.Listxml
|
||||
|
||||
[XmlAttribute("briefname")]
|
||||
public string BriefName { 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
|
||||
}
|
||||
}
|
||||
@@ -102,5 +102,17 @@ namespace SabreTools.Models.Listxml
|
||||
|
||||
[XmlElement("ramoption")]
|
||||
public RamOption[]? RamOption { 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
|
||||
}
|
||||
}
|
||||
@@ -18,5 +18,17 @@ namespace SabreTools.Models.Listxml
|
||||
|
||||
[XmlElement("machine")]
|
||||
public Machine[] Machine { 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.Listxml
|
||||
|
||||
[XmlElement("analog")]
|
||||
public Analog[]? Analog { 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.Listxml
|
||||
|
||||
[XmlAttribute("default")]
|
||||
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
|
||||
}
|
||||
}
|
||||
@@ -38,5 +38,17 @@ namespace SabreTools.Models.Listxml
|
||||
/// <remarks>(yes|no) "no"</remarks>
|
||||
[XmlAttribute("optional")]
|
||||
public string? Optional { 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.Listxml
|
||||
{
|
||||
[XmlAttribute("name")]
|
||||
public string Name { 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.Listxml
|
||||
|
||||
[XmlElement("slotoption")]
|
||||
public SlotOption[]? SlotOption { 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.Listxml
|
||||
/// <remarks>(yes|no) "no"</remarks>
|
||||
[XmlAttribute("default")]
|
||||
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
|
||||
}
|
||||
}
|
||||
@@ -18,5 +18,17 @@ namespace SabreTools.Models.Listxml
|
||||
|
||||
[XmlAttribute("filter")]
|
||||
public string? Filter { 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,5 +9,17 @@ namespace SabreTools.Models.Listxml
|
||||
/// <remarks>Numeric?</remarks>
|
||||
[XmlAttribute("channels")]
|
||||
public string Channels { 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
|
||||
}
|
||||
}
|
||||
20
SabreTools.Models/README.MD
Normal file
20
SabreTools.Models/README.MD
Normal file
@@ -0,0 +1,20 @@
|
||||
# SabreTools.Models
|
||||
|
||||
This library comprises of models that represent either directly serializable or representative structures for all DAT types. This library is currently unused by any other library in SabreTools, as there are no ways of properly dealing with conversion between models, filtering, or many of the other features. All of the main models representing metadata files should have parsers created outside of the current code. The parser code will likely be partially patterned off of the code being used to create the serialization tests.
|
||||
|
||||
In each completed model, there is a section that looks like the following:
|
||||
```
|
||||
#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
|
||||
```
|
||||
|
||||
This code should be removed before the models are used. This is only included during debugging and implementation as to ensure that there are no notable holes in the models that would disallow 1:1 replication of inputs.
|
||||
@@ -33,5 +33,233 @@ namespace SabreTools.Test.Parser
|
||||
Assert.Null(file.ADDITIONAL_ELEMENTS);
|
||||
}
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ListxmlDeserializeTest()
|
||||
{
|
||||
// Open the file for reading
|
||||
string filename = System.IO.Path.Combine(Environment.CurrentDirectory, "TestData", "test-listxml-files.xml.gz");
|
||||
using var fs = System.IO.File.OpenRead(filename);
|
||||
using var gz = new System.IO.Compression.GZipStream(fs, System.IO.Compression.CompressionMode.Decompress);
|
||||
using var xr = System.Xml.XmlReader.Create(gz, new System.Xml.XmlReaderSettings { DtdProcessing = System.Xml.DtdProcessing.Parse });
|
||||
|
||||
// Setup the serializer
|
||||
var serializer = new XmlSerializer(typeof(Models.Listxml.Mame));
|
||||
|
||||
// Deserialize the file
|
||||
var dat = serializer.Deserialize(xr) as Models.Listxml.Mame;
|
||||
|
||||
// Validate the values
|
||||
Assert.NotNull(dat);
|
||||
Assert.NotNull(dat.Machine);
|
||||
Assert.Equal(45861, dat.Machine.Length);
|
||||
|
||||
// Validate we're not missing any attributes or elements
|
||||
Assert.Null(dat.ADDITIONAL_ATTRIBUTES);
|
||||
Assert.Null(dat.ADDITIONAL_ELEMENTS);
|
||||
foreach (var machine in dat.Machine)
|
||||
{
|
||||
Assert.Null(machine.ADDITIONAL_ATTRIBUTES);
|
||||
Assert.Null(machine.ADDITIONAL_ELEMENTS);
|
||||
|
||||
foreach (var biosset in machine.BiosSet ?? Array.Empty<Models.Listxml.BiosSet>())
|
||||
{
|
||||
Assert.Null(biosset.ADDITIONAL_ATTRIBUTES);
|
||||
Assert.Null(biosset.ADDITIONAL_ELEMENTS);
|
||||
}
|
||||
|
||||
foreach (var rom in machine.Rom ?? Array.Empty<Models.Listxml.Rom>())
|
||||
{
|
||||
Assert.Null(rom.ADDITIONAL_ATTRIBUTES);
|
||||
Assert.Null(rom.ADDITIONAL_ELEMENTS);
|
||||
}
|
||||
|
||||
foreach (var disk in machine.Disk ?? Array.Empty<Models.Listxml.Disk>())
|
||||
{
|
||||
Assert.Null(disk.ADDITIONAL_ATTRIBUTES);
|
||||
Assert.Null(disk.ADDITIONAL_ELEMENTS);
|
||||
}
|
||||
|
||||
foreach (var deviceRef in machine.DeviceRef ?? Array.Empty<Models.Listxml.DeviceRef>())
|
||||
{
|
||||
Assert.Null(deviceRef.ADDITIONAL_ATTRIBUTES);
|
||||
Assert.Null(deviceRef.ADDITIONAL_ELEMENTS);
|
||||
}
|
||||
|
||||
foreach (var sample in machine.Sample ?? Array.Empty<Models.Listxml.Sample>())
|
||||
{
|
||||
Assert.Null(sample.ADDITIONAL_ATTRIBUTES);
|
||||
Assert.Null(sample.ADDITIONAL_ELEMENTS);
|
||||
}
|
||||
|
||||
foreach (var chip in machine.Chip ?? Array.Empty<Models.Listxml.Chip>())
|
||||
{
|
||||
Assert.Null(chip.ADDITIONAL_ATTRIBUTES);
|
||||
Assert.Null(chip.ADDITIONAL_ELEMENTS);
|
||||
}
|
||||
|
||||
foreach (var display in machine.Display ?? Array.Empty<Models.Listxml.Display>())
|
||||
{
|
||||
Assert.Null(display.ADDITIONAL_ATTRIBUTES);
|
||||
Assert.Null(display.ADDITIONAL_ELEMENTS);
|
||||
}
|
||||
|
||||
if (machine.Sound != null)
|
||||
{
|
||||
Assert.Null(machine.Sound.ADDITIONAL_ATTRIBUTES);
|
||||
Assert.Null(machine.Sound.ADDITIONAL_ELEMENTS);
|
||||
}
|
||||
|
||||
if (machine.Input != null)
|
||||
{
|
||||
Assert.Null(machine.Input.ADDITIONAL_ATTRIBUTES);
|
||||
Assert.Null(machine.Input.ADDITIONAL_ELEMENTS);
|
||||
|
||||
foreach (var control in machine.Input.Control ?? Array.Empty<Models.Listxml.Control>())
|
||||
{
|
||||
Assert.Null(control.ADDITIONAL_ATTRIBUTES);
|
||||
Assert.Null(control.ADDITIONAL_ELEMENTS);
|
||||
}
|
||||
}
|
||||
|
||||
foreach (var dipswitch in machine.DipSwitch ?? Array.Empty<Models.Listxml.DipSwitch>())
|
||||
{
|
||||
Assert.Null(dipswitch.ADDITIONAL_ATTRIBUTES);
|
||||
Assert.Null(dipswitch.ADDITIONAL_ELEMENTS);
|
||||
|
||||
if (dipswitch.Condition != null)
|
||||
{
|
||||
Assert.Null(dipswitch.Condition.ADDITIONAL_ATTRIBUTES);
|
||||
Assert.Null(dipswitch.Condition.ADDITIONAL_ELEMENTS);
|
||||
}
|
||||
|
||||
foreach (var diplocation in dipswitch.DipLocation ?? Array.Empty<Models.Listxml.DipLocation>())
|
||||
{
|
||||
Assert.Null(diplocation.ADDITIONAL_ATTRIBUTES);
|
||||
Assert.Null(diplocation.ADDITIONAL_ELEMENTS);
|
||||
}
|
||||
|
||||
foreach (var dipvalue in dipswitch.DipValue ?? Array.Empty<Models.Listxml.DipValue>())
|
||||
{
|
||||
Assert.Null(dipvalue.ADDITIONAL_ATTRIBUTES);
|
||||
Assert.Null(dipvalue.ADDITIONAL_ELEMENTS);
|
||||
|
||||
if (dipvalue.Condition != null)
|
||||
{
|
||||
Assert.Null(dipvalue.Condition.ADDITIONAL_ATTRIBUTES);
|
||||
Assert.Null(dipvalue.Condition.ADDITIONAL_ELEMENTS);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
foreach (var configuration in machine.Configuration ?? Array.Empty<Models.Listxml.Configuration>())
|
||||
{
|
||||
Assert.Null(configuration.ADDITIONAL_ATTRIBUTES);
|
||||
Assert.Null(configuration.ADDITIONAL_ELEMENTS);
|
||||
|
||||
if (configuration.Condition != null)
|
||||
{
|
||||
Assert.Null(configuration.Condition.ADDITIONAL_ATTRIBUTES);
|
||||
Assert.Null(configuration.Condition.ADDITIONAL_ELEMENTS);
|
||||
}
|
||||
|
||||
foreach (var conflocation in configuration.ConfLocation ?? Array.Empty<Models.Listxml.ConfLocation>())
|
||||
{
|
||||
Assert.Null(conflocation.ADDITIONAL_ATTRIBUTES);
|
||||
Assert.Null(conflocation.ADDITIONAL_ELEMENTS);
|
||||
}
|
||||
|
||||
foreach (var confsetting in configuration.ConfSetting ?? Array.Empty<Models.Listxml.ConfSetting>())
|
||||
{
|
||||
Assert.Null(confsetting.ADDITIONAL_ATTRIBUTES);
|
||||
Assert.Null(confsetting.ADDITIONAL_ELEMENTS);
|
||||
|
||||
if (confsetting.Condition != null)
|
||||
{
|
||||
Assert.Null(confsetting.Condition.ADDITIONAL_ATTRIBUTES);
|
||||
Assert.Null(confsetting.Condition.ADDITIONAL_ELEMENTS);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
foreach (var port in machine.Port ?? Array.Empty<Models.Listxml.Port>())
|
||||
{
|
||||
Assert.Null(port.ADDITIONAL_ATTRIBUTES);
|
||||
Assert.Null(port.ADDITIONAL_ELEMENTS);
|
||||
|
||||
foreach (var analog in port.Analog ?? Array.Empty<Models.Listxml.Analog>())
|
||||
{
|
||||
Assert.Null(analog.ADDITIONAL_ATTRIBUTES);
|
||||
Assert.Null(analog.ADDITIONAL_ELEMENTS);
|
||||
}
|
||||
}
|
||||
|
||||
foreach (var adjuster in machine.Adjuster ?? Array.Empty<Models.Listxml.Adjuster>())
|
||||
{
|
||||
Assert.Null(adjuster.ADDITIONAL_ATTRIBUTES);
|
||||
Assert.Null(adjuster.ADDITIONAL_ELEMENTS);
|
||||
|
||||
if (adjuster.Condition != null)
|
||||
{
|
||||
Assert.Null(adjuster.Condition.ADDITIONAL_ATTRIBUTES);
|
||||
Assert.Null(adjuster.Condition.ADDITIONAL_ELEMENTS);
|
||||
}
|
||||
}
|
||||
|
||||
if (machine.Driver != null)
|
||||
{
|
||||
Assert.Null(machine.Driver.ADDITIONAL_ATTRIBUTES);
|
||||
Assert.Null(machine.Driver.ADDITIONAL_ELEMENTS);
|
||||
}
|
||||
|
||||
foreach (var feature in machine.Feature ?? Array.Empty<Models.Listxml.Feature>())
|
||||
{
|
||||
Assert.Null(feature.ADDITIONAL_ATTRIBUTES);
|
||||
Assert.Null(feature.ADDITIONAL_ELEMENTS);
|
||||
}
|
||||
|
||||
foreach (var device in machine.Device ?? Array.Empty<Models.Listxml.Device>())
|
||||
{
|
||||
Assert.Null(device.ADDITIONAL_ATTRIBUTES);
|
||||
Assert.Null(device.ADDITIONAL_ELEMENTS);
|
||||
|
||||
if (device.Instance != null)
|
||||
{
|
||||
Assert.Null(device.Instance.ADDITIONAL_ATTRIBUTES);
|
||||
Assert.Null(device.Instance.ADDITIONAL_ELEMENTS);
|
||||
}
|
||||
|
||||
foreach (var extension in device.Extension ?? Array.Empty<Models.Listxml.Extension>())
|
||||
{
|
||||
Assert.Null(extension.ADDITIONAL_ATTRIBUTES);
|
||||
Assert.Null(extension.ADDITIONAL_ELEMENTS);
|
||||
}
|
||||
}
|
||||
|
||||
foreach (var slot in machine.Slot ?? Array.Empty<Models.Listxml.Slot>())
|
||||
{
|
||||
Assert.Null(slot.ADDITIONAL_ATTRIBUTES);
|
||||
Assert.Null(slot.ADDITIONAL_ELEMENTS);
|
||||
|
||||
foreach (var slotoption in slot.SlotOption ?? Array.Empty<Models.Listxml.SlotOption>())
|
||||
{
|
||||
Assert.Null(slotoption.ADDITIONAL_ATTRIBUTES);
|
||||
Assert.Null(slotoption.ADDITIONAL_ELEMENTS);
|
||||
}
|
||||
}
|
||||
|
||||
foreach (var softwarelist in machine.SoftwareList ?? Array.Empty<Models.Listxml.SoftwareList>())
|
||||
{
|
||||
Assert.Null(softwarelist.ADDITIONAL_ATTRIBUTES);
|
||||
Assert.Null(softwarelist.ADDITIONAL_ELEMENTS);
|
||||
}
|
||||
|
||||
foreach (var ramoption in machine.RamOption ?? Array.Empty<Models.Listxml.RamOption>())
|
||||
{
|
||||
Assert.Null(ramoption.ADDITIONAL_ATTRIBUTES);
|
||||
Assert.Null(ramoption.ADDITIONAL_ELEMENTS);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
BIN
SabreTools.Test/TestData/test-listxml-files.xml.gz
Normal file
BIN
SabreTools.Test/TestData/test-listxml-files.xml.gz
Normal file
Binary file not shown.
Reference in New Issue
Block a user