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)); }
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)); } ); }