25'ten fazla konu seçemezsiniz Konular bir harf veya rakamla başlamalı, kısa çizgiler ('-') içerebilir ve en fazla 35 karakter uzunluğunda olabilir.

163 satır
6.9 KiB

  1. using JT808.Protocol.Extensions;
  2. using JT808.Protocol.MessageBody;
  3. using System.Collections.Generic;
  4. using Xunit;
  5. namespace JT808.Protocol.Test.MessageBody
  6. {
  7. public class JT808_0x0104Test
  8. {
  9. JT808Serializer JT808Serializer = new JT808Serializer();
  10. [Fact]
  11. public void Test1()
  12. {
  13. JT808Package jT808Package = new JT808Package
  14. {
  15. Header = new JT808Header
  16. {
  17. MsgId = Enums.JT808MsgId._0x0104.ToUInt16Value(),
  18. ManualMsgNum = 10,
  19. TerminalPhoneNo = "123456789",
  20. },
  21. Bodies = new JT808_0x0104
  22. {
  23. MsgNum = 20,
  24. AnswerParamsCount = 1,
  25. ParamList = new List<JT808_0x8103_BodyBase> {
  26. new JT808_0x8103_0x0001() {
  27. ParamId=0x0001,
  28. ParamLength=4,
  29. ParamValue=10
  30. }
  31. }
  32. }
  33. };
  34. var hex = JT808Serializer.Serialize(jT808Package).ToHexString();
  35. Assert.Equal("7E0104000C000123456789000A00140100000001040000000A907E", hex);
  36. }
  37. [Fact]
  38. public void Test1_1()
  39. {
  40. byte[] bytes = "7E0104000C000123456789000A00140100000001040000000A907E".ToHexBytes();
  41. JT808Package jT808_0X8104 = JT808Serializer.Deserialize<JT808Package>(bytes);
  42. Assert.Equal(Enums.JT808MsgId._0x0104.ToUInt16Value(), jT808_0X8104.Header.MsgId);
  43. Assert.Equal(10, jT808_0X8104.Header.MsgNum);
  44. Assert.Equal("123456789", jT808_0X8104.Header.TerminalPhoneNo);
  45. JT808_0x0104 JT808Bodies = (JT808_0x0104)jT808_0X8104.Bodies;
  46. Assert.Equal(20, JT808Bodies.MsgNum);
  47. Assert.Equal(1, JT808Bodies.AnswerParamsCount);
  48. foreach (var item in JT808Bodies.ParamList)
  49. {
  50. Assert.Equal(0x0001u, ((JT808_0x8103_0x0001)item).ParamId);
  51. Assert.Equal(4, ((JT808_0x8103_0x0001)item).ParamLength);
  52. Assert.Equal(10u, ((JT808_0x8103_0x0001)item).ParamValue);
  53. }
  54. }
  55. [Fact]
  56. public void Test2()
  57. {
  58. JT808Package jT808Package = new JT808Package
  59. {
  60. Header = new JT808Header
  61. {
  62. MsgId = Enums.JT808MsgId._0x0104.ToUInt16Value(),
  63. ManualMsgNum = 10,
  64. TerminalPhoneNo = "123456789",
  65. },
  66. Bodies = new JT808_0x0104
  67. {
  68. MsgNum = 20,
  69. AnswerParamsCount = 2,
  70. ParamList = new List<JT808_0x8103_BodyBase> {
  71. new JT808_0x8103_0x0001() {
  72. ParamId=0x0001,
  73. ParamLength=4,
  74. ParamValue=10
  75. },
  76. new JT808_0x8103_0x0013(){
  77. ParamId=0x0013,
  78. ParamValue="www.baidu.com"
  79. }
  80. }
  81. }
  82. };
  83. var hex0x0104 = JT808Serializer.Serialize(new JT808_0x0104
  84. {
  85. MsgNum = 20,
  86. AnswerParamsCount = 2,
  87. ParamList = new List<JT808_0x8103_BodyBase> {
  88. new JT808_0x8103_0x0001() {
  89. ParamId=0x0001,
  90. ParamLength=4,
  91. ParamValue=10
  92. },
  93. new JT808_0x8103_0x0013(){
  94. ParamId=0x0013,
  95. ParamValue="www.baidu.com"
  96. }
  97. }
  98. }).ToHexString();
  99. var hex = JT808Serializer.Serialize(jT808Package).ToHexString();
  100. //7E0104001E000123456789000A00140200000001040000000A000000130F7777772E62616964752E636F6DF07E
  101. //7E0104001E000123456789000A00140200000001040000000A000000130D7777772E62616964752E636F6DF27E
  102. Assert.Equal("7E0104001E000123456789000A00140200000001040000000A000000130D7777772E62616964752E636F6DF27E", hex);
  103. }
  104. [Fact]
  105. public void Test3()
  106. {
  107. byte[] bodys = "00140200000001040000000A000000130D7777772E62616964752E636F6D".ToHexBytes();
  108. string json = JT808Serializer.Analyze<JT808_0x0104>(bodys);
  109. }
  110. [Fact]
  111. public void Test2_1()
  112. {
  113. byte[] bytes = "7E0104001E000123456789000A00140200000001040000000A000000130D7777772E62616964752E636F6DF27E".ToHexBytes();
  114. JT808Package jT808_0X8104 = JT808Serializer.Deserialize<JT808Package>(bytes);
  115. Assert.Equal(Enums.JT808MsgId._0x0104.ToUInt16Value(), jT808_0X8104.Header.MsgId);
  116. Assert.Equal(10, jT808_0X8104.Header.MsgNum);
  117. Assert.Equal("123456789", jT808_0X8104.Header.TerminalPhoneNo);
  118. JT808_0x0104 JT808Bodies = (JT808_0x0104)jT808_0X8104.Bodies;
  119. Assert.Equal(20, JT808Bodies.MsgNum);
  120. Assert.Equal(2, JT808Bodies.AnswerParamsCount);
  121. foreach (var item in JT808Bodies.ParamList)
  122. {
  123. switch (item.ParamId)
  124. {
  125. case 0x0001:
  126. Assert.Equal(0x0001u, ((JT808_0x8103_0x0001)item).ParamId);
  127. Assert.Equal(4, ((JT808_0x8103_0x0001)item).ParamLength);
  128. Assert.Equal(10u, ((JT808_0x8103_0x0001)item).ParamValue);
  129. break;
  130. case 0x0013:
  131. Assert.Equal(0x0013u, ((JT808_0x8103_0x0013)item).ParamId);
  132. Assert.Equal("www.baidu.com", ((JT808_0x8103_0x0013)item).ParamValue);
  133. break;
  134. default:
  135. break;
  136. }
  137. }
  138. }
  139. [Fact]
  140. public void Test2_2()
  141. {
  142. byte[] bytes = "7E010400C604052458039503D800020100000077BE09010101002D1400000064000500141400000320001F020101002D0F00000064000500191900000840001F030101002D0F00000064000500191900000840001F040101002D0F00000064000500191900000840001F050101002D0F00000064010500191900000840001F060101002D0F00000064000500191900000840001F070101002D0F000000640103001919000004CE001F080101002D0F00000064000500191900000840001F090101000F0F000000C8010500191900000400001F127E".ToHexBytes();
  143. JT808Package jT808_0X8104 = JT808Serializer.Deserialize<JT808Package>(bytes);
  144. Assert.Equal(Enums.JT808MsgId._0x0104.ToUInt16Value(), jT808_0X8104.Header.MsgId);
  145. Assert.Equal(0x03d8, jT808_0X8104.Header.MsgNum);
  146. Assert.Equal("40524580395", jT808_0X8104.Header.TerminalPhoneNo);
  147. JT808_0x0104 JT808Bodies = (JT808_0x0104)jT808_0X8104.Bodies;
  148. Assert.Equal(0x0002, JT808Bodies.MsgNum);
  149. Assert.Equal(1, JT808Bodies.AnswerParamsCount);
  150. Assert.Null(JT808Bodies.ParamList);
  151. }
  152. }
  153. }