public void ConstructorInitialisesEmptyTaskLists() { var task = new ConditionalTask(); Assert.AreEqual(0, task.Tasks.Length); Assert.AreEqual(0, task.ElseTasks.Length); }
public void ExecuteRunsElseTasksWhenConditionsFail() { var passRan = false; var failRan = false; var mockCondition = new MockCondition { EvalFunction = ir => false }; var passTask = new MockTask { RunAction = ir => passRan = true }; var failTask = new MockTask { RunAction = ir => failRan = true }; var task = new ConditionalTask { Tasks = new[] { passTask }, ElseTasks = new[] { failTask }, TaskConditions = new[] { mockCondition } }; var resultMock = this.GenerateResultMock(); this.mocks.ReplayAll(); resultMock.Status = IntegrationStatus.Success; task.Run(resultMock); this.mocks.VerifyAll(); Assert.IsFalse(passRan); Assert.IsTrue(failRan); }
public void ConditionalTaskTest_XMLInterface_Success( [Values( "<conditional><conditions/><tasks/><elseTasks/></conditional>" )] string xml) { Debug.WriteLine(xml); ConditionalTask result = NetReflector.Read(xml) as ConditionalTask; }
public void InitialiseStatusUpdatesTheStatus() { var task = new ConditionalTask { Tasks = new[] { new MockTask() } }; task.InitialiseStatus(ItemBuildStatus.Pending); Assert.AreEqual(ItemBuildStatus.Pending, task.CurrentStatus.Status); }
public void ExecuteRunsAllTasksWhenConditionsFailAndContinueOnFailure() { var passRan = false; var firstFailRan = false; var secondFailRan = false; var thirdFailRan = false; var mockCondition = new MockCondition { EvalFunction = ir => false }; var passTask = new MockTask { RunAction = ir => passRan = true }; var firstFailTask = new MockTask { RunAction = ir => firstFailRan = true }; var secondFailTask = new MockTask { RunAction = ir => { secondFailRan = true; ir.Status = IntegrationStatus.Failure; } }; var thirdFailTask = new MockTask { RunAction = ir => thirdFailRan = true }; var task = new ConditionalTask { Tasks = new[] { passTask }, ElseTasks = new[] { firstFailTask, secondFailTask, thirdFailTask }, TaskConditions = new[] { mockCondition } }; var resultMock = this.GenerateResultMock(); AddResultMockExpectedClone(resultMock); AddResultMockExpectedClone(resultMock); AddResultMockExpectedMerge(resultMock); AddResultMockExpectedMerge(resultMock); this.mocks.ReplayAll(); resultMock.Status = IntegrationStatus.Success; task.Run(resultMock); this.mocks.VerifyAll(); Assert.IsFalse(passRan); Assert.IsTrue(firstFailRan); Assert.IsTrue(secondFailRan); Assert.IsTrue(thirdFailRan); }
public void ValidateValidatesElseTasks() { var wasValidated = false; var taskMock = new MockTask() { ValidateAction = (c, t, ep) => wasValidated = true }; var task = new ConditionalTask { ElseTasks = new[] { taskMock } }; task.Validate(null, ConfigurationTrace.Start(this), null); Assert.IsTrue(wasValidated); }
public void ConditionalTaskTest_xmlinterface_pass() { string testXml = "<conditional><conditions>" + "<andCondition><conditions>" + "<buildCondition value=\"ForceBuild\" />" + "<statusCondition value=\"Success\" />" + "<folderExistsCondition folder=\"\\\\publicationServer\\c$\\inetpub\\Webproject\\\" />" + "<orCondition><conditions>" + "<fileExistsCondition file=\"d:\\Buildfolder\\Webproject\\project.csproj\" />" + "<fileExistsCondition file=\"d:\\Buildfolder\\Webproject\\webProject.csproj\" />" + "</conditions></orCondition>" + "<urlPingCondition url=\"http:\\MyWebsite\\WebProject\\default.aspx\" />" + "</conditions></andCondition>" + "</conditions>" + "<tasks><commentTask message=\"publish web site\" /></tasks>" + "<elseTasks><commentTask message=\"error deploying website\" FailTask=\"True\" /></elseTasks>" + "</conditional>"; Debug.WriteLine(testXml); ConditionalTask result = NetReflector.Read(testXml) as ConditionalTask; }
public void ConditionalTaskTest_ConditionTrue_RunTask() { ITaskCondition condition = mocks.StrictMock <ITaskCondition>(); Expect.Call(condition.Eval(null)).IgnoreArguments().Return(true); ITask runTask = mocks.StrictMock <ITask>(); Expect.Call(delegate { runTask.Run(null); }).IgnoreArguments(); ITask noRunTask = mocks.StrictMock <ITask>(); IIntegrationResult ResultMock = IntegrationResultMother.CreateSuccessful(); mocks.ReplayAll(); ConditionalTask task = new ConditionalTask(); task.TaskConditions = new[] { condition }; task.Tasks = new[] { runTask }; task.ElseTasks = new[] { noRunTask }; task.Run(ResultMock); mocks.VerifyAll(); }
public void ExecuteRunsAllInnerTasksWhenConditionsFailAndContinueOnFailure() { const int innerCount = 3; const int leafCount = 2; var passRan = false; int taskRunCount = 0; var mockCondition = new MockCondition { EvalFunction = ir => false }; var passTask = new MockTask { RunAction = ir => passRan = true }; var innerTasks = new List <ConditionalTask>(); for (var innerLoop = 1; innerLoop <= innerCount; innerLoop++) { var leafTasks = new List <MockTask>(); for (var leafLoop = 1; leafLoop <= leafCount; leafLoop++) { leafTasks.Add(((innerLoop == 2) && (leafLoop == 2)) ? new MockTask { RunAction = ir => { taskRunCount++; ir.Status = IntegrationStatus.Failure; } } : new MockTask { RunAction = ir => { taskRunCount++; ir.Status = IntegrationStatus.Success; } } ); } innerTasks.Add(new ConditionalTask { ContinueOnFailure = false, ElseTasks = leafTasks.ToArray(), TaskConditions = new[] { mockCondition } }); } var task = new ConditionalTask { Tasks = new[] { passTask }, ElseTasks = innerTasks.ToArray(), TaskConditions = new[] { mockCondition }, ContinueOnFailure = true }; var resultMock = this.GenerateResultMock(leafCount, leafCount); AddResultMockExpectedClone(resultMock, leafCount, leafCount); AddResultMockExpectedClone(resultMock, leafCount, leafCount); AddResultMockExpectedMerge(resultMock); AddResultMockExpectedMerge(resultMock); this.mocks.ReplayAll(); resultMock.Status = IntegrationStatus.Success; task.Run(resultMock); this.mocks.VerifyAll(); Assert.IsFalse(passRan); Assert.AreEqual(innerCount * leafCount, taskRunCount, "Bad task run count"); }
public void ConditionalTaskTest_nullTask_throwsArgumentNullException() { ConditionalTask result = new ConditionalTask(); result.Run(IntegrationResultMother.CreateSuccessful()); }