Browse Source

added failing unit test for ItemsPresenter

donandren 9 years ago
parent
commit
af8fbba51b

+ 35 - 0
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<string>)target.Items;
+            var items = new Avalonia.Collections.AvaloniaList<string>(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,