diff options
Diffstat (limited to 'src/jcgp/backend/parser/TestCaseParser.java')
-rw-r--r-- | src/jcgp/backend/parser/TestCaseParser.java | 79 |
1 files changed, 78 insertions, 1 deletions
diff --git a/src/jcgp/backend/parser/TestCaseParser.java b/src/jcgp/backend/parser/TestCaseParser.java index c997177..d47d663 100644 --- a/src/jcgp/backend/parser/TestCaseParser.java +++ b/src/jcgp/backend/parser/TestCaseParser.java @@ -1,13 +1,90 @@ 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 { - public static void parse(File file, TestCaseProblem<?> problem) { + 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(); + } } |