Example #1
0
        public void TestEdgeReorderCommandWorksOnlyWithReorderableEdgePorts([Values] ReorderEdgeCommand.ReorderType reorderType)
        {
            var originNode = GraphModel.CreateNode <Type0FakeNodeModel>("Origin", Vector2.zero);
            var destNode1  = GraphModel.CreateNode <Type0FakeNodeModel>("Dest1", Vector2.zero);
            var destNode2  = GraphModel.CreateNode <Type0FakeNodeModel>("Dest2", Vector2.zero);
            var destNode3  = GraphModel.CreateNode <Type0FakeNodeModel>("Dest3", Vector2.zero);

            GraphModel.CreateEdge(destNode1.Input0, originNode.Output0);
            var edge2 = GraphModel.CreateEdge(destNode2.Input0, originNode.Output0);

            GraphModel.CreateEdge(destNode3.Input0, originNode.Output0);

            const int immutableIdx = 1;

            Assert.IsFalse(((PortModel)originNode.Output0)?.HasReorderableEdges ?? false);
            Assert.AreEqual(immutableIdx, GraphModel.EdgeModels.IndexOfInternal(edge2));

            m_CommandDispatcher.Dispatch(new ReorderEdgeCommand(edge2, reorderType));

            // Nothing has changed.
            Assert.AreEqual(immutableIdx, GraphModel.EdgeModels.IndexOfInternal(edge2));
        }
Example #2
0
        public void TestEdgeReorderCommand([Values] TestingMode mode, [Values] ReorderEdgeCommand.ReorderType reorderType)
        {
            var originNode = GraphModel.CreateNode <Type0FakeNodeModel>("Origin", Vector2.zero);
            var destNode1  = GraphModel.CreateNode <Type0FakeNodeModel>("Dest1", Vector2.zero);
            var destNode2  = GraphModel.CreateNode <Type0FakeNodeModel>("Dest2", Vector2.zero);
            var destNode3  = GraphModel.CreateNode <Type0FakeNodeModel>("Dest3", Vector2.zero);
            var destNode4  = GraphModel.CreateNode <Type0FakeNodeModel>("Dest4", Vector2.zero);
            var destNode5  = GraphModel.CreateNode <Type0FakeNodeModel>("Dest5", Vector2.zero);

            var edge1 = GraphModel.CreateEdge(destNode1.ExeInput0, originNode.ExeOutput0);
            var edge2 = GraphModel.CreateEdge(destNode2.ExeInput0, originNode.ExeOutput0);
            var edge3 = GraphModel.CreateEdge(destNode3.ExeInput0, originNode.ExeOutput0);
            var edge4 = GraphModel.CreateEdge(destNode4.ExeInput0, originNode.ExeOutput0);
            var edge5 = GraphModel.CreateEdge(destNode5.ExeInput0, originNode.ExeOutput0);

            TestPrereqCommandPostreq(mode,
                                     () =>
            {
                RefreshReference(ref originNode);
                RefreshReference(ref edge1);
                RefreshReference(ref edge2);
                RefreshReference(ref edge3);
                RefreshReference(ref edge4);
                RefreshReference(ref edge5);

                Assert.IsTrue(((PortModel)originNode.ExeOutput0)?.HasReorderableEdges ?? false);
                Assert.AreEqual(2, GraphModel.EdgeModels.IndexOfInternal(edge3));

                return(new ReorderEdgeCommand(edge3, reorderType));
            },
                                     () =>
            {
                RefreshReference(ref edge1);
                RefreshReference(ref edge2);
                RefreshReference(ref edge3);
                RefreshReference(ref edge4);
                RefreshReference(ref edge5);

                int expectedIdx;
                switch (reorderType)
                {
                case ReorderEdgeCommand.ReorderType.MoveFirst:
                    expectedIdx = 0;
                    break;

                case ReorderEdgeCommand.ReorderType.MoveUp:
                    expectedIdx = 1;
                    break;

                case ReorderEdgeCommand.ReorderType.MoveDown:
                    expectedIdx = 3;
                    break;

                case ReorderEdgeCommand.ReorderType.MoveLast:
                    expectedIdx = 4;
                    break;

                default:
                    throw new ArgumentOutOfRangeException(nameof(reorderType), reorderType, "Unexpected value");
                }
                Assert.AreEqual(expectedIdx, GraphModel.EdgeModels.IndexOfInternal(edge3));
            }
                                     );
        }