public ElevatorRequestHandler Create(Elevator elevator) { var elevatorMover = new ElevatorMover(elevator, _logger, _waiterService); var elevatorRequestHandler = new ElevatorRequestHandler(_requestQueue, elevatorMover); return(elevatorRequestHandler); }
public async Task MoveToFloorAsyncShouldMoveUpIfDirectionIsUp(Elevator elevator, ElevatorRequest request) { var elevatorMover = new ElevatorMover( elevator, _movementLogger.Object, _waiterService.Object ); await elevatorMover.MoveToFloorAsync(request); Assert.Equal(request.ToFloor, elevator.CurrentFloor); }
public async Task HandleRequestsAsyncShouldMoveElevatorToCorrectFloor(ElevatorRequest request) { _queue.Setup(q => q.ReadAllAsync(It.IsAny <CancellationToken>())) .Returns(GetRequestAsAsyncEnumerable(request)); var elevatorMover = new ElevatorMover( new Elevator(), _movementLogger.Object, _waiterService.Object ); var requestHandler = new ElevatorRequestHandler( _queue.Object, elevatorMover ); await requestHandler.HandleRequestsAsync(); Assert.Equal(request.ToFloor, elevatorMover.Elevator.CurrentFloor); }
public void HasToMoveToAnotherFloorToPickUpPassengerShouldBeTrueIfHasToMove() { var request = new ElevatorRequest() { FromFloor = 5, ToFloor = 0 }; var elevator = new Elevator() { CurrentFloor = 0 }; var elevatorMover = new ElevatorMover( elevator, _movementLogger.Object, _waiterService.Object ); Assert.True(elevatorMover.HasToMoveToAnotherFloorToPickUpPassengerFor(request)); }
public async Task MoveUpAsyncShouldMoveElevatorUpwards() { var request = new ElevatorRequest { FromFloor = 0, ToFloor = 5 }; var elevator = new Elevator { CurrentFloor = 0, Name = nameof(MoveDownAsyncShouldMoveElevatorDownwards) }; var elevatorMover = new ElevatorMover( elevator, _movementLogger.Object, _waiterService.Object ); await elevatorMover.MoveUpAsync(request); Assert.Equal(request.ToFloor, elevator.CurrentFloor); }
public async Task CollectAndHandleRequestsAsyncShouldAbortIfCanceled() { var cts = new CancellationTokenSource(); _queue.Setup(q => q.ReadAllAsync(cts.Token)) .Throws <TaskCanceledException>(); var elevatorMover = new ElevatorMover( new Elevator(), _movementLogger.Object, _waiterService.Object ); var requestHandler = new ElevatorRequestHandler( _queue.Object, elevatorMover ); cts.Cancel(); await Assert.ThrowsAsync <TaskCanceledException>(() => requestHandler.HandleRequestsAsync(cts.Token) ); }
public async Task MoveDownAsyncShouldAbortIfCanceled() { var cts = new CancellationTokenSource(); var request = new ElevatorRequest { FromFloor = 5, ToFloor = 0 }; var elevator = new Elevator { CurrentFloor = 5, Name = nameof(MoveDownAsyncShouldMoveElevatorDownwards) }; var elevatorMover = new ElevatorMover( elevator, _movementLogger.Object, new WaiterService() ); cts.Cancel(); await Assert.ThrowsAsync <TaskCanceledException>(() => elevatorMover.MoveDownAsync(request, cts.Token) ); }