X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=net.mograsim.logic.core%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fcore%2Ftests%2FComponentTest.java;h=29bc9717ecbe4db4e73c13750db63597d6e6a067;hb=a84700145147c263ad6692c99117a7cf37832378;hp=38d1b7c67717022a575a2a5c9b0c0acd4d2bb421;hpb=15aff307cbd5ae828801f5ee078e7a086b5b3973;p=Mograsim.git diff --git a/net.mograsim.logic.core/src/net/mograsim/logic/core/tests/ComponentTest.java b/net.mograsim.logic.core/src/net/mograsim/logic/core/tests/ComponentTest.java index 38d1b7c6..29bc9717 100644 --- a/net.mograsim.logic.core/src/net/mograsim/logic/core/tests/ComponentTest.java +++ b/net.mograsim.logic.core/src/net/mograsim/logic/core/tests/ComponentTest.java @@ -87,6 +87,76 @@ class ComponentTest assertBitArrayEquals(out.getValues(), Bit.ZERO, Bit.ONE, Bit.ZERO, Bit.ONE, Bit.ZERO, Bit.ONE, Bit.ZERO, Bit.ONE); } + @Test + void fusionTest1() + { + t.reset(); + Wire a = new Wire(t, 3, 1), b = new Wire(t, 2, 1), c = new Wire(t, 3, 1), out = new Wire(t, 8, 1); + Wire.fuse(a, out, 0, 0, a.length); + Wire.fuse(b, out, 0, a.length, b.length); + Wire.fuse(c, out, 0, a.length + b.length, c.length); + ReadWriteEnd rA = a.createReadWriteEnd(); + rA.feedSignals(Bit.ZERO, Bit.ONE, Bit.ZERO); + ReadWriteEnd rB = b.createReadWriteEnd(); + rB.feedSignals(Bit.ONE, Bit.ZERO); + ReadWriteEnd rC = c.createReadWriteEnd(); + rC.feedSignals(Bit.ONE, Bit.ZERO, Bit.ONE); + + t.executeAll(); + assertBitArrayEquals(out.getValues(), Bit.ZERO, Bit.ONE, Bit.ZERO, Bit.ONE, Bit.ZERO, Bit.ONE, Bit.ZERO, Bit.ONE); + out.createReadWriteEnd().feedSignals(Bit.ONE, Bit.ZERO, Bit.ONE, Bit.ZERO, Bit.ONE, Bit.ZERO, Bit.ONE, Bit.ZERO); + t.executeAll(); + assertBitArrayEquals(rA.getValues(), Bit.X, Bit.X, Bit.X); + assertBitArrayEquals(rB.getValues(), Bit.X, Bit.X); + assertBitArrayEquals(rC.getValues(), Bit.X, Bit.X, Bit.X); + rA.clearSignals(); + rB.clearSignals(); + rC.clearSignals(); + t.executeAll(); + assertBitArrayEquals(rA.getValues(), Bit.ONE, Bit.ZERO, Bit.ONE); + assertBitArrayEquals(rB.getValues(), Bit.ZERO, Bit.ONE); + assertBitArrayEquals(rC.getValues(), Bit.ZERO, Bit.ONE, Bit.ZERO); + } + + @Test + void fusionTest2() + { + t.reset(); + Wire a = new Wire(t, 3, 1), b = new Wire(t, 3, 1); + Wire.fuse(a, b); + ReadWriteEnd rw = a.createReadWriteEnd(); + t.executeAll(); + assertBitArrayEquals(b.getValues(), Bit.U, Bit.U, Bit.U); + + rw.feedSignals(Bit.ONE, Bit.U, Bit.Z); + t.executeAll(); + assertBitArrayEquals(b.getValues(), Bit.ONE, Bit.U, Bit.Z); + } + + @Test + void fusionTest3() + { + t.reset(); + Wire a = new Wire(t, 3, 1), b = new Wire(t, 3, 1); + a.createReadWriteEnd().feedSignals(Bit.Z, Bit.U, Bit.X); + t.executeAll(); + Wire.fuse(a, b); + t.executeAll(); + assertBitArrayEquals(b.getValues(), Bit.Z, Bit.U, Bit.X); + } + +// @Test +// void connectorTest() +// { +// t.reset(); +// Wire a = new Wire(t, 3, 1), b = new Wire(t, 3, 1); +// new Connector(t, a.createReadWriteEnd(), b.createReadWriteEnd()).connect(); +//// b.createReadWriteEnd(); +// a.createReadWriteEnd(); +// t.executeAll(); +// assertBitArrayEquals(b.getValues(), Bit.U, Bit.U, Bit.U); +// } + @Test void triStateBufferTest() { @@ -400,7 +470,7 @@ class ComponentTest TestBitDisplay test = new TestBitDisplay(t, c.createReadOnlyEnd()); TestBitDisplay test2 = new TestBitDisplay(t, a.createReadOnlyEnd()); - LongConsumer print = time -> System.out.format("Time %2d\n a: %s\n b: %s\n c: %s\n", time, a, b, c); + LongConsumer print = time -> System.out.format("Time %2d\n a: %s\n b: %s\n c: %s\n", time, a, b, c); cI.feedSignals(Bit.ONE); test.assertAfterSimulationIs(print, Bit.ONE);