48 lines
1.4 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|