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