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

75 lines
3.4 KiB

  1. using JT808.Protocol.Extensions;
  2. using JT808.Protocol.MessageBody;
  3. using System;
  4. using System.Collections.Generic;
  5. using Xunit;
  6. namespace JT808.Protocol.Test.MessageBody
  7. {
  8. public class JT808_0x0500Test
  9. {
  10. JT808Serializer JT808Serializer = new JT808Serializer();
  11. [Fact]
  12. public void Test1()
  13. {
  14. JT808Package jT808Package = new JT808Package
  15. {
  16. Header = new JT808Header
  17. {
  18. MsgId = Enums.JT808MsgId.车辆控制应答.ToUInt16Value(),
  19. MsgNum = 8888,
  20. TerminalPhoneNo = "112233445566",
  21. }
  22. };
  23. JT808_0x0500 jT808_0X0500 = new JT808_0x0500();
  24. JT808_0x0200 JT808_0x0200_1 = new JT808_0x0200
  25. {
  26. AlarmFlag = 1,
  27. Altitude = 40,
  28. GPSTime = DateTime.Parse("2018-07-15 10:10:10"),
  29. Lat = 12222222,
  30. Lng = 132444444,
  31. Speed = 60,
  32. Direction = 0,
  33. StatusFlag = 2,
  34. JT808LocationAttachData = new Dictionary<byte, JT808_0x0200_BodyBase>()
  35. };
  36. JT808_0x0200_1.JT808LocationAttachData.Add(JT808Constants.JT808_0x0200_0x01, new JT808_0x0200_0x01
  37. {
  38. Mileage = 100
  39. });
  40. JT808_0x0200_1.JT808LocationAttachData.Add(JT808Constants.JT808_0x0200_0x02, new JT808_0x0200_0x02
  41. {
  42. Oil = 55
  43. });
  44. jT808_0X0500.JT808_0x0200 = JT808_0x0200_1;
  45. jT808_0X0500.MsgNum = 1000;
  46. jT808Package.Bodies = jT808_0X0500;
  47. var hex = JT808Serializer.Serialize(jT808Package).ToHexString();
  48. Assert.Equal("7E0500002811223344556622B803E8000000010000000200BA7F0E07E4F11C0028003C000018071510101001040000006402020037B57E".Length, hex.Length);
  49. Assert.Equal("7E0500002811223344556622B803E8000000010000000200BA7F0E07E4F11C0028003C000018071510101001040000006402020037B57E", hex);
  50. }
  51. [Fact]
  52. public void Test2()
  53. {
  54. byte[] bytes = "7E0500002811223344556622B803E8000000010000000200BA7F0E07E4F11C0028003C000018071510101001040000006402020037B57E".ToHexBytes();
  55. JT808Package jT808Package = JT808Serializer.Deserialize<JT808Package>(bytes);
  56. Assert.Equal(Enums.JT808MsgId.车辆控制应答.ToUInt16Value(), jT808Package.Header.MsgId);
  57. Assert.Equal(8888, jT808Package.Header.MsgNum);
  58. Assert.Equal("112233445566", jT808Package.Header.TerminalPhoneNo);
  59. JT808_0x0500 JT808Bodies = (JT808_0x0500)jT808Package.Bodies;
  60. Assert.Equal(1000, JT808Bodies.MsgNum);
  61. Assert.Equal((uint)1, JT808Bodies.JT808_0x0200.AlarmFlag);
  62. Assert.Equal(DateTime.Parse("2018-07-15 10:10:10"), JT808Bodies.JT808_0x0200.GPSTime);
  63. Assert.Equal(12222222, JT808Bodies.JT808_0x0200.Lat);
  64. Assert.Equal(132444444, JT808Bodies.JT808_0x0200.Lng);
  65. Assert.Equal(0, JT808Bodies.JT808_0x0200.Direction);
  66. Assert.Equal(60, JT808Bodies.JT808_0x0200.Speed);
  67. Assert.Equal((uint)2, JT808Bodies.JT808_0x0200.StatusFlag);
  68. Assert.Equal(100, ((JT808_0x0200_0x01)JT808Bodies.JT808_0x0200.JT808LocationAttachData[JT808Constants.JT808_0x0200_0x01]).Mileage);
  69. Assert.Equal(55, ((JT808_0x0200_0x02)JT808Bodies.JT808_0x0200.JT808LocationAttachData[JT808Constants.JT808_0x0200_0x02]).Oil);
  70. }
  71. }
  72. }