Browse Source

Failing test for selection w/ virtualization.

pull/11168/head
Steven Kirk 3 years ago
parent
commit
5391361d45
  1. 35
      tests/Avalonia.Controls.UnitTests/Primitives/SelectingItemsControlTests_Multiple.cs

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

@ -1074,6 +1074,40 @@ namespace Avalonia.Controls.UnitTests.Primitives
Assert.Equal(new[] { items[2] }, target.Selection.SelectedItems);
}
[Fact]
public void Selection_Is_Not_Cleared_On_Recycling_Containers()
{
using var app = Start();
var items = Enumerable.Range(0, 100).Select(x => new ItemViewModel($"Item {x}", false)).ToList();
// Create a SelectingItemsControl that creates containers that raise IsSelectedChanged,
// with a virtualizing stack panel.
var target = CreateTarget<TestSelectorWithContainers>(
itemsSource: items,
virtualizing: true);
target.AutoScrollToSelectedItem = false;
var panel = Assert.IsType<VirtualizingStackPanel>(target.ItemsPanelRoot);
var scroll = panel.FindAncestorOfType<ScrollViewer>()!;
// Select item 1.
target.SelectedIndex = 1;
// Scroll item 1 out of view.
scroll.Offset = new(0, 1000);
Layout(target);
Assert.Equal(10, panel.FirstRealizedIndex);
Assert.Equal(19, panel.LastRealizedIndex);
// The selection should be preserved.
Assert.Empty(SelectedContainers(target));
Assert.Equal(1, target.SelectedIndex);
Assert.Same(items[1], target.SelectedItem);
Assert.Equal(new[] { 1 }, target.Selection.SelectedIndexes);
Assert.Equal(new[] { items[1] }, target.Selection.SelectedItems);
}
[Fact]
public void Selection_State_Change_On_Unrealized_Item_Is_Respected_With_IsSelected_Binding()
{
@ -1248,6 +1282,7 @@ namespace Avalonia.Controls.UnitTests.Primitives
Setters =
{
new Setter(TestContainer.TemplateProperty, CreateTestContainerTemplate()),
new Setter(TestContainer.HeightProperty, 100.0),
},
};
}

Loading…
Cancel
Save