MessageTest.cs 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  1. using Edge.Core.Parser.BinaryParser.Util;
  2. using Microsoft.VisualStudio.TestTools.UnitTesting;
  3. using ShengJu_CUT100_DES;
  4. using ShengJu_CUT100_DES.MessageEntity.Incoming;
  5. using ShengJu_CUT100_DES.MessageEntity.Outgoing;
  6. using System;
  7. using System.Collections.Generic;
  8. using System.Linq;
  9. using System.Text;
  10. using System.Text.Json;
  11. namespace ShengJu_CUT100_DES_Test
  12. {
  13. [TestClass]
  14. public class MessageTest
  15. {
  16. public static bool ValueEquals(IEnumerable<byte> array1, IEnumerable<byte> array2)
  17. {
  18. if (array1 == null && array2 == null)
  19. {
  20. return true;
  21. }
  22. if ((array1 == null) || (array2 == null))
  23. {
  24. return false;
  25. }
  26. if (array1.Count() != array2.Count())
  27. {
  28. return false;
  29. }
  30. if (array1.Equals(array2))
  31. {
  32. return true;
  33. }
  34. else
  35. {
  36. for (int Index = 0; Index < array1.Count(); Index++)
  37. {
  38. if (!Equals(array1.ElementAt(Index), array2.ElementAt(Index)))
  39. {
  40. return false;
  41. }
  42. }
  43. }
  44. return true;
  45. }
  46. [TestMethod]
  47. public void ReadModuleInfoRequest_TestMethod0()
  48. {
  49. var request = new ReadModuleInfoRequest();
  50. var parser = new Parser();
  51. var actual = parser.Serialize(request);
  52. var expect = new byte[] { 0x04, 0x01, 0x15, 0xE5 };
  53. Assert.AreEqual(true, ValueEquals(expect, actual));
  54. }
  55. [TestMethod]
  56. public void ReadModuleInfoRequest_TestMethod1()
  57. {
  58. var request = new ReadModuleInfoRequest();
  59. request.ModulePhysicalAddress = 2;
  60. var parser = new Parser();
  61. var actual = parser.Serialize(request);
  62. var expect = new byte[] { 0x04, 0x02, 0x15, 0xE4 };
  63. Assert.AreEqual(true, ValueEquals(expect, actual));
  64. }
  65. [TestMethod]
  66. public void ReadModuleInfoResponse_TestMethod0()
  67. {
  68. var raw = "20 01 15 00 43 55 54 31 30 30 2D 50 42 4F 43 20 56 31 2E 30 20 32 30 31 33 2D 30 35 2D 33 30 17".ToBytes();
  69. var parser = new Parser();
  70. var actual = parser.Deserialize(raw) as ReadModuleInfoResponse;
  71. Assert.AreEqual(true, actual != null);
  72. Assert.AreEqual(true, actual.模块返回状态 == ShengJu_CUT100_DES.MessageEntity.IncomingMessageBase.ModuleStateEnum.命令执行成功);
  73. Assert.AreEqual(true, actual.ModelAndVersion == "CUT100-PBOC V1.0 2013-05-30");
  74. }
  75. [TestMethod]
  76. public void FormatCardRequest_TestMethod0()
  77. {
  78. var request = new FormatCardRequest(Enumerable.Repeat<byte>(0x00, 16).ToArray(), Enumerable.Repeat<byte>(0xff, 16).ToArray());
  79. var parser = new Parser();
  80. var actual = parser.Serialize(request);
  81. var expect = "24 01 B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 3A".ToBytes();
  82. Assert.AreEqual(true, ValueEquals(expect, actual));
  83. }
  84. [TestMethod]
  85. public void FormatCardResponse_TestMethod0()
  86. {
  87. var raw = "05 01 B0 00 49".ToBytes();
  88. var parser = new Parser();
  89. var actual = parser.Deserialize(raw) as GenericSuccessResponse;
  90. Assert.AreEqual(true, actual != null);
  91. Assert.AreEqual(true, actual.模块返回状态 == ShengJu_CUT100_DES.MessageEntity.IncomingMessageBase.ModuleStateEnum.命令执行成功);
  92. }
  93. [TestMethod]
  94. public void FormatCardResponse_TestMethod1()
  95. {
  96. var raw = "06 01 B0 0A AE 90".ToBytes();
  97. var parser = new Parser();
  98. var actual = parser.Deserialize(raw) as GenericFailureResponse;
  99. Assert.AreEqual(true, actual != null);
  100. Assert.AreEqual(true, actual.模块返回状态 == ShengJu_CUT100_DES.MessageEntity.IncomingMessageBase.ModuleStateEnum.初始化CPU卡文件系统失败);
  101. Assert.AreEqual(true, actual.CpuCardState == ShengJu_CUT100_DES.MessageEntity.IncomingMessageBase.CpuCardStateEnum.当前验证状态不允许执行请求的命令_or密钥错误_or权限不够);
  102. }
  103. [TestMethod]
  104. public void WriteAppFileRequest_TestMethod0()
  105. {
  106. var request = new WriteAppFileRequest(1, 0, Enumerable.Repeat<byte>(0x00, 16).ToArray(), Enumerable.Repeat<byte>(0xaa, 32).ToArray());
  107. var parser = new Parser();
  108. var actual = parser.Serialize(request);
  109. var expect = "36 01 B1 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA D6".ToBytes();
  110. Assert.AreEqual(true, ValueEquals(expect, actual));
  111. }
  112. [TestMethod]
  113. public void WriteAppFileResponse_TestMethod0()
  114. {
  115. var raw = "05 01 B1 00 48".ToBytes();
  116. var parser = new Parser();
  117. var actual = parser.Deserialize(raw) as GenericSuccessResponse;
  118. Assert.AreEqual(true, actual != null);
  119. Assert.AreEqual(true, actual.模块返回状态 == ShengJu_CUT100_DES.MessageEntity.IncomingMessageBase.ModuleStateEnum.命令执行成功);
  120. }
  121. [TestMethod]
  122. public void ActivateATypeCardRequest_TestMethod0()
  123. {
  124. var request = new ActivateATypeCardRequest();
  125. var parser = new Parser();
  126. var actual = parser.Serialize(request);
  127. var expect = "04 01 16 E4".ToBytes();
  128. Assert.AreEqual(true, ValueEquals(expect, actual));
  129. }
  130. [TestMethod]
  131. public void ActivateATypeCardResponse_TestMethod0()
  132. {
  133. var raw = "09 01 16 00 F6 65 34 49 07".ToBytes();
  134. var parser = new Parser();
  135. var actual = parser.Deserialize(raw) as ActivateATypeCardResponse;
  136. Assert.AreEqual(true, actual != null);
  137. Assert.AreEqual(true, actual.模块返回状态 == ShengJu_CUT100_DES.MessageEntity.IncomingMessageBase.ModuleStateEnum.命令执行成功);
  138. Assert.AreEqual(true, ValueEquals(actual.UID, "F6 65 34 49".ToBytes()));
  139. }
  140. [TestMethod]
  141. public void ReadAppFileRequest_TestMethod0()
  142. {
  143. var request = new ReadAppFileRequest(1, 0, Enumerable.Repeat<byte>(0x00, 16).ToArray());
  144. var parser = new Parser();
  145. var actual = parser.Serialize(request);
  146. var expect = "16 01 B2 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 35".ToBytes();
  147. Assert.AreEqual(true, ValueEquals(expect, actual));
  148. }
  149. [TestMethod]
  150. public void ReadAppFileResponse_TestMethod0()
  151. {
  152. var raw = "25 01 B2 00 AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA E7".ToBytes();
  153. var parser = new Parser();
  154. var actual = parser.Deserialize(raw) as ReadAppFileResponse;
  155. Assert.AreEqual(true, actual != null);
  156. Assert.AreEqual(true, actual.模块返回状态 == ShengJu_CUT100_DES.MessageEntity.IncomingMessageBase.ModuleStateEnum.命令执行成功);
  157. Assert.AreEqual(true, ValueEquals(actual.Data, Enumerable.Repeat<byte>(0xAA, 32)));
  158. }
  159. [TestMethod]
  160. public void ModifyPredefinedFileKey_TestMethod0()
  161. {
  162. var request = new ModifyPredefinedFileKey(ModifyPredefinedFileKey.PredefinedFileKeyTypeEnum.文件1读密钥,
  163. Enumerable.Repeat<byte>(0x00, 16).ToArray(),
  164. Enumerable.Repeat<byte>(0xff, 16).ToArray());
  165. var parser = new Parser();
  166. var actual = parser.Serialize(request);
  167. var expect = "25 01 B3 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 35".ToBytes();
  168. Assert.AreEqual(true, ValueEquals(expect, actual));
  169. }
  170. [TestMethod]
  171. public void ReadAppDirsRequest_TestMethod0()
  172. {
  173. var request = new ReadAppDirsRequest(Enumerable.Repeat<byte>(0x00, 16).ToArray());
  174. var parser = new Parser();
  175. var actual = parser.Serialize(request);
  176. var expect = "15 01 B8 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 30".ToBytes();
  177. Assert.AreEqual(true, ValueEquals(expect, actual));
  178. }
  179. [TestMethod]
  180. public void ReadAppDirsResponse_TestMethod0()
  181. {
  182. var raw = "0C 01 B8 00 02 01 10 00 F1 AD 00 89".ToBytes();
  183. var parser = new Parser();
  184. var actual = parser.Deserialize(raw) as ReadAppDirsResponse;
  185. Assert.AreEqual(true, actual != null);
  186. Assert.AreEqual(true, actual.模块返回状态 == ShengJu_CUT100_DES.MessageEntity.IncomingMessageBase.ModuleStateEnum.命令执行成功);
  187. Assert.AreEqual(true, actual.DirCount == 2);
  188. Assert.AreEqual(true, actual.DirIds.Count == 2);
  189. Assert.AreEqual(true, ValueEquals(actual.DirIds[0], new byte[] { 0x01, 0x10, 0x00 }));
  190. Assert.AreEqual(true, ValueEquals(actual.DirIds[1], new byte[] { 0xF1, 0xAD, 0x00 }));
  191. }
  192. [TestMethod]
  193. public void SerializeBytes_TestMethod0()
  194. {
  195. int[] data0 = new int[] { 0 };
  196. var json0 = JsonSerializer.Serialize(data0);
  197. byte[] data1 = new byte[] { 0, 0 };
  198. var json1 = JsonSerializer.Serialize(data1);
  199. byte[] data2 = new byte[] { 0, 0, 0 };
  200. var json2 = JsonSerializer.Serialize(data2);
  201. byte[] data3 = new byte[] { 0, 0, 0, 0 };
  202. var json3 = JsonSerializer.Serialize(data3);
  203. }
  204. }
  205. }