test: add tests for command and event.
This commit is contained in:
@@ -1,9 +1,11 @@
|
||||
using Avalonia;
|
||||
using Avalonia.Controls;
|
||||
using Avalonia.Data;
|
||||
using Avalonia.Headless.XUnit;
|
||||
using Avalonia.Interactivity;
|
||||
using Avalonia.Markup.Xaml.MarkupExtensions;
|
||||
using Avalonia.Threading;
|
||||
using CommunityToolkit.Mvvm.Input;
|
||||
using HeadlessTest.Ursa.TestHelpers;
|
||||
using Ursa.Controls;
|
||||
|
||||
@@ -276,4 +278,158 @@ public class PaginationTests
|
||||
Assert.Equal(50, pagination.PageSize);
|
||||
Assert.Equal(1, pagination.CurrentPage);
|
||||
}
|
||||
|
||||
[AvaloniaFact]
|
||||
public void Click_On_Previews_Or_Next_Triggers_Command()
|
||||
{
|
||||
var window = new Window();
|
||||
int count = 0;
|
||||
var pagination = new Pagination
|
||||
{
|
||||
CurrentPage = 3,
|
||||
PageSize = 50,
|
||||
TotalCount = 300,
|
||||
Command = new RelayCommand(() => count++)
|
||||
};
|
||||
window.Content = pagination;
|
||||
window.Show();
|
||||
Dispatcher.UIThread.RunJobs();
|
||||
var previousButton = pagination.GetTemplateChildOfType<Button>(Pagination.PART_PreviousButton);
|
||||
var nextButton = pagination.GetTemplateChildOfType<Button>(Pagination.PART_NextButton);
|
||||
previousButton?.RaiseEvent(new RoutedEventArgs(Button.ClickEvent));
|
||||
Dispatcher.UIThread.RunJobs();
|
||||
Assert.Equal(1, count);
|
||||
nextButton?.RaiseEvent(new RoutedEventArgs(Button.ClickEvent));
|
||||
Assert.Equal(2, count);
|
||||
Dispatcher.UIThread.RunJobs();
|
||||
}
|
||||
|
||||
[AvaloniaFact]
|
||||
public void Click_On_Previews_Or_Next_Triggers_Command_With_Parameter()
|
||||
{
|
||||
var window = new Window();
|
||||
int count = 0;
|
||||
var pagination = new Pagination
|
||||
{
|
||||
CurrentPage = 3,
|
||||
PageSize = 50,
|
||||
TotalCount = 300,
|
||||
Command = new RelayCommand<int>(page => count = page),
|
||||
[!Pagination.CommandParameterProperty] = new Binding(nameof(Pagination.CurrentPage))
|
||||
{ RelativeSource = new RelativeSource(RelativeSourceMode.Self) },
|
||||
};
|
||||
window.Content = pagination;
|
||||
window.Show();
|
||||
Dispatcher.UIThread.RunJobs();
|
||||
var previousButton = pagination.GetTemplateChildOfType<Button>(Pagination.PART_PreviousButton);
|
||||
var nextButton = pagination.GetTemplateChildOfType<Button>(Pagination.PART_NextButton);
|
||||
previousButton?.RaiseEvent(new RoutedEventArgs(Button.ClickEvent));
|
||||
Dispatcher.UIThread.RunJobs();
|
||||
Assert.Equal(2, count);
|
||||
nextButton?.RaiseEvent(new RoutedEventArgs(Button.ClickEvent));
|
||||
Dispatcher.UIThread.RunJobs();
|
||||
Assert.Equal(3, count);
|
||||
}
|
||||
|
||||
[AvaloniaFact]
|
||||
public void Buttons_Panel_Is_Correct_Case1()
|
||||
{
|
||||
var window = new Window();
|
||||
var pagination = new Pagination
|
||||
{
|
||||
CurrentPage = 3,
|
||||
PageSize = 50,
|
||||
TotalCount = 300,
|
||||
};
|
||||
window.Content = pagination;
|
||||
window.Show();
|
||||
Dispatcher.UIThread.RunJobs();
|
||||
var buttonsPanel = pagination.GetTemplateChildOfType<Panel>(Pagination.PART_ButtonPanel);
|
||||
Assert.NotNull(buttonsPanel);
|
||||
Assert.Equal(6, buttonsPanel.Children.Count(a => a.IsVisible));
|
||||
|
||||
pagination.TotalCount = 30000;
|
||||
Dispatcher.UIThread.RunJobs();
|
||||
Assert.Equal(7, buttonsPanel.Children.Count(a => a.IsVisible));
|
||||
|
||||
var buttons = buttonsPanel.Children.OfType<PaginationButton>().ToList();
|
||||
Assert.Equal(1, buttons[0].Page);
|
||||
Assert.Equal(2, buttons[1].Page);
|
||||
Assert.Equal(3, buttons[2].Page);
|
||||
Assert.Equal(4, buttons[3].Page);
|
||||
Assert.Equal(5, buttons[4].Page);
|
||||
Assert.True(buttons[5].IsFastBackward);
|
||||
Assert.Equal(600, buttons[6].Page);
|
||||
|
||||
pagination.CurrentPage = 300;
|
||||
Dispatcher.UIThread.RunJobs();
|
||||
Assert.Equal(7, buttonsPanel.Children.Count(a => a.IsVisible));
|
||||
Assert.Equal(1, buttons[0].Page);
|
||||
Assert.True(buttons[1].IsFastForward);
|
||||
Assert.Equal(299, buttons[2].Page);
|
||||
Assert.Equal(300, buttons[3].Page);
|
||||
Assert.Equal(301, buttons[4].Page);
|
||||
Assert.True(buttons[5].IsFastBackward);
|
||||
Assert.Equal(600, buttons[6].Page);
|
||||
|
||||
pagination.CurrentPage = 600;
|
||||
Dispatcher.UIThread.RunJobs();
|
||||
Assert.Equal(7, buttonsPanel.Children.Count(a => a.IsVisible));
|
||||
Assert.Equal(1, buttons[0].Page);
|
||||
Assert.True(buttons[1].IsFastForward);
|
||||
Assert.Equal(596, buttons[2].Page);
|
||||
Assert.Equal(597, buttons[3].Page);
|
||||
Assert.Equal(598, buttons[4].Page);
|
||||
Assert.Equal(599, buttons[5].Page);
|
||||
Assert.Equal(600, buttons[6].Page);
|
||||
|
||||
}
|
||||
|
||||
[AvaloniaFact]
|
||||
public void Button_Panel_Button_Triggers_Command()
|
||||
{
|
||||
var window = new Window();
|
||||
int count = 0;
|
||||
var pagination = new Pagination
|
||||
{
|
||||
CurrentPage = 3,
|
||||
PageSize = 50,
|
||||
TotalCount = 300,
|
||||
Command = new RelayCommand<int>(page => count = page),
|
||||
[!Pagination.CommandParameterProperty] = new Binding(nameof(Pagination.CurrentPage))
|
||||
{ RelativeSource = new RelativeSource(RelativeSourceMode.Self) },
|
||||
};
|
||||
window.Content = pagination;
|
||||
window.Show();
|
||||
Dispatcher.UIThread.RunJobs();
|
||||
var buttonsPanel = pagination.GetTemplateChildOfType<Panel>(Pagination.PART_ButtonPanel);
|
||||
var buttons = buttonsPanel.Children.OfType<PaginationButton>().ToList();
|
||||
buttons[0].RaiseEvent(new RoutedEventArgs(Button.ClickEvent));
|
||||
Dispatcher.UIThread.RunJobs();
|
||||
Assert.Equal(1, count);
|
||||
buttons[1].RaiseEvent(new RoutedEventArgs(Button.ClickEvent));
|
||||
Dispatcher.UIThread.RunJobs();
|
||||
Assert.Equal(2, count);
|
||||
}
|
||||
|
||||
[AvaloniaFact]
|
||||
public void Change_CurrentPage_Triggers_Event()
|
||||
{
|
||||
var window = new Window();
|
||||
int count = 0;
|
||||
var pagination = new Pagination
|
||||
{
|
||||
CurrentPage = 3,
|
||||
PageSize = 50,
|
||||
TotalCount = 300,
|
||||
};
|
||||
pagination.CurrentPageChanged += (sender, args) => count++;
|
||||
window.Content = pagination;
|
||||
window.Show();
|
||||
Dispatcher.UIThread.RunJobs();
|
||||
pagination.CurrentPage = 5;
|
||||
Dispatcher.UIThread.RunJobs();
|
||||
Assert.Equal(1, count);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user