選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

115 行
4.7 KiB

  1. using JT808.Protocol.Enums;
  2. using JT808.Protocol.Extensions;
  3. using System;
  4. using Xunit;
  5. namespace JT808.Protocol.Test
  6. {
  7. public class JT808HeaderTest
  8. {
  9. JT808Serializer JT808Serializer = new JT808Serializer();
  10. [Fact]
  11. public void Test3()
  12. {
  13. ReadOnlySpan<char> dataLen = Convert.ToString(5, 2).PadLeft(10, '0').AsSpan();
  14. }
  15. [Fact]
  16. public void Test4()
  17. {
  18. // "0000000000000101"
  19. short a = Convert.ToInt16("0000000000000101",2);
  20. var msgMethodBytes = BitConverter.GetBytes(a);
  21. }
  22. [Fact]
  23. public void Test1()
  24. {
  25. JT808Header jT808HeaderProperty = new JT808Header
  26. {
  27. TerminalPhoneNo = "13812345678"
  28. };
  29. jT808HeaderProperty.MessageBodyProperty=new JT808HeaderMessageBodyProperty(5);
  30. jT808HeaderProperty.MsgNum = 135;
  31. jT808HeaderProperty.MsgId = JT808MsgId.终端鉴权.ToUInt16Value();
  32. var hex = JT808Serializer.Serialize(jT808HeaderProperty).ToHexString();
  33. Assert.Equal("01 02 00 05 01 38 12 34 56 78 00 87".Replace(" ", ""), hex);
  34. }
  35. [Fact]
  36. public void Test1_2()
  37. {
  38. //01 02 00 05 01 38 12 34 56 78 00 87
  39. byte[] headerBytes = "01 02 00 05 01 38 12 34 56 78 00 87".ToHexBytes();
  40. JT808Header jT808Header = JT808Serializer.Deserialize<JT808Header>(headerBytes);
  41. Assert.Equal(135, jT808Header.MsgNum);
  42. Assert.Equal("13812345678", jT808Header.TerminalPhoneNo);
  43. Assert.False(jT808Header.MessageBodyProperty.IsPackage);
  44. Assert.Equal(JT808MsgId.终端鉴权.ToValue(), jT808Header.MsgId);
  45. Assert.Equal(5, jT808Header.MessageBodyProperty.DataLength);
  46. }
  47. [Fact]
  48. public void Test5()
  49. {
  50. JT808Header jT808HeaderProperty = new JT808Header();
  51. jT808HeaderProperty.TerminalPhoneNo = "13812345678";
  52. jT808HeaderProperty.MessageBodyProperty=new JT808HeaderMessageBodyProperty(5);
  53. jT808HeaderProperty.MsgNum = 135;
  54. jT808HeaderProperty.MsgId = JT808MsgId.终端鉴权.ToUInt16Value();
  55. //"01 02 00 05 01 38 12 34 56 78 00 87"
  56. var hex = JT808Serializer.Serialize(jT808HeaderProperty).ToHexString();
  57. Assert.Equal("010200050138123456780087", hex);
  58. }
  59. [Fact]
  60. public void Test5_2()
  61. {
  62. //01 02 00 05 01 38 12 34 56 78 00 87
  63. byte[] headerBytes = "01 02 00 05 01 38 12 34 56 78 00 87".ToHexBytes();
  64. JT808Header jT808Header = JT808Serializer.Deserialize<JT808Header>(headerBytes);
  65. Assert.Equal(135, jT808Header.MsgNum);
  66. Assert.Equal("13812345678", jT808Header.TerminalPhoneNo);
  67. Assert.False(jT808Header.MessageBodyProperty.IsPackage);
  68. Assert.Equal(JT808MsgId.终端鉴权.ToValue(), jT808Header.MsgId);
  69. Assert.Equal(5, jT808Header.MessageBodyProperty.DataLength);
  70. }
  71. [Fact]
  72. public void JT808Header_2019Test1()
  73. {
  74. JT808Header jT808HeaderProperty = new JT808Header
  75. {
  76. TerminalPhoneNo = "13812345678"
  77. };
  78. JT808HeaderMessageBodyProperty jT808HeaderMessageBodyProperty = new JT808HeaderMessageBodyProperty();
  79. jT808HeaderMessageBodyProperty.DataLength = 255;
  80. jT808HeaderMessageBodyProperty.IsPackage = true;
  81. jT808HeaderMessageBodyProperty.Encrypt = JT808EncryptMethod.RSA;
  82. jT808HeaderMessageBodyProperty.VersionFlag = true;
  83. jT808HeaderProperty.MessageBodyProperty = jT808HeaderMessageBodyProperty;
  84. jT808HeaderProperty.MsgNum = 135;
  85. jT808HeaderProperty.MsgId = JT808MsgId.终端鉴权.ToUInt16Value();
  86. jT808HeaderProperty.ProtocolVersion = 2;
  87. var hex = JT808Serializer.Serialize(jT808HeaderProperty).ToHexString();
  88. Assert.Equal("010264FF0200000000013812345678008700000000", hex);
  89. }
  90. [Fact]
  91. public void JT808Header_2019Test2()
  92. {
  93. byte[] headerBytes = "010264FF0200000000013812345678008700000000".ToHexBytes();
  94. JT808Header jT808Header = JT808Serializer.Deserialize<JT808Header>(headerBytes);
  95. Assert.Equal(135, jT808Header.MsgNum);
  96. Assert.Equal(2, jT808Header.ProtocolVersion);
  97. Assert.Equal("13812345678", jT808Header.TerminalPhoneNo);
  98. Assert.True(jT808Header.MessageBodyProperty.IsPackage);
  99. Assert.True(jT808Header.MessageBodyProperty.VersionFlag);
  100. Assert.Equal(JT808MsgId.终端鉴权.ToValue(), jT808Header.MsgId);
  101. Assert.Equal(255, jT808Header.MessageBodyProperty.DataLength);
  102. }
  103. }
  104. }