public void CreateResponse_SlaveException()
        {
            ModbusTransport transport = new ModbusAsciiTransport(MockRepository.GenerateStub <IStreamResource>());

            byte[]         frame   = { 2, 129, 2 };
            IModbusMessage message =
                transport.CreateResponse <ReadCoilsInputsResponse>(
                    Enumerable.Concat(frame, SequenceUtility.ToSequence(ModbusUtility.CalculateLrc(frame))).ToArray());

            Assert.IsTrue(message is SlaveExceptionResponse);
        }
        public void CreateModbusMessageReturnQueryDataRequestResponse()
        {
            byte slaveAddress       = 5;
            RegisterCollection data = new RegisterCollection(50);

            byte[] frame = SequenceUtility.ToSequence <byte>(slaveAddress, 8, 0, 0).Concat(data.NetworkBytes).ToArray();
            DiagnosticsRequestResponse message         = ModbusMessageFactory.CreateModbusMessage <DiagnosticsRequestResponse>(frame);
            DiagnosticsRequestResponse expectedMessage = new DiagnosticsRequestResponse(Modbus.DiagnosticsReturnQueryData, slaveAddress, data);

            Assert.AreEqual(expectedMessage.SubFunctionCode, message.SubFunctionCode);
            AssertModbusMessagePropertiesAreEqual(expectedMessage, message);
        }
        public void ReadResponseSlaveException()
        {
            MockRepository     mocks     = new MockRepository();
            ModbusRtuTransport transport = mocks.PartialMock <ModbusRtuTransport>(MockRepository.GenerateStub <IStreamResource>());

            byte[] messageFrame = { 0x01, 0x81, 0x02 };
            byte[] crc          = ModbusUtility.CalculateCrc(messageFrame);

            Expect.Call(transport.Read(ModbusRtuTransport.ResponseFrameStartLength))
            .Return(messageFrame.Concat(SequenceUtility.ToSequence(crc[0])).ToArray());

            Expect.Call(transport.Read(1))
            .Return(new byte[] { crc[1] });

            mocks.ReplayAll();

            Assert.IsTrue(transport.ReadResponse <ReadCoilsInputsResponse>() is SlaveExceptionResponse);

            mocks.VerifyAll();
        }