25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

91 lines
4.5 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_0x67_Test
  10. {
  11. JT808Serializer JT808Serializer;
  12. public JT808_0x0200_0x67_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_0x67, new JT808_0x0200_0x67
  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. AlarmTime = Convert.ToDateTime("2019-12-11 18:31:00"),
  48. Altitude = 7,
  49. AlarmOrEventType = 9,
  50. FlagState = 12,
  51. Latitude = 13,
  52. Longitude = 14,
  53. Speed = 17,
  54. VehicleState = 19
  55. });
  56. var hex = JT808Serializer.Serialize(jT808UploadLocationRequest).ToHexString();
  57. Assert.Equal("000000010000000200BA7F0E07E4F11C0028003C00001807151010106741000000010C091100070000000D0000000E191211183100001334343434343434000000000000000000000000000000000000000000000019121018310003020506", hex);
  58. }
  59. [Fact]
  60. public void Deserialize()
  61. {
  62. var jT808UploadLocationRequest = JT808Serializer.Deserialize<JT808_0x0200>("000000010000000200BA7F0E07E4F11C0028003C00001807151010106741000000010C091100070000000D0000000E191211183100001334343434343434000000000000000000000000000000000000000000000019121018310003020506".ToHexBytes());
  63. jT808UploadLocationRequest.CustomLocationAttachData.TryGetValue(JT808_YueBiao_Constants.JT808_0X0200_0x67, out var value);
  64. JT808_0x0200_0x67 jT808_0X0200_0X67 = value as JT808_0x0200_0x67;
  65. Assert.Equal(1u, jT808_0X0200_0X67.AlarmId);
  66. Assert.Equal(2, jT808_0X0200_0X67.AlarmIdentification.AttachCount);
  67. Assert.Equal(3, jT808_0X0200_0X67.AlarmIdentification.SN);
  68. Assert.Equal("4444444", jT808_0X0200_0X67.AlarmIdentification.TerminalId);
  69. Assert.Equal(5, jT808_0X0200_0X67.AlarmIdentification.Retain1);
  70. Assert.Equal(6, jT808_0X0200_0X67.AlarmIdentification.Retain2);
  71. Assert.Equal(Convert.ToDateTime("2019-12-10 18:31:00"), jT808_0X0200_0X67.AlarmIdentification.Time);
  72. Assert.Equal(Convert.ToDateTime("2019-12-11 18:31:00"), jT808_0X0200_0X67.AlarmTime);
  73. Assert.Equal(7, jT808_0X0200_0X67.Altitude);
  74. Assert.Equal(9, jT808_0X0200_0X67.AlarmOrEventType);
  75. Assert.Equal(0x67, jT808_0X0200_0X67.AttachInfoId);
  76. Assert.Equal(65, jT808_0X0200_0X67.AttachInfoLength);
  77. Assert.Equal(12, jT808_0X0200_0X67.FlagState);
  78. Assert.Equal(13, jT808_0X0200_0X67.Latitude);
  79. Assert.Equal(14, jT808_0X0200_0X67.Longitude);
  80. Assert.Equal(17, jT808_0X0200_0X67.Speed);
  81. Assert.Equal(19, jT808_0X0200_0X67.VehicleState);
  82. }
  83. [Fact]
  84. public void Json()
  85. {
  86. var json = JT808Serializer.Analyze<JT808_0x0200>("000000010000000200BA7F0E07E4F11C0028003C00001807151010106741000000010C091100070000000D0000000E191211183100001334343434343434000000000000000000000000000000000000000000000019121018310003020506".ToHexBytes());
  87. }
  88. }
  89. }