Ejemplo n.º 1
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);
        }
Ejemplo n.º 2
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 }));
        }
Ejemplo n.º 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);
        }
Ejemplo n.º 4
0
        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));
        }
Ejemplo n.º 5
0
        public async Task FromResult()
        {
            ValueTask <int> task = ValueTaskEx.FromResult(123);

            Assert.IsTrue(task.IsCompletedSuccessfully);

            var r = await task;

            Assert.AreEqual(123, r);
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
        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);
        }
Ejemplo n.º 8
0
        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);
        }
Ejemplo n.º 9
0
        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);
        }