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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 8
0
        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");
            }));
        }
Exemplo n.º 9
0
        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.");
            }
                                                 ));
        }
Exemplo n.º 10
0
        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");
            }));
        }
Exemplo n.º 11
0
        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.");
            }
                                                  ));
        }