|
@@ -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]
|