aboutsummaryrefslogtreecommitdiff
path: root/src/cz/crcs/ectester/common/test
diff options
context:
space:
mode:
Diffstat (limited to 'src/cz/crcs/ectester/common/test')
-rw-r--r--src/cz/crcs/ectester/common/test/BaseTestable.java36
-rw-r--r--src/cz/crcs/ectester/common/test/SimpleTest.java19
-rw-r--r--src/cz/crcs/ectester/common/test/Test.java18
-rw-r--r--src/cz/crcs/ectester/common/test/TestCallback.java12
-rw-r--r--src/cz/crcs/ectester/common/test/TestRunner.java27
-rw-r--r--src/cz/crcs/ectester/common/test/TestSuite.java36
-rw-r--r--src/cz/crcs/ectester/common/test/Testable.java23
7 files changed, 168 insertions, 3 deletions
diff --git a/src/cz/crcs/ectester/common/test/BaseTestable.java b/src/cz/crcs/ectester/common/test/BaseTestable.java
new file mode 100644
index 0000000..f8ebf48
--- /dev/null
+++ b/src/cz/crcs/ectester/common/test/BaseTestable.java
@@ -0,0 +1,36 @@
+package cz.crcs.ectester.common.test;
+
+import java.util.Collections;
+import java.util.Map;
+import java.util.TreeMap;
+
+/**
+ * @author Jan Jancar johny@neuromancer.sk
+ */
+public abstract class BaseTestable implements Testable {
+ protected boolean hasRun;
+ protected boolean ok;
+ protected boolean error;
+
+ protected Map<String, Object> meta = new TreeMap<>();
+
+ @Override
+ public boolean hasRun() {
+ return hasRun;
+ }
+
+ @Override
+ public boolean ok() {
+ return ok;
+ }
+
+ @Override
+ public boolean error() {
+ return error;
+ }
+
+ @Override
+ public Map<String, Object> meta() {
+ return Collections.unmodifiableMap(meta);
+ }
+}
diff --git a/src/cz/crcs/ectester/common/test/SimpleTest.java b/src/cz/crcs/ectester/common/test/SimpleTest.java
new file mode 100644
index 0000000..f68320a
--- /dev/null
+++ b/src/cz/crcs/ectester/common/test/SimpleTest.java
@@ -0,0 +1,19 @@
+package cz.crcs.ectester.common.test;
+
+/**
+ * @param <T>
+ * @author Jan Jancar johny@neuromancer.sk
+ */
+public abstract class SimpleTest<T extends BaseTestable> extends Test {
+ protected T testable;
+ protected TestCallback<T> callback;
+
+ public SimpleTest(T testable, TestCallback<T> callback) {
+ this.testable = testable;
+ this.callback = callback;
+ }
+
+ public T getTestable() {
+ return testable;
+ }
+}
diff --git a/src/cz/crcs/ectester/common/test/Test.java b/src/cz/crcs/ectester/common/test/Test.java
index 750a410..5f55337 100644
--- a/src/cz/crcs/ectester/common/test/Test.java
+++ b/src/cz/crcs/ectester/common/test/Test.java
@@ -1,5 +1,8 @@
package cz.crcs.ectester.common.test;
+import java.util.Collections;
+import java.util.Map;
+
import static cz.crcs.ectester.common.test.Result.Value;
/**
@@ -8,8 +11,9 @@ import static cz.crcs.ectester.common.test.Result.Value;
* @author Jan Jancar johny@neuromancer.sk
*/
public abstract class Test implements Testable {
- protected boolean hasRun = false;
+ protected boolean hasRun;
protected Result result;
+ protected Map<String, Object> meta;
public Result getResult() {
if (!hasRun) {
@@ -39,6 +43,7 @@ public abstract class Test implements Testable {
return result.ok();
}
+ @Override
public boolean error() {
if (!hasRun) {
return false;
@@ -46,12 +51,19 @@ public abstract class Test implements Testable {
return result.compareTo(Value.ERROR);
}
- public abstract String getDescription();
-
+ @Override
public boolean hasRun() {
return hasRun;
}
+ @Override
+ public Map<String, Object> meta() {
+ return Collections.unmodifiableMap(meta);
+ }
+
+ public abstract String getDescription();
+
+ @Override
public abstract void run() throws TestException;
}
diff --git a/src/cz/crcs/ectester/common/test/TestCallback.java b/src/cz/crcs/ectester/common/test/TestCallback.java
new file mode 100644
index 0000000..ce6000b
--- /dev/null
+++ b/src/cz/crcs/ectester/common/test/TestCallback.java
@@ -0,0 +1,12 @@
+package cz.crcs.ectester.common.test;
+
+import java.util.function.Function;
+
+/**
+ *
+ * @author Jan Jancar johny@neuromancer.sk
+ * @param <T>
+ */
+public abstract class TestCallback<T extends Testable> implements Function<T, Result> {
+
+}
diff --git a/src/cz/crcs/ectester/common/test/TestRunner.java b/src/cz/crcs/ectester/common/test/TestRunner.java
new file mode 100644
index 0000000..ef448c2
--- /dev/null
+++ b/src/cz/crcs/ectester/common/test/TestRunner.java
@@ -0,0 +1,27 @@
+package cz.crcs.ectester.common.test;
+
+import cz.crcs.ectester.common.output.TestWriter;
+
+/**
+ * @author Jan Jancar johny@neuromancer.sk
+ */
+public class TestRunner {
+ private TestSuite suite;
+ private TestWriter writer;
+
+ public TestRunner(TestSuite suite, TestWriter writer) {
+ this.suite = suite;
+ this.writer = writer;
+ }
+
+ public void run() throws TestException {
+ writer.begin(suite);
+ for (Test t : suite.getTests()) {
+ if (!t.hasRun()) {
+ t.run();
+ writer.outputTest(t);
+ }
+ }
+ writer.end();
+ }
+}
diff --git a/src/cz/crcs/ectester/common/test/TestSuite.java b/src/cz/crcs/ectester/common/test/TestSuite.java
new file mode 100644
index 0000000..74a24af
--- /dev/null
+++ b/src/cz/crcs/ectester/common/test/TestSuite.java
@@ -0,0 +1,36 @@
+package cz.crcs.ectester.common.test;
+
+import cz.crcs.ectester.data.EC_Store;
+
+import java.util.Collections;
+import java.util.LinkedList;
+import java.util.List;
+
+/**
+ * @author Jan Jancar johny@neuromancer.sk
+ */
+public abstract class TestSuite {
+ protected String name;
+ protected String description;
+ protected List<Test> tests = new LinkedList<>();
+ protected EC_Store dataStore;
+
+ public TestSuite(EC_Store dataStore, String name, String description) {
+ this.dataStore = dataStore;
+ this.name = name;
+ this.description = description;
+ }
+
+ public List<Test> getTests() {
+ return Collections.unmodifiableList(tests);
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+}
diff --git a/src/cz/crcs/ectester/common/test/Testable.java b/src/cz/crcs/ectester/common/test/Testable.java
index d05d31e..e8eb321 100644
--- a/src/cz/crcs/ectester/common/test/Testable.java
+++ b/src/cz/crcs/ectester/common/test/Testable.java
@@ -1,15 +1,38 @@
package cz.crcs.ectester.common.test;
+import java.util.Map;
+
/**
* @author Jan Jancar johny@neuromancer.sk
*/
public interface Testable {
+ /**
+ * @return Whether this testable was run.
+ */
boolean hasRun();
+ /**
+ * Run this Testable.
+ *
+ * @throws TestException
+ */
void run() throws TestException;
+ /**
+ * @return Whether this Testable was OK.
+ */
boolean ok();
+ /**
+ * @return Whether an error happened.
+ */
boolean error();
+
+ /**
+ * Get the metadata of this Testable.
+ *
+ * @return The metadata of the testable.
+ */
+ Map<String, Object> meta();
}