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

            elevator.Initialize();

            Assert.Throws <EmergencyException>(() => elevator.MoveUp());
        }
        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);
        }
        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;
        }