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

104 行
5.2 KiB

  1. using JT808.Protocol.Extensions.YueBiao.MessageBody;
  2. using JT808.Protocol.MessageBody;
  3. using Microsoft.Extensions.DependencyInjection;
  4. using System;
  5. using System.Collections.Generic;
  6. using Xunit;
  7. namespace JT808.Protocol.Extensions.YueBiao.Test
  8. {
  9. public class JT808_0x0200_0x64_Test
  10. {
  11. JT808Serializer JT808Serializer;
  12. public JT808_0x0200_0x64_Test()
  13. {
  14. ServiceCollection serviceDescriptors = new ServiceCollection();
  15. serviceDescriptors.AddJT808Configure()
  16. .AddYueBiaoConfigure();
  17. IJT808Config jT808Config = serviceDescriptors.BuildServiceProvider().GetRequiredService<IJT808Config>();
  18. JT808Serializer = new JT808Serializer(jT808Config);
  19. }
  20. [Fact]
  21. public void Serializer()
  22. {
  23. JT808_0x0200 jT808UploadLocationRequest = new JT808_0x0200
  24. {
  25. AlarmFlag = 1,
  26. Altitude = 40,
  27. GPSTime = DateTime.Parse("2018-07-15 10:10:10"),
  28. Lat = 12222222,
  29. Lng = 132444444,
  30. Speed = 60,
  31. Direction = 0,
  32. StatusFlag = 2,
  33. CustomLocationAttachData = new Dictionary<byte, JT808_0x0200_CustomBodyBase>()
  34. };
  35. jT808UploadLocationRequest.CustomLocationAttachData.Add(JT808_YueBiao_Constants.JT808_0X0200_0x64, new JT808_0x0200_0x64
  36. {
  37. AlarmId = 1,
  38. AlarmIdentification = new Metadata.AlarmIdentificationProperty
  39. {
  40. AttachCount = 2,
  41. SN = 3,
  42. TerminalId = "4444444",
  43. Time = Convert.ToDateTime("2019-12-10 18:31:00"),
  44. Retain1 = 5,
  45. Retain2 = 6
  46. },
  47. AlarmLevel = 5,
  48. AlarmOrEventType = 6,
  49. AlarmTime = Convert.ToDateTime("2019-12-11 18:31:00"),
  50. Altitude = 7,
  51. CarOrPedestrianDistanceAhead = 10,
  52. DeviateType = 11,
  53. FlagState = 12,
  54. Latitude = 13,
  55. Longitude = 14,
  56. RoadSignIdentificationData = 15,
  57. RoadSignIdentificationType = 16,
  58. Speed = 17,
  59. VehicleSpeed = 18,
  60. VehicleState = 19
  61. });
  62. var hex = JT808Serializer.Serialize(jT808UploadLocationRequest).ToHexString();
  63. Assert.Equal("000000010000000200BA7F0E07E4F11C0028003C00001807151010106447000000010C0605120A0B100F1100070000000D0000000E191211183100001334343434343434000000000000000000000000000000000000000000000019121018310003020506", hex);
  64. }
  65. [Fact]
  66. public void Deserialize()
  67. {
  68. var jT808UploadLocationRequest = JT808Serializer.Deserialize<JT808_0x0200>("000000010000000200BA7F0E07E4F11C0028003C00001807151010106447000000010C0605120A0B100F1100070000000D0000000E191211183100001334343434343434000000000000000000000000000000000000000000000019121018310003020506".ToHexBytes());
  69. jT808UploadLocationRequest.CustomLocationAttachData.TryGetValue(JT808_YueBiao_Constants.JT808_0X0200_0x64, out var value);
  70. JT808_0x0200_0x64 jT808_0X0200_0X64 = value as JT808_0x0200_0x64;
  71. Assert.Equal(1u, jT808_0X0200_0X64.AlarmId);
  72. Assert.Equal(2, jT808_0X0200_0X64.AlarmIdentification.AttachCount);
  73. Assert.Equal(3, jT808_0X0200_0X64.AlarmIdentification.SN);
  74. Assert.Equal("4444444", jT808_0X0200_0X64.AlarmIdentification.TerminalId);
  75. Assert.Equal(5, jT808_0X0200_0X64.AlarmIdentification.Retain1);
  76. Assert.Equal(6, jT808_0X0200_0X64.AlarmIdentification.Retain2);
  77. Assert.Equal(Convert.ToDateTime("2019-12-10 18:31:00"), jT808_0X0200_0X64.AlarmIdentification.Time);
  78. Assert.Equal(5, jT808_0X0200_0X64.AlarmLevel);
  79. Assert.Equal(6, jT808_0X0200_0X64.AlarmOrEventType);
  80. Assert.Equal(Convert.ToDateTime("2019-12-11 18:31:00"), jT808_0X0200_0X64.AlarmTime);
  81. Assert.Equal(7, jT808_0X0200_0X64.Altitude);
  82. Assert.Equal(0x64, jT808_0X0200_0X64.AttachInfoId);
  83. Assert.Equal(71, jT808_0X0200_0X64.AttachInfoLength);
  84. Assert.Equal(10, jT808_0X0200_0X64.CarOrPedestrianDistanceAhead);
  85. Assert.Equal(11, jT808_0X0200_0X64.DeviateType);
  86. Assert.Equal(12, jT808_0X0200_0X64.FlagState);
  87. Assert.Equal(13, jT808_0X0200_0X64.Latitude);
  88. Assert.Equal(14, jT808_0X0200_0X64.Longitude);
  89. Assert.Equal(15, jT808_0X0200_0X64.RoadSignIdentificationData);
  90. Assert.Equal(16, jT808_0X0200_0X64.RoadSignIdentificationType);
  91. Assert.Equal(17, jT808_0X0200_0X64.Speed);
  92. Assert.Equal(18, jT808_0X0200_0X64.VehicleSpeed);
  93. Assert.Equal(19, jT808_0X0200_0X64.VehicleState);
  94. }
  95. [Fact]
  96. public void Deserialize1()
  97. {
  98. var json = JT808Serializer.Analyze<JT808_0x0200>("000000010000000200BA7F0E07E4F11C0028003C00001807151010106447000000010C0605120A0B100F1100070000000D0000000E191211183100001334343434343434000000000000000000000000000000000000000000000019121018310003020506".ToHexBytes());
  99. }
  100. }
  101. }