public void Then_Should_Throw_Exception_After_Tasks_Fail()
        {
            var exceptionToThrow = new ArgumentNullException();
            var firstTask        = new PandaTask();
            var secondTask       = new PandaTask();

            var continiueTask = firstTask.Then(() => secondTask).Fail(_ => throw exceptionToThrow);

            Assert.IsNull(continiueTask.Error);

            Exception finalException = null;

            try
            {
                secondTask.Reject();
                firstTask.Reject();
            }
            catch (Exception e) when(e is ArgumentNullException nullException)
            {
                finalException = nullException;
            }

            Assert.That(exceptionToThrow, Is.EqualTo(finalException));
            Assert.IsAssignableFrom <TaskRejectedException>(continiueTask.Error);
        }
        public void RejectTest()
        {
            //arrange
            var testTask = new PandaTask <int>();

            //act
            Exception testException = new Exception();

            testTask.Reject(testException);

            //assert
            Assert.AreEqual(testException, testTask.Error);

            Exception realException = null;

            try
            {
                var _ = testTask.Result;
            }
            catch (Exception exception)
            {
                realException = exception;
            }

            Assert.AreEqual(testException, realException);
        }
        public void SetValueAfterRejectTest()
        {
            //arrange
            var testTask = new PandaTask <int>();

            testTask.Reject();

            //act-assert
            Assert.Throws <InvalidOperationException>(() => testTask.SetValue(0));
        }
        public void DoubleRejectTest()
        {
            //arrange
            var testTask = new PandaTask <int>();

            testTask.Reject();

            //act-assert
            Assert.Throws <InvalidOperationException>(testTask.Reject);
        }
        public void RejectTest()
        {
            //act
            Exception testError = new Exception();

            _task.Reject(testError);

            //assert
            Assert.AreEqual(testError, _task.Error);
            Assert.AreEqual(PandaTaskStatus.Rejected, _task.Status);

            Assert.False(_taskSuccess);
            Assert.AreEqual(testError, _realException);
        }
        public void Then_Should_Save_Exception_In_Stack_After_Tasks_Fail()
        {
            var rejectException = new Exception("some text");
            var firstTask       = new PandaTask();
            var secondTask      = new PandaTask();

            var continiueTask = firstTask.Then(() => secondTask).Fail(_ => throw new ArgumentNullException());

            try
            {
                secondTask.Reject(rejectException);
                firstTask.Reject(rejectException);
            }
            catch {}

            Assert.That(continiueTask.Error, Is.EqualTo(rejectException));
        }
        public void ThenResultRejectFirstTest()
        {
            //arrange
            var firstTask = new PandaTask();
            var nextTask  = new PandaTask <int>();

            IPandaTask <int> resultTask = firstTask.Then(() => nextTask);

            //act
            var testError = new Exception();

            firstTask.Reject(testError);

            //assert
            Assert.AreEqual(PandaTaskStatus.Rejected, resultTask.Status);
            Assert.AreEqual(testError, resultTask.Error);
        }
        public void ResolveFromRejectTest()
        {
            //arrange
            var firstTask  = new PandaTask <int>();
            var secondTask = new PandaTask <int>();

            const int       realResult = 3;
            PandaTask <int> testTask   = ConstructTask(firstTask, true, () =>
            {
                secondTask.SetValue(realResult);
                return(secondTask);
            });

            //act
            firstTask.Reject();

            //assert
            Assert.AreEqual(realResult, testTask.Result);
            Assert.AreEqual(PandaTaskStatus.Resolved, testTask.Status);
        }
Example #9
0
        public void ChangeCollectionCompleteWithErrorTest()
        {
            //arrange
            var source = new PandaTask();
            var tasks  = new List <IPandaTask>
            {
                PandaTasksUtilities.CompletedTask,
                source
            };

            var allTask = new WhenAllPandaTask(tasks, CancellationStrategy.Aggregate);

            tasks.Add(PandaTasksUtilities.CanceledTask);

            //act
            var testError = new Exception();

            source.Reject(testError);

            //assert
            Assert.AreEqual(PandaTaskStatus.Rejected, allTask.Status);
            Assert.IsInstanceOf <AggregateException>(allTask.Error);
            CollectionAssert.AreEqual(new[] { testError }, (( AggregateException )allTask.Error).InnerExceptions);
        }