aboutsummaryrefslogtreecommitdiff
path: root/common/src/main/java/cz/crcs/ectester/common/test/TestSuite.java
diff options
context:
space:
mode:
Diffstat (limited to 'common/src/main/java/cz/crcs/ectester/common/test/TestSuite.java')
-rw-r--r--common/src/main/java/cz/crcs/ectester/common/test/TestSuite.java100
1 files changed, 100 insertions, 0 deletions
diff --git a/common/src/main/java/cz/crcs/ectester/common/test/TestSuite.java b/common/src/main/java/cz/crcs/ectester/common/test/TestSuite.java
new file mode 100644
index 0000000..b12680a
--- /dev/null
+++ b/common/src/main/java/cz/crcs/ectester/common/test/TestSuite.java
@@ -0,0 +1,100 @@
+package cz.crcs.ectester.common.test;
+
+import cz.crcs.ectester.common.output.TestWriter;
+
+/**
+ * @author Jan Jancar johny@neuromancer.sk
+ */
+public abstract class TestSuite {
+ protected String name;
+ protected String[] description;
+ private TestWriter writer;
+ private Test running;
+ private int ran = 0;
+ private int runFrom = 0;
+ private int runTo = -1;
+
+ public TestSuite(TestWriter writer, String name, String... description) {
+ this.writer = writer;
+ this.name = name;
+ this.description = description;
+ }
+
+ /**
+ * Run the <code>TestSuite</code>.
+ */
+ public void run() {
+ run(0);
+ }
+
+ public void run(int from) {
+ run(from, -1);
+ }
+
+ public void run(int from, int to) {
+ this.runFrom = from;
+ this.runTo = to;
+ writer.begin(this);
+ try {
+ runTests();
+ } catch (TestException e) {
+ writer.outputError(running, e, ran);
+ } catch (Exception e) {
+ writer.end();
+ throw new TestSuiteException(e);
+ }
+ writer.end();
+ }
+
+ /**
+ * Run the given test and return it back.
+ *
+ * @param t The test to run.
+ * @return The test that was run.
+ * @throws TestException
+ */
+ protected <T extends Test> T runTest(T t) {
+ running = t;
+ t.run();
+ running = null;
+ return t;
+ }
+
+ /**
+ * Run the given test, output it and return it back.
+ *
+ * @param t The test to run.
+ * @return The test that was run.
+ * @throws TestException
+ */
+ protected <T extends Test> T doTest(T t) {
+ if (ran >= runFrom && (runTo < 0 || ran <= runTo)) {
+ runTest(t);
+ writer.outputTest(t, ran);
+ }
+ ran++;
+ return t;
+ }
+
+ /**
+ *
+ */
+ protected abstract void runTests() throws Exception;
+
+ public String getName() {
+ return name;
+ }
+
+ public String[] getDescription() {
+ return description;
+ }
+
+ public String getTextDescription() {
+ return String.join(System.lineSeparator(), description);
+ }
+
+ public String toString() {
+ return null;
+ }
+
+}