public void If_the_task_graph_resolver_throws_a_exception_it_should_add_a_error_message() { var validator = CreateInstance<CheckForCircularDependencies>(); var tasks = new[] { new RegisteredTask(typeof(ExampleTask0)) }; A.CallTo(() => Fake<ITaskGraphResolver>().Resolve(tasks[0])).Throws(new CircularTaskDependencyDetectedException(tasks[0], tasks[0])); var result = validator.Validate(tasks); CollectionAssert.IsNotEmpty(result); }
public void If_all_dependencies_are_registered_no_error_message_should_be_generated() { var validator = new CheckForUnregisteredDependencies(); var tasks = new[] { new RegisteredTask(typeof (ExampleTask1)) {DependsOn = new[] {nameof(ExampleTask2)}}, new RegisteredTask(typeof (ExampleTask2)) }; var errors = validator.Validate(tasks); Assert.IsEmpty(errors); }
public void If_a_task_depends_on_an_unregistered_task_it_should_generate_a_error_message() { var validator = new CheckForUnregisteredDependencies(); var tasks = new[] { new RegisteredTask(typeof (ExampleTask1)) {DependsOn = new[] {nameof (ExampleTask2)}} }; var errors = validator.Validate(tasks); Assert.IsNotEmpty(errors); Assert.IsTrue(errors[0].Contains($"\"{nameof(ExampleTask1)}\"") && errors[0].Contains($"\"{nameof(ExampleTask2)}\"")); }
public void Every_task_should_be_resolved_by_the_task_graph_resolver() { var validator = CreateInstance<CheckForCircularDependencies>(); var tasks = new[] { new RegisteredTask(typeof(ExampleTask0)), new RegisteredTask(typeof(ExampleTask1)) }; validator.Validate(tasks); A.CallTo(() => Fake<ITaskGraphResolver>().Resolve(tasks[0])).MustHaveHappened(); A.CallTo(() => Fake<ITaskGraphResolver>().Resolve(tasks[1])).MustHaveHappened(); }
public void If_two_default_tasks_are_given_an_error_message_should_be_generated() { var validator = new CheckForDefaultTask(); var tasks = new[] { new RegisteredTask(typeof(ExampleTask0)) {IsDefault = true}, new RegisteredTask(typeof(ExampleTask1)) {IsDefault = true} }; var erros = validator.Validate(tasks); Assert.IsNotEmpty(erros); }
public void If_a_circular_dependency_was_detected_it_should_raise_a_exception() { var tasks = new[] { new RegisteredTask(typeof (ExampleTask1)) {DependsOn = new[] {nameof(ExampleTask2)}}, new RegisteredTask(typeof (ExampleTask2)) {DependsOn = new[] {nameof(ExampleTask3)}}, new RegisteredTask(typeof (ExampleTask3)) {DependsOn = new[] {nameof(ExampleTask4)}}, new RegisteredTask(typeof (ExampleTask4)) {DependsOn = new[] {nameof(ExampleTask1)}} }; var registration = A.Fake<ITaskRegistration>(); A.CallTo(() => registration.Tasks).Returns(tasks); var resolver = new TaskGraphResolver(registration); var taskToResolve = tasks[0]; Assert.Throws<CircularTaskDependencyDetectedException>(() => resolver.Resolve(taskToResolve)); }
public void It_should_resolve_the_dependency_graph() { var tasks = new[] { new RegisteredTask(typeof (ExampleTask1)) { DependsOn = new[] {nameof(ExampleTask2), nameof(ExampleTask3)} }, new RegisteredTask(typeof (ExampleTask2)) {DependsOn = new[] {nameof(ExampleTask4)}}, new RegisteredTask(typeof (ExampleTask3)) {DependsOn = new[] {nameof(ExampleTask4)}}, new RegisteredTask(typeof (ExampleTask4)) }; var registration = A.Fake<ITaskRegistration>(); A.CallTo(() => registration.Tasks).Returns(tasks); var resolver = new TaskGraphResolver(registration); var taskToResolve = tasks[0]; var result = resolver.Resolve(taskToResolve); CollectionAssert.AreEqual(new[] {tasks[3], tasks[1], tasks[2], tasks[0]}, result); }