123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315 |
- using Microsoft.VisualStudio.TestTools.UnitTesting;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using VeederRoot_ATG_Console.MessageEntity.DispenserInterface.Outgoing;
- namespace VeederRoot_Test.DispenserInterface
- {
- [TestClass]
- public class Message
- {
- 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;
- }
- #region StartEventReportRequest
- [TestMethod]
- public void StartEventReportRequest_TestMethod1()
- {
- byte eventId = 4;
- byte errorFlag = 12;
- int secondsDelay = 0;
- // say Pump with fp id 6 get authorized.
- byte fpId = 6;
- var p = new VeederRoot_ATG_Console.Parser();
- var expectWithoutCheckSum = new byte[] { 0x01 }
- .Concat(new byte[] { (byte)'B' })
- .Concat(Encoding.ASCII.GetBytes(eventId.ToString().PadLeft(1, '0')))
- .Concat(Encoding.ASCII.GetBytes(errorFlag.ToString().PadLeft(2, '0')))
- .Concat(Encoding.ASCII.GetBytes(secondsDelay.ToString().PadLeft(4, '0')))
- .Concat(Encoding.ASCII.GetBytes(fpId.ToString().PadLeft(2, '0')));
- //.Concat(new byte[] { 0x04 });
- var checkSum = p.CaculateCheckSum(expectWithoutCheckSum.ToArray());
- var expect = expectWithoutCheckSum
- .Concat(Encoding.ASCII.GetBytes(checkSum.ToString("X4")))
- .Concat(new byte[] { 0x04 });
- var request = new StartEventReportRequest(eventId, errorFlag, secondsDelay, fpId);
- var actual = p.Serialize(request);
- var asciiStr = Encoding.ASCII.GetString(actual);
- Assert.AreEqual(true, ValueEquals(expect, actual));
- }
- [TestMethod]
- public void StartEventReportRequest_TestMethod2()
- {
- //Example Report 1: <SOH>B000000012FE0A<EOT>
- // Event ID = 0
- // Transmission delay = 0 seconds
- // Selected Fueling Position = 12
- string expectAsciiStr = "\u0001B000000012FE0A\u0004";
- byte eventId = 0;
- byte errorFlag = 0;
- int secondsDelay = 0;
- byte fpId = 12;
- var p = new VeederRoot_ATG_Console.Parser();
- var expectWithoutCheckSum = new byte[] { 0x01 }
- .Concat(new byte[] { (byte)'B' })
- .Concat(Encoding.ASCII.GetBytes(eventId.ToString().PadLeft(1, '0')))
- .Concat(Encoding.ASCII.GetBytes(errorFlag.ToString().PadLeft(2, '0')))
- .Concat(Encoding.ASCII.GetBytes(secondsDelay.ToString().PadLeft(4, '0')))
- .Concat(Encoding.ASCII.GetBytes(fpId.ToString().PadLeft(2, '0')));
- //.Concat(new byte[] { 0x04 });
- var checkSum = p.CaculateCheckSum(expectWithoutCheckSum.ToArray());
- var expect = expectWithoutCheckSum
- .Concat(Encoding.ASCII.GetBytes(checkSum.ToString("X4")))
- .Concat(new byte[] { 0x04 });
- var request = new StartEventReportRequest(eventId, errorFlag, secondsDelay, fpId);
- var actual = p.Serialize(request);
- var actualAsciiStr = Encoding.ASCII.GetString(actual);
- Assert.AreEqual(true, ValueEquals(expect, actual));
- Assert.AreEqual(true, actualAsciiStr == expectAsciiStr);
- }
- [TestMethod]
- public void StartEventReportRequest_TestMethod3()
- {
- //Example Report 1: <SOH>B100000501FE06<EOT>
- // Event ID = 1
- // Transmission delay = 5 seconds
- // Selected Fueling Position = 1
- string expectAsciiStr = "\u0001B100000501FE06\u0004";
- byte eventId = 1;
- byte errorFlag = 0;
- int secondsDelay = 5;
- byte fpId = 1;
- var p = new VeederRoot_ATG_Console.Parser();
- var expectWithoutCheckSum = new byte[] { 0x01 }
- .Concat(new byte[] { (byte)'B' })
- .Concat(Encoding.ASCII.GetBytes(eventId.ToString().PadLeft(1, '0')))
- .Concat(Encoding.ASCII.GetBytes(errorFlag.ToString().PadLeft(2, '0')))
- .Concat(Encoding.ASCII.GetBytes(secondsDelay.ToString().PadLeft(4, '0')))
- .Concat(Encoding.ASCII.GetBytes(fpId.ToString().PadLeft(2, '0')));
- //.Concat(new byte[] { 0x04 });
- var checkSum = p.CaculateCheckSum(expectWithoutCheckSum.ToArray());
- var expect = expectWithoutCheckSum
- .Concat(Encoding.ASCII.GetBytes(checkSum.ToString("X4")))
- .Concat(new byte[] { 0x04 });
- var request = new StartEventReportRequest(eventId, errorFlag, secondsDelay, fpId);
- var actual = p.Serialize(request);
- var actualAsciiStr = Encoding.ASCII.GetString(actual);
- Assert.AreEqual(true, ValueEquals(expect, actual));
- Assert.AreEqual(true, actualAsciiStr == expectAsciiStr);
- }
- #endregion
- [TestMethod]
- public void StopEventReportRequest_TestMethod1()
- {
- /*
- * I copied sample data from Global FC logs
- *22/01/2019-15:23:17.097-0x0000133C-SSF.FC-SSFTankMonitorVeeder::sendBIRMessageNewTransaction-[DEBUG]
- * -Reporting FP [11] Meter [1] Sale [52.005] Total [796120.09]
- *22/01/2019-15:23:17.098-0x0000133C-SSF.FC-SSFTankMonitorVeeder::sendBIRMessageNewTransaction-[DEBUG]
- * -BIR with message [C10000001111796120.090052.005]
- */
- byte eventId = 1;
- byte errorFlag = 0;
- int secondsDelay = 0;
- byte fpId = 11;
- var fuelInfo = StopEventReportRequest.FuelingInfo.SingleProductDispensed;
- byte meterId = 1;
- double cumulativeTotal = 796120.09;
- double trxTotalVol = 52.005;
- string expectSubAsciiStr = "C10000001111796120.090052.005";
- var p = new VeederRoot_ATG_Console.Parser();
- var expectWithoutCheckSum = new byte[] { 0x01 }
- .Concat(new byte[] { (byte)'C' })
- .Concat(Encoding.ASCII.GetBytes(eventId.ToString().PadLeft(1, '0')))
- .Concat(Encoding.ASCII.GetBytes(errorFlag.ToString().PadLeft(2, '0')))
- .Concat(Encoding.ASCII.GetBytes(secondsDelay.ToString().PadLeft(4, '0')))
- .Concat(Encoding.ASCII.GetBytes(fpId.ToString().PadLeft(2, '0')))
- .Concat(Encoding.ASCII.GetBytes(((int)fuelInfo).ToString()))
- .Concat(Encoding.ASCII.GetBytes(meterId.ToString()))
- .Concat(Encoding.ASCII.GetBytes(cumulativeTotal.ToString("0.00").PadLeft(9, '0')))
- .Concat(Encoding.ASCII.GetBytes(trxTotalVol.ToString("0.000").PadLeft(8, '0')));
- var checkSum = p.CaculateCheckSum(expectWithoutCheckSum.ToArray());
- var expect = expectWithoutCheckSum
- .Concat(Encoding.ASCII.GetBytes(checkSum.ToString("X4")))
- .Concat(new byte[] { 0x04 });
- var request = new StopEventReportRequest(eventId, errorFlag, secondsDelay, fpId,
- fuelInfo,
- new List<Tuple<byte, double, double>>() {
- new Tuple<byte, double, double>(meterId, cumulativeTotal, trxTotalVol) });
- var actual = p.Serialize(request);
- var actualAsciiStr = Encoding.ASCII.GetString(actual);
- Assert.AreEqual(true, actualAsciiStr.Contains(expectSubAsciiStr));
- Assert.AreEqual(true, ValueEquals(expect, actual));
- }
- [TestMethod]
- public void StopEventReportRequest_TestMethod2()
- {
- /*
- * I copied sample data from Global FC logs
- * 22/01/2019-16:06:18.485-0x0000133C-SSF.FC-SSFTankMonitorVeeder::sendBIRMessageNewTransaction-
- * [DEBUG]-Reporting FP [8] Meter [1] Sale [3.005] Total [157348.08]
- * 22/01/2019-16:06:18.486-0x0000133C-SSF.FC-SSFTankMonitorVeeder::sendBIRMessageNewTransaction-
- * [DEBUG]-BIR with message [C60000000811157348.080003.005]
- */
- byte eventId = 6;
- byte errorFlag = 0;
- int secondsDelay = 0;
- byte fpId = 8;
- var fuelInfo = StopEventReportRequest.FuelingInfo.SingleProductDispensed;
- byte meterId = 1;
- double cumulativeTotal = 157348.08;
- double trxTotalVol = 3.005;
- string expectSubAsciiStr = "C60000000811157348.080003.005";
- var p = new VeederRoot_ATG_Console.Parser();
- var expectWithoutCheckSum = new byte[] { 0x01 }
- .Concat(new byte[] { (byte)'C' })
- .Concat(Encoding.ASCII.GetBytes(eventId.ToString().PadLeft(1, '0')))
- .Concat(Encoding.ASCII.GetBytes(errorFlag.ToString().PadLeft(2, '0')))
- .Concat(Encoding.ASCII.GetBytes(secondsDelay.ToString().PadLeft(4, '0')))
- .Concat(Encoding.ASCII.GetBytes(fpId.ToString().PadLeft(2, '0')))
- .Concat(Encoding.ASCII.GetBytes(((int)fuelInfo).ToString()))
- .Concat(Encoding.ASCII.GetBytes(meterId.ToString()))
- .Concat(Encoding.ASCII.GetBytes(cumulativeTotal.ToString("0.00").PadLeft(9, '0')))
- .Concat(Encoding.ASCII.GetBytes(trxTotalVol.ToString("0.000").PadLeft(8, '0')));
- var checkSum = p.CaculateCheckSum(expectWithoutCheckSum.ToArray());
- var expect = expectWithoutCheckSum
- .Concat(Encoding.ASCII.GetBytes(checkSum.ToString("X4")))
- .Concat(new byte[] { 0x04 });
- var request = new StopEventReportRequest(eventId, errorFlag, secondsDelay, fpId,
- fuelInfo,
- new List<Tuple<byte, double, double>>() {
- new Tuple<byte, double, double>(meterId, cumulativeTotal, trxTotalVol) });
- var actual = p.Serialize(request);
- var actualAsciiStr = Encoding.ASCII.GetString(actual);
- Assert.AreEqual(true, actualAsciiStr.Contains(expectSubAsciiStr));
- Assert.AreEqual(true, ValueEquals(expect, actual));
- }
- [TestMethod]
- public void StopEventReportRequest_TestMethod3()
- {
- /*
- * I copied sample data from Global FC logs
- * 22/01/2019-15:43:39.118-0x0000133C-SSF.FC-SSFTankMonitorVeeder::sendBIRMessageNewTransaction-[DEBUG]
- * -Reporting FP [9] Meter [1] Sale [51.042] Total [417334.86]
- * 22/01/2019-15:43:39.119-0x0000133C-SSF.FC-SSFTankMonitorVeeder::sendBIRMessageNewTransaction-[DEBUG]
- * -BIR with message [C90000000911417334.860051.042]
- */
- byte eventId = 9;
- byte errorFlag = 0;
- int secondsDelay = 0;
- byte fpId = 9;
- var fuelInfo = StopEventReportRequest.FuelingInfo.SingleProductDispensed;
- byte meterId = 1;
- double cumulativeTotal = 417334.86;
- double trxTotalVol = 51.042;
- string expectSubAsciiStr = "C90000000911417334.860051.042";
- var p = new VeederRoot_ATG_Console.Parser();
- var expectWithoutCheckSum = new byte[] { 0x01 }
- .Concat(new byte[] { (byte)'C' })
- .Concat(Encoding.ASCII.GetBytes(eventId.ToString().PadLeft(1, '0')))
- .Concat(Encoding.ASCII.GetBytes(errorFlag.ToString().PadLeft(2, '0')))
- .Concat(Encoding.ASCII.GetBytes(secondsDelay.ToString().PadLeft(4, '0')))
- .Concat(Encoding.ASCII.GetBytes(fpId.ToString().PadLeft(2, '0')))
- .Concat(Encoding.ASCII.GetBytes(((int)fuelInfo).ToString()))
- .Concat(Encoding.ASCII.GetBytes(meterId.ToString()))
- .Concat(Encoding.ASCII.GetBytes(cumulativeTotal.ToString("0.00").PadLeft(9, '0')))
- .Concat(Encoding.ASCII.GetBytes(trxTotalVol.ToString("0.000").PadLeft(8, '0')));
- var checkSum = p.CaculateCheckSum(expectWithoutCheckSum.ToArray());
- var expect = expectWithoutCheckSum
- .Concat(Encoding.ASCII.GetBytes(checkSum.ToString("X4")))
- .Concat(new byte[] { 0x04 });
- var request = new StopEventReportRequest(eventId, errorFlag, secondsDelay, fpId,
- fuelInfo,
- new List<Tuple<byte, double, double>>() {
- new Tuple<byte, double, double>(meterId, cumulativeTotal, trxTotalVol) });
- var actual = p.Serialize(request);
- var actualAsciiStr = Encoding.ASCII.GetString(actual);
- Assert.AreEqual(true, actualAsciiStr.Contains(expectSubAsciiStr));
- Assert.AreEqual(true, ValueEquals(expect, actual));
- }
- [TestMethod]
- public void StopEventReportRequest_TestMethod4()
- {
- byte eventId = 9;
- byte errorFlag = 0;
- int secondsDelay = 0;
- byte fpId = 9;
- byte meterId = 1;
- double cumulativeTotal = 417334;
- double trxTotalVol = 51;
- string expectSubAsciiStr = "C90000000911417334.000051.000";
- var p = new VeederRoot_ATG_Console.Parser();
- var expectWithoutCheckSum = new byte[] { 0x01 }
- .Concat(new byte[] { (byte)'C' })
- .Concat(Encoding.ASCII.GetBytes(eventId.ToString().PadLeft(1, '0')))
- .Concat(Encoding.ASCII.GetBytes(errorFlag.ToString().PadLeft(2, '0')))
- .Concat(Encoding.ASCII.GetBytes(secondsDelay.ToString().PadLeft(4, '0')))
- .Concat(Encoding.ASCII.GetBytes(fpId.ToString().PadLeft(2, '0')))
- .Concat(Encoding.ASCII.GetBytes("1"))
- .Concat(Encoding.ASCII.GetBytes(meterId.ToString()))
- .Concat(Encoding.ASCII.GetBytes(cumulativeTotal.ToString("0.00").PadLeft(9, '0')))
- .Concat(Encoding.ASCII.GetBytes(trxTotalVol.ToString("0.000").PadLeft(8, '0')));
- var checkSum = p.CaculateCheckSum(expectWithoutCheckSum.ToArray());
- var expect = expectWithoutCheckSum
- .Concat(Encoding.ASCII.GetBytes(checkSum.ToString("X4")))
- .Concat(new byte[] { 0x04 });
- var request = new StopEventReportRequest(eventId, errorFlag, secondsDelay, fpId,
- StopEventReportRequest.FuelingInfo.SingleProductDispensed,
- new List<Tuple<byte, double, double>>() {
- new Tuple<byte, double, double>(meterId, cumulativeTotal, trxTotalVol) });
- var actual = p.Serialize(request);
- var actualAsciiStr = Encoding.ASCII.GetString(actual);
- Assert.AreEqual(true, actualAsciiStr.Contains(expectSubAsciiStr));
- Assert.AreEqual(true, ValueEquals(expect, actual));
- }
- }
- }
|