The final restructured version for automatic build using maven tycho
[Mograsim.git] / tests / net.mograsim.logic.model.am2900.tests / src / net / mograsim / logic / model / am2900 / TestableCircuit.java
diff --git a/tests/net.mograsim.logic.model.am2900.tests/src/net/mograsim/logic/model/am2900/TestableCircuit.java b/tests/net.mograsim.logic.model.am2900.tests/src/net/mograsim/logic/model/am2900/TestableCircuit.java
new file mode 100644 (file)
index 0000000..d36d80f
--- /dev/null
@@ -0,0 +1,40 @@
+package net.mograsim.logic.model.am2900;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import net.mograsim.logic.model.am2900.util.TestEnvironmentHelper;
+
+public interface TestableCircuit
+{
+       void setup();
+
+       Result run();
+
+       void clockOn(boolean isClockOn);
+
+       TestEnvironmentHelper getTestEnvironmentHelper();
+
+       default void assertRunSuccess()
+       {
+               assertEquals(Result.SUCCESS, run());
+       }
+
+       default void assertFullCycleSuccess()
+       {
+               assertRunSuccess();
+               clockOn(false);
+               assertRunSuccess();
+               clockOn(true);
+               assertRunSuccess();
+       }
+
+       default void displayState()
+       {
+               getTestEnvironmentHelper().displayState();
+       }
+
+       public enum Result
+       {
+               SUCCESS, OUT_OF_TIME, ERROR;
+       }
+}