public async Task Await_ShouldThrowIfFaulted() { // Arrange var op = new AsyncCompletionSource(); var expectedException = new Exception(); var actualException = default(Exception); var task = Task.Run(() => { Thread.Sleep(10); op.SetException(expectedException); }); // Act try { await op; } catch (Exception e) { actualException = e; } // Assert Assert.Equal(expectedException, actualException); AssertFaulted(op); }
public void SetException_ThrowsIfOperationIsCompleted(AsyncOperationStatus status) { // Arrange var e = new Exception(); var op = new AsyncCompletionSource(status); // Act/Assert Assert.Throws <InvalidOperationException>(() => op.SetException(e)); Assert.True(op.CompletedSynchronously); }
public void ToObservable_OnCompletedIsNotCalledOnError() { // Arrange var op = new AsyncCompletionSource <int>(); var observer = new Observer <int>(); var observable = op.Subscribe(observer); // Act op.SetException(new Exception()); // Assert Assert.Equal(0, observer.OnCompletedCount); }
public void ToObservable_OnErrorIsCalled() { // Arrange var e = new Exception(); var op = new AsyncCompletionSource <int>(); var observer = new Observer <int>(); var observable = op.Subscribe(observer); // Act op.SetException(e); // Assert Assert.Equal(1, observer.OnErrorCount); Assert.Equal(e, observer.Exception); }