using System; using System.Collections.Generic; using System.Linq; using Edge.Core.Parser.BinaryParser.Util; using Microsoft.VisualStudio.TestTools.UnitTesting; using VaporRecoveryOnlineWatchHubApp; using Wayne_VaporRecoveryDataCollectorBoard.MessageEntity; using Wayne_VaporRecoveryDataCollectorBoard.MessageEntity.Incoming; using Wayne_VaporRecoveryDataCollectorBoard.MessageEntity.Outgoing; namespace Wayne_VaporRecoveryDataCollectorBoard_Test { [TestClass] public class ParserTest { public static bool ValueEquals(IEnumerable array1, IEnumerable array2) { if (array1 == null && array2 == null) { return true; } if ((array1 == null) || (array2 == null)) { return false; } if (array1.Count() != array2.Count()) { return false; } if (array1.Equals(array2)) { return true; } else { for (int Index = 0; Index < array1.Count(); Index++) { if (!Equals(array1.ElementAt(Index), array2.ElementAt(Index))) { return false; } } } return true; } [TestMethod] public void READ_HISTORY_NUM_Request_TestMethod1() { READ_HISTORY_NUM_Request request = new READ_HISTORY_NUM_Request(1) { Address = 1 }; Wayne_VaporRecoveryDataCollectorBoard.Parser parser = new Wayne_VaporRecoveryDataCollectorBoard.Parser(); var expected = new byte[] { 0x68, 01, 07, 01, 01, 0x0A, 0x16 }; var actual = parser.Serialize(request); Assert.AreEqual(true, ValueEquals(expected, actual)); } [TestMethod] public void SET_ADDRESS_Request_TestMethod1() { SET_ADDRESS_Request request = new SET_ADDRESS_Request(17, 5); Wayne_VaporRecoveryDataCollectorBoard.Parser parser = new Wayne_VaporRecoveryDataCollectorBoard.Parser(); var expected = new byte[] { 0x68, 00, 0xA1, 05, 0x11, 00, 00, 00, 0x05, 0xBC, 0x16 }; var actual = parser.Serialize(request); Assert.AreEqual(true, ValueEquals(expected, actual), "0x" + actual.GetHexString()); } [TestMethod] public void READ_ONE_HISTORY_DATA_Response_TestMethod1() { var raw = new byte[] { // spliter 0x68, // Address 0x01, // CommandCode 0x03, // DataFieldLength 0x1B, // Board nozzle number 0x03, //FuellingStartTime 0x18, 0x04, 0x25, 0x18, 0x46, 0x49, 0x03, //LiquidVolume 0x00, 0x01, 0x9E, 0xA6, //AirVolume 0x00, 0x00, 0x00, 0x08, //FuellingEndTime 0x18, 0x04, 0x25, 0x18, 0x47, 0x38, 0x03, 0x00, 0x04, 0xC7, 0x70, 0x6E, 0x16 }; var parser = new Wayne_VaporRecoveryDataCollectorBoard.Parser(); var actual = parser.Deserialize(raw) as READ_ONE_HISTORY_DATA_Response; Assert.AreEqual(true, actual.NozzleNumber == 3); var debugStr = actual.ToLogString(); } [TestMethod] public void READ_ONE_HISTORY_DATA_Response_TestMethod2() { 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 }; var parser = new Wayne_VaporRecoveryDataCollectorBoard.Parser(); var actual = parser.Deserialize(raw) as READ_ONE_HISTORY_DATA_Response; Assert.AreEqual(true, actual.NozzleNumber == 2); var debugStr = actual.ToLogString(); } [TestMethod] public void READ_PARA_Response_TestMethod1() { 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 }; Wayne_VaporRecoveryDataCollectorBoard.Parser parser = new Wayne_VaporRecoveryDataCollectorBoard.Parser(); var response = parser.Deserialize(raw) as READ_PARA_Response; var debugStr = response.ToLogString(); } [TestMethod] public void READ_WORKING_AND_TYPE_Response_TestMethod1() { var raw = new byte[] { 0x68, 0x01, 0x01, 0x0E, 0x11, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x02, 0x61, 0x60, 0x00, 0x00, 0x00, 0x00, 0xE7, 0x16 }; Wayne_VaporRecoveryDataCollectorBoard.Parser parser = new Wayne_VaporRecoveryDataCollectorBoard.Parser(); var response = parser.Deserialize(raw) as READ_WORKING_AND_TYPE_Response; var debugStr = response.ToLogString(); } [TestMethod] public void READ_WORKING_AND_TYPE_Response_TestMethod2() { var raw = new byte[] { 0x68, 0x01, 0x01, 0x05, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0B, 0x16 }; var parser = new Wayne_VaporRecoveryDataCollectorBoard.Parser(); var actual = parser.Deserialize(raw) as READ_WORKING_AND_TYPE_Response; var debugStr = actual.ToLogString(); } [TestMethod] public void READ_WORKING_AND_TYPE_Response_TestMethod3() { //包起始标志(1B)+采集器地址Addr(1B)+命令代码(1B)+数据域长度(1B)+数据域(由数据域长度指定)+校验CS(1B)+包结束标志(1B) var raw = new byte[] { 0x68, 0x01, 0x01, 0x05, 0xFE, 0x0B, 0x68, 0x83, 0x06, 0x09, 0x16 }; var parser = new Wayne_VaporRecoveryDataCollectorBoard.Parser(); var actual = parser.Deserialize(raw) as READ_WORKING_AND_TYPE_Response; var debugStr = actual.ToLogString(); var liquidAndAirFlowData = actual.NozzleLiquidAndAirFlowData.FirstOrDefault(n => n.Item1 == 2); var vaporVolumeWithDecimal = Util.RoundToDouble(liquidAndAirFlowData.Item3 / 1000); var liquidVolumeWithDecimal = Util.RoundToDouble(liquidAndAirFlowData.Item2 / 1000); var vaporAndLiquidRatio = Util.RoundToDouble(vaporVolumeWithDecimal / liquidVolumeWithDecimal); } [TestMethod] public void READ_WORKING_AND_TYPE_Response_TestMethod4() { //包起始标志(1B)+采集器地址Addr(1B)+命令代码(1B)+数据域长度(1B)+数据域(由数据域长度指定)+校验CS(1B)+包结束标志(1B) var raw = "68 06 00 00 16 00".ToBytes(); var parser = new Wayne_VaporRecoveryDataCollectorBoard.Parser(); var actual = parser.Deserialize(raw) as COLLECTOR_BUSY_Response; var debugStr = actual.ToLogString(); Assert.AreEqual(true, actual != null); } } }