123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491 |
- using Edge.Core.Parser.BinaryParser.Util;
- using Microsoft.VisualStudio.TestTools.UnitTesting;
- using System.Collections.Generic;
- using System.Linq;
- using ZheJiangLanfeng_Pump;
- using ZheJiangLanfeng_Pump.MessageEntity;
- using static ZheJiangLanfeng_Pump.MessageBase;
- namespace ZheJiangLanfeng_Pump_Test
- {
- [TestClass]
- public class MessageUnitTest
- {
- 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 QueryStateRequestTestMethod1()
- {
- var request = new QueryStateRequest(1);
- var parser = new Parser();
- var actual = parser.Serialize(request);
- // 0x01 00 B8 00 00 00 00 00 00 00 00 48
- var expect = "A5 00 B8 00 00 00 00 00 00 00 00 48".ToBytes();
- Assert.AreEqual(true, ValueEquals(actual, expect), "0x" + actual.ToHexLogString());
- }
- [TestMethod]
- public void QueryStateRequestTestMethod2()
- {
- var request = new QueryStateRequest(0xA5);
- var parser = new Parser();
- var actual = parser.Serialize(request);
- // 0x01 00 B8 00 00 00 00 00 00 00 00 48
- var expect = "A5 00 B8 00 00 00 00 00 00 00 00 48".ToBytes();
- Assert.AreEqual(true, ValueEquals(actual, expect), "0x" + actual.ToHexLogString());
- }
- [TestMethod]
- public void ControlDispenserRequestTestMethod1()
- {
- var request = new ControlDispenserRequest(3);
- var parser = new Parser();
- var actual = parser.Serialize(request);
- // 0x01 00 B8 00 00 00 00 00 00 00 00 48
- var expect = "A5 00 A0 00 00 00 00 00 00 00 00 60".ToBytes();
- Assert.AreEqual(true, ValueEquals(actual, expect), "0x" + actual.ToHexLogString());
- }
- [TestMethod]
- public void UncontrolDispenserRequestTestMethod1()
- {
- var request = new UncontrolDispenserRequest(5);
- var parser = new Parser();
- var actual = parser.Serialize(request);
- // 0x01 00 B8 00 00 00 00 00 00 00 00 48
- var expect = "A5 00 B0 00 00 00 00 00 00 00 00 50".ToBytes();
- Assert.AreEqual(true, ValueEquals(actual, expect), "0x" + actual.ToHexLogString());
- }
- [TestMethod]
- public void FuelingRequestTestMethod1()
- {
- var request = new FuelingRequest(5);
- var parser = new Parser();
- var actual = parser.Serialize(request);
- // 0x01 00 B8 00 00 00 00 00 00 00 00 48
- var expect = "A5 00 A1 00 00 00 00 00 00 00 00 5F".ToBytes();
- Assert.AreEqual(true, ValueEquals(actual, expect), "0x" + actual.ToHexLogString());
- }
- [TestMethod]
- public void StopRequestTestMethod1()
- {
- var request = new StopRequest(10);
- var parser = new Parser();
- var actual = parser.Serialize(request);
- // 0x01 00 B8 00 00 00 00 00 00 00 00 48
- var expect = "A5 00 B1 00 00 00 00 00 00 00 00 4F".ToBytes();
- Assert.AreEqual(true, ValueEquals(actual, expect), "0x" + actual.ToHexLogString());
- }
- [TestMethod]
- public void FuelingWithFixedCashRequestTestMethod1()
- {
- var request = new FuelingWithFixedCashRequest(10, 12.21m);
- var parser = new Parser();
- var actual = parser.Serialize(request);
- // 0x01 00 B8 00 00 00 00 00 00 00 00 48
- var expect = "A5 00 A2 00 12 21 00 00 00 00 00 2B".ToBytes();
- Assert.AreEqual(true, ValueEquals(actual, expect), "0x" + actual.ToHexLogString());
- }
- [TestMethod]
- public void FuelingWithFixedCashRequestTestMethod2()
- {
- var request = new FuelingWithFixedCashRequest(10, 1234.56m);
- var parser = new Parser();
- var actual = parser.Serialize(request);
- // 0x01 00 B8 00 00 00 00 00 00 00 00 48
- var expect = "A5 00 A2 12 34 56 00 00 00 00 00 C2".ToBytes();
- Assert.AreEqual(true, ValueEquals(actual, expect), "0x" + actual.ToHexLogString());
- }
- [TestMethod]
- public void FuelingWithFixedCashRequestTestMethod3()
- {
- var request = new FuelingWithFixedCashRequest(10, 1234m);
- var parser = new Parser();
- var actual = parser.Serialize(request);
- // 0x01 00 B8 00 00 00 00 00 00 00 00 48
- var expect = "A5 00 A2 12 34 00 00 00 00 00 00 18".ToBytes();
- Assert.AreEqual(true, ValueEquals(actual, expect), "0x" + actual.ToHexLogString());
- }
- [TestMethod]
- public void FuelingWithFixedCashRequestTestMethod4()
- {
- var request = new FuelingWithFixedCashRequest(10, 12m);
- var parser = new Parser();
- var actual = parser.Serialize(request);
- // 0x01 00 B8 00 00 00 00 00 00 00 00 48
- var expect = "A5 00 A2 00 12 00 00 00 00 00 00 4C".ToBytes();
- Assert.AreEqual(true, ValueEquals(actual, expect), "0x" + actual.ToHexLogString());
- }
- [TestMethod]
- public void SettingPriceRequestTestMethod1()
- {
- var request = new SettingPriceRequest(10, 12m);
- var parser = new Parser();
- var actual = parser.Serialize(request);
- // 0x01 00 B8 00 00 00 00 00 00 00 00 48
- var expect = "A5 00 A4 12 00 00 00 00 00 00 00 4A".ToBytes();
- Assert.AreEqual(true, ValueEquals(actual, expect), "0x" + actual.ToHexLogString());
- }
- [TestMethod]
- public void SettingPriceRequestTestMethod2()
- {
- var request = new SettingPriceRequest(10, 12.21m);
- var parser = new Parser();
- var actual = parser.Serialize(request);
- var expect = "A5 00 A4 12 21 00 00 00 00 00 00 29".ToBytes();
- Assert.AreEqual(true, ValueEquals(actual, expect), "0x" + actual.ToHexLogString());
- }
- [TestMethod]
- public void SettingPriceRequestTestMethod3()
- {
- var request = new SettingPriceRequest(10, 7.89m);
- var parser = new Parser();
- var actual = parser.Serialize(request);
- var expect = "A5 00 A4 07 89 00 00 00 00 00 00 CC".ToBytes();
- Assert.AreEqual(true, ValueEquals(actual, expect), "0x" + actual.ToHexLogString());
- }
- [TestMethod]
- public void SettingPreValveRequestTestMethod1()
- {
- var request = new SettingPreValveRequest(10, 0.98m);
- var parser = new Parser();
- var actual = parser.Serialize(request);
- var expect = "A5 00 A6 98 00 00 00 00 00 00 00 C2".ToBytes();
- Assert.AreEqual(true, ValueEquals(actual, expect), "0x" + actual.ToHexLogString());
- }
- [TestMethod]
- public void SettingPreValveRequestTestMethod2()
- {
- var request = new SettingPreValveRequest(10, 0.9m);
- var parser = new Parser();
- var actual = parser.Serialize(request);
- var expect = "A5 00 A6 90 00 00 00 00 00 00 00 CA".ToBytes();
- Assert.AreEqual(true, ValueEquals(actual, expect), "0x" + actual.ToHexLogString());
- }
- [TestMethod]
- public void SettingPreValveRequestTestMethod3()
- {
- var request = new SettingPreValveRequest(10, 0.09m);
- var parser = new Parser();
- var actual = parser.Serialize(request);
- var expect = "A5 00 A6 09 00 00 00 00 00 00 00 51".ToBytes();
- Assert.AreEqual(true, ValueEquals(actual, expect), "0x" + actual.ToHexLogString());
- }
- [TestMethod]
- public void QueryStateResponseTestMethod1()
- {
- var raw = "0A 00 12 34 56 78 90 11 22 33 61 CC".ToBytes();
- var parser = new Parser();
- var actual = parser.Deserialize(raw) as QueryStateResponse;
- Assert.AreEqual(true, actual != null);
- Assert.AreEqual(0x5A, actual.NzlNo);
- Assert.AreEqual(12.34m, actual.GetPrice());
- Assert.AreEqual(5678.90m, actual.GetCash());
- Assert.AreEqual(1122.33m, actual.GetLiter());
- var states = actual.GetStates();
- Assert.AreEqual(true, states.Contains(QueryStateResponse.StateEnum.StopFuelingAndStandBy));
- }
- [TestMethod]
- public void QueryStateResponseTestMethod2()
- {
- var raw = "0A 00 12 34 56 78 90 11 22 33 E1 CC".ToBytes();
- var parser = new Parser();
- var actual = parser.Deserialize(raw) as QueryStateResponse;
- Assert.AreEqual(true, actual != null);
- Assert.AreEqual(0x5A, actual.NzlNo);
- Assert.AreEqual(12.34m, actual.GetPrice());
- Assert.AreEqual(5678.90m, actual.GetCash());
- Assert.AreEqual(1122.33m, actual.GetLiter());
- var states = actual.GetStates();
- Assert.AreEqual(true, states.Contains(QueryStateResponse.StateEnum.LiftedNzl));
- }
- [TestMethod]
- public void QueryStateResponseTestMethod3()
- {
- var raw = "5A 00 07 34 03 00 00 11 22 33 E2 CC".ToBytes();
- var parser = new Parser();
- var actual = parser.Deserialize(raw) as QueryStateResponse;
- Assert.AreEqual(true, actual != null);
- Assert.AreEqual(0x5A, actual.NzlNo);
- Assert.AreEqual(7.34m, actual.GetPrice());
- Assert.AreEqual(300, actual.GetCash());
- Assert.AreEqual(1122.33m, actual.GetLiter());
- var states = actual.GetStates();
- Assert.AreEqual(true, states.Contains(QueryStateResponse.StateEnum.Fueling));
- }
- [TestMethod]
- public void QueryStateResponseTestMethod4()
- {
- var raw = "5A 00 01 00 00 00 00 00 00 00 41 BE".ToBytes();
- var parser = new Parser();
- var actual = parser.Deserialize(raw) as QueryStateResponse;
- Assert.AreEqual(true, actual != null);
- Assert.AreEqual(0x5A, actual.NzlNo);
- }
- [TestMethod]
- public void QueryShiftSumResponseTestMethod1()
- {
- var raw = "0A 00 A9 12 34 56 78 90 87 65 43 CC".ToBytes();
- var parser = new Parser();
- var actual = parser.Deserialize(raw) as QueryShiftSumResponse;
- Assert.AreEqual(true, actual != null);
- Assert.AreEqual(0x5A, actual.NzlNo);
- Assert.AreEqual(12345678m, actual.RawLiterSum);
- Assert.AreEqual(90876543m, actual.RawMoneySum);
- Assert.AreEqual(123456.78m, actual.GetLiterSum());
- Assert.AreEqual(908765.43m, actual.GetMoneySum());
- }
- [TestMethod]
- public void QueryShiftSumResponseTestMethod2()
- {
- var raw = "0A 00 A9 12 34 56 00 00 87 65 43 CC".ToBytes();
- var parser = new Parser();
- var actual = parser.Deserialize(raw) as QueryShiftSumResponse;
- Assert.AreEqual(true, actual != null);
- Assert.AreEqual(0x5A, actual.NzlNo);
- Assert.AreEqual(12345600m, actual.RawLiterSum);
- Assert.AreEqual(876543m, actual.RawMoneySum);
- Assert.AreEqual(123456m, actual.GetLiterSum());
- Assert.AreEqual(8765.43m, actual.GetMoneySum());
- }
- [TestMethod]
- public void QueryTotalCashResponseTestMethod1()
- {
- var raw = "0A 00 AC 12 34 56 78 90 87 65 43 CC".ToBytes();
- var parser = new Parser();
- var actual = parser.Deserialize(raw) as QueryTotalCashResponse;
- Assert.AreEqual(true, actual != null);
- Assert.AreEqual(0x5A, actual.NzlNo);
- Assert.AreEqual(1234567890876543m, actual.RawMoneySum);
- Assert.AreEqual(12345678908765.43m, actual.GetMoneySum());
- }
- [TestMethod]
- public void QueryTotalCashResponseTestMethod2()
- {
- var raw = "0A 00 AC 00 00 56 78 00 87 65 43 CC".ToBytes();
- var parser = new Parser();
- var actual = parser.Deserialize(raw) as QueryTotalCashResponse;
- Assert.AreEqual(true, actual != null);
- Assert.AreEqual(0x5A, actual.NzlNo);
- Assert.AreEqual(567800876543m, actual.RawMoneySum);
- Assert.AreEqual(5678008765.43m, actual.GetMoneySum());
- }
- [TestMethod]
- public void QueryTotalCashResponseTestMethod3()
- {
- var raw = "0A 00 AC 00 00 56 78 00 87 00 00 CC".ToBytes();
- var parser = new Parser();
- var actual = parser.Deserialize(raw) as QueryTotalCashResponse;
- Assert.AreEqual(true, actual != null);
- Assert.AreEqual(0x5A, actual.NzlNo);
- Assert.AreEqual(567800870000m, actual.RawMoneySum);
- Assert.AreEqual(5678008700m, actual.GetMoneySum());
- }
- [TestMethod]
- public void QueryTotalLiterResponseTestMethod1()
- {
- var raw = "0A 00 AD 12 34 56 78 90 87 65 43 CC".ToBytes();
- var parser = new Parser();
- var actual = parser.Deserialize(raw) as QueryTotalLiterResponse;
- Assert.AreEqual(true, actual != null);
- Assert.AreEqual(0x5A, actual.NzlNo);
- Assert.AreEqual(1234567890876543m, actual.RawLiterSum);
- Assert.AreEqual(12345678908765.43m, actual.GetLiterSum());
- }
- [TestMethod]
- public void QueryTotalLiterResponseTestMethod2()
- {
- var raw = "0A 00 AD 00 00 56 78 00 87 65 43 CC".ToBytes();
- var parser = new Parser();
- var actual = parser.Deserialize(raw) as QueryTotalLiterResponse;
- Assert.AreEqual(true, actual != null);
- Assert.AreEqual(0x5A, actual.NzlNo);
- Assert.AreEqual(567800876543m, actual.RawLiterSum);
- Assert.AreEqual(5678008765.43m, actual.GetLiterSum());
- }
- [TestMethod]
- public void QueryTotalLiterResponseTestMethod3()
- {
- var raw = "0A 00 AD 00 00 56 78 00 87 00 00 CC".ToBytes();
- var parser = new Parser();
- var actual = parser.Deserialize(raw) as QueryTotalLiterResponse;
- Assert.AreEqual(true, actual != null);
- Assert.AreEqual(0x5A, actual.NzlNo);
- Assert.AreEqual(567800870000m, actual.RawLiterSum);
- Assert.AreEqual(5678008700m, actual.GetLiterSum());
- }
- [TestMethod]
- public void SimpleGenericResponseTestMethod3()
- {
- var raw = "5A 00 A2 00 00 00 00 00 00 00 E1 7D".ToBytes();
- var parser = new Parser();
- var actual = parser.Deserialize(raw) as SimpleGenericResponse;
- Assert.AreEqual(true, actual != null);
- Assert.AreEqual(0x5A, actual.NzlNo);
- Assert.AreEqual(CommandEnum.FuelingWithFixedCash, actual.Command);
- }
- [TestMethod]
- public void ShouldCutTest1()
- {
- var cutter = new ZhongSheng_NonIC_Pump.MessageCutter();
- 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 = "5A 00 01 00 00 00 00 00 00 00 61 9E".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 ZhongSheng_NonIC_Pump.MessageCutter();
- 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 = "5A 00 A2 00 00 00 00 00 00 00 e1 7d 5A 00 01 00 00 00 00 00 00 00 61 9E".ToBytes();
- cutter.Feed(rawValid);
- Assert.AreEqual(true, onMsgCutCalledTimes == 2);
- Assert.AreEqual(true, messages.Count == 2);
- Assert.AreEqual(true, ValueEquals(messages[0], rawValid.Take(12)));
- Assert.AreEqual(true, ValueEquals(messages[1], rawValid.Skip(12).Take(12)));
- Assert.AreEqual(true, onInvalidMsgCalledTimes == 0);
- }
- [TestMethod]
- public void ShouldCutTest3()
- {
- var cutter = new ZhongSheng_NonIC_Pump.MessageCutter();
- 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 = "5A 00 A2 00 00 00 00 00 00 00 e1 7d FF 5A 00 01 00 00 00 00 00 00 00 61 9E".ToBytes();
- cutter.Feed(rawValid);
- Assert.AreEqual(true, onMsgCutCalledTimes == 2);
- Assert.AreEqual(true, messages.Count == 2);
- Assert.AreEqual(true, ValueEquals(messages[0], rawValid.Take(12)));
- Assert.AreEqual(true, ValueEquals(messages[1], rawValid.Skip(13).Take(12)));
- Assert.AreEqual(true, onInvalidMsgCalledTimes == 1);
- }
- [TestMethod]
- public void ShouldCutTest4()
- {
- var cutter = new ZhongSheng_NonIC_Pump.MessageCutter();
- int onMsgCutCalledTimes = 0;
- int onInvalidMsgCalledTimes = 0;
- List<byte[]> bytesMessages = new List<byte[]>();
- List<MessageBase> messages = new List<MessageBase>();
- cutter.OnMessageCut += (s, a) =>
- {
- onMsgCutCalledTimes++;
- bytesMessages.Add(cutter.Message);
- var parser = new Parser();
- var message = parser.Deserialize(cutter.Message) as MessageBase;
- messages.Add(message);
- };
- cutter.OnInvalidMessageRead += (e, f) =>
- {
- onInvalidMsgCalledTimes++;
- };
- var rawValid = "5A 00 A2 00 00 00 00 00 00 00 e1 7d FF 5A 00 01 00 00 00 00 00 00 00 61 9E".ToBytes();
- cutter.Feed(rawValid);
- }
- }
- }
|