protected async Task LoadingRomWorksInternal(string romName) { var romsFolder = await GetRomsFolderAsync(); var provider = new StreamProvider(VFS.SystemPath, romsFolder); Target.OpenFileStream = provider.OpenFileStream; Target.CloseFileStream = provider.CloseFileStream; var romPath = $"{VFS.SystemPath}{Path.DirectorySeparatorChar}{romName}"; var loadResult = await Task.Run(() => Target.LoadGame(romPath)); Assert.True(loadResult); Assert.NotEqual(PixelFormats.FormatUknown, Target.PixelFormat); var geometry = Target.Geometry; Assert.NotEqual(0, geometry.AspectRatio); Assert.NotEqual(0U, geometry.BaseWidth); Assert.NotEqual(0U, geometry.BaseHeight); Assert.NotEqual(0U, geometry.MaxHeight); Assert.NotEqual(0U, geometry.MaxWidth); var timing = Target.Timing; Assert.NotEqual(0, timing.FPS); Assert.NotEqual(0, timing.SampleRate); await Task.Run(() => Target.UnloadGame()); loadResult = await Task.Run(() => Target.LoadGame(romPath)); Assert.True(loadResult); }
protected async Task ExecutionWorksInternal(string romName) { var pollInputCalled = false; Target.PollInput = () => pollInputCalled = true; var getInputStateCalled = false; Target.GetInputState += (d, e) => { getInputStateCalled = true; return(0); }; var renderVideoFrameCalled = false; Target.RenderVideoFrame = (d, e, f, g) => { Assert.True(e > 0); Assert.True(f > 0); Assert.True(g > 0); renderVideoFrameCalled = true; }; var renderAudioFrameCalled = false; Target.RenderAudioFrames = (d) => { Assert.NotEmpty(d); Assert.True(d.Length % 2 == 0); renderAudioFrameCalled = true; }; var romsFolder = await GetRomsFolderAsync(); var provider = new StreamProvider(VFS.SystemPath, romsFolder); Target.OpenFileStream = provider.OpenFileStream; Target.CloseFileStream = provider.CloseFileStream; var loadResult = await Task.Run(() => Target.LoadGame($"{VFS.SystemPath}{Path.DirectorySeparatorChar}{romName}")); Assert.True(loadResult); await Task.Run(() => { Target.RunFrame(); }); Assert.True(pollInputCalled); Assert.True(getInputStateCalled); Assert.True(renderVideoFrameCalled); Assert.True(renderAudioFrameCalled); }