Exemplo n.º 1
0
        public void OverrideOutput()
        {
            List <GraphNode> nodes = new List <GraphNode>();

            nodes.Add(TestHelpers.BuildGraphNode(0, "input"));
            nodes.Add(TestHelpers.BuildGraphNode(1, "process"));
            nodes.Add(TestHelpers.BuildGraphNode(2, "output", output.TypeName, "Override"));

            List <NodeLinkInfo> links = new List <NodeLinkInfo>();

            links.Add(TestHelpers.MatchSlots(nodes[0], nodes[1], 0, 0));
            links.Add(TestHelpers.MatchSlots(nodes[1], nodes[2], 0, 0));

            DataStore                       staticStore = new DataStore(true), standardData = new DataStore(0, "");
            List <DependentNode>            dependents     = TestHelpers.ConvertToDependentNodes(nodes);
            Dictionary <int, DependentNode> dependentNodes = TestHelpers.ConvertToDictionary(dependents);
            SpecialNodeData                 special        = SpecialNodeSearch.CheckForSpecialNodes(dependentNodes, staticStore);

            PipelineExecutor pipeline = new PipelineExecutor(dependentNodes, staticStore, 0, special);
            TaskRunner       runner   = new TaskRunner(output, dependents[2], standardData, staticStore, pipeline, 0);

            Task task = runner.getTask();

            task.Start();
            task.Wait();

            Assert.AreEqual("Override", output.OutputDir);
        }
Exemplo n.º 2
0
        public void MultiToSingle()
        {
            // Multi            | Single
            // S -> Process -> Sync -> Process -> End

            List <DependentNode> nodes = new List <DependentNode>();
            DependentNode        start = new DependentNode(0, "start"),
                                 sync  = new DependentNode(1, SyncNode.TypeName),
                                 pro1  = new DependentNode(2, "pro"),
                                 pro2  = new DependentNode(3, "pro"),
                                 end   = new DependentNode(4, "end");

            nodes.Add(start);
            nodes.Add(pro1);
            nodes.Add(sync);
            nodes.Add(pro2);
            nodes.Add(end);

            TestHelpers.MatchSlots(start, pro1, 0, 0);
            TestHelpers.MatchSlots(pro1, sync, 0, 0);
            TestHelpers.MatchSlots(sync, pro2, 0, 0);
            TestHelpers.MatchSlots(pro2, end, 0, 0);

            DataStore       staticData = new DataStore(true);
            SpecialNodeData data       =
                SpecialNodeSearch.CheckForSpecialNodes(TestHelpers.ConvertToDictionary(nodes), staticData);

            Assert.AreEqual(1, data.SyncInformation.SyncNodes.Length);
            Assert.AreEqual(0, data.SyncInformation.NodeGroups[0].Dependents.Length);

            Assert.AreEqual(1, data.SyncInformation.NodeGroups[1].CalledBy);
        }
Exemplo n.º 3
0
        public void NoSync()
        {
            // Multi
            // S -> Process -> Process -> End

            List <DependentNode> nodes = new List <DependentNode>();
            DependentNode        start = new DependentNode(0, "start"),
                                 pro1  = new DependentNode(2, "pro"),
                                 pro2  = new DependentNode(3, "pro"),
                                 end   = new DependentNode(4, "end");

            nodes.Add(start);
            nodes.Add(pro1);
            nodes.Add(pro2);
            nodes.Add(end);

            TestHelpers.MatchSlots(start, pro1, 0, 0);
            TestHelpers.MatchSlots(pro1, pro2, 0, 0);
            TestHelpers.MatchSlots(pro2, end, 0, 0);

            DataStore       staticData = new DataStore(true);
            SpecialNodeData data       =
                SpecialNodeSearch.CheckForSpecialNodes(TestHelpers.ConvertToDictionary(nodes), staticData);

            Assert.AreEqual(0, data.SyncInformation.SyncNodes.Length, "There should not be any sync blocks in this test");
            Assert.AreEqual(null, data.SyncInformation.NodeGroups);
        }
        public static void UpdateActiveGraph(GraphNode[] graphNodes, NodeLinkInfo[] graphLinks)
        {
            links = graphLinks;
            nodes = StripUnusedNodes(graphNodes, graphLinks);

            BuildDependencyGraph(ActiveNodes, ActiveLinks);
            inputs       = FindStartLocations();
            staticData   = new DataStore(true);
            specialNodes = SpecialNodeSearch.CheckForSpecialNodes(dependencyGraph, staticData);
        }
Exemplo n.º 5
0
        public void MultiToSingleToMulti()
        {
            // Multi            | Single           | Multi
            // S -> Process -> Sync -> Process -> Sync -> Process -> End
            //        v-------------------------------------ᴧ

            List <DependentNode> nodes = new List <DependentNode>();
            DependentNode        start = new DependentNode(0, "start"),
                                 sync  = new DependentNode(1, SyncNode.TypeName),
                                 sync2 = new DependentNode(6, SyncNode.TypeName),
                                 pro1  = new DependentNode(2, "pro"),
                                 pro2  = new DependentNode(3, "pro"),
                                 pro3  = new DependentNode(5, "pro"),
                                 end   = new DependentNode(4, "end");

            nodes.Add(start);
            nodes.Add(pro1);
            nodes.Add(sync);
            nodes.Add(sync2);
            nodes.Add(pro2);
            nodes.Add(pro3);
            nodes.Add(end);

            TestHelpers.MatchSlots(start, pro1, 0, 0);
            TestHelpers.MatchSlots(pro1, sync, 0, 0);
            TestHelpers.MatchSlots(pro1, pro3, 1, 1);
            TestHelpers.MatchSlots(sync, pro2, 0, 0);
            TestHelpers.MatchSlots(pro2, sync2, 0, 0);
            TestHelpers.MatchSlots(sync2, pro3, 0, 0);
            TestHelpers.MatchSlots(pro3, end, 0, 0);

            DataStore       staticData = new DataStore(true);
            SpecialNodeData data       =
                SpecialNodeSearch.CheckForSpecialNodes(TestHelpers.ConvertToDictionary(nodes), staticData);

            Assert.AreEqual(2, data.SyncInformation.SyncNodes.Length);
            Assert.AreEqual(3, data.SyncInformation.NodeGroups.Count);

            Assert.AreEqual(sync.Id, data.SyncInformation.NodeGroups[1].CalledBy);
            Assert.AreEqual(sync2.Id, data.SyncInformation.NodeGroups[2].CalledBy);
            Assert.IsTrue(data.SyncInformation.NodeGroups[0].Dependents.Contains(pro3.Id));
        }
        public void SyncGeneratorInputException()
        {
            // S -> Sync -> End
            //Gen->

            List <DependentNode> nodes = new List <DependentNode>();
            DependentNode        start = new DependentNode(0, "start"),
                                 gen   = new DependentNode(1, "gen"),
                                 sync2 = new DependentNode(6, SyncNode.TypeName);

            nodes.Add(start);
            nodes.Add(gen);
            nodes.Add(sync2);

            TestHelpers.MatchSlots(start, sync2, 0, 0);
            TestHelpers.MatchSlots(gen, sync2, 0, 1);

            DataStore staticData = new DataStore(true);

            Assert.Throws <InvalidConnectionException>(() => SpecialNodeSearch.CheckForSpecialNodes(TestHelpers.ConvertToDictionary(nodes), staticData));
        }