public async Task Method_Task_Should_Be_Cancelled_As_Soon_As_Possible() { var target = new CancellableImplementation(); var actor = _Factory.Build <ICancellableInterface>(target); var longRunningTask = actor.Do(1, CancellationToken.None); var cancellationTokenSource = new CancellationTokenSource(); var stopWatch = Stopwatch.StartNew(); var taskToBeCancelled = actor.Do(1, cancellationTokenSource.Token); cancellationTokenSource.Cancel(); stopWatch.Stop(); var exception = await TaskEnqueueWithCancellationTester.AwaitForException(taskToBeCancelled); var delay = stopWatch.Elapsed; await _Factory.DisposeAsync(); try { await longRunningTask; } catch { // ignored } exception.Should().NotBeNull(); exception.Should().BeAssignableTo <TaskCanceledException>(); delay.Should().BeLessThan(TimeSpan.FromSeconds(0.5)); }
public async Task Enqueue_Task_With_Cancellation_Do_Not_Run_Task_Cancelled_Enqueued() { var tester = new TaskEnqueueWithCancellationTester(_TaskSchedulerFiber); await tester.RunAndCancelTask(); tester.CancelledTaskHasBeenExcecuted.Should().BeFalse(); }
public async Task Enqueue_Task_With_Cancellation_Imediatelly_Cancel_Tasks_Enqueued() { var tester = new TaskEnqueueWithCancellationTester(_TaskSchedulerFiber); await tester.RunAndCancelTask(); tester.TimeSpentToCancellTask.Should().BeLessThan(TimeSpan.FromSeconds(0.5)); }
public async Task Enqueue_Task_T_With_Cancellation_Do_Not_Run_Task_Cancelled_Enqueued() { var tester = new TaskEnqueueWithCancellationTester(_SynchronizationContextFiber); await tester.RunAndCancelTask_T(); tester.CancelledTaskHasBeenExcecuted.Should().BeFalse(); }
public async Task Enqueue_Task_T_With_Cancellation_Do_Not_Cancel_Running_Task(int value) { var target = GetSafeFiber(); var tester = new TaskEnqueueWithCancellationTester(target); var result = await tester.CancelNotCancellableRunningTask_T(value); result.Should().Be(value); }
public async Task Enqueue_Task_T_With_Cancellation_Do_Not_Run_Task_Cancelled_Enqueued() { var target = GetSafeFiber(); var tester = new TaskEnqueueWithCancellationTester(target); await tester.RunAndCancelTask_T(); tester.CancelledTaskHasBeenExcecuted.Should().BeFalse(); }
public async Task Enqueue_Task_T_With_Cancellation_Imediatelly_Cancel_Tasks_Enqueued() { var target = GetSafeFiber(); var tester = new TaskEnqueueWithCancellationTester(target); await tester.RunAndCancelTask_T(); tester.TimeSpentToCancellTask.Should().BeLessThan(TimeSpan.FromSeconds(0.5)); }
public async Task Enqueue_Task_With_Cancellation_Do_Not_Cancel_Running_Task() { var target = GetSafeFiber(); var tester = new TaskEnqueueWithCancellationTester(target); var returnedTask = tester.CancelNotCancellableRunningTask(); await returnedTask; returnedTask.Status.Should().Be(TaskStatus.RanToCompletion); }
public async Task Enqueue_Task_T_With_Cancellation_Interpret_CanceledOperationException_As_Cancelled_Task() { var target = GetSafeFiber(); var tester = new TaskEnqueueWithCancellationTester(target); var cancelledTask = tester.CancelCancellableRunningTask_T(); var expection = await TaskEnqueueWithCancellationTester.AwaitForException(cancelledTask); expection.Should().NotBeNull(); expection.Should().BeAssignableTo <TaskCanceledException>(); cancelledTask.Status.Should().Be(TaskStatus.Canceled); }