public async Task Observable_Current_returns_latest_element() { var subject = new BehaviorSubject <int>(1); var asyncEnumerable = subject.Current(); await using (var asyncEnumerator = asyncEnumerable.GetAsyncEnumerator()) { subject.OnNext(2); subject.OnNext(3); subject.OnNext(4); Assert.True(await asyncEnumerator.MoveNextAsync()); Assert.Equal(4, asyncEnumerator.Current); } }
public async Task Observable_Current_returns_latest_element() { var subject = new BehaviorSubject<int>(1); var asyncEnumerable = subject.Current(); using (var asyncEnumerator = asyncEnumerable.GetEnumerator()) { subject.OnNext(2); subject.OnNext(3); subject.OnNext(4); Assert.True(await asyncEnumerator.MoveNext(CancellationToken.None)); Assert.Equal(4, asyncEnumerator.Current); } }
public async Task Observable_Current_completes_on_source_completion() { var subject = new BehaviorSubject <int>(1); var asyncEnumerable = subject.Current(); await using (var asyncEnumerator = asyncEnumerable.GetAsyncEnumerator()) { subject.OnNext(1); subject.OnNext(2); subject.OnNext(3); subject.OnCompleted(); Assert.False(await asyncEnumerator.MoveNextAsync()); } }
public async Task Observable_Current_propagates_exception() { var subject = new BehaviorSubject <int>(1); var asyncEnumerable = subject.Current(); await using (var asyncEnumerator = asyncEnumerable.GetAsyncEnumerator()) { subject.OnNext(1); subject.OnNext(2); subject.OnNext(3); subject.OnError(new DivideByZeroException()); asyncEnumerator .Awaiting(_ => _.MoveNextAsync().AsTask()) .Should() .ThrowExactly <DivideByZeroException>(); } }
public async Task Observable_Current_returns_elements_repeatedly() { var subject = new BehaviorSubject<int>(1); var asyncEnumerable = subject.Current(); using (var asyncEnumerator = asyncEnumerable.GetEnumerator()) { for (var i = 0; i < 10; i++) { Assert.True(await asyncEnumerator.MoveNext(CancellationToken.None)); Assert.Equal(1, asyncEnumerator.Current); } subject.OnNext(2); for (var i = 0; i < 10; i++) { Assert.True(await asyncEnumerator.MoveNext(CancellationToken.None)); Assert.Equal(2, asyncEnumerator.Current); } } }
public async Task Observable_Current_returns_elements_repeatedly() { var subject = new BehaviorSubject <int>(1); var asyncEnumerable = subject.Current(); await using (var asyncEnumerator = asyncEnumerable.GetAsyncEnumerator()) { for (var i = 0; i < 10; i++) { Assert.True(await asyncEnumerator.MoveNextAsync()); Assert.Equal(1, asyncEnumerator.Current); } subject.OnNext(2); for (var i = 0; i < 10; i++) { Assert.True(await asyncEnumerator.MoveNextAsync()); Assert.Equal(2, asyncEnumerator.Current); } } }
public async Task Observable_Current_completes_on_source_completion() { var subject = new BehaviorSubject<int>(1); var asyncEnumerable = subject.Current(); using (var asyncEnumerator = asyncEnumerable.GetEnumerator()) { subject.OnNext(1); subject.OnNext(2); subject.OnNext(3); subject.OnCompleted(); Assert.False(await asyncEnumerator.MoveNext(CancellationToken.None)); } }
public async Task Observable_Current_propagates_exception() { var subject = new BehaviorSubject<int>(1); var asyncEnumerable = subject.Current(); using (var asyncEnumerator = asyncEnumerable.GetEnumerator()) { subject.OnNext(1); subject.OnNext(2); subject.OnNext(3); subject.OnError(new InvalidOperationException()); asyncEnumerator .Awaiting(_ => _.MoveNext(CancellationToken.None)) .ShouldThrowExactly<AggregateException>() .Where(ex => ex.GetBaseException() is InvalidOperationException); } }