X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=net.mograsim.logic.ui.am2900%2Ftest%2Fnet%2Fmograsim%2Flogic%2Fui%2Fam2900%2FAm2901Test.java;fp=net.mograsim.logic.ui.am2900%2Ftest%2Fnet%2Fmograsim%2Flogic%2Fui%2Fam2900%2FAm2901Test.java;h=18d60c3b899731bfc77f6a4f899191f654e63276;hb=f14ea37d69488dd51518a36413af7176916b8bd7;hp=0000000000000000000000000000000000000000;hpb=a84700145147c263ad6692c99117a7cf37832378;p=Mograsim.git diff --git a/net.mograsim.logic.ui.am2900/test/net/mograsim/logic/ui/am2900/Am2901Test.java b/net.mograsim.logic.ui.am2900/test/net/mograsim/logic/ui/am2900/Am2901Test.java new file mode 100644 index 00000000..18d60c3b --- /dev/null +++ b/net.mograsim.logic.ui.am2900/test/net/mograsim/logic/ui/am2900/Am2901Test.java @@ -0,0 +1,107 @@ +package net.mograsim.logic.ui.am2900; + +import static net.mograsim.logic.ui.am2900.TestableAm2901.Am2901_Dest.*; +import static net.mograsim.logic.ui.am2900.TestableAm2901.Am2901_Func.*; +import static net.mograsim.logic.ui.am2900.TestableAm2901.Am2901_Src.*; +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import net.mograsim.logic.ui.am2900.TestableAm2901.Result; + +public class Am2901Test +{ + private TestableAm2901 am2901; + + @BeforeEach + void initialize() + { + createAndSetup(); + setRegistersToZero(); + } + + @Test + void testInit() + { + assertEquals("0", am2901.getCarryOut()); + assertEquals("0", am2901.getOverflow()); + assertEquals("0", am2901.getSign()); + assertEquals("1", am2901.getZero()); + assertEquals("0000", am2901.getY()); + assertEquals("0", am2901.getQ_0()); + assertEquals("0", am2901.getQ_3()); + assertEquals("0", am2901.getRAM_0()); + assertEquals("0", am2901.getRAM_3()); + } + + void createAndSetup() + { + am2901 = new TestableAm2901Impl(); + am2901.setup(); + } + + void setRegistersToZero() + { + setInputsToZero(); + for (Regsiter r : Regsiter.values()) + { + setRegisterToZero(r); + } + } + + void setRegisterToZero(Regsiter r) + { + System.out.println("Setting reg " + r + " to zero"); + am2901.setD("0000"); + am2901.setSrc(DZ); + am2901.setFunc(AND); + if (r == Regsiter.Q) + { + am2901.setDest(QREG); + } else + { + am2901.setReg_B(r.toBitString()); + am2901.setDest(RAMF); + } + assertRunSuccess(); + am2901.toogleClock(); + assertRunSuccess(); + am2901.toogleClock(); + assertRunSuccess(); + } + + void setInputsToZero() + { + am2901.setCarryIn("0"); + am2901.setQ_0("0"); + am2901.setQ_3("0"); + am2901.setRAM_0("0"); + am2901.setRAM_3("0"); + am2901.setReg_A("0000"); + am2901.setReg_B("0000"); + am2901.setD("0000"); + am2901.setSrc(AB); + am2901.setFunc(ADD); + am2901.setDest(QREG); +// am2901.setNotOutEnable("0"); TODO + assertRunSuccess(); + } + + void assertRunSuccess() + { + assertEquals(Result.SUCCESS, am2901.run()); + } + + public enum Regsiter + { + 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()); + } + } +}