+ void numericValueTest() {\r
+ Simulation.TIMELINE.reset();\r
+\r
+ WireArray a = new WireArray(4, 1);\r
+ a.createInput().feedSignals(Bit.ONE, Bit.ONE, Bit.ONE, Bit.ONE);\r
+\r
+ Simulation.TIMELINE.executeAll();\r
+\r
+ assertEquals(15, a.getUnsignedValue());\r
+ assertEquals(-1, a.getSignedValue());\r
+ }\r
+\r
+ @Test\r
+ void multipleInputs() {\r
+ Simulation.TIMELINE.reset();\r
+ WireArray w = new WireArray(2, 1);\r
+ WireArrayInput wI1 = w.createInput(), wI2 = w.createInput();\r
+ wI1.feedSignals(Bit.ONE, Bit.Z);\r
+ wI2.feedSignals(Bit.Z, Bit.X);\r
+ Simulation.TIMELINE.executeAll();\r
+ assertBitArrayEquals(w.getValues(), Bit.ONE, Bit.X);\r
+\r
+ wI2.feedSignals(Bit.ZERO, Bit.Z);\r
+ Simulation.TIMELINE.executeAll();\r
+ assertBitArrayEquals(w.getValues(), Bit.X, Bit.Z);\r
+\r
+ wI2.feedSignals(Bit.Z, Bit.Z);\r
+ Simulation.TIMELINE.executeAll();\r
+ assertBitArrayEquals(w.getValues(), Bit.ONE, Bit.Z);\r
+\r
+ wI2.feedSignals(Bit.ONE, Bit.Z);\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
+\r
+ @Test\r
+ void wireConnections() {\r