From 9f9e9920e4649ad1a4351236669fd1f195931eba Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Wed, 20 Apr 2016 17:08:56 +0100 Subject: [PATCH] added unit tests to test carousel presenter. --- .../Presenters/CarouselPresenterTests.cs | 77 +++++++++++++++++++ 1 file changed, 77 insertions(+) diff --git a/tests/Perspex.Controls.UnitTests/Presenters/CarouselPresenterTests.cs b/tests/Perspex.Controls.UnitTests/Presenters/CarouselPresenterTests.cs index 31aebb6124..0c092943d4 100644 --- a/tests/Perspex.Controls.UnitTests/Presenters/CarouselPresenterTests.cs +++ b/tests/Perspex.Controls.UnitTests/Presenters/CarouselPresenterTests.cs @@ -7,6 +7,7 @@ using Perspex.Controls.Generators; using Perspex.Controls.Presenters; using Perspex.Controls.Templates; using Xunit; +using System.Collections.ObjectModel; namespace Perspex.Controls.UnitTests.Presenters { @@ -116,6 +117,82 @@ namespace Perspex.Controls.UnitTests.Presenters Assert.Equal(2, target.Panel.Children.Count); } + [Fact] + public void Should_Remove_Controls_When_IsVirtualized_Is_False() + { + ObservableCollection items = new ObservableCollection(); + + var target = new CarouselPresenter + { + Items = items, + SelectedIndex = 0, + IsVirtualized = false, + }; + + target.ApplyTemplate(); + target.SelectedIndex = 0; + items.Add("foo"); + target.SelectedIndex = 0; + + Assert.Equal(1, target.ItemContainerGenerator.Containers.Count()); + Assert.Equal(1, target.Panel.Children.Count); + + items.Add("bar"); + Assert.Equal(1, target.ItemContainerGenerator.Containers.Count()); + Assert.Equal(1, target.Panel.Children.Count); + + target.SelectedIndex = 1; + Assert.Equal(2, target.ItemContainerGenerator.Containers.Count()); + Assert.Equal(2, target.Panel.Children.Count); + + items.Remove(items[0]); + Assert.Equal(1, target.ItemContainerGenerator.Containers.Count()); + Assert.Equal(1, target.Panel.Children.Count); + + items.Remove(items[0]); + Assert.Equal(0, target.ItemContainerGenerator.Containers.Count()); + Assert.Equal(0, target.Panel.Children.Count); + } + + [Fact] + public void Should_have_correct_index_itemscontainer() + { + ObservableCollection items = new ObservableCollection(); + + var target = new CarouselPresenter + { + Items = items, + SelectedIndex = 0, + IsVirtualized = false, + }; + + target.ApplyTemplate(); + target.SelectedIndex = 0; + items.Add("foo"); + target.SelectedIndex = 0; + + Assert.Equal(1, target.ItemContainerGenerator.Containers.Count()); + Assert.Equal(1, target.Panel.Children.Count); + + items.Add("bar"); + Assert.Equal(1, target.ItemContainerGenerator.Containers.Count()); + Assert.Equal(1, target.Panel.Children.Count); + + target.SelectedIndex = 1; + Assert.Equal(2, target.ItemContainerGenerator.Containers.Count()); + Assert.Equal(2, target.Panel.Children.Count); + Assert.Equal(0, target.ItemContainerGenerator.Containers.First().Index); + + items.Remove(items[0]); + Assert.Equal(1, target.ItemContainerGenerator.Containers.Count()); + Assert.Equal(1, target.Panel.Children.Count); + Assert.Equal(1, target.ItemContainerGenerator.Containers.First().Index); + + items.Remove(items[0]); + Assert.Equal(0, target.ItemContainerGenerator.Containers.Count()); + Assert.Equal(0, target.Panel.Children.Count); + } + private class TestItem : ContentControl { }