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)); }
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); }
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 }); }
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()); } }