public void BuildMessageFrame() { byte[] expected = { 58, 48, 50, 48, 49, 48, 48, 48, 48, 48, 48, 48, 49, 70, 67, 13, 10 }; ReadCoilsInputsRequest request = new ReadCoilsInputsRequest(Modbus.ReadCoils, 2, 0, 1); var actual = new ModbusAsciiTransport(MockRepository.GenerateStub<IStreamResource>()).BuildMessageFrame(request); Assert.AreEqual(expected, actual); }
public void CreateResponseErroneousLrc() { ModbusAsciiTransport transport = new ModbusAsciiTransport(MockRepository.GenerateStub <IStreamResource>()); transport.CheckFrame = true; Assert.Throws <IOException>(() => transport.CreateResponse <ReadCoilsInputsResponse>(new byte[] { 19, Modbus.ReadCoils, 0, 0, 0, 2, 115 })); }
public void ChecksumsMatchSucceed() { ModbusAsciiTransport transport = new ModbusAsciiTransport(MockRepository.GenerateStub<IStreamResource>()); ReadCoilsInputsRequest message = new ReadCoilsInputsRequest(Modbus.ReadCoils, 17, 19, 37); byte[] frame = { 17, Modbus.ReadCoils, 0, 19, 0, 37, 182 }; Assert.IsTrue(transport.ChecksumsMatch(message, frame)); }
public void CreateResponse_SlaveException() { ModbusTransport transport = new ModbusAsciiTransport(MockRepository.GenerateStub<IStreamResource>()); byte[] frame = { 2, 129, 2 }; IModbusMessage message = transport.CreateResponse<ReadCoilsInputsResponse>(frame.Concat(SequenceUtility.ToSequence(ModbusUtility.CalculateLrc(frame))).ToArray()); Assert.IsTrue(message is SlaveExceptionResponse); }
public void CreateResponseErroneousLrcDoNotCheckFrame() { ModbusAsciiTransport transport = new ModbusAsciiTransport(MockRepository.GenerateStub <IStreamResource>()); transport.CheckFrame = false; transport.CreateResponse <ReadCoilsInputsResponse>(new byte[] { 19, Modbus.ReadCoils, 0, 0, 0, 2, 115 }); }
public void BuildMessageFrame() { byte[] expected = { 58, 48, 50, 48, 49, 48, 48, 48, 48, 48, 48, 48, 49, 70, 67, 13, 10 }; ReadCoilsInputsRequest request = new ReadCoilsInputsRequest(Modbus.ReadCoils, 2, 0, 1); var actual = new ModbusAsciiTransport(MockRepository.GenerateStub <IStreamResource>()).BuildMessageFrame(request); Assert.AreEqual(expected, actual); }
public void ChecksumsMatchFail() { ModbusAsciiTransport transport = new ModbusAsciiTransport(MockRepository.GenerateStub <IStreamResource>()); ReadCoilsInputsRequest message = new ReadCoilsInputsRequest(Modbus.ReadCoils, 17, 19, 37); byte[] frame = { 17, Modbus.ReadCoils, 0, 19, 0, 37, 181 }; Assert.IsFalse(transport.ChecksumsMatch(message, frame)); }
public void BuildMessageFrame() { byte[] expected = { 58, 48, 50, 48, 49, 48, 48, 48, 48, 48, 48, 48, 49, 70, 67, 13, 10 }; var request = new ReadCoilsInputsRequest(ModbusFunctionCodes.ReadCoils, 2, 0, 1); var actual = new ModbusAsciiTransport(StreamResource, NullModbusLogger.Instance) .BuildMessageFrame(request); Assert.Equal(expected, actual); }
public void ChecksumsMatchSucceed() { var transport = new ModbusAsciiTransport(StreamResource); var message = new ReadCoilsInputsRequest(Modbus.ReadCoils, 17, 19, 37); byte[] frame = { 17, Modbus.ReadCoils, 0, 19, 0, 37, 182 }; Assert.True(transport.ChecksumsMatch(message, frame)); }
public void ChecksumsMatchFail() { var transport = new ModbusAsciiTransport(StreamResource, NullModbusLogger.Instance); var message = new ReadCoilsInputsRequest(ModbusFunctionCodes.ReadCoils, 17, 19, 37); byte[] frame = { 17, ModbusFunctionCodes.ReadCoils, 0, 19, 0, 37, 181 }; Assert.False(transport.ChecksumsMatch(message, frame)); }
public void CreateResponseErroneousLrcDoNotCheckFrame() { var transport = new ModbusAsciiTransport(StreamResource, new ModbusFactory(), NullModbusLogger.Instance) { CheckFrame = false }; transport.CreateResponse <ReadCoilsInputsResponse>(new byte[] { 19, ModbusFunctionCodes.ReadCoils, 0, 0, 0, 2, 115 }); }
public void ChecksumsMatchFail() { var transport = new ModbusAsciiTransport(StreamResource); var message = new ReadCoilsInputsRequest(Modbus.ReadCoils, 17, 19, 37); byte[] frame = { 17, Modbus.ReadCoils, 0, 19, 0, 37, 181 }; Assert.False((bool)transport.ChecksumsMatch(message, frame)); }
public void CreateResponse_SlaveException() { ModbusTransport transport = new ModbusAsciiTransport(MockRepository.GenerateStub <IStreamResource>()); byte[] frame = { 2, 129, 2 }; IModbusMessage message = transport.CreateResponse <ReadCoilsInputsResponse>(frame.Concat(SequenceUtility.ToSequence(ModbusUtility.CalculateLrc(frame))).ToArray()); Assert.IsTrue(message is SlaveExceptionResponse); }
public void CreateResponse() { ModbusAsciiTransport transport = new ModbusAsciiTransport(MockRepository.GenerateStub<IStreamResource>()); ReadCoilsInputsResponse expectedResponse = new ReadCoilsInputsResponse(Modbus.ReadCoils, 2, 1, new DiscreteCollection(true, false, false, false, false, false, false, true)); byte lrc = ModbusUtility.CalculateLrc(expectedResponse.MessageFrame); ReadCoilsInputsResponse response = transport.CreateResponse<ReadCoilsInputsResponse>(new byte[] { 2, Modbus.ReadCoils, 1, 129, lrc }) as ReadCoilsInputsResponse; Assert.IsNotNull(response); AssertModbusMessagePropertiesAreEqual(expectedResponse, response); }
public void CreateResponseErroneousLrcDoNotCheckFrame() { var transport = new ModbusAsciiTransport(StreamResource) { CheckFrame = false }; transport.CreateResponse <ReadCoilsInputsResponse>(new byte[] { 19, Modbus.ReadCoils, 0, 0, 0, 2, 115 }); }
public void BuildMessageFrame() { byte[] expected = { 58, 48, 50, 48, 49, 48, 48, 48, 48, 48, 48, 48, 49, 70, 67, 13, 10 }; ReadCoilsInputsRequest?request = new(Modbus.ReadCoils, 2, 0, 1); byte[]? actual = new ModbusAsciiTransport(StreamResource) .BuildMessageFrame(request); Assert.Equal(expected, actual); }
public void CreateResponse() { var transport = new ModbusAsciiTransport(StreamResource, new ModbusFactory(), NullModbusLogger.Instance); var expectedResponse = new ReadCoilsInputsResponse(ModbusFunctionCodes.ReadCoils, 2, 1, new DiscreteCollection(true, false, false, false, false, false, false, true)); byte lrc = ModbusUtility.CalculateLrc(expectedResponse.MessageFrame); IModbusMessage response = transport.CreateResponse <ReadCoilsInputsResponse>(new byte[] { 2, ModbusFunctionCodes.ReadCoils, 1, 129, lrc }); Assert.IsType <ReadCoilsInputsResponse>(response); ModbusMessageFixture.AssertModbusMessagePropertiesAreEqual(expectedResponse, response); }
public void CreateResponse() { ModbusAsciiTransport transport = new ModbusAsciiTransport(MockRepository.GenerateStub <IStreamResource>()); ReadCoilsInputsResponse expectedResponse = new ReadCoilsInputsResponse(Modbus.ReadCoils, 2, 1, new DiscreteCollection(true, false, false, false, false, false, false, true)); byte lrc = ModbusUtility.CalculateLrc(expectedResponse.MessageFrame); ReadCoilsInputsResponse response = transport.CreateResponse <ReadCoilsInputsResponse>(new byte[] { 2, Modbus.ReadCoils, 1, 129, lrc }) as ReadCoilsInputsResponse; Assert.IsNotNull(response); AssertModbusMessagePropertiesAreEqual(expectedResponse, response); }
public void CreateResponseErroneousLrc() { var transport = new ModbusAsciiTransport(StreamResource, NullModbusLogger.Instance) { CheckFrame = true }; var frame = new byte[] { 19, ModbusFunctionCodes.ReadCoils, 0, 0, 0, 2, 115 }; Assert.Throws <IOException>( () => transport.CreateResponse <ReadCoilsInputsResponse>(frame)); }
public void ReadRequestResponse() { var mocks = new MockRepository(); var stream = mocks.StrictMock <IStreamResource>(); var transport = new ModbusAsciiTransport(stream); ExpectReadLine(stream, Encoding.ASCII.GetBytes(":110100130025B6\r\n")); mocks.ReplayAll(); Assert.AreEqual(new byte[] { 17, 1, 0, 19, 0, 37, 182 }, transport.ReadRequestResponse()); mocks.VerifyAll(); }
public void ReadRequestResponse() { var mocks = new MockRepository(); var stream = mocks.StrictMock<IStreamResource>(); var transport = new ModbusAsciiTransport(stream); ExpectReadLine(stream, Encoding.ASCII.GetBytes(":110100130025B6\r\n")); mocks.ReplayAll(); Assert.AreEqual(new byte[] { 17, 1, 0, 19, 0, 37, 182 }, transport.ReadRequestResponse()); mocks.VerifyAll(); }
public void ReadRequestResponseNotEnoughBytes() { var mock = new Mock <IStreamResource>(MockBehavior.Strict); IStreamResource stream = mock.Object; var transport = new ModbusAsciiTransport(stream, NullModbusLogger.Instance); int calls = 0; byte[] bytes = Encoding.ASCII.GetBytes(":10\r\n"); mock.Setup(s => s.Read(It.Is <byte[]>(x => x.Length == 1), 0, 1)) .Returns((byte[] buffer, int offset, int count) => { buffer[offset] = bytes[calls++]; return(1); }); Assert.Throws <IOException>(() => transport.ReadRequestResponse()); mock.VerifyAll(); }
public void ReadRequestResponse() { var mock = new Mock <IStreamResource>(MockBehavior.Strict); IStreamResource stream = mock.Object; var transport = new ModbusAsciiTransport(stream, NullModbusLogger.Instance); int calls = 0; byte[] bytes = Encoding.ASCII.GetBytes(":110100130025B6\r\n"); mock.Setup(s => s.Read(It.Is <byte[]>(x => x.Length == 1), 0, 1)) .Returns((byte[] buffer, int offset, int count) => { buffer[offset] = bytes[calls++]; return(1); }); Assert.Equal(new byte[] { 17, 1, 0, 19, 0, 37, 182 }, transport.ReadRequestResponse()); mock.VerifyAll(); }
public void CreateResponseErroneousLrc() { ModbusAsciiTransport transport = new ModbusAsciiTransport(MockRepository.GenerateStub<IStreamResource>()); transport.CheckFrame = true; Assert.Throws<IOException>(() => transport.CreateResponse<ReadCoilsInputsResponse>(new byte[] {19, Modbus.ReadCoils, 0, 0, 0, 2, 115})); }
public void CreateResponseErroneousLrcDoNotCheckFrame() { ModbusAsciiTransport transport = new ModbusAsciiTransport(MockRepository.GenerateStub<IStreamResource>()); transport.CheckFrame = false; transport.CreateResponse<ReadCoilsInputsResponse>(new byte[] { 19, Modbus.ReadCoils, 0, 0, 0, 2, 115 }); }