25'ten fazla konu seçemezsiniz Konular bir harf veya rakamla başlamalı, kısa çizgiler ('-') içerebilir ve en fazla 35 karakter uzunluğunda olabilir.

125 satır
5.0 KiB

  1. using JT808.Protocol.Extensions;
  2. using JT808.Protocol.MessageBody;
  3. using System.Collections.Generic;
  4. using Xunit;
  5. namespace JT808.Protocol.Test.MessageBody
  6. {
  7. public class JT808_0x0104Test
  8. {
  9. JT808Serializer JT808Serializer = new JT808Serializer();
  10. [Fact]
  11. public void Test1()
  12. {
  13. JT808Package jT808Package = new JT808Package
  14. {
  15. Header = new JT808Header
  16. {
  17. MsgId = Enums.JT808MsgId.查询终端参数应答.ToUInt16Value(),
  18. ManualMsgNum = 10,
  19. TerminalPhoneNo = "123456789",
  20. },
  21. Bodies = new JT808_0x0104
  22. {
  23. MsgNum = 20,
  24. AnswerParamsCount = 1,
  25. ParamList = new List<JT808_0x8103_BodyBase> {
  26. new JT808_0x8103_0x0001() {
  27. ParamId=0x0001,
  28. ParamLength=4,
  29. ParamValue=10
  30. }
  31. }
  32. }
  33. };
  34. var hex = JT808Serializer.Serialize(jT808Package).ToHexString();
  35. Assert.Equal("7E0104000C000123456789000A00140100000001040000000A907E", hex);
  36. }
  37. [Fact]
  38. public void Test1_1()
  39. {
  40. byte[] bytes = "7E0104000C000123456789000A00140100000001040000000A907E".ToHexBytes();
  41. JT808Package jT808_0X8104 = JT808Serializer.Deserialize<JT808Package>(bytes);
  42. Assert.Equal(Enums.JT808MsgId.查询终端参数应答.ToUInt16Value(), jT808_0X8104.Header.MsgId);
  43. Assert.Equal(10, jT808_0X8104.Header.MsgNum);
  44. Assert.Equal("123456789", jT808_0X8104.Header.TerminalPhoneNo);
  45. JT808_0x0104 JT808Bodies = (JT808_0x0104)jT808_0X8104.Bodies;
  46. Assert.Equal(20, JT808Bodies.MsgNum);
  47. Assert.Equal(1, JT808Bodies.AnswerParamsCount);
  48. foreach (var item in JT808Bodies.ParamList)
  49. {
  50. Assert.Equal(0x0001u, ((JT808_0x8103_0x0001)item).ParamId);
  51. Assert.Equal(4, ((JT808_0x8103_0x0001)item).ParamLength);
  52. Assert.Equal(10u, ((JT808_0x8103_0x0001)item).ParamValue);
  53. }
  54. }
  55. [Fact]
  56. public void Test2()
  57. {
  58. JT808Package jT808Package = new JT808Package
  59. {
  60. Header = new JT808Header
  61. {
  62. MsgId = Enums.JT808MsgId.查询终端参数应答.ToUInt16Value(),
  63. ManualMsgNum = 10,
  64. TerminalPhoneNo = "123456789",
  65. },
  66. Bodies = new JT808_0x0104
  67. {
  68. MsgNum = 20,
  69. AnswerParamsCount = 2,
  70. ParamList = new List<JT808_0x8103_BodyBase> {
  71. new JT808_0x8103_0x0001() {
  72. ParamId=0x0001,
  73. ParamLength=4,
  74. ParamValue=10
  75. },
  76. new JT808_0x8103_0x0013(){
  77. ParamId=0x0013,
  78. ParamValue="www.baidu.com"
  79. }
  80. }
  81. }
  82. };
  83. var hex = JT808Serializer.Serialize(jT808Package).ToHexString();
  84. //7E0104001E000123456789000A00140200000001040000000A000000130F7777772E62616964752E636F6DF07E
  85. //7E0104001E000123456789000A00140200000001040000000A000000130D7777772E62616964752E636F6DF27E
  86. Assert.Equal("7E0104001E000123456789000A00140200000001040000000A000000130D7777772E62616964752E636F6DF27E", hex);
  87. }
  88. [Fact]
  89. public void Test2_1()
  90. {
  91. byte[] bytes = "7E0104001E000123456789000A00140200000001040000000A000000130D7777772E62616964752E636F6DF27E".ToHexBytes();
  92. JT808Package jT808_0X8104 = JT808Serializer.Deserialize<JT808Package>(bytes);
  93. Assert.Equal(Enums.JT808MsgId.查询终端参数应答.ToUInt16Value(), jT808_0X8104.Header.MsgId);
  94. Assert.Equal(10, jT808_0X8104.Header.MsgNum);
  95. Assert.Equal("123456789", jT808_0X8104.Header.TerminalPhoneNo);
  96. JT808_0x0104 JT808Bodies = (JT808_0x0104)jT808_0X8104.Bodies;
  97. Assert.Equal(20, JT808Bodies.MsgNum);
  98. Assert.Equal(2, JT808Bodies.AnswerParamsCount);
  99. foreach (var item in JT808Bodies.ParamList)
  100. {
  101. switch (item.ParamId)
  102. {
  103. case 0x0001:
  104. Assert.Equal(0x0001u, ((JT808_0x8103_0x0001)item).ParamId);
  105. Assert.Equal(4, ((JT808_0x8103_0x0001)item).ParamLength);
  106. Assert.Equal(10u, ((JT808_0x8103_0x0001)item).ParamValue);
  107. break;
  108. case 0x0013:
  109. Assert.Equal(0x0013u, ((JT808_0x8103_0x0013)item).ParamId);
  110. Assert.Equal("www.baidu.com", ((JT808_0x8103_0x0013)item).ParamValue);
  111. break;
  112. default:
  113. break;
  114. }
  115. }
  116. }
  117. }
  118. }