浏览代码

Added failing treeview selection tests.

Steven Kirk 2 年之前
父节点
当前提交
2728be47ee
共有 1 个文件被更改,包括 80 次插入0 次删除
  1. 80 0
      tests/Avalonia.Controls.UnitTests/TreeViewTests.cs

+ 80 - 0
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()
         {