From 2728be47eef5ce3f55e51d690688bf559e9a7074 Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Tue, 16 May 2023 18:32:01 +0200 Subject: [PATCH] Added failing treeview selection tests. --- .../TreeViewTests.cs | 80 +++++++++++++++++++ 1 file changed, 80 insertions(+) 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() {