Fixed a bug in Am2900; created dlatch8/80; relayouted some components
[Mograsim.git] / net.mograsim.logic.model.am2900 / test / net / mograsim / logic / model / am2900 / TestableCircuit.java
1 package net.mograsim.logic.model.am2900;
2
3 import static org.junit.jupiter.api.Assertions.assertEquals;
4
5 import net.mograsim.logic.model.am2900.util.TestEnvironmentHelper;
6
7 public interface TestableCircuit
8 {
9         void setup();
10
11         Result run();
12
13         void clockOn(boolean isClockOn);
14
15         TestEnvironmentHelper getTestEnvironmentHelper();
16
17         default void assertRunSuccess()
18         {
19                 assertEquals(Result.SUCCESS, run());
20         }
21
22         default void assertFullCycleSuccess()
23         {
24                 assertRunSuccess();
25                 clockOn(false);
26                 assertRunSuccess();
27                 clockOn(true);
28                 assertRunSuccess();
29         }
30
31         default void displayState()
32         {
33                 getTestEnvironmentHelper().displayState();
34         }
35
36         public enum Result
37         {
38                 SUCCESS, OUT_OF_TIME, ERROR;
39         }
40 }