public void NormalFlow() { var inputPacket1 = Mock.Of <IPacket>(); var inputPacket2 = Mock.Of <IPacket>(); var outputRecv = false; var outPortBlockMock = new Mock <IOutPortBlock>(); outPortBlockMock .Setup(t => t.Enqueue(It.IsAny <int>(), It.IsAny <IPacket>())) .Callback(() => outputRecv = true); var Core = Mock.Of <ICore>(); Core.OutPorts = outPortBlockMock.Object; Core.WaitedPackets = new HashSet <IPacket>() { inputPacket2 }; Core.DataTransformer = Mock.Of <IDataTransformer>(); var route = new MathFunctionRoute(0, 2, 3, 0, new PartnerPacketWaiter()); route.Route(inputPacket1, Core); Assert.IsTrue(outputRecv); Assert.AreEqual(0, Core.WaitedPackets.Count); }
public void ShouldAddToWaiting() { var inputPacket = Mock.Of <IPacket>(); var Core = Mock.Of <ICore>(); Core.OutPorts = Mock.Of <IOutPortBlock>(); Core.WaitedPackets = new HashSet <IPacket>(); var route = new MathFunctionRoute(1, 2, 3, 0, new PartnerPacketWaiter()); route.Route(inputPacket, Core); Assert.IsTrue(Core.WaitedPackets.Contains(inputPacket)); }
public void Route(IPacket packet, ICore core) { var decomposer = new StructureDecompressor(packet.Data); decomposer.SkipHalf(); var mainLabel = decomposer.DepackHalf(); var bufferLabel = decomposer.DepackHalf(); var mathRoute = new MathFunctionRoute(bufferLabel, decomposer.DepackHalf(), decomposer.DepackHalf(), decomposer.DepackHalf(), Waiter); var bufferRoute = new BufferRiseRoute(mathRoute, mainLabel, Waiter); core.Router.Table.AddRoute(mainLabel, mathRoute); core.Router.Table.AddRoute(bufferLabel, bufferRoute); }
private static void patchingAdding(Core c1, Core c2, Core c3, Core c4) { var addRoute = new MathFunctionRoute(0, 3, 1, (int)DataTransformBinFunction.Add, new PartnerPacketWaiter()); c1.Router.Table.AddRoute(1, addRoute); c1.Router.Table.AddRoute(0, new BufferRiseRoute(addRoute, 1)); var mulRoute = new MathFunctionRoute(2, 3, 1, (int)DataTransformBinFunction.Mul, new PartnerPacketWaiter()); c2.Router.Table.AddRoute(1, mulRoute); c2.Router.Table.AddRoute(2, new BufferRiseRoute(mulRoute, 1)); c4.Router.Table.AddRoute(1, new TransitRoute(0, 2)); var addDeltaRoute = new MathFunctionRoute(2, 3, 0, (int)DataTransformBinFunction.Add, new PartnerPacketWaiter()); c3.Router.Table.AddRoute(1, addDeltaRoute); c3.Router.Table.AddRoute(2, new BufferRiseRoute(addDeltaRoute, 1)); }
public void ShouldCallDataTransform() { var inputPacket1 = Mock.Of <IPacket>(); inputPacket1.Data = 100; var inputPacket2 = Mock.Of <IPacket>(); inputPacket2.Data = 200; var outputRecv = false; var outPortBlockMock = new Mock <IOutPortBlock>(); outPortBlockMock .Setup(t => t.Enqueue(2, It.IsAny <IPacket>())) .Callback((int port, IPacket packet) => outputRecv = packet.Data == 300 && packet.Label == 3); var Core = Mock.Of <ICore>(); Core.OutPorts = outPortBlockMock.Object; Core.WaitedPackets = new HashSet <IPacket>() { inputPacket2 }; var dataTransformMock = new Mock <IDataTransformer>(); dataTransformMock .Setup(t => t.TransformBin(It.IsAny <DataTransformBinFunction>(), 100, 200)) .Returns(300); Core.DataTransformer = dataTransformMock.Object; var route = new MathFunctionRoute(0, 2, 3, 0, new PartnerPacketWaiter()); route.Route(inputPacket1, Core); Assert.IsTrue(outputRecv); }