using Avalonia.Input; using Avalonia.UnitTests; using Avalonia.VisualTree; using Avalonia.Interactivity; using Avalonia.Layout; using Avalonia.Controls.Primitives; using Avalonia.Controls.Templates; using Avalonia.Styling; using Avalonia.Themes.Simple; using System.Linq; using Xunit; namespace Avalonia.Controls.UnitTests { public class PipsPagerTests : ScopedTestBase { [Fact] public void NumberOfPages_Should_Update_Pips() { var target = new PipsPager(); target.NumberOfPages = 5; Assert.Equal(5, target.TemplateSettings.Pips.Count); Assert.Equal(1, target.TemplateSettings.Pips[0]); Assert.Equal(5, target.TemplateSettings.Pips[4]); } [Fact] public void Decreasing_NumberOfPages_Should_Update_Pips() { var target = new PipsPager(); target.NumberOfPages = 5; target.NumberOfPages = 3; Assert.Equal(3, target.TemplateSettings.Pips.Count); } [Fact] public void Decreasing_NumberOfPages_Should_Update_SelectedPageIndex() { var target = new PipsPager(); target.NumberOfPages = 5; target.SelectedPageIndex = 4; target.NumberOfPages = 3; Assert.Equal(2, target.SelectedPageIndex); } [Fact] public void SelectedPageIndex_Should_Be_Clamped_To_Zero() { var target = new PipsPager(); target.NumberOfPages = 5; target.SelectedPageIndex = -1; Assert.Equal(0, target.SelectedPageIndex); } [Fact] public void SelectedPageIndex_Change_Should_Raise_Event() { var target = new PipsPager(); target.NumberOfPages = 5; var raised = false; target.SelectedIndexChanged += (s, e) => raised = true; target.SelectedPageIndex = 2; Assert.True(raised); } [Fact] public void Next_Button_Should_Increment_Index() { using var unittestApplication = UnitTestApplication.Start(TestServices.StyledWindow); var target = new PipsPager { NumberOfPages = 5, SelectedPageIndex = 1, IsNextButtonVisible = true, Template = GetTemplate() }; var root = new TestRoot(target); target.ApplyTemplate(); var nextButton = target.GetVisualDescendants().OfType