UnitTest1.cs 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. using Edge.Core.Parser.BinaryParser.Util;
  2. using Microsoft.VisualStudio.TestTools.UnitTesting;
  3. using SH_BS_CarPlateCamera.MessageEntity.Incoming;
  4. using SH_BS_CarPlateCamera.MessageEntity.Outgoing;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. namespace SH_BS_CarPlateCamera_Test
  8. {
  9. [TestClass]
  10. public class UnitTest1
  11. {
  12. public static bool ValueEquals(IEnumerable<byte> array1, IEnumerable<byte> array2)
  13. {
  14. if (array1 == null && array2 == null)
  15. {
  16. return true;
  17. }
  18. if ((array1 == null) || (array2 == null))
  19. {
  20. return false;
  21. }
  22. if (array1.Count() != array2.Count())
  23. {
  24. return false;
  25. }
  26. if (array1.Equals(array2))
  27. {
  28. return true;
  29. }
  30. else
  31. {
  32. for (int Index = 0; Index < array1.Count(); Index++)
  33. {
  34. if (!Equals(array1.ElementAt(Index), array2.ElementAt(Index)))
  35. {
  36. return false;
  37. }
  38. }
  39. }
  40. return true;
  41. }
  42. [TestMethod]
  43. public void ShouldCutTest1()
  44. {
  45. var test = "99".Split(';');
  46. var cutter = new SH_BS_CarPlateCamera.MessageCutter();
  47. int onMsgCutCalledTimes = 0;
  48. int onInvalidMsgCalledTimes = 0;
  49. List<byte[]> messages = new List<byte[]>();
  50. cutter.OnMessageCut += (s, a) =>
  51. {
  52. onMsgCutCalledTimes++;
  53. messages.Add(cutter.Message);
  54. };
  55. cutter.OnInvalidMessageRead += (e, f) =>
  56. {
  57. onInvalidMsgCalledTimes++;
  58. };
  59. var rawDataStr = "8A " +
  60. "00 00 00 00 64 00 F3 02 " +
  61. "02 " +
  62. "4E " +
  63. "3C 00 " +
  64. "C1 C9 42 53 38 42 35 5300 00 00 00 00 00 00 00 01 01 00 00 01 E1 07 09 17 E1 07 0A 1700 C0 A8 21 64 C4 8B CB 59 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 98 7F";
  65. var rawValid = rawDataStr.ToBytes();
  66. cutter.Feed(rawValid);
  67. Assert.AreEqual(true, onMsgCutCalledTimes == 1);
  68. Assert.AreEqual(true, messages.Count == 1);
  69. Assert.AreEqual(true, ValueEquals(messages[0], rawValid));
  70. Assert.AreEqual(true, onInvalidMsgCalledTimes == 0);
  71. }
  72. [TestMethod]
  73. public void ShouldCutTest2()
  74. {
  75. var cutter = new SH_BS_CarPlateCamera.MessageCutter();
  76. int onMsgCutCalledTimes = 0;
  77. int onInvalidMsgCalledTimes = 0;
  78. List<byte[]> messages = new List<byte[]>();
  79. cutter.OnMessageCut += (s, a) =>
  80. {
  81. onMsgCutCalledTimes++;
  82. messages.Add(cutter.Message);
  83. };
  84. cutter.OnInvalidMessageRead += (e, f) =>
  85. {
  86. onInvalidMsgCalledTimes++;
  87. };
  88. var rawDataStr = "8A 00 00 00 00 64 00 F3 02 03 15 04 00 7F F8 72 63 9B 7F";
  89. var rawValid = rawDataStr.ToBytes();
  90. cutter.Feed(rawValid);
  91. Assert.AreEqual(true, onMsgCutCalledTimes == 1);
  92. Assert.AreEqual(true, messages.Count == 1);
  93. Assert.AreEqual(true, ValueEquals(messages[0], rawValid));
  94. Assert.AreEqual(true, onInvalidMsgCalledTimes == 0);
  95. }
  96. [TestMethod]
  97. public void CarPlateReadCommandTestMethod1()
  98. {
  99. var rawDataStr = "8A " +
  100. "00 00 00 00 64 00 F3 02 " +
  101. "02 " +
  102. "4E " +
  103. "3C 00 " +
  104. "C1 C9 42 53 38 42 35 5300 00 00 00 00 00 00 00 01 01 00 00 01 E1 07 09 17 E1 07 0A 1700 C0 A8 21 64 C4 8B CB 59 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 98 7F";
  105. var rawValid = rawDataStr.ToBytes();
  106. var parser = new SH_BS_CarPlateCamera.Parser();
  107. var msg = parser.Deserialize(rawValid) as CarPlateReadCommand;
  108. Assert.AreEqual(true, msg != null);
  109. }
  110. [TestMethod]
  111. public void CarPlateReadCommandTestMethod2()
  112. {
  113. var rawDataStr = "8A " +
  114. "00 00 00 00 64 00 F3 02 " +
  115. "01 " +
  116. "09 " +
  117. "3C 00 " +
  118. "CB D5 43 43 36 36 36 43 00 00 00 00 00 00 00 00 02 02 FF 01 02 00 00 00 00 00 00 00 00 00 C0 A8 21 65 8F 8F CB 59 E8 00 00 00 0A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 E0 7F";
  119. var rawValid = rawDataStr.ToBytes();
  120. var parser = new SH_BS_CarPlateCamera.Parser();
  121. var msg = parser.Deserialize(rawValid) as CarPlateReadCommand;
  122. Assert.AreEqual(true, msg != null);
  123. }
  124. [TestMethod]
  125. public void CarPlateReadCommandTestMethod3()
  126. {
  127. var rawDataStr = "8A " +
  128. "00 00 00 00 64 00 F3 02 " +
  129. "01 " +
  130. "0A " +
  131. "3C 00 " +
  132. "C1 C9 42 53 38 42 35 53 00 00 00 00 00 00 00 00 01 01 FF 01 00 00 00 00 00 00 00 00 00 00 C0 A8 21 65 CC 90 CB 59 83 00 00 00 0A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 B8 7F ";
  133. var rawValid = rawDataStr.ToBytes();
  134. var parser = new SH_BS_CarPlateCamera.Parser();
  135. var msg = parser.Deserialize(rawValid) as CarPlateReadCommand;
  136. Assert.AreEqual(true, msg != null);
  137. }
  138. [TestMethod]
  139. public void HeartbeatCommandTestMethod1()
  140. {
  141. var rawDataStr = "8A " +
  142. "00 00 00 00 64 00 F3 02 " +
  143. "03 " +
  144. "2B " +
  145. "04 00 " +
  146. "38 3A CF 54 AA 7F";
  147. var rawValid = rawDataStr.ToBytes();
  148. var parser = new SH_BS_CarPlateCamera.Parser();
  149. var msg = parser.Deserialize(rawValid) as HeartbeatCommand;
  150. Assert.AreEqual(true, msg != null);
  151. }
  152. [TestMethod]
  153. public void CarPlateReceivedAckCommandTestMethod1()
  154. {
  155. var msg = new CarPlateReceivedAckCommand(0xAB);
  156. var parser = new SH_BS_CarPlateCamera.Parser();
  157. var actual = parser.Serialize(msg);
  158. var expect = "8A 64 00 F3 02 00 00 00 00 02 AB 00 00 B6 7F".ToBytes();
  159. Assert.AreEqual(true, ValueEquals(expect, actual));
  160. }
  161. [TestMethod]
  162. public void HeartbeatAckCommandTestMethod1()
  163. {
  164. var msg = new HeartbeatAckCommand(0x2B,
  165. System.BitConverter.ToInt32("38 3A CF 54".ToBytes()));
  166. var parser = new SH_BS_CarPlateCamera.Parser();
  167. var actual = parser.Serialize(msg);
  168. var expect = "8A 64 00 F3 02 00 00 00 00 04 2B 04 00 38 3A CF 54 AD 7F".ToBytes();
  169. // 0x8A 64 00 F3 02 00 00 00 00 04 2B 00 00 38 3A CF 54 A9 7F
  170. Assert.AreEqual(true, ValueEquals(expect, actual), $"actual: 0x{actual.ToHexLogString()}");
  171. }
  172. }
  173. }