public async Task WhenAllIEnumerableWithRaise2() { var tcs1 = new TaskCompletionSource <int>(); var tcs2 = new TaskCompletionSource <int>(); var tcs3 = new TaskCompletionSource <int>(); IEnumerable <ValueTask <int> > enumerable = new[] { tcs1.Task.AsValueTask(), tcs2.Task.AsValueTask(), tcs3.Task.AsValueTask() }; var task = ValueTaskEx.WhenAll(enumerable); Assert.IsFalse(task.IsCompleted); tcs1.SetResult(123); Assert.IsFalse(task.IsCompleted); var ex1 = new InvalidOperationException(); tcs2.SetException(ex1); Assert.IsFalse(task.IsCompleted); var ex2 = new InvalidOperationException(); tcs3.SetException(ex2); Assert.IsTrue(task.IsCompleted); Assert.IsFalse(task.IsCompletedSuccessfully); await AssertCaughtAsync(ex1, task); }
public async Task WhenAllIEnumerable() { var tcs1 = new TaskCompletionSource <int>(); var tcs2 = new TaskCompletionSource <int>(); var tcs3 = new TaskCompletionSource <int>(); IEnumerable <ValueTask <int> > enumerable = new[] { tcs1.Task.AsValueTask(), tcs2.Task.AsValueTask(), tcs3.Task.AsValueTask() }; var task = ValueTaskEx.WhenAll(enumerable); Assert.IsFalse(task.IsCompleted); tcs1.SetResult(123); Assert.IsFalse(task.IsCompleted); tcs2.SetResult(456); Assert.IsFalse(task.IsCompleted); tcs3.SetResult(789); Assert.IsTrue(task.IsCompleted); Assert.IsTrue(task.IsCompletedSuccessfully); var rs = await task; Assert.IsTrue(rs.SequenceEqual(new[] { 123, 456, 789 })); }
public async Task WhenAllWithRaise1() { var tcs1 = new TaskCompletionSource <int>(); var tcs2 = new TaskCompletionSource <int>(); var tcs3 = new TaskCompletionSource <int>(); var args = new[] { tcs1.Task.AsValueTask(), tcs2.Task.AsValueTask(), tcs3.Task.AsValueTask() }; var task = ValueTaskEx.WhenAll(args); Assert.IsFalse(task.IsCompleted); tcs1.SetResult(123); Assert.IsFalse(task.IsCompleted); var ex = new InvalidOperationException(); tcs2.SetException(ex); Assert.IsFalse(task.IsCompleted); tcs3.SetResult(789); Assert.IsTrue(task.IsCompleted); Assert.IsFalse(task.IsCompletedSuccessfully); await AssertCaughtAsync(ex, task); }
public async Task DelayTimespan() { var begin = DateTime.Now; await ValueTaskEx.Delay(TimeSpan.FromMilliseconds(1000)); var end = DateTime.Now; Assert.IsTrue(200 > Math.Abs((end - begin).TotalMilliseconds - 1000)); }
public async Task FromResult() { ValueTask <int> task = ValueTaskEx.FromResult(123); Assert.IsTrue(task.IsCompletedSuccessfully); var r = await task; Assert.AreEqual(123, r); }
public async Task DelayMillisecondWithCT() { var cts = new CancellationTokenSource(); var task = ValueTaskEx.Delay(1000, cts.Token); Assert.IsFalse(task.IsCompleted); cts.Cancel(); Assert.IsTrue(task.IsCompleted); Assert.IsTrue(task.IsCanceled); await AssertCaughtAsync <TaskCanceledException, Unit>(task); }
public async Task WhenAnyIEnumerableWithRaise2() { var tcs1 = new TaskCompletionSource <int>(); var tcs2 = new TaskCompletionSource <int>(); var tcs3 = new TaskCompletionSource <int>(); IEnumerable <ValueTask <int> > enumerable = new[] { tcs1.Task.AsValueTask(), tcs2.Task.AsValueTask(), tcs3.Task.AsValueTask() }; var task = ValueTaskEx.WhenAny(enumerable); Assert.IsFalse(task.IsCompleted); var ex = new InvalidOperationException(); tcs2.SetException(ex); Assert.IsTrue(task.IsCompleted); Assert.IsTrue(task.IsCompletedSuccessfully); var vt = await task; Assert.IsTrue(vt.IsCompleted); Assert.IsFalse(vt.IsCompletedSuccessfully); await AssertCaughtAsync(ex, vt); }
public async Task WhenAnyIEnumerable2() { var tcs1 = new TaskCompletionSource <int>(); var tcs2 = new TaskCompletionSource <int>(); var tcs3 = new TaskCompletionSource <int>(); IEnumerable <ValueTask <int> > enumerable = new[] { tcs1.Task.AsValueTask(), tcs2.Task.AsValueTask(), tcs3.Task.AsValueTask() }; var task = ValueTaskEx.WhenAny(enumerable); Assert.IsFalse(task.IsCompleted); tcs2.SetResult(456); Assert.IsTrue(task.IsCompleted); Assert.IsTrue(task.IsCompletedSuccessfully); var vt = await task; Assert.IsTrue(vt.IsCompleted); Assert.IsTrue(vt.IsCompletedSuccessfully); var r = await vt; Assert.AreEqual(456, r); }
public async Task WhenAny1() { var tcs1 = new TaskCompletionSource <int>(); var tcs2 = new TaskCompletionSource <int>(); var tcs3 = new TaskCompletionSource <int>(); var args = new[] { tcs1.Task.AsValueTask(), tcs2.Task.AsValueTask(), tcs3.Task.AsValueTask() }; var task = ValueTaskEx.WhenAny(args); Assert.IsFalse(task.IsCompleted); tcs1.SetResult(123); Assert.IsTrue(task.IsCompleted); Assert.IsTrue(task.IsCompletedSuccessfully); var vt = await task; Assert.IsTrue(vt.IsCompleted); Assert.IsTrue(vt.IsCompletedSuccessfully); var r = await vt; Assert.AreEqual(123, r); }