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)); }
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); }
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); }
public void RejectTest() { //arrange var task = new WhenAllPandaTask(new[] { new PandaTask() }, CancellationStrategy.Aggregate); //act-assert Assert.Throws <InvalidOperationException>(task.Resolve); }
public void ZeroTasksTest() { //act var task = new WhenAllPandaTask(Enumerable.Empty <IPandaTask>(), CancellationStrategy.Aggregate); //assert Assert.AreEqual(PandaTaskStatus.Resolved, task.Status); }
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()); }
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); }
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); }
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); }
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); }
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); }
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); }