Пример #1
0
        public async Task Await_ShouldThrowIfCanceled()
        {
            // Arrange
            var op = new AsyncCompletionSource();
            var actualException = default(Exception);
            var task            = Task.Run(() =>
            {
                Thread.Sleep(10);
                op.SetCanceled();
            });

            // Act
            try
            {
                await op;
            }
            catch (Exception e)
            {
                actualException = e;
            }

            // Assert
            Assert.IsType <OperationCanceledException>(actualException);
            AssertCanceled(op);
        }
Пример #2
0
        public void SetCanceled_ThrowsIfOperationIsCompleted(AsyncOperationStatus status)
        {
            // Arrange
            var op = new AsyncCompletionSource(status);

            // Act/Assert
            Assert.Throws <InvalidOperationException>(() => op.SetCanceled());
            Assert.True(op.CompletedSynchronously);
        }
Пример #3
0
        public void TryAddCompletionCallback_FailsIfOperationIsCompleted()
        {
            // Arrange
            var op = new AsyncCompletionSource();

            op.SetCanceled();

            // Act
            var result = op.TryAddCompletionCallback(_ => { }, null);

            // Assert
            Assert.False(result);
        }
Пример #4
0
        public void ToObservable_OnCompletedIsCalledOnCancellation()
        {
            // Arrange
            var op         = new AsyncCompletionSource <int>();
            var observer   = new Observer <int>();
            var observable = op.Subscribe(observer);

            // Act
            op.SetCanceled();

            // Assert
            Assert.Equal(1, observer.OnErrorCount);
        }