added demux; added getAllInputs() and getAllOutputs() for all components
[Mograsim.git] / era.mi / src / era / mi / logic / tests / ComponentTest.java
index c49e004..c233552 100644 (file)
@@ -9,6 +9,7 @@ import org.junit.jupiter.api.Test;
 \r
 import era.mi.logic.Bit;\r
 import era.mi.logic.Simulation;\r
+import era.mi.logic.components.Demux;\r
 import era.mi.logic.components.Merger;\r
 import era.mi.logic.components.Mux;\r
 import era.mi.logic.components.Splitter;\r
@@ -139,6 +140,39 @@ class ComponentTest
 \r
     }\r
 \r
+    @Test\r
+    void demuxTest()\r
+    {\r
+       Simulation.TIMELINE.reset();\r
+       WireArray a = new WireArray(4, 3), b = new WireArray(4, 6), c = new WireArray(4, 4),\r
+               select = new WireArray(2, 5), in = new WireArray(4, 1);\r
+       WireArrayInput selectIn = select.createInput();\r
+\r
+       selectIn.feedSignals(Bit.ZERO, Bit.ZERO);\r
+       in.createInput().feedSignals(Bit.ONE, Bit.ZERO, Bit.ONE, Bit.ZERO);\r
+\r
+       new Demux(1, in, select, a, b, c);\r
+       Simulation.TIMELINE.executeAll();\r
+\r
+       assertBitArrayEquals(a.getValues(), Bit.ONE, Bit.ZERO, Bit.ONE, Bit.ZERO);\r
+       assertBitArrayEquals(b.getValues(), Bit.Z, Bit.Z, Bit.Z, Bit.Z);\r
+       assertBitArrayEquals(c.getValues(), Bit.Z, Bit.Z, Bit.Z, Bit.Z);\r
+       selectIn.feedSignals(Bit.ZERO, Bit.ONE);\r
+       Simulation.TIMELINE.executeAll();\r
+\r
+       assertBitArrayEquals(a.getValues(), Bit.Z, Bit.Z, Bit.Z, Bit.Z);\r
+       assertBitArrayEquals(b.getValues(), Bit.Z, Bit.Z, Bit.Z, Bit.Z);\r
+       assertBitArrayEquals(c.getValues(), Bit.ONE, Bit.ZERO, Bit.ONE, Bit.ZERO);\r
+\r
+       selectIn.feedSignals(Bit.ONE, Bit.ONE);\r
+       Simulation.TIMELINE.executeAll();\r
+\r
+       assertBitArrayEquals(a.getValues(), Bit.Z, Bit.Z, Bit.Z, Bit.Z);\r
+       assertBitArrayEquals(b.getValues(), Bit.Z, Bit.Z, Bit.Z, Bit.Z);\r
+       assertBitArrayEquals(c.getValues(), Bit.Z, Bit.Z, Bit.Z, Bit.Z);\r
+\r
+    }\r
+    \r
     @Test\r
     void andTest()\r
     {\r
@@ -234,7 +268,7 @@ class ComponentTest
        assertBitArrayEquals(w.getValues(), Bit.ONE, Bit.Z);\r
 \r
        wI2.feedSignals(Bit.ONE, Bit.Z);\r
-       w.addObserver((i) -> fail("WireArray notified observer, although value did not change."));\r
+       w.addObserver((i, oldValues) -> fail("WireArray notified observer, although value did not change."));\r
        Simulation.TIMELINE.executeAll();\r
        assertBitArrayEquals(w.getValues(), Bit.ONE, Bit.Z);\r
     }\r