示例#1
0
            public void AdvancedResponse_GetSoftwareVersion_FrameError()
            {
                // act
                var data = new Byte[] {
                    /*0x02*/
                    0xFF,
                    0x00,
                    0x0F,
                    0x00,
                    0x65,
                    0x00,
                    0x03,
                    0x03,
                    0x00,
                    0x44,
                    0x53,
                    0x0D,
                    0x30,
                    0x74,
                    0x68,
                };

                var span = BufferSpan.From(data, 0, data.Length);

                var result = FeigResponse.TryParse(span, FeigProtocol.Advanced);

                // assert
                Check.That(result.Status).IsEqualTo(FeigParseStatus.FrameError);
                Check.That(result.Response).IsNull();
            }
        /// <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 Success_With_Response()
            {
                // act
                var response = new FeigResponse();
                var result   = FeigParseResult.Success(response);

                // assert
                Check.That(result.Status).IsEqualTo(FeigParseStatus.Success);
                Check.That(result.Response).IsSameReferenceAs(response);

                Check.That(result.ToString())
                .IsEqualTo("Status: Success, Response: { Address: 0, Command: None, Status: OK, 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);
        }
示例#7
0
            public void AdvancedResponse_GetSoftwareVersion_ChecksumError()
            {
                // act
                var data = new Byte[] {
                    0x02,
                    0x00,
                    0x0F,
                    0x00,
                    0x65,
                    0x00,
                    0x03,
                    0x03,
                    0x00,
                    0x44,
                    0x53,
                    0x0D,
                    0x30,
                    0x74, /*0x69*/
                    0x68,
                };

                var span = BufferSpan.From(data, 0, data.Length);

                var result = FeigResponse.TryParse(span, FeigProtocol.Advanced);

                // assert
                Check.That(result.Status).IsEqualTo(FeigParseStatus.ChecksumError);
                Check.That(result.Response).IsNotNull();

                Check.That(result.Response.FrameLength).IsEqualTo(15);
                Check.That(result.Response.Address).IsEqualTo(0x00);
                Check.That(result.Response.Command).IsEqualTo(FeigCommand.GetSoftwareVersion);
                Check.That(result.Response.Status).IsEqualTo(FeigStatus.OK);

                Check.That(result.Response.Data.ToArray())
                .ContainsExactly(
                    0x03,
                    0x03,
                    0x00,
                    0x44,
                    0x53,
                    0x0D,
                    0x30
                    );

                Check.That(result.Response.Crc).IsEqualTo(0x6974);

                Check.That(result.Response.ToString())
                .IsEqualTo("Address: 0, Command: GetSoftwareVersion, Status: OK, Data: 03-03-00-44-53-0D-30");
            }
示例#8
0
            public void Success()
            {
                // act
                var request  = new FeigRequest();
                var response = new FeigResponse();
                var result   = FeigTransferResult.UnexpectedResponse(request, response);

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

                Check.That(result.ToString())
                .IsEqualTo(
                    "Status: UnexpectedResponse, Request: { Address: 255, Command: None, Data: <empty> }, Response: { Address: 0, Command: None, Status: OK, Data: <empty> }"
                    );
            }
示例#9
0
            public void StandardResponse_GetSoftwareVersion_ByteByByte()
            {
                var data = new Byte[] {
                    0xFF,
                    0xFF,
                    0x0D,
                    0x00,
                    0x65,
                    0x00,
                    0x03,
                    0x03,
                    0x00,
                    0x44,
                    0x53,
                    0x0D,
                    0x30,
                    0x33,
                    0x09,
                    0xFF,
                    0xFF,
                };

                // act
                var result = FeigResponse.TryParse(BufferSpan.From(data, 2, 0), FeigProtocol.Standard);

                // assert
                Check.That(result.Status).IsEqualTo(FeigParseStatus.MoreDataNeeded);
                Check.That(result.Response).IsNull();

                // act
                result = FeigResponse.TryParse(BufferSpan.From(data, 2, 1), FeigProtocol.Standard);

                // assert
                Check.That(result.Status).IsEqualTo(FeigParseStatus.MoreDataNeeded);
                Check.That(result.Response).IsNull();

                // act
                result = FeigResponse.TryParse(BufferSpan.From(data, 2, 2), FeigProtocol.Standard);

                // assert
                Check.That(result.Status).IsEqualTo(FeigParseStatus.MoreDataNeeded);
                Check.That(result.Response).IsNull();

                // act
                result = FeigResponse.TryParse(BufferSpan.From(data, 2, 12), FeigProtocol.Standard);

                // assert
                Check.That(result.Status).IsEqualTo(FeigParseStatus.MoreDataNeeded);
                Check.That(result.Response).IsNull();

                // act
                result = FeigResponse.TryParse(BufferSpan.From(data, 2, 13), FeigProtocol.Standard);

                // assert
                Check.That(result.Status).IsEqualTo(FeigParseStatus.Success);
                Check.That(result.Response).IsNotNull();

                Check.That(result.Response.FrameLength).IsEqualTo(13);
                Check.That(result.Response.Address).IsEqualTo(0x00);
                Check.That(result.Response.Command).IsEqualTo(FeigCommand.GetSoftwareVersion);
                Check.That(result.Response.Status).IsEqualTo(FeigStatus.OK);

                Check.That(result.Response.Data.ToArray())
                .ContainsExactly(
                    0x03,
                    0x03,
                    0x00,
                    0x44,
                    0x53,
                    0x0D,
                    0x30
                    );

                Check.That(result.Response.Crc).IsEqualTo(0x0933);

                Check.That(result.Response.ToString())
                .IsEqualTo("Address: 0, Command: GetSoftwareVersion, Status: OK, Data: 03-03-00-44-53-0D-30");
            }
示例#10
0
        /// <summary>
        /// Returns a result indicating a successfully parsed response.
        /// </summary>
        ///
        /// <exception cref="ArgumentNullException">
        /// A null reference was passed to a method that did not accept it as a valid argument.</exception>
        public static FeigParseResult Success(FeigResponse response)
        {
            Verify.NotNull(response, nameof(response));

            return(new FeigParseResult(FeigParseStatus.Success, response));
        }
示例#11
0
        /// <summary>
        /// Returns a result indicating that a checksum error has been detected.
        /// </summary>
        ///
        /// <exception cref="ArgumentNullException">
        /// A null reference was passed to a method that did not accept it as a valid argument.</exception>
        public static FeigParseResult ChecksumError(FeigResponse response)
        {
            Verify.NotNull(response, nameof(response));

            return(new FeigParseResult(FeigParseStatus.ChecksumError, response));
        }