Browse Source

bug is in selecting items control. add failing unit test.

pull/1763/head
Dan Walmsley 8 years ago
parent
commit
ee55b4fa3d
  1. 5
      src/Avalonia.Controls/Presenters/CarouselPresenter.cs
  2. 28
      tests/Avalonia.Controls.UnitTests/Primitives/SelectingItemsControlTests.cs

5
src/Avalonia.Controls/Presenters/CarouselPresenter.cs

@ -115,11 +115,6 @@ namespace Avalonia.Controls.Presenters
var containers = generator.RemoveRange(e.OldStartingIndex, e.OldItems.Count);
Panel.Children.RemoveAll(containers.Select(x => x.ContainerControl));
if(SelectedIndex >= Items.Count())
{
SelectedIndex = Items.Count() - 1;
}
#pragma warning disable 4014
MoveToPage(-1, SelectedIndex);
#pragma warning restore 4014

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

@ -149,6 +149,34 @@ namespace Avalonia.Controls.UnitTests.Primitives
Assert.Equal(1, target.SelectedIndex);
}
[Fact]
public void SelectedIndex_Item_Is_Updated_As_Items_Removed_When_Last_Item_Is_Selected()
{
var items = new ObservableCollection<string>
{
"Foo",
"Bar",
"FooBar"
};
var target = new SelectingItemsControl
{
Items = items,
Template = Template(),
};
target.ApplyTemplate();
target.SelectedItem = items[2];
Assert.Equal(items[2], target.SelectedItem);
Assert.Equal(2, target.SelectedIndex);
items.RemoveAt(0);
Assert.Equal(items[1], target.SelectedItem);
Assert.Equal(1, target.SelectedIndex);
}
[Fact]
public void Setting_SelectedItem_To_Not_Present_Item_Should_Clear_Selection()
{

Loading…
Cancel
Save