Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

123 linhas
5.5 KiB

  1. using JTNE.Protocol.Extensions;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Text;
  5. using Xunit;
  6. using JTNE.Protocol.Enums;
  7. using JTNE.Protocol.MessageBody;
  8. using JTNE.Protocol.Internal;
  9. namespace JTNE.Protocol.Test.Package
  10. {
  11. public class JTNE_0x01_Package_DeviceTest
  12. {
  13. [Fact]
  14. public void Test1()
  15. {
  16. JTNEPackage_Device jTNEPackage = new JTNEPackage_Device();
  17. jTNEPackage.AskId = JTNEAskId.CMD.ToByteValue();
  18. jTNEPackage.MsgId = JTNEMsgId_Device.login.ToByteValue();
  19. jTNEPackage.VIN = "123456789";
  20. JTNE_0x01_Device jTNE_0X01_Device = new JTNE_0x01_Device();
  21. jTNE_0X01_Device.PDATime = DateTime.Parse("2019-01-22 23:55:56");
  22. jTNE_0X01_Device.LoginNum = 1;
  23. jTNE_0X01_Device.BatteryLength = 0x04;
  24. jTNE_0X01_Device.SIM = "12345678998765432100";
  25. jTNE_0X01_Device.BatteryNos = new List<string>()
  26. {
  27. "1234",
  28. "4567",
  29. "9870"
  30. };
  31. jTNEPackage.Bodies = jTNE_0X01_Device;
  32. var hex = JTNESerializer_Device.Serialize(jTNEPackage).ToHexString();
  33. Assert.Equal("232301FE313233343536373839000000000000000001002A130116173738000131323334353637383939383736353433323130300304313233343435363739383730FD", hex);
  34. }
  35. [Fact]
  36. public void Test2()
  37. {
  38. var data = "232301FE313233343536373839000000000000000001002A130116173738000131323334353637383939383736353433323130300304313233343435363739383730FD".ToHexBytes();
  39. JTNEPackage_Device jTNEPackage = JTNESerializer_Device.Deserialize(data);
  40. Assert.Equal(JTNEAskId.CMD.ToByteValue(), jTNEPackage.AskId);
  41. Assert.Equal(JTNEMsgId_Device.login.ToByteValue(), jTNEPackage.MsgId);
  42. Assert.Equal("123456789", jTNEPackage.VIN);
  43. JTNE_0x01_Device jTNE_0X01_Device = jTNEPackage.Bodies as JTNE_0x01_Device;
  44. Assert.Equal(DateTime.Parse("2019-01-22 23:55:56"), jTNE_0X01_Device.PDATime);
  45. Assert.Equal(1, jTNE_0X01_Device.LoginNum);
  46. Assert.Equal(0x04, jTNE_0X01_Device.BatteryLength);
  47. Assert.Equal("12345678998765432100", jTNE_0X01_Device.SIM);
  48. Assert.Equal(3, jTNE_0X01_Device.BatteryCount);
  49. Assert.Equal("1234", jTNE_0X01_Device.BatteryNos[0]);
  50. Assert.Equal("4567", jTNE_0X01_Device.BatteryNos[1]);
  51. Assert.Equal("9870", jTNE_0X01_Device.BatteryNos[2]);
  52. }
  53. [Fact]
  54. public void Test3()
  55. {
  56. JTNEGlobalConfigs.Instance.SetDataBodiesEncrypt((msgId)=>
  57. {
  58. switch (msgId)
  59. {
  60. case 0x03:
  61. return new Default_AES128EncryptImpl();
  62. default:
  63. return default;
  64. }
  65. });
  66. JTNEPackage_Device jTNEPackage = new JTNEPackage_Device();
  67. jTNEPackage.AskId = JTNEAskId.CMD.ToByteValue();
  68. jTNEPackage.MsgId = JTNEMsgId_Device.login.ToByteValue();
  69. jTNEPackage.VIN = "123456789";
  70. jTNEPackage.EncryptMethod = JTNEEncryptMethod.AES128.ToByteValue();
  71. JTNE_0x01_Device jTNE_0X01_Device = new JTNE_0x01_Device();
  72. jTNE_0X01_Device.PDATime = DateTime.Parse("2019-01-22 23:55:56");
  73. jTNE_0X01_Device.LoginNum = 1;
  74. jTNE_0X01_Device.BatteryLength = 0x04;
  75. jTNE_0X01_Device.SIM = "12345678998765432100";
  76. jTNE_0X01_Device.BatteryNos = new List<string>()
  77. {
  78. "1234",
  79. "4567",
  80. "9870"
  81. };
  82. jTNEPackage.Bodies = jTNE_0X01_Device;
  83. var hex = JTNESerializer_Device.Serialize(jTNEPackage).ToHexString();
  84. Assert.Equal("232301FE31323334353637383900000000000000000300307C9AAF67FB9408A75FAFC1C87F1E2AECD79DDAB8219016A5DD0911283922805EF450045EA3611C0D5CFBFD8F2581CEED30", hex);
  85. }
  86. [Fact]
  87. public void Test4()
  88. {
  89. JTNEGlobalConfigs.Instance.SetDataBodiesEncrypt((msgId) =>
  90. {
  91. switch (msgId)
  92. {
  93. case 0x03:
  94. return new Default_AES128EncryptImpl();
  95. default:
  96. return default;
  97. }
  98. });
  99. var data = "232301FE31323334353637383900000000000000000300307C9AAF67FB9408A75FAFC1C87F1E2AECD79DDAB8219016A5DD0911283922805EF450045EA3611C0D5CFBFD8F2581CEED30".ToHexBytes();
  100. JTNEPackage_Device jTNEPackage = JTNESerializer_Device.Deserialize(data);
  101. Assert.Equal(JTNEAskId.CMD.ToByteValue(), jTNEPackage.AskId);
  102. Assert.Equal(JTNEMsgId_Device.login.ToByteValue(), jTNEPackage.MsgId);
  103. Assert.Equal("123456789", jTNEPackage.VIN);
  104. Assert.Equal(JTNEEncryptMethod.AES128.ToByteValue(), jTNEPackage.EncryptMethod);
  105. JTNE_0x01_Device jTNE_0X01_Device = jTNEPackage.Bodies as JTNE_0x01_Device;
  106. Assert.Equal(DateTime.Parse("2019-01-22 23:55:56"), jTNE_0X01_Device.PDATime);
  107. Assert.Equal(1, jTNE_0X01_Device.LoginNum);
  108. Assert.Equal(0x04, jTNE_0X01_Device.BatteryLength);
  109. Assert.Equal("12345678998765432100", jTNE_0X01_Device.SIM);
  110. Assert.Equal(3, jTNE_0X01_Device.BatteryCount);
  111. Assert.Equal("1234", jTNE_0X01_Device.BatteryNos[0]);
  112. Assert.Equal("4567", jTNE_0X01_Device.BatteryNos[1]);
  113. Assert.Equal("9870", jTNE_0X01_Device.BatteryNos[2]);
  114. }
  115. }
  116. }