|
|
|
@ -205,6 +205,33 @@ namespace Avalonia.Controls.UnitTests.Selection |
|
|
|
Assert.Equal(2, target.SelectedIndex); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void Raises_Selection_Changed_On_Items_Reset() |
|
|
|
{ |
|
|
|
var items = new ResettingCollection(new[] { "foo", "bar", "baz" }); |
|
|
|
var target = CreateTarget(source: items); |
|
|
|
|
|
|
|
target.SelectedIndex = 1; |
|
|
|
|
|
|
|
var changed = new List<string>(); |
|
|
|
|
|
|
|
target.PropertyChanged += (s, e) => changed.Add(e.PropertyName); |
|
|
|
|
|
|
|
var oldSelectedIndex = target.SelectedIndex; |
|
|
|
var oldSelectedItem = target.SelectedItem; |
|
|
|
|
|
|
|
items.Reset(new string[0]); |
|
|
|
|
|
|
|
Assert.NotEqual(oldSelectedIndex, target.SelectedIndex); |
|
|
|
Assert.NotEqual(oldSelectedItem, target.SelectedItem); |
|
|
|
|
|
|
|
Assert.Equal(-1, target.SelectedIndex); |
|
|
|
Assert.Equal(null, target.SelectedItem); |
|
|
|
|
|
|
|
Assert.Contains(nameof(target.SelectedIndex), changed); |
|
|
|
Assert.Contains(nameof(target.SelectedItem), changed); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void Preserves_Selection_On_Source_Changed() |
|
|
|
{ |
|
|
|
@ -222,7 +249,7 @@ namespace Avalonia.Controls.UnitTests.Selection |
|
|
|
bool nullSource = false) |
|
|
|
{ |
|
|
|
source ??= !nullSource ? new[] { "foo", "bar", "baz" } : null; |
|
|
|
|
|
|
|
|
|
|
|
var result = new InternalSelectionModel |
|
|
|
{ |
|
|
|
SingleSelect = singleSelect, |
|
|
|
|