Browse Source

Add unit test and Fix for case where TemplateApplied when SelectedIndex is already set.

pull/1639/head
Dan Walmsley 8 years ago
parent
commit
2a78b5e9c2
  1. 2
      src/Avalonia.Controls/Presenters/CarouselPresenter.cs
  2. 49
      tests/Avalonia.Controls.UnitTests/CarouselTests.cs

2
src/Avalonia.Controls/Presenters/CarouselPresenter.cs

@ -127,7 +127,7 @@ namespace Avalonia.Controls.Presenters
generator.Clear();
Panel.Children.RemoveAll(containers.Select(x => x.ContainerControl));
MoveToPage(-1, 0);
MoveToPage(-1, SelectedIndex >= 0 ? SelectedIndex : 0);
}
break;
}

49
tests/Avalonia.Controls.UnitTests/CarouselTests.cs

@ -7,6 +7,7 @@ using Avalonia.Controls.Presenters;
using Avalonia.Controls.Primitives;
using Avalonia.Controls.Templates;
using Avalonia.LogicalTree;
using Avalonia.VisualTree;
using Xunit;
namespace Avalonia.Controls.UnitTests
@ -51,7 +52,7 @@ namespace Avalonia.Controls.UnitTests
Assert.Single(target.GetLogicalChildren());
var child = target.GetLogicalChildren().Single();
Assert.IsType<TextBlock>(child);
Assert.Equal("Foo", ((TextBlock)child).Text);
}
@ -107,7 +108,7 @@ namespace Avalonia.Controls.UnitTests
var target = new Carousel
{
Template = new FuncControlTemplate<Carousel>(CreateTemplate),
Items = items,
Items = items,
IsVirtualized = false
};
@ -132,6 +133,50 @@ namespace Avalonia.Controls.UnitTests
Assert.Equal("Bar", ((TextBlock)child).Text);
}
[Fact]
public void Selected_Index_Is_Maintained_Carousel_Created_With_Non_Zero_SelectedIndex()
{
var items = new ObservableCollection<string>
{
"Foo",
"Bar",
"FooBar"
};
var target = new Carousel
{
Template = new FuncControlTemplate<Carousel>(CreateTemplate),
Items = items,
IsVirtualized = false,
SelectedIndex = 2
};
target.ApplyTemplate();
target.Presenter.ApplyTemplate();
Assert.Equal("FooBar", target.SelectedItem);
IVisual child = target;
while (true)
{
if (child.VisualChildren.FirstOrDefault() is TextBlock)
{
break;
}
if (child.VisualChildren.Count == 0)
{
break;
}
child = child.VisualChildren.FirstOrDefault().VisualChildren.FirstOrDefault();
}
Assert.IsType<TextBlock>(child);
Assert.Equal("FooBar", ((TextBlock)child).Text);
}
[Fact]
public void Selected_Item_Changes_To_Next_First_Item_When_Item_Removed_From_Beggining_Of_List()
{

Loading…
Cancel
Save