public IEnumerator PlacematCollapsesOnClick() { var placematModel = GraphModel.CreatePlacemat(Rect.zero); MarkGraphViewStateDirty(); yield return(null); var placemat = placematModel.GetUI <GraphElement>(GraphView); var collapseButton = placemat.SafeQ <CollapseButton>(Placemat.collapseButtonPartName); Assert.IsNotNull(collapseButton); Assert.IsFalse(collapseButton.value); Assert.IsFalse(placematModel.Collapsed); var clickPosition = collapseButton.parent.LocalToWorld(collapseButton.layout.center); // Move the mouse over to make the button appear. EventHelper.MouseMoveEvent(new Vector2(0, 0), clickPosition); EventHelper.MouseMoveEvent(clickPosition, clickPosition + Vector2.down); EventHelper.Click(clickPosition); yield return(null); Assert.IsTrue(placematModel.Collapsed); }
public void ElementIsHidableByPlacement() { var placemat = GraphModel.CreatePlacemat(new Rect(0, 0, 200, 500)) as PlacematModel; var node = GraphModel.CreateNode <Type0FakeNodeModel>("Node0", new Vector2(10, 100)); var sticky = (StickyNoteModel)GraphModel.CreateStickyNote(new Rect(100, 100, 50, 50)); placemat.HiddenElements = new[] { node }; Assert.AreEqual(1, placemat.HiddenElements.Count(), "Node was not properly added to the list of hidden elements"); Assert.AreEqual(node, placemat.HiddenElements.First(), "Placemat does not contain the expected node in its hidden elements"); placemat.HiddenElements = new[] { sticky }; Assert.AreEqual(1, placemat.HiddenElements.Count(), "Sticky note was not properly added to the list of hidden elements"); Assert.AreEqual(sticky, placemat.HiddenElements.First(), "Placemat does not contain the expected sticky note in its hidden elements"); }
public IEnumerator PlacematCollapsesOnValueChanged() { var placematModel = GraphModel.CreatePlacemat(Rect.zero); MarkGraphViewStateDirty(); yield return(null); var placemat = placematModel.GetUI <GraphElement>(GraphView); var collapseButton = placemat.SafeQ <CollapseButton>(Placemat.collapseButtonPartName); Assert.IsNotNull(collapseButton); Assert.IsFalse(collapseButton.value); Assert.IsFalse(placematModel.Collapsed); collapseButton.value = true; yield return(null); Assert.IsTrue(placematModel.Collapsed); }
public void MoveElementsCommandForMultipleTypesWorks([Values] TestingMode mode) { var deltaMove = new Vector2(50, -75); var itemSize = new Vector2(100, 100); var origNodePosition = Vector2.zero; var newNodePosition = deltaMove; var node = GraphModel.CreateNode <Type0FakeNodeModel>("Node0", Vector2.zero); var origStickyPosition = new Rect(Vector2.one * -100, itemSize); var newStickyPosition = new Rect(origStickyPosition.position + deltaMove, itemSize); var stickyNote = (StickyNoteModel)GraphModel.CreateStickyNote(origStickyPosition); var origPlacematPosition = new Rect(Vector2.one * 200, itemSize); var newPlacematPosition = new Rect(origPlacematPosition.position + deltaMove, itemSize); var placemat = (PlacematModel)GraphModel.CreatePlacemat(origPlacematPosition); placemat.Title = "Blah"; TestPrereqCommandPostreq(mode, () => { Assert.That(GetNodeCount(), Is.EqualTo(1)); Assert.That(GetEdgeCount(), Is.EqualTo(0)); Assert.That(GetStickyNoteCount(), Is.EqualTo(1)); Assert.That(GetNode(0).Position, Is.EqualTo(origNodePosition)); Assert.That(GetStickyNote(0).PositionAndSize, Is.EqualTo(origStickyPosition)); Assert.That(GetPlacemat(0).PositionAndSize, Is.EqualTo(origPlacematPosition)); return(new MoveElementsCommand(deltaMove, new IMovable[] { node, placemat, stickyNote })); }, () => { Assert.That(GetNodeCount(), Is.EqualTo(1)); Assert.That(GetEdgeCount(), Is.EqualTo(0)); Assert.That(GetStickyNoteCount(), Is.EqualTo(1)); Assert.That(GetNode(0).Position, Is.EqualTo(newNodePosition)); Assert.That(GetStickyNote(0).PositionAndSize.position, Is.EqualTo(newStickyPosition.position)); Assert.That(GetPlacemat(0).PositionAndSize.position, Is.EqualTo(newPlacematPosition.position)); }); }
public IEnumerator ResizePlacematChangeModelRect() { var originalRect = new Rect(0, 0, 200, 100); var move = new Vector2(100, 0); var placematModel = GraphModel.CreatePlacemat(originalRect); placematModel.Title = "Placemat"; MarkGraphViewStateDirty(); yield return(null); var placemat = placematModel.GetUI <GraphElement>(GraphView); var rightResizer = placemat.SafeQ(Placemat.resizerPartName).SafeQ("right-resize"); var clickPosition = rightResizer.parent.LocalToWorld(rightResizer.layout.center); EventHelper.DragTo(clickPosition, clickPosition + move); yield return(null); var newRect = new Rect(originalRect.position, originalRect.size + move); Assert.AreEqual(newRect, placematModel.PositionAndSize); }
public void Test_MoveElementsActionForMultipleTypes([Values] TestingMode mode) { var deltaMove = new Vector2(50, -75); var itemSize = new Vector2(100, 100); var origNodePosition = Vector2.zero; var newNodePosition = deltaMove; var node = GraphModel.CreateNode <Type0FakeNodeModel>("Node0", Vector2.zero); var origStickyPosition = new Rect(Vector2.one * -100, itemSize); var newStickyPosition = new Rect(origStickyPosition.position + deltaMove, itemSize); var stickyNote = (StickyNoteModel)GraphModel.CreateStickyNote(origStickyPosition); var origPlacematPosition = new Rect(Vector2.one * 200, itemSize); var newPlacematPosition = new Rect(origPlacematPosition.position + deltaMove, itemSize); var placemat = (PlacematModel)GraphModel.CreatePlacemat("Blah", origPlacematPosition); TestPrereqActionPostreq(mode, () => { Assert.That(GetNodeCount(), Is.EqualTo(1)); Assert.That(GetEdgeCount(), Is.EqualTo(0)); Assert.That(GetStickyNoteCount(), Is.EqualTo(1)); Assert.That(GetNode(0).Position, Is.EqualTo(origNodePosition)); Assert.That(GetStickyNote(0).Position, Is.EqualTo(origStickyPosition)); Assert.That(GetPlacemat(0).Position, Is.EqualTo(origPlacematPosition)); return(new MoveElementsAction(deltaMove, new[] { node }, new[] { placemat }, new[] { stickyNote }, null)); }, () => { Assert.That(GetNodeCount(), Is.EqualTo(1)); Assert.That(GetEdgeCount(), Is.EqualTo(0)); Assert.That(GetStickyNoteCount(), Is.EqualTo(1)); Assert.That(GetNode(0).Position, Is.EqualTo(newNodePosition)); Assert.That(GetStickyNote(0).Position.position, Is.EqualTo(newStickyPosition.position)); Assert.That(GetPlacemat(0).Position.position, Is.EqualTo(newPlacematPosition.position)); }); }
public IEnumerator RenamePlacematRenamesModel() { const string newName = "New Name"; var placematModel = GraphModel.CreatePlacemat(Rect.zero); placematModel.Title = "Placemat"; MarkGraphViewStateDirty(); yield return(null); var placemat = placematModel.GetUI <GraphElement>(GraphView); var label = placemat.SafeQ(Placemat.titleContainerPartName).SafeQ(EditableLabel.labelName); var clickPosition = label.parent.LocalToWorld(label.layout.center); EventHelper.Click(clickPosition, clickCount: 2); EventHelper.Type(newName); EventHelper.Click(GraphView.layout.max); yield return(null); Assert.AreEqual(newName, placematModel.Title); }
public IEnumerator CollapsingAPlacematHidesItsContentToOtherPlacemats([Values] TestingMode mode) { GraphModel.CreatePlacemat(string.Empty, new Rect(0, 0, 200, 200)); GraphModel.CreatePlacemat(string.Empty, new Rect(205, 0, 200, 200)); GraphModel.CreateNode <Type0FakeNodeModel>("Node0", new Vector2(190, 100)); Store.Dispatch(new RefreshUIAction(UpdateFlags.All)); yield return(null); IEnumerable <IGraphElementModel> modelsToMove = null; HashSet <GraphElement> elementsToMove = new HashSet <GraphElement>(); yield return(TestPrereqActionPostreq(mode, () => { var placemat0 = GetGraphElementModel(0) as PlacematModel; var placemat1 = GetGraphElementModel(1) as PlacematModel; var node = GetGraphElementModel(2) as Type0FakeNodeModel; Assert.IsNotNull(placemat0); Assert.IsNotNull(placemat1); Assert.IsNotNull(node); Assert.IsFalse(placemat0.Collapsed, "Placemat0 is collapsed"); Assert.IsFalse(placemat1.Collapsed, "Placemat1 is collapsed"); var placematElement = GetGraphElements(). OfType <VisualScripting.Editor.Placemat>().FirstOrDefault(e => e.GraphElementModel.GetId() == placemat0.GetId()); elementsToMove.Clear(); GetElementsToMove(placematElement, elementsToMove); modelsToMove = elementsToMove.OfType <IHasGraphElementModel>().Select(e => e.GraphElementModel); Assert.IsTrue(modelsToMove.Contains(node), "Placemat0 models-to-move does not contain node"); placematElement = GetGraphElements(). OfType <VisualScripting.Editor.Placemat>().FirstOrDefault(e => e.GraphElementModel.GetId() == placemat1.GetId()); elementsToMove.Clear(); GetElementsToMove(placematElement, elementsToMove); modelsToMove = elementsToMove.OfType <IHasGraphElementModel>().Select(e => e.GraphElementModel); Assert.IsTrue(modelsToMove.Contains(node), "Placemat1 models-to-move does not contain node"); }, frame => { switch (frame) { case 0: Store.Dispatch(new RefreshUIAction(UpdateFlags.All)); return TestPhase.WaitForNextFrame; case 1: { var placemat0 = GetGraphElementModel(0) as PlacematModel; var node = GetGraphElementModel(2); Store.Dispatch(new ExpandOrCollapsePlacematAction(true, new[] { node.GetId() }, placemat0)); return TestPhase.WaitForNextFrame; } case 2: Store.Dispatch(new RefreshUIAction(UpdateFlags.All)); return TestPhase.WaitForNextFrame; default: return TestPhase.Done; } }, () => { var placemat0 = GetGraphElementModel(0) as PlacematModel; var placemat1 = GetGraphElementModel(1) as PlacematModel; var node = GetGraphElementModel(2) as Type0FakeNodeModel; Assert.IsNotNull(placemat0); Assert.IsNotNull(placemat1); Assert.IsNotNull(node); Assert.IsTrue(placemat0.Collapsed, "Placemat0 is not collapsed"); Assert.IsFalse(placemat1.Collapsed, "Placemat1 is collapsed"); Assert.IsTrue(placemat0.HiddenElementsGuid.Contains(node.GetId()), "Placemat0 is not hiding node."); var placematElement = GetGraphElements(). OfType <VisualScripting.Editor.Placemat>().FirstOrDefault(e => e.GraphElementModel.GetId() == placemat1.GetId()); elementsToMove.Clear(); GetElementsToMove(placematElement, elementsToMove); modelsToMove = elementsToMove.OfType <IHasGraphElementModel>().Select(e => e.GraphElementModel); Assert.IsFalse(modelsToMove.Contains(node), "Placemat1 models-to-move contains node"); })); }
public IEnumerator UndoUncollapseShouldLiberateNodeUnderPlacemat([Values] TestingMode mode) { { // Create a placemat and collapse it. var placemat = GraphModel.CreatePlacemat(string.Empty, new Rect(0, 0, 200, 500)) as PlacematModel; Store.Dispatch(new ExpandOrCollapsePlacematAction(true, new string[] {}, placemat)); yield return(null); // Add a node under it. GraphModel.CreateNode <Type0FakeNodeModel>("Node0", new Vector2(10, 100)); Store.Dispatch(new RefreshUIAction(UpdateFlags.All)); yield return(null); } yield return(TestPrereqActionPostreq(mode, () => { var placemat = GetGraphElementModel(0) as PlacematModel; var node = GetGraphElementModel(1) as Type0FakeNodeModel; Assert.IsNotNull(placemat); Assert.IsNotNull(node); Assert.IsTrue(placemat.Collapsed, "Placemat is not collapsed"); Assert.IsFalse(placemat.HiddenElementsGuid.Contains(node.GetId()), "Placemat is hiding node."); }, frame => { switch (frame) { case 0: Store.Dispatch(new RefreshUIAction(UpdateFlags.All)); return TestPhase.WaitForNextFrame; case 1: { var placemat = GetGraphElementModel(0) as PlacematModel; Store.Dispatch(new ExpandOrCollapsePlacematAction(false, new string[] {}, placemat)); return TestPhase.WaitForNextFrame; } case 2: Store.Dispatch(new RefreshUIAction(UpdateFlags.All)); return TestPhase.WaitForNextFrame; default: return TestPhase.Done; } }, () => { var placemat = GetGraphElementModel(0) as PlacematModel; var node = GetGraphElementModel(1) as Type0FakeNodeModel; Assert.IsNotNull(placemat); Assert.IsNotNull(node); Assert.IsFalse(placemat.Collapsed, "Placemat is collapsed"); Assert.IsTrue(placemat.HiddenElementsGuid == null || placemat.HiddenElementsGuid.Count == 0, "Placemat is hiding something."); } )); }
public IEnumerator CollapsingAPlacematHidesItsContentToOtherPlacemats([Values] TestingMode mode) { GraphView.AddToClassList("CollapsingAPlacematHidesItsContentToOtherPlacemats"); GraphView.AddTestStylesheet("Tests.uss"); GraphModel.CreatePlacemat(new Rect(0, 0, 200, 200)); GraphModel.CreatePlacemat(new Rect(205, 0, 200, 200)); var nodeModel = GraphModel.CreateNode <Type0FakeNodeModel>("Node0", new Vector2(190, 100)); MarkGraphViewStateDirty(); yield return(null); var nodeUI = nodeModel.GetUI <Node>(GraphView); nodeUI.style.width = 200; nodeUI.style.height = 200; yield return(null); IEnumerable <IGraphElementModel> modelsToMove = null; HashSet <GraphElement> elementsToMove = new HashSet <GraphElement>(); yield return(TestPrereqCommandPostreq(mode, () => { var placemat0 = GetGraphElementModel(0) as PlacematModel; var placemat1 = GetGraphElementModel(1) as PlacematModel; var node = GetGraphElementModel(2) as Type0FakeNodeModel; Assert.IsNotNull(placemat0); Assert.IsNotNull(placemat1); Assert.IsNotNull(node); Assert.IsFalse(placemat0.Collapsed, "Placemat0 is collapsed"); Assert.IsFalse(placemat1.Collapsed, "Placemat1 is collapsed"); var placematElement = GetGraphElements(). OfType <Placemat>().FirstOrDefault(e => e.Model.Guid == placemat0.Guid); elementsToMove.Clear(); placematElement?.GetElementsToMove(false, elementsToMove); modelsToMove = elementsToMove.Select(e => e.Model); Assert.IsTrue(modelsToMove.Contains(node), "Placemat0 models-to-move does not contain node"); placematElement = GetGraphElements(). OfType <Placemat>().FirstOrDefault(e => e.Model.Guid == placemat1.Guid); elementsToMove.Clear(); placematElement?.GetElementsToMove(false, elementsToMove); modelsToMove = elementsToMove.Select(e => e.Model); Assert.IsTrue(modelsToMove.Contains(node), "Placemat1 models-to-move does not contain node"); }, frame => { switch (frame) { case 0: MarkGraphViewStateDirty(); return TestPhase.WaitForNextFrame; case 1: { var placemat0 = GetGraphElementModel(0) as PlacematModel; var node = GetGraphElementModel(2); CommandDispatcher.Dispatch(new CollapsePlacematCommand(placemat0, true, new[] { node })); return TestPhase.WaitForNextFrame; } case 2: MarkGraphViewStateDirty(); return TestPhase.WaitForNextFrame; default: return TestPhase.Done; } }, () => { var placemat0 = GetGraphElementModel(0) as PlacematModel; var placemat1 = GetGraphElementModel(1) as PlacematModel; var node = GetGraphElementModel(2) as Type0FakeNodeModel; Assert.IsNotNull(placemat0); Assert.IsNotNull(placemat1); Assert.IsNotNull(node); Assert.IsTrue(placemat0.Collapsed, "Placemat0 is not collapsed"); Assert.IsFalse(placemat1.Collapsed, "Placemat1 is collapsed"); Assert.IsTrue(placemat0.HiddenElementsGuid.Contains(node.Guid.ToString()), "Placemat0 is not hiding node."); var placematElement = GetGraphElements(). OfType <Placemat>().FirstOrDefault(e => e.Model.Guid == placemat1.Guid); elementsToMove.Clear(); placematElement?.GetElementsToMove(false, elementsToMove); modelsToMove = elementsToMove.Select(e => e.Model); Assert.IsFalse(modelsToMove.Contains(node), "Placemat1 models-to-move contains node"); })); }
public IEnumerator UndoUncollapseShouldLiberateNodeUnderPlacemat([Values] TestingMode mode) { { // Create a placemat and collapse it. var placemat = GraphModel.CreatePlacemat(new Rect(0, 0, 200, 500)) as PlacematModel; MarkGraphViewStateDirty(); yield return(null); CommandDispatcher.Dispatch(new CollapsePlacematCommand(placemat, true, new IGraphElementModel[] { })); yield return(null); // Add a node under it. GraphModel.CreateNode <Type0FakeNodeModel>("Node0", new Vector2(10, 100)); MarkGraphViewStateDirty(); yield return(null); } yield return(TestPrereqCommandPostreq(mode, () => { var placemat = GetGraphElementModel(0) as PlacematModel; var node = GetGraphElementModel(1) as Type0FakeNodeModel; Assert.IsNotNull(placemat); Assert.IsNotNull(node); Assert.IsTrue(placemat.Collapsed, "Placemat is not collapsed"); Assert.IsFalse(placemat.HiddenElementsGuid.Contains(node.Guid.ToString()), "Placemat is hiding node."); }, frame => { switch (frame) { case 0: MarkGraphViewStateDirty(); return TestPhase.WaitForNextFrame; case 1: { var placemat = GetGraphElementModel(0) as PlacematModel; CommandDispatcher.Dispatch(new CollapsePlacematCommand(placemat, false, new IGraphElementModel[] { })); return TestPhase.WaitForNextFrame; } case 2: MarkGraphViewStateDirty(); return TestPhase.WaitForNextFrame; default: return TestPhase.Done; } }, () => { var placemat = GetGraphElementModel(0) as PlacematModel; var node = GetGraphElementModel(1) as Type0FakeNodeModel; Assert.IsNotNull(placemat); Assert.IsNotNull(node); Assert.IsFalse(placemat.Collapsed, "Placemat is collapsed"); Assert.IsTrue(placemat.HiddenElementsGuid == null || placemat.HiddenElementsGuid.Count == 0, "Placemat is hiding something."); } )); }