public void EmergencyException()
        {
            HALProvider     halProvider = new HALProvider();
            IElevatorCageIO elevator    = halProvider.ElevatorCageIO;

            elevator.Initialize();

            Assert.Throws <EmergencyException>(() => elevator.MoveUp());
        }
Beispiel #2
0
        private void Cage_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
        {
            IElevatorCageIO cageInterface = sender as IElevatorCageIO;

            m_Logger.Debug($"Elevator state {cageInterface.EngineStatus}");

            if (cageInterface.EngineStatus != EngineStatusEnum.Idle && cageInterface.AtFloor.HasValue)
            {
                CageMoveLogic(cageInterface);
            }
        }
        private void ElevatorCageIO_PropertyChangedActOnMovingUp(object sender, System.ComponentModel.PropertyChangedEventArgs e)
        {
            IElevatorCageIO cageInterface = sender as IElevatorCageIO;

            m_Logger.Debug($"Elevator state {cageInterface.EngineStatus}");
            if (cageInterface.AtFloor.HasValue)
            {
                m_Logger.Debug($"Elevator reached a floor");
                cageInterface.Stop();
            }
            else
            {
            }
        }
        public void MoveUpHappyFlow()
        {
            HALProvider     halProvider = new HALProvider();
            IElevatorCageIO elevator    = halProvider.ElevatorCageIO;

            elevator.PropertyChanged += ElevatorCageIO_PropertyChangedActOnMovingUp;

            elevator.Initialize();

            elevator.MoveUp();
            Assert.That(elevator.AtFloor == 1);

            elevator.MoveUp();
            Assert.That(elevator.AtFloor == 2);
        }
Beispiel #5
0
        private void ElevatorCageIO_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
        {
            IElevatorCageIO cageInterface = sender as IElevatorCageIO;

            string engineStatus = cageInterface.EngineStatus.ToString();

            ElevatorModel.Cage.CageStatus = engineStatus;
            ElevatorModel.ElevatorFloorLevel_0.CageStatus = engineStatus;
            ElevatorModel.ElevatorFloorLevel_1.CageStatus = engineStatus;
            ElevatorModel.ElevatorFloorLevel_2.CageStatus = engineStatus;

            if (cageInterface.AtFloor != CageAtFloor)
            {
                CageAtFloor = cageInterface.AtFloor;
            }
        }
        public void MoveUpAndDownHappyFlow()
        {
            HALProvider     halProvider = new HALProvider();
            IElevatorCageIO elevator    = halProvider.ElevatorCageIO;

            elevator.Initialize();

            elevator.PropertyChanged += Elevator_PropertyChangedHandleTwoFloorUp;
            elevator.MoveUp();
            Assert.That(elevator.AtFloor == 2);
            elevator.PropertyChanged -= Elevator_PropertyChangedHandleTwoFloorUp;

            elevator.PropertyChanged += Elevator_PropertyChangedHandleTwoFloorDown;
            elevator.MoveDown();
            Assert.That(elevator.AtFloor == 0);
            elevator.PropertyChanged -= Elevator_PropertyChangedHandleTwoFloorDown;
        }
Beispiel #7
0
        private void CageMoveLogic(IElevatorCageIO cage)
        {
            int currentFloor = cage.AtFloor.Value;

            if (Context.TargetFloor < currentFloor)
            {
                cage.MoveDown();
            }
            else if (Context.TargetFloor > currentFloor)
            {
                cage.MoveUp();
            }
            else
            {
                cage.Stop();
                m_Logger.Debug("Elevator already at floor.");
                m_CageAtFloor = true;
            }
        }
Beispiel #8
0
        /// <summary>
        /// Executes the state logic.
        /// </summary>
        /// <exception cref="ElevatorException"></exception>
        public override void ExecuteStateLogic()
        {
            m_Logger.Debug($"Executing Go to floor ");

            IElevatorCageIO cage = Context.HAL.ElevatorCageIO;

            cage.PropertyChanged += Cage_PropertyChanged;

            if (cage.AtFloor.HasValue == false)
            {
                m_Logger.Error("ELevator is not at a floor");
                throw new ElevatorException($"Elevator is not at a floor cannot execute");
            }

            CageMoveLogic(cage);

            while (m_CageAtFloor == false)
            {
                Thread.Sleep(1);
            }
            cage.PropertyChanged -= Cage_PropertyChanged;
        }
        private void Elevator_PropertyChangedHandleTwoFloorDown(object sender, System.ComponentModel.PropertyChangedEventArgs e)
        {
            IElevatorCageIO cageInterface = sender as IElevatorCageIO;

            m_Logger.Debug($"Elevator state {cageInterface.EngineStatus}");
            if (cageInterface.AtFloor.HasValue)
            {
                switch (cageInterface.AtFloor.Value)
                {
                case 0:
                    m_Logger.Debug($"Elevator Stop");
                    cageInterface.Stop();
                    break;

                case 1:
                    m_Logger.Debug($"Elevator continue moving down");
                    cageInterface.MoveDown();
                    break;

                case 2:
                    break;
                }
            }
        }