+ @Test\r
+ void fusionTest1()\r
+ {\r
+ t.reset();\r
+ 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);\r
+ Wire.fuse(a, out, 0, 0, a.length);\r
+ Wire.fuse(b, out, 0, a.length, b.length);\r
+ Wire.fuse(c, out, 0, a.length + b.length, c.length);\r
+ ReadWriteEnd rA = a.createReadWriteEnd();\r
+ rA.feedSignals(Bit.ZERO, Bit.ONE, Bit.ZERO);\r
+ ReadWriteEnd rB = b.createReadWriteEnd();\r
+ rB.feedSignals(Bit.ONE, Bit.ZERO);\r
+ ReadWriteEnd rC = c.createReadWriteEnd();\r
+ rC.feedSignals(Bit.ONE, Bit.ZERO, Bit.ONE);\r
+\r
+ t.executeAll();\r
+ assertBitArrayEquals(out.getValues(), Bit.ZERO, Bit.ONE, Bit.ZERO, Bit.ONE, Bit.ZERO, Bit.ONE, Bit.ZERO, Bit.ONE);\r
+ out.createReadWriteEnd().feedSignals(Bit.ONE, Bit.ZERO, Bit.ONE, Bit.ZERO, Bit.ONE, Bit.ZERO, Bit.ONE, Bit.ZERO);\r
+ t.executeAll();\r
+ assertBitArrayEquals(rA.getValues(), Bit.X, Bit.X, Bit.X);\r
+ assertBitArrayEquals(rB.getValues(), Bit.X, Bit.X);\r
+ assertBitArrayEquals(rC.getValues(), Bit.X, Bit.X, Bit.X);\r
+ rA.clearSignals();\r
+ rB.clearSignals();\r
+ rC.clearSignals();\r
+ t.executeAll();\r
+ assertBitArrayEquals(rA.getValues(), Bit.ONE, Bit.ZERO, Bit.ONE);\r
+ assertBitArrayEquals(rB.getValues(), Bit.ZERO, Bit.ONE);\r
+ assertBitArrayEquals(rC.getValues(), Bit.ZERO, Bit.ONE, Bit.ZERO);\r
+ }\r
+\r
+ @Test\r
+ void fusionTest2()\r
+ {\r
+ t.reset();\r
+ Wire a = new Wire(t, 3, 1), b = new Wire(t, 3, 1);\r
+ Wire.fuse(a, b);\r
+ ReadWriteEnd rw = a.createReadWriteEnd();\r
+ t.executeAll();\r
+ assertBitArrayEquals(b.getValues(), Bit.U, Bit.U, Bit.U);\r
+\r
+ rw.feedSignals(Bit.ONE, Bit.U, Bit.Z);\r
+ t.executeAll();\r
+ assertBitArrayEquals(b.getValues(), Bit.ONE, Bit.U, Bit.Z);\r
+ }\r
+\r
+ @Test\r
+ void fusionTest3()\r
+ {\r
+ t.reset();\r
+ Wire a = new Wire(t, 3, 1), b = new Wire(t, 3, 1);\r
+ a.createReadWriteEnd().feedSignals(Bit.Z, Bit.U, Bit.X);\r
+ t.executeAll();\r
+ Wire.fuse(a, b);\r
+ t.executeAll();\r
+ assertBitArrayEquals(b.getValues(), Bit.Z, Bit.U, Bit.X);\r
+ }\r
+\r
+// @Test\r
+// void connectorTest()\r
+// {\r
+// t.reset();\r
+// Wire a = new Wire(t, 3, 1), b = new Wire(t, 3, 1);\r
+// new Connector(t, a.createReadWriteEnd(), b.createReadWriteEnd()).connect();\r
+//// b.createReadWriteEnd();\r
+// a.createReadWriteEnd();\r
+// t.executeAll();\r
+// assertBitArrayEquals(b.getValues(), Bit.U, Bit.U, Bit.U);\r
+// }\r
+\r