public void DocumentChanges_Trigger_InvalidateLayout() { var docView = Substitute.For <IDocumentView <ITextDocument> >(); var edit = Substitute.For <IElementEdit>(); var parentView = Substitute.For <ITextView <ITextDocument> >(); var chunk = new BranchImpl(Substitute.For <ITextNode>(), styleSystem); chunk.AddNotify(parentView); chunk.Arrange(new Rectangle(10, 20, 200, 50)); chunk.LayoutInvalid.Should().Be(false); chunk.OnNodeStructureChanged(docView, edit); chunk.Node.Should().Be(edit.NewElement); parentView.Received().InvalidateLayout(); }
public void Edit_Events_Update_Nodes() { var replacementChild1 = CreateView(); var replacementChild2 = CreateView(); var factory = doc.ViewFactory; factory.CreateFor(replacementChild1.Node, Arg.Any <IStyle>()).Returns(replacementChild1); factory.CreateFor(replacementChild2.Node, Arg.Any <IStyle>()).Returns(replacementChild2); var child1 = CreateView(); var child2 = CreateView(); var child3 = CreateView(); var branch = new BranchImpl(Substitute.For <ITextNode>(), styleSystem); branch.Add(child1); branch.Add(child2); branch.Add(child3); var removedNodesArray = new[] { child2.Node }; var addedNodesArray = new[] { replacementChild1.Node, replacementChild2.Node }; var edit = Substitute.For <IElementEdit>(); edit.Index.Returns(1); edit.NewElement.Returns(Substitute.For <ITextNode>()); edit.OldElement.Returns(branch.Node); edit.RemovedNodes.Returns(removedNodesArray); edit.AddedNodes.Returns(addedNodesArray); branch.OnNodeStructureChanged(doc, edit); branch.Node.Should().Be(edit.NewElement); branch.Count.Should().Be(4); branch[0].Should().BeSameAs(child1); branch[1].Should().BeSameAs(replacementChild1); branch[2].Should().BeSameAs(replacementChild2); branch[3].Should().BeSameAs(child3); factory.Received().CreateFor(replacementChild1.Node, Arg.Any <IStyle>()); factory.Received().CreateFor(replacementChild2.Node, Arg.Any <IStyle>()); }