public SystemUpdateScheduler(IReadOnlyList <ISystemInstance> systemInstances) { var systems = systemInstances.Select(p => p.System).ToList(); var sorted = ExecuteOrderSorter.Sort(systems); var systemList = systemInstances.ToList(); // TODO systemList.Sort((p, q) => sorted.IndexOf(p.System).CompareTo(sorted.IndexOf(q.System))); UpdateBursts = new List <UpdateBurst> { new UpdateBurst(systemList) }; }
public SystemManager(IEnumerable <ISystem> systems, ILogger logger) { _logger = logger; _systems = ExecuteOrderSorter.Sort(systems.ToList()); if (_systems.Count > 0) { _logger.Info("Initialized with systems: {0}", _systems.Select(p => p.Name).Aggregate((q, s) => q + "," + s)); } else { _logger.Warn("No systems provided."); } }
public void TestOrder() { var test1 = new Test1(); var afterTest1 = new AfterTest1(); var beforeTest1 = new BeforeTest1(); var afterBeforeTest1 = new AfterBeforeTest1(); var unspecified = new Unspecified(); var list = new List <object> { afterBeforeTest1, test1, beforeTest1, afterTest1, unspecified }; var sorted = ExecuteOrderSorter.Sort(list); sorted.Count.ShouldBe(list.Count); foreach (var o in sorted) { Console.WriteLine(o); } AssertOrder(beforeTest1, test1, sorted); AssertOrder(test1, afterTest1, sorted); AssertOrder(beforeTest1, afterBeforeTest1, sorted); }