Example #1
0
        public void Task_Should_Be_Cancelled(IEnumerable <IPandaTask> tasks, CancellationStrategy cancellationStrategy, Type exceptionType)
        {
            var task = new WhenAllPandaTask(tasks, cancellationStrategy);

            Assert.AreEqual(PandaTaskStatus.Rejected, task.Status);
            Assert.That(task.Error, Is.InstanceOf(exceptionType));
        }
Example #2
0
        public void HalfRejectTest(int count, int rejectCount)
        {
            //arrange
            var tasksCollection = new List <PandaTask>(count);

            for (int i = 0; i < count; i++)
            {
                tasksCollection.Add(new PandaTask());
            }

            var task = new WhenAllPandaTask(tasksCollection, CancellationStrategy.Aggregate);

            //act

            for (int i = 0; i < count; i++)
            {
                if (i < rejectCount)
                {
                    tasksCollection[i].Reject(new Exception());
                }
                else
                {
                    tasksCollection[i].Resolve();
                }
            }

            //assert
            Assert.AreEqual(PandaTaskStatus.Rejected, task.Status);

            ReadOnlyCollection <Exception> realExceptions = (( AggregateException )task.Error).Flatten().InnerExceptions;

            CollectionAssert.AreEquivalent(tasksCollection.Where(x => x.Status == PandaTaskStatus.Rejected).Select(x => x.Error), realExceptions);
        }
Example #3
0
        public void RejectAllTest()
        {
            var count = 3;

            //arrange
            var tasksCollection = new List <PandaTask>(count);

            for (int i = 0; i < count; i++)
            {
                tasksCollection.Add(new PandaTask());
            }

            var task = new WhenAllPandaTask(tasksCollection, CancellationStrategy.Aggregate);

            //act
            tasksCollection.ForEach(x => x.Reject(new Exception()));

            //assert
            Assert.AreEqual(PandaTaskStatus.Rejected, task.Status);
            Assert.IsInstanceOf <AggregateException>(task.Error);

            ReadOnlyCollection <Exception> realExceptions = (( AggregateException )task.Error).Flatten().InnerExceptions;

            CollectionAssert.AreEquivalent(tasksCollection.Select(x => x.Error), realExceptions);
        }
Example #4
0
        public void RejectTest()
        {
            //arrange
            var task = new WhenAllPandaTask(new[] { new PandaTask() }, CancellationStrategy.Aggregate);

            //act-assert
            Assert.Throws <InvalidOperationException>(task.Resolve);
        }
Example #5
0
        public void ZeroTasksTest()
        {
            //act
            var task = new WhenAllPandaTask(Enumerable.Empty <IPandaTask>(), CancellationStrategy.Aggregate);

            //assert
            Assert.AreEqual(PandaTaskStatus.Resolved, task.Status);
        }
Example #6
0
        public void ResolveAfterDisposeTest()
        {
            //arrange
            var innerTask = new PandaTask();
            var task      = new WhenAllPandaTask(new[] { innerTask }, CancellationStrategy.Aggregate);

            task.Dispose();

            //act
            innerTask.Resolve();

            //assert
            Assert.AreEqual(PandaTaskStatus.Rejected, task.Status);
            Assert.IsInstanceOf <ObjectDisposedException>(task.Error.GetBaseException());
        }
Example #7
0
        public void InitResolvedTest(int count)
        {
            //arrange
            var tasksCollection = new List <IPandaTask>(count);

            for (int i = 0; i < count; i++)
            {
                tasksCollection.Add(PandaTasksUtilities.CompletedTask);
            }

            //act
            var task = new WhenAllPandaTask(tasksCollection, CancellationStrategy.Aggregate);

            //assert
            Assert.AreEqual(PandaTaskStatus.Resolved, task.Status);
        }
Example #8
0
        public void InitFirstResolvedTest(int count)
        {
            //arrange
            var tasksCollection = new List <PandaTask>(count);

            for (int i = 0; i < count; i++)
            {
                tasksCollection.Add(new PandaTask());
            }

            tasksCollection[0].Resolve();

            //act
            var task = new WhenAllPandaTask(tasksCollection, CancellationStrategy.Aggregate);

            //assert
            Assert.AreEqual(PandaTaskStatus.Pending, task.Status);
        }
Example #9
0
        public void WaitAllResolveTest(int count)
        {
            //arrange
            var tasksCollection = new List <PandaTask>(count);

            for (int i = 0; i < count; i++)
            {
                tasksCollection.Add(new PandaTask());
            }

            var task = new WhenAllPandaTask(tasksCollection, CancellationStrategy.Aggregate);

            //act
            tasksCollection.ForEach(x => x.Resolve());

            //assert
            Assert.Null(task.Error);
            Assert.AreEqual(PandaTaskStatus.Resolved, task.Status);
        }
Example #10
0
        public void ChangeCollectionCompleteErrorTest()
        {
            //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
            source.Resolve();

            //assert
            Assert.AreEqual(PandaTaskStatus.Resolved, allTask.Status);
        }
Example #11
0
        public void RejectSomeTest(int count, int rejectCount)
        {
            //arrange
            var tasksCollection = new List <PandaTask>(count);

            for (int i = 0; i < count; i++)
            {
                tasksCollection.Add(new PandaTask());
            }

            var task = new WhenAllPandaTask(tasksCollection, CancellationStrategy.Aggregate);

            //act
            for (int i = 0; i < rejectCount; i++)
            {
                tasksCollection[i].Reject();
            }

            //assert
            Assert.Null(task.Error);
            Assert.AreEqual(PandaTaskStatus.Pending, task.Status);
        }
Example #12
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);
        }