Example #1
0
        public void GivenElevatorInFirstFloor_WhenRequetIsAddedToMoveToGround_ThenElevatorIsMovedToGroundFloor()
        {
            //Arrange
            AutoResetEvent signalRequestCompletion = new AutoResetEvent(false);
            Elevator       elevator = new Elevator(GetFloors(), "Elevator 1");

            elevator.AddRequest(1, (elevatorReachedDestination) =>
            {
                //Act
                elevator.AddRequest(0, (elevatorGroundFloor) =>
                {
                    //Assert
                    var actions = elevator.GetActions();
                    Assert.Equal(4, actions.Length);
                    Assert.Equal(new ElevatorAction(0, 1), actions[0]);
                    Assert.Equal(new ElevatorAction(1), actions[1]);
                    Assert.Equal(new ElevatorAction(1, 0), actions[2]);
                    Assert.Equal(new ElevatorAction(0), actions[3]);

                    signalRequestCompletion.Set();
                });
                elevator.CloosDoors();
            });
            signalRequestCompletion.WaitOne();
        }