| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | using Google.Apis.Util; |
| | using System; |
| | using System.Threading; |
| | using System.Threading.Tasks; |
| | using Xunit; |
| |
|
| | namespace Google.Apis.Tests.Apis.Utils |
| | { |
| | public class TaskExtensionsTest |
| | { |
| | [Fact] |
| | public void WithCancellationToken_None() |
| | { |
| | var task = new TaskCompletionSource<int>().Task; |
| | |
| | var result = task.WithCancellationToken(CancellationToken.None); |
| | Assert.Same(task, result); |
| | } |
| |
|
| | [Fact] |
| | public async Task WithCancellationToken_TokenIsCancelled() |
| | { |
| | var cts = new CancellationTokenSource(); |
| | var tcs = new TaskCompletionSource<int>(); |
| |
|
| | var result = tcs.Task.WithCancellationToken(cts.Token); |
| | cts.Cancel(); |
| |
|
| | await Assert.ThrowsAsync<TaskCanceledException>(() => result); |
| | } |
| |
|
| | [Fact] |
| | public async Task WithCancellationToken_TaskIsCancelled() |
| | { |
| | var cts = new CancellationTokenSource(); |
| | var tcs = new TaskCompletionSource<int>(); |
| |
|
| | var result = tcs.Task.WithCancellationToken(cts.Token); |
| | tcs.SetCanceled(); |
| |
|
| | await Assert.ThrowsAsync<TaskCanceledException>(() => result); |
| | } |
| |
|
| | [Fact] |
| | public async Task WithCancellationToken_TaskIsFaulted() |
| | { |
| | var cts = new CancellationTokenSource(); |
| | var tcs = new TaskCompletionSource<int>(); |
| |
|
| | var result = tcs.Task.WithCancellationToken(cts.Token); |
| | var exception = new Exception(); |
| | tcs.SetException(exception); |
| |
|
| | var caught = await Assert.ThrowsAsync<Exception>(() => result); |
| | Assert.Same(exception, caught); |
| | } |
| |
|
| | [Fact] |
| | public async Task WithCancellationToken_TaskCompletes() |
| | { |
| | var cts = new CancellationTokenSource(); |
| | var tcs = new TaskCompletionSource<int>(); |
| |
|
| | var result = tcs.Task.WithCancellationToken(cts.Token); |
| | tcs.SetResult(5); |
| |
|
| | Assert.Equal(5, await result); |
| | } |
| | } |
| | } |
| |
|