您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

357 行
20 KiB

  1. using System;
  2. using Xunit;
  3. using JT808.Protocol.Extensions;
  4. using JT1078.Protocol.Enums;
  5. using System.Linq;
  6. using System.IO;
  7. namespace JT1078.Protocol.Test
  8. {
  9. public class JT1078SerializerTest
  10. {
  11. [Fact]
  12. public void SerializeTest1()
  13. {
  14. JT1078Package jT1078Package = new JT1078Package();
  15. jT1078Package.Label1 = new JT1078Label1(0x81);
  16. jT1078Package.Label2 = new JT1078Label2(0xE2);
  17. jT1078Package.SN = 0x1088;
  18. jT1078Package.SIM = "11234567810";
  19. jT1078Package.LogicChannelNumber = 0x01;
  20. jT1078Package.Label3 = new JT1078Label3(0x10);
  21. jT1078Package.Timestamp = 1562085870204;
  22. jT1078Package.LastIFrameInterval = 0x0280;
  23. jT1078Package.LastFrameInterval = 0x0028;
  24. jT1078Package.Bodies = "00 00 00 01 61 E1 A2 BF 00 98 CF C0 EE 1E 17 28 34 07 78 8E 39 A4 03 FD DB D1 D5 46 BF B0 63 01 3F 59 AC 34 C9 7A 02 1A B9 6A 28 A4 2C 08".ToHexBytes();
  25. var hex=JT1078Serializer.Serialize(jT1078Package).ToHexString();
  26. Assert.Equal("30 31 63 64 81 E2 10 88 01 12 34 56 78 10 01 10 00 00 01 6B B3 92 CA 7C 02 80 00 28 00 2E 00 00 00 01 61 E1 A2 BF 00 98 CF C0 EE 1E 17 28 34 07 78 8E 39 A4 03 FD DB D1 D5 46 BF B0 63 01 3F 59 AC 34 C9 7A 02 1A B9 6A 28 A4 2C 08".Replace(" ",""), hex);
  27. }
  28. [Fact]
  29. public void SerializeTest2()
  30. {
  31. JT1078Package jT1078Package = new JT1078Package();
  32. jT1078Package.Label1 = new JT1078Label1(0x81);
  33. jT1078Package.Label2 = new JT1078Label2(0x88);
  34. jT1078Package.SN = 0x10BA;
  35. jT1078Package.SIM = "11234567810";
  36. jT1078Package.LogicChannelNumber = 0x01;
  37. jT1078Package.Label3 = new JT1078Label3(0x30);
  38. jT1078Package.Timestamp = 1562085871501;
  39. jT1078Package.Bodies = "FE 6D 3B BE EF 3E 4E 7D FF B7 6D 5F F5 6F C7 BE 6F DF 77 DC DF 8E ED 3B 6F E3 3F B5 73 DF 6F EC F8 FD FF FE BE EF DB F7 6F DB BF FD D7 BF 6F FB 6F 6E F7 FF 5F DF BF D3 F7 8F FD FA B2 EF 3E F7 5F FF F1 5D 3F BF FB 26 BE ED C7 B7 7D 3F AE E3 FB EF 1D 3B AE 93 FE EF 7F DF 77 93 FE B6 65 3B BD FA E6 8E ED F8 F7 EF DB B1 FF C6 6F 7C FF EF FD DB 71 7F FF 6E EE 3E".ToHexBytes();
  40. var hex = JT1078Serializer.Serialize(jT1078Package).ToHexString();
  41. Assert.Equal("30 31 63 64 81 88 10 BA 01 12 34 56 78 10 01 30 00 00 01 6B B3 92 CF 8D 00 78 FE 6D 3B BE EF 3E 4E 7D FF B7 6D 5F F5 6F C7 BE 6F DF 77 DC DF 8E ED 3B 6F E3 3F B5 73 DF 6F EC F8 FD FF FE BE EF DB F7 6F DB BF FD D7 BF 6F FB 6F 6E F7 FF 5F DF BF D3 F7 8F FD FA B2 EF 3E F7 5F FF F1 5D 3F BF FB 26 BE ED C7 B7 7D 3F AE E3 FB EF 1D 3B AE 93 FE EF 7F DF 77 93 FE B6 65 3B BD FA E6 8E ED F8 F7 EF DB B1 FF C6 6F 7C FF EF FD DB 71 7F FF 6E EE 3E".Replace(" ", ""), hex);
  42. }
  43. [Fact]
  44. public void SerializeTest3()
  45. {
  46. JT1078Package jT1078Package = new JT1078Package();
  47. jT1078Package.Label1 = new JT1078Label1(0x81);
  48. jT1078Package.Label2 = new JT1078Label2(0xE2);
  49. jT1078Package.SN = 0x10BB;
  50. jT1078Package.SIM = "11234567810";
  51. jT1078Package.LogicChannelNumber = 0x01;
  52. jT1078Package.Label3 = new JT1078Label3(0x10);
  53. jT1078Package.LastIFrameInterval = 0x0730;
  54. jT1078Package.LastFrameInterval = 0x0028;
  55. jT1078Package.Timestamp = 1562085871404;
  56. jT1078Package.Bodies = "00 00 00 01 61 E4 62 BF 00 32 BE 88 82 3B 94 6F 41 EE 7C 28 7D 82 A5 9C 29 49 A8 4C BF".ToHexBytes();
  57. var hex = JT1078Serializer.Serialize(jT1078Package).ToHexString();
  58. Assert.Equal("30 31 63 64 81 E2 10 BB 01 12 34 56 78 10 01 10 00 00 01 6B B3 92 CF 2C 07 30 00 28 00 1D 00 00 00 01 61 E4 62 BF 00 32 BE 88 82 3B 94 6F 41 EE 7C 28 7D 82 A5 9C 29 49 A8 4C BF".Replace(" ", ""), hex);
  59. }
  60. [Fact]
  61. public void SerializeTest4()
  62. {
  63. JT1078Package jT1078Package = new JT1078Package();
  64. jT1078Package.Label1 = new JT1078Label1(0x81);
  65. jT1078Package.Label2 = new JT1078Label2(0x88);
  66. jT1078Package.SN = 0x1135;
  67. jT1078Package.SIM = "11234567810";
  68. jT1078Package.LogicChannelNumber = 0x01;
  69. jT1078Package.Label3 = new JT1078Label3(0x30);
  70. jT1078Package.Timestamp = 1562085874181;
  71. jT1078Package.Bodies = "B7 6D FF EF 7D FB A9 9D FE A9 1F 37 77 F3 37 BE EF FB F7 FB FB BE 7D DF B7 FD FB 76 AF DE 77 65 C7 EF E3 FB BE FF DB 4E FF DB B7 63 FF EE EF D8 BE 1D 37 B7 7D E7 7D F3 C6 F7 FD F4 BE 1F F7 B7 55 FF 76 FC FE CE 7B FF B7 7D 3F F5 FF FE 76 6C DF FE 53 DB CF 6D FB BF FD DE B1 EF 3E 77 D3 3F 6E 9A BF BF FF DB F7 FD DB 7F 63 FF 6E EC F8 EE 1F FB FD 7F FB 7D 7C DB".ToHexBytes();
  72. var hex = JT1078Serializer.Serialize(jT1078Package).ToHexString();
  73. Assert.Equal("30 31 63 64 81 88 11 35 01 12 34 56 78 10 01 30 00 00 01 6B B3 92 DA 05 00 78 B7 6D FF EF 7D FB A9 9D FE A9 1F 37 77 F3 37 BE EF FB F7 FB FB BE 7D DF B7 FD FB 76 AF DE 77 65 C7 EF E3 FB BE FF DB 4E FF DB B7 63 FF EE EF D8 BE 1D 37 B7 7D E7 7D F3 C6 F7 FD F4 BE 1F F7 B7 55 FF 76 FC FE CE 7B FF B7 7D 3F F5 FF FE 76 6C DF FE 53 DB CF 6D FB BF FD DE B1 EF 3E 77 D3 3F 6E 9A BF BF FF DB F7 FD DB 7F 63 FF 6E EC F8 EE 1F FB FD 7F FB 7D 7C DB".Replace(" ", ""), hex);
  74. }
  75. [Fact]
  76. public void SerializeTest5()
  77. {
  78. JT1078Package jT1078Package = new JT1078Package();
  79. jT1078Package.Label1 = new JT1078Label1(0x81);
  80. jT1078Package.Label2 = new JT1078Label2(0x88);
  81. jT1078Package.SN = 0x1135;
  82. jT1078Package.SIM = "11234567810";
  83. jT1078Package.LogicChannelNumber = 0x01;
  84. jT1078Package.Label3 = new JT1078Label3(0x30);
  85. jT1078Package.Timestamp = 1562085874181;
  86. jT1078Package.Bodies = Enumerable.Range(0, 900).Select(s => (byte)(s + 1)).ToArray();
  87. var hex = JT1078Serializer.Serialize(jT1078Package).ToHexString();
  88. }
  89. [Fact]
  90. public void DeserializeTest1()
  91. {
  92. //30 31 63 64
  93. //81
  94. //E2
  95. //10 88
  96. //01 12 34 56 78 10
  97. //01
  98. //10
  99. //00 00 01 6B B3 92 CA 7C
  100. //02 80
  101. //00 28
  102. //00 2E
  103. //00 00 00 01 61 E1 A2 BF
  104. //00 98 CF C0 EE 1E 17 28
  105. //34 07 78 8E 39 A4 03 FD
  106. //DB D1 D5 46 BF B0 63 01
  107. //3F 59 AC 34 C9 7A 02 1A
  108. //B9 6A 28 A4 2C 08
  109. var bytes = "30 31 63 64 81 E2 10 88 01 12 34 56 78 10 01 10 00 00 01 6B B3 92 CA 7C 02 80 00 28 00 2E 00 00 00 01 61 E1 A2 BF 00 98 CF C0 EE 1E 17 28 34 07 78 8E 39 A4 03 FD DB D1 D5 46 BF B0 63 01 3F 59 AC 34 C9 7A 02 1A B9 6A 28 A4 2C 08".ToHexBytes();
  110. JT1078Package package = JT1078Serializer.Deserialize(bytes);
  111. Assert.Equal(0x81, package.Label1.ToByte());
  112. Assert.Equal(0xE2, package.Label2.ToByte());
  113. Assert.Equal(0x1088, package.SN);
  114. Assert.Equal("011234567810", package.SIM);
  115. Assert.Equal(0x01, package.LogicChannelNumber);
  116. Assert.Equal(0x10, package.Label3.ToByte());
  117. Assert.Equal((ulong)1562085870204, package.Timestamp);
  118. Assert.Equal(0x0280, package.LastIFrameInterval);
  119. Assert.Equal(0x0028, package.LastFrameInterval);
  120. Assert.Equal(0x002E, package.DataBodyLength);
  121. Assert.Equal("00 00 00 01 61 E1 A2 BF 00 98 CF C0 EE 1E 17 28 34 07 78 8E 39 A4 03 FD DB D1 D5 46 BF B0 63 01 3F 59 AC 34 C9 7A 02 1A B9 6A 28 A4 2C 08".ToHexBytes(), package.Bodies);
  122. }
  123. [Fact]
  124. public void DeserializeTest2()
  125. {
  126. //30 31 63 64
  127. //81
  128. //88
  129. //10 BA
  130. //01 12 34 56 78 10
  131. //01
  132. //30
  133. //00 00 01 6B B3 92 CF 8D
  134. //00 78
  135. //FE 6D 3B BE EF 3E 4E 7D
  136. //FF B7 6D 5F F5 6F C7 BE
  137. //6F DF 77 DC DF 8E ED 3B
  138. //6F E3 3F B5 73 DF 6F EC
  139. //F8 FD FF FE BE EF DB F7
  140. //6F DB BF FD D7 BF 6F FB
  141. //6F 6E F7 FF 5F DF BF D3
  142. //F7 8F FD FA B2 EF 3E F7
  143. //5F FF F1 5D 3F BF FB 26
  144. //BE ED C7 B7 7D 3F AE E3
  145. //FB EF 1D 3B AE 93 FE EF
  146. //7F DF 77 93 FE B6 65 3B
  147. //BD FA E6 8E ED F8 F7 EF
  148. //DB B1 FF C6 6F 7C FF EF
  149. //FD DB 71 7F FF 6E EE 3E
  150. var bytes = "30 31 63 64 81 88 10 BA 01 12 34 56 78 10 01 30 00 00 01 6B B3 92 CF 8D 00 78 FE 6D 3B BE EF 3E 4E 7D FF B7 6D 5F F5 6F C7 BE 6F DF 77 DC DF 8E ED 3B 6F E3 3F B5 73 DF 6F EC F8 FD FF FE BE EF DB F7 6F DB BF FD D7 BF 6F FB 6F 6E F7 FF 5F DF BF D3 F7 8F FD FA B2 EF 3E F7 5F FF F1 5D 3F BF FB 26 BE ED C7 B7 7D 3F AE E3 FB EF 1D 3B AE 93 FE EF 7F DF 77 93 FE B6 65 3B BD FA E6 8E ED F8 F7 EF DB B1 FF C6 6F 7C FF EF FD DB 71 7F FF 6E EE 3E".ToHexBytes();
  151. JT1078Package package = JT1078Serializer.Deserialize(bytes);
  152. Assert.Equal(0x81, package.Label1.ToByte());
  153. Assert.Equal(0x88, package.Label2.ToByte());
  154. Assert.Equal(0x10BA, package.SN);
  155. Assert.Equal("011234567810", package.SIM);
  156. Assert.Equal(0x01, package.LogicChannelNumber);
  157. Assert.Equal(0x30, package.Label3.ToByte());
  158. Assert.Equal((ulong)1562085871501, package.Timestamp);
  159. Assert.Equal(0x0078, package.DataBodyLength);
  160. Assert.Equal("FE 6D 3B BE EF 3E 4E 7D FF B7 6D 5F F5 6F C7 BE 6F DF 77 DC DF 8E ED 3B 6F E3 3F B5 73 DF 6F EC F8 FD FF FE BE EF DB F7 6F DB BF FD D7 BF 6F FB 6F 6E F7 FF 5F DF BF D3 F7 8F FD FA B2 EF 3E F7 5F FF F1 5D 3F BF FB 26 BE ED C7 B7 7D 3F AE E3 FB EF 1D 3B AE 93 FE EF 7F DF 77 93 FE B6 65 3B BD FA E6 8E ED F8 F7 EF DB B1 FF C6 6F 7C FF EF FD DB 71 7F FF 6E EE 3E".ToHexBytes(), package.Bodies.ToArray());
  161. }
  162. [Fact]
  163. public void DeserializeTest3()
  164. {
  165. //30 31 63 64
  166. //81
  167. //E2
  168. //10 BB
  169. //01 12 34 56 78 10
  170. //01
  171. //10
  172. //00 00 01 6B B3 92 CF 2C
  173. //07 30
  174. //00 28
  175. //00 1D
  176. //00 00 00 01 61 E4 62 BF
  177. //00 32 BE 88 82 3B 94 6F
  178. //41 EE 7C 28 7D 82 A5 9C
  179. //29 49 A8 4C BF
  180. var bytes = "30 31 63 64 81 E2 10 BB 01 12 34 56 78 10 01 10 00 00 01 6B B3 92 CF 2C 07 30 00 28 00 1D 00 00 00 01 61 E4 62 BF 00 32 BE 88 82 3B 94 6F 41 EE 7C 28 7D 82 A5 9C 29 49 A8 4C BF".ToHexBytes();
  181. JT1078Package package = JT1078Serializer.Deserialize(bytes);
  182. Assert.Equal(0x81, package.Label1.ToByte());
  183. Assert.Equal(0xE2, package.Label2.ToByte());
  184. Assert.Equal(0x10BB, package.SN);
  185. Assert.Equal("011234567810", package.SIM);
  186. Assert.Equal(0x01, package.LogicChannelNumber);
  187. Assert.Equal(0x10, package.Label3.ToByte());
  188. Assert.Equal((ulong)1562085871404, package.Timestamp);
  189. Assert.Equal(0x0730, package.LastIFrameInterval);
  190. Assert.Equal(0x0028, package.LastFrameInterval);
  191. Assert.Equal(0x001D, package.DataBodyLength);
  192. Assert.Equal("00 00 00 01 61 E4 62 BF 00 32 BE 88 82 3B 94 6F 41 EE 7C 28 7D 82 A5 9C 29 49 A8 4C BF".ToHexBytes(), package.Bodies.ToArray());
  193. }
  194. [Fact]
  195. public void DeserializeTest4()
  196. {
  197. //30 31 63 64
  198. //81
  199. //88
  200. //11 35
  201. //01 12 34 56 78 10
  202. //01
  203. //30
  204. //00 00 01 6B B3 92 DA 05
  205. //00 78
  206. //B7 6D FF EF 7D FB A9 9D
  207. //FE A9 1F 37 77 F3 37 BE
  208. //EF FB F7 FB FB BE 7D DF
  209. //B7 FD FB 76 AF DE 77 65
  210. //C7 EF E3 FB BE FF DB 4E
  211. //FF DB B7 63 FF EE EF D8
  212. //BE 1D 37 B7 7D E7 7D F3
  213. //C6 F7 FD F4 BE 1F F7 B7
  214. //55 FF 76 FC FE CE 7B FF
  215. //B7 7D 3F F5 FF FE 76 6C
  216. //DF FE 53 DB CF 6D FB BF
  217. //FD DE B1 EF 3E 77 D3 3F
  218. //6E 9A BF BF FF DB F7 FD
  219. //DB 7F 63 FF 6E EC F8 EE
  220. //1F FB FD 7F FB 7D 7C DB
  221. var bytes = "30 31 63 64 81 88 11 35 01 12 34 56 78 10 01 30 00 00 01 6B B3 92 DA 05 00 78 B7 6D FF EF 7D FB A9 9D FE A9 1F 37 77 F3 37 BE EF FB F7 FB FB BE 7D DF B7 FD FB 76 AF DE 77 65 C7 EF E3 FB BE FF DB 4E FF DB B7 63 FF EE EF D8 BE 1D 37 B7 7D E7 7D F3 C6 F7 FD F4 BE 1F F7 B7 55 FF 76 FC FE CE 7B FF B7 7D 3F F5 FF FE 76 6C DF FE 53 DB CF 6D FB BF FD DE B1 EF 3E 77 D3 3F 6E 9A BF BF FF DB F7 FD DB 7F 63 FF 6E EC F8 EE 1F FB FD 7F FB 7D 7C DB".ToHexBytes();
  222. JT1078Package package = JT1078Serializer.Deserialize(bytes);
  223. Assert.Equal(0x81, package.Label1.ToByte());
  224. Assert.Equal(0x88, package.Label2.ToByte());
  225. Assert.Equal(0x1135, package.SN);
  226. Assert.Equal("011234567810", package.SIM);
  227. Assert.Equal(0x01, package.LogicChannelNumber);
  228. Assert.Equal(0x30, package.Label3.ToByte());
  229. Assert.Equal((ulong)1562085874181, package.Timestamp);
  230. Assert.Equal(0x0078, package.DataBodyLength);
  231. Assert.Equal("B7 6D FF EF 7D FB A9 9D FE A9 1F 37 77 F3 37 BE EF FB F7 FB FB BE 7D DF B7 FD FB 76 AF DE 77 65 C7 EF E3 FB BE FF DB 4E FF DB B7 63 FF EE EF D8 BE 1D 37 B7 7D E7 7D F3 C6 F7 FD F4 BE 1F F7 B7 55 FF 76 FC FE CE 7B FF B7 7D 3F F5 FF FE 76 6C DF FE 53 DB CF 6D FB BF FD DE B1 EF 3E 77 D3 3F 6E 9A BF BF FF DB F7 FD DB 7F 63 FF 6E EC F8 EE 1F FB FD 7F FB 7D 7C DB".ToHexBytes(), package.Bodies.ToArray());
  232. }
  233. [Fact]
  234. public void DeserializeTest6()
  235. {
  236. var bytes = "3031636481E20492001901305037031000000174922CB80F00A00050033D0000000161E042BF50E2C3B950968B6CB9B80E2CB3F68DBFA51A9C9DC3C0B85C5215C0A4DE5C1D48B72D760400BF88D5EA46D276C8682573C459CD33E8D98C4C77A96F366D636454DC62AFCD4491A670744247B727859C14ECE91C03013D37CFDDBE93CA8C5651863E47DE5231BE914029A04A9E1318D983DB115800C01FC961DBA05DA3D2CEF66761CA5BF7CFA1815429DDE0AF2CF527C251C2E190407D313A651895FAFA7A1AC2E4ABEFDD7E26F1B37D9C643A1AF302ACD77A8A74A34747BC333C89A2E02AD902137708251313D77A649A751EA81E48A341C44D895694F37D2BEC8B9B50A46B9C2CB9AE62DCE10BF7692D1151A3B55CA3310AC494CF095D6258A71F875ED8D9C54694B29C217F48E0C511ECB52951F6DF1B9CF9FB6CFCAEFF515645D66278A964D4CCF64D9999F82D639A77F3B79E91C1B9A1F0A156B712D52E9F810FA6B6885A788EB7C1EA6272660F108C5A3D0C5893BA0021B1A080EC158D77BE40DC92A2EBEF96469FC8B258F3EDF843859DD83861D1B27E72019DC5FBF97D2489554092C2DEEAECD15FE6C2455D8A8CDEB590707914C2D01DA003C84C9F04D45569655A05648C465EBE1E04B6B330F6DFE7DE4F0975ED884275D8D8931405E88DC9D54084F25DED012E175F61E5EDB56F308D36F046C127CC96B0CCACA3B96018A6354D15A6520901A4EBC699AA9DC5E45FF17C35FED9A14B4BA84457534FB636EE998990C7B9E6A44638FB51615A09CCB922B6DA47C5E3A45EA794E76514DFA76CBA2DEB5F947CB71557AFA34F6D9DD37F747FB4D37AD14EFBF5070831DDC59C78713DF1CA8A394636158E761A12D6B763645D220D356B8B48462AD7A0112C4A59BEF52AD70BB69907CDDB350ED2D389DB0B003ECEF40FACBB4A3F29409C51AAEAB4A21AA3C70DFEDD116B7534E5A938974B431BC46956D376D73C6A7A0B0E9FF6A4A006097D680C93E5BFA75B3D4D533EA83F93A2503A2F813D3DA037498B4F31270845B3807A61AF0E722EA9ABBF2C0A5DCEA564DE3F58CC1273A8E52CB675B26700AD24F2115823F2BF918279321628FDBAD3B8C0FA0C50536DF88022F6C3956EE0ACCBF31B602AEB0D1933A677EB40125C89FE2A61A05BA7DE296DAE20EEF74790B1405B9766FBF1A0FFFD03BA07D943B504FA0C568DA0".ToHexBytes();
  237. JT1078Package package = JT1078Serializer.Deserialize(bytes);
  238. Assert.Equal(0b10000001, package.Label1.ToByte());
  239. Assert.Equal(0b11100010, package.Label2.ToByte());
  240. Assert.Equal(1170u, package.SN);
  241. Assert.Equal("001901305037", package.SIM);
  242. Assert.Equal(0x03, package.LogicChannelNumber);
  243. Assert.Equal(0b00010000, package.Label3.ToByte());
  244. Assert.Equal((ulong)1600180238351, package.Timestamp);
  245. Assert.Equal(829u, package.DataBodyLength);
  246. }
  247. [Fact]
  248. public void Json1()
  249. {
  250. var bytes = "30 31 63 64 81 88 11 35 01 12 34 56 78 10 01 30 00 00 01 6B B3 92 DA 05 00 78 B7 6D FF EF 7D FB A9 9D FE A9 1F 37 77 F3 37 BE EF FB F7 FB FB BE 7D DF B7 FD FB 76 AF DE 77 65 C7 EF E3 FB BE FF DB 4E FF DB B7 63 FF EE EF D8 BE 1D 37 B7 7D E7 7D F3 C6 F7 FD F4 BE 1F F7 B7 55 FF 76 FC FE CE 7B FF B7 7D 3F F5 FF FE 76 6C DF FE 53 DB CF 6D FB BF FD DE B1 EF 3E 77 D3 3F 6E 9A BF BF FF DB F7 FD DB 7F 63 FF 6E EC F8 EE 1F FB FD 7F FB 7D 7C DB".ToHexBytes();
  251. string json = JT1078Serializer.Analyze(bytes);
  252. }
  253. [Fact]
  254. public void Json2()
  255. {
  256. var bytes = "30 31 63 64 81 E2 10 88 01 12 34 56 78 10 01 10 00 00 01 6B B3 92 CA 7C 02 80 00 28 00 2E 00 00 00 01 61 E1 A2 BF 00 98 CF C0 EE 1E 17 28 34 07 78 8E 39 A4 03 FD DB D1 D5 46 BF B0 63 01 3F 59 AC 34 C9 7A 02 1A B9 6A 28 A4 2C 08".ToHexBytes();
  257. string json = JT1078Serializer.Analyze(bytes);
  258. }
  259. [Fact]
  260. public void Label1Test1()
  261. {
  262. Assert.Equal(0x81, JT1078Package.DefaultLabel1.ToByte());
  263. }
  264. [Fact]
  265. public void Label1Test2()
  266. {
  267. Assert.Equal(223, new JT1078Label1(3, 0, 1, 15).ToByte());
  268. JT1078Label1 label1 = new JT1078Label1(223);
  269. Assert.Equal(3, label1.V);
  270. Assert.Equal(0, label1.P);
  271. Assert.Equal(1, label1.X);
  272. Assert.Equal(15, label1.CC);
  273. }
  274. [Fact]
  275. public void Label1Test3()
  276. {
  277. Assert.Equal(127, new JT1078Label1(127).ToByte());
  278. Assert.Equal(89, new JT1078Label1(89).ToByte());
  279. Assert.Equal(254, new JT1078Label1(254).ToByte());
  280. Assert.Equal(2, new JT1078Label1(2).ToByte());
  281. Assert.Equal(10, new JT1078Label1(10).ToByte());
  282. Assert.Equal(9, new JT1078Label1(9).ToByte());
  283. }
  284. [Fact]
  285. public void Label2Test1()
  286. {
  287. JT1078Label2 label2 = new JT1078Label2(254);
  288. Assert.Equal(254, label2.ToByte());
  289. Assert.Equal(1, label2.M);
  290. Assert.Equal(126, (byte)label2.PT);
  291. }
  292. [Fact]
  293. public void Label2Test2()
  294. {
  295. JT1078Label2 label2 = new JT1078Label2(0, 28);
  296. Assert.Equal(28, label2.ToByte());
  297. Assert.Equal(0, label2.M);
  298. Assert.Equal(JT1078AVType.AMR, label2.PT);
  299. }
  300. [Fact]
  301. public void Label3Test1()
  302. {
  303. JT1078Label3 label3 = new JT1078Label3(34);
  304. Assert.Equal(34, label3.ToByte());
  305. Assert.Equal(JT1078DataType.视频B帧, label3.DataType);
  306. Assert.Equal(JT1078SubPackageType.分包处理时的最后一个包, label3.SubpackageType);
  307. }
  308. [Fact]
  309. public void Label3Test2()
  310. {
  311. JT1078Label3 label3 = new JT1078Label3(JT1078DataType.视频B帧, JT1078SubPackageType.分包处理时的最后一个包);
  312. Assert.Equal(34, label3.ToByte());
  313. Assert.Equal(JT1078DataType.视频B帧, label3.DataType);
  314. Assert.Equal(JT1078SubPackageType.分包处理时的最后一个包, label3.SubpackageType);
  315. }
  316. [Fact]
  317. public void MergeTest()
  318. {
  319. var lines = File.ReadAllLines(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "h264","JT1078_1.txt"));
  320. JT1078Package merge=null;
  321. int mergeBodyLength=0;
  322. foreach (var line in lines)
  323. {
  324. var data = line.Split(',');
  325. var bytes = data[6].ToHexBytes();
  326. JT1078Package package = JT1078Serializer.Deserialize(bytes);
  327. mergeBodyLength += package.DataBodyLength;
  328. merge = JT1078Serializer.Merge(package);
  329. }
  330. Assert.NotNull(merge);
  331. Assert.Equal(mergeBodyLength, merge.Bodies.Length);
  332. Assert.Equal(JT1078SubPackageType.分包处理时的第一个包, merge.Label3.SubpackageType);
  333. }
  334. }
  335. }