Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
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);
            }
        }