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(); }
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(); }
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(); }
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(); }
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(); }
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(); }