Fix diffing for consecutive text nodes

This commit is contained in:
Steve Sanderson 2018-01-23 09:43:14 -08:00
parent df321b9b8d
commit b049c7f574
2 changed files with 11 additions and 7 deletions

View File

@ -176,14 +176,11 @@ namespace Microsoft.Blazor.RenderTree
{
var oldText = oldTree[oldNodeIndex].TextContent;
var newText = newTree[newNodeIndex].TextContent;
if (string.Equals(oldText, newText, StringComparison.Ordinal))
{
siblingIndex++;
}
else
if (!string.Equals(oldText, newText, StringComparison.Ordinal))
{
Append(RenderTreeEdit.UpdateText(siblingIndex, newNodeIndex));
}
siblingIndex++;
break;
}

View File

@ -279,8 +279,10 @@ namespace Microsoft.Blazor.Test
var oldTree = new RenderTreeBuilder(new FakeRenderer());
var newTree = new RenderTreeBuilder(new FakeRenderer());
var diff = new RenderTreeDiffComputer();
oldTree.AddText(123, "old text");
newTree.AddText(123, "new text");
oldTree.AddText(123, "old text 1");
oldTree.AddText(182, "old text 2");
newTree.AddText(123, "new text 1");
newTree.AddText(182, "new text 2");
// Act
var result = diff.ComputeDifference(oldTree.GetNodes(), newTree.GetNodes());
@ -291,6 +293,11 @@ namespace Microsoft.Blazor.Test
{
AssertEdit(entry, RenderTreeEditType.UpdateText, 0);
Assert.Equal(0, entry.NewTreeIndex);
},
entry =>
{
AssertEdit(entry, RenderTreeEditType.UpdateText, 1);
Assert.Equal(1, entry.NewTreeIndex);
});
}