123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using NUnit.Framework;
- using UnityEngine;
- using UnityEditor.ShaderGraph;
-
- namespace UnityEditor.Graphing.UnitTests
- {
- [TestFixture]
- public class BaseMaterialGraphTests
- {
- [OneTimeSetUp]
- public void RunBeforeAnyTests()
- {
- Debug.unityLogger.logHandler = new ConsoleLogHandler();
- }
-
- [Test]
- public void TestCanCreateBaseMaterialGraph()
- {
- var graph = new GraphData();
-
- Assert.AreEqual(0, graph.edges.Count());
- Assert.AreEqual(0, graph.GetNodes<AbstractMaterialNode>().Count());
- }
-
- [Test]
- public void TestCanAddNodeToBaseMaterialGraph()
- {
- var graph = new GraphData();
- var node = new TestNode();
- node.name = "Test Node";
- graph.AddNode(node);
-
- Assert.AreEqual(1, graph.GetNodes<AbstractMaterialNode>().Count());
- Assert.AreEqual("Test Node", graph.GetNodes<AbstractMaterialNode>().FirstOrDefault().name);
- Assert.AreEqual(graph, node.owner);
- }
-
- [Test]
- public void TestCanRemoveNodeFromBaseMaterialGraph()
- {
- var graph = new GraphData();
- var node = new TestNode();
- node.name = "Test Node";
- graph.AddNode(node);
- Assert.AreEqual(1, graph.GetNodes<AbstractMaterialNode>().Count());
-
- graph.RemoveNode(graph.GetNodes<AbstractMaterialNode>().FirstOrDefault());
- Assert.AreEqual(0, graph.GetNodes<AbstractMaterialNode>().Count());
- }
-
- [Test]
- public void TestCanModifyNodeDrawState()
- {
- var node = new TestNode();
- node.name = "Test Node";
-
- var drawState = node.drawState;
- var newPos = new Rect(10, 10, 0, 0);
- drawState.position = newPos;
- drawState.expanded = false;
- node.drawState = drawState;
-
- Assert.AreEqual(drawState, node.drawState);
- Assert.AreEqual(newPos, node.drawState.position);
- Assert.IsFalse(node.drawState.expanded);
- }
-
- class SetErrorNode : TestNode
- {
- public void SetError()
- {
- hasError = true;
- }
-
- public void ClearError()
- {
- hasError = false;
- }
- }
-
- [Test]
- public void TestChildClassCanModifyErrorState()
- {
- var node = new SetErrorNode();
- node.SetError();
- Assert.IsTrue(node.hasError);
- node.ClearError();
- Assert.IsFalse(node.hasError);
- }
-
- class TestableNode : TestNode
- {
- public const int Input0 = 0;
- public const int Input1 = 1;
- public const int Input2 = 2;
-
- public const int Output0 = 3;
- public const int Output1 = 4;
- public const int Output2 = 5;
-
- public TestableNode() : base()
- {
- AddSlot(new TestSlot(Input0, "Input", SlotType.Input));
- AddSlot(new TestSlot(Input1, "Input", SlotType.Input));
- AddSlot(new TestSlot(Input2, "Input", SlotType.Input));
-
- AddSlot(new TestSlot(Output0, "Output", SlotType.Output));
- AddSlot(new TestSlot(Output1, "Output", SlotType.Output));
- AddSlot(new TestSlot(Output2, "Output", SlotType.Output));
- }
- }
-
- [Test]
- public void TestRemoveNodeFromBaseMaterialGraphCleansEdges()
- {
- var graph = new GraphData();
- var outputNode = new TestableNode();
- graph.AddNode(outputNode);
-
- var inputNode = new TestableNode();
- graph.AddNode(inputNode);
-
- Assert.AreEqual(2, graph.GetNodes<AbstractMaterialNode>().Count());
- var createdEdge = graph.Connect(outputNode.GetSlotReference(TestableNode.Output0), inputNode.GetSlotReference(TestableNode.Input0));
- Assert.AreEqual(1, graph.edges.Count());
-
- var edge = graph.edges.FirstOrDefault();
-
- Assert.AreEqual(createdEdge, edge);
-
- graph.RemoveNode(outputNode);
-
- Assert.AreEqual(1, graph.GetNodes<AbstractMaterialNode>().Count());
- Assert.AreEqual(0, graph.edges.Count());
- Assert.AreEqual(inputNode, graph.GetNodes<AbstractMaterialNode>().FirstOrDefault());
- }
-
- private class NoDeleteNode : TestNode
- {
- public override bool canDeleteNode { get { return false; } }
- }
-
- [Test]
- public void TestCanNotRemoveNoDeleteNodeFromBaseMaterialGraph()
- {
- var graph = new GraphData();
- var node = new NoDeleteNode();
- node.name = "Test Node";
- graph.AddNode(node);
- Assert.AreEqual(1, graph.GetNodes<AbstractMaterialNode>().Count());
- Assert.Catch<InvalidOperationException>(() => graph.RemoveNode(node));
- Assert.AreEqual(1, graph.GetNodes<AbstractMaterialNode>().Count());
- }
-
- private class OnEnableNode : TestNode, IOnAssetEnabled
- {
- public bool called = false;
- public void OnEnable()
- {
- called = true;
- }
- }
-
- [Test]
- public void TestSerializedGraphDelegatesOnEnableCalls()
- {
- var graph = new GraphData();
- var node = new OnEnableNode();
- node.name = "Test Node";
- graph.AddNode(node);
-
- Assert.IsFalse(node.called);
- graph.OnEnable();
- Assert.IsTrue(node.called);
- }
-
- [Test]
- public void TestCanFindNodeInBaseMaterialGraph()
- {
- var graph = new GraphData();
- var node = new TestNode();
- graph.AddNode(node);
-
- Assert.AreEqual(1, graph.GetNodes<AbstractMaterialNode>().Count());
- Assert.IsNotNull(graph.GetNodeFromId(node.objectId));
- Assert.IsNull(graph.GetNodeFromId("asdfffsd"));
- }
-
- [Test]
- public void TestCanAddSlotToTestNode()
- {
- var graph = new GraphData();
- var node = new TestNode();
- node.AddSlot(new TestSlot(0, "output", SlotType.Output));
- node.AddSlot(new TestSlot(1, "input", SlotType.Input));
- node.name = "Test Node";
- graph.AddNode(node);
-
- Assert.AreEqual(1, graph.GetNodes<AbstractMaterialNode>().Count());
- var found = graph.GetNodes<AbstractMaterialNode>().FirstOrDefault();
- Assert.AreEqual(1, found.GetInputSlots<MaterialSlot>().Count());
- Assert.AreEqual(1, found.GetInputSlots<MaterialSlot>().FirstOrDefault().id);
- Assert.AreEqual(1, found.GetOutputSlots<MaterialSlot>().Count());
- Assert.AreEqual(0, found.GetOutputSlots<MaterialSlot>().FirstOrDefault().id);
- Assert.AreEqual(2, found.GetSlots<MaterialSlot>().Count());
- }
-
- [Test]
- public void TestCanNotAddNullSlotToTestNode()
- {
- var node = new TestNode();
- Assert.Throws<ArgumentException>(() => node.AddSlot(null));
- }
-
- [Test]
- public void TestCanRemoveSlotFromTestNode()
- {
- var graph = new GraphData();
- var node = new TestNode();
- node.AddSlot(new TestSlot(0, "output", SlotType.Output));
- node.AddSlot(new TestSlot(1, "input", SlotType.Input));
- graph.AddNode(node);
-
- Assert.AreEqual(2, node.GetSlots<MaterialSlot>().Count());
- Assert.AreEqual(1, node.GetInputSlots<MaterialSlot>().Count());
- Assert.AreEqual(1, node.GetOutputSlots<MaterialSlot>().Count());
-
- node.RemoveSlot(1);
-
- Assert.AreEqual(1, node.GetSlots<MaterialSlot>().Count());
- Assert.AreEqual(0, node.GetInputSlots<MaterialSlot>().Count());
- Assert.AreEqual(1, node.GetOutputSlots<MaterialSlot>().Count());
- }
-
- [Test]
- public void TestCanRemoveSlotsWithNonMathingNameFromTestNode()
- {
- var graph = new GraphData();
- var node = new TestableNode();
- graph.AddNode(node);
-
- Assert.AreEqual(6, node.GetSlots<MaterialSlot>().Count());
- Assert.AreEqual(3, node.GetInputSlots<MaterialSlot>().Count());
- Assert.AreEqual(3, node.GetOutputSlots<MaterialSlot>().Count());
-
- node.RemoveSlotsNameNotMatching(new[] { TestableNode.Input1 });
-
- Assert.AreEqual(1, node.GetSlots<MaterialSlot>().Count());
- Assert.AreEqual(1, node.GetInputSlots<MaterialSlot>().Count());
- Assert.AreEqual(0, node.GetOutputSlots<MaterialSlot>().Count());
-
- Assert.IsNull(node.FindInputSlot<MaterialSlot>(TestableNode.Input0));
- Assert.IsNotNull(node.FindInputSlot<MaterialSlot>(TestableNode.Input1));
- Assert.IsNull(node.FindInputSlot<MaterialSlot>(TestableNode.Input2));
- }
-
- [Test]
- public void TestCanNotAddDuplicateSlotToTestNode()
- {
- var graph = new GraphData();
- var node = new TestNode();
- node.AddSlot(new TestSlot(0, "output", SlotType.Output));
- node.AddSlot(new TestSlot(0, "output", SlotType.Output));
- node.name = "Test Node";
- graph.AddNode(node);
-
- Assert.AreEqual(1, graph.GetNodes<AbstractMaterialNode>().Count());
- var found = graph.GetNodes<AbstractMaterialNode>().FirstOrDefault();
- Assert.AreEqual(0, found.GetInputSlots<MaterialSlot>().Count());
- Assert.AreEqual(1, found.GetOutputSlots<MaterialSlot>().Count());
- Assert.AreEqual(1, found.GetSlots<MaterialSlot>().Count());
- }
-
- [Test]
- public void TestCanUpdateDisplaynameByReaddingSlotToTestNode()
- {
- var graph = new GraphData();
- var node = new TestNode();
- node.AddSlot(new TestSlot(0, "output", SlotType.Output));
- node.AddSlot(new TestSlot(0, "output_updated", SlotType.Output));
- node.name = "Test Node";
- graph.AddNode(node);
-
- Assert.AreEqual(1, graph.GetNodes<AbstractMaterialNode>().Count());
- var found = graph.GetNodes<AbstractMaterialNode>().FirstOrDefault();
- Assert.AreEqual(0, found.GetInputSlots<MaterialSlot>().Count());
- Assert.AreEqual(1, found.GetOutputSlots<MaterialSlot>().Count());
- Assert.AreEqual(1, found.GetSlots<MaterialSlot>().Count());
-
- var slot = found.GetOutputSlots<MaterialSlot>().FirstOrDefault();
- Assert.AreEqual("output_updated(4)", slot.displayName);
- }
-
- [Test]
- public void TestCanUpdateSlotDisplayName()
- {
- var node = new TestNode();
- node.AddSlot(new TestSlot(0, "output", SlotType.Output));
- node.name = "Test Node";
-
- Assert.AreEqual(0, node.GetInputSlots<MaterialSlot>().Count());
- Assert.AreEqual(1, node.GetOutputSlots<MaterialSlot>().Count());
- Assert.AreEqual(1, node.GetSlots<MaterialSlot>().Count());
-
- var slot = node.GetOutputSlots<MaterialSlot>().FirstOrDefault();
- Assert.IsNotNull(slot);
- Assert.AreEqual("output(4)", slot.displayName);
- slot.displayName = "test";
- Assert.AreEqual("test(4)", slot.displayName);
- }
-
- [Test]
- public void TestCanFindSlotOnTestNode()
- {
- var node = new TestableNode();
-
- Assert.AreEqual(6, node.GetSlots<MaterialSlot>().Count());
- Assert.IsNotNull(node.FindInputSlot<MaterialSlot>(TestableNode.Input0));
- Assert.IsNull(node.FindInputSlot<MaterialSlot>(TestableNode.Output0));
- Assert.IsNotNull(node.FindOutputSlot<MaterialSlot>(TestableNode.Output0));
- Assert.IsNull(node.FindOutputSlot<MaterialSlot>(TestableNode.Input0));
-
- Assert.IsNotNull(node.FindSlot<MaterialSlot>(TestableNode.Input0));
- Assert.IsNotNull(node.FindSlot<MaterialSlot>(TestableNode.Output0));
- Assert.IsNull(node.FindSlot<MaterialSlot>(555));
- }
-
- [Test]
- public void TestCanFindSlotReferenceOnTestNode()
- {
- var node = new TestableNode();
-
- Assert.AreEqual(6, node.GetSlots<MaterialSlot>().Count());
- Assert.IsNotNull(node.GetSlotReference(TestableNode.Input0));
- Assert.IsNotNull(node.GetSlotReference(TestableNode.Output0));
- Assert.Throws<ArgumentException>(() => node.GetSlotReference(555));
- }
-
- [Test]
- public void TestCanConnectAndTraverseTwoNodesOnBaseMaterialGraph()
- {
- var graph = new GraphData();
-
- var outputNode = new TestableNode();
- graph.AddNode(outputNode);
-
- var inputNode = new TestableNode();
- graph.AddNode(inputNode);
-
- Assert.AreEqual(2, graph.GetNodes<AbstractMaterialNode>().Count());
-
-
- var createdEdge = graph.Connect(outputNode.GetSlotReference(TestableNode.Output0), inputNode.GetSlotReference(TestableNode.Input0));
- Assert.AreEqual(1, graph.edges.Count());
-
- var edge = graph.edges.FirstOrDefault();
-
- Assert.AreEqual(createdEdge, edge);
-
- var foundOutputNode = edge.outputSlot.node;
- var foundOutputSlot = foundOutputNode.FindOutputSlot<MaterialSlot>(edge.outputSlot.slotId);
- Assert.AreEqual(outputNode, foundOutputNode);
- Assert.IsNotNull(foundOutputSlot);
-
- var foundInputNode = edge.inputSlot.node;
- var foundInputSlot = foundInputNode.FindInputSlot<MaterialSlot>(edge.inputSlot.slotId);
- Assert.AreEqual(inputNode, foundInputNode);
- Assert.IsNotNull(foundInputSlot);
- }
-
- [Test]
- public void TestCanConnectAndTraverseThreeNodesOnBaseMaterialGraph()
- {
- var graph = new GraphData();
-
- 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<AbstractMaterialNode>().Count());
-
- graph.Connect(outputNode.GetSlotReference(TestableNode.Output0), middleNode.GetSlotReference(TestableNode.Input0));
- Assert.AreEqual(1, graph.edges.Count());
-
- graph.Connect(middleNode.GetSlotReference(TestableNode.Output0), inputNode.GetSlotReference(TestableNode.Input0));
- Assert.AreEqual(2, graph.edges.Count());
-
- var edgesOnMiddleNode = NodeUtils.GetAllEdges(middleNode);
- Assert.AreEqual(2, edgesOnMiddleNode.Count());
-
- outputNode.SetOverrideActiveState(AbstractMaterialNode.ActiveState.ExplicitActive);
- middleNode.SetOverrideActiveState(AbstractMaterialNode.ActiveState.ExplicitActive);
- inputNode.SetOverrideActiveState(AbstractMaterialNode.ActiveState.ExplicitActive);
- var result = new HashSet<AbstractMaterialNode>();
- 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);
- }
-
- [Test]
- public void TestExceptionIfBadNodeConfigurationWorks()
- {
- var node = new TestableNode();
- Assert.DoesNotThrow(
- () =>
- NodeUtils.SlotConfigurationExceptionIfBadConfiguration(
- node,
- new[] { TestableNode.Input0, TestableNode.Input1, TestableNode.Input2 },
- new[] { TestableNode.Output0, TestableNode.Output1, TestableNode.Output2, })
- );
-
-
- Assert.Throws<SlotConfigurationException>(
- () =>
- NodeUtils.SlotConfigurationExceptionIfBadConfiguration(
- node,
- new[] { 666, TestableNode.Input1, TestableNode.Input2 },
- new[] { TestableNode.Output0, TestableNode.Output1, TestableNode.Output2, })
- );
-
- Assert.Throws<SlotConfigurationException>(
- () =>
- NodeUtils.SlotConfigurationExceptionIfBadConfiguration(
- node,
- new[] { TestableNode.Input0, TestableNode.Input1, TestableNode.Input2 },
- new[] { 666, TestableNode.Output1, TestableNode.Output2, })
- );
-
- Assert.DoesNotThrow(
- () =>
- NodeUtils.SlotConfigurationExceptionIfBadConfiguration(
- node,
- new[] { TestableNode.Input0 },
- new[] { TestableNode.Output0 })
- );
- }
-
- [Test]
- public void TestConectionToSameInputReplacesOldInput()
- {
- var graph = new GraphData();
-
- var outputNode = new TestableNode();
- graph.AddNode(outputNode);
-
- var inputNode = new TestableNode();
- graph.AddNode(inputNode);
-
- Assert.AreEqual(2, graph.GetNodes<AbstractMaterialNode>().Count());
-
- var createdEdge = graph.Connect(outputNode.GetSlotReference(TestableNode.Output0), inputNode.GetSlotReference(TestableNode.Input0));
- Assert.AreEqual(1, graph.edges.Count());
- var edge = graph.edges.FirstOrDefault();
- Assert.AreEqual(createdEdge, edge);
-
- var createdEdge2 = graph.Connect(outputNode.GetSlotReference(TestableNode.Output0), inputNode.GetSlotReference(TestableNode.Input0));
- Assert.AreEqual(1, graph.edges.Count());
- var edge2 = graph.edges.FirstOrDefault();
- Assert.AreEqual(createdEdge2, edge2);
- }
-
- [Test]
- public void TestRemovingSlotRemovesConnectedEdges()
- {
- var graph = new GraphData();
-
- var outputNode = new TestableNode();
- graph.AddNode(outputNode);
-
- var inputNode = new TestableNode();
- graph.AddNode(inputNode);
-
- Assert.AreEqual(2, graph.GetNodes<AbstractMaterialNode>().Count());
-
- graph.Connect(outputNode.GetSlotReference(TestableNode.Output0), inputNode.GetSlotReference(TestableNode.Input0));
- Assert.AreEqual(1, graph.edges.Count());
-
- outputNode.RemoveSlot(TestableNode.Output0);
- Assert.AreEqual(0, graph.edges.Count());
- }
-
- [Test]
- public void TestCanNotConnectToNullSlot()
- {
- var graph = new GraphData();
-
- var outputNode = new TestableNode();
- graph.AddNode(outputNode);
-
- var inputNode = new TestNode();
- graph.AddNode(inputNode);
-
- Assert.AreEqual(2, graph.GetNodes<AbstractMaterialNode>().Count());
-
- var createdEdge2 = graph.Connect(outputNode.GetSlotReference(TestableNode.Output0), new SlotReference(null, 666));
- Assert.AreEqual(0, graph.edges.Count());
- Assert.IsNull(createdEdge2);
- }
-
- [Test]
- public void TestCanNotConnectTwoOuputSlotsOnBaseMaterialGraph()
- {
- var graph = new GraphData();
-
- var outputNode = new TestableNode();
- graph.AddNode(outputNode);
-
- var outputNode2 = new TestableNode();
- graph.AddNode(outputNode2);
-
- Assert.AreEqual(2, graph.GetNodes<AbstractMaterialNode>().Count());
-
- var createdEdge = graph.Connect(outputNode.GetSlotReference(TestableNode.Output0), outputNode2.GetSlotReference(TestableNode.Output0));
- Assert.IsNull(createdEdge);
- Assert.AreEqual(0, graph.edges.Count());
- }
-
- [Test]
- public void TestCanNotConnectTwoInputSlotsOnBaseMaterialGraph()
- {
- var graph = new GraphData();
-
- var inputNode = new TestableNode();
- graph.AddNode(inputNode);
-
- var inputNode2 = new TestableNode();
- graph.AddNode(inputNode2);
-
- Assert.AreEqual(2, graph.GetNodes<AbstractMaterialNode>().Count());
-
- var createdEdge = graph.Connect(inputNode.GetSlotReference(TestableNode.Input0), inputNode2.GetSlotReference(TestableNode.Input0));
- Assert.IsNull(createdEdge);
- Assert.AreEqual(0, graph.edges.Count());
- }
-
- [Test]
- public void TestRemovingNodeRemovesConectedEdgesOnBaseMaterialGraph()
- {
- var graph = new GraphData();
- var outputNode = new TestableNode();
- graph.AddNode(outputNode);
-
- var inputNode = new TestableNode();
- graph.AddNode(inputNode);
-
- Assert.AreEqual(2, graph.GetNodes<AbstractMaterialNode>().Count());
- graph.Connect(outputNode.GetSlotReference(TestableNode.Output0), inputNode.GetSlotReference(TestableNode.Input0));
- Assert.AreEqual(1, graph.edges.Count());
-
- graph.RemoveNode(graph.GetNodes<AbstractMaterialNode>().FirstOrDefault());
- Assert.AreEqual(1, graph.GetNodes<AbstractMaterialNode>().Count());
- Assert.AreEqual(0, graph.edges.Count());
- }
-
- [Test]
- public void TestRemovingEdgeOnBaseMaterialGraph()
- {
- var graph = new GraphData();
- var outputNode = new TestableNode();
- graph.AddNode(outputNode);
-
- var inputNode = new TestableNode();
- graph.AddNode(inputNode);
-
- Assert.AreEqual(2, graph.GetNodes<AbstractMaterialNode>().Count());
- graph.Connect(outputNode.GetSlotReference(TestableNode.Output0), inputNode.GetSlotReference(TestableNode.Input0));
- Assert.AreEqual(1, graph.edges.Count());
-
- graph.RemoveEdge(graph.edges.FirstOrDefault());
- Assert.AreEqual(2, graph.GetNodes<AbstractMaterialNode>().Count());
- Assert.AreEqual(0, graph.edges.Count());
- }
-
- [Test]
- public void TestRemovingElementsFromBaseMaterialGraph()
- {
- var graph = new GraphData();
- var outputNode = new TestableNode();
- graph.AddNode(outputNode);
-
- var inputNode = new TestableNode();
- graph.AddNode(inputNode);
-
- Assert.AreEqual(2, graph.GetNodes<AbstractMaterialNode>().Count());
- graph.Connect(outputNode.GetSlotReference(TestableNode.Output0), inputNode.GetSlotReference(TestableNode.Input0));
- Assert.AreEqual(1, graph.edges.Count());
-
- graph.RemoveElements(graph.GetNodes<AbstractMaterialNode>().ToArray(), graph.edges.ToArray(), new GroupData[] { }, new StickyNoteData[] { });
- Assert.AreEqual(0, graph.GetNodes<AbstractMaterialNode>().Count());
- Assert.AreEqual(0, graph.edges.Count());
- }
-
- [Test]
- public void TestCanGetEdgesOnBaseMaterialGraphFromSlotReference()
- {
- var graph = new GraphData();
- var outputNode = new TestableNode();
- graph.AddNode(outputNode);
-
- var inputNode = new TestableNode();
- graph.AddNode(inputNode);
-
- Assert.AreEqual(2, graph.GetNodes<AbstractMaterialNode>().Count());
- graph.Connect(outputNode.GetSlotReference(TestableNode.Output0), inputNode.GetSlotReference(TestableNode.Input0));
- Assert.AreEqual(1, graph.edges.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));
- }
-
- [Test]
- public void TestGetInputsWithNoConnection()
- {
- var graph = new GraphData();
-
- var outputNode = new TestableNode();
- graph.AddNode(outputNode);
-
- var inputNode = new TestableNode();
- graph.AddNode(inputNode);
-
- Assert.AreEqual(2, graph.GetNodes<AbstractMaterialNode>().Count());
- graph.Connect(outputNode.GetSlotReference(TestableNode.Output0), inputNode.GetSlotReference(TestableNode.Input0));
- Assert.AreEqual(1, graph.edges.Count());
-
- var slots = inputNode.GetInputsWithNoConnection();
- Assert.AreEqual(2, slots.Count());
- CollectionAssert.AreEqual(new[] { TestableNode.Input1, TestableNode.Input2 }, slots.Select(x => x.id));
- }
-
- [Test]
- public void TestCyclicConnectionsAreNotAllowedOnGraph()
- {
- var graph = new GraphData();
-
- var nodeA = new TestableNode();
-
- graph.AddNode(nodeA);
-
- var nodeB = new TestableNode();
- graph.AddNode(nodeB);
-
- Assert.AreEqual(2, graph.GetNodes<AbstractMaterialNode>().Count());
- graph.Connect(nodeA.GetSlotReference(TestableNode.Output0), nodeB.GetSlotReference(TestableNode.Input0));
- Assert.AreEqual(1, graph.edges.Count());
-
- var edge = graph.Connect(nodeB.GetSlotReference(TestableNode.Output0), nodeA.GetSlotReference(TestableNode.Input0));
- Assert.IsNull(edge);
- Assert.AreEqual(1, graph.edges.Count());
- }
- }
- }
|