using JTNE.Protocol.Extensions; using System; using System.Collections.Generic; using System.Text; using Xunit; using JTNE.Protocol.Enums; using JTNE.Protocol.MessageBody; using JTNE.Protocol.Internal; namespace JTNE.Protocol.Test.Package { public class JTNE_0x01_Package_DeviceTest { [Fact] public void Test1() { JTNEPackage_Device jTNEPackage = new JTNEPackage_Device(); jTNEPackage.AskId = JTNEAskId.CMD.ToByteValue(); jTNEPackage.MsgId = JTNEMsgId_Device.login.ToByteValue(); jTNEPackage.VIN = "123456789"; JTNE_0x01_Device jTNE_0X01_Device = new JTNE_0x01_Device(); jTNE_0X01_Device.PDATime = DateTime.Parse("2019-01-22 23:55:56"); jTNE_0X01_Device.LoginNum = 1; jTNE_0X01_Device.BatteryLength = 0x04; jTNE_0X01_Device.SIM = "12345678998765432100"; jTNE_0X01_Device.BatteryNos = new List() { "1234", "4567", "9870" }; jTNEPackage.Bodies = jTNE_0X01_Device; var hex = JTNESerializer_Device.Serialize(jTNEPackage).ToHexString(); Assert.Equal("232301FE313233343536373839000000000000000001002A130116173738000131323334353637383939383736353433323130300304313233343435363739383730FD", hex); } [Fact] public void Test2() { var data = "232301FE313233343536373839000000000000000001002A130116173738000131323334353637383939383736353433323130300304313233343435363739383730FD".ToHexBytes(); JTNEPackage_Device jTNEPackage = JTNESerializer_Device.Deserialize(data); Assert.Equal(JTNEAskId.CMD.ToByteValue(), jTNEPackage.AskId); Assert.Equal(JTNEMsgId_Device.login.ToByteValue(), jTNEPackage.MsgId); Assert.Equal("123456789", jTNEPackage.VIN); JTNE_0x01_Device jTNE_0X01_Device = jTNEPackage.Bodies as JTNE_0x01_Device; Assert.Equal(DateTime.Parse("2019-01-22 23:55:56"), jTNE_0X01_Device.PDATime); Assert.Equal(1, jTNE_0X01_Device.LoginNum); Assert.Equal(0x04, jTNE_0X01_Device.BatteryLength); Assert.Equal("12345678998765432100", jTNE_0X01_Device.SIM); Assert.Equal(3, jTNE_0X01_Device.BatteryCount); Assert.Equal("1234", jTNE_0X01_Device.BatteryNos[0]); Assert.Equal("4567", jTNE_0X01_Device.BatteryNos[1]); Assert.Equal("9870", jTNE_0X01_Device.BatteryNos[2]); } [Fact] public void Test3() { JTNEGlobalConfigs.Instance.SetDataBodiesEncrypt((msgId)=> { switch (msgId) { case 0x03: return new Default_AES128EncryptImpl(); default: return default; } }); JTNEPackage_Device jTNEPackage = new JTNEPackage_Device(); jTNEPackage.AskId = JTNEAskId.CMD.ToByteValue(); jTNEPackage.MsgId = JTNEMsgId_Device.login.ToByteValue(); jTNEPackage.VIN = "123456789"; jTNEPackage.EncryptMethod = JTNEEncryptMethod.AES128.ToByteValue(); JTNE_0x01_Device jTNE_0X01_Device = new JTNE_0x01_Device(); jTNE_0X01_Device.PDATime = DateTime.Parse("2019-01-22 23:55:56"); jTNE_0X01_Device.LoginNum = 1; jTNE_0X01_Device.BatteryLength = 0x04; jTNE_0X01_Device.SIM = "12345678998765432100"; jTNE_0X01_Device.BatteryNos = new List() { "1234", "4567", "9870" }; jTNEPackage.Bodies = jTNE_0X01_Device; var hex = JTNESerializer_Device.Serialize(jTNEPackage).ToHexString(); Assert.Equal("232301FE31323334353637383900000000000000000300307C9AAF67FB9408A75FAFC1C87F1E2AECD79DDAB8219016A5DD0911283922805EF450045EA3611C0D5CFBFD8F2581CEED30", hex); } [Fact] public void Test4() { JTNEGlobalConfigs.Instance.SetDataBodiesEncrypt((msgId) => { switch (msgId) { case 0x03: return new Default_AES128EncryptImpl(); default: return default; } }); var data = "232301FE31323334353637383900000000000000000300307C9AAF67FB9408A75FAFC1C87F1E2AECD79DDAB8219016A5DD0911283922805EF450045EA3611C0D5CFBFD8F2581CEED30".ToHexBytes(); JTNEPackage_Device jTNEPackage = JTNESerializer_Device.Deserialize(data); Assert.Equal(JTNEAskId.CMD.ToByteValue(), jTNEPackage.AskId); Assert.Equal(JTNEMsgId_Device.login.ToByteValue(), jTNEPackage.MsgId); Assert.Equal("123456789", jTNEPackage.VIN); Assert.Equal(JTNEEncryptMethod.AES128.ToByteValue(), jTNEPackage.EncryptMethod); JTNE_0x01_Device jTNE_0X01_Device = jTNEPackage.Bodies as JTNE_0x01_Device; Assert.Equal(DateTime.Parse("2019-01-22 23:55:56"), jTNE_0X01_Device.PDATime); Assert.Equal(1, jTNE_0X01_Device.LoginNum); Assert.Equal(0x04, jTNE_0X01_Device.BatteryLength); Assert.Equal("12345678998765432100", jTNE_0X01_Device.SIM); Assert.Equal(3, jTNE_0X01_Device.BatteryCount); Assert.Equal("1234", jTNE_0X01_Device.BatteryNos[0]); Assert.Equal("4567", jTNE_0X01_Device.BatteryNos[1]); Assert.Equal("9870", jTNE_0X01_Device.BatteryNos[2]); } } }