X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=net.mograsim.logic.ui.am2900%2Ftest%2Fnet%2Fmograsim%2Flogic%2Fui%2Fam2900%2FTestableAm2901.java;h=fc4a80a5b825d43411435b48526e849b48573d97;hb=e4a201cb63e74fb7780dae482e2fc953bee58fa5;hp=cd57c997f7366c6debc0d591d31b2b899dbebf8b;hpb=f14ea37d69488dd51518a36413af7176916b8bd7;p=Mograsim.git diff --git a/net.mograsim.logic.ui.am2900/test/net/mograsim/logic/ui/am2900/TestableAm2901.java b/net.mograsim.logic.ui.am2900/test/net/mograsim/logic/ui/am2900/TestableAm2901.java index cd57c997..fc4a80a5 100644 --- a/net.mograsim.logic.ui.am2900/test/net/mograsim/logic/ui/am2900/TestableAm2901.java +++ b/net.mograsim.logic.ui.am2900/test/net/mograsim/logic/ui/am2900/TestableAm2901.java @@ -1,5 +1,14 @@ package net.mograsim.logic.ui.am2900; +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.util.Arrays; +import java.util.stream.Stream; + +import org.junit.jupiter.api.extension.ExtensionContext; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.ArgumentsProvider; + public interface TestableAm2901 { void setup(); @@ -30,7 +39,9 @@ public interface TestableAm2901 void setRAM_3(String val_1_bit); - void toogleClock(); + void clockOn(boolean isClockOn); + + void setDirectly(Register r, String val_4_bit); String getQ_0(); @@ -54,6 +65,22 @@ public interface TestableAm2901 String getY(); + String getDirectly(Register r); + + default void assertRunSuccess() + { + assertEquals(Result.SUCCESS, run()); + } + + default void assertFullCycleSuccess() + { + assertRunSuccess(); + clockOn(false); + assertRunSuccess(); + clockOn(true); + assertRunSuccess(); + } + public enum Result { SUCCESS, OUT_OF_TIME, ERROR; @@ -88,4 +115,32 @@ public interface TestableAm2901 { AQ, AB, ZQ, ZB, ZA, DA, DQ, DZ; } + + public enum Register + { + r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, rA, rB, rC, rD, rE, rF, Q; + + public String toBitString() + { + if (this.ordinal() > 0xF) + throw new UnsupportedOperationException(); + return TestUtil.to4bitBin(this.ordinal()); + } + + public static Stream stream() + { + return Arrays.stream(values()); + } + } + + public static class RegisterProvider implements ArgumentsProvider + { + + @Override + public Stream provideArguments(ExtensionContext context) throws Exception + { + return Register.stream().map(Arguments::of); + } + + } }