void EDoorOrderTest(STR_EDoor_Accessor edoor) { // 주문이 안나가는 경우에 대해서 꼼꼼히 점검해본다. EDoorMonitorEnterController_Accessor controller = new EDoorMonitorEnterController_Accessor( new PrivateObject(edoor._monitorController)); controller.BlockAfterCancel = false; EDoorEachMonitorEnterController_Accessor callEach_0 = new EDoorEachMonitorEnterController_Accessor( new PrivateObject(GetController(controller._eachControllers, CallPutFlag.Call, 0))); EDoorEachMonitorEnterController_Accessor callEach_1 = new EDoorEachMonitorEnterController_Accessor( new PrivateObject(GetController(controller._eachControllers, CallPutFlag.Call, 1))); EDoorEachMonitorEnterController_Accessor putEach_0 = new EDoorEachMonitorEnterController_Accessor( new PrivateObject(GetController(controller._eachControllers, CallPutFlag.Put, 0))); EDoorCenterData centerData = edoor._centerData; // run test Assert.AreEqual(controller._eachControllers.Count, controller.Run(centerData)); MonitorState rawMS_0 = callEach_0._monitorEnter as MonitorState; MonitorState_Accessor msCallEach_0 = new MonitorState_Accessor(new PrivateObject(rawMS_0)); MonitorState rawMS_1 = callEach_1._monitorEnter as MonitorState; MonitorState_Accessor msCallEach_1 = new MonitorState_Accessor(new PrivateObject(rawMS_1)); MonitorState rawMS_2 = putEach_0._monitorEnter as MonitorState; MonitorState_Accessor msPutEach_0 = new MonitorState_Accessor(new PrivateObject(rawMS_2)); MonitorDataThisTurnTest(callEach_0, msCallEach_0, centerData); MonitorDataThisTurnTest(putEach_0, msPutEach_0, centerData); MonitorStateRunTest(callEach_0, msCallEach_0, centerData); Assert.AreEqual(1, centerData.GetAvailableChannelCount()); MonitorStateRunTest(putEach_0, msPutEach_0, centerData); Assert.AreEqual(0, centerData.GetAvailableChannelCount()); // 2개 다 나갔다. Valid하지 않다. Assert.AreEqual(false, controller.IsValid(centerData)); // run test Assert.AreEqual(0, controller.Run(centerData)); // entering test EnteringStateTest(callEach_0, centerData); Assert.AreEqual(true, controller.IsValid(centerData)); EnteringStateTest(putEach_0, centerData); Assert.AreEqual(true, controller.IsValid(centerData)); // rebalance test RebalanceStateTest(callEach_0, centerData); Assert.AreEqual(true, controller.IsValid(centerData)); RebalanceStateTest(putEach_0, centerData); Assert.AreEqual(false, controller.IsValid(centerData)); // cancel done test CencelOrderDoneTest(centerData, callEach_0); }
void EDoorMonitorEnterControllerTest( EDoorMonitorEnterController monitorController) { EDoorMonitorEnterController_Accessor accController = new EDoorMonitorEnterController_Accessor( new PrivateObject(monitorController)); Assert.AreNotEqual(accController._eachControllers.Count, 0); Assert.AreEqual(accController._doneQueue.Count, 0); foreach (EDoorEachMonitorEnterController each in accController._eachControllers) { EDoorEachMonitorEnterControllerTest(each); } }