EightBitNet/M6502/M6502.HarteTest/OpcodeTestSuite.cs
2024-07-18 11:38:02 +01:00

41 lines
1.1 KiB
C#

namespace M6502.HarteTest
{
using System.Text.Json;
using System.Text.Json.Serialization;
internal sealed class OpcodeTestSuite(string path) : IDisposable
{
private static readonly JsonSerializerOptions SerializerOptions = new()
{
UnmappedMemberHandling = JsonUnmappedMemberHandling.Disallow,
PropertyNamingPolicy = JsonNamingPolicy.SnakeCaseLower,
};
private bool disposed;
public string Path { get; set; } = path;
private readonly FileStream stream = File.Open(path, FileMode.Open);
public IAsyncEnumerable<Test?> TestsAsync => JsonSerializer.DeserializeAsyncEnumerable<Test>(this.stream, SerializerOptions);
private void Dispose(bool disposing)
{
if (!this.disposed)
{
if (disposing)
{
this.stream.Dispose();
}
this.disposed = true;
}
}
public void Dispose()
{
this.Dispose(disposing: true);
GC.SuppressFinalize(this);
}
}
}