// Path: src/test/java/eu/rekawek/coffeegb/integration/support/ParametersProvider.java
// public final class ParametersProvider {
// 
//     static final List<String> EXCLUDES = Arrays.asList(
//             "-mgb.gb",
//             "-sgb.gb",
//             "-sgb2.gb",
//             "-S.gb",
//             "-A.gb"
//     );
// 
//     private ParametersProvider() {
//     }
// 
//     public static Collection<Object[]> getParameters(String dirName) throws IOException {
//         return getParameters(dirName, EXCLUDES, 1);
//     }
// 
//     public static Collection<Object[]> getParameters(String dirName, int maxDepth) throws IOException {
//         return getParameters(dirName, EXCLUDES, maxDepth);
//     }
// 
//     public static Collection<Object[]> getParameters(String dirName, List<String> excludes, int maxDepth) throws IOException {
//         Path dir = Paths.get("src/test/resources/roms", dirName);
//         return Files.walk(dir, maxDepth)
//                 .filter(Files::isRegularFile)
//                 .filter(f -> f.toString().endsWith(".gb"))
//                 .filter(f -> !excludes.stream().anyMatch(p -> f.toString().endsWith(p)))
//                 .map(p -> new Object[] { dir.relativize(p).toString(), p })
//                 .collect(Collectors.toList());
//     }
// 
// }
// 
// Path: src/test/java/eu/rekawek/coffeegb/integration/support/RomTestUtils.java
// public final class RomTestUtils {
// 
//     private RomTestUtils() {
//     }
// 
//     public static void testRomWithMemory(Path romPath) throws IOException {
//         System.out.println("\n### Running test rom " + romPath.getFileName() + " ###");
//         MemoryTestRunner runner = new MemoryTestRunner(romPath.toFile(), System.out);
//         MemoryTestRunner.TestResult result = runner.runTest();
//         assertEquals("Non-zero return value", 0, result.getStatus());
//     }
// 
//     public static void testRomWithSerial(Path romPath) throws IOException {
//         System.out.println("\n### Running test rom " + romPath.getFileName() + " ###");
//         SerialTestRunner runner = new SerialTestRunner(romPath.toFile(), System.out);
//         String result = runner.runTest();
//         assertTrue(result.contains("Passed"));
//     }
// 
//     public static void testMooneyeRom(Path romPath) throws IOException {
//         System.out.println("\n### Running test rom " + romPath.getFileName() + " ###");
//         MooneyeTestRunner runner = new MooneyeTestRunner(romPath.toFile(), System.out);
//         assertTrue(runner.runTest());
//     }
// }


import eu.rekawek.coffeegb.integration.support.ParametersProvider;
import eu.rekawek.coffeegb.integration.support.RomTestUtils;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import java.io.IOException;
import java.nio.file.Path;
import java.util.Collection;
package eu.rekawek.coffeegb.integration.mooneye;



@RunWith(Parameterized.class)
public class MiscTest {

    private final Path romPath;

// Path: src/test/java/eu/rekawek/coffeegb/integration/support/ParametersProvider.java
// public final class ParametersProvider {
// 
//     static final List<String> EXCLUDES = Arrays.asList(
//             "-mgb.gb",
//             "-sgb.gb",
//             "-sgb2.gb",
//             "-S.gb",
//             "-A.gb"
//     );
// 
//     private ParametersProvider() {
//     }
// 
//     public static Collection<Object[]> getParameters(String dirName) throws IOException {
//         return getParameters(dirName, EXCLUDES, 1);
//     }
// 
//     public static Collection<Object[]> getParameters(String dirName, int maxDepth) throws IOException {
//         return getParameters(dirName, EXCLUDES, maxDepth);
//     }
// 
//     public static Collection<Object[]> getParameters(String dirName, List<String> excludes, int maxDepth) throws IOException {
//         Path dir = Paths.get("src/test/resources/roms", dirName);
//         return Files.walk(dir, maxDepth)
//                 .filter(Files::isRegularFile)
//                 .filter(f -> f.toString().endsWith(".gb"))
//                 .filter(f -> !excludes.stream().anyMatch(p -> f.toString().endsWith(p)))
//                 .map(p -> new Object[] { dir.relativize(p).toString(), p })
//                 .collect(Collectors.toList());
//     }
// 
// }
// 
// Path: src/test/java/eu/rekawek/coffeegb/integration/support/RomTestUtils.java
// public final class RomTestUtils {
// 
//     private RomTestUtils() {
//     }
// 
//     public static void testRomWithMemory(Path romPath) throws IOException {
//         System.out.println("\n### Running test rom " + romPath.getFileName() + " ###");
//         MemoryTestRunner runner = new MemoryTestRunner(romPath.toFile(), System.out);
//         MemoryTestRunner.TestResult result = runner.runTest();
//         assertEquals("Non-zero return value", 0, result.getStatus());
//     }
// 
//     public static void testRomWithSerial(Path romPath) throws IOException {
//         System.out.println("\n### Running test rom " + romPath.getFileName() + " ###");
//         SerialTestRunner runner = new SerialTestRunner(romPath.toFile(), System.out);
//         String result = runner.runTest();
//         assertTrue(result.contains("Passed"));
//     }
// 
//     public static void testMooneyeRom(Path romPath) throws IOException {
//         System.out.println("\n### Running test rom " + romPath.getFileName() + " ###");
//         MooneyeTestRunner runner = new MooneyeTestRunner(romPath.toFile(), System.out);
//         assertTrue(runner.runTest());
//     }
// }


// Path: src/test/java/eu/rekawek/coffeegb/integration/mooneye/MiscTest.java
import eu.rekawek.coffeegb.integration.support.ParametersProvider;
import eu.rekawek.coffeegb.integration.support.RomTestUtils;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import java.io.IOException;
import java.nio.file.Path;
import java.util.Collection;

package eu.rekawek.coffeegb.integration.mooneye;



@RunWith(Parameterized.class)
public class MiscTest {

    private final Path romPath;

    @Parameterized.Parameters(name = "{0}")