Browse Source

Merge branch 'pr/3435' into refactor/use-selectionmodel

fixes/tree-selectionmodel
Steven Kirk 6 years ago
parent
commit
435f0f7182
  1. 9
      tests/Avalonia.Controls.UnitTests/Primitives/SelectingItemsControlTests.cs
  2. 121
      tests/Avalonia.Controls.UnitTests/Primitives/SelectingItemsControlTests_Multiple.cs

9
tests/Avalonia.Controls.UnitTests/Primitives/SelectingItemsControlTests.cs

@ -539,10 +539,19 @@ namespace Avalonia.Controls.UnitTests.Primitives
Assert.Equal(items[1], target.SelectedItem);
Assert.Equal(1, target.SelectedIndex);
SelectionChangedEventArgs receivedArgs = null;
target.SelectionChanged += (_, args) => receivedArgs = args;
var removed = items[1];
items.RemoveAt(1);
Assert.Null(target.SelectedItem);
Assert.Equal(-1, target.SelectedIndex);
Assert.NotNull(receivedArgs);
Assert.Empty(receivedArgs.AddedItems);
Assert.Equal(new[] { removed }, receivedArgs.RemovedItems);
}
[Fact]

121
tests/Avalonia.Controls.UnitTests/Primitives/SelectingItemsControlTests_Multiple.cs

@ -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()
{

Loading…
Cancel
Save