summaryrefslogtreecommitdiffstats
path: root/src/wcps/server/test/GrammarTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/wcps/server/test/GrammarTest.java')
-rw-r--r--src/wcps/server/test/GrammarTest.java138
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