public void Run_invokes_actions_of_dependencies_before_dependent() { var queue = new ConcurrentQueue <int>(); var dependency = new TaskGraph(() => queue.Enqueue(1)); var graph = new TaskGraph(() => queue.Enqueue(2), dependency); graph.Run(); Assert.AreEqual(new[] { 1, 2 }, queue); }
public void Run_invokes_each_task_only_once() { var actionA = new Mock <Action>(); var taskA = new TaskGraph(actionA.Object, ImmutableArray <TaskGraph> .Empty); var taskB = new TaskGraph(() => { }, ImmutableArray.Create(taskA, taskA)); var taskC = new TaskGraph(() => { }, ImmutableArray.Create(taskB, taskB)); taskC.Run(); actionA.Verify(a => a(), Times.Once); }