コード例 #1
0
        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)
            };
        }
コード例 #2
0
        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.");
            }
        }
コード例 #3
0
        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);
        }