Пример #1
0
        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);
        }
Пример #2
0
        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));
        }
Пример #3
0
        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);
        }
Пример #4
0
        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));
        }
Пример #5
0
        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);
        }