123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184 |
- using System;
- using Microsoft.VisualStudio.TestTools.UnitTesting;
- using System.Linq;
- using System.Collections.Generic;
- using Wayne_VaporRecoveryDataCollectorBoard;
- using Edge.Core.Parser.BinaryParser.Util;
- namespace Wayne_VaporRecoveryDataCollectorBoard_Test
- {
- [TestClass]
- public class StateMachineMessageCutterUnitTest
- {
- public static bool ValueEquals(IEnumerable<byte> array1, IEnumerable<byte> 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 ShouldCutTest1()
- {
- var cutter = new StateMachineMessageCutter();
- int onMsgCutCalledTimes = 0;
- byte[] msg = null;
- cutter.OnMessageCut += (s, a) =>
- {
- onMsgCutCalledTimes++;
- msg = cutter.Message;
- };
- var rawRealCompleteMsg = new byte[] { 1, 0x68, 3, 4, 3, 5, 0, 8, 0xA0, 0x16 };
- cutter.Feed(rawRealCompleteMsg);
- Assert.AreEqual(true, onMsgCutCalledTimes == 1);
- Assert.AreEqual(true, ValueEquals(msg, rawRealCompleteMsg.Skip(1)));
- }
- [TestMethod]
- public void ShouldCutTest2()
- {
- var cutter = new StateMachineMessageCutter();
- int onMsgCutCalledTimes = 0;
- byte[] msg = null;
- cutter.OnMessageCut += (s, a) =>
- {
- onMsgCutCalledTimes++;
- msg = cutter.Message;
- };
- var rawRealCompleteMsg = new byte[] { 1, 0x68, 3, 4, 3, 5, 0, 8, 0xA0, 0x16 };
- cutter.Feed(rawRealCompleteMsg);
- Assert.AreEqual(true, onMsgCutCalledTimes == 1);
- Assert.AreEqual(true, ValueEquals(msg, rawRealCompleteMsg.Skip(1)));
- // feed again
- cutter.Feed(rawRealCompleteMsg);
- Assert.AreEqual(true, onMsgCutCalledTimes == 2);
- Assert.AreEqual(true, ValueEquals(msg, rawRealCompleteMsg.Skip(1)));
- }
- [TestMethod]
- public void ShouldCutTest3()
- {
- var cutter = new StateMachineMessageCutter();
- int onMsgCutCalledTimes = 0;
- byte[] msg = null;
- cutter.OnMessageCut += (s, a) =>
- {
- onMsgCutCalledTimes++;
- msg = cutter.Message;
- };
- var rawRealCompleteMsg = new byte[] { 1, 2, 3, 4, 0xFA, 0xFA, 5, 0, 8, 1, 2, 3, 4, 5, 6, 7, 8, 0xA0, 0xB0 };
- cutter.Feed(rawRealCompleteMsg);
- Assert.AreEqual(true, onMsgCutCalledTimes == 0);
- Assert.AreEqual(true, msg == null);
- }
- [TestMethod]
- public void ShouldCutTest4()
- {
- var cutter = new StateMachineMessageCutter();
- int onMsgCutCalledTimes = 0;
- byte[] msg = null;
- cutter.OnMessageCut += (s, a) =>
- {
- onMsgCutCalledTimes++;
- msg = cutter.Message;
- };
- var rawRealCompleteMsg = new byte[] { 1, 2, 3, 4, 0xFA, 0xFA, 0xFA, 0x68, 3, 4, 3, 5, 0, 8, 0xA0, 0x16 };
- cutter.Feed(rawRealCompleteMsg);
- Assert.AreEqual(true, onMsgCutCalledTimes == 1);
- Assert.AreEqual(true, ValueEquals(msg, rawRealCompleteMsg.Skip(7)));
- }
- [TestMethod]
- public void ShouldCutTest6()
- {
- var cutter = new StateMachineMessageCutter();
- int onMsgCutCalledTimes = 0;
- byte[] msg = null;
- cutter.OnMessageCut += (s, a) =>
- {
- onMsgCutCalledTimes++;
- msg = cutter.Message;
- };
- var rawRealCompleteMsg = new byte[] { 1, 2, 3, 4, 0xFA, 0xFA, 0xFA, 0x68, 3, 4, 3, 5, 0, 8, 0xA0, 17 };
- cutter.Feed(rawRealCompleteMsg);
- Assert.AreEqual(true, onMsgCutCalledTimes == 0);
- }
- [TestMethod]
- public void ShouldCutTest7()
- {
- var cutter = new StateMachineMessageCutter();
- int onMsgCutCalledTimes = 0;
- List<byte[]> msg = new List<byte[]>();
- cutter.OnMessageCut += (s, a) =>
- {
- onMsgCutCalledTimes++;
- msg.Add(cutter.Message);
- };
- var rawRealCompleteMsg = new byte[] { 11, 22, 1, 2, 3, 4, 0xFA, 0xFA, 0xFA, 0x68, 3, 4, 3, 5, 0, 8, 0xA0, 0x16,
- 0xFA, 0x68, 3, 4, 3, 5, 0, 11, 0xA0, 0x16, };
- var validMsg0 = new byte[] { 0x68, 3, 4, 3, 5, 0, 8, 0xA0, 0x16 };
- var validMsg1 = new byte[] { 0x68, 3, 4, 3, 5, 0, 11, 0xA0, 0x16, };
- cutter.Feed(rawRealCompleteMsg);
- Assert.AreEqual(true, onMsgCutCalledTimes == 2);
- Assert.AreEqual(true, ValueEquals(msg[0], validMsg0));
- Assert.AreEqual(true, ValueEquals(msg[1], validMsg1));
- }
- [TestMethod]
- public void ShouldCutTest8()
- {
- var cutter = new StateMachineMessageCutter();
- int onMsgCutCalledTimes = 0;
- byte[] msg = null;
- cutter.OnMessageCut += (s, a) =>
- {
- onMsgCutCalledTimes++;
- msg = cutter.Message;
- };
- var rawRealCompleteMsg = "68 06 00 00 16".ToBytes();
- cutter.Feed(rawRealCompleteMsg);
- Assert.AreEqual(true, onMsgCutCalledTimes == 1);
- }
- }
- }
|