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(); }
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(); }
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(); //无未解析数据,应当为空。 }
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(); }
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); }