diff --git a/tests/Avalonia.Controls.UnitTests/TreeViewTests.cs b/tests/Avalonia.Controls.UnitTests/TreeViewTests.cs index 7d290b1ec0..51300f343a 100644 --- a/tests/Avalonia.Controls.UnitTests/TreeViewTests.cs +++ b/tests/Avalonia.Controls.UnitTests/TreeViewTests.cs @@ -724,6 +724,86 @@ namespace Avalonia.Controls.UnitTests Assert.True(called); } + [Fact] + public void Removing_Selected_Root_Item_Should_Clear_Selection() + { + using var app = Start(); + var data = CreateTestTreeData(); + var target = CreateTarget(data: data); + var item = data[0]; + + target.SelectedItem = item; + + data.RemoveAt(0); + + Assert.Null(target.SelectedItem); + Assert.Empty(target.SelectedItems); + } + + [Fact] + public void Resetting_Root_Items_Should_Clear_Selection() + { + using var app = Start(); + var data = CreateTestTreeData(); + var target = CreateTarget(data: data); + var item = data[0]; + + target.SelectedItem = item; + + data.Clear(); + + Assert.Null(target.SelectedItem); + Assert.Empty(target.SelectedItems); + } + + [Fact] + public void Removing_Selected_Child_Item_Should_Clear_Selection() + { + using var app = Start(); + var data = CreateTestTreeData(); + var target = CreateTarget(data: data); + var item = data[0].Children[1]; + + target.SelectedItem = item; + + data[0].Children.RemoveAt(1); + + Assert.Null(target.SelectedItem); + Assert.Empty(target.SelectedItems); + } + + [Fact] + public void Replacing_Selected_Child_Item_Should_Clear_Selection() + { + using var app = Start(); + var data = CreateTestTreeData(); + var target = CreateTarget(data: data); + var item = data[0].Children[1]; + + target.SelectedItem = item; + + data[0].Children[1] = new Node(); + + Assert.Null(target.SelectedItem); + Assert.Empty(target.SelectedItems); + } + + [Fact] + public void Clearing_Child_Items_Should_Clear_Selection() + { + using var app = Start(); + var data = CreateTestTreeData(); + var target = CreateTarget(data: data); + var item = data[0].Children[1]; + + target.SelectedItem = item; + + data[0].Children.Clear(); + + Assert.Null(target.SelectedItem); + Assert.Empty(target.SelectedItems); + } + [Fact] public void SelectedItem_Should_Be_Valid_When_SelectedItemChanged_Event_Raised() {