コード例 #1
0
        public void Test_Half_08()
        {
            var pt = new UsualVoucherToolStub();

            var msg = new byte[]
            {
                0xAA,
                //无命令字
                //无数据域长度
                //无数据域
                //无CRC
                //无结束符
            };

            var vs      = new List <IVoucher>();
            var success = pt.TryParse(new ArraySegment <byte>(msg), ref vs);

            success.Should().BeFalse();

            pt.SegmentSource.Should().NotBeNull();
        }
コード例 #2
0
        public void Test_CRC_06()
        {
            var pt = new UsualVoucherToolStub();

            var msg = new byte[]
            {
                0xAA,
                0xFE,       //命令字
                0x02, 0x00, //数据域长度
                0x00, 0x00, //数据域
                0x30, 0x7D, //CRC
                0xCC,
                0xAA,
                0xFE,       //命令字
                0x02, 0x00, //数据域长度
                0x00, 0x00, //数据域
                0x30, 0x7D, //CRC
                0xCC,
                0xAA,
                0xFE,       //命令字
                0x02, 0x00, //数据域长度
                0x00, 0x00, //数据域
                0x30, 0x7D, //CRC
                0xCC,
            };
            var vouchers = new List <IVoucher>(1);
            var success  = pt.TryParse(new ArraySegment <byte>(msg), ref vouchers);

            vouchers.Count.Should().Be(3);
            success.Should().BeTrue();
            foreach (var voucher in vouchers)
            {
                voucher.Command[0].Should().Be(0xFE);
                foreach (var b in voucher.DataField)
                {
                    b.Should().Be(0x00);
                }
            }
            pt.SegmentSource.Should().BeNull();
        }
コード例 #3
0
        public void Test_Impurities_InTheFrontMiddleAndBack_1()
        {
            var pt = new UsualVoucherToolStub();

            var bytes = new byte[]
            {
                0xAA,
                0xFE,       //命令字
                0x02, 0x00, //数据域长度
                0x00, 0x00, //数据域
                0x30, 0x7D, //CRC
                0xCC,
            };

            var list = new List <byte>();

            list.AddRange(Encoding.Default.GetBytes("前面有杂质"));
            list.AddRange(bytes);
            list.AddRange(Encoding.Default.GetBytes("中间有杂质"));
            list.AddRange(bytes);
            list.AddRange(Encoding.Default.GetBytes("后面有杂质"));

            var vs = new List <IVoucher>();

            pt.TryParse(new ArraySegment <byte>(list.ToArray()), ref vs);
            foreach (var v in vs)
            {
                v.Command[0].Should().Be(0xFE);
                v.DataField.Count.Should().Be(2);
                foreach (var b in v.DataField)
                {
                    b.Should().Be(0x00);
                }
            }
            vs.Count.Should().Be(2);

            pt.SegmentSource.Should().BeNull(); //无未解析数据,应当为空。
        }
コード例 #4
0
        public void Test_One_And_A_Half_08()
        {
            var pt = new UsualVoucherToolStub();

            var msg = new byte[]
            {
                0xAA,
                0xFE,       //命令字
                0x02, 0x00, //数据域长度
                0x00, 0x00, //数据域
                0x30, 0x7D, //CRC
                0xCC,       //结束符

                0xAA,
                //无命令字
                //无数据域长度
                //无数据域
                //无CRC
                //无结束符
            };

            var vs      = new List <IVoucher>();
            var success = pt.TryParse(new ArraySegment <byte>(msg), ref vs);

            vs.Count.Should().Be(1);
            foreach (var v in vs)
            {
                v.Command[0].Should().Be(0xFE);
                v.DataField.Count.Should().Be(2);
                foreach (var b in v.DataField)
                {
                    b.Should().Be(0x00);
                }
            }
            success.Should().BeTrue();
            pt.SegmentSource.Should().NotBeNull();
        }
コード例 #5
0
        public void Test_Half_07()
        {
            var pt = new UsualVoucherToolStub();

            var msg = new byte[]
            {
                0xAA,
                0xFE, //命令字
                //无数据域长度
                //无数据域
                //无CRC
                //无结束符
            };

            var vs      = new List <IVoucher>();
            var success = pt.TryParse(new ArraySegment <byte>(msg), ref vs);

            success.Should().BeFalse();

            pt.SegmentSource.Should().NotBeNull();
            pt.SegmentSource.Command[0].Should().Be(0xFE);
            pt.SegmentSource.TryGetDataFieldLength(out var length).Should().BeFalse();
            length.Should().Be(-1);
        }