You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

115 regels
6.0 KiB

  1. using JT809.Protocol.Extensions.JT1078.Enums;
  2. using JT809.Protocol.Extensions.JT1078.MessageBody;
  3. using Microsoft.Extensions.DependencyInjection;
  4. using System;
  5. using System.Linq;
  6. using System.Collections.Generic;
  7. using Xunit;
  8. using Newtonsoft.Json;
  9. namespace JT809.Protocol.Extensions.JT1078.Test
  10. {
  11. public class JT809_JT1078_0x9900Test
  12. {
  13. JT809Serializer JT809Serializer;
  14. public JT809_JT1078_0x9900Test()
  15. {
  16. IServiceCollection serviceDescriptors1 = new ServiceCollection();
  17. serviceDescriptors1
  18. .AddJT809Configure()
  19. .AddJT1078Configure();
  20. var ServiceProvider1 = serviceDescriptors1.BuildServiceProvider();
  21. var defaultConfig = ServiceProvider1.GetRequiredService<IJT809Config>();
  22. JT809Serializer = defaultConfig.GetSerializer();
  23. Newtonsoft.Json.JsonConvert.DefaultSettings = new Func<JsonSerializerSettings>(() =>
  24. {
  25. //日期类型默认格式化处理
  26. return new Newtonsoft.Json.JsonSerializerSettings
  27. {
  28. DateFormatHandling = Newtonsoft.Json.DateFormatHandling.MicrosoftDateFormat,
  29. DateFormatString = "yyyy-MM-dd HH:mm:ss"
  30. };
  31. });
  32. }
  33. [Fact]
  34. public void Test1()
  35. {
  36. JT809_JT1078_0x9900 jT809_JT1078_0x9900 = new JT809_JT1078_0x9900()
  37. {
  38. VehicleNo="粤B12345",
  39. VehicleColor= Protocol.Enums.JT809VehicleColorType.黄色,
  40. SubBusinessType= (ushort)JT809_JT1078_SubBusinessType.主动上传音视频资源目录信息应答消息,
  41. SubBodies= new JT809_JT1078_0x9900_0x9901() {
  42. Result=1,
  43. ItemNumber=2
  44. }
  45. };
  46. var hex = JT809Serializer.Serialize(jT809_JT1078_0x9900).ToHexString();
  47. Assert.Equal("D4C142313233343500000000000000000000000000029901000000020102", hex);
  48. }
  49. [Fact]
  50. public void Test2()
  51. {
  52. var jT809_JT1078_0x9900 = JT809Serializer.Deserialize<JT809_JT1078_0x9900>("D4C142313233343500000000000000000000000000029901000000020102".ToHexBytes());
  53. Assert.Equal("粤B12345", jT809_JT1078_0x9900.VehicleNo);
  54. Assert.Equal(Protocol.Enums.JT809VehicleColorType.黄色, jT809_JT1078_0x9900.VehicleColor);
  55. Assert.Equal((ushort)JT809_JT1078_SubBusinessType.主动上传音视频资源目录信息应答消息, jT809_JT1078_0x9900.SubBusinessType);
  56. var jT809_JT1078_0x9900_0x9901 = jT809_JT1078_0x9900.SubBodies as JT809_JT1078_0x9900_0x9901;
  57. Assert.Equal(1, jT809_JT1078_0x9900_0x9901.Result);
  58. Assert.Equal(2, jT809_JT1078_0x9900_0x9901.ItemNumber);
  59. }
  60. [Fact]
  61. public void Test3()
  62. {
  63. var GnssDatas = Enumerable.Range(0, 36).Select(m => (byte)m).ToArray();
  64. var AuthorizeCodes = Enumerable.Range(0, 64).Select(m => (byte)m).ToArray();
  65. JT809_JT1078_0x9900 jT809_JT1078_0x9900 = new JT809_JT1078_0x9900()
  66. {
  67. VehicleNo = "粤B12345",
  68. VehicleColor = Protocol.Enums.JT809VehicleColorType.黄色,
  69. SubBusinessType = (ushort)JT809_JT1078_SubBusinessType.查询音视频资源目录请求消息,
  70. SubBodies = new JT809_JT1078_0x9900_0x9902() {
  71. ChannelId = 1,
  72. AlarmType = 2,
  73. AVItemType = 3,
  74. MemType = 4,
  75. StartTime = Convert.ToDateTime("2017-07-15 10:10:10"),
  76. EndTime = Convert.ToDateTime("2017-07-16 10:10:10"),
  77. StreamType =5,
  78. AuthorizeCode= AuthorizeCodes,
  79. GnssData= GnssDatas
  80. }
  81. };
  82. var hex = JT809Serializer.Serialize(jT809_JT1078_0x9900).ToHexString();
  83. Assert.Equal("D4C1423132333435000000000000000000000000000299020000008001000000005969798200000000596ACB020000000000000002030504000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F20212223", hex);
  84. }
  85. [Fact]
  86. public void Test4()
  87. {
  88. var GnssDatas = Enumerable.Range(0, 36).Select(m => (byte)m).ToArray();
  89. var AuthorizeCodes = Enumerable.Range(0, 64).Select(m => (byte)m).ToArray();
  90. var jT809_JT1078_0x9900 = JT809Serializer.Deserialize<JT809_JT1078_0x9900>("D4C1423132333435000000000000000000000000000299020000008001000000005969798200000000596ACB020000000000000002030504000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F20212223".ToHexBytes());
  91. Assert.Equal("粤B12345", jT809_JT1078_0x9900.VehicleNo);
  92. Assert.Equal(Protocol.Enums.JT809VehicleColorType.黄色, jT809_JT1078_0x9900.VehicleColor);
  93. Assert.Equal((ushort)JT809_JT1078_SubBusinessType.查询音视频资源目录请求消息, jT809_JT1078_0x9900.SubBusinessType);
  94. var jT809_JT1078_0x9900_0x9902 = jT809_JT1078_0x9900.SubBodies as JT809_JT1078_0x9900_0x9902;
  95. Assert.Equal(1, jT809_JT1078_0x9900_0x9902.ChannelId);
  96. Assert.Equal(2u, jT809_JT1078_0x9900_0x9902.AlarmType);
  97. Assert.Equal(3, jT809_JT1078_0x9900_0x9902.AVItemType);
  98. Assert.Equal(4, jT809_JT1078_0x9900_0x9902.MemType);
  99. Assert.Equal(Convert.ToDateTime("2017-07-15 10:10:10"), jT809_JT1078_0x9900_0x9902.StartTime);
  100. Assert.Equal(Convert.ToDateTime("2017-07-16 10:10:10"), jT809_JT1078_0x9900_0x9902.EndTime);
  101. Assert.Equal(5, jT809_JT1078_0x9900_0x9902.StreamType);
  102. Assert.Equal(AuthorizeCodes, jT809_JT1078_0x9900_0x9902.AuthorizeCode);
  103. Assert.Equal(GnssDatas, jT809_JT1078_0x9900_0x9902.GnssData);
  104. }
  105. }
  106. }