// Copyright (c) The Perspex Project. All rights reserved. // Licensed under the MIT license. See licence.md file in the project root for full license information. using System.Linq; using Perspex.Controls.Presenters; using Perspex.Controls.Primitives; using Perspex.Controls.Templates; using Perspex.LogicalTree; using Xunit; namespace Perspex.Controls.UnitTests { public class DeckTests { [Fact] public void First_Item_Should_Be_Selected_By_Default() { var target = new Deck { Template = new ControlTemplate(CreateTemplate), Items = new[] { "Foo", "Bar" } }; target.ApplyTemplate(); Assert.Equal(0, target.SelectedIndex); Assert.Equal("Foo", target.SelectedItem); } [Fact] public void LogicalChild_Should_Be_Selected_Item() { var target = new Deck { Template = new ControlTemplate(CreateTemplate), Items = new[] { "Foo", "Bar" } }; target.ApplyTemplate(); Assert.Equal(1, target.GetLogicalChildren().Count()); var child = target.GetLogicalChildren().Single(); Assert.IsType(child); Assert.Equal("Foo", ((TextBlock)child).Text); } private Control CreateTemplate(Deck control) { return new DeckPresenter { Name = "itemsPresenter", [~ItemsPresenter.ItemsProperty] = control[~ItemsControl.ItemsProperty], [~ItemsPresenter.ItemsPanelProperty] = control[~ItemsControl.ItemsPanelProperty], [~DeckPresenter.SelectedIndexProperty] = control[~SelectingItemsControl.SelectedIndexProperty], [~DeckPresenter.TransitionProperty] = control[~Deck.TransitionProperty], }; } } }