public async Task AsObservable_DataWritten(bool endWithError) { IChannel <int> c = CreateChannel(); IObserver <int> o = c.AsObserver(); Task reader = Task.Run(async() => { int received = 0; IAsyncEnumerator <int> e = c.GetAsyncEnumerator(); while (await e.MoveNextAsync()) { Assert.Equal(received++, e.Current); } }); for (int i = 0; i < 10; i++) { o.OnNext(i); } if (endWithError) { o.OnError(new FormatException()); await Assert.ThrowsAsync <FormatException>(() => reader); } else { o.OnCompleted(); await reader; } }