Beispiel #1
0
        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 }));
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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);
        }