diff --git a/tests/Avalonia.Controls.UnitTests/Presenters/ItemsPresenterTests_Virtualization.cs b/tests/Avalonia.Controls.UnitTests/Presenters/ItemsPresenterTests_Virtualization.cs index 2f6361a867..9c5cedb9d3 100644 --- a/tests/Avalonia.Controls.UnitTests/Presenters/ItemsPresenterTests_Virtualization.cs +++ b/tests/Avalonia.Controls.UnitTests/Presenters/ItemsPresenterTests_Virtualization.cs @@ -269,6 +269,41 @@ namespace Avalonia.Controls.UnitTests.Presenters Assert.Equal(new Size(100, 100), scroll.Viewport); } + [Fact] + public void Should_Add_Items_After_Clear() + { + var target = CreateTarget(itemCount: 10); + var defaultItems = (IList)target.Items; + var items = new Avalonia.Collections.AvaloniaList(defaultItems); + target.Items = items; + + target.ApplyTemplate(); + target.Measure(new Size(100, 100)); + target.Arrange(new Rect(target.DesiredSize)); + + Assert.Equal(10, target.Panel.Children.Count); + + items.Clear(); + + target.Panel.Measure(new Size(100, 100)); + target.Panel.Arrange(new Rect(target.Panel.DesiredSize)); + + target.Measure(new Size(100, 100)); + target.Arrange(new Rect(target.DesiredSize)); + + Assert.Equal(0, target.Panel.Children.Count); + + items.AddRange(defaultItems.Select(s => s + " new")); + + target.Panel.Measure(new Size(100, 100)); + target.Panel.Arrange(new Rect(target.Panel.DesiredSize)); + + target.Measure(new Size(100, 100)); + target.Arrange(new Rect(target.DesiredSize)); + + Assert.Equal(10, target.Panel.Children.Count); + } + private static ItemsPresenter CreateTarget( ItemVirtualizationMode mode = ItemVirtualizationMode.Simple, Orientation orientation = Orientation.Vertical,