/// <summary> /// Creates a new dependency edge between two nodes. /// </summary> /// <param name="origin">The dependent node.</param> /// <param name="target">The dependency node.</param> /// <param name="type">The type of dependency.</param> /// <param name="metadata">The metadata associated to the edge.</param> public DataFlowEdge(DataFlowNode <TContents> origin, DataFlowNode <TContents> target, DataDependencyType type, object metadata) { Origin = origin; Target = target; Type = type; Metadata = metadata; }
public void DisconnectNodeShouldRemoveEdge(DataDependencyType edgeType, bool removeSourceNode) { var variable = new DummyVariable("var"); var graph = new DataFlowGraph <int>(IntArchitecture.Instance); var n1 = new DataFlowNode <int>(0, 0); n1.StackDependencies.Add(new DataDependency <int>()); n1.VariableDependencies.Add(variable, new DataDependency <int>()); var n2 = new DataFlowNode <int>(1, 1); graph.Nodes.AddRange(new[] { n1, n2 }); switch (edgeType) { case DataDependencyType.Stack: n1.StackDependencies[0].Add(new DataSource <int>(n2)); break; case DataDependencyType.Variable: n1.VariableDependencies[variable].Add(new DataSource <int>(n2)); break; default: throw new ArgumentOutOfRangeException(nameof(edgeType), edgeType, null); } if (removeSourceNode) { n1.Disconnect(); } else { n2.Disconnect(); } Assert.Empty(n1.StackDependencies[0]); Assert.Empty(n1.VariableDependencies[variable]); Assert.Empty(n2.GetDependants()); }