コード例 #1
0
    public void ReadRequestResponse()
    {
        Mock <IStreamResource>?mock    = new(MockBehavior.Strict);
        ReadCoilsInputsRequest?request = new(Modbus.ReadCoils, 1, 1, 3);
        int calls = 0;

        byte[][] source =
        {
            new byte[] { 45, 63, 0, 0, 0, 6 },
            new byte[] { 1 }.Concat(request.ProtocolDataUnit).ToArray()
        };

        mock.Setup(s => s.Read(It.Is <byte[]>(x => x.Length == 6), 0, 6))
        .Returns((byte[] buf, int offset, int count) =>
        {
            Array.Copy(source[calls++], buf, 6);
            return(6);
        });

        Assert.Equal(
            new byte[] { 45, 63, 0, 0, 0, 6, 1, 1, 0, 1, 0, 3 },
            ModbusIpTransport.ReadRequestResponse(mock.Object));

        mock.VerifyAll();
    }
コード例 #2
0
        public void ReadRequestResponse()
        {
            MockRepository mocks         = new MockRepository();
            var            mockTransport = mocks.StrictMock <IStreamResource>(null);

            byte[] mbapHeader = { 45, 63, 0, 0, 0, 6 };

            Expect.Call(mockTransport.Read(new byte[6], 0, 6))
            .Do(((Func <byte[], int, int, int>) delegate(byte[] buf, int offset, int count)
            {
                Array.Copy(mbapHeader, buf, 6);
                return(6);
            }));

            ReadCoilsInputsRequest request = new ReadCoilsInputsRequest(Modbus.ReadCoils, 1, 1, 3);

            Expect.Call(mockTransport.Read(new byte[6], 0, 6))
            .Do(((Func <byte[], int, int, int>) delegate(byte[] buf, int offset, int count)
            {
                Array.Copy(new byte[] { 1 }.Concat(request.ProtocolDataUnit).ToArray(), buf, 6);
                return(6);
            }));

            mocks.ReplayAll();
            Assert.Equal(ModbusIpTransport.ReadRequestResponse(mockTransport),
                         new byte[] { 45, 63, 0, 0, 0, 6, 1, 1, 0, 1, 0, 3 });
            mocks.VerifyAll();
        }
コード例 #3
0
    public void ReadRequestResponse_ConnectionAbortedWhileReadingMBAPHeader()
    {
        Mock <IStreamResource>?mock = new(MockBehavior.Strict);

        mock.Setup(s => s.Read(It.Is <byte[]>(x => x.Length == 6), 0, 6)).Returns(3);
        mock.Setup(s => s.Read(It.Is <byte[]>(x => x.Length == 6), 3, 3)).Returns(0);

        Assert.Throws <IOException>(() => ModbusIpTransport.ReadRequestResponse(mock.Object));
        mock.VerifyAll();
    }
コード例 #4
0
        public void ReadRequestResponse_ConnectionAbortedWhileReadingMBAPHeader()
        {
            MockRepository mocks         = new MockRepository();
            var            mockTransport = mocks.StrictMock <IStreamResource>(null);

            Expect.Call(mockTransport.Read(new byte[6], 0, 6)).Return(0);

            mocks.ReplayAll();
            Assert.Throws <IOException>(() => ModbusIpTransport.ReadRequestResponse(mockTransport));
            mocks.VerifyAll();
        }
コード例 #5
0
        public void ReadRequestResponse_ConnectionAbortedWhileReadingMessageFrame()
        {
            var mock = new Mock <IStreamResource>(MockBehavior.Strict);

            mock.Setup(s => s.Read(It.Is <byte[]>(x => x.Length == 6), 0, 6)).Returns(6);
            mock.Setup(s => s.Read(It.Is <byte[]>(x => x.Length == 6), 0, 6)).Returns(3);
            mock.Setup(s => s.Read(It.Is <byte[]>(x => x.Length == 6), 3, 3)).Returns(0);

            Assert.Throws <IOException>(() => ModbusIpTransport.ReadRequestResponse(mock.Object, NullModbusLogger.Instance));
            mock.VerifyAll();
        }
コード例 #6
0
        public void ReadRequestResponse_ConnectionAbortedWhileReadingMessageFrame()
        {
            MockRepository mocks         = new MockRepository();
            var            mockTransport = mocks.StrictMock <IStreamResource>(null);

            byte[] mbapHeader = { 45, 63, 0, 0, 0, 6 };

            Expect.Call(mockTransport.Read(new byte[6], 0, 6)).Do(((Func <byte[], int, int, int>) delegate(byte[] buf, int offset, int count)
            {
                Array.Copy(mbapHeader, buf, 6);
                return(6);
            }));

            Expect.Call(mockTransport.Read(new byte[6], 0, 6)).Return(0);

            mocks.ReplayAll();
            ModbusIpTransport.ReadRequestResponse(mockTransport);
            mocks.VerifyAll();
        }