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

73 lines
2.2 KiB
C#

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);
}
}