Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

214 rader
10 KiB

  1. using JT808.Protocol.Extensions;
  2. using JT808.Protocol.MessageBody;
  3. using System;
  4. using System.Collections.Generic;
  5. using Xunit;
  6. using JT808.Protocol.Metadata;
  7. namespace JT808.Protocol.Test.MessageBody
  8. {
  9. public class JT808_0x8606Test
  10. {
  11. JT808Serializer JT808Serializer = new JT808Serializer();
  12. [Fact]
  13. public void Test1()
  14. {
  15. JT808_0x8606 jT808_0X8606 = new JT808_0x8606
  16. {
  17. RouteId = 9999,
  18. RouteProperty = 1268,
  19. StartTime = DateTime.Parse("2018-11-20 00:00:12"),
  20. EndTime = DateTime.Parse("2018-11-21 00:00:12"),
  21. InflectionPointItems = new List<JT808InflectionPointProperty>()
  22. };
  23. jT808_0X8606.InflectionPointItems.Add(new JT808InflectionPointProperty()
  24. {
  25. InflectionPointId = 1000,
  26. InflectionPointLat = 123456789,
  27. InflectionPointLng = 123456788,
  28. SectionDrivingUnderThreshold = 123,
  29. SectionHighestSpeed = 69,
  30. SectionId = 1287,
  31. SectionLongDrivingThreshold = 50,
  32. SectionOverspeedDuration = 23,
  33. SectionProperty = 89,
  34. SectionWidth = 56
  35. });
  36. jT808_0X8606.InflectionPointItems.Add(new JT808InflectionPointProperty()
  37. {
  38. InflectionPointId = 1001,
  39. InflectionPointLat = 123456780,
  40. InflectionPointLng = 123456781,
  41. SectionDrivingUnderThreshold = 124,
  42. SectionHighestSpeed = 42,
  43. SectionId = 12007,
  44. SectionLongDrivingThreshold = 58,
  45. SectionOverspeedDuration = 26,
  46. SectionProperty = 50,
  47. SectionWidth = 75
  48. });
  49. var hex = JT808Serializer.Serialize(jT808_0X8606).ToHexString();
  50. //00 00 27 0F
  51. //04 F4
  52. //00 02
  53. //00 00 03 E8
  54. //00 00 05 07
  55. //07 5B CD 15
  56. //07 5B CD 14
  57. //38
  58. //59 //‭0101 1001‬
  59. //00 32
  60. //00 7B
  61. //00 00 03 E9
  62. //00 00 2E E7
  63. //07 5B CD 0C
  64. //07 5B CD 0D
  65. //4B
  66. //32 //‭‭0011 0010‬
  67. //00 2A
  68. //1A
  69. Assert.Equal("0000270F04F40002000003E800000507075BCD15075BCD1438590032007B000003E900002EE7075BCD0C075BCD0D4B32002A1A", hex);
  70. }
  71. [Fact]
  72. public void Test2()
  73. {
  74. byte[] bytes = "0000270F04F40002000003E800000507075BCD15075BCD1438590032007B000003E900002EE7075BCD0C075BCD0D4B32002A1A".ToHexBytes();
  75. JT808_0x8606 jT808_0X8606 = JT808Serializer.Deserialize<JT808_0x8606>(bytes);
  76. Assert.Equal((uint)9999, jT808_0X8606.RouteId);
  77. Assert.Equal((uint)1268, jT808_0X8606.RouteProperty);
  78. //Assert.Equal(DateTime.Parse("2018-11-20 00:00:12"), jT808_0X8606.StartTime);
  79. //Assert.Equal(DateTime.Parse("2018-11-21 00:00:12"), jT808_0X8606.EndTime);
  80. Assert.Null(jT808_0X8606.StartTime);
  81. Assert.Null(jT808_0X8606.EndTime);
  82. Assert.Equal(2, jT808_0X8606.InflectionPointItems.Count);
  83. Assert.Equal((uint)1000, jT808_0X8606.InflectionPointItems[0].InflectionPointId);
  84. Assert.Equal((uint)123456789, jT808_0X8606.InflectionPointItems[0].InflectionPointLat);
  85. Assert.Equal((uint)123456788, jT808_0X8606.InflectionPointItems[0].InflectionPointLng);
  86. Assert.Equal((ushort)123, jT808_0X8606.InflectionPointItems[0].SectionDrivingUnderThreshold);
  87. //Assert.Equal((ushort)69, jT808_0X8606.InflectionPointItems[0].SectionHighestSpeed);
  88. Assert.Null(jT808_0X8606.InflectionPointItems[0].SectionHighestSpeed);
  89. Assert.Equal((uint)1287, jT808_0X8606.InflectionPointItems[0].SectionId);
  90. Assert.Equal((ushort)50, jT808_0X8606.InflectionPointItems[0].SectionLongDrivingThreshold);
  91. //Assert.Equal((byte)23, jT808_0X8606.InflectionPointItems[0].SectionOverspeedDuration);
  92. Assert.Equal(89, jT808_0X8606.InflectionPointItems[0].SectionProperty);
  93. Assert.Equal(56, jT808_0X8606.InflectionPointItems[0].SectionWidth);
  94. Assert.Equal((uint)1001, jT808_0X8606.InflectionPointItems[1].InflectionPointId);
  95. Assert.Equal((uint)123456780, jT808_0X8606.InflectionPointItems[1].InflectionPointLat);
  96. Assert.Equal((uint)123456781, jT808_0X8606.InflectionPointItems[1].InflectionPointLng);
  97. //Assert.Equal((ushort)124, jT808_0X8606.InflectionPointItems[1].SectionDrivingUnderThreshold);
  98. Assert.Null(jT808_0X8606.InflectionPointItems[1].SectionDrivingUnderThreshold);
  99. Assert.Equal((ushort)42, jT808_0X8606.InflectionPointItems[1].SectionHighestSpeed);
  100. Assert.Equal((uint)12007, jT808_0X8606.InflectionPointItems[1].SectionId);
  101. //Assert.Equal((ushort)58, jT808_0X8606.InflectionPointItems[1].SectionLongDrivingThreshold);
  102. Assert.Null(jT808_0X8606.InflectionPointItems[1].SectionLongDrivingThreshold);
  103. Assert.Equal((byte)26, jT808_0X8606.InflectionPointItems[1].SectionOverspeedDuration);
  104. Assert.Equal(50, jT808_0X8606.InflectionPointItems[1].SectionProperty);
  105. Assert.Equal(75, jT808_0X8606.InflectionPointItems[1].SectionWidth);
  106. }
  107. [Fact]
  108. public void Test3()
  109. {
  110. JT808_0x8606 jT808_0X8606 = new JT808_0x8606
  111. {
  112. RouteId = 9999,
  113. RouteProperty = 51,
  114. StartTime = DateTime.Parse("2018-11-20 00:00:12"),
  115. EndTime = DateTime.Parse("2018-11-21 00:00:12"),
  116. InflectionPointItems = new List<JT808InflectionPointProperty>()
  117. };
  118. jT808_0X8606.InflectionPointItems.Add(new JT808InflectionPointProperty()
  119. {
  120. InflectionPointId = 1000,
  121. InflectionPointLat = 123456789,
  122. InflectionPointLng = 123456788,
  123. SectionDrivingUnderThreshold = 123,
  124. SectionHighestSpeed = 69,
  125. SectionId = 1287,
  126. SectionLongDrivingThreshold = 50,
  127. SectionOverspeedDuration = 23,
  128. SectionProperty = 3,
  129. SectionWidth = 56
  130. });
  131. jT808_0X8606.InflectionPointItems.Add(new JT808InflectionPointProperty()
  132. {
  133. InflectionPointId = 1001,
  134. InflectionPointLat = 123456780,
  135. InflectionPointLng = 123456781,
  136. SectionDrivingUnderThreshold = 124,
  137. SectionHighestSpeed = 42,
  138. SectionId = 12007,
  139. SectionLongDrivingThreshold = 58,
  140. SectionOverspeedDuration = 26,
  141. SectionProperty = 3,
  142. SectionWidth = 75
  143. });
  144. var hex = JT808Serializer.Serialize(jT808_0X8606).ToHexString();
  145. //00 00 27 0F
  146. //04 F4
  147. //00 02
  148. //00 00 03 E8
  149. //00 00 05 07
  150. //07 5B CD 15
  151. //07 5B CD 14
  152. //38
  153. //59 //‭0000000000110011
  154. //00 32
  155. //00 7B
  156. //00 00 03 E9
  157. //00 00 2E E7
  158. //07 5B CD 0C
  159. //07 5B CD 0D
  160. //4B
  161. //32 //‭‭0000000000000011
  162. //00 2A
  163. //1A
  164. Assert.Equal("0000270F00331811200000121811210000120002000003E800000507075BCD15075BCD1438030032007B004517000003E900002EE7075BCD0C075BCD0D4B03003A007C002A1A", hex);
  165. }
  166. [Fact]
  167. public void Test4()
  168. {
  169. byte[] bytes = "0000270F00331811200000121811210000120002000003E800000507075BCD15075BCD1438030032007B004517000003E900002EE7075BCD0C075BCD0D4B03003A007C002A1A".ToHexBytes();
  170. JT808_0x8606 jT808_0X8606 = JT808Serializer.Deserialize<JT808_0x8606>(bytes);
  171. Assert.Equal((uint)9999, jT808_0X8606.RouteId);
  172. Assert.Equal((uint)51, jT808_0X8606.RouteProperty);
  173. Assert.Equal(DateTime.Parse("2018-11-20 00:00:12"), jT808_0X8606.StartTime);
  174. Assert.Equal(DateTime.Parse("2018-11-21 00:00:12"), jT808_0X8606.EndTime);
  175. Assert.Equal(2, jT808_0X8606.InflectionPointItems.Count);
  176. Assert.Equal((uint)1000, jT808_0X8606.InflectionPointItems[0].InflectionPointId);
  177. Assert.Equal((uint)123456789, jT808_0X8606.InflectionPointItems[0].InflectionPointLat);
  178. Assert.Equal((uint)123456788, jT808_0X8606.InflectionPointItems[0].InflectionPointLng);
  179. Assert.Equal((ushort)123, jT808_0X8606.InflectionPointItems[0].SectionDrivingUnderThreshold);
  180. Assert.Equal((ushort)69, jT808_0X8606.InflectionPointItems[0].SectionHighestSpeed);
  181. Assert.Equal((uint)1287, jT808_0X8606.InflectionPointItems[0].SectionId);
  182. Assert.Equal((ushort)50, jT808_0X8606.InflectionPointItems[0].SectionLongDrivingThreshold);
  183. Assert.Equal((byte)23, jT808_0X8606.InflectionPointItems[0].SectionOverspeedDuration);
  184. Assert.Equal(3, jT808_0X8606.InflectionPointItems[0].SectionProperty);
  185. Assert.Equal(56, jT808_0X8606.InflectionPointItems[0].SectionWidth);
  186. Assert.Equal((uint)1001, jT808_0X8606.InflectionPointItems[1].InflectionPointId);
  187. Assert.Equal((uint)123456780, jT808_0X8606.InflectionPointItems[1].InflectionPointLat);
  188. Assert.Equal((uint)123456781, jT808_0X8606.InflectionPointItems[1].InflectionPointLng);
  189. Assert.Equal((ushort)124, jT808_0X8606.InflectionPointItems[1].SectionDrivingUnderThreshold);
  190. Assert.Equal((ushort)42, jT808_0X8606.InflectionPointItems[1].SectionHighestSpeed);
  191. Assert.Equal((uint)12007, jT808_0X8606.InflectionPointItems[1].SectionId);
  192. Assert.Equal((ushort)58, jT808_0X8606.InflectionPointItems[1].SectionLongDrivingThreshold);
  193. Assert.Equal((byte)26, jT808_0X8606.InflectionPointItems[1].SectionOverspeedDuration);
  194. Assert.Equal(3, jT808_0X8606.InflectionPointItems[1].SectionProperty);
  195. Assert.Equal(75, jT808_0X8606.InflectionPointItems[1].SectionWidth);
  196. }
  197. }
  198. }