package jcgp.backend.parser; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.util.Scanner; import jcgp.backend.modules.problem.TestCaseProblem; import jcgp.backend.resources.ModifiableResources; public class TestCaseParser { private TestCaseProblem problem; public TestCaseParser(TestCaseProblem problem) { this.problem = problem; } public void parse(File file) { FileReader fr; try { fr = new FileReader(file); } catch (FileNotFoundException e) { e.printStackTrace(); return; } Scanner in = new Scanner(fr); boolean readingTestCases = false; int inputs = 0, outputs = 0; problem.clearTestCases(); while (in.hasNextLine()) { String nextLine = in.nextLine(); if (nextLine.startsWith(".i")) { String[] split = nextLine.split(" +"); inputs = Integer.parseInt(split[1]); } else if (nextLine.startsWith(".o")) { String[] split = nextLine.split(" +"); outputs = Integer.parseInt(split[1]); } else if (nextLine.startsWith(".p") || nextLine.startsWith(".t")) { readingTestCases = true; } else if (nextLine.startsWith(".e")) { readingTestCases = false; // set test cases? not safe probably } else if (readingTestCases) { String[] split = nextLine.split("( |\t)+"); String[] inputCases = new String[inputs]; String[] outputCases = new String[outputs]; for (int i = 0; i < inputs; i++) { inputCases[i] = split[i]; } for (int o = 0; o < outputs; o++) { outputCases[o] = split[o + inputs]; } problem.addTestCase(inputCases, outputCases); } } in.close(); } public static void parseParameters(File file, ModifiableResources resources) { FileReader fr; try { fr = new FileReader(file); } catch (FileNotFoundException e) { e.printStackTrace(); return; } Scanner in = new Scanner(fr); while (in.hasNextLine()) { String nextLine = in.nextLine(); if (nextLine.startsWith(".i")) { String[] split = nextLine.split(" +"); resources.setInputs(Integer.parseInt(split[1])); } else if (nextLine.startsWith(".o")) { String[] split = nextLine.split(" +"); resources.setOutputs(Integer.parseInt(split[1])); } } in.close(); } }