diff options
Diffstat (limited to 'src/wcps/server/test/GrammarTest.java')
| -rw-r--r-- | src/wcps/server/test/GrammarTest.java | 138 |
1 files changed, 138 insertions, 0 deletions
diff --git a/src/wcps/server/test/GrammarTest.java b/src/wcps/server/test/GrammarTest.java new file mode 100644 index 0000000..d51d5c0 --- /dev/null +++ b/src/wcps/server/test/GrammarTest.java @@ -0,0 +1,138 @@ +/* + * This file is part of PetaScope. + * + * PetaScope is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of + * the License, or (at your option) any later version. + * + * PetaScope is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with PetaScope. If not, see <http://www.gnu.org/licenses/>. + * + * For more information please see <http://www.PetaScope.org> + * or contact Peter Baumann via <baumann@rasdaman.com>. + * + * Copyright 2009 Jacobs University Bremen, Peter Baumann. + */ + + +package wcps.server.test; + +import java.io.File; +import java.io.FilenameFilter; +import java.io.IOException; +import org.apache.commons.io.FileUtils; +import wcps.server.cli.grammar; + +/** + * Runs the available tests for the abstract syntax grammar, by calling the CLI. + * Assumes test passes if no error is thrown from the grammar CLI. + * @author Andrei Aiordachioaie + */ +public class GrammarTest +{ + // Put new test cases in this folder + String folder = "testing/testcases/"; + // How many tests we have to run + int numTests = 0; + // tests + File[] tests; + // queries + String[] queries; + // success code + boolean[] ok; + // message for tests + String[] errors; + // How many successes? + int passCount = 0; + + public void printResults() + { + + for (int i = 0; i<numTests; i++) + { + String tname = tests[i].getName(); + tname = tname.substring(0, tname.length() - 5); + if (ok[i] == true) + { + System.out.println("*** Test '" + tname + "' ok"); +// System.out.println("\t" + queries[i]); + } + else + { + System.out.println("*** Test '" + tname + "' FAILED"); + System.out.println("\t" + queries[i]); + System.out.println("\t ERROR: " + errors[i]); + } + } + System.out.println("Tests succeeded: " + String.valueOf(passCount)); + System.out.println("\nTests failed: " + String.valueOf(numTests - passCount)); + } + + public GrammarTest() + { + // Find out how many tests we have to run + File dir = new File(folder); + System.out.println("Looking for tests in " + dir.getAbsolutePath() + "\n"); + GrammarFileFilter filter = new GrammarFileFilter(); + tests = dir.listFiles(filter); + numTests = tests.length; + ok = new boolean[numTests]; + errors = new String[numTests]; + queries = new String[numTests]; + } + + /* Accept all files with extension test. */ + private class GrammarFileFilter implements FilenameFilter + { + @Override + public boolean accept(File dir, String name) + { + if (name.endsWith("test")) + return true; + return false; + } + + } + + public void runAllTests() + { + String query = ""; + for (int i=0; i<numTests; i++) + { + ok[i] = false; + try + { + query = FileUtils.readFileToString(tests[i]); + queries[i] = query; + } + catch (IOException e) + { + errors[i] = "Could not read file " + tests[i].getName(); + continue; + } + try + { + grammar.runQuery(query); + ok[i] = true; + } + catch (Exception e) + { + errors[i] = e.getMessage(); + } + if (ok[i] == true) + passCount ++; + } + } + + public static void main(String args[]) + { + GrammarTest tester = new GrammarTest(); + tester.runAllTests(); + } +}
\ No newline at end of file |
