Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
        }