123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421 |
- using System;
- using Microsoft.VisualStudio.TestTools.UnitTesting;
- using Edge.Core.Processor;
- using Edge.Core.IndustryStandardInterface.Pump;
- using HengShan_Pump_NonIC.MessageEntity;
- using System.Threading;
- using Wayne.FDCPOSLibrary;
- using HengShan_Pump_NonIC;
- using static HengShan_Pump_NonIC.MessageEntity.GetNozzleStatusResponse;
- using Mocks;
- namespace Test_HengShan_Pump_NonIC
- {
- [TestClass]
- public class FdcPumpControllerUnitTest
- {
- private GenericDeviceProcessor<byte[], HengShan_Pump_NonIC.MessageEntity.NonICMessageTemplateBase> processor;
- [Microsoft.VisualStudio.TestTools.UnitTesting.TestInitialize()]
- public void InitProcessor()
- {
- var mockCommunicator = new ComPortCommunicatorMock<HengShan_Pump_NonIC.MessageEntity.NonICMessageTemplateBase>();
- mockCommunicator.OnRawDataWriting += (s, a) => { };
- this.processor = new GenericDeviceProcessor<byte[], HengShan_Pump_NonIC.MessageEntity.NonICMessageTemplateBase>(
- new HengShan_Pump_NonIC.PumpHandler(1,
- "<Nozzles>" +
- " <Nozzle No ='1' ProductBarcode ='1' />" +
- " <Nozzle No ='2' ProductBarcode ='5' />" +
- "</Nozzles>"),
- mockCommunicator, null);
- }
- [TestMethod]
- public void Should_Send_Polling_Pump_Message_Test()
- {
- var mockCommunicator = this.processor.Communicator as ComPortCommunicatorMock<HengShan_Pump_NonIC.MessageEntity.NonICMessageTemplateBase>;
- var fdcPumpController = processor.Context.Handler as IFdcPumpController;
- int pollingMessageSendTimes = 0;
- processor.Context.Outgoing.OnWriting += (s, a) =>
- {
- if (a.Message is GetNozzleStatusRequest)
- pollingMessageSendTimes++;
- };
- processor.Start();
- /* fire anything, otherwise the polling will not start since Context is null*/
- var statusResponse_Fuelling = new GetNozzleStatusResponse();
- statusResponse_Fuelling.AddPumpStatus(PumpStatus.加油结束);
- mockCommunicator.FireOnDataReceived(statusResponse_Fuelling);
- // hardcode for now.
- Thread.Sleep(2000);
- Assert.AreEqual(true, pollingMessageSendTimes >= 1, "polling message should send more than 1 times");
- }
- [TestMethod]
- public void IdleState_Test()
- {
- var mockCommunicator = this.processor.Communicator as ComPortCommunicatorMock<HengShan_Pump_NonIC.MessageEntity.NonICMessageTemplateBase>;
- var fdcPumpController = processor.Context.Handler as IFdcPumpController;
- int onStateChangeCalledTimes = 0;
- FdcPumpControllerOnStateChangeEventArg onStateChangeEventArg = null;
- fdcPumpController.OnStateChange += (s, a) =>
- {
- onStateChangeEventArg = a;
- onStateChangeCalledTimes++;
- };
- /* fire */
- var statusResponse_Fuelling = new GetNozzleStatusResponse();
- statusResponse_Fuelling.AddPumpStatus(PumpStatus.加油结束);
- mockCommunicator.FireOnDataReceived(statusResponse_Fuelling);
- Assert.AreEqual(1, onStateChangeCalledTimes, "OnStateChange should be called just 1 time");
- Assert.AreNotEqual(null, onStateChangeEventArg, "OnStateChange should be called.");
- Assert.AreEqual(LogicalDeviceState.FDC_READY, onStateChangeEventArg.NewPumpState, "OnStateChange should have the new state of FDC_READY");
- Assert.AreEqual(LogicalDeviceState.FDC_READY, fdcPumpController.QueryStatusAsync().Result,
- "status should change to: FDC_READY, but now is: " + fdcPumpController.QueryStatusAsync().Result);
- //Thread.Sleep(100000);
- }
- [TestMethod]
- public void FuellingState_Test()
- {
- var mockCommunicator = this.processor.Communicator as ComPortCommunicatorMock<HengShan_Pump_NonIC.MessageEntity.NonICMessageTemplateBase>;
- IFdcPumpController fdcPumpController = processor.Context.Handler as IFdcPumpController;
- int onStateChangeCalledTimes = 0;
- FdcPumpControllerOnStateChangeEventArg onStateChangeEventArg = null;
- fdcPumpController.OnStateChange += (s, a) =>
- {
- onStateChangeEventArg = a;
- onStateChangeCalledTimes++;
- };
- /* fire */
- var statusResponse_Fuelling = new GetNozzleStatusResponse();
- statusResponse_Fuelling.AddPumpStatus(PumpStatus.允许加油);
- statusResponse_Fuelling.AddPumpStatus(PumpStatus.油枪打开);
- statusResponse_Fuelling.AddPumpStatus(PumpStatus.加油过程);
- mockCommunicator.FireOnDataReceived(statusResponse_Fuelling);
- Assert.AreEqual(1, onStateChangeCalledTimes, "OnStateChange should be called just 1 time");
- Assert.AreNotEqual(null, onStateChangeEventArg, "OnStateChange should be called.");
- Assert.AreEqual(LogicalDeviceState.FDC_FUELLING, onStateChangeEventArg.NewPumpState, "OnStateChange should have the new state of FDC_FUELLING");
- Assert.AreEqual(LogicalDeviceState.FDC_FUELLING, fdcPumpController.QueryStatusAsync().Result,
- "status should change to: FDC_FUELLING, but now is: " + fdcPumpController.QueryStatusAsync().Result);
- //Thread.Sleep(100000);
- }
- [TestMethod]
- public void FuellingState_Test1()
- {
- var mockCommunicator = this.processor.Communicator as ComPortCommunicatorMock<HengShan_Pump_NonIC.MessageEntity.NonICMessageTemplateBase>;
- IFdcPumpController fdcPumpController = processor.Context.Handler as IFdcPumpController;
- int onStateChangeCalledTimes = 0;
- FdcPumpControllerOnStateChangeEventArg onStateChangeEventArg = null;
- fdcPumpController.OnStateChange += (s, a) =>
- {
- onStateChangeEventArg = a;
- onStateChangeCalledTimes++;
- };
- /* fire multiple times, stateChange should only fired one time*/
- var statusResponse_Fuelling = new GetNozzleStatusResponse();
- statusResponse_Fuelling.AddPumpStatus(PumpStatus.允许加油);
- statusResponse_Fuelling.AddPumpStatus(PumpStatus.油枪打开);
- statusResponse_Fuelling.AddPumpStatus(PumpStatus.加油过程);
- mockCommunicator.FireOnDataReceived(statusResponse_Fuelling);
- mockCommunicator.FireOnDataReceived(statusResponse_Fuelling);
- mockCommunicator.FireOnDataReceived(statusResponse_Fuelling);
- mockCommunicator.FireOnDataReceived(statusResponse_Fuelling);
- Assert.AreEqual(1, onStateChangeCalledTimes, "OnStateChange should be called just 1 time");
- Assert.AreNotEqual(null, onStateChangeEventArg, "OnStateChange should be called.");
- Assert.AreEqual(LogicalDeviceState.FDC_FUELLING, onStateChangeEventArg.NewPumpState, "OnStateChange should have the new state of FDC_FUELLING");
- Assert.AreEqual(LogicalDeviceState.FDC_FUELLING, fdcPumpController.QueryStatusAsync().Result,
- "status should change to: FDC_FUELLING, but now is: " + fdcPumpController.QueryStatusAsync().Result);
- //Thread.Sleep(100000);
- }
- [TestMethod]
- public void FuellingState_Test2()
- {
- var mockCommunicator = this.processor.Communicator as ComPortCommunicatorMock<HengShan_Pump_NonIC.MessageEntity.NonICMessageTemplateBase>;
- IFdcPumpController fdcPumpController = processor.Context.Handler as IFdcPumpController;
- int onStateChangeCalledTimes = 0;
- FdcPumpControllerOnStateChangeEventArg onStateChangeEventArg = null;
- fdcPumpController.OnStateChange += (s, a) =>
- {
- onStateChangeEventArg = a;
- onStateChangeCalledTimes++;
- };
- /* fire multiple times, stateChange should only fired one time*/
- var statusResponse_Fuelling = new GetNozzleStatusResponse();
- statusResponse_Fuelling.AddPumpStatus(PumpStatus.允许加油);
- statusResponse_Fuelling.AddPumpStatus(PumpStatus.油枪打开);
- statusResponse_Fuelling.AddPumpStatus(PumpStatus.加油过程);
- mockCommunicator.FireOnDataReceived(statusResponse_Fuelling);
- mockCommunicator.FireOnDataReceived(statusResponse_Fuelling);
- mockCommunicator.FireOnDataReceived(statusResponse_Fuelling);
- mockCommunicator.FireOnDataReceived(statusResponse_Fuelling);
- Assert.AreEqual(1, onStateChangeCalledTimes, "OnStateChange should be called just 1 time");
- Assert.AreNotEqual(null, onStateChangeEventArg, "OnStateChange should be called.");
- Assert.AreEqual(LogicalDeviceState.FDC_FUELLING, onStateChangeEventArg.NewPumpState, "OnStateChange should have the new state of FDC_FUELLING");
- //Thread.Sleep(PumpHandler.lastLogicalDeviceStateExpiredTime * 1000 + 1000);
- Assert.AreEqual(LogicalDeviceState.FDC_OFFLINE, fdcPumpController.QueryStatusAsync().Result,
- "status should change to: FDC_OFFLINE since many time passed, but now is: " + fdcPumpController.QueryStatusAsync().Result);
- }
- [TestMethod]
- public void FuellingState_Test3()
- {
- var mockCommunicator = this.processor.Communicator as ComPortCommunicatorMock<HengShan_Pump_NonIC.MessageEntity.NonICMessageTemplateBase>;
- IFdcPumpController fdcPumpController = processor.Context.Handler as IFdcPumpController;
- int onStateChangeCalledTimes = 0;
- FdcPumpControllerOnStateChangeEventArg onStateChangeEventArg = null;
- fdcPumpController.OnStateChange += (s, a) =>
- {
- onStateChangeEventArg = a;
- onStateChangeCalledTimes++;
- };
- /* fire multiple times, stateChange should only fired one time*/
- var statusResponse_Fuelling = new GetNozzleStatusResponse();
- statusResponse_Fuelling.AddPumpStatus(PumpStatus.允许加油);
- statusResponse_Fuelling.AddPumpStatus(PumpStatus.油枪打开);
- statusResponse_Fuelling.AddPumpStatus(PumpStatus.加油过程);
- mockCommunicator.FireOnDataReceived(statusResponse_Fuelling);
- mockCommunicator.FireOnDataReceived(statusResponse_Fuelling);
- mockCommunicator.FireOnDataReceived(statusResponse_Fuelling);
- mockCommunicator.FireOnDataReceived(statusResponse_Fuelling);
- Assert.AreEqual(1, onStateChangeCalledTimes, "OnStateChange should be called just 1 time");
- Assert.AreNotEqual(null, onStateChangeEventArg, "OnStateChange should be called.");
- Assert.AreEqual(LogicalDeviceState.FDC_FUELLING, onStateChangeEventArg.NewPumpState, "OnStateChange should have the new state of FDC_FUELLING");
- //Thread.Sleep(PumpHandler.lastLogicalDeviceStateExpiredTime * 1000 + 1000);
- Assert.AreEqual(LogicalDeviceState.FDC_OFFLINE, fdcPumpController.QueryStatusAsync().Result,
- "status should change to: FDC_OFFLINE since many time passed, but now is: " + fdcPumpController.QueryStatusAsync().Result);
- mockCommunicator.FireOnDataReceived(statusResponse_Fuelling);
- Assert.AreEqual(LogicalDeviceState.FDC_FUELLING, fdcPumpController.QueryStatusAsync().Result,
- "status should change to: FDC_FUELLING , but now is: " + fdcPumpController.QueryStatusAsync().Result);
- }
- [TestMethod]
- public void PayableTransaction_State_Test1()
- {
- int fuelingAmount = 344;
- var mockCommunicator = this.processor.Communicator as ComPortCommunicatorMock<HengShan_Pump_NonIC.MessageEntity.NonICMessageTemplateBase>;
- IFdcPumpController fdcPumpController = processor.Context.Handler as IFdcPumpController;
- int onStateChangeCalledTimes = 0;
- FdcPumpControllerOnStateChangeEventArg onStateChangeEventArg = null;
- fdcPumpController.OnStateChange += (s, a) =>
- {
- onStateChangeEventArg = a;
- onStateChangeCalledTimes++;
- };
- int onCurrentFuellingStatusChangeCalledTimes = 0;
- FdcTransactionDoneEventArg onCurrentFuellingStatusChangeEventArg = null;
- fdcPumpController.OnCurrentFuellingStatusChange += (s, a) =>
- {
- onCurrentFuellingStatusChangeEventArg = a;
- onCurrentFuellingStatusChangeCalledTimes++;
- };
- /* fire multiple times, stateChange should only fired one time*/
- var statusResponse_Fuelling = new GetNozzleStatusResponse();
- statusResponse_Fuelling.加油金额 = fuelingAmount;
- statusResponse_Fuelling.AddPumpStatus(PumpStatus.加油结束);
- mockCommunicator.FireOnDataReceived(statusResponse_Fuelling);
- Assert.AreEqual(1, onStateChangeCalledTimes, "OnStateChange should be called just 1 time");
- Assert.AreNotEqual(null, onStateChangeEventArg, "OnStateChange should be called.");
- Assert.AreEqual(LogicalDeviceState.FDC_READY, onStateChangeEventArg.NewPumpState, "OnStateChange should have the new state of FDC_READY");
- Assert.AreEqual(LogicalDeviceState.FDC_READY, fdcPumpController.QueryStatusAsync().Result,
- "status should change to: FDC_READY, but now is: " + fdcPumpController.QueryStatusAsync().Result);
- Assert.AreEqual(1, onCurrentFuellingStatusChangeCalledTimes, "OnCurrentFuellingStatusChange should be called just 1 time");
- Assert.AreNotEqual(null, onCurrentFuellingStatusChangeEventArg, "OnCurrentFuellingStatusChange should be called.");
- Assert.AreEqual(true, onCurrentFuellingStatusChangeEventArg.Transaction.Finished, "Transaction should Finished.");
- Assert.AreEqual(fuelingAmount, onCurrentFuellingStatusChangeEventArg.Transaction.Amount, "Transaction amount should match.");
- }
- [TestMethod]
- public void PayableTransaction_State_Test2()
- {
- int fuelingAmount = 344;
- var mockCommunicator = this.processor.Communicator as ComPortCommunicatorMock<HengShan_Pump_NonIC.MessageEntity.NonICMessageTemplateBase>;
- IFdcPumpController fdcPumpController = processor.Context.Handler as IFdcPumpController;
- int onStateChangeCalledTimes = 0;
- FdcPumpControllerOnStateChangeEventArg onStateChangeEventArg = null;
- fdcPumpController.OnStateChange += (s, a) =>
- {
- onStateChangeEventArg = a;
- onStateChangeCalledTimes++;
- };
- int onCurrentFuellingStatusChangeCalledTimes = 0;
- FdcTransactionDoneEventArg onCurrentFuellingStatusChangeEventArg = null;
- fdcPumpController.OnCurrentFuellingStatusChange += (s, a) =>
- {
- onCurrentFuellingStatusChangeEventArg = a;
- onCurrentFuellingStatusChangeCalledTimes++;
- };
- /* fire multiple times, stateChange should only fired one time*/
- var statusResponse_Fuelling = new GetNozzleStatusResponse();
- statusResponse_Fuelling.加油金额 = fuelingAmount;
- statusResponse_Fuelling.AddPumpStatus(PumpStatus.加油结束);
- mockCommunicator.FireOnDataReceived(statusResponse_Fuelling);
- Assert.AreEqual(1, onStateChangeCalledTimes, "OnStateChange should be called just 1 time");
- Assert.AreNotEqual(null, onStateChangeEventArg, "OnStateChange should be called.");
- Assert.AreEqual(LogicalDeviceState.FDC_READY, onStateChangeEventArg.NewPumpState, "OnStateChange should have the new state of FDC_READY");
- Assert.AreEqual(LogicalDeviceState.FDC_READY, fdcPumpController.QueryStatusAsync().Result,
- "status should change to: FDC_READY, but now is: " + fdcPumpController.QueryStatusAsync().Result);
- Assert.AreEqual(1, onCurrentFuellingStatusChangeCalledTimes, "OnCurrentFuellingStatusChange should be called just 1 time");
- Assert.AreNotEqual(null, onCurrentFuellingStatusChangeEventArg, "OnCurrentFuellingStatusChange should be called.");
- Assert.AreEqual(true, onCurrentFuellingStatusChangeEventArg.Transaction.Finished, "Transaction should Finished.");
- Assert.AreEqual(fuelingAmount, onCurrentFuellingStatusChangeEventArg.Transaction.Amount, "Transaction amount should match.");
- mockCommunicator.FireOnDataReceived(statusResponse_Fuelling);
- mockCommunicator.FireOnDataReceived(statusResponse_Fuelling);
- mockCommunicator.FireOnDataReceived(statusResponse_Fuelling);
- Assert.AreEqual(1, onStateChangeCalledTimes, "OnStateChange should be called just 1 time");
- Assert.AreEqual(LogicalDeviceState.FDC_READY, fdcPumpController.QueryStatusAsync().Result,
- "status should change to: FDC_READY, but now is: " + fdcPumpController.QueryStatusAsync().Result);
- Assert.AreEqual(1, onCurrentFuellingStatusChangeCalledTimes, "OnCurrentFuellingStatusChange should be called just 1 time");
- }
- [TestMethod]
- public void Authorize_State_Test1()
- {
- var mockCommunicator = this.processor.Communicator as ComPortCommunicatorMock<NonICMessageTemplateBase>;
- IFdcPumpController fdcPumpController = processor.Context.Handler as IFdcPumpController;
- int onStateChangeCalledTimes = 0;
- FdcPumpControllerOnStateChangeEventArg onStateChangeEventArg = null;
- fdcPumpController.OnStateChange += (s, a) =>
- {
- Console.WriteLine("OnStateChange to: " + a.NewPumpState);
- onStateChangeEventArg = a;
- onStateChangeCalledTimes++;
- };
- /* set to idle (FDC_Ready) */
- var statusResponse_Fuelling = new GetNozzleStatusResponse();
- statusResponse_Fuelling.AddPumpStatus(PumpStatus.加油结束);
- mockCommunicator.FireOnDataReceived(statusResponse_Fuelling);
- Assert.AreEqual(1, onStateChangeCalledTimes, "OnStateChange should be called");
- Assert.AreNotEqual(null, onStateChangeEventArg, "OnStateChange should be called");
- ThreadPool.QueueUserWorkItem(o =>
- {
- Thread.Sleep(1000);
- /* fire StartResponse */
- var startResponse = new StartResponse();
- startResponse.EnumResult = NonICMessageTemplateBase.Result.成功;
- mockCommunicator.FireOnDataReceived(startResponse);
- });
- var result = fdcPumpController.AuthorizeAsync(1).Result;
- Assert.AreEqual(true, result, "Authorize should return succeed");
- Assert.AreEqual(2, onStateChangeCalledTimes, "OnStateChange should be called just 2 time");
- Assert.AreNotEqual(null, onStateChangeEventArg, "OnStateChange should be called.");
- Assert.AreEqual(LogicalDeviceState.FDC_AUTHORISED, onStateChangeEventArg.NewPumpState, "OnStateChange should have the new state of FDC_AUTHORISED");
- Assert.AreEqual(LogicalDeviceState.FDC_AUTHORISED, fdcPumpController.QueryStatusAsync().Result,
- "status should change to: FDC_AUTHORISED, but now is: " + fdcPumpController.QueryStatusAsync().Result);
- }
- [TestMethod]
- public void Authorize_With_Amount_Test()
- {
- var mockCommunicator = this.processor.Communicator as ComPortCommunicatorMock<NonICMessageTemplateBase>;
- IFdcPumpController fdcPumpController = processor.Context.Handler as IFdcPumpController;
- int onStateChangeCalledTimes = 0;
- FdcPumpControllerOnStateChangeEventArg onStateChangeEventArg = null;
- fdcPumpController.OnStateChange += (s, a) =>
- {
- onStateChangeEventArg = a;
- onStateChangeCalledTimes++;
- };
- /* set to idle (FDC_Ready) */
- var statusResponse_Fuelling = new GetNozzleStatusResponse();
- statusResponse_Fuelling.AddPumpStatus(PumpStatus.加油结束);
- mockCommunicator.FireOnDataReceived(statusResponse_Fuelling);
- Assert.AreEqual(1, onStateChangeCalledTimes, "OnStateChange should be called");
- Assert.AreNotEqual(null, onStateChangeEventArg, "OnStateChange should be called");
- ThreadPool.QueueUserWorkItem(o =>
- {
- Thread.Sleep(1000);
- /* fire AuthPumpWithAmountResponse */
- var authPumpWithAmountResponse = new AuthPumpWithAmountResponse();
- authPumpWithAmountResponse.EnumResult = NonICMessageTemplateBase.Result.成功;
- mockCommunicator.FireOnDataReceived(authPumpWithAmountResponse);
- Thread.Sleep(200);
- /* fire StartResponse */
- var startResponse = new StartResponse();
- startResponse.EnumResult = NonICMessageTemplateBase.Result.成功;
- mockCommunicator.FireOnDataReceived(startResponse);
- });
- var result = fdcPumpController.AuthorizeWithAmountAsync(1983, 0).Result;
- // wait StartResponse
- Thread.Sleep(1000);
- Assert.AreEqual(true, result, "Authorize should return succeed");
- Assert.AreEqual(2, onStateChangeCalledTimes, "OnStateChange should be called 2 times");
- Assert.AreNotEqual(null, onStateChangeEventArg, "OnStateChange should be called.");
- Assert.AreEqual(LogicalDeviceState.FDC_AUTHORISED, onStateChangeEventArg.NewPumpState, "OnStateChange should have the new state of FDC_AUTHORISED");
- Assert.AreEqual(LogicalDeviceState.FDC_AUTHORISED, fdcPumpController.QueryStatusAsync().Result,
- "status should change to: FDC_AUTHORISED, but now is: " + fdcPumpController.QueryStatusAsync().Result);
- }
- [TestMethod]
- public void Authorize_With_Vol_Test()
- {
- var mockCommunicator = this.processor.Communicator as ComPortCommunicatorMock<NonICMessageTemplateBase>;
- IFdcPumpController fdcPumpController = processor.Context.Handler as IFdcPumpController;
- int onStateChangeCalledTimes = 0;
- FdcPumpControllerOnStateChangeEventArg onStateChangeEventArg = null;
- fdcPumpController.OnStateChange += (s, a) =>
- {
- onStateChangeEventArg = a;
- onStateChangeCalledTimes++;
- };
- /* set to idle (FDC_Ready) */
- var statusResponse_Fuelling = new GetNozzleStatusResponse();
- statusResponse_Fuelling.AddPumpStatus(PumpStatus.加油结束);
- mockCommunicator.FireOnDataReceived(statusResponse_Fuelling);
- Assert.AreEqual(1, onStateChangeCalledTimes, "OnStateChange should be called");
- Assert.AreNotEqual(null, onStateChangeEventArg, "OnStateChange should be called");
- ThreadPool.QueueUserWorkItem(o =>
- {
- Thread.Sleep(500);
- /* fire AuthPumpWithAmountResponse */
- var authPumpWithGalResponse = new AuthPumpWithGallonResponse();
- authPumpWithGalResponse.EnumResult = NonICMessageTemplateBase.Result.成功;
- mockCommunicator.FireOnDataReceived(authPumpWithGalResponse);
- Thread.Sleep(1000);
- /* fire StartResponse */
- var startResponse = new StartResponse();
- startResponse.EnumResult = NonICMessageTemplateBase.Result.成功;
- mockCommunicator.FireOnDataReceived(startResponse);
- });
- var result = fdcPumpController.AuthorizeWithVolumeAsync(1983, 0).Result;
- // wait StartResponse
- Thread.Sleep(1000);
- Assert.AreEqual(true, result, "Authorize should return succeed");
- Assert.AreEqual(2, onStateChangeCalledTimes, "OnStateChange should be called 2 times");
- Assert.AreNotEqual(null, onStateChangeEventArg, "OnStateChange should be called.");
- Assert.AreEqual(LogicalDeviceState.FDC_AUTHORISED, onStateChangeEventArg.NewPumpState, "OnStateChange should have the new state of FDC_AUTHORISED");
- Assert.AreEqual(LogicalDeviceState.FDC_AUTHORISED, fdcPumpController.QueryStatusAsync().Result,
- "status should change to: FDC_AUTHORISED, but now is: " + fdcPumpController.QueryStatusAsync().Result);
- }
- }
- }
|