Files
Ursa.Avalonia/tests/HeadlessTest.Ursa/Controls/DateTimePicker/CalendarYearButtonTests.cs
2025-02-17 03:03:27 +08:00

96 lines
3.1 KiB
C#

using System.Globalization;
using Avalonia;
using Avalonia.Controls;
using Avalonia.Headless;
using Avalonia.Headless.XUnit;
using Avalonia.Input;
using Ursa.Controls;
namespace HeadlessTest.Ursa.Controls.DateTimePicker;
public class CalendarYearButtonTests
{
[AvaloniaFact]
public void SetContext_YearMode_SetsContentToAbbreviatedMonthName()
{
var button = new CalendarYearButton();
var context = new CalendarContext(null, 5);
button.SetContext(CalendarViewMode.Year, context);
Assert.Equal("May", button.Content);
}
[AvaloniaFact]
public void SetContext_YearMode_SetsContentToAbbreviatedMonthName_Chinese()
{
CultureInfo.CurrentCulture = new CultureInfo("zh-CN");
var button = new CalendarYearButton();
var context = new CalendarContext(null, 5);
button.SetContext(CalendarViewMode.Year, context);
Assert.Equal("5月", button.Content);
}
[AvaloniaFact]
public void SetContext_DecadeMode_SetsContentToYear()
{
var button = new CalendarYearButton();
var context = new CalendarContext(2023);
button.SetContext(CalendarViewMode.Decade, context);
Assert.Equal("2023", button.Content);
}
[AvaloniaFact]
public void SetContext_CenturyMode_SetsContentToYearRange()
{
var button = new CalendarYearButton();
var context = new CalendarContext(null, null, 1900, 1999);
button.SetContext(CalendarViewMode.Century, context);
Assert.Equal("1900-1999", button.Content);
}
[AvaloniaFact]
public void SetContext_InvalidYear_DisablesButton()
{
var button = new CalendarYearButton();
var context = new CalendarContext(null, null, -1);
button.SetContext(CalendarViewMode.Decade, context);
Assert.False(button.IsEnabled);
}
[AvaloniaFact]
public void SetContext_Month_Mode_DisablesButton()
{
var button = new CalendarYearButton();
var context = new CalendarContext(1, 1);
button.SetContext(CalendarViewMode.Month, context);
Assert.False(button.IsEnabled);
}
[AvaloniaFact]
public void OnPointerReleased_RaisesItemSelectedEvent()
{
var button = new CalendarYearButton();
var context = new CalendarContext(2023, 5);
button.SetContext(CalendarViewMode.Year, context);
int eventRaised = 0;
CalendarContext? eventContext = null;
void OnItemSelected( object? sender, CalendarYearButtonEventArgs args)
{
eventRaised++;
eventContext = args.Context;
}
button.ItemSelected += OnItemSelected;
Window window = new Window();
window.Content = button;
window.Show();
window.MouseUp(new Point(10, 10), MouseButton.Left);
Assert.Equal(1, eventRaised);
Assert.Equal(context, eventContext);
button.ItemSelected -= OnItemSelected;
eventContext = null;
window.MouseUp(new Point(10, 10), MouseButton.Left);
Assert.Null(eventContext);
Assert.Equal(1, eventRaised);
}
}