public async void First_Win_Sync()
        {
            var ttr = new TestTaskRunner();

            var t = AsyncEnumerable.Amb(
                AsyncEnumerable.Range(1, 5)
                .DoOnNext(async v => { await ttr.CreateCompleteTask(500); }),
                AsyncEnumerable.Range(6, 5)
                .DoOnNext(async v => { await ttr.CreateCompleteTask(1000); })
                )
                    .GetAsyncEnumerator()
            ;

            try
            {
                for (var i = 1; i <= 5; i++)
                {
                    var t0 = t.MoveNextAsync();

                    await ttr.TaskQueued(i * 500);

                    ttr.AdvanceTimeBy(500);

                    await t0;

                    Assert.Equal(i, t.Current);
                }

                Assert.False(await t.MoveNextAsync());
            }
            finally
            {
                await t.DisposeAsync();
            }
        }
        public async void First_Win_Sync()
        {
            var ttr = new TestTaskRunner();

            var t = AsyncEnumerable.Amb(
                AsyncEnumerable.Range(1, 5)
                .DoOnNext(async v => { await ttr.CreateCompleteTask(500); }),
                AsyncEnumerable.Range(6, 5)
                .DoOnNext(async v => { await ttr.CreateCompleteTask(1000); })
                )
                    .GetAsyncEnumerator(default)
Beispiel #3
0
        public async void RightTaskQueued_Absolute()
        {
            for (var i = 0; i < 1000; i++)
            {
                var ttr = new TestTaskRunner(50);

                var t1 = Task.Run(() => { ttr.CreateCompleteTask(100, true); });
                var t2 = Task.Run(() => { ttr.CreateCompleteTask(101, true); });

                await ttr.TaskQueued(101);

                await t1;

                await t2;

                ttr.AdvanceTimeBy(101);

                Assert.False(ttr.HasTasks);
            }
        }
Beispiel #4
0
        public void Simple_Absolute()
        {
            var ttr = new TestTaskRunner(50);

            Assert.Equal(50L, ttr.Now);
            Assert.False(ttr.HasTasks);

            var t1 = ttr.CreateCompleteTask(100, true);

            Assert.True(ttr.HasTasks);
            Assert.False(t1.IsCompleted, "t1 is completed");

            ttr.AdvanceTimeBy(50);

            Assert.False(ttr.HasTasks, "more tasks?");
            Assert.True(t1.IsCompleted, "t1 is not completed");
        }