Improved Test experience by a lot; added first tests for Am2904, Am2910
[Mograsim.git] / net.mograsim.logic.model.am2900 / test / net / mograsim / logic / model / am2900 / util / DisplayStateOnFailure.java
diff --git a/net.mograsim.logic.model.am2900/test/net/mograsim/logic/model/am2900/util/DisplayStateOnFailure.java b/net.mograsim.logic.model.am2900/test/net/mograsim/logic/model/am2900/util/DisplayStateOnFailure.java
new file mode 100644 (file)
index 0000000..3f68c67
--- /dev/null
@@ -0,0 +1,30 @@
+package net.mograsim.logic.model.am2900.util;
+
+import java.util.Objects;
+
+import org.junit.jupiter.api.extension.AfterTestExecutionCallback;
+import org.junit.jupiter.api.extension.ExtensionContext;
+
+import net.mograsim.logic.model.am2900.TestableCircuit;
+
+public class DisplayStateOnFailure implements AfterTestExecutionCallback
+{
+       public static final boolean ACTIVE = true;
+
+       private final TestableCircuit circuitUnderTest;
+
+       public DisplayStateOnFailure(TestableCircuit circuitUnderTest)
+       {
+               this.circuitUnderTest = Objects.requireNonNull(circuitUnderTest);
+       }
+
+       @Override
+       public void afterTestExecution(ExtensionContext context) throws Exception
+       {
+               if (ACTIVE && context.getExecutionException().isPresent())
+               {
+                       context.getExecutionException().get().printStackTrace();
+                       circuitUnderTest.displayState();
+               }
+       }
+}