public void TestCanNotConnectTwoInputSlotsOnBaseMaterialGraph() { var graph = new TestNodeGraph(); var inputNode = new TestableNode(); graph.AddNode(inputNode); var inputNode2 = new TestableNode(); graph.AddNode(inputNode2); Assert.AreEqual(2, graph.GetNodes <INode>().Count()); var createdEdge = graph.Connect(inputNode.GetSlotReference(TestableNode.Input0), inputNode2.GetSlotReference(TestableNode.Input0)); Assert.IsNull(createdEdge); Assert.AreEqual(0, graph.GetEdges().Count); }
public void TestRemovingNodeRemovesConectedEdgesOnBaseMaterialGraph() { var graph = new TestNodeGraph(); var outputNode = new TestableNode(); graph.AddNode(outputNode); var inputNode = new TestableNode(); graph.AddNode(inputNode); Assert.AreEqual(2, graph.GetNodes <INode>().Count()); graph.Connect(outputNode.GetSlotReference(TestableNode.Output0), inputNode.GetSlotReference(TestableNode.Input0)); Assert.AreEqual(1, graph.GetEdges().Count); graph.RemoveNode(graph.GetNodes <INode>().FirstOrDefault()); Assert.AreEqual(1, graph.GetNodes <INode>().Count()); Assert.AreEqual(0, graph.GetEdges().Count); }
public void TestCanGetEdgesOnBaseMaterialGraphFromSlotReference() { var graph = new TestNodeGraph(); var outputNode = new TestableNode(); graph.AddNode(outputNode); var inputNode = new TestableNode(); graph.AddNode(inputNode); Assert.AreEqual(2, graph.GetNodes <INode>().Count()); graph.Connect(outputNode.GetSlotReference(TestableNode.Output0), inputNode.GetSlotReference(TestableNode.Input0)); Assert.AreEqual(1, graph.GetEdges().Count); Assert.AreEqual(1, graph.GetEdges(inputNode.GetSlotReference(TestableNode.Input0)).Count()); Assert.AreEqual(1, graph.GetEdges(outputNode.GetSlotReference(TestableNode.Output0)).Count()); Assert.Throws <ArgumentException>(() => outputNode.GetSlotReference(666)); }
public void TestCanRemoveSlotFromTestNode() { var graph = new TestNodeGraph(); var node = new TestNode(); var output = node.CreateOutputSlot <TestSlot>("output").SetValueType(typeof(Vector3)); var input = node.CreateInputSlot <TestSlot>("input").SetValueType(typeof(Vector3)); graph.AddNode(node); Assert.AreEqual(2, node.GetSlots <ISlot>().Count()); Assert.AreEqual(1, node.GetInputSlots <ISlot>().Count()); Assert.AreEqual(1, node.GetOutputSlots <ISlot>().Count()); node.RemoveSlot(input.id); Assert.AreEqual(1, node.GetSlots <ISlot>().Count()); Assert.AreEqual(0, node.GetInputSlots <ISlot>().Count()); Assert.AreEqual(1, node.GetOutputSlots <ISlot>().Count()); }
public void TestCanNotAddDuplicateSlotToTestNode() { var graph = new TestNodeGraph(); var node = new TestNode(); var slot0 = new TestSlot(typeof(Vector3), SlotType.Output, 0); var slot1 = new TestSlot(typeof(Vector3), SlotType.Output, 0); node.AddSlot(slot0); node.AddSlot(slot1); node.name = "Test Node"; graph.AddNode(node); Assert.AreEqual(1, graph.GetNodes <INode>().Count()); var found = graph.GetNodes <INode>().FirstOrDefault(); Assert.AreEqual(0, found.GetInputSlots <ISlot>().Count()); Assert.AreEqual(1, found.GetOutputSlots <ISlot>().Count()); Assert.AreEqual(1, found.GetSlots <ISlot>().Count()); }
public void TestCanAddSlotToTestNode() { var graph = new TestNodeGraph(); var node = new TestNode(); var output = node.CreateOutputSlot <TestSlot>("output").SetValueType(typeof(Vector3)); var input = node.CreateInputSlot <TestSlot>("input").SetValueType(typeof(Vector3)); node.name = "Test Node"; graph.AddNode(node); Assert.AreEqual(1, graph.GetNodes <INode>().Count()); var found = graph.GetNodes <INode>().FirstOrDefault(); Assert.AreEqual(1, found.GetInputSlots <ISlot>().Count()); Assert.AreEqual(input.id, found.GetInputSlots <ISlot>().FirstOrDefault().id); Assert.AreEqual(1, found.GetOutputSlots <ISlot>().Count()); Assert.AreEqual(output.id, found.GetOutputSlots <ISlot>().FirstOrDefault().id); Assert.AreEqual(2, found.GetSlots <ISlot>().Count()); }
public void TestCanNotConnectToNullSlot() { var graph = new TestNodeGraph(); var outputNode = new TestableNode(); graph.AddNode(outputNode); var inputNode = new TestNode(); graph.AddNode(inputNode); Assert.AreEqual(2, graph.GetNodes <INode>().Count()); var createdEdge2 = graph.Connect(outputNode.GetSlotReference(TestableNode.Output0), new SlotReference(Guid.NewGuid(), 666)); Assert.AreEqual(0, graph.GetEdges().Count); Assert.IsNull(createdEdge2); }
public void TestRemovingElementsFromBaseMaterialGraph() { var graph = new TestNodeGraph(); var outputNode = new TestableNode(); graph.AddNode(outputNode); var inputNode = new TestableNode(); graph.AddNode(inputNode); Assert.AreEqual(2, graph.GetNodes <INode>().Count()); graph.Connect(outputNode.GetSlotReference(TestableNode.Output0), inputNode.GetSlotReference(TestableNode.Input0)); Assert.AreEqual(1, graph.GetEdges().Count); graph.RemoveElements(graph.GetNodes <INode>(), graph.GetEdges()); Assert.AreEqual(0, graph.GetNodes <INode>().Count()); Assert.AreEqual(0, graph.GetEdges().Count); }
public void TestRemovingSlotRemovesConnectedEdges() { var graph = new TestNodeGraph(); var outputNode = new TestableNode(); graph.AddNode(outputNode); var inputNode = new TestableNode(); graph.AddNode(inputNode); Assert.AreEqual(2, graph.GetNodes <INode>().Count()); graph.Connect(outputNode.GetSlotReference(TestableNode.Output0), inputNode.GetSlotReference(TestableNode.Input0)); Assert.AreEqual(1, graph.GetEdges().Count); outputNode.RemoveSlot(TestableNode.Output0); Assert.AreEqual(0, graph.GetEdges().Count); }
public void TestCanConnectAndTraverseThreeNodesOnBaseMaterialGraph() { var graph = new TestNodeGraph(); var outputNode = new TestableNode(); graph.AddNode(outputNode); var middleNode = new TestableNode(); graph.AddNode(middleNode); var inputNode = new TestableNode(); graph.AddNode(inputNode); Assert.AreEqual(3, graph.GetNodes <INode>().Count()); graph.Connect(outputNode.GetSlotReference(TestableNode.Output0), middleNode.GetSlotReference(TestableNode.Input0)); Assert.AreEqual(1, graph.GetEdges().Count); graph.Connect(middleNode.GetSlotReference(TestableNode.Output0), inputNode.GetSlotReference(TestableNode.Input0)); Assert.AreEqual(2, graph.GetEdges().Count); var edgesOnMiddleNode = NodeUtils.GetAllEdges(middleNode); Assert.AreEqual(2, edgesOnMiddleNode.Count()); List <INode> result = new List <INode>(); NodeUtils.DepthFirstCollectNodesFromNode(result, inputNode); Assert.AreEqual(3, result.Count); result.Clear(); NodeUtils.DepthFirstCollectNodesFromNode(result, inputNode, NodeUtils.IncludeSelf.Exclude); Assert.AreEqual(2, result.Count); result.Clear(); NodeUtils.DepthFirstCollectNodesFromNode(result, null); Assert.AreEqual(0, result.Count); }
public void TestCanRemoveSlotsWithNonMathingNameFromTestNode() { var graph = new TestNodeGraph(); var node = new TestableNode(); graph.AddNode(node); Assert.AreEqual(6, node.GetSlots <ISlot>().Count()); Assert.AreEqual(3, node.GetInputSlots <ISlot>().Count()); Assert.AreEqual(3, node.GetOutputSlots <ISlot>().Count()); node.RemoveSlotsNameNotMatching(new[] { TestableNode.Input1 }); Assert.AreEqual(1, node.GetSlots <ISlot>().Count()); Assert.AreEqual(1, node.GetInputSlots <ISlot>().Count()); Assert.AreEqual(0, node.GetOutputSlots <ISlot>().Count()); Assert.IsNull(node.FindInputSlot <ISlot>(TestableNode.Input0)); Assert.IsNotNull(node.FindInputSlot <ISlot>(TestableNode.Input1)); Assert.IsNull(node.FindInputSlot <ISlot>(TestableNode.Input2)); }
public void UpdatesEdgeCacheOnEdgeRemove() { TestNodeGraph graph = new TestNodeGraph(); var node0 = new TestNode(); var node1 = new TestNode(); graph.AddNode(node0); graph.AddNode(node1); var outSlot = node0.CreateOutputSlot <ValueSlot <Vector3> >("Out"); var inSlot = node1.CreateInputSlot <ValueSlot <Vector3> >("In"); var edge = graph.Connect(outSlot.slotReference, inSlot.slotReference); Assert.AreEqual(1, graph.GetEdges().Count); graph.RemoveEdge(edge); Assert.IsFalse(inSlot.GetSlotConnectionCache().Any()); Assert.IsFalse(outSlot.GetSlotConnectionCache().Any()); }
public void TestCyclicConnectionsAreNotAllowedOnGraph() { var graph = new TestNodeGraph(); var nodeA = new TestableNode(); graph.AddNode(nodeA); var nodeB = new TestableNode(); graph.AddNode(nodeB); Assert.AreEqual(2, graph.GetNodes <INode>().Count()); graph.Connect(nodeA.GetSlotReference(TestableNode.Output0), nodeB.GetSlotReference(TestableNode.Input0)); Assert.AreEqual(1, graph.GetEdges().Count); var edge = graph.Connect(nodeB.GetSlotReference(TestableNode.Output0), nodeA.GetSlotReference(TestableNode.Input0)); Assert.IsNull(edge); Assert.AreEqual(1, graph.GetEdges().Count); }
public void TestGetInputsWithNoConnection() { var graph = new TestNodeGraph(); var outputNode = new TestableNode(); graph.AddNode(outputNode); var inputNode = new TestableNode(); graph.AddNode(inputNode); Assert.AreEqual(2, graph.GetNodes <INode>().Count()); graph.Connect(outputNode.GetSlotReference(TestableNode.Output0), inputNode.GetSlotReference(TestableNode.Input0)); Assert.AreEqual(1, graph.GetEdges().Count); var slots = inputNode.GetInputsWithNoConnection(); Assert.AreEqual(2, slots.Count()); CollectionAssert.AreEqual(new[] { TestableNode.Input1, TestableNode.Input2 }, slots.Select(x => x.id)); }
public void TestCanUpdateSlotPriority() { var graph = new TestNodeGraph(); var node = new TestNode(); node.CreateOutputSlot <TestSlot>("output").SetValueType(typeof(Vector3)).SetPriority(0); node.name = "Test Node"; graph.AddNode(node); Assert.AreEqual(1, graph.GetNodes <INode>().Count()); var found = graph.GetNodes <INode>().FirstOrDefault(); Assert.AreEqual(0, found.GetInputSlots <ISlot>().Count()); Assert.AreEqual(1, found.GetOutputSlots <ISlot>().Count()); Assert.AreEqual(1, found.GetSlots <ISlot>().Count()); var slot = found.GetOutputSlots <ISlot>().FirstOrDefault(); Assert.AreEqual(0, slot.priority); slot.priority = 2; Assert.AreEqual(2, slot.priority); }
public void TestCanUpdateDisplaynameByReaddingSlotToTestNode() { var graph = new TestNodeGraph(); var node = new TestNode(); var slot0 = new TestSlot(typeof(Vector3), SlotType.Output, 0).SetDisplayName("output"); var slot1 = new TestSlot(typeof(Vector3), SlotType.Output, 0).SetDisplayName("output_updated"); node.AddSlot(slot0); node.AddSlot(slot1); node.name = "Test Node"; graph.AddNode(node); Assert.AreEqual(1, graph.GetNodes <INode>().Count()); var found = graph.GetNodes <INode>().FirstOrDefault(); Assert.AreEqual(0, found.GetInputSlots <ISlot>().Count()); Assert.AreEqual(1, found.GetOutputSlots <ISlot>().Count()); Assert.AreEqual(1, found.GetSlots <ISlot>().Count()); var slot = found.GetOutputSlots <ISlot>().FirstOrDefault(); Assert.AreEqual("output_updated (Vector3)", slot.displayName); }
public void TestCanUpdateSlotPriorityByReaddingSlotToTestNode() { var graph = new TestNodeGraph(); var node = new TestNode(); var slot0 = new TestSlot(typeof(Vector3), SlotType.Output, 0); var slot1 = new TestSlot(typeof(Vector3), SlotType.Output, 0).SetPriority(5); node.AddSlot(slot0); node.AddSlot(slot1); node.name = "Test Node"; graph.AddNode(node); Assert.AreEqual(1, graph.GetNodes <INode>().Count()); var found = graph.GetNodes <INode>().FirstOrDefault(); Assert.AreEqual(0, found.GetInputSlots <ISlot>().Count()); Assert.AreEqual(1, found.GetOutputSlots <ISlot>().Count()); Assert.AreEqual(1, found.GetSlots <ISlot>().Count()); var slot = found.GetOutputSlots <ISlot>().FirstOrDefault(); Assert.AreEqual(5, slot.priority); }