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.

314 linhas
16 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. using JT808.Protocol.Enums;
  8. namespace JT808.Protocol.Test.MessageBody
  9. {
  10. public class JT808_0x8606Test
  11. {
  12. JT808Serializer JT808Serializer = new JT808Serializer();
  13. [Fact]
  14. public void Test1()
  15. {
  16. JT808_0x8606 jT808_0X8606 = new JT808_0x8606
  17. {
  18. RouteId = 9999,
  19. RouteProperty = 1268,
  20. StartTime = DateTime.Parse("2018-11-20 00:00:12"),
  21. EndTime = DateTime.Parse("2018-11-21 00:00:12"),
  22. InflectionPointItems = new List<JT808InflectionPointProperty>()
  23. };
  24. jT808_0X8606.InflectionPointItems.Add(new JT808InflectionPointProperty()
  25. {
  26. InflectionPointId = 1000,
  27. InflectionPointLat = 123456789,
  28. InflectionPointLng = 123456788,
  29. SectionDrivingUnderThreshold = 123,
  30. SectionHighestSpeed = 69,
  31. SectionId = 1287,
  32. SectionLongDrivingThreshold = 50,
  33. SectionOverspeedDuration = 23,
  34. SectionProperty = 89,
  35. SectionWidth = 56
  36. });
  37. jT808_0X8606.InflectionPointItems.Add(new JT808InflectionPointProperty()
  38. {
  39. InflectionPointId = 1001,
  40. InflectionPointLat = 123456780,
  41. InflectionPointLng = 123456781,
  42. SectionDrivingUnderThreshold = 124,
  43. SectionHighestSpeed = 42,
  44. SectionId = 12007,
  45. SectionLongDrivingThreshold = 58,
  46. SectionOverspeedDuration = 26,
  47. SectionProperty = 50,
  48. SectionWidth = 75
  49. });
  50. var hex = JT808Serializer.Serialize(jT808_0X8606).ToHexString();
  51. //00 00 27 0F
  52. //04 F4
  53. //00 02
  54. //00 00 03 E8
  55. //00 00 05 07
  56. //07 5B CD 15
  57. //07 5B CD 14
  58. //38
  59. //59 //‭0101 1001‬
  60. //00 32
  61. //00 7B
  62. //00 00 03 E9
  63. //00 00 2E E7
  64. //07 5B CD 0C
  65. //07 5B CD 0D
  66. //4B
  67. //32 //‭‭0011 0010‬
  68. //00 2A
  69. //1A
  70. Assert.Equal("0000270F04F40002000003E800000507075BCD15075BCD1438590032007B000003E900002EE7075BCD0C075BCD0D4B32002A1A", hex);
  71. }
  72. [Fact]
  73. public void Test2()
  74. {
  75. byte[] bytes = "0000270F04F40002000003E800000507075BCD15075BCD1438590032007B000003E900002EE7075BCD0C075BCD0D4B32002A1A".ToHexBytes();
  76. JT808_0x8606 jT808_0X8606 = JT808Serializer.Deserialize<JT808_0x8606>(bytes);
  77. Assert.Equal((uint)9999, jT808_0X8606.RouteId);
  78. Assert.Equal((uint)1268, jT808_0X8606.RouteProperty);
  79. //Assert.Equal(DateTime.Parse("2018-11-20 00:00:12"), jT808_0X8606.StartTime);
  80. //Assert.Equal(DateTime.Parse("2018-11-21 00:00:12"), jT808_0X8606.EndTime);
  81. Assert.Null(jT808_0X8606.StartTime);
  82. Assert.Null(jT808_0X8606.EndTime);
  83. Assert.Equal(2, jT808_0X8606.InflectionPointItems.Count);
  84. Assert.Equal((uint)1000, jT808_0X8606.InflectionPointItems[0].InflectionPointId);
  85. Assert.Equal((uint)123456789, jT808_0X8606.InflectionPointItems[0].InflectionPointLat);
  86. Assert.Equal((uint)123456788, jT808_0X8606.InflectionPointItems[0].InflectionPointLng);
  87. Assert.Equal((ushort)123, jT808_0X8606.InflectionPointItems[0].SectionDrivingUnderThreshold);
  88. //Assert.Equal((ushort)69, jT808_0X8606.InflectionPointItems[0].SectionHighestSpeed);
  89. Assert.Null(jT808_0X8606.InflectionPointItems[0].SectionHighestSpeed);
  90. Assert.Equal((uint)1287, jT808_0X8606.InflectionPointItems[0].SectionId);
  91. Assert.Equal((ushort)50, jT808_0X8606.InflectionPointItems[0].SectionLongDrivingThreshold);
  92. //Assert.Equal((byte)23, jT808_0X8606.InflectionPointItems[0].SectionOverspeedDuration);
  93. Assert.Equal(89, jT808_0X8606.InflectionPointItems[0].SectionProperty);
  94. Assert.Equal(56, jT808_0X8606.InflectionPointItems[0].SectionWidth);
  95. Assert.Equal((uint)1001, jT808_0X8606.InflectionPointItems[1].InflectionPointId);
  96. Assert.Equal((uint)123456780, jT808_0X8606.InflectionPointItems[1].InflectionPointLat);
  97. Assert.Equal((uint)123456781, jT808_0X8606.InflectionPointItems[1].InflectionPointLng);
  98. //Assert.Equal((ushort)124, jT808_0X8606.InflectionPointItems[1].SectionDrivingUnderThreshold);
  99. Assert.Null(jT808_0X8606.InflectionPointItems[1].SectionDrivingUnderThreshold);
  100. Assert.Equal((ushort)42, jT808_0X8606.InflectionPointItems[1].SectionHighestSpeed);
  101. Assert.Equal((uint)12007, jT808_0X8606.InflectionPointItems[1].SectionId);
  102. //Assert.Equal((ushort)58, jT808_0X8606.InflectionPointItems[1].SectionLongDrivingThreshold);
  103. Assert.Null(jT808_0X8606.InflectionPointItems[1].SectionLongDrivingThreshold);
  104. Assert.Equal((byte)26, jT808_0X8606.InflectionPointItems[1].SectionOverspeedDuration);
  105. Assert.Equal(50, jT808_0X8606.InflectionPointItems[1].SectionProperty);
  106. Assert.Equal(75, jT808_0X8606.InflectionPointItems[1].SectionWidth);
  107. }
  108. [Fact]
  109. public void Test3()
  110. {
  111. JT808_0x8606 jT808_0X8606 = new JT808_0x8606
  112. {
  113. RouteId = 9999,
  114. RouteProperty = 51,
  115. StartTime = DateTime.Parse("2018-11-20 00:00:12"),
  116. EndTime = DateTime.Parse("2018-11-21 00:00:12"),
  117. InflectionPointItems = new List<JT808InflectionPointProperty>()
  118. };
  119. jT808_0X8606.InflectionPointItems.Add(new JT808InflectionPointProperty()
  120. {
  121. InflectionPointId = 1000,
  122. InflectionPointLat = 123456789,
  123. InflectionPointLng = 123456788,
  124. SectionDrivingUnderThreshold = 123,
  125. SectionHighestSpeed = 69,
  126. SectionId = 1287,
  127. SectionLongDrivingThreshold = 50,
  128. SectionOverspeedDuration = 23,
  129. SectionProperty = 3,
  130. SectionWidth = 56
  131. });
  132. jT808_0X8606.InflectionPointItems.Add(new JT808InflectionPointProperty()
  133. {
  134. InflectionPointId = 1001,
  135. InflectionPointLat = 123456780,
  136. InflectionPointLng = 123456781,
  137. SectionDrivingUnderThreshold = 124,
  138. SectionHighestSpeed = 42,
  139. SectionId = 12007,
  140. SectionLongDrivingThreshold = 58,
  141. SectionOverspeedDuration = 26,
  142. SectionProperty = 3,
  143. SectionWidth = 75
  144. });
  145. var hex = JT808Serializer.Serialize(jT808_0X8606).ToHexString();
  146. //00 00 27 0F
  147. //04 F4
  148. //00 02
  149. //00 00 03 E8
  150. //00 00 05 07
  151. //07 5B CD 15
  152. //07 5B CD 14
  153. //38
  154. //59 //‭0000000000110011
  155. //00 32
  156. //00 7B
  157. //00 00 03 E9
  158. //00 00 2E E7
  159. //07 5B CD 0C
  160. //07 5B CD 0D
  161. //4B
  162. //32 //‭‭0000000000000011
  163. //00 2A
  164. //1A
  165. Assert.Equal("0000270F00331811200000121811210000120002000003E800000507075BCD15075BCD1438030032007B004517000003E900002EE7075BCD0C075BCD0D4B03003A007C002A1A", hex);
  166. }
  167. [Fact]
  168. public void Test4()
  169. {
  170. byte[] bytes = "0000270F00331811200000121811210000120002000003E800000507075BCD15075BCD1438030032007B004517000003E900002EE7075BCD0C075BCD0D4B03003A007C002A1A".ToHexBytes();
  171. JT808_0x8606 jT808_0X8606 = JT808Serializer.Deserialize<JT808_0x8606>(bytes);
  172. Assert.Equal((uint)9999, jT808_0X8606.RouteId);
  173. Assert.Equal((uint)51, jT808_0X8606.RouteProperty);
  174. Assert.Equal(DateTime.Parse("2018-11-20 00:00:12"), jT808_0X8606.StartTime);
  175. Assert.Equal(DateTime.Parse("2018-11-21 00:00:12"), jT808_0X8606.EndTime);
  176. Assert.Equal(2, jT808_0X8606.InflectionPointItems.Count);
  177. Assert.Equal((uint)1000, jT808_0X8606.InflectionPointItems[0].InflectionPointId);
  178. Assert.Equal((uint)123456789, jT808_0X8606.InflectionPointItems[0].InflectionPointLat);
  179. Assert.Equal((uint)123456788, jT808_0X8606.InflectionPointItems[0].InflectionPointLng);
  180. Assert.Equal((ushort)123, jT808_0X8606.InflectionPointItems[0].SectionDrivingUnderThreshold);
  181. Assert.Equal((ushort)69, jT808_0X8606.InflectionPointItems[0].SectionHighestSpeed);
  182. Assert.Equal((uint)1287, jT808_0X8606.InflectionPointItems[0].SectionId);
  183. Assert.Equal((ushort)50, jT808_0X8606.InflectionPointItems[0].SectionLongDrivingThreshold);
  184. Assert.Equal((byte)23, jT808_0X8606.InflectionPointItems[0].SectionOverspeedDuration);
  185. Assert.Equal(3, jT808_0X8606.InflectionPointItems[0].SectionProperty);
  186. Assert.Equal(56, jT808_0X8606.InflectionPointItems[0].SectionWidth);
  187. Assert.Equal((uint)1001, jT808_0X8606.InflectionPointItems[1].InflectionPointId);
  188. Assert.Equal((uint)123456780, jT808_0X8606.InflectionPointItems[1].InflectionPointLat);
  189. Assert.Equal((uint)123456781, jT808_0X8606.InflectionPointItems[1].InflectionPointLng);
  190. Assert.Equal((ushort)124, jT808_0X8606.InflectionPointItems[1].SectionDrivingUnderThreshold);
  191. Assert.Equal((ushort)42, jT808_0X8606.InflectionPointItems[1].SectionHighestSpeed);
  192. Assert.Equal((uint)12007, jT808_0X8606.InflectionPointItems[1].SectionId);
  193. Assert.Equal((ushort)58, jT808_0X8606.InflectionPointItems[1].SectionLongDrivingThreshold);
  194. Assert.Equal((byte)26, jT808_0X8606.InflectionPointItems[1].SectionOverspeedDuration);
  195. Assert.Equal(3, jT808_0X8606.InflectionPointItems[1].SectionProperty);
  196. Assert.Equal(75, jT808_0X8606.InflectionPointItems[1].SectionWidth);
  197. }
  198. [Fact]
  199. public void Test5()
  200. {
  201. byte[] bytes = "0000270F00331811200000121811210000120002000003E800000507075BCD15075BCD1438030032007B004517000003E900002EE7075BCD0C075BCD0D4B03003A007C002A1A".ToHexBytes();
  202. string json = JT808Serializer.Analyze<JT808_0x8606>(bytes);
  203. }
  204. [Fact]
  205. public void Test5_2019()
  206. {
  207. JT808_0x8606 jT808_0X8606 = new JT808_0x8606
  208. {
  209. RouteId = 9999,
  210. RouteProperty = 51,
  211. StartTime = DateTime.Parse("2020-01-04 00:00:12"),
  212. EndTime = DateTime.Parse("2020-01-04 00:00:12"),
  213. InflectionPointItems = new List<JT808InflectionPointProperty>()
  214. };
  215. jT808_0X8606.InflectionPointItems.Add(new JT808InflectionPointProperty()
  216. {
  217. InflectionPointId = 1000,
  218. InflectionPointLat = 123456789,
  219. InflectionPointLng = 123456788,
  220. SectionDrivingUnderThreshold = 123,
  221. SectionHighestSpeed = 69,
  222. SectionId = 1287,
  223. SectionLongDrivingThreshold = 50,
  224. SectionOverspeedDuration = 23,
  225. SectionProperty = 3,
  226. SectionWidth = 56,
  227. NightMaximumSpeed = 80
  228. });
  229. jT808_0X8606.InflectionPointItems.Add(new JT808InflectionPointProperty()
  230. {
  231. InflectionPointId = 1001,
  232. InflectionPointLat = 123456780,
  233. InflectionPointLng = 123456781,
  234. SectionDrivingUnderThreshold = 124,
  235. SectionHighestSpeed = 42,
  236. SectionId = 12007,
  237. SectionLongDrivingThreshold = 58,
  238. SectionOverspeedDuration = 26,
  239. SectionProperty = 3,
  240. SectionWidth = 75,
  241. NightMaximumSpeed = 66
  242. });
  243. jT808_0X8606.RouteName = "koike518";
  244. var hex = JT808Serializer.Serialize(jT808_0X8606, JT808Version.JTT2019).ToHexString();
  245. Assert.Equal("0000270F00332001040000122001040000120002000003E800000507075BCD15075BCD1438030032007B0045170050000003E900002EE7075BCD0C075BCD0D4B03003A007C002A1A004200086B6F696B65353138", hex);
  246. }
  247. [Fact]
  248. public void Test6_2019()
  249. {
  250. byte[] bytes = "0000270F00332001040000122001040000120002000003E800000507075BCD15075BCD1438030032007B0045170050000003E900002EE7075BCD0C075BCD0D4B03003A007C002A1A004200086B6F696B65353138".ToHexBytes();
  251. JT808_0x8606 jT808_0X8606 = JT808Serializer.Deserialize<JT808_0x8606>(bytes, JT808Version.JTT2019);
  252. Assert.Equal((uint)9999, jT808_0X8606.RouteId);
  253. Assert.Equal((uint)51, jT808_0X8606.RouteProperty);
  254. Assert.Equal(DateTime.Parse("2020-01-04 00:00:12"), jT808_0X8606.StartTime);
  255. Assert.Equal(DateTime.Parse("2020-01-04 00:00:12"), jT808_0X8606.EndTime);
  256. Assert.Equal(2, jT808_0X8606.InflectionPointItems.Count);
  257. Assert.Equal((uint)1000, jT808_0X8606.InflectionPointItems[0].InflectionPointId);
  258. Assert.Equal((uint)123456789, jT808_0X8606.InflectionPointItems[0].InflectionPointLat);
  259. Assert.Equal((uint)123456788, jT808_0X8606.InflectionPointItems[0].InflectionPointLng);
  260. Assert.Equal((ushort)123, jT808_0X8606.InflectionPointItems[0].SectionDrivingUnderThreshold);
  261. Assert.Equal((ushort)69, jT808_0X8606.InflectionPointItems[0].SectionHighestSpeed);
  262. Assert.Equal((uint)1287, jT808_0X8606.InflectionPointItems[0].SectionId);
  263. Assert.Equal((ushort)50, jT808_0X8606.InflectionPointItems[0].SectionLongDrivingThreshold);
  264. Assert.Equal((byte)23, jT808_0X8606.InflectionPointItems[0].SectionOverspeedDuration);
  265. Assert.Equal(3, jT808_0X8606.InflectionPointItems[0].SectionProperty);
  266. Assert.Equal(56, jT808_0X8606.InflectionPointItems[0].SectionWidth);
  267. Assert.Equal(80, jT808_0X8606.InflectionPointItems[0].NightMaximumSpeed.Value);
  268. Assert.Equal((uint)1001, jT808_0X8606.InflectionPointItems[1].InflectionPointId);
  269. Assert.Equal((uint)123456780, jT808_0X8606.InflectionPointItems[1].InflectionPointLat);
  270. Assert.Equal((uint)123456781, jT808_0X8606.InflectionPointItems[1].InflectionPointLng);
  271. Assert.Equal((ushort)124, jT808_0X8606.InflectionPointItems[1].SectionDrivingUnderThreshold);
  272. Assert.Equal((ushort)42, jT808_0X8606.InflectionPointItems[1].SectionHighestSpeed);
  273. Assert.Equal((uint)12007, jT808_0X8606.InflectionPointItems[1].SectionId);
  274. Assert.Equal((ushort)58, jT808_0X8606.InflectionPointItems[1].SectionLongDrivingThreshold);
  275. Assert.Equal((byte)26, jT808_0X8606.InflectionPointItems[1].SectionOverspeedDuration);
  276. Assert.Equal(3, jT808_0X8606.InflectionPointItems[1].SectionProperty);
  277. Assert.Equal(75, jT808_0X8606.InflectionPointItems[1].SectionWidth);
  278. Assert.Equal(66, jT808_0X8606.InflectionPointItems[1].NightMaximumSpeed.Value);
  279. Assert.Equal("koike518", jT808_0X8606.RouteName);
  280. }
  281. [Fact]
  282. public void Test6_2019_1()
  283. {
  284. byte[] bytes = "0000270F00332001040000122001040000120002000003E800000507075BCD15075BCD1438030032007B0045170050000003E900002EE7075BCD0C075BCD0D4B03003A007C002A1A004200086B6F696B65353138".ToHexBytes();
  285. string json = JT808Serializer.Analyze<JT808_0x8606>(bytes, JT808Version.JTT2019);
  286. }
  287. }
  288. }