Пример #1
0
        public void PlannerRespectsTaskOrder()
        {
            var planner = new MyDefaultExecutionPlanner();

            var taskOrderNode = new TaskOrderNode();

            MyNodeInfo.CollectNodeInfo(taskOrderNode.GetType());

            MyExecutionBlock execBlock = planner.CreateNodeExecutionPlan(taskOrderNode, initPhase: false);

            var lastOrder = -1;

            foreach (IMyExecutable task in execBlock.Children)
            {
                var taskInfo = task.GetType().GetCustomAttribute <MyTaskInfoAttribute>(true);
                if (taskInfo == null)
                {
                    continue;
                }

                Assert.True(lastOrder <= taskInfo.Order,
                            "Task order must be greater or equal to the previous task order");

                lastOrder = taskInfo.Order;
            }
        }
Пример #2
0
        public void PlannerKeepsOrderOfTasksWithoutOrderAttribute()
        {
            var planner = new MyDefaultExecutionPlanner();

            var unorderedTasksNode = new UnorderedTasksNode();

            MyNodeInfo.CollectNodeInfo(unorderedTasksNode.GetType());

            MyExecutionBlock execBlock = planner.CreateNodeExecutionPlan(unorderedTasksNode, initPhase: false);

            // This is maybe a bit fragile. Remove the test if it breaks due to unrelated and intended changes.
            Assert.Equal("CherryTask", execBlock.Children[1].Name);
            Assert.Equal("BananaTask", execBlock.Children[2].Name);
            Assert.Equal("AppleTask", execBlock.Children[3].Name);
        }