The final restructured version for automatic build using maven tycho
[Mograsim.git] / tests / net.mograsim.logic.model.am2900.tests / src / net / mograsim / logic / model / am2900 / am2910 / Am2910Test.java
1 package net.mograsim.logic.model.am2900.am2910;
2
3 import static net.mograsim.logic.model.am2900.am2910.TestableAm2910.Am2910_Inst.*;
4 import static net.mograsim.logic.core.types.Bit.*;
5 import static org.junit.jupiter.api.Assertions.assertEquals;
6
7 import org.junit.jupiter.api.BeforeEach;
8 import org.junit.jupiter.api.DisplayName;
9 import org.junit.jupiter.api.Order;
10 import org.junit.jupiter.api.TestMethodOrder;
11 import org.junit.jupiter.api.extension.RegisterExtension;
12 import org.junit.jupiter.api.MethodOrderer.OrderAnnotation;
13 import org.junit.jupiter.params.ParameterizedTest;
14 import org.junit.jupiter.params.provider.EnumSource;
15
16 import net.mograsim.logic.core.types.BitVector;
17 import net.mograsim.logic.model.am2900.am2910.TestableAm2910.Register;
18 import net.mograsim.logic.model.am2900.util.DisplayStateOnFailure;
19
20 @DisplayName("Am2910 Tests")
21 @TestMethodOrder(OrderAnnotation.class)
22 public class Am2910Test
23 {
24         private TestableAm2910 am2910 = new TestableAm2910Impl();
25
26         @RegisterExtension
27         DisplayStateOnFailure failureRule = new DisplayStateOnFailure(am2910);
28
29         @BeforeEach
30         void initialize()
31         {
32                 createAndSetup();
33                 setStandardInputs();
34         }
35
36         void createAndSetup()
37         {
38                 am2910.setup();
39         }
40
41         void setStandardInputs()
42         {
43                 am2910.set_CC("0");
44                 am2910.set_CCEN("0");
45                 am2910.set_OE("0");
46                 am2910.set_RLD("1");
47                 am2910.setCI("1");
48                 am2910.setD("000000000000");
49                 am2910.setInstruction(JZ);
50                 am2910.clockOn(true);
51                 am2910.assertRunSuccess();
52         }
53
54         @ParameterizedTest(name = "{0}")
55         @Order(1)
56         @DisplayName("Direct / high level access")
57         @EnumSource(Register.class)
58         void testDirectAccess(Register r)
59         {
60                 String us = U.toVector(r.size()).toString();
61                 String three = BitVector.from(3, r.size()).toString();
62
63                 assertEquals(us, am2910.getDirectly(r));
64
65                 am2910.setDirectly(r, three);
66
67                 assertEquals(three, am2910.getDirectly(r));
68         }
69 }