public void StandardFrame()
        {
            // act
            var req = new FeigRequest {
                Address = 0x12, Command = FeigCommand.ReadConfiguration, Data = BufferSpan.From(0x07),
            };

            // assert
            Check.That(req.Address).IsEqualTo(0x12);
            Check.That(req.Command).IsEqualTo(FeigCommand.ReadConfiguration);
            Check.That(req.Data.Buffer).ContainsExactly(0x07);

            // act
            var frame = req.ToBufferSpan();

            // assert
            Check.That(frame.ToArray())
            .ContainsExactly(
                0x06,
                0x12,
                0x80,
                0x07,
                0xe5,
                0x80
                );

            Check.That(req.ToString()).IsEqualTo("Address: 18, Command: ReadConfiguration, Data: 07");
        }
        public void StandardFrame_GetSoftwareVersion()
        {
            // act
            var req = new FeigRequest {
                Command = FeigCommand.GetSoftwareVersion
            };

            // assert
            Check.That(req.Address).IsEqualTo(0xFF);
            Check.That(req.Command).IsEqualTo(FeigCommand.GetSoftwareVersion);
            Check.That(req.Data.IsEmpty).IsTrue();

            // act
            var frame = req.ToBufferSpan();

            // assert
            Check.That(frame.ToArray())
            .ContainsExactly(
                0x05,
                0xFF,
                0x65,
                0xE5,
                0xCB
                );

            Check.That(req.ToString()).IsEqualTo("Address: 255, Command: GetSoftwareVersion, Data: <empty>");
        }
        /// <summary>
        /// Returns a result indicating a successfully transfer operation.
        /// </summary>
        ///
        /// <exception cref="ArgumentNullException">
        /// A null reference was passed to a method that did not accept it as a valid argument.</exception>
        public static FeigTransferResult Success(FeigRequest request, FeigResponse response)
        {
            Verify.NotNull(request, nameof(request));
            Verify.NotNull(response, nameof(response));

            return(new FeigTransferResult(FeigTransferStatus.Success, request, response));
        }
        /// <summary>
        /// Returns a result indicating that the transfer operation failed because an unexpected response
        /// has been received.
        /// </summary>
        ///
        /// <exception cref="ArgumentNullException">
        /// A null reference was passed to a method that did not accept it as a valid argument.</exception>
        public static FeigTransferResult UnexpectedResponse(FeigRequest request, FeigResponse response)
        {
            Verify.NotNull(request, nameof(request));
            Verify.NotNull(response, nameof(response));

            return(new FeigTransferResult(FeigTransferStatus.UnexpectedResponse, request, response));
        }
        public void Defaults()
        {
            // act
            var req = new FeigRequest();

            // assert
            Check.That(req.Address).IsEqualTo(0xff);
            Check.That(req.Command).IsEqualTo(FeigCommand.None);
            Check.That(req.Data.IsEmpty).IsTrue();
            Check.That(req.ToString()).IsEqualTo("Address: 255, Command: None, Data: <empty>");
        }
        public void Succeed_With_MessageRequestResponse()
        {
            // act
            var request   = new FeigRequest();
            var response  = new FeigResponse();
            var exception = new FeigException("MSG", request, response);

            // assert
            Check.That(exception.Message).IsEqualTo("MSG");
            Check.That(exception.InnerException).IsNull();
            Check.That(exception.Request).IsSameReferenceAs(request);
            Check.That(exception.Response).IsSameReferenceAs(response);
        }
        public void Succeed_With_RequestResponse()
        {
            // act
            var request   = new FeigRequest();
            var response  = new FeigResponse();
            var exception = new FeigException(request, response);

            // assert
            Check.That(exception.Message).Contains("InlayTester.Drivers.Feig.FeigException");
            Check.That(exception.InnerException).IsNull();
            Check.That(exception.Request).IsSameReferenceAs(request);
            Check.That(exception.Response).IsSameReferenceAs(response);
        }
Beispiel #8
0
            public void Success()
            {
                // act
                var request = new FeigRequest();
                var result  = FeigTransferResult.Canceled(request);

                // assert
                Check.That(result.Status).IsEqualTo(FeigTransferStatus.Canceled);
                Check.That(result.Request).IsSameReferenceAs(request);
                Check.That(result.Response).IsNull();

                Check.That(result.ToString())
                .IsEqualTo(
                    "Status: Canceled, Request: { Address: 255, Command: None, Data: <empty> }, Response: { <null> }"
                    );
            }
Beispiel #9
0
            public void Success_With_Response()
            {
                // act
                var request  = new FeigRequest();
                var response = new FeigResponse();
                var result   = FeigTransferResult.Success(request, response);

                // assert
                Check.That(result.Status).IsEqualTo(FeigTransferStatus.Success);
                Check.That(result.Request).IsSameReferenceAs(request);
                Check.That(result.Response).IsSameReferenceAs(response);

                Check.That(result.ToString())
                .IsEqualTo(
                    "Status: Success, Request: { Address: 255, Command: None, Data: <empty> }, Response: { Address: 0, Command: None, Status: OK, Data: <empty> }"
                    );
            }
 private FeigTransferResult(FeigTransferStatus status, FeigRequest request, FeigResponse?response)
 {
     Status   = status;
     Request  = request;
     Response = response;
 }
        /// <summary>
        /// Returns a result indicating that the transfer operation failed due to a communication error.
        /// </summary>
        ///
        /// <exception cref="ArgumentNullException">
        /// A null reference was passed to a method that did not accept it as a valid argument.</exception>
        public static FeigTransferResult CommunicationError(FeigRequest request)
        {
            Verify.NotNull(request, nameof(request));

            return(new FeigTransferResult(FeigTransferStatus.CommunicationError, request, null));
        }
        /// <summary>
        /// Returns a result indicating that the transfer operation has timed out.
        /// </summary>
        ///
        /// <exception cref="ArgumentNullException">
        /// A null reference was passed to a method that did not accept it as a valid argument.</exception>
        public static FeigTransferResult Timeout(FeigRequest request)
        {
            Verify.NotNull(request, nameof(request));

            return(new FeigTransferResult(FeigTransferStatus.Timeout, request, null));
        }
        /// <summary>
        /// Returns a result indicating that the transfer operation has been canceled.
        /// </summary>
        ///
        /// <exception cref="ArgumentNullException">
        /// A null reference was passed to a method that did not accept it as a valid argument.</exception>
        public static FeigTransferResult Canceled(FeigRequest request)
        {
            Verify.NotNull(request, nameof(request));

            return(new FeigTransferResult(FeigTransferStatus.Canceled, request, null));
        }