ParserTest.cs 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using Edge.Core.Parser.BinaryParser.Util;
  5. using Microsoft.VisualStudio.TestTools.UnitTesting;
  6. using VaporRecoveryOnlineWatchHubApp;
  7. using Wayne_VaporRecoveryDataCollectorBoard.MessageEntity;
  8. using Wayne_VaporRecoveryDataCollectorBoard.MessageEntity.Incoming;
  9. using Wayne_VaporRecoveryDataCollectorBoard.MessageEntity.Outgoing;
  10. namespace Wayne_VaporRecoveryDataCollectorBoard_Test
  11. {
  12. [TestClass]
  13. public class ParserTest
  14. {
  15. public static bool ValueEquals(IEnumerable<byte> array1, IEnumerable<byte> array2)
  16. {
  17. if (array1 == null && array2 == null)
  18. {
  19. return true;
  20. }
  21. if ((array1 == null) || (array2 == null))
  22. {
  23. return false;
  24. }
  25. if (array1.Count() != array2.Count())
  26. {
  27. return false;
  28. }
  29. if (array1.Equals(array2))
  30. {
  31. return true;
  32. }
  33. else
  34. {
  35. for (int Index = 0; Index < array1.Count(); Index++)
  36. {
  37. if (!Equals(array1.ElementAt(Index), array2.ElementAt(Index)))
  38. {
  39. return false;
  40. }
  41. }
  42. }
  43. return true;
  44. }
  45. [TestMethod]
  46. public void READ_HISTORY_NUM_Request_TestMethod1()
  47. {
  48. READ_HISTORY_NUM_Request request = new READ_HISTORY_NUM_Request(1) { Address = 1 };
  49. Wayne_VaporRecoveryDataCollectorBoard.Parser parser = new Wayne_VaporRecoveryDataCollectorBoard.Parser();
  50. var expected = new byte[] { 0x68, 01, 07, 01, 01, 0x0A, 0x16 };
  51. var actual = parser.Serialize(request);
  52. Assert.AreEqual(true, ValueEquals(expected, actual));
  53. }
  54. [TestMethod]
  55. public void SET_ADDRESS_Request_TestMethod1()
  56. {
  57. SET_ADDRESS_Request request = new SET_ADDRESS_Request(17, 5);
  58. Wayne_VaporRecoveryDataCollectorBoard.Parser parser = new Wayne_VaporRecoveryDataCollectorBoard.Parser();
  59. var expected = new byte[] { 0x68, 00, 0xA1, 05, 0x11, 00, 00, 00, 0x05, 0xBC, 0x16 };
  60. var actual = parser.Serialize(request);
  61. Assert.AreEqual(true, ValueEquals(expected, actual), "0x" + actual.GetHexString());
  62. }
  63. [TestMethod]
  64. public void READ_ONE_HISTORY_DATA_Response_TestMethod1()
  65. {
  66. var raw = new byte[] {
  67. // spliter
  68. 0x68,
  69. // Address
  70. 0x01,
  71. // CommandCode
  72. 0x03,
  73. // DataFieldLength
  74. 0x1B,
  75. // Board nozzle number
  76. 0x03,
  77. //FuellingStartTime
  78. 0x18, 0x04, 0x25, 0x18, 0x46, 0x49, 0x03,
  79. //LiquidVolume
  80. 0x00, 0x01, 0x9E, 0xA6,
  81. //AirVolume
  82. 0x00, 0x00, 0x00, 0x08,
  83. //FuellingEndTime
  84. 0x18, 0x04, 0x25, 0x18, 0x47, 0x38, 0x03,
  85. 0x00, 0x04, 0xC7, 0x70, 0x6E, 0x16 };
  86. var parser = new Wayne_VaporRecoveryDataCollectorBoard.Parser();
  87. var actual = parser.Deserialize(raw) as READ_ONE_HISTORY_DATA_Response;
  88. Assert.AreEqual(true, actual.NozzleNumber == 3);
  89. var debugStr = actual.ToLogString();
  90. }
  91. [TestMethod]
  92. public void READ_ONE_HISTORY_DATA_Response_TestMethod2()
  93. {
  94. var raw = new byte[] { 0x68, 0x01, 0x03, 0x1B, 0x02, 0x18, 0x04, 0x25, 0x18, 0x46, 0x49, 0x03, 0x00, 0x01, 0x9E, 0xA6, 0x00, 0x00, 0x00, 0x08, 0x18, 0x04, 0x25, 0x18, 0x47, 0x38, 0x03, 0x00, 0x04, 0xC7, 0x70, 0x6E, 0x16 };
  95. var parser = new Wayne_VaporRecoveryDataCollectorBoard.Parser();
  96. var actual = parser.Deserialize(raw) as READ_ONE_HISTORY_DATA_Response;
  97. Assert.AreEqual(true, actual.NozzleNumber == 2);
  98. var debugStr = actual.ToLogString();
  99. }
  100. [TestMethod]
  101. public void READ_PARA_Response_TestMethod1()
  102. {
  103. var raw = new byte[] { 0x68, 0x01, 0x06, 0x23, 0x01, 0x05, 0x01, 0x00, 0x00, 0x27, 0x10, 0x00, 0x00, 0x27, 0x10, 0x00, 0x00, 0x27, 0x10, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x04, 0x4C, 0x00, 0x00, 0x4E, 0x20, 0x00, 0x00, 0x4E, 0x20, 0xDE, 0x16 };
  104. Wayne_VaporRecoveryDataCollectorBoard.Parser parser = new Wayne_VaporRecoveryDataCollectorBoard.Parser();
  105. var response = parser.Deserialize(raw) as READ_PARA_Response;
  106. var debugStr = response.ToLogString();
  107. }
  108. [TestMethod]
  109. public void READ_WORKING_AND_TYPE_Response_TestMethod1()
  110. {
  111. var raw = new byte[] { 0x68, 0x01, 0x01, 0x0E, 0x11, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x02, 0x61, 0x60, 0x00, 0x00, 0x00, 0x00, 0xE7, 0x16 };
  112. Wayne_VaporRecoveryDataCollectorBoard.Parser parser = new Wayne_VaporRecoveryDataCollectorBoard.Parser();
  113. var response = parser.Deserialize(raw) as READ_WORKING_AND_TYPE_Response;
  114. var debugStr = response.ToLogString();
  115. }
  116. [TestMethod]
  117. public void READ_WORKING_AND_TYPE_Response_TestMethod2()
  118. {
  119. var raw = new byte[] { 0x68, 0x01, 0x01, 0x05, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0B, 0x16 };
  120. var parser = new Wayne_VaporRecoveryDataCollectorBoard.Parser();
  121. var actual = parser.Deserialize(raw) as READ_WORKING_AND_TYPE_Response;
  122. var debugStr = actual.ToLogString();
  123. }
  124. [TestMethod]
  125. public void READ_WORKING_AND_TYPE_Response_TestMethod3()
  126. {
  127. //包起始标志(1B)+采集器地址Addr(1B)+命令代码(1B)+数据域长度(1B)+数据域(由数据域长度指定)+校验CS(1B)+包结束标志(1B)
  128. var raw = new byte[] { 0x68, 0x01, 0x01, 0x05,
  129. 0xFE, 0x0B, 0x68, 0x83, 0x06,
  130. 0x09, 0x16 };
  131. var parser = new Wayne_VaporRecoveryDataCollectorBoard.Parser();
  132. var actual = parser.Deserialize(raw) as READ_WORKING_AND_TYPE_Response;
  133. var debugStr = actual.ToLogString();
  134. var liquidAndAirFlowData =
  135. actual.NozzleLiquidAndAirFlowData.FirstOrDefault(n => n.Item1 == 2);
  136. var vaporVolumeWithDecimal = Util.RoundToDouble(liquidAndAirFlowData.Item3 / 1000);
  137. var liquidVolumeWithDecimal = Util.RoundToDouble(liquidAndAirFlowData.Item2 / 1000);
  138. var vaporAndLiquidRatio = Util.RoundToDouble(vaporVolumeWithDecimal / liquidVolumeWithDecimal);
  139. }
  140. [TestMethod]
  141. public void READ_WORKING_AND_TYPE_Response_TestMethod4()
  142. {
  143. //包起始标志(1B)+采集器地址Addr(1B)+命令代码(1B)+数据域长度(1B)+数据域(由数据域长度指定)+校验CS(1B)+包结束标志(1B)
  144. var raw = "68 06 00 00 16 00".ToBytes();
  145. var parser = new Wayne_VaporRecoveryDataCollectorBoard.Parser();
  146. var actual = parser.Deserialize(raw) as COLLECTOR_BUSY_Response;
  147. var debugStr = actual.ToLogString();
  148. Assert.AreEqual(true, actual != null);
  149. }
  150. }
  151. }