1 package net.mograsim.logic.ui.am2900;
\r
3 import static net.mograsim.logic.ui.am2900.TestableAm2901.Am2901_Dest.*;
\r
4 import static net.mograsim.logic.ui.am2900.TestableAm2901.Am2901_Func.*;
\r
5 import static net.mograsim.logic.ui.am2900.TestableAm2901.Am2901_Src.*;
\r
6 import static org.junit.jupiter.api.Assertions.assertEquals;
\r
8 import org.junit.jupiter.api.BeforeEach;
\r
9 import org.junit.jupiter.api.Test;
\r
11 import net.mograsim.logic.ui.am2900.TestableAm2901.Result;
\r
13 public class Am2901Test
\r
15 private TestableAm2901 am2901;
\r
21 setRegistersToZero();
\r
27 assertEquals("0", am2901.getCarryOut());
\r
28 assertEquals("0", am2901.getOverflow());
\r
29 assertEquals("0", am2901.getSign());
\r
30 assertEquals("1", am2901.getZero());
\r
31 assertEquals("0000", am2901.getY());
\r
32 assertEquals("0", am2901.getQ_0());
\r
33 assertEquals("0", am2901.getQ_3());
\r
34 assertEquals("0", am2901.getRAM_0());
\r
35 assertEquals("0", am2901.getRAM_3());
\r
38 void createAndSetup()
\r
40 am2901 = new TestableAm2901Impl();
\r
44 void setRegistersToZero()
\r
47 for (Regsiter r : Regsiter.values())
\r
49 setRegisterToZero(r);
\r
53 void setRegisterToZero(Regsiter r)
\r
55 System.out.println("Setting reg " + r + " to zero");
\r
56 am2901.setD("0000");
\r
58 am2901.setFunc(AND);
\r
59 if (r == Regsiter.Q)
\r
61 am2901.setDest(QREG);
\r
64 am2901.setReg_B(r.toBitString());
\r
65 am2901.setDest(RAMF);
\r
68 am2901.toogleClock();
\r
70 am2901.toogleClock();
\r
74 void setInputsToZero()
\r
76 am2901.setCarryIn("0");
\r
79 am2901.setRAM_0("0");
\r
80 am2901.setRAM_3("0");
\r
81 am2901.setReg_A("0000");
\r
82 am2901.setReg_B("0000");
\r
83 am2901.setD("0000");
\r
85 am2901.setFunc(ADD);
\r
86 am2901.setDest(QREG);
\r
87 // am2901.setNotOutEnable("0"); TODO
\r
91 void assertRunSuccess()
\r
93 assertEquals(Result.SUCCESS, am2901.run());
\r
96 public enum Regsiter
\r
98 r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, rA, rB, rC, rD, rE, rF, Q;
\r
100 public String toBitString()
\r
102 if (this.ordinal() > 0xF)
\r
103 throw new UnsupportedOperationException();
\r
104 return TestUtil.to4bitBin(this.ordinal());
\r