Files
SabreTools.Serialization/SabreTools.Serialization.Test/Deserializers/OpenMSXTests.cs
2024-11-27 14:25:53 -05:00

90 lines
2.4 KiB
C#

using System;
using System.IO;
using System.Linq;
using SabreTools.Serialization.Deserializers;
using Xunit;
namespace SabreTools.Serialization.Test.Deserializers
{
public class OpenMSXTests
{
[Fact]
public void NullArray_Null()
{
byte[]? data = null;
int offset = 0;
var deserializer = new OpenMSX();
var actual = deserializer.Deserialize(data, offset);
Assert.Null(actual);
}
[Fact]
public void EmptyArray_Null()
{
byte[]? data = [];
int offset = 0;
var deserializer = new OpenMSX();
var actual = deserializer.Deserialize(data, offset);
Assert.Null(actual);
}
[Fact]
public void InvalidArray_Null()
{
byte[]? data = [.. Enumerable.Repeat<byte>(0xFF, 1024)];
int offset = 0;
var deserializer = new OpenMSX();
var actual = deserializer.Deserialize(data, offset);
Assert.Null(actual);
}
[Fact]
public void NullStream_Null()
{
Stream? data = null;
var deserializer = new OpenMSX();
var actual = deserializer.Deserialize(data);
Assert.Null(actual);
}
[Fact]
public void EmptyStream_Null()
{
Stream? data = new MemoryStream([]);
var deserializer = new OpenMSX();
var actual = deserializer.Deserialize(data);
Assert.Null(actual);
}
[Fact]
public void InvalidStream_Null()
{
Stream? data = new MemoryStream([.. Enumerable.Repeat<byte>(0xFF, 1024)]);
var deserializer = new OpenMSX();
var actual = deserializer.Deserialize(data);
Assert.Null(actual);
}
[Theory]
[InlineData("test-openmsx-files.xml", 2550)]
public void ValidFile_NonNull(string path, long count)
{
// Open the file for reading
string filename = Path.Combine(Environment.CurrentDirectory, "TestData", path);
// Deserialize the file
var dat = OpenMSX.DeserializeFile(filename);
// Validate the values
Assert.NotNull(dat);
Assert.NotNull(dat.Software);
Assert.Equal(count, dat.Software.Length);
}
}
}