using JT808.Protocol.Extensions; using JT808.Protocol.MessageBody; using System.Collections.Generic; using Xunit; namespace JT808.Protocol.Test.MessageBody { public class JT808_0x0104Test { JT808Serializer JT808Serializer = new JT808Serializer(); [Fact] public void Test1() { JT808Package jT808Package = new JT808Package { Header = new JT808Header { MsgId = Enums.JT808MsgId.查询终端参数应答.ToUInt16Value(), ManualMsgNum = 10, TerminalPhoneNo = "123456789", }, Bodies = new JT808_0x0104 { MsgNum = 20, AnswerParamsCount = 1, ParamList = new List { new JT808_0x8103_0x0001() { ParamId=0x0001, ParamLength=4, ParamValue=10 } } } }; var hex = JT808Serializer.Serialize(jT808Package).ToHexString(); Assert.Equal("7E0104000C000123456789000A00140100000001040000000A907E", hex); } [Fact] public void Test1_1() { byte[] bytes = "7E0104000C000123456789000A00140100000001040000000A907E".ToHexBytes(); JT808Package jT808_0X8104 = JT808Serializer.Deserialize(bytes); Assert.Equal(Enums.JT808MsgId.查询终端参数应答.ToUInt16Value(), jT808_0X8104.Header.MsgId); Assert.Equal(10, jT808_0X8104.Header.MsgNum); Assert.Equal("123456789", jT808_0X8104.Header.TerminalPhoneNo); JT808_0x0104 JT808Bodies = (JT808_0x0104)jT808_0X8104.Bodies; Assert.Equal(20, JT808Bodies.MsgNum); Assert.Equal(1, JT808Bodies.AnswerParamsCount); foreach (var item in JT808Bodies.ParamList) { Assert.Equal(0x0001u, ((JT808_0x8103_0x0001)item).ParamId); Assert.Equal(4, ((JT808_0x8103_0x0001)item).ParamLength); Assert.Equal(10u, ((JT808_0x8103_0x0001)item).ParamValue); } } [Fact] public void Test2() { JT808Package jT808Package = new JT808Package { Header = new JT808Header { MsgId = Enums.JT808MsgId.查询终端参数应答.ToUInt16Value(), ManualMsgNum = 10, TerminalPhoneNo = "123456789", }, Bodies = new JT808_0x0104 { MsgNum = 20, AnswerParamsCount = 2, ParamList = new List { new JT808_0x8103_0x0001() { ParamId=0x0001, ParamLength=4, ParamValue=10 }, new JT808_0x8103_0x0013(){ ParamId=0x0013, ParamValue="www.baidu.com" } } } }; var hex = JT808Serializer.Serialize(jT808Package).ToHexString(); //7E0104001E000123456789000A00140200000001040000000A000000130F7777772E62616964752E636F6DF07E //7E0104001E000123456789000A00140200000001040000000A000000130D7777772E62616964752E636F6DF27E Assert.Equal("7E0104001E000123456789000A00140200000001040000000A000000130D7777772E62616964752E636F6DF27E", hex); } [Fact] public void Test2_1() { byte[] bytes = "7E0104001E000123456789000A00140200000001040000000A000000130D7777772E62616964752E636F6DF27E".ToHexBytes(); JT808Package jT808_0X8104 = JT808Serializer.Deserialize(bytes); Assert.Equal(Enums.JT808MsgId.查询终端参数应答.ToUInt16Value(), jT808_0X8104.Header.MsgId); Assert.Equal(10, jT808_0X8104.Header.MsgNum); Assert.Equal("123456789", jT808_0X8104.Header.TerminalPhoneNo); JT808_0x0104 JT808Bodies = (JT808_0x0104)jT808_0X8104.Bodies; Assert.Equal(20, JT808Bodies.MsgNum); Assert.Equal(2, JT808Bodies.AnswerParamsCount); foreach (var item in JT808Bodies.ParamList) { switch (item.ParamId) { case 0x0001: Assert.Equal(0x0001u, ((JT808_0x8103_0x0001)item).ParamId); Assert.Equal(4, ((JT808_0x8103_0x0001)item).ParamLength); Assert.Equal(10u, ((JT808_0x8103_0x0001)item).ParamValue); break; case 0x0013: Assert.Equal(0x0013u, ((JT808_0x8103_0x0013)item).ParamId); Assert.Equal("www.baidu.com", ((JT808_0x8103_0x0013)item).ParamValue); break; default: break; } } } } }