test: WIP, fix an issue when passing year event.
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
using Avalonia;
|
||||
using Avalonia.Controls;
|
||||
using Avalonia.Headless;
|
||||
using Avalonia.Headless.XUnit;
|
||||
using Avalonia.Input;
|
||||
using Avalonia.Threading;
|
||||
using Ursa.Controls;
|
||||
|
||||
namespace HeadlessTest.Ursa.Controls.DateTimePicker;
|
||||
|
||||
public class CalendarDayButtonTests
|
||||
{
|
||||
[AvaloniaFact]
|
||||
public void OnPointerReleased_RaisesDateSelectedEvent()
|
||||
{
|
||||
Window window = new Window();
|
||||
var button = new CalendarDayButton();
|
||||
var date = new DateTime(2023, 5, 15);
|
||||
button.DataContext = date;
|
||||
window.Content = button;
|
||||
window.Show();
|
||||
Dispatcher.UIThread.RunJobs();
|
||||
int eventRaised = 0;
|
||||
DateTime? eventContext = null;
|
||||
|
||||
void OnMouseClick(object? sender, CalendarDayButtonEventArgs args)
|
||||
{
|
||||
eventRaised++;
|
||||
eventContext = args.Date;
|
||||
}
|
||||
|
||||
button.DateSelected += OnMouseClick;
|
||||
window.MouseUp(new Point(10, 10), MouseButton.Left);
|
||||
Assert.Equal(1, eventRaised);
|
||||
Assert.Equal(date, eventContext);
|
||||
button.DateSelected -= OnMouseClick;
|
||||
eventContext = null;
|
||||
window.MouseUp(new Point(10, 10), MouseButton.Left);
|
||||
Assert.Null(eventContext);
|
||||
Assert.Equal(1, eventRaised);
|
||||
}
|
||||
|
||||
[AvaloniaFact]
|
||||
public void OnPointerEntered_RaisesDatePreviewedEvent()
|
||||
{
|
||||
Window window = new Window();
|
||||
var button = new CalendarDayButton();
|
||||
var date = new DateTime(2023, 5, 15);
|
||||
button.DataContext = date;
|
||||
window.Content = button;
|
||||
window.Show();
|
||||
Dispatcher.UIThread.RunJobs();
|
||||
int eventRaised = 0;
|
||||
DateTime? eventContext = null;
|
||||
|
||||
void OnMouseEnter(object? sender, CalendarDayButtonEventArgs args)
|
||||
{
|
||||
eventRaised++;
|
||||
eventContext = args.Date;
|
||||
}
|
||||
|
||||
button.DatePreviewed += OnMouseEnter;
|
||||
window.MouseMove(new Point(10, 10));
|
||||
Assert.Equal(1, eventRaised);
|
||||
Assert.Equal(date, eventContext);
|
||||
window.MouseMove(new Point(100, 100));
|
||||
button.DatePreviewed -= OnMouseEnter;
|
||||
eventContext = null;
|
||||
window.MouseMove(new Point(10, 10));
|
||||
Assert.Null(eventContext);
|
||||
Assert.Equal(1, eventRaised);
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
using Avalonia;
|
||||
using Avalonia.Controls;
|
||||
using Avalonia.Controls.Templates;
|
||||
using Avalonia.Headless;
|
||||
using Avalonia.Headless.XUnit;
|
||||
using Avalonia.Input;
|
||||
@@ -20,7 +21,7 @@ public class CalendarViewTests
|
||||
window.Content = calendarView;
|
||||
window.Show();
|
||||
Dispatcher.UIThread.RunJobs();
|
||||
calendarView.ContextDate = new CalendarContext(2023, 5);
|
||||
calendarView.SyncContextDate(new CalendarContext(2023, 5));
|
||||
Dispatcher.UIThread.RunJobs();
|
||||
calendarView.ClickNext();
|
||||
Assert.Equal(6, calendarView.ContextDate.Month);
|
||||
@@ -36,7 +37,7 @@ public class CalendarViewTests
|
||||
window.Content = calendarView;
|
||||
window.Show();
|
||||
Dispatcher.UIThread.RunJobs();
|
||||
calendarView.ContextDate = new CalendarContext(2023, 5);
|
||||
calendarView.SyncContextDate(new CalendarContext(2023, 5));
|
||||
Dispatcher.UIThread.RunJobs();
|
||||
calendarView.ClickFastNext();
|
||||
Assert.Equal(5, calendarView.ContextDate.Month);
|
||||
@@ -52,7 +53,7 @@ public class CalendarViewTests
|
||||
window.Content = calendarView;
|
||||
window.Show();
|
||||
Dispatcher.UIThread.RunJobs();
|
||||
calendarView.ContextDate = new CalendarContext(2023, 5);
|
||||
calendarView.SyncContextDate(new CalendarContext(2023, 5));
|
||||
Dispatcher.UIThread.RunJobs();
|
||||
calendarView.ClickNext();
|
||||
Assert.Equal(5, calendarView.ContextDate.Month);
|
||||
@@ -67,7 +68,7 @@ public class CalendarViewTests
|
||||
window.Content = calendarView;
|
||||
window.Show();
|
||||
Dispatcher.UIThread.RunJobs();
|
||||
calendarView.ContextDate = new CalendarContext(null, null, 2000, 2009);
|
||||
calendarView.SyncContextDate(new CalendarContext(null, null, 2000, 2009));
|
||||
Dispatcher.UIThread.RunJobs();
|
||||
calendarView.ClickNext();
|
||||
Assert.Equal(2010, calendarView.ContextDate.StartYear);
|
||||
@@ -82,7 +83,7 @@ public class CalendarViewTests
|
||||
window.Content = calendarView;
|
||||
window.Show();
|
||||
Dispatcher.UIThread.RunJobs();
|
||||
calendarView.ContextDate = new CalendarContext(null, null, 1900, 1999);
|
||||
calendarView.SyncContextDate(new CalendarContext(null, null, 1900, 1999));
|
||||
Dispatcher.UIThread.RunJobs();
|
||||
calendarView.ClickNext();
|
||||
Assert.Equal(2000, calendarView.ContextDate.StartYear);
|
||||
@@ -97,7 +98,7 @@ public class CalendarViewTests
|
||||
window.Content = calendarView;
|
||||
window.Show();
|
||||
Dispatcher.UIThread.RunJobs();
|
||||
calendarView.ContextDate = new CalendarContext(2023, 5);
|
||||
calendarView.SyncContextDate(new CalendarContext(2023, 5));
|
||||
Dispatcher.UIThread.RunJobs();
|
||||
calendarView.ClickPrevious();
|
||||
Assert.Equal(4, calendarView.ContextDate.Month);
|
||||
@@ -112,7 +113,7 @@ public class CalendarViewTests
|
||||
window.Content = calendarView;
|
||||
window.Show();
|
||||
Dispatcher.UIThread.RunJobs();
|
||||
calendarView.ContextDate = new CalendarContext(2023, 5);
|
||||
calendarView.SyncContextDate(new CalendarContext(2023, 5));
|
||||
Dispatcher.UIThread.RunJobs();
|
||||
calendarView.ClickPrevious();
|
||||
Assert.Equal(2022, calendarView.ContextDate.Year);
|
||||
@@ -126,7 +127,7 @@ public class CalendarViewTests
|
||||
window.Content = calendarView;
|
||||
window.Show();
|
||||
Dispatcher.UIThread.RunJobs();
|
||||
calendarView.ContextDate = new CalendarContext(null, null, 2000, 2009);
|
||||
calendarView.SyncContextDate(new CalendarContext(null, null, 2000, 2009));
|
||||
Dispatcher.UIThread.RunJobs();
|
||||
calendarView.ClickPrevious();
|
||||
Assert.Equal(1990, calendarView.ContextDate.StartYear);
|
||||
@@ -141,7 +142,7 @@ public class CalendarViewTests
|
||||
window.Content = calendarView;
|
||||
window.Show();
|
||||
Dispatcher.UIThread.RunJobs();
|
||||
calendarView.ContextDate = new CalendarContext(null, null, 1900, 1999);
|
||||
calendarView.SyncContextDate(new CalendarContext(null, null, 1900, 1999));
|
||||
Dispatcher.UIThread.RunJobs();
|
||||
calendarView.ClickPrevious();
|
||||
Assert.Equal(1800, calendarView.ContextDate.StartYear);
|
||||
@@ -156,7 +157,7 @@ public class CalendarViewTests
|
||||
window.Content = calendarView;
|
||||
window.Show();
|
||||
Dispatcher.UIThread.RunJobs();
|
||||
calendarView.ContextDate = new CalendarContext(2023, 5);
|
||||
calendarView.SyncContextDate(new CalendarContext(2023, 5));
|
||||
Dispatcher.UIThread.RunJobs();
|
||||
calendarView.ClickFastPrevious();
|
||||
Assert.Equal(2022, calendarView.ContextDate.Year);
|
||||
@@ -170,7 +171,7 @@ public class CalendarViewTests
|
||||
window.Content = calendarView;
|
||||
window.Show();
|
||||
Dispatcher.UIThread.RunJobs();
|
||||
calendarView.ContextDate = new CalendarContext(2023, 5);
|
||||
calendarView.SyncContextDate(new CalendarContext(2023, 5));
|
||||
Dispatcher.UIThread.RunJobs();
|
||||
calendarView.ClickHeaderButton();
|
||||
Assert.Equal(CalendarViewMode.Decade, calendarView.Mode);
|
||||
@@ -186,7 +187,7 @@ public class CalendarViewTests
|
||||
window.Content = calendarView;
|
||||
window.Show();
|
||||
Dispatcher.UIThread.RunJobs();
|
||||
calendarView.ContextDate = new CalendarContext(null, null, 2000, 2009);
|
||||
calendarView.SyncContextDate(new CalendarContext(null, null, 2000, 2009));
|
||||
Dispatcher.UIThread.RunJobs();
|
||||
calendarView.ClickHeaderButton();
|
||||
Assert.Equal(CalendarViewMode.Century, calendarView.Mode);
|
||||
@@ -200,7 +201,7 @@ public class CalendarViewTests
|
||||
window.Content = calendarView;
|
||||
window.Show();
|
||||
Dispatcher.UIThread.RunJobs();
|
||||
calendarView.ContextDate = new CalendarContext(null, null, 1900, 1999);
|
||||
calendarView.SyncContextDate(new CalendarContext(null, null, 1900, 1999));
|
||||
Dispatcher.UIThread.RunJobs();
|
||||
var yearButton = calendarView.FindDescendantOfType<CalendarYearButton>();
|
||||
var position = yearButton?.TranslatePoint(new Point(6, 6), window);
|
||||
@@ -217,7 +218,7 @@ public class CalendarViewTests
|
||||
window.Content = calendarView;
|
||||
window.Show();
|
||||
Dispatcher.UIThread.RunJobs();
|
||||
calendarView.ContextDate = new CalendarContext(null, null, 2000, 2009);
|
||||
calendarView.SyncContextDate(new CalendarContext(null, null, 2000, 2009));
|
||||
Dispatcher.UIThread.RunJobs();
|
||||
var yearButton = calendarView.FindDescendantOfType<CalendarYearButton>();
|
||||
var position = yearButton?.TranslatePoint(new Point(6, 6), window);
|
||||
@@ -234,7 +235,7 @@ public class CalendarViewTests
|
||||
window.Content = calendarView;
|
||||
window.Show();
|
||||
Dispatcher.UIThread.RunJobs();
|
||||
calendarView.ContextDate = new CalendarContext(2023, 5);
|
||||
calendarView.SyncContextDate(new CalendarContext(2023, 5));
|
||||
Dispatcher.UIThread.RunJobs();
|
||||
var yearButton = calendarView.FindDescendantOfType<CalendarYearButton>();
|
||||
var position = yearButton?.TranslatePoint(new Point(6, 6), window);
|
||||
@@ -242,4 +243,34 @@ public class CalendarViewTests
|
||||
window.MouseUp(position.Value, MouseButton.Left);
|
||||
Assert.Equal(CalendarViewMode.Month, calendarView.Mode);
|
||||
}
|
||||
|
||||
[AvaloniaFact]
|
||||
public void Update_FirstDayOfWeek_UpdatesCalendar()
|
||||
{
|
||||
var window = new Window();
|
||||
var calendarView = new CalendarView { Mode = CalendarViewMode.Month, FirstDayOfWeek = DayOfWeek.Sunday};
|
||||
window.Content = calendarView;
|
||||
window.Show();
|
||||
Dispatcher.UIThread.RunJobs();
|
||||
calendarView.SyncContextDate(new CalendarContext(2023, 5));
|
||||
Dispatcher.UIThread.RunJobs();
|
||||
var monthGrid = calendarView.GetTemplateChildren()
|
||||
.FirstOrDefault(a => a is Grid && a.Name == CalendarView.PART_MonthGrid) as Grid;
|
||||
Assert.NotNull(monthGrid);
|
||||
var dayHeader = monthGrid.Children.OfType<TextBlock>().FirstOrDefault();
|
||||
var dayButton = monthGrid.Children.OfType<CalendarDayButton>().FirstOrDefault();
|
||||
Assert.NotNull(dayHeader);
|
||||
Assert.NotNull(dayButton);
|
||||
Assert.Equal("S", dayHeader.Text);
|
||||
Assert.Equal(30, (dayButton.DataContext as DateTime?)?.Day);
|
||||
|
||||
calendarView.FirstDayOfWeek = DayOfWeek.Tuesday;
|
||||
|
||||
dayHeader = monthGrid.Children.OfType<TextBlock>().FirstOrDefault();
|
||||
dayButton = monthGrid.Children.OfType<CalendarDayButton>().FirstOrDefault();
|
||||
Assert.Equal("T", dayHeader.Text);
|
||||
Assert.Equal(25, (dayButton.DataContext as DateTime?)?.Day);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,96 @@
|
||||
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);
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user