public void Run_ArgumentsPassedToEachTask()
        {
            //Assign
            var task1 = new StubPipelineTask();
            var task2 = new StubPipelineTask();
            var args  = new StubAbstractPipelineArgs(null);

            var runner = new StubAbstractPipelineRunner(new[] { task1, task2 });

            //Act
            var result = runner.Run(args);

            //Assert
            Assert.AreEqual(2, result.CalledTasks.Count);
            Assert.IsTrue(result.CalledTasks.Any(x => x == task1));
            Assert.IsTrue(result.CalledTasks.Any(x => x == task2));
        }
        public void Run_CallsPipelineTasks_EachTaskIsMarkedAsCalled()
        {
            //Assign
            var task1 = new StubPipelineTask();
            var task2 = new StubPipelineTask();
            var args  = new StubAbstractPipelineArgs(null);

            var runner = new StubAbstractPipelineRunner(new [] { task1, task2 });

            Assert.IsFalse(task1.HasExecuted);
            Assert.IsFalse(task2.HasExecuted);

            //Act
            runner.Run(args);

            //Assert
            Assert.IsTrue(task1.HasExecuted);
            Assert.IsTrue(task2.HasExecuted);
        }
        public void Run_PipelineAborted_RunsOnlyOneTask()
        {
            //Assign
            var task1 = new StubPipelineTask();

            task1.TaskToPerform = (tArgs) => tArgs.AbortPipeline();

            var task2 = new StubPipelineTask();

            var runner = new StubAbstractPipelineRunner(new[] { task1, task2 });

            var args = new StubAbstractPipelineArgs(null);

            //Act
            var result = runner.Run(args);

            //Assert
            Assert.AreEqual(1, result.CalledTasks.Count);
            Assert.IsTrue(result.CalledTasks.Any(x => x == task1));
        }