/// <summary> /// Indicates that this process should execute before another /// </summary> /// <param name="follower">The ancestor.</param> /// <returns>returns this process</returns> public OrderedProcess Before(OrderedProcess follower) { DependencyGraph.CheckGraph(this, follower); if (_followers.Add(follower)) { follower.After(this); } return(follower); }
public void BasicOrderAfter() { DependencyGraph g = new DependencyGraph(); OrderedProcess a = new OrderedProcess(g, "A"); OrderedProcess b = new OrderedProcess(g, "B"); OrderedProcess c = new OrderedProcess(g, "C"); a.Before(b).Before(c); c.After(b).After(a); IEnumerable<IEnumerable<OrderedProcess>> s = g.CalculateSort(); Assert.AreEqual(1, s.Skip(0).First().Count()); Assert.AreEqual(a, s.Skip(0).First().First()); Assert.AreEqual(1, s.Skip(1).First().Count()); Assert.AreEqual(b, s.Skip(1).First().First()); Assert.AreEqual(1, s.Skip(2).First().Count()); Assert.AreEqual(c, s.Skip(2).First().First()); }
/// <summary> /// Indicates that all members of the enumerable must happen before the single follower /// </summary> /// <param name="predecessors">The predecessors.</param> /// <param name="follower">The follower.</param> /// <returns>the followers</returns> public static OrderedProcess <T> Before <T>(this IEnumerable <OrderedProcess <T> > predecessors, OrderedProcess <T> follower) { follower.After(predecessors); return(follower); }
/// <summary> /// Indicates that this process should execute before another /// </summary> /// <param name="follower">The ancestor.</param> /// <returns>returns this process</returns> public OrderedProcess Before(OrderedProcess follower) { DependencyGraph.CheckGraph(this, follower); if (followers.Add(follower)) follower.After(this); return follower; }