Esempio n. 1
0
        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));
        }
Esempio n. 4
0
        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();
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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();
        }
Esempio n. 7
0
        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));
        }
Esempio n. 8
0
        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);
        }
Esempio n. 9
0
        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);
        }