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.

172 rivejä
8.5 KiB

  1. using JTNE.Protocol.MessageBody;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Text;
  5. using Xunit;
  6. using JTNE.Protocol.Extensions;
  7. namespace JTNE.Protocol.Test.MessageBody
  8. {
  9. public class JTNE_0x02_CompositeTest
  10. {
  11. [Fact]
  12. public void Test1()
  13. {
  14. JTNEGlobalConfigs.Instance.Register_JTNE0x02CustomBody(0xA1, typeof(JTNE_0x02_0xA1));
  15. JTNEGlobalConfigs.Instance.Register_JTNE0x02CustomBody(0xA2, typeof(JTNE_0x02_0xA2));
  16. JTNE_0x02 jTNE_0X02 = new JTNE_0x02();
  17. jTNE_0X02.Values = new Dictionary<byte, JTNE_0x02_Body>();
  18. jTNE_0X02.CusotmSerializeObjectValues = new Dictionary<byte, JTNE_0x02_CustomBody>();
  19. JTNE_0x02_0x01 jTNE_0X02_0X01 = new JTNE_0x02_0x01();
  20. jTNE_0X02_0X01.Accelerator = 0x02;
  21. jTNE_0X02_0X01.Brakes = 0x03;
  22. jTNE_0X02_0X01.CarStatus = 0x04;
  23. jTNE_0X02_0X01.ChargeStatus = 0x05;
  24. jTNE_0X02_0X01.DCStatus = 0x06;
  25. jTNE_0X02_0X01.OperationMode = 0x07;
  26. jTNE_0X02_0X01.Resistance = 123;
  27. jTNE_0X02_0X01.SOC = 0x03;
  28. jTNE_0X02_0X01.Speed = 58;
  29. jTNE_0X02_0X01.Stall = 0x02;
  30. jTNE_0X02_0X01.TotalDis = 6666;
  31. jTNE_0X02_0X01.TotalTemp = 99;
  32. jTNE_0X02_0X01.TotalVoltage = 100;
  33. jTNE_0X02.Values.Add(JTNE_0x02_Body.JTNE_0x02_0x01, jTNE_0X02_0X01);
  34. JTNE_0x02_0x02 jTNE_0X02_0X02 = new JTNE_0x02_0x02();
  35. jTNE_0X02_0X02.Electricals = new List<Metadata.Electrical>();
  36. Metadata.Electrical electrical1 = new Metadata.Electrical();
  37. electrical1.ElControlTemp = 0x01;
  38. electrical1.ElCurrent = 100;
  39. electrical1.ElNo = 0x01;
  40. electrical1.ElSpeed = 65;
  41. electrical1.ElStatus = 0x02;
  42. electrical1.ElTemp = 0x03;
  43. electrical1.ElTorque = 55;
  44. electrical1.ElVoltage = 236;
  45. Metadata.Electrical electrical2 = new Metadata.Electrical();
  46. electrical2.ElControlTemp = 0x02;
  47. electrical2.ElCurrent = 101;
  48. electrical2.ElNo = 0x02;
  49. electrical2.ElSpeed = 66;
  50. electrical2.ElStatus = 0x03;
  51. electrical2.ElTemp = 0x05;
  52. electrical2.ElTorque = 566;
  53. electrical2.ElVoltage = 2136;
  54. jTNE_0X02_0X02.Electricals.Add(electrical1);
  55. jTNE_0X02_0X02.Electricals.Add(electrical2);
  56. jTNE_0X02.Values.Add(JTNE_0x02_Body.JTNE_0x02_0x02, jTNE_0X02_0X02);
  57. JTNE_0x02_0x03 jTNE_0X02_0X03 = new JTNE_0x02_0x03();
  58. jTNE_0X02_0X03.DCStatus = 0x02;
  59. jTNE_0X02_0X03.FuelBatteryCurrent = 111;
  60. jTNE_0X02_0X03.FuelBatteryVoltage = 2222;
  61. jTNE_0X02_0X03.FuelConsumptionRate = 3222;
  62. jTNE_0X02_0X03.HydrogenSystemMaxConcentrations = 6666;
  63. jTNE_0X02_0X03.HydrogenSystemMaxConcentrationsNo = 0x56;
  64. jTNE_0X02_0X03.HydrogenSystemMaxPressure = 3336;
  65. jTNE_0X02_0X03.HydrogenSystemMaxPressureNo = 0x65;
  66. jTNE_0X02_0X03.HydrogenSystemMaxTemp = 3355;
  67. jTNE_0X02_0X03.HydrogenSystemMaxTempNo = 0x22;
  68. jTNE_0X02_0X03.Temperatures = new byte[]
  69. {
  70. 0x01,0x02,0x03
  71. };
  72. jTNE_0X02.Values.Add(JTNE_0x02_Body.JTNE_0x02_0x03, jTNE_0X02_0X03);
  73. JTNE_0x02_0xA1 jTNE_0X02_0XA1 = new JTNE_0x02_0xA1();
  74. jTNE_0X02_0XA1.UserName = "SmallChi";
  75. jTNE_0X02_0XA1.Age = 18;
  76. jTNE_0X02.CusotmSerializeObjectValues.Add(0xA1, jTNE_0X02_0XA1);
  77. JTNE_0x02_0xA2 jTNE_0X02_0XA2 = new JTNE_0x02_0xA2();
  78. jTNE_0X02_0XA2.CompanyName = "小池有限公司";
  79. jTNE_0X02.CusotmSerializeObjectValues.Add(0xA2, jTNE_0X02_0XA2);
  80. var hex = JTNESerializer.Serialize(jTNE_0X02).ToHexString();
  81. Assert.Equal("01040507003A00001A0A00640063030602007B02030202010201004100370300EC00640203020042023605085800650308AE006F0C9600030102030D1B221A0A560D086502A1000E536D616C6C436869000000000012A20014E5B08FE6B1A0E69C89E99990E585ACE58FB80000", hex);
  82. }
  83. [Fact]
  84. public void Test2()
  85. {
  86. JTNEGlobalConfigs.Instance.Register_JTNE0x02CustomBody(0xA1, typeof(JTNE_0x02_0xA1));
  87. JTNEGlobalConfigs.Instance.Register_JTNE0x02CustomBody(0xA2, typeof(JTNE_0x02_0xA2));
  88. JTNEGlobalConfigs.Instance.Encoding = Encoding.UTF8;
  89. var data = "01040507003A00001A0A00640063030602007B02030202010201004100370300EC00640203020042023605085800650308AE006F0C9600030102030D1B221A0A560D086502A1000E536D616C6C436869000000000012A20014E5B08FE6B1A0E69C89E99990E585ACE58FB80000".ToHexBytes();
  90. JTNE_0x02 jTNE_0X02 = JTNESerializer.Deserialize<JTNE_0x02>(data);
  91. JTNE_0x02_0x01 jTNE_0X02_0X01 = jTNE_0X02.Values[JTNE_0x02_Body.JTNE_0x02_0x01] as JTNE_0x02_0x01;
  92. Assert.Equal(JTNE_0x02_Body.JTNE_0x02_0x01, jTNE_0X02_0X01.TypeCode);
  93. Assert.Equal(0x02, jTNE_0X02_0X01.Accelerator);
  94. Assert.Equal(0x03, jTNE_0X02_0X01.Brakes);
  95. Assert.Equal(0x04, jTNE_0X02_0X01.CarStatus);
  96. Assert.Equal(0x05, jTNE_0X02_0X01.ChargeStatus);
  97. Assert.Equal(0x06, jTNE_0X02_0X01.DCStatus);
  98. Assert.Equal(0x07, jTNE_0X02_0X01.OperationMode);
  99. Assert.Equal(123, jTNE_0X02_0X01.Resistance);
  100. Assert.Equal(0x03, jTNE_0X02_0X01.SOC);
  101. Assert.Equal(58, jTNE_0X02_0X01.Speed);
  102. Assert.Equal(0x02, jTNE_0X02_0X01.Stall);
  103. Assert.Equal((uint)6666, jTNE_0X02_0X01.TotalDis);
  104. Assert.Equal(99, jTNE_0X02_0X01.TotalTemp);
  105. Assert.Equal(100, jTNE_0X02_0X01.TotalVoltage);
  106. JTNE_0x02_0x02 jTNE_0X02_0X02 = jTNE_0X02.Values[JTNE_0x02_Body.JTNE_0x02_0x02] as JTNE_0x02_0x02;
  107. Assert.Equal(JTNE_0x02_Body.JTNE_0x02_0x02, jTNE_0X02_0X02.TypeCode);
  108. Assert.Equal(2, jTNE_0X02_0X02.ElectricalCount);
  109. Metadata.Electrical electrical1 = jTNE_0X02_0X02.Electricals[0];
  110. Assert.Equal(0x01, electrical1.ElControlTemp);
  111. Assert.Equal(100, electrical1.ElCurrent);
  112. Assert.Equal(0x01, electrical1.ElNo);
  113. Assert.Equal(65, electrical1.ElSpeed);
  114. Assert.Equal(0x02, electrical1.ElStatus);
  115. Assert.Equal(0x03, electrical1.ElTemp);
  116. Assert.Equal(55, electrical1.ElTorque);
  117. Assert.Equal(236, electrical1.ElVoltage);
  118. Metadata.Electrical electrical2 = jTNE_0X02_0X02.Electricals[1];
  119. Assert.Equal(0x02, electrical2.ElControlTemp);
  120. Assert.Equal(101, electrical2.ElCurrent);
  121. Assert.Equal(0x02, electrical2.ElNo);
  122. Assert.Equal(66, electrical2.ElSpeed);
  123. Assert.Equal(0x03, electrical2.ElStatus);
  124. Assert.Equal(0x05, electrical2.ElTemp);
  125. Assert.Equal(566, electrical2.ElTorque);
  126. Assert.Equal(2136, electrical2.ElVoltage);
  127. JTNE_0x02_0x03 jTNE_0X02_0X03 = jTNE_0X02.Values[JTNE_0x02_Body.JTNE_0x02_0x03] as JTNE_0x02_0x03;
  128. Assert.Equal(JTNE_0x02_Body.JTNE_0x02_0x03, jTNE_0X02_0X03.TypeCode);
  129. Assert.Equal(0x02, jTNE_0X02_0X03.DCStatus);
  130. Assert.Equal(111, jTNE_0X02_0X03.FuelBatteryCurrent);
  131. Assert.Equal(2222, jTNE_0X02_0X03.FuelBatteryVoltage);
  132. Assert.Equal(3222, jTNE_0X02_0X03.FuelConsumptionRate);
  133. Assert.Equal(6666, jTNE_0X02_0X03.HydrogenSystemMaxConcentrations);
  134. Assert.Equal(0x56, jTNE_0X02_0X03.HydrogenSystemMaxConcentrationsNo);
  135. Assert.Equal(3336, jTNE_0X02_0X03.HydrogenSystemMaxPressure);
  136. Assert.Equal(0x65, jTNE_0X02_0X03.HydrogenSystemMaxPressureNo);
  137. Assert.Equal(3355, jTNE_0X02_0X03.HydrogenSystemMaxTemp);
  138. Assert.Equal(0x22, jTNE_0X02_0X03.HydrogenSystemMaxTempNo);
  139. Assert.Equal(new byte[] { 0x01, 0x02, 0x03 }, jTNE_0X02_0X03.Temperatures);
  140. JTNE_0x02_0xA1 jTNE_0X02_0XA1 = JTNESerializer.Deserialize<JTNE_0x02_0xA1>(jTNE_0X02.CusotmValues[0xA1]);
  141. Assert.Equal(0xA1, jTNE_0X02_0XA1.TypeCode);
  142. Assert.Equal(14, jTNE_0X02_0XA1.Length);
  143. Assert.Equal("SmallChi", jTNE_0X02_0XA1.UserName);
  144. Assert.Equal(18, jTNE_0X02_0XA1.Age);
  145. JTNE_0x02_0xA2 jTNE_0X02_0XA2 = JTNESerializer.Deserialize<JTNE_0x02_0xA2>(jTNE_0X02.CusotmValues[0xA2]);
  146. Assert.Equal(0xA2, jTNE_0X02_0XA2.TypeCode);
  147. Assert.Equal(20, jTNE_0X02_0XA2.Length);
  148. Assert.Equal("小池有限公司", jTNE_0X02_0XA2.CompanyName);
  149. }
  150. }
  151. }