示例#1
0
        public void GivenChain_ThenSequenceIsCorrect()
        {
            var provider = BuildServiceProvider();
            var link     = provider.GetRequiredService <IMyLink>();

            var links = ChainInspector.UnfoldChain(link);

            links.Should()
            .NotBeEmpty()
            .And.HaveCount(3);

            links.ElementAt(0).Should().BeOfType(typeof(MyLink1));
            links.ElementAt(1).Should().BeOfType(typeof(MyLink2));
            links.ElementAt(2).Should().BeOfType(typeof(MyLink3));
        }
示例#2
0
        public void GivenChain_ThenLinksAreTransient()
        {
            var provider = BuildServiceProvider();

            var link1 = provider.GetRequiredService <IMyLink>();
            var link2 = provider.GetRequiredService <IMyLink>();

            var links = new List <IMyLink>();

            links.AddRange(ChainInspector.UnfoldChain(link1));
            links.AddRange(ChainInspector.UnfoldChain(link2));

            var uniqueLinks = links.Select(x => x.GetHashCode());

            uniqueLinks.Count().Should().Be(links.Count);
        }
示例#3
0
        public void GivenChain_WhenDefault_ThenSequenceIsCorrect()
        {
            var provider = BuildServiceProvider();
            var factory  = provider.GetRequiredService <MyLinkFactory>();
            var link     = factory.Initialize("SINGLE");

            var links = ChainInspector.UnfoldChain(link);

            links.Should()
            .NotBeEmpty()
            .And.HaveCount(3);

            links.ElementAt(0).Should().BeOfType(typeof(MyLink1));
            links.ElementAt(1).Should().BeOfType(typeof(MyLink2));
            links.ElementAt(2).Should().BeOfType(typeof(MyLink3));
        }
        public void GivenChain_ThenSequenceIsCorrect()
        {
            IChainLink <MyRequest, MyResponse> myLink1 = new MyLink1(false);
            IChainLink <MyRequest, MyResponse> myLink2 = new MyLink2(false);
            IChainLink <MyRequest, MyResponse> myLink3 = new MyLink3(false);

            var link = ChainFactory <MyRequest, MyResponse>
                       .Initialize()
                       .StartWith(myLink1)
                       .FollowedBy(myLink2)
                       .FollowedBy(myLink3)
                       .Build();

            var links = ChainInspector.UnfoldChain(link);

            links.Should()
            .NotBeEmpty()
            .And.HaveCount(3)
            .And.ContainInOrder(new[] { myLink1, myLink2, myLink3 });
        }
示例#5
0
文件: Slot.cs 项目: KwestDev/TestTask
    public void OnDrop(PointerEventData eventData)
    {
        if (!item)
        {
            if (_LibraryType == LibraryType.ChainLibrary)
            {
                List <Transform> list = new List <Transform>();
                for (int i = 0; i < transform.parent.childCount; i++)
                {
                    list.Add(transform.parent.GetChild(i));
                }


                var slot = GameObject.Instantiate(gameObject);
                slot.transform.SetParent(transform.parent);
                UndoCommandCenter temp = new UndoCommandCenter();

                GameObject clone;
                if (dragHandeler.itemBeingDragged.transform.parent.GetComponent <Slot>()._LibraryType == LibraryType.ChainLibrary)
                {
                    clone             = dragHandeler.itemBeingDragged;
                    temp.undoProperty = UndoType.SwapLink;
                    temp.index1       = list.IndexOf(clone.transform.parent.transform);
                }
                else
                {
                    clone             = GameObject.Instantiate(dragHandeler.itemBeingDragged);
                    temp.undoProperty = UndoType.CreateLink;
                    temp.index1       = list.IndexOf(gameObject.transform);
                }

                clone.GetComponent <Links>().State = dragHandeler.itemBeingDragged.GetComponent <Links>().State;
                GameObject.FindGameObjectWithTag("EditorController").GetComponent <EditorController>().states.Add(clone);

                clone.transform.SetParent(transform);
                clone.transform.GetComponent <CanvasGroup>().blocksRaycasts = true;
                var dragState = clone.GetComponent <Links>().State;

                temp.modifiedObject = clone;

                temp.state = clone.GetComponent <Links>().State;



                var index = list.IndexOf(gameObject.transform);

                temp.index2 = index;
                ChainInspector.Add(index, clone);

                UndoHandler.commandUndoList.Add(temp);
                UndoHandler.commandRedoList.Clear();

                if (dragState == LinkState.Think || dragState == LinkState.Watch)
                {
                    clone.transform.Find("GoToDisplay").gameObject.SetActive(true);
                }
            }
            else
            {
                dragHandeler.itemBeingDragged.transform.Find("GoToDisplay").gameObject.SetActive(false);
                //ChainInspector.Remove(dragHandeler.itemBeingDragged);
            }

            ExecuteEvents.ExecuteHierarchy <IHasChanged>(gameObject, null, (x, y) => x.HasChanged());
        }
    }