From af8fbba51b42bc8ef6bb67a7da0131c51930de24 Mon Sep 17 00:00:00 2001 From: donandren Date: Tue, 2 Aug 2016 15:08:07 +0300 Subject: [PATCH] added failing unit test for ItemsPresenter --- .../ItemsPresenterTests_Virtualization.cs | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) 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,