Files
Ursa.Avalonia/tests/HeadlessTest.Ursa/Controls/DateTimePicker/TimePickerTests.cs
2025-02-18 18:02:37 +08:00

62 lines
1.9 KiB
C#

using Avalonia;
using Avalonia.Controls;
using Avalonia.Headless;
using Avalonia.Headless.XUnit;
using Avalonia.Input;
using Avalonia.Layout;
using Avalonia.Threading;
using HeadlessTest.Ursa.TestHelpers;
using TimePicker = Ursa.Controls.TimePicker;
namespace HeadlessTest.Ursa.Controls.DateTimePicker;
public class TimePickerTests
{
[AvaloniaFact]
public void Click_Opens_Popup()
{
var window = new Window();
var timePicker = new TimePicker()
{
Width = 300,
HorizontalAlignment = HorizontalAlignment.Left,
VerticalAlignment = VerticalAlignment.Top,
};
window.Content = timePicker;
window.Show();
Dispatcher.UIThread.RunJobs();
Assert.False(timePicker.IsDropdownOpen);
window.MouseDown(new Point(10, 10), MouseButton.Left);
Assert.True(timePicker.IsDropdownOpen);
}
[AvaloniaFact]
public void Click_Button_Toggles_Popup()
{
var window = new Window();
var picker = new TimePicker()
{
Width = 300,
HorizontalAlignment = HorizontalAlignment.Left,
VerticalAlignment = VerticalAlignment.Top
};
window.Content = picker;
window.Show();
var button = picker.GetTemplateChildOfType<Button>(TimePicker.PART_Button);
var position = button?.TranslatePoint(new Point(5, 5), window);
Assert.NotNull(position);
Assert.False(picker.IsDropdownOpen);
Dispatcher.UIThread.RunJobs();
window.MouseDown(position.Value, MouseButton.Left);
window.MouseUp(position.Value, MouseButton.Left);
Dispatcher.UIThread.RunJobs();
Assert.True(picker.IsDropdownOpen);
window.MouseDown(position.Value, MouseButton.Left);
window.MouseUp(position.Value, MouseButton.Left);
Dispatcher.UIThread.RunJobs();
Assert.False(picker.IsDropdownOpen);
}
}