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 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 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); }