Browse Source

Fix Tests.

Takoooooo 3 years ago
parent
commit
fe79cee672

+ 77 - 56
tests/Avalonia.Controls.UnitTests/ListBoxTests_Single.cs

@@ -5,10 +5,12 @@ using Avalonia.Controls.Presenters;
 using Avalonia.Controls.Templates;
 using Avalonia.Data;
 using Avalonia.Input;
+using Avalonia.Input.Platform;
 using Avalonia.LogicalTree;
 using Avalonia.Styling;
 using Avalonia.UnitTests;
 using Avalonia.VisualTree;
+using Moq;
 using Xunit;
 
 namespace Avalonia.Controls.UnitTests
@@ -60,104 +62,123 @@ namespace Avalonia.Controls.UnitTests
         [Fact]
         public void Clicking_Item_Should_Select_It()
         {
-            var target = new ListBox
+            using (UnitTestApplication.Start())
             {
-                Template = new FuncControlTemplate(CreateListBoxTemplate),
-                Items = new[] { "Foo", "Bar", "Baz " },
-            };
-
-            ApplyTemplate(target);
-            _mouse.Click(target.Presenter.Panel.Children[0]);
-
-            Assert.Equal(0, target.SelectedIndex);
+                var target = new ListBox
+                {
+                    Template = new FuncControlTemplate(CreateListBoxTemplate),
+                    Items = new[] { "Foo", "Bar", "Baz " },
+                };
+                AvaloniaLocator.CurrentMutable.Bind<PlatformHotkeyConfiguration>().ToConstant(new Mock<PlatformHotkeyConfiguration>().Object);
+                ApplyTemplate(target);
+                _mouse.Click(target.Presenter.Panel.Children[0]);
+
+                Assert.Equal(0, target.SelectedIndex);
+            }
         }
 
         [Fact]
         public void Clicking_Selected_Item_Should_Not_Deselect_It()
         {
-            var target = new ListBox
+            using (UnitTestApplication.Start())
             {
-                Template = new FuncControlTemplate(CreateListBoxTemplate),
-                Items = new[] { "Foo", "Bar", "Baz " },
-            };
-
-            ApplyTemplate(target);
-            target.SelectedIndex = 0;
+                var target = new ListBox
+                {
+                    Template = new FuncControlTemplate(CreateListBoxTemplate),
+                    Items = new[] { "Foo", "Bar", "Baz " },
+                };
+                AvaloniaLocator.CurrentMutable.Bind<PlatformHotkeyConfiguration>().ToConstant(new Mock<PlatformHotkeyConfiguration>().Object);
+                ApplyTemplate(target);
+                target.SelectedIndex = 0;
 
-            _mouse.Click(target.Presenter.Panel.Children[0]);
+                _mouse.Click(target.Presenter.Panel.Children[0]);
 
-            Assert.Equal(0, target.SelectedIndex);
+                Assert.Equal(0, target.SelectedIndex);
+            }
         }
 
         [Fact]
         public void Clicking_Item_Should_Select_It_When_SelectionMode_Toggle()
         {
-            var target = new ListBox
+            using (UnitTestApplication.Start())
             {
-                Template = new FuncControlTemplate(CreateListBoxTemplate),
-                Items = new[] { "Foo", "Bar", "Baz " },
-                SelectionMode = SelectionMode.Single | SelectionMode.Toggle,
-            };
-
-            ApplyTemplate(target);
+                var target = new ListBox
+                {
+                    Template = new FuncControlTemplate(CreateListBoxTemplate),
+                    Items = new[] { "Foo", "Bar", "Baz " },
+                    SelectionMode = SelectionMode.Single | SelectionMode.Toggle,
+                };
+                AvaloniaLocator.CurrentMutable.Bind<PlatformHotkeyConfiguration>().ToConstant(new Mock<PlatformHotkeyConfiguration>().Object);
+                ApplyTemplate(target);
 
-            _mouse.Click(target.Presenter.Panel.Children[0]);
+                _mouse.Click(target.Presenter.Panel.Children[0]);
 
-            Assert.Equal(0, target.SelectedIndex);
+                Assert.Equal(0, target.SelectedIndex);
+            }
         }
 
         [Fact]
         public void Clicking_Selected_Item_Should_Deselect_It_When_SelectionMode_Toggle()
         {
-            var target = new ListBox
+            using (UnitTestApplication.Start())
             {
-                Template = new FuncControlTemplate(CreateListBoxTemplate),
-                Items = new[] { "Foo", "Bar", "Baz " },
-                SelectionMode = SelectionMode.Toggle,
-            };
+                var target = new ListBox
+                {
+                    Template = new FuncControlTemplate(CreateListBoxTemplate),
+                    Items = new[] { "Foo", "Bar", "Baz " },
+                    SelectionMode = SelectionMode.Toggle,
+                };
 
-            ApplyTemplate(target);
-            target.SelectedIndex = 0;
+                AvaloniaLocator.CurrentMutable.Bind<PlatformHotkeyConfiguration>().ToConstant(new Mock<PlatformHotkeyConfiguration>().Object);
+                ApplyTemplate(target);
+                target.SelectedIndex = 0;
 
-            _mouse.Click(target.Presenter.Panel.Children[0]);
+                _mouse.Click(target.Presenter.Panel.Children[0]);
 
-            Assert.Equal(-1, target.SelectedIndex);
+                Assert.Equal(-1, target.SelectedIndex);
+            }
         }
 
         [Fact]
         public void Clicking_Selected_Item_Should_Not_Deselect_It_When_SelectionMode_ToggleAlwaysSelected()
         {
-            var target = new ListBox
+            using (UnitTestApplication.Start())
             {
-                Template = new FuncControlTemplate(CreateListBoxTemplate),
-                Items = new[] { "Foo", "Bar", "Baz " },
-                SelectionMode = SelectionMode.Toggle | SelectionMode.AlwaysSelected,
-            };
-
-            ApplyTemplate(target);
-            target.SelectedIndex = 0;
+                var target = new ListBox
+                {
+                    Template = new FuncControlTemplate(CreateListBoxTemplate),
+                    Items = new[] { "Foo", "Bar", "Baz " },
+                    SelectionMode = SelectionMode.Toggle | SelectionMode.AlwaysSelected,
+                };
+                AvaloniaLocator.CurrentMutable.Bind<PlatformHotkeyConfiguration>().ToConstant(new Mock<PlatformHotkeyConfiguration>().Object);
+                ApplyTemplate(target);
+                target.SelectedIndex = 0;
 
-            _mouse.Click(target.Presenter.Panel.Children[0]);
+                _mouse.Click(target.Presenter.Panel.Children[0]);
 
-            Assert.Equal(0, target.SelectedIndex);
+                Assert.Equal(0, target.SelectedIndex);
+            }
         }
 
         [Fact]
         public void Clicking_Another_Item_Should_Select_It_When_SelectionMode_Toggle()
         {
-            var target = new ListBox
+            using (UnitTestApplication.Start())
             {
-                Template = new FuncControlTemplate(CreateListBoxTemplate),
-                Items = new[] { "Foo", "Bar", "Baz " },
-                SelectionMode = SelectionMode.Single | SelectionMode.Toggle,
-            };
-
-            ApplyTemplate(target);
-            target.SelectedIndex = 1;
+                var target = new ListBox
+                {
+                    Template = new FuncControlTemplate(CreateListBoxTemplate),
+                    Items = new[] { "Foo", "Bar", "Baz " },
+                    SelectionMode = SelectionMode.Single | SelectionMode.Toggle,
+                };
+                AvaloniaLocator.CurrentMutable.Bind<PlatformHotkeyConfiguration>().ToConstant(new Mock<PlatformHotkeyConfiguration>().Object);
+                ApplyTemplate(target);
+                target.SelectedIndex = 1;
 
-            _mouse.Click(target.Presenter.Panel.Children[0]);
+                _mouse.Click(target.Presenter.Panel.Children[0]);
 
-            Assert.Equal(0, target.SelectedIndex);
+                Assert.Equal(0, target.SelectedIndex);
+            }
         }
 
         [Fact]

+ 51 - 38
tests/Avalonia.Controls.UnitTests/Primitives/SelectingItemsControlTests.cs

@@ -14,6 +14,7 @@ using Avalonia.Controls.Selection;
 using Avalonia.Controls.Templates;
 using Avalonia.Data;
 using Avalonia.Input;
+using Avalonia.Input.Platform;
 using Avalonia.Interactivity;
 using Avalonia.Markup.Data;
 using Avalonia.Platform;
@@ -1115,42 +1116,48 @@ namespace Avalonia.Controls.UnitTests.Primitives
         [Fact]
         public void Setting_SelectedItem_With_Pointer_Should_Set_TabOnceActiveElement()
         {
-            var target = new ListBox
+            using (UnitTestApplication.Start())
             {
-                Template = Template(),
-                Items = new[] { "Foo", "Bar", "Baz " },
-            };
-
-            Prepare(target);
-            _helper.Down((Interactive)target.Presenter.Panel.Children[1]);
+                var target = new ListBox
+                {
+                    Template = Template(),
+                    Items = new[] { "Foo", "Bar", "Baz " },
+                };
+                AvaloniaLocator.CurrentMutable.Bind<PlatformHotkeyConfiguration>().ToConstant(new Mock<PlatformHotkeyConfiguration>().Object);
+                Prepare(target);
+                _helper.Down((Interactive)target.Presenter.Panel.Children[1]);
 
-            var panel = target.Presenter.Panel;
+                var panel = target.Presenter.Panel;
 
-            Assert.Equal(
-                KeyboardNavigation.GetTabOnceActiveElement((InputElement)panel),
-                panel.Children[1]);
+                Assert.Equal(
+                    KeyboardNavigation.GetTabOnceActiveElement((InputElement)panel),
+                    panel.Children[1]);
+            }
         }
 
         [Fact]
         public void Removing_SelectedItem_Should_Clear_TabOnceActiveElement()
         {
-            var items = new ObservableCollection<string>(new[] { "Foo", "Bar", "Baz " });
-
-            var target = new ListBox
+            using (UnitTestApplication.Start())
             {
-                Template = Template(),
-                Items = items,
-            };
+                var items = new ObservableCollection<string>(new[] { "Foo", "Bar", "Baz " });
 
-            Prepare(target);
+                var target = new ListBox
+                {
+                    Template = Template(),
+                    Items = items,
+                };
+                AvaloniaLocator.CurrentMutable.Bind<PlatformHotkeyConfiguration>().ToConstant(new Mock<PlatformHotkeyConfiguration>().Object);
+                Prepare(target);
 
-            _helper.Down(target.Presenter.Panel.Children[1]);
+                _helper.Down(target.Presenter.Panel.Children[1]);
 
-            items.RemoveAt(1);
+                items.RemoveAt(1);
 
-            var panel = target.Presenter.Panel;
+                var panel = target.Presenter.Panel;
 
-            Assert.Null(KeyboardNavigation.GetTabOnceActiveElement((InputElement)panel));
+                Assert.Null(KeyboardNavigation.GetTabOnceActiveElement((InputElement)panel));
+            }
         }
 
         [Fact]
@@ -1230,31 +1237,37 @@ namespace Avalonia.Controls.UnitTests.Primitives
         [Fact]
         public void Should_Select_Correct_Item_When_Duplicate_Items_Are_Present()
         {
-            var target = new ListBox
+            using (UnitTestApplication.Start())
             {
-                Template = Template(),
-                Items = new[] { "Foo", "Bar", "Baz", "Foo", "Bar", "Baz" },
-            };
-
-            Prepare(target);
-            _helper.Down((Interactive)target.Presenter.Panel.Children[3]);
+                var target = new ListBox
+                {
+                    Template = Template(),
+                    Items = new[] { "Foo", "Bar", "Baz", "Foo", "Bar", "Baz" },
+                };
+                AvaloniaLocator.CurrentMutable.Bind<PlatformHotkeyConfiguration>().ToConstant(new Mock<PlatformHotkeyConfiguration>().Object);
+                Prepare(target);
+                _helper.Down((Interactive)target.Presenter.Panel.Children[3]);
 
-            Assert.Equal(3, target.SelectedIndex);
+                Assert.Equal(3, target.SelectedIndex);
+            }
         }
 
         [Fact]
         public void Should_Apply_Selected_Pseudoclass_To_Correct_Item_When_Duplicate_Items_Are_Present()
         {
-            var target = new ListBox
+            using (UnitTestApplication.Start())
             {
-                Template = Template(),
-                Items = new[] { "Foo", "Bar", "Baz", "Foo", "Bar", "Baz" },
-            };
-
-            Prepare(target);
-            _helper.Down((Interactive)target.Presenter.Panel.Children[3]);
+                var target = new ListBox
+                {
+                    Template = Template(),
+                    Items = new[] { "Foo", "Bar", "Baz", "Foo", "Bar", "Baz" },
+                };
+                AvaloniaLocator.CurrentMutable.Bind<PlatformHotkeyConfiguration>().ToConstant(new Mock<PlatformHotkeyConfiguration>().Object);
+                Prepare(target);
+                _helper.Down((Interactive)target.Presenter.Panel.Children[3]);
 
-            Assert.Equal(new[] { ":pressed", ":selected" }, target.Presenter.Panel.Children[3].Classes);
+                Assert.Equal(new[] { ":pressed", ":selected" }, target.Presenter.Panel.Children[3].Classes);
+            }
         }
 
         [Fact]

+ 294 - 248
tests/Avalonia.Controls.UnitTests/Primitives/SelectingItemsControlTests_Multiple.cs

@@ -10,8 +10,10 @@ using Avalonia.Controls.Selection;
 using Avalonia.Controls.Templates;
 using Avalonia.Data;
 using Avalonia.Input;
+using Avalonia.Input.Platform;
 using Avalonia.Interactivity;
 using Avalonia.UnitTests;
+using Moq;
 using Xunit;
 
 namespace Avalonia.Controls.UnitTests.Primitives
@@ -701,261 +703,290 @@ namespace Avalonia.Controls.UnitTests.Primitives
         [Fact]
         public void Shift_Selecting_From_No_Selection_Selects_From_Start()
         {
-            var target = new ListBox
+            using (UnitTestApplication.Start())
             {
-                Template = Template(),
-                Items = new[] { "Foo", "Bar", "Baz" },
-                SelectionMode = SelectionMode.Multiple,
-            };
-
-            target.ApplyTemplate();
-            target.Presenter.ApplyTemplate();
-            _helper.Click((Interactive)target.Presenter.Panel.Children[2], modifiers: KeyModifiers.Shift);
-
-            var panel = target.Presenter.Panel;
-
-            Assert.Equal(new[] { "Foo", "Bar", "Baz" }, target.SelectedItems);
-            Assert.Equal(new[] { 0, 1, 2 }, SelectedContainers(target));
+                var target = new ListBox
+                {
+                    Template = Template(),
+                    Items = new[] { "Foo", "Bar", "Baz" },
+                    SelectionMode = SelectionMode.Multiple,
+                };
+                AvaloniaLocator.CurrentMutable.Bind<PlatformHotkeyConfiguration>().ToConstant(new Mock<PlatformHotkeyConfiguration>().Object);
+                target.ApplyTemplate();
+                target.Presenter.ApplyTemplate();
+                _helper.Click((Interactive)target.Presenter.Panel.Children[2], modifiers: KeyModifiers.Shift);
+
+                var panel = target.Presenter.Panel;
+
+                Assert.Equal(new[] { "Foo", "Bar", "Baz" }, target.SelectedItems);
+                Assert.Equal(new[] { 0, 1, 2 }, SelectedContainers(target));
+            }
         }
 
         [Fact]
         public void Ctrl_Selecting_Raises_SelectionChanged_Events()
         {
-            var target = new ListBox
+            using (UnitTestApplication.Start())
             {
-                Template = Template(),
-                Items = new[] { "Foo", "Bar", "Baz", "Qux" },
-                SelectionMode = SelectionMode.Multiple,
-            };
-
-            target.ApplyTemplate();
-            target.Presenter.ApplyTemplate();
+                var target = new ListBox
+                {
+                    Template = Template(),
+                    Items = new[] { "Foo", "Bar", "Baz", "Qux" },
+                    SelectionMode = SelectionMode.Multiple,
+                };
+                AvaloniaLocator.CurrentMutable.Bind<PlatformHotkeyConfiguration>().ToConstant(new Mock<PlatformHotkeyConfiguration>().Object);
+                target.ApplyTemplate();
+                target.Presenter.ApplyTemplate();
 
-            SelectionChangedEventArgs receivedArgs = null;
+                SelectionChangedEventArgs receivedArgs = null;
 
-            target.SelectionChanged += (_, args) => receivedArgs = args;
+                target.SelectionChanged += (_, args) => receivedArgs = args;
 
-            void VerifyAdded(string selection)
-            {
-                Assert.NotNull(receivedArgs);
-                Assert.Equal(new[] { selection }, receivedArgs.AddedItems);
-                Assert.Empty(receivedArgs.RemovedItems);
-            }
+                void VerifyAdded(string selection)
+                {
+                    Assert.NotNull(receivedArgs);
+                    Assert.Equal(new[] { selection }, receivedArgs.AddedItems);
+                    Assert.Empty(receivedArgs.RemovedItems);
+                }
 
-            void VerifyRemoved(string selection)
-            {
-                Assert.NotNull(receivedArgs);
-                Assert.Equal(new[] { selection }, receivedArgs.RemovedItems);
-                Assert.Empty(receivedArgs.AddedItems);
-            }
+                void VerifyRemoved(string selection)
+                {
+                    Assert.NotNull(receivedArgs);
+                    Assert.Equal(new[] { selection }, receivedArgs.RemovedItems);
+                    Assert.Empty(receivedArgs.AddedItems);
+                }
 
-            _helper.Click((Interactive)target.Presenter.Panel.Children[1]);
+                _helper.Click((Interactive)target.Presenter.Panel.Children[1]);
 
-            VerifyAdded("Bar");
+                VerifyAdded("Bar");
 
-            receivedArgs = null;
-            _helper.Click((Interactive)target.Presenter.Panel.Children[2], modifiers: KeyModifiers.Control);
+                receivedArgs = null;
+                _helper.Click((Interactive)target.Presenter.Panel.Children[2], modifiers: KeyModifiers.Control);
 
-            VerifyAdded("Baz");
+                VerifyAdded("Baz");
 
-            receivedArgs = null;
-            _helper.Click((Interactive)target.Presenter.Panel.Children[3], modifiers: KeyModifiers.Control);
+                receivedArgs = null;
+                _helper.Click((Interactive)target.Presenter.Panel.Children[3], modifiers: KeyModifiers.Control);
 
-            VerifyAdded("Qux");
+                VerifyAdded("Qux");
 
-            receivedArgs = null;
-            _helper.Click((Interactive)target.Presenter.Panel.Children[1], modifiers: KeyModifiers.Control);
+                receivedArgs = null;
+                _helper.Click((Interactive)target.Presenter.Panel.Children[1], modifiers: KeyModifiers.Control);
 
-            VerifyRemoved("Bar");
+                VerifyRemoved("Bar");
+            }
         }
 
         [Fact]
         public void Ctrl_Selecting_SelectedItem_With_Multiple_Selection_Active_Sets_SelectedItem_To_Next_Selection()
         {
-            var target = new ListBox
+            using (UnitTestApplication.Start())
             {
-                Template = Template(),
-                Items = new[] { "Foo", "Bar", "Baz", "Qux" },
-                SelectionMode = SelectionMode.Multiple,
-            };
-
-            target.ApplyTemplate();
-            target.Presenter.ApplyTemplate();
-            _helper.Click((Interactive)target.Presenter.Panel.Children[1]);
-            _helper.Click((Interactive)target.Presenter.Panel.Children[2], modifiers: KeyModifiers.Control);
-            _helper.Click((Interactive)target.Presenter.Panel.Children[3], modifiers: KeyModifiers.Control);
-
-            Assert.Equal(1, target.SelectedIndex);
-            Assert.Equal("Bar", target.SelectedItem);
-            Assert.Equal(new[] { "Bar", "Baz", "Qux" }, target.SelectedItems);
-
-            _helper.Click((Interactive)target.Presenter.Panel.Children[1], modifiers: KeyModifiers.Control);
-
-            Assert.Equal(2, target.SelectedIndex);
-            Assert.Equal("Baz", target.SelectedItem);
-            Assert.Equal(new[] { "Baz", "Qux" }, target.SelectedItems);
+                var target = new ListBox
+                {
+                    Template = Template(),
+                    Items = new[] { "Foo", "Bar", "Baz", "Qux" },
+                    SelectionMode = SelectionMode.Multiple,
+                };
+                AvaloniaLocator.CurrentMutable.Bind<PlatformHotkeyConfiguration>().ToConstant(new Mock<PlatformHotkeyConfiguration>().Object);
+                target.ApplyTemplate();
+                target.Presenter.ApplyTemplate();
+                _helper.Click((Interactive)target.Presenter.Panel.Children[1]);
+                _helper.Click((Interactive)target.Presenter.Panel.Children[2], modifiers: KeyModifiers.Control);
+                _helper.Click((Interactive)target.Presenter.Panel.Children[3], modifiers: KeyModifiers.Control);
+
+                Assert.Equal(1, target.SelectedIndex);
+                Assert.Equal("Bar", target.SelectedItem);
+                Assert.Equal(new[] { "Bar", "Baz", "Qux" }, target.SelectedItems);
+
+                _helper.Click((Interactive)target.Presenter.Panel.Children[1], modifiers: KeyModifiers.Control);
+
+                Assert.Equal(2, target.SelectedIndex);
+                Assert.Equal("Baz", target.SelectedItem);
+                Assert.Equal(new[] { "Baz", "Qux" }, target.SelectedItems);
+            }
         }
 
         [Fact]
         public void Ctrl_Selecting_Non_SelectedItem_With_Multiple_Selection_Active_Leaves_SelectedItem_The_Same()
         {
-            var target = new ListBox
+            using (UnitTestApplication.Start())
             {
-                Template = Template(),
-                Items = new[] { "Foo", "Bar", "Baz" },
-                SelectionMode = SelectionMode.Multiple,
-            };
+                var target = new ListBox
+                {
+                    Template = Template(),
+                    Items = new[] { "Foo", "Bar", "Baz" },
+                    SelectionMode = SelectionMode.Multiple,
+                };
+                AvaloniaLocator.CurrentMutable.Bind<PlatformHotkeyConfiguration>().ToConstant(new Mock<PlatformHotkeyConfiguration>().Object);
 
-            target.ApplyTemplate();
-            target.Presenter.ApplyTemplate();
-            _helper.Click((Interactive)target.Presenter.Panel.Children[1]);
-            _helper.Click((Interactive)target.Presenter.Panel.Children[2], modifiers: KeyModifiers.Control);
+                target.ApplyTemplate();
+                target.Presenter.ApplyTemplate();
+                _helper.Click((Interactive)target.Presenter.Panel.Children[1]);
+                _helper.Click((Interactive)target.Presenter.Panel.Children[2], modifiers: KeyModifiers.Control);
 
-            Assert.Equal(1, target.SelectedIndex);
-            Assert.Equal("Bar", target.SelectedItem);
+                Assert.Equal(1, target.SelectedIndex);
+                Assert.Equal("Bar", target.SelectedItem);
 
-            _helper.Click((Interactive)target.Presenter.Panel.Children[2], modifiers: KeyModifiers.Control);
+                _helper.Click((Interactive)target.Presenter.Panel.Children[2], modifiers: KeyModifiers.Control);
 
-            Assert.Equal(1, target.SelectedIndex);
-            Assert.Equal("Bar", target.SelectedItem);
+                Assert.Equal(1, target.SelectedIndex);
+                Assert.Equal("Bar", target.SelectedItem);
+            }
         }
 
         [Fact]
         public void Should_Ctrl_Select_Correct_Item_When_Duplicate_Items_Are_Present()
         {
-            var target = new ListBox
+            using (UnitTestApplication.Start())
             {
-                Template = Template(),
-                Items = new[] { "Foo", "Bar", "Baz", "Foo", "Bar", "Baz" },
-                SelectionMode = SelectionMode.Multiple,
-            };
-
-            target.ApplyTemplate();
-            target.Presenter.ApplyTemplate();
-            _helper.Click((Interactive)target.Presenter.Panel.Children[3]);
-            _helper.Click((Interactive)target.Presenter.Panel.Children[4], modifiers: KeyModifiers.Control);
-
-            var panel = target.Presenter.Panel;
-
-            Assert.Equal(new[] { "Foo", "Bar" }, target.SelectedItems);
-            Assert.Equal(new[] { 3, 4 }, SelectedContainers(target));
+                var target = new ListBox
+                {
+                    Template = Template(),
+                    Items = new[] { "Foo", "Bar", "Baz", "Foo", "Bar", "Baz" },
+                    SelectionMode = SelectionMode.Multiple,
+                };
+                AvaloniaLocator.CurrentMutable.Bind<PlatformHotkeyConfiguration>().ToConstant(new Mock<PlatformHotkeyConfiguration>().Object);
+                target.ApplyTemplate();
+                target.Presenter.ApplyTemplate();
+                _helper.Click((Interactive)target.Presenter.Panel.Children[3]);
+                _helper.Click((Interactive)target.Presenter.Panel.Children[4], modifiers: KeyModifiers.Control);
+
+                var panel = target.Presenter.Panel;
+
+                Assert.Equal(new[] { "Foo", "Bar" }, target.SelectedItems);
+                Assert.Equal(new[] { 3, 4 }, SelectedContainers(target));
+            }
         }
 
         [Fact]
         public void Should_Shift_Select_Correct_Item_When_Duplicates_Are_Present()
         {
-            var target = new ListBox
+            using (UnitTestApplication.Start())
             {
-                Template = Template(),
-                Items = new[] { "Foo", "Bar", "Baz", "Foo", "Bar", "Baz" },
-                SelectionMode = SelectionMode.Multiple,
-            };
-
-            target.ApplyTemplate();
-            target.Presenter.ApplyTemplate();
-            _helper.Click((Interactive)target.Presenter.Panel.Children[3]);
-            _helper.Click((Interactive)target.Presenter.Panel.Children[5], modifiers: KeyModifiers.Shift);
-
-            var panel = target.Presenter.Panel;
-
-            Assert.Equal(new[] { "Foo", "Bar", "Baz" }, target.SelectedItems);
-            Assert.Equal(new[] { 3, 4, 5 }, SelectedContainers(target));
+                var target = new ListBox
+                {
+                    Template = Template(),
+                    Items = new[] { "Foo", "Bar", "Baz", "Foo", "Bar", "Baz" },
+                    SelectionMode = SelectionMode.Multiple,
+                };
+                AvaloniaLocator.CurrentMutable.Bind<PlatformHotkeyConfiguration>().ToConstant(new Mock<PlatformHotkeyConfiguration>().Object);
+                target.ApplyTemplate();
+                target.Presenter.ApplyTemplate();
+                _helper.Click((Interactive)target.Presenter.Panel.Children[3]);
+                _helper.Click((Interactive)target.Presenter.Panel.Children[5], modifiers: KeyModifiers.Shift);
+
+                var panel = target.Presenter.Panel;
+
+                Assert.Equal(new[] { "Foo", "Bar", "Baz" }, target.SelectedItems);
+                Assert.Equal(new[] { 3, 4, 5 }, SelectedContainers(target));
+            }
         }
 
         [Fact]
         public void Can_Shift_Select_All_Items_When_Duplicates_Are_Present()
         {
-            var target = new ListBox
+            using (UnitTestApplication.Start())
             {
-                Template = Template(),
-                Items = new[] { "Foo", "Bar", "Baz", "Foo", "Bar", "Baz" },
-                SelectionMode = SelectionMode.Multiple,
-            };
-
-            target.ApplyTemplate();
-            target.Presenter.ApplyTemplate();
-            _helper.Click((Interactive)target.Presenter.Panel.Children[0]);
-            _helper.Click((Interactive)target.Presenter.Panel.Children[5], modifiers: KeyModifiers.Shift);
-
-            var panel = target.Presenter.Panel;
-
-            Assert.Equal(new[] { "Foo", "Bar", "Baz", "Foo", "Bar", "Baz" }, target.SelectedItems);
-            Assert.Equal(new[] { 0, 1, 2, 3, 4, 5 }, SelectedContainers(target));
+                var target = new ListBox
+                {
+                    Template = Template(),
+                    Items = new[] { "Foo", "Bar", "Baz", "Foo", "Bar", "Baz" },
+                    SelectionMode = SelectionMode.Multiple,
+                };
+                AvaloniaLocator.CurrentMutable.Bind<PlatformHotkeyConfiguration>().ToConstant(new Mock<PlatformHotkeyConfiguration>().Object);
+                target.ApplyTemplate();
+                target.Presenter.ApplyTemplate();
+                _helper.Click((Interactive)target.Presenter.Panel.Children[0]);
+                _helper.Click((Interactive)target.Presenter.Panel.Children[5], modifiers: KeyModifiers.Shift);
+
+                var panel = target.Presenter.Panel;
+
+                Assert.Equal(new[] { "Foo", "Bar", "Baz", "Foo", "Bar", "Baz" }, target.SelectedItems);
+                Assert.Equal(new[] { 0, 1, 2, 3, 4, 5 }, SelectedContainers(target));
+            }
         }
 
         [Fact]
         public void Shift_Selecting_Raises_SelectionChanged_Events()
         {
-            var target = new ListBox
+            using (UnitTestApplication.Start())
             {
-                Template = Template(),
-                Items = new[] { "Foo", "Bar", "Baz", "Qux" },
-                SelectionMode = SelectionMode.Multiple,
-            };
-
-            target.ApplyTemplate();
-            target.Presenter.ApplyTemplate();
+                var target = new ListBox
+                {
+                    Template = Template(),
+                    Items = new[] { "Foo", "Bar", "Baz", "Qux" },
+                    SelectionMode = SelectionMode.Multiple,
+                };
+                AvaloniaLocator.CurrentMutable.Bind<PlatformHotkeyConfiguration>().ToConstant(new Mock<PlatformHotkeyConfiguration>().Object);
+                target.ApplyTemplate();
+                target.Presenter.ApplyTemplate();
 
-            SelectionChangedEventArgs receivedArgs = null;
+                SelectionChangedEventArgs receivedArgs = null;
 
-            target.SelectionChanged += (_, args) => receivedArgs = args;
+                target.SelectionChanged += (_, args) => receivedArgs = args;
 
-            void VerifyAdded(params string[] selection)
-            {
-                Assert.NotNull(receivedArgs);
-                Assert.Equal(selection, receivedArgs.AddedItems);
-                Assert.Empty(receivedArgs.RemovedItems);
-            }
+                void VerifyAdded(params string[] selection)
+                {
+                    Assert.NotNull(receivedArgs);
+                    Assert.Equal(selection, receivedArgs.AddedItems);
+                    Assert.Empty(receivedArgs.RemovedItems);
+                }
 
-            void VerifyRemoved(string selection)
-            {
-                Assert.NotNull(receivedArgs);
-                Assert.Equal(new[] { selection }, receivedArgs.RemovedItems);
-                Assert.Empty(receivedArgs.AddedItems);
-            }
+                void VerifyRemoved(string selection)
+                {
+                    Assert.NotNull(receivedArgs);
+                    Assert.Equal(new[] { selection }, receivedArgs.RemovedItems);
+                    Assert.Empty(receivedArgs.AddedItems);
+                }
 
-            _helper.Click((Interactive)target.Presenter.Panel.Children[1]);
+                _helper.Click((Interactive)target.Presenter.Panel.Children[1]);
 
-            VerifyAdded("Bar");
+                VerifyAdded("Bar");
 
-            receivedArgs = null;
-            _helper.Click((Interactive)target.Presenter.Panel.Children[3], modifiers: KeyModifiers.Shift);
+                receivedArgs = null;
+                _helper.Click((Interactive)target.Presenter.Panel.Children[3], modifiers: KeyModifiers.Shift);
 
-            VerifyAdded("Baz" ,"Qux");
+                VerifyAdded("Baz", "Qux");
 
-            receivedArgs = null;
-            _helper.Click((Interactive)target.Presenter.Panel.Children[2], modifiers: KeyModifiers.Shift);
+                receivedArgs = null;
+                _helper.Click((Interactive)target.Presenter.Panel.Children[2], modifiers: KeyModifiers.Shift);
 
-            VerifyRemoved("Qux");
+                VerifyRemoved("Qux");
+            }
         }
 
         [Fact]
         public void Duplicate_Items_Are_Added_To_SelectedItems_In_Order()
         {
-            var target = new ListBox
+            using (UnitTestApplication.Start())
             {
-                Template = Template(),
-                Items = new[] { "Foo", "Bar", "Baz", "Foo", "Bar", "Baz" },
-                SelectionMode = SelectionMode.Multiple,
-            };
+                var target = new ListBox
+                {
+                    Template = Template(),
+                    Items = new[] { "Foo", "Bar", "Baz", "Foo", "Bar", "Baz" },
+                    SelectionMode = SelectionMode.Multiple,
+                };
 
-            target.ApplyTemplate();
-            target.Presenter.ApplyTemplate();
-            _helper.Click((Interactive)target.Presenter.Panel.Children[0]);
+                AvaloniaLocator.CurrentMutable.Bind<PlatformHotkeyConfiguration>().ToConstant(new Mock<PlatformHotkeyConfiguration>().Object);
+                target.ApplyTemplate();
+                target.Presenter.ApplyTemplate();
+                _helper.Click((Interactive)target.Presenter.Panel.Children[0]);
 
-            Assert.Equal(new[] { "Foo" }, target.SelectedItems);
+                Assert.Equal(new[] { "Foo" }, target.SelectedItems);
 
-            _helper.Click((Interactive)target.Presenter.Panel.Children[4], modifiers: KeyModifiers.Control);
+                _helper.Click((Interactive)target.Presenter.Panel.Children[4], modifiers: KeyModifiers.Control);
 
-            Assert.Equal(new[] { "Foo", "Bar" }, target.SelectedItems);
+                Assert.Equal(new[] { "Foo", "Bar" }, target.SelectedItems);
 
-            _helper.Click((Interactive)target.Presenter.Panel.Children[3], modifiers: KeyModifiers.Control);
+                _helper.Click((Interactive)target.Presenter.Panel.Children[3], modifiers: KeyModifiers.Control);
 
-            Assert.Equal(new[] { "Foo", "Bar", "Foo" }, target.SelectedItems);
+                Assert.Equal(new[] { "Foo", "Bar", "Foo" }, target.SelectedItems);
 
-            _helper.Click((Interactive)target.Presenter.Panel.Children[1], modifiers: KeyModifiers.Control);
+                _helper.Click((Interactive)target.Presenter.Panel.Children[1], modifiers: KeyModifiers.Control);
 
-            Assert.Equal(new[] { "Foo", "Bar", "Foo", "Bar" }, target.SelectedItems);
+                Assert.Equal(new[] { "Foo", "Bar", "Foo", "Bar" }, target.SelectedItems);
+            }
         }
 
         [Fact]
@@ -1158,70 +1189,79 @@ namespace Avalonia.Controls.UnitTests.Primitives
         [Fact]
         public void Left_Click_On_SelectedItem_Should_Clear_Existing_Selection()
         {
-            var target = new ListBox
+            using (UnitTestApplication.Start())
             {
-                Template = Template(),
-                Items = new[] { "Foo", "Bar", "Baz" },
-                ItemTemplate = new FuncDataTemplate<string>((x, _) => new TextBlock { Width = 20, Height = 10 }),
-                SelectionMode = SelectionMode.Multiple,
-            };
-
-            target.ApplyTemplate();
-            target.Presenter.ApplyTemplate();
-            target.SelectAll();
-
-            Assert.Equal(3, target.SelectedItems.Count);
-
-            _helper.Click((Interactive)target.Presenter.Panel.Children[0]);
-
-            Assert.Equal(1, target.SelectedItems.Count);
-            Assert.Equal(new[] { "Foo", }, target.SelectedItems);
-            Assert.Equal(new[] { 0 }, SelectedContainers(target));
+                var target = new ListBox
+                {
+                    Template = Template(),
+                    Items = new[] { "Foo", "Bar", "Baz" },
+                    ItemTemplate = new FuncDataTemplate<string>((x, _) => new TextBlock { Width = 20, Height = 10 }),
+                    SelectionMode = SelectionMode.Multiple,
+                };
+                AvaloniaLocator.CurrentMutable.Bind<PlatformHotkeyConfiguration>().ToConstant(new Mock<PlatformHotkeyConfiguration>().Object);
+                target.ApplyTemplate();
+                target.Presenter.ApplyTemplate();
+                target.SelectAll();
+
+                Assert.Equal(3, target.SelectedItems.Count);
+
+                _helper.Click((Interactive)target.Presenter.Panel.Children[0]);
+
+                Assert.Equal(1, target.SelectedItems.Count);
+                Assert.Equal(new[] { "Foo", }, target.SelectedItems);
+                Assert.Equal(new[] { 0 }, SelectedContainers(target));
+            }
         }
 
         [Fact]
         public void Right_Click_On_SelectedItem_Should_Not_Clear_Existing_Selection()
         {
-            var target = new ListBox
+            using (UnitTestApplication.Start())
             {
-                Template = Template(),
-                Items = new[] { "Foo", "Bar", "Baz" },
-                ItemTemplate = new FuncDataTemplate<string>((x, _) => new TextBlock { Width = 20, Height = 10 }),
-                SelectionMode = SelectionMode.Multiple,
-            };
-
-            target.ApplyTemplate();
-            target.Presenter.ApplyTemplate();
-            target.SelectAll();
+                var target = new ListBox
+                {
+                    Template = Template(),
+                    Items = new[] { "Foo", "Bar", "Baz" },
+                    ItemTemplate = new FuncDataTemplate<string>((x, _) => new TextBlock { Width = 20, Height = 10 }),
+                    SelectionMode = SelectionMode.Multiple,
+                };
+                AvaloniaLocator.CurrentMutable.Bind<PlatformHotkeyConfiguration>().ToConstant(new Mock<PlatformHotkeyConfiguration>().Object);
+                target.ApplyTemplate();
+                target.Presenter.ApplyTemplate();
+                target.SelectAll();
 
-            Assert.Equal(3, target.SelectedItems.Count);
+                Assert.Equal(3, target.SelectedItems.Count);
 
-            _helper.Click((Interactive)target.Presenter.Panel.Children[0], MouseButton.Right);
+                _helper.Click((Interactive)target.Presenter.Panel.Children[0], MouseButton.Right);
 
-            Assert.Equal(3, target.SelectedItems.Count);
+                Assert.Equal(3, target.SelectedItems.Count);
+            }
         }
 
         [Fact]
         public void Right_Click_On_UnselectedItem_Should_Clear_Existing_Selection()
         {
-            var target = new ListBox
+            using (UnitTestApplication.Start())
             {
-                Template = Template(),
-                Items = new[] { "Foo", "Bar", "Baz" },
-                ItemTemplate = new FuncDataTemplate<string>((x, _) => new TextBlock { Width = 20, Height = 10 }),
-                SelectionMode = SelectionMode.Multiple,
-            };
-
-            target.ApplyTemplate();
-            target.Presenter.ApplyTemplate();
-            _helper.Click((Interactive)target.Presenter.Panel.Children[0]);
-            _helper.Click((Interactive)target.Presenter.Panel.Children[1], modifiers: KeyModifiers.Shift);
-
-            Assert.Equal(2, target.SelectedItems.Count);
-
-            _helper.Click((Interactive)target.Presenter.Panel.Children[2], MouseButton.Right);
-
-            Assert.Equal(1, target.SelectedItems.Count);
+                var target = new ListBox
+                {
+                    Template = Template(),
+                    Items = new[] { "Foo", "Bar", "Baz" },
+                    ItemTemplate = new FuncDataTemplate<string>((x, _) => new TextBlock { Width = 20, Height = 10 }),
+                    SelectionMode = SelectionMode.Multiple,
+                };
+                AvaloniaLocator.CurrentMutable.Bind<PlatformHotkeyConfiguration>().ToConstant(new Mock<PlatformHotkeyConfiguration>().Object);
+                target.ApplyTemplate();
+                target.Presenter.ApplyTemplate();
+                _helper.Click((Interactive)target.Presenter.Panel.Children[0]);
+                _helper.Click((Interactive)target.Presenter.Panel.Children[1], modifiers: KeyModifiers.Shift);
+
+                Assert.Equal(2, target.SelectedItems.Count);
+
+                _helper.Click((Interactive)target.Presenter.Panel.Children[2], MouseButton.Right);
+
+                Assert.Equal(1, target.SelectedItems.Count);
+            }
         }
 
         [Fact]
@@ -1253,41 +1293,47 @@ namespace Avalonia.Controls.UnitTests.Primitives
         [Fact]
         public void Shift_Right_Click_Should_Not_Select_Multiple()
         {
-            var target = new ListBox
+            using (UnitTestApplication.Start())
             {
-                Template = Template(),
-                Items = new[] { "Foo", "Bar", "Baz" },
-                ItemTemplate = new FuncDataTemplate<string>((x, _) => new TextBlock { Width = 20, Height = 10 }),
-                SelectionMode = SelectionMode.Multiple,
-            };
-
-            target.ApplyTemplate();
-            target.Presenter.ApplyTemplate();
-
-            _helper.Click((Interactive)target.Presenter.Panel.Children[0]);
-            _helper.Click((Interactive)target.Presenter.Panel.Children[2], MouseButton.Right, modifiers: KeyModifiers.Shift);
-
-            Assert.Equal(1, target.SelectedItems.Count);
+                var target = new ListBox
+                {
+                    Template = Template(),
+                    Items = new[] { "Foo", "Bar", "Baz" },
+                    ItemTemplate = new FuncDataTemplate<string>((x, _) => new TextBlock { Width = 20, Height = 10 }),
+                    SelectionMode = SelectionMode.Multiple,
+                };
+                AvaloniaLocator.CurrentMutable.Bind<PlatformHotkeyConfiguration>().ToConstant(new Mock<PlatformHotkeyConfiguration>().Object);
+                target.ApplyTemplate();
+                target.Presenter.ApplyTemplate();
+
+                _helper.Click((Interactive)target.Presenter.Panel.Children[0]);
+                _helper.Click((Interactive)target.Presenter.Panel.Children[2], MouseButton.Right, modifiers: KeyModifiers.Shift);
+
+                Assert.Equal(1, target.SelectedItems.Count);
+            }
         }
 
         [Fact]
         public void Ctrl_Right_Click_Should_Not_Select_Multiple()
         {
-            var target = new ListBox
+            using (UnitTestApplication.Start())
             {
-                Template = Template(),
-                Items = new[] { "Foo", "Bar", "Baz" },
-                ItemTemplate = new FuncDataTemplate<string>((x, _) => new TextBlock { Width = 20, Height = 10 }),
-                SelectionMode = SelectionMode.Multiple,
-            };
-
-            target.ApplyTemplate();
-            target.Presenter.ApplyTemplate();
-
-            _helper.Click((Interactive)target.Presenter.Panel.Children[0]);
-            _helper.Click((Interactive)target.Presenter.Panel.Children[2], MouseButton.Right, modifiers: KeyModifiers.Control);
-
-            Assert.Equal(1, target.SelectedItems.Count);
+                var target = new ListBox
+                {
+                    Template = Template(),
+                    Items = new[] { "Foo", "Bar", "Baz" },
+                    ItemTemplate = new FuncDataTemplate<string>((x, _) => new TextBlock { Width = 20, Height = 10 }),
+                    SelectionMode = SelectionMode.Multiple,
+                };
+                AvaloniaLocator.CurrentMutable.Bind<PlatformHotkeyConfiguration>().ToConstant(new Mock<PlatformHotkeyConfiguration>().Object);
+                target.ApplyTemplate();
+                target.Presenter.ApplyTemplate();
+
+                _helper.Click((Interactive)target.Presenter.Panel.Children[0]);
+                _helper.Click((Interactive)target.Presenter.Panel.Children[2], MouseButton.Right, modifiers: KeyModifiers.Control);
+
+                Assert.Equal(1, target.SelectedItems.Count);
+            }
         }
 
         [Fact]