package com.grapeshot.halfnes.nestest; import com.grapeshot.halfnes.NES; import com.grapeshot.halfnes.mappers.BadMapperException; import com.grapeshot.halfnes.ui.ControllerInterface; import org.testng.annotations.Test; import static org.junit.Assert.assertEquals; import static org.mockito.Mockito.mock; /** * Created by KlausH on 28.11.2015. */ public class NesTest { @Test public void nesTest() throws BadMapperException { NES nes = new NES(null); nes.loadROM("src/test/resources/nestest/nestest.nes", 0xC000); nes.setControllers(mock(ControllerInterface.class), mock(ControllerInterface.class)); //log all instructions executed to compare with real nestest.log nes.getCPU().startLog("src/test/resources/nestest/compare.log"); while (nes.runEmulation) { //runs until hits a KIL opcode which is a few instructions after the //official log finishes. nes.frameAdvance(); } //log should be at least 8992 lines //I don't actually compare the logs in this test yet. //check some bytes of RAM for successful test result values System.err.println(nes.getCPURAM().read(0)); System.err.println(nes.getCPURAM().read(1)); System.err.println(nes.getCPURAM().read(2)); System.err.println(nes.getCPURAM().read(3)); assertEquals(nes.getCPURAM().read(0), 0); assertEquals(nes.getCPURAM().read(1), 255); assertEquals(nes.getCPURAM().read(2), 255); assertEquals(nes.getCPURAM().read(3), 255); } }