public void SharedLoops() { List <GraphNode> nodes = new List <GraphNode>(); nodes.Add(TestHelpers.BuildGraphNode(0, "in", inputPlugin.TypeName)); nodes.Add(TestHelpers.BuildGraphNode(1, "loopStart", LoopStart.TypeName)); nodes.Add(TestHelpers.BuildGraphNode(2, "pro")); nodes.Add(TestHelpers.BuildGraphNode(3, "loopEnd", LoopEnd.TypeName)); nodes.Add(TestHelpers.BuildGraphNode(4, "end", "end")); List <NodeLinkInfo> links = new List <NodeLinkInfo>(); links.Add(TestHelpers.MatchSlots(nodes[0], nodes[1], 0, 0)); links.Add(TestHelpers.MatchSlots(nodes[1], nodes[2], 2, 0)); links.Add(TestHelpers.MatchSlots(nodes[1], nodes[3], 0, 0)); links.Add(TestHelpers.MatchSlots(nodes[2], nodes[3], 0, 2)); links.Add(TestHelpers.MatchSlots(nodes[3], nodes[4], 0, 0)); PipelineState.UpdateActiveGraph(nodes.ToArray(), links.ToArray()); PipelineExecutor[] results = PipelineState.BuildPipesTestOnly(); Assert.AreEqual(DataSize, results.Length); Assert.AreEqual(1, results[0].getLoops().Count); for (int i = 0; i < results.Length; i++) { for (int j = i + 1; j < results.Length; j++) { Assert.AreNotSame(results[i], results[j]); } } }
public void SingleCount() { // Multi | Single // S -> Process -> Sync -> Process -> End List <GraphNode> nodes = new List <GraphNode>(); nodes.Add(TestHelpers.BuildGraphNode(0, "in", inputPlugin3.TypeName)); nodes.Add(TestHelpers.BuildGraphNode(1, "pro")); nodes.Add(TestHelpers.BuildGraphNode(2, "sync", SyncNode.TypeName)); nodes.Add(TestHelpers.BuildGraphNode(3, "pro")); nodes.Add(TestHelpers.BuildGraphNode(4, "end")); 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)); links.Add(TestHelpers.MatchSlots(nodes[2], nodes[3], 0, 0)); links.Add(TestHelpers.MatchSlots(nodes[3], nodes[4], 0, 0)); PipelineState.UpdateActiveGraph(nodes.ToArray(), links.ToArray()); PipelineExecutor[] executor = PipelineState.BuildPipesTestOnly(); SpecialNodeData data = PipelineState.SpecialNodeDataTestOnly; Assert.AreEqual(2, data.SyncInformation.NodeGroups.Count); Assert.AreEqual(3, data.SyncInformation.NodeGroups[0].pipes.Length); Assert.AreEqual(3, data.SyncInformation.NodeGroups[0].RequiredPipes); Assert.IsTrue(data.SyncInformation.NodeGroups[0].Input); Assert.AreEqual(1, data.SyncInformation.NodeGroups[1].pipes.Length); Assert.AreEqual(1, data.SyncInformation.NodeGroups[1].RequiredPipes); Assert.AreEqual(1, data.SyncInformation.SyncNodes[0].TriggeredPipelines.Length); Assert.AreEqual(3, data.SyncInformation.SyncNodes[0].ParallelismTestOnly); Assert.IsFalse(data.SyncInformation.NodeGroups[1].Input); }
public void ManyToMore() { // Multi | Many // S -> Process -> Sync -> Process -> End // Input ----ᴧ List <GraphNode> nodes = new List <GraphNode>(); nodes.Add(TestHelpers.BuildGraphNode(0, "input", inputPlugin.TypeName)); nodes.Add(TestHelpers.BuildGraphNode(1, "process")); nodes.Add(TestHelpers.BuildGraphNode(2, "sync", SyncNode.TypeName)); nodes.Add(TestHelpers.BuildGraphNode(3, "input", inputPlugin2.TypeName)); nodes.Add(TestHelpers.BuildGraphNode(4, "process")); nodes.Add(TestHelpers.BuildGraphNode(5, "output")); 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)); links.Add(TestHelpers.MatchSlots(nodes[2], nodes[4], 0, 0)); links.Add(TestHelpers.MatchSlots(nodes[3], nodes[4], 0, 1)); links.Add(TestHelpers.MatchSlots(nodes[4], nodes[5], 0, 0)); PipelineState.UpdateActiveGraph(nodes.ToArray(), links.ToArray()); PipelineExecutor[] results = PipelineState.BuildPipesTestOnly(); Assert.AreEqual(DataSize + (DataSize * 2), results.Length); SpecialNodeData nodeData = PipelineState.SpecialNodeDataTestOnly; Assert.AreEqual(1, nodeData.SyncInformation.SyncNodes.Length); Assert.AreEqual(inputPlugin2.InputDataQuantity(""), nodeData.SyncInformation.SyncNodes[0].TriggeredPipelines.Length); }
public void ManyToManyWithInput() { // Multi | Multi // ᴧ------------------v // S -> Process -> Sync -> Process -> End // Input ----ᴧ List <GraphNode> nodes = new List <GraphNode>(); nodes.Add(TestHelpers.BuildGraphNode(0, "input", inputPlugin.TypeName)); nodes.Add(TestHelpers.BuildGraphNode(1, "process")); nodes.Add(TestHelpers.BuildGraphNode(2, "sync", SyncNode.TypeName)); nodes.Add(TestHelpers.BuildGraphNode(3, "input", inputPlugin2.TypeName)); nodes.Add(TestHelpers.BuildGraphNode(4, "process")); nodes.Add(TestHelpers.BuildGraphNode(5, "output")); 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)); links.Add(TestHelpers.MatchSlots(nodes[1], nodes[4], 0, 2)); links.Add(TestHelpers.MatchSlots(nodes[2], nodes[4], 0, 0)); links.Add(TestHelpers.MatchSlots(nodes[3], nodes[4], 0, 1)); links.Add(TestHelpers.MatchSlots(nodes[4], nodes[5], 0, 0)); PipelineState.UpdateActiveGraph(nodes.ToArray(), links.ToArray()); Assert.Throws <PipelineException>(() => PipelineState.BuildPipesTestOnly()); SpecialNodeData nodeData = PipelineState.SpecialNodeDataTestOnly; Assert.AreEqual(1, nodeData.SyncInformation.SyncNodes.Length); }
public void BasicBuild() { List <GraphNode> nodes = new List <GraphNode>(); nodes.Add(TestHelpers.BuildGraphNode(0, "input", inputPlugin.TypeName)); nodes.Add(TestHelpers.BuildGraphNode(1, "process")); nodes.Add(TestHelpers.BuildGraphNode(2, "output")); 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)); PipelineState.UpdateActiveGraph(nodes.ToArray(), links.ToArray()); PipelineExecutor[] results = PipelineState.BuildPipesTestOnly(); Assert.AreEqual(DataSize, results.Length); }
public void ErrorInput() { List <GraphNode> nodes = new List <GraphNode>(); nodes.Add(TestHelpers.BuildGraphNode(0, "input", inputPlugin.TypeName)); nodes.Add(TestHelpers.BuildGraphNode(1, "input", ErrorPlugin.TypeName)); nodes.Add(TestHelpers.BuildGraphNode(2, "process")); nodes.Add(TestHelpers.BuildGraphNode(3, "output")); List <NodeLinkInfo> links = new List <NodeLinkInfo>(); links.Add(TestHelpers.MatchSlots(nodes[0], nodes[2], 0, 0)); links.Add(TestHelpers.MatchSlots(nodes[1], nodes[2], 0, 1)); links.Add(TestHelpers.MatchSlots(nodes[2], nodes[3], 0, 0)); PipelineState.UpdateActiveGraph(nodes.ToArray(), links.ToArray()); Assert.Throws <NodeException>(() => PipelineState.BuildPipesTestOnly()); }
public void PrematureInputEnd() { List <GraphNode> nodes = new List <GraphNode>(); nodes.Add(TestHelpers.BuildGraphNode(0, "input", EarlyData.TypeName)); nodes.Add(TestHelpers.BuildGraphNode(1, "input", LateData.TypeName)); nodes.Add(TestHelpers.BuildGraphNode(2, "process")); nodes.Add(TestHelpers.BuildGraphNode(3, "output")); List <NodeLinkInfo> links = new List <NodeLinkInfo>(); links.Add(TestHelpers.MatchSlots(nodes[0], nodes[2], 0, 0)); links.Add(TestHelpers.MatchSlots(nodes[1], nodes[2], 0, 1)); links.Add(TestHelpers.MatchSlots(nodes[2], nodes[3], 0, 0)); PipelineState.UpdateActiveGraph(nodes.ToArray(), links.ToArray()); Assert.Throws <InvalidDataException>(() => PipelineState.BuildPipesTestOnly()); }
public void OverrideInput() { List <GraphNode> nodes = new List <GraphNode>(); nodes.Add(TestHelpers.BuildGraphNode(0, "input", oneInput.TypeName, "Override")); nodes.Add(TestHelpers.BuildGraphNode(1, "process")); nodes.Add(TestHelpers.BuildGraphNode(2, "output")); 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)); PipelineState.UpdateActiveGraph(nodes.ToArray(), links.ToArray()); PipelineExecutor[] results = PipelineState.BuildPipesTestOnly(); Assert.AreEqual(1, results.Length); Assert.AreEqual("Override", oneInput.InputDataQuantityPath); Assert.AreEqual("Override", oneInput.InputRetrieveDataPath); }
public void ManyToSingleToMany() { // Many | Single | Many // S -> Process -> Sync -> Process -> Sync -> Process -> End // v-------------------------------------ᴧ List <GraphNode> nodes = new List <GraphNode>(); nodes.Add(TestHelpers.BuildGraphNode(0, "input", inputPlugin.TypeName)); nodes.Add(TestHelpers.BuildGraphNode(1, "process")); nodes.Add(TestHelpers.BuildGraphNode(2, "sync", SyncNode.TypeName)); nodes.Add(TestHelpers.BuildGraphNode(3, "process")); nodes.Add(TestHelpers.BuildGraphNode(4, "sync", SyncNode.TypeName)); nodes.Add(TestHelpers.BuildGraphNode(5, "process")); nodes.Add(TestHelpers.BuildGraphNode(6, "output")); 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)); links.Add(TestHelpers.MatchSlots(nodes[1], nodes[5], 1, 1)); links.Add(TestHelpers.MatchSlots(nodes[2], nodes[3], 0, 0)); links.Add(TestHelpers.MatchSlots(nodes[3], nodes[4], 0, 0)); links.Add(TestHelpers.MatchSlots(nodes[4], nodes[5], 0, 0)); links.Add(TestHelpers.MatchSlots(nodes[5], nodes[6], 0, 0)); PipelineState.UpdateActiveGraph(nodes.ToArray(), links.ToArray()); PipelineExecutor[] results = PipelineState.BuildPipesTestOnly(); Assert.AreEqual(DataSize + 1, results.Length); SpecialNodeData nodeData = PipelineState.SpecialNodeDataTestOnly; Assert.AreEqual(2, nodeData.SyncInformation.SyncNodes.Length); Assert.AreEqual(3, nodeData.SyncInformation.NodeGroups.Count); Assert.AreSame(nodeData.SyncInformation.NodeGroups[0].pipes, nodeData.SyncInformation.SyncNodes[1].TriggeredPipelines); }