예제 #1
0
        public void TrySetResult_ThrowsIfOperationIsDisposed()
        {
            // Arrange
            var op = new AsyncCompletionSource <int>(AsyncOperationStatus.Canceled);

            op.Dispose();

            // Act/Assert
            Assert.Throws <ObjectDisposedException>(() => op.TrySetResult(15));
        }
예제 #2
0
        public void TrySetResult_FailsIfOperationIsCompleted()
        {
            // Arrange
            var op = new AsyncCompletionSource <int>(AsyncOperationStatus.Canceled);

            // Act
            var result = op.TrySetResult(10);

            // Assert
            Assert.False(result);
            Assert.True(op.CompletedSynchronously);
            Assert.True(op.IsCanceled);
        }
예제 #3
0
        public void TrySetResult_SetsStatusToRanToCompletion(AsyncOperationStatus status)
        {
            // Arrange
            var resultValue = new object();
            var op          = new AsyncCompletionSource <object>(status);

            // Act
            var result = op.TrySetResult(resultValue);

            // Assert
            Assert.True(op.IsCompletedSuccessfully);
            Assert.Equal(resultValue, op.Result);
            Assert.True(result);
        }
예제 #4
0
        public void TrySetResult_RaisesCompletionCallbacks()
        {
            // Arrange
            var asyncCallbackCalled1 = false;
            var asyncCallbackCalled2 = false;
            var op = new AsyncCompletionSource <int>(asyncResult => asyncCallbackCalled1 = true, null);

            op.AddCompletionCallback(asyncOp => asyncCallbackCalled2 = true, null);

            // Act
            op.TrySetResult(10);

            // Assert
            Assert.True(asyncCallbackCalled1);
            Assert.True(asyncCallbackCalled2);
        }