public void CallToDisposedObjectShouldThrow() { var sequencer = new SequentialTaskExecutor(); sequencer.Dispose(); Assert.Throws <ObjectDisposedException>(() => { sequencer.ExecuteTask(() => Task.CompletedTask); }); }
public async Task EnsureNestedCallsAreExecutedDirectly() { const int NumberOfTasks = 10; var sequencer = new SequentialTaskExecutor(); var tasks = new List <Task>(); var sequences = new List <int>(); for (int i = 0; i < NumberOfTasks; i++) { int num = i; tasks.Add(sequencer.ExecuteTask(async() => { async Task func() { await sequencer.ExecuteTask(async() => { await Task.Delay(1); sequences.Add(num); }); } await func(); })); } await Task.WhenAll(tasks.ToArray()); for (int i = 0; i < NumberOfTasks; i++) { Assert.Equal(i, sequences[i]); } }