Files

48 lines
1.4 KiB
C#

using Xunit;
using Xunit.Abstractions;
namespace GameBoy.Tests
{
public sealed class BlarggTests
{
private const int MaxFrames = 4000;
private readonly ITestOutputHelper output;
public BlarggTests(ITestOutputHelper output)
{
this.output = output;
}
[Fact]
public void CpuInstrs_ReportsPassedOverSerial()
{
string serial = RunUntilSerialResult(TestRoms.Load("cpu_instrs.gb"));
output.WriteLine(serial);
Assert.Contains("Passed", serial);
Assert.DoesNotContain("Failed", serial);
}
[Fact]
public void InstrTiming_ReportsPassedOverSerial()
{
string serial = RunUntilSerialResult(TestRoms.Load("instr_timing.gb"));
output.WriteLine(serial);
Assert.Contains("Passed", serial);
Assert.DoesNotContain("Failed", serial);
}
private static string RunUntilSerialResult(byte[] rom)
{
var emulator = new Emulator(rom);
for (int frame = 0; frame < MaxFrames; frame++)
{
emulator.RunFrame();
string serial = emulator.SerialOutput;
if (serial.Contains("Passed") || serial.Contains("Failed"))
return serial;
}
return emulator.SerialOutput;
}
}
}