|
|
|
@ -683,6 +683,57 @@ namespace Avalonia.Controls.UnitTests.Primitives |
|
|
|
Assert.Equal(new[] { 0, 1, 2 }, SelectedContainers(target)); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void Ctrl_Selecting_Raises_SelectionChanged_Events() |
|
|
|
{ |
|
|
|
var target = new ListBox |
|
|
|
{ |
|
|
|
Template = Template(), |
|
|
|
Items = new[] { "Foo", "Bar", "Baz", "Qux" }, |
|
|
|
SelectionMode = SelectionMode.Multiple, |
|
|
|
}; |
|
|
|
|
|
|
|
target.ApplyTemplate(); |
|
|
|
target.Presenter.ApplyTemplate(); |
|
|
|
|
|
|
|
SelectionChangedEventArgs receivedArgs = null; |
|
|
|
|
|
|
|
target.SelectionChanged += (_, args) => receivedArgs = args; |
|
|
|
|
|
|
|
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); |
|
|
|
} |
|
|
|
|
|
|
|
_helper.Click((Interactive)target.Presenter.Panel.Children[1]); |
|
|
|
|
|
|
|
VerifyAdded("Bar"); |
|
|
|
|
|
|
|
receivedArgs = null; |
|
|
|
_helper.Click((Interactive)target.Presenter.Panel.Children[2], modifiers: InputModifiers.Control); |
|
|
|
|
|
|
|
VerifyAdded("Baz"); |
|
|
|
|
|
|
|
receivedArgs = null; |
|
|
|
_helper.Click((Interactive)target.Presenter.Panel.Children[3], modifiers: InputModifiers.Control); |
|
|
|
|
|
|
|
VerifyAdded("Qux"); |
|
|
|
|
|
|
|
receivedArgs = null; |
|
|
|
_helper.Click((Interactive)target.Presenter.Panel.Children[1], modifiers: InputModifiers.Control); |
|
|
|
|
|
|
|
VerifyRemoved("Bar"); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void Ctrl_Selecting_SelectedItem_With_Multiple_Selection_Active_Sets_SelectedItem_To_Next_Selection() |
|
|
|
{ |
|
|
|
@ -797,6 +848,52 @@ namespace Avalonia.Controls.UnitTests.Primitives |
|
|
|
Assert.Equal(new[] { 0, 1, 2, 3, 4, 5 }, SelectedContainers(target)); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void Shift_Selecting_Raises_SelectionChanged_Events() |
|
|
|
{ |
|
|
|
var target = new ListBox |
|
|
|
{ |
|
|
|
Template = Template(), |
|
|
|
Items = new[] { "Foo", "Bar", "Baz", "Qux" }, |
|
|
|
SelectionMode = SelectionMode.Multiple, |
|
|
|
}; |
|
|
|
|
|
|
|
target.ApplyTemplate(); |
|
|
|
target.Presenter.ApplyTemplate(); |
|
|
|
|
|
|
|
SelectionChangedEventArgs receivedArgs = null; |
|
|
|
|
|
|
|
target.SelectionChanged += (_, args) => receivedArgs = args; |
|
|
|
|
|
|
|
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); |
|
|
|
} |
|
|
|
|
|
|
|
_helper.Click((Interactive)target.Presenter.Panel.Children[1]); |
|
|
|
|
|
|
|
VerifyAdded("Bar"); |
|
|
|
|
|
|
|
receivedArgs = null; |
|
|
|
_helper.Click((Interactive)target.Presenter.Panel.Children[3], modifiers: InputModifiers.Shift); |
|
|
|
|
|
|
|
VerifyAdded("Baz" ,"Qux"); |
|
|
|
|
|
|
|
receivedArgs = null; |
|
|
|
_helper.Click((Interactive)target.Presenter.Panel.Children[2], modifiers: InputModifiers.Shift); |
|
|
|
|
|
|
|
VerifyRemoved("Qux"); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void Duplicate_Items_Are_Added_To_SelectedItems_In_Order() |
|
|
|
{ |
|
|
|
@ -845,6 +942,30 @@ namespace Avalonia.Controls.UnitTests.Primitives |
|
|
|
Assert.Equal("Foo", target.SelectedItem); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void SelectAll_Raises_SelectionChanged_Event() |
|
|
|
{ |
|
|
|
var target = new TestSelector |
|
|
|
{ |
|
|
|
Template = Template(), |
|
|
|
Items = new[] { "Foo", "Bar", "Baz" }, |
|
|
|
SelectionMode = SelectionMode.Multiple, |
|
|
|
}; |
|
|
|
|
|
|
|
target.ApplyTemplate(); |
|
|
|
target.Presenter.ApplyTemplate(); |
|
|
|
|
|
|
|
SelectionChangedEventArgs receivedArgs = null; |
|
|
|
|
|
|
|
target.SelectionChanged += (_, args) => receivedArgs = args; |
|
|
|
|
|
|
|
target.SelectAll(); |
|
|
|
|
|
|
|
Assert.NotNull(receivedArgs); |
|
|
|
Assert.Equal(target.Items, receivedArgs.AddedItems); |
|
|
|
Assert.Empty(receivedArgs.RemovedItems); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void UnselectAll_Clears_SelectedIndex_And_SelectedItem() |
|
|
|
{ |
|
|
|
|