Merge branch 'development' of
[Mograsim.git] / net.mograsim.logic.core / test / net / mograsim / logic / core / tests / TestCoreBitDisplay.java
1 package net.mograsim.logic.core.tests;
2
3 import static org.junit.jupiter.api.Assertions.assertArrayEquals;
4
5 import java.util.function.LongConsumer;
6
7 import net.mograsim.logic.core.components.CoreBitDisplay;
8 import net.mograsim.logic.core.timeline.Timeline;
9 import net.mograsim.logic.core.types.Bit;
10 import net.mograsim.logic.core.wires.CoreWire.ReadEnd;
11
12 public final class TestCoreBitDisplay extends CoreBitDisplay
13 {
14
15         public TestCoreBitDisplay(Timeline timeline, ReadEnd in)
16         {
17                 super(timeline, in);
18         }
19
20         public void assertDisplays(Bit... expected)
21         {
22                 assertArrayEquals(expected, getDisplayedValue().getBits());
23         }
24
25         public void assertAfterSimulationIs(Bit... expected)
26         {
27                 timeline.executeAll();
28                 assertDisplays(expected);
29         }
30
31         public void assertAfterSimulationIs(LongConsumer r, Bit... expected)
32         {
33                 while (timeline.hasNext())
34                 {
35                         timeline.executeNext();
36                         r.accept(timeline.getSimulationTime());
37                 }
38                 assertDisplays(expected);
39         }
40
41         @Override
42         protected void compute()
43         {
44                 super.compute();
45                 System.out.println("update: value is " + getDisplayedValue());
46         }
47 }