Beispiel #1
0
        public async Task StartAsyncShouldReturnCompletedTaskIfCompleted()
        {
            var elevatorSystem = new Mock <IElevatorSystem>();

            elevatorSystem.Setup(system =>
                                 system.StartAsync(It.IsAny <CancellationToken>()));
            var hostedService = new ElevatorSystemHostedService(elevatorSystem.Object, _waiterService);

            await hostedService.StartAsync()
            .ContinueWith(t =>
                          Assert.Equal(TaskStatus.RanToCompletion, t.Status)
                          );
        }
Beispiel #2
0
        public async Task StopAsyncShouldAbortIfCanceled()
        {
            var cts            = new CancellationTokenSource();
            var elevatorSystem = new Mock <IElevatorSystem>();

            elevatorSystem.Setup(system =>
                                 system.StartAsync(It.IsAny <CancellationToken>()));
            var hostedService = new ElevatorSystemHostedService(elevatorSystem.Object, _waiterService);

            cts.Cancel();
            await hostedService.StartAsync();

            await Assert.ThrowsAsync <OperationCanceledException>(() =>
                                                                  hostedService.StopAsync(cts.Token)
                                                                  );
        }
Beispiel #3
0
        public async Task StartAsyncShouldReturnCanceledIfCanceled()
        {
            var cts            = new CancellationTokenSource();
            var elevatorSystem = new Mock <IElevatorSystem>();
            var hostedService  = new ElevatorSystemHostedService(elevatorSystem.Object, _waiterService);

            cts.Cancel();
            elevatorSystem.Setup(system =>
                                 system.StartAsync(It.IsAny <CancellationToken>()))
            .Returns(Task.FromCanceled(cts.Token));

            await hostedService.StartAsync(cts.Token)
            .ContinueWith(t =>
                          Assert.Equal(TaskStatus.Canceled, t.Status)
                          );
        }