public void Setup() { m_MousePosition = Vector2.zero; m_HoveredVertex = -1; m_HoveredEdge = -1; m_ClosestEdge = -1; m_View = Substitute.For <ISpriteMeshView>(); m_View.mouseWorldPosition.Returns(x => m_MousePosition); m_View.hoveredVertex.Returns(x => m_HoveredVertex); m_View.hoveredEdge.Returns(x => m_HoveredEdge); m_View.closestEdge.Returns(x => m_ClosestEdge); m_View.WorldToScreen(Arg.Any <Vector2>()).Returns(x => ((Vector2)x[0] * 100f)); m_View.IsActionTriggered(Arg.Any <MeshEditorAction>()).Returns(true); m_SelectedVertices = new List <int>(); m_Selection = Substitute.For <ISelection <int> >(); m_Selection.Count.Returns(x => m_SelectedVertices.Count); m_Selection.Contains(Arg.Any <int>()).Returns(x => m_SelectedVertices.Contains((int)x[0])); m_Selection.elements.Returns(x => m_SelectedVertices.ToArray()); m_Selection.activeElement.Returns(x => { if (m_SelectedVertices.Count == 0) { return(-1); } return(m_SelectedVertices[0]); }); m_CacheUndo = Substitute.For <ICacheUndo>(); m_Triangulator = Substitute.For <ITriangulator>(); m_SpriteMeshData = new SpriteMeshData(); m_SpriteMeshData.frame = new Rect(0f, 0f, 100f, 100f); m_SpriteMeshController = new SpriteMeshController(); m_SpriteMeshController.frame = m_SpriteMeshData.frame; m_SpriteMeshController.spriteMeshData = m_SpriteMeshData; m_SpriteMeshController.spriteMeshView = m_View; m_SpriteMeshController.selection = m_Selection; m_SpriteMeshController.cacheUndo = m_CacheUndo; m_SpriteMeshController.triangulator = m_Triangulator; m_SpriteMeshDataController.spriteMeshData = m_SpriteMeshData; }
public void MoveEdge_MovesSelectedVertices() { Vector2 position1 = Vector2.zero; Vector2 position2 = Vector2.left; Vector2 position3 = Vector2.one; Vector2 position4 = Vector2.up; m_SpriteMeshDataController.CreateVertex(position1); m_SpriteMeshDataController.CreateVertex(position2); m_SpriteMeshDataController.CreateVertex(position3); m_SpriteMeshDataController.CreateVertex(position4); m_SpriteMeshDataController.CreateEdge(0, 1); m_SelectedVertices.Add(0); m_SelectedVertices.Add(1); m_SelectedVertices.Add(2); m_SelectedVertices.Add(3); Vector2 deltaPosition = Vector2.one * 10f; Vector2 delta; m_View.DoMoveEdge(out delta).Returns(x => { x[0] = deltaPosition; return(true); }); m_View.IsActionTriggered(MeshEditorAction.MoveEdge).Returns(x => true); m_SpriteMeshController.OnGUI(); Assert.AreEqual(4, m_SpriteMeshData.vertices.Count, "Incorrect number of vertices"); Assert.AreEqual(position1 + deltaPosition, m_SpriteMeshData.vertices[0].position, "Vertex position is incorrect"); Assert.AreEqual(position2 + deltaPosition, m_SpriteMeshData.vertices[1].position, "Vertex position is incorrect"); Assert.AreEqual(position3 + deltaPosition, m_SpriteMeshData.vertices[2].position, "Vertex position is incorrect"); Assert.AreEqual(position4 + deltaPosition, m_SpriteMeshData.vertices[3].position, "Vertex position is incorrect"); m_CacheUndo.Received().BeginUndoOperation(Arg.Any <string>()); m_Triangulator.Received().Triangulate(Arg.Any <IList <Vector2> >(), Arg.Any <IList <Edge> >(), Arg.Any <IList <int> >()); }