using JT808.Protocol.Enums; using JT808.Protocol.Extensions; using System; using Xunit; namespace JT808.Protocol.Test { public class JT808HeaderTest { JT808Serializer JT808Serializer = new JT808Serializer(); [Fact] public void Test3() { ReadOnlySpan dataLen = Convert.ToString(5, 2).PadLeft(10, '0').AsSpan(); } [Fact] public void Test4() { // "0000000000000101" short a = Convert.ToInt16("0000000000000101",2); var msgMethodBytes = BitConverter.GetBytes(a); } [Fact] public void Test1() { JT808Header jT808HeaderProperty = new JT808Header { TerminalPhoneNo = "13812345678" }; jT808HeaderProperty.MessageBodyProperty=new JT808HeaderMessageBodyProperty(5); jT808HeaderProperty.MsgNum = 135; jT808HeaderProperty.MsgId = JT808MsgId._0x0102.ToUInt16Value(); var hex = JT808Serializer.Serialize(jT808HeaderProperty).ToHexString(); Assert.Equal("01 02 00 05 01 38 12 34 56 78 00 87".Replace(" ", ""), hex); } [Fact] public void Test1_2() { //01 02 00 05 01 38 12 34 56 78 00 87 byte[] headerBytes = "01 02 00 05 01 38 12 34 56 78 00 87".ToHexBytes(); JT808Header jT808Header = JT808Serializer.Deserialize(headerBytes); Assert.Equal(135, jT808Header.MsgNum); Assert.Equal("13812345678", jT808Header.TerminalPhoneNo); Assert.False(jT808Header.MessageBodyProperty.IsPackage); Assert.Equal(JT808MsgId._0x0102.ToValue(), jT808Header.MsgId); Assert.Equal(5, jT808Header.MessageBodyProperty.DataLength); } [Fact] public void Test5() { JT808Header jT808HeaderProperty = new JT808Header(); jT808HeaderProperty.TerminalPhoneNo = "13812345678"; jT808HeaderProperty.MessageBodyProperty=new JT808HeaderMessageBodyProperty(5); jT808HeaderProperty.MsgNum = 135; jT808HeaderProperty.MsgId = JT808MsgId._0x0102.ToUInt16Value(); //"01 02 00 05 01 38 12 34 56 78 00 87" var hex = JT808Serializer.Serialize(jT808HeaderProperty).ToHexString(); Assert.Equal("010200050138123456780087", hex); } [Fact] public void Test5_2() { //01 02 00 05 01 38 12 34 56 78 00 87 byte[] headerBytes = "01 02 00 05 01 38 12 34 56 78 00 87".ToHexBytes(); JT808Header jT808Header = JT808Serializer.Deserialize(headerBytes); Assert.Equal(135, jT808Header.MsgNum); Assert.Equal("13812345678", jT808Header.TerminalPhoneNo); Assert.False(jT808Header.MessageBodyProperty.IsPackage); Assert.Equal(JT808MsgId._0x0102.ToValue(), jT808Header.MsgId); Assert.Equal(5, jT808Header.MessageBodyProperty.DataLength); } [Fact] public void JT808Header_2019Test1() { JT808Header jT808HeaderProperty = new JT808Header { TerminalPhoneNo = "13812345678" }; JT808HeaderMessageBodyProperty jT808HeaderMessageBodyProperty = new JT808HeaderMessageBodyProperty(); jT808HeaderMessageBodyProperty.DataLength = 255; jT808HeaderMessageBodyProperty.IsPackage = true; jT808HeaderMessageBodyProperty.Encrypt = JT808EncryptMethod.RSA; jT808HeaderMessageBodyProperty.VersionFlag = true; jT808HeaderProperty.MessageBodyProperty = jT808HeaderMessageBodyProperty; jT808HeaderProperty.MsgNum = 135; jT808HeaderProperty.MsgId = JT808MsgId._0x0102.ToUInt16Value(); jT808HeaderProperty.ProtocolVersion = 2; var hex = JT808Serializer.Serialize(jT808HeaderProperty).ToHexString(); Assert.Equal("010264FF0200000000013812345678008700000000", hex); } [Fact] public void JT808Header_2019Test2() { byte[] headerBytes = "010264FF0200000000013812345678008700000000".ToHexBytes(); JT808Header jT808Header = JT808Serializer.Deserialize(headerBytes); Assert.Equal(135, jT808Header.MsgNum); Assert.Equal(2, jT808Header.ProtocolVersion); Assert.Equal("13812345678", jT808Header.TerminalPhoneNo); Assert.True(jT808Header.MessageBodyProperty.IsPackage); Assert.True(jT808Header.MessageBodyProperty.VersionFlag); Assert.Equal(JT808MsgId._0x0102.ToValue(), jT808Header.MsgId); Assert.Equal(255, jT808Header.MessageBodyProperty.DataLength); } } }