// -----------------------------------------------------------------------
//
// Copyright 2015 MIT Licence. See licence.md for more information.
//
// -----------------------------------------------------------------------
namespace Perspex.Controls.UnitTests.Presenters
{
using Perspex.Controls.Generators;
using Perspex.Controls.Presenters;
using Perspex.Controls.Templates;
using Xunit;
public class DeckPresenterTests
{
[Fact]
public void ApplyTemplate_Should_Create_Panel()
{
var target = new DeckPresenter
{
ItemsPanel = new FuncTemplate(() => new Panel()),
};
target.ApplyTemplate();
Assert.IsType(target.Panel);
}
[Fact]
public void ItemContainerGenerator_Should_Be_Picked_Up_From_TemplatedControl()
{
var parent = new TestItemsControl();
var target = new DeckPresenter
{
TemplatedParent = parent,
};
Assert.IsType>(target.ItemContainerGenerator);
}
[Fact]
public void Setting_SelectedIndex_Should_Show_Page()
{
var target = new DeckPresenter
{
Items = new[] { "foo", "bar" },
SelectedIndex = 0,
};
target.ApplyTemplate();
Assert.IsType(target.Panel.Children[0]);
Assert.Equal("foo", ((TextBlock)target.Panel.Children[0]).Text);
}
[Fact]
public void Changing_SelectedIndex_Should_Show_Page()
{
var target = new DeckPresenter
{
Items = new[] { "foo", "bar" },
SelectedIndex = 0,
};
target.ApplyTemplate();
target.SelectedIndex = 1;
Assert.IsType(target.Panel.Children[0]);
Assert.Equal("bar", ((TextBlock)target.Panel.Children[0]).Text);
}
private class TestItem : ContentControl
{
}
private class TestItemsControl : ItemsControl
{
protected override IItemContainerGenerator CreateItemContainerGenerator()
{
return new ItemContainerGenerator(this);
}
}
}
}