Browse Source

Create failing test for SelectedItems binding.

Steven Kirk 4 years ago
parent
commit
f9a6f5b1ec
1 changed files with 28 additions and 0 deletions
  1. 28 0
      tests/Avalonia.Controls.UnitTests/ListBoxTests.cs

+ 28 - 0
tests/Avalonia.Controls.UnitTests/ListBoxTests.cs

@@ -1,3 +1,4 @@
+using System.Collections.ObjectModel;
 using System.Linq;
 using System.Reactive.Subjects;
 using Avalonia.Collections;
@@ -457,6 +458,33 @@ namespace Avalonia.Controls.UnitTests
             }
         }
 
+        [Fact]
+        public void Initial_Binding_Of_SelectedItems_Should_Not_Cause_Write_To_SelectedItems()
+        {
+            var target = new ListBox
+            {
+                [!ListBox.ItemsProperty] = new Binding("Items"),
+                [!ListBox.SelectedItemsProperty] = new Binding("SelectedItems"),
+            };
+
+            var viewModel = new
+            {
+                Items = new[] { "Foo", "Bar", "Baz " },
+                SelectedItems = new ObservableCollection<string> { "Bar" },
+            };
+
+            var raised = 0;
+
+            viewModel.SelectedItems.CollectionChanged += (s, e) => ++raised;
+
+            target.DataContext = viewModel;
+
+            Assert.Equal(0, raised);
+            Assert.Equal(new[] { "Bar" }, viewModel.SelectedItems);
+            Assert.Equal(new[] { "Bar" }, target.SelectedItems);
+            Assert.Equal(new[] { "Bar" }, target.Selection.SelectedItems);
+        }
+
         private FuncControlTemplate ListBoxTemplate()
         {
             return new FuncControlTemplate<ListBox>((parent, scope) =>