123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 |
- using Microsoft.VisualStudio.TestTools.UnitTesting;
- using Edge.Core.Parser.BinaryParser.Util;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using Censtar_31064V105OrV106_Pump;
- namespace Censtar_31064V105OrV106_Pump_Test
- {
- [TestClass]
- public class MessageCutterTest
- {
- 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 MessageCutterV105();
- int onMsgCutCalledTimes = 0;
- int onInvalidMsgCalledTimes = 0;
- List<byte[]> messages = new List<byte[]>();
- cutter.OnMessageCut += (s, a) =>
- {
- onMsgCutCalledTimes++;
- messages.Add(cutter.Message);
- };
- cutter.OnInvalidMessageRead += (e, f) =>
- {
- onInvalidMsgCalledTimes++;
- };
- var rawValid = "F5 01 A3 59 B2 3C".ToBytes();
- cutter.Feed(rawValid);
- Assert.AreEqual(true, onMsgCutCalledTimes == 1);
- Assert.AreEqual(true, messages.Count == 1);
- Assert.AreEqual(true, ValueEquals(messages[0], rawValid));
- Assert.AreEqual(true, onInvalidMsgCalledTimes == 0);
- }
- [TestMethod]
- public void ShouldCutTest2()
- {
- var cutter = new MessageCutterV105();
- int onMsgCutCalledTimes = 0;
- int onInvalidMsgCalledTimes = 0;
- List<byte[]> messages = new List<byte[]>();
- cutter.OnMessageCut += (s, a) =>
- {
- onMsgCutCalledTimes++;
- messages.Add(cutter.Message);
- };
- cutter.OnInvalidMessageRead += (e, f) =>
- {
- onInvalidMsgCalledTimes++;
- };
- var rawValid = "F5 01 A3 59 B2 3C";
- var raw = "11 22 33 44 " + rawValid + " 55 66 77";
- cutter.Feed(raw.ToBytes());
- Assert.AreEqual(true, onMsgCutCalledTimes == 1);
- Assert.AreEqual(true, messages.Count == 1);
- Assert.AreEqual(true, ValueEquals(messages[0], rawValid.ToBytes()));
- Assert.AreEqual(true, onInvalidMsgCalledTimes > 0);
- }
- [TestMethod]
- public void ShouldCutTest3()
- {
- var cutter = new MessageCutterV105();
- int onMsgCutCalledTimes = 0;
- int onInvalidMsgCalledTimes = 0;
- List<byte[]> messages = new List<byte[]>();
- cutter.OnMessageCut += (s, a) =>
- {
- onMsgCutCalledTimes++;
- messages.Add(cutter.Message);
- };
- cutter.OnInvalidMessageRead += (e, f) =>
- {
- onInvalidMsgCalledTimes++;
- };
- var rawValid = "F5 01 A3 59 B2 3C";
- var raw = "11 22 33 44 F5 FF" + rawValid + " 55 66 77";
- cutter.Feed(raw.ToBytes());
- Assert.AreEqual(true, onMsgCutCalledTimes == 1);
- Assert.AreEqual(true, messages.Count == 1);
- Assert.AreEqual(true, ValueEquals(messages[0], rawValid.ToBytes()));
- Assert.AreEqual(true, onInvalidMsgCalledTimes > 0);
- }
- [TestMethod]
- public void ShouldCutTest4()
- {
- var cutter = new MessageCutterV105();
- int onMsgCutCalledTimes = 0;
- int onInvalidMsgCalledTimes = 0;
- List<byte[]> messages = new List<byte[]>();
- cutter.OnMessageCut += (s, a) =>
- {
- onMsgCutCalledTimes++;
- messages.Add(cutter.Message);
- };
- cutter.OnInvalidMessageRead += (e, f) =>
- {
- onInvalidMsgCalledTimes++;
- };
- var rawValid = "F5 01 A3 59 B2 3C";
- var raw = "11 22 33 44 F5 FF" + rawValid + " 55 66 77" + rawValid + "AA" + rawValid;
- cutter.Feed(raw.ToBytes());
- Assert.AreEqual(true, onMsgCutCalledTimes == 3);
- Assert.AreEqual(true, messages.Count == 3);
- Assert.AreEqual(true, ValueEquals(messages[0], rawValid.ToBytes()));
- Assert.AreEqual(true, onInvalidMsgCalledTimes > 0);
- }
- [TestMethod]
- public void ShouldNotCutTest1()
- {
- var cutter = new MessageCutterV105();
- int onMsgCutCalledTimes = 0;
- int onInvalidMsgCalledTimes = 0;
- List<byte[]> messages = new List<byte[]>();
- cutter.OnMessageCut += (s, a) =>
- {
- onMsgCutCalledTimes++;
- messages.Add(cutter.Message);
- };
- cutter.OnInvalidMessageRead += (e, f) =>
- {
- onInvalidMsgCalledTimes++;
- };
- //below give a wrong length, the correct length byte should be A3, but i make it to A4.
- var rawInvalid = "F5 01 A4 59 B2 3C";
- cutter.Feed(rawInvalid.ToBytes());
- Assert.AreEqual(true, onMsgCutCalledTimes == 0);
- Assert.AreEqual(true, messages.Count == 0);
- //Assert.AreEqual(true, ValueEquals(messages[0], rawInvalid.ToBytes()));
- Assert.AreEqual(true, onInvalidMsgCalledTimes == 0);
- }
- }
- }
|