123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258 |
- using System;
- using Microsoft.VisualStudio.TestTools.UnitTesting;
- using System.Linq;
- using Edge.Core.Parser.BinaryParser.Util;
- using System.Collections.Generic;
- using Wayne_Pump_Dart;
- namespace Wayne_Pump_Dart_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;
- };
- string rawRealCompleteMsg = "50 20 FA";
- cutter.Feed(rawRealCompleteMsg.ToBytes());
- Assert.AreEqual(true, onMsgCutCalledTimes == 1);
- Assert.AreEqual(true, ValueEquals(msg, rawRealCompleteMsg.ToBytes()));
- }
- [TestMethod]
- public void ShouldCutTest2()
- {
- StateMachineMessageCutter cutter = new StateMachineMessageCutter();
- int onMsgCutCalledTimes = 0;
- byte[] msg = null;
- cutter.OnMessageCut += (s, a) =>
- {
- onMsgCutCalledTimes++;
- msg = cutter.Message;
- };
- string rawRealCompleteMsg = "50 20 FA";
- string rawRealMsgWithExtraHeaderAndTail = "00 20 02 50 20 FA 00 00 00 00 00";
- cutter.Feed(rawRealMsgWithExtraHeaderAndTail.ToBytes());
- Assert.AreEqual(true, onMsgCutCalledTimes == 1);
- Assert.AreEqual(true, ValueEquals(msg, rawRealCompleteMsg.ToBytes()));
- }
- [TestMethod]
- public void ShouldCutTest3()
- {
- StateMachineMessageCutter cutter = new StateMachineMessageCutter();
- int onMsgCutCalledTimes = 0;
- byte[] msg = null;
- cutter.OnMessageCut += (s, a) =>
- {
- onMsgCutCalledTimes++;
- msg = cutter.Message;
- };
- string rawRealCompleteMsg = "50 20 FA FA";
- string rawRealMsgWithExtraHeaderAndTail = "50 20 10 FA FA";
- cutter.Feed(rawRealMsgWithExtraHeaderAndTail.ToBytes());
- Assert.AreEqual(true, onMsgCutCalledTimes == 1);
- Assert.AreEqual(true, ValueEquals(msg, rawRealCompleteMsg.ToBytes()));
- }
- [TestMethod]
- public void ShouldCutTest3_1()
- {
- StateMachineMessageCutter cutter = new StateMachineMessageCutter();
- int onMsgCutCalledTimes = 0;
- byte[] msg = null;
- cutter.OnMessageCut += (s, a) =>
- {
- onMsgCutCalledTimes++;
- msg = cutter.Message;
- };
- string rawRealCompleteMsg = "50 20 FA FA";
- string rawRealMsgWithExtraHeaderAndTail = "50 20 10 FA FA FA";
- cutter.Feed(rawRealMsgWithExtraHeaderAndTail.ToBytes());
- Assert.AreEqual(true, onMsgCutCalledTimes == 1);
- Assert.AreEqual(true, ValueEquals(msg, rawRealCompleteMsg.ToBytes()));
- }
- [TestMethod]
- public void ShouldCutTest3_2()
- {
- StateMachineMessageCutter cutter = new StateMachineMessageCutter();
- int onMsgCutCalledTimes = 0;
- byte[] msg = null;
- cutter.OnMessageCut += (s, a) =>
- {
- onMsgCutCalledTimes++;
- msg = cutter.Message;
- };
- string rawRealCompleteMsg = "50 20 FA FA FA";
- string rawRealMsgWithExtraHeaderAndTail = "50 20 10 FA 10 FA FA";
- cutter.Feed(rawRealMsgWithExtraHeaderAndTail.ToBytes());
- Assert.AreEqual(true, onMsgCutCalledTimes == 1);
- Assert.AreEqual(true, ValueEquals(msg, rawRealCompleteMsg.ToBytes()));
- }
- [TestMethod]
- public void ShouldCutTest3_3()
- {
- StateMachineMessageCutter cutter = new StateMachineMessageCutter();
- int onMsgCutCalledTimes = 0;
- byte[] msg = null;
- cutter.OnMessageCut += (s, a) =>
- {
- onMsgCutCalledTimes++;
- msg = cutter.Message;
- };
- string rawRealCompleteMsg = "50 20 FA FA 33 FA";
- string rawRealMsgWithExtraHeaderAndTail = "50 20 10 FA 10 FA 33 FA 44";
- cutter.Feed(rawRealMsgWithExtraHeaderAndTail.ToBytes());
- Assert.AreEqual(true, onMsgCutCalledTimes == 1);
- Assert.AreEqual(true, ValueEquals(msg, rawRealCompleteMsg.ToBytes()));
- }
- [TestMethod]
- public void ShouldCutTest4()
- {
- StateMachineMessageCutter cutter = new StateMachineMessageCutter();
- int onMsgCutCalledTimes = 0;
- byte[] msg = null;
- cutter.OnMessageCut += (s, a) =>
- {
- onMsgCutCalledTimes++;
- msg = cutter.Message;
- };
- string rawRealCompleteMsg = "50 20 FA";
- string rawRealMsgWithExtraHeaderAndTail = "50 20 FA 50 20 FA";
- cutter.Feed(rawRealMsgWithExtraHeaderAndTail.ToBytes());
- Assert.AreEqual(true, onMsgCutCalledTimes == 2);
- Assert.AreEqual(true, ValueEquals(msg, rawRealCompleteMsg.ToBytes()));
- }
- [TestMethod]
- public void ShouldCutTest4_1()
- {
- StateMachineMessageCutter cutter = new StateMachineMessageCutter();
- int onMsgCutCalledTimes = 0;
- byte[] msg = null;
- string rawRealCompleteMsg = "50 20 FA";
- cutter.OnMessageCut += (s, a) =>
- {
- onMsgCutCalledTimes++;
- msg = cutter.Message;
- Assert.AreEqual(true, ValueEquals(msg, rawRealCompleteMsg.ToBytes()));
- };
- string rawRealMsgWithExtraHeaderAndTail = "50 20 FA 22 50 20 FA 22 50 20 FA 22 50 20 FA";
- cutter.Feed(rawRealMsgWithExtraHeaderAndTail.ToBytes());
- Assert.AreEqual(true, onMsgCutCalledTimes == 4);
- Assert.AreEqual(true, ValueEquals(msg, rawRealCompleteMsg.ToBytes()));
- }
- [TestMethod]
- public void ShouldCutTest4_2()
- {
- StateMachineMessageCutter cutter = new StateMachineMessageCutter();
- int onMsgCutCalledTimes = 0;
- byte[] msg = null;
- string rawRealCompleteMsg = "50 20 50 20 FA";
- cutter.OnMessageCut += (s, a) =>
- {
- onMsgCutCalledTimes++;
- msg = cutter.Message;
- Assert.AreEqual(true, ValueEquals(msg, rawRealCompleteMsg.ToBytes()));
- };
- string rawRealMsgWithExtraHeaderAndTail = "50 20 50 20 FA " +
- "22 50 20 50 20 FA " +
- "22 50 20 50 20 FA " +
- "22 50 20 50 20 FA" +
- "22 50 20 50 20 FA";
- cutter.Feed(rawRealMsgWithExtraHeaderAndTail.ToBytes());
- Assert.AreEqual(true, onMsgCutCalledTimes == 5);
- Assert.AreEqual(true, ValueEquals(msg, rawRealCompleteMsg.ToBytes()));
- }
- [TestMethod]
- public void ShouldCutTest4_3()
- {
- StateMachineMessageCutter cutter = new StateMachineMessageCutter();
- int onMsgCutCalledTimes = 0;
- byte[] msg = null;
- string rawRealCompleteMsg = "51 39 02 08 00 00 03 97 00 00 30 64 03 04 00 07 72 00 01 01 3F 3F 05 FA E3 51 39 02 08 00 00 03 97 00 00 30 64 03 04 00 07 72 00 01 01 05 FA E3 03 FA";
- cutter.OnMessageCut += (s, a) =>
- {
- onMsgCutCalledTimes++;
- msg = cutter.Message;
- Assert.AreEqual(true, ValueEquals(msg, rawRealCompleteMsg.ToBytes()));
- };
- string rawRealMsgWithExtraHeaderAndTail = "51 39 02 08 00 00 03 97 00 00 30 64 03 04 00 07 72 00 01 01 3F 3F 05 FA E3 51 39 02 08 00 00 03 97 00 00 30 64 03 04 00 07 72 00 01 01 05 FA E3 03 FA";
- cutter.Feed(rawRealMsgWithExtraHeaderAndTail.ToBytes());
- Assert.AreEqual(true, onMsgCutCalledTimes == 5);
- Assert.AreEqual(true, ValueEquals(msg, rawRealCompleteMsg.ToBytes()));
- }
- [TestMethod]
- public void ShouldCutTest4_4()
- {
- StateMachineMessageCutter cutter = new StateMachineMessageCutter();
- int onMsgCutCalledTimes = 0;
- List<byte[]> messagesCut = null;
- string rawRealCompleteMsg = "53 20 FA 53 70 FA";
- cutter.OnMessageCut += (s, a) =>
- {
- onMsgCutCalledTimes++;
- messagesCut.Add(cutter.Message);
- };
- cutter.Feed(rawRealCompleteMsg.ToBytes());
- Assert.AreEqual(true, onMsgCutCalledTimes == 2);
- Assert.AreEqual(true, ValueEquals(messagesCut[0], "53 20 FA".ToBytes()));
- Assert.AreEqual(true, ValueEquals(messagesCut[1], "53 70 FA".ToBytes()));
- }
- }
- }
|