示例#1
0
        public void OperationCanceledExceptionWithoutCancellationTokenTest()
        {
            var tcs  = new TaskCompletionSource <object>();
            var task = tcs.Task;

            tcs.SetExceptionOrCanceled(new OperationCanceledException());

            Assert.IsTrue(task.IsCanceled);
            Assert.IsFalse(task.IsFaulted);
        }
示例#2
0
        public void OrdinaryExceptionTest()
        {
            var tcs  = new TaskCompletionSource <object>();
            var task = tcs.Task;

            tcs.SetExceptionOrCanceled(new Exception());

            Assert.IsTrue(task.IsFaulted);
            Assert.IsFalse(task.IsCanceled);
        }
示例#3
0
        public void CompletedTcsSetExceptionOrCanceledTest()
        {
            var tcs = new TaskCompletionSource <object>();

            tcs.SetResult(null);

            Assert.ThrowsException <InvalidOperationException>(() =>
            {
                tcs.SetExceptionOrCanceled(new Exception());
            });
        }
示例#4
0
        public async Task OperationCanceledExceptionWithCancellationTokenTest()
        {
            var cancellationTokenSource = new CancellationTokenSource();

            cancellationTokenSource.Cancel();
            var cancellationToken = cancellationTokenSource.Token;
            var tcs  = new TaskCompletionSource <object>();
            var task = tcs.Task;

            tcs.SetExceptionOrCanceled(new OperationCanceledException(cancellationToken));

            Assert.IsTrue(task.IsCanceled);
            Assert.IsFalse(task.IsFaulted);

            try
            {
                await task;
            }
            catch (OperationCanceledException exc)
            {
                Assert.AreEqual(cancellationToken, exc.CancellationToken);
            }
        }