public void CleanUpSetsStateToTerminatedIfStatusIsExecuting() { var task = new TaskStub { OnRunAction = c => { // This will break the run leaving the task in // the executing state throw new Exception(); } }; task.Initialise(); var result = task.Run(null); Assert.Throws<Exception>(() => result.Count()); task.CleanUp(); Assert.AreEqual(TaskState.Terminated, task.State); }
public void RunSetsStateToCompleted() { var ran = false; var intermediateState = TaskState.Unknown; Task task = null; Func<TaskExecutionContext, IEnumerable<Task>> action = c => { ran = true; intermediateState = task.State; return null; }; task = new TaskStub { OnRunAction = action }; var contextMock = GenerateContextMock(); var result = task.Run(contextMock.Object); Assert.AreEqual(result.Count(), 0); // This line is needed to actually trigger the method Assert.AreEqual(TaskState.Completed, task.State); Assert.AreEqual(TaskState.Executing, intermediateState); Assert.IsTrue(ran); }
public void RunReturnsChildTasks() { var ran = false; var childTask = new TaskStub { OnRunAction = c => { // This should not be triggered as Run() does not run the child // tasks - instead it is the caller's job to run them ran = true; return null; } }; var task = new TaskStub { OnRunAction = c => new[] { childTask } }; var contextMock = GenerateContextMock(); var result = task.Run(contextMock.Object); Assert.AreEqual(result.Count(), 1); // This line is needed to actually trigger the method Assert.IsFalse(ran); }