public async Task SingleYieldBreakReturnsEmptySequence() { IAsyncEnumerator <int> enumerator = SingleYieldBreak(); int[] items = await enumerator.ToArray().ConfigureAwait(true); items.Should().BeEmpty(); async IAsyncEnumerator <int> SingleYieldBreak() => await AsyncYield.Break <int>(); }
public void ItemExceptionIsPropagated() { IAsyncEnumerator <int> enumerator = TaskAsyncEnumerator.Create ( Task.FromResult(42), Task.FromException <int>(new InvalidOperationException()) ); Func <Task <int[]> > faultyAct = () => enumerator.ToArray(); faultyAct.ShouldThrow <InvalidOperationException>(); }
public async Task ReturnsItemsInOrder() { Task <int>[] itemTasks = new Task <int>[] { Task.FromResult(42), Task.Delay(100).ContinueWith(_ => 64), Task.FromResult(128) }; IAsyncEnumerator <int> enumerator = TaskAsyncEnumerator.Create(itemTasks); int[] array = await enumerator.ToArray().ConfigureAwait(true); int[] expectedItems = await Task.WhenAll(itemTasks).ConfigureAwait(true); array.Should().HaveEquivalentItems(expectedItems); }