Exemplo n.º 1
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");
            }));
        }