From 8cd3d1e0315e986532c4dbddb9e8bd98d856272d Mon Sep 17 00:00:00 2001 From: Dong Bin Date: Mon, 17 Feb 2025 22:52:10 +0800 Subject: [PATCH] test: WIP datepicker test. --- .../DateTimePicker/DatePickerTests.cs | 313 ++++++++++++++++++ .../TestHelpers/ControlExtensions.cs | 17 + 2 files changed, 330 insertions(+) create mode 100644 tests/HeadlessTest.Ursa/Controls/DateTimePicker/DatePickerTests.cs create mode 100644 tests/HeadlessTest.Ursa/TestHelpers/ControlExtensions.cs diff --git a/tests/HeadlessTest.Ursa/Controls/DateTimePicker/DatePickerTests.cs b/tests/HeadlessTest.Ursa/Controls/DateTimePicker/DatePickerTests.cs new file mode 100644 index 0000000..1b3df59 --- /dev/null +++ b/tests/HeadlessTest.Ursa/Controls/DateTimePicker/DatePickerTests.cs @@ -0,0 +1,313 @@ +using Avalonia; +using Avalonia.Controls; +using Avalonia.Controls.Primitives; +using Avalonia.Headless; +using Avalonia.Headless.XUnit; +using Avalonia.Input; +using Avalonia.Layout; +using Avalonia.LogicalTree; +using Avalonia.Threading; +using HeadlessTest.Ursa.TestHelpers; +using Ursa.Controls; +using DatePicker = Ursa.Controls.DatePicker; + +namespace HeadlessTest.Ursa.Controls.DateTimePicker; + +public class DatePickerTests +{ + [AvaloniaFact] + public void Click_Opens_Popup() + { + var window = new Window(); + var picker = new DatePicker() + { + Width = 300, + HorizontalAlignment = HorizontalAlignment.Left, + VerticalAlignment = VerticalAlignment.Top + }; + window.Content = picker; + window.Show(); + Assert.False(picker.IsDropdownOpen); + Dispatcher.UIThread.RunJobs(); + window.MouseDown(new Point(10, 10), MouseButton.Left); + Dispatcher.UIThread.RunJobs(); + Assert.True(picker.IsDropdownOpen); + + window.MouseDown(new Point(10, 10), MouseButton.Left); + Dispatcher.UIThread.RunJobs(); + Assert.True(picker.IsDropdownOpen); + + } + + [AvaloniaFact] + public void Click_Button_Toggles_Popup() + { + var window = new Window(); + var picker = new DatePicker() + { + Width = 300, + HorizontalAlignment = HorizontalAlignment.Left, + VerticalAlignment = VerticalAlignment.Top + }; + window.Content = picker; + window.Show(); + + var button = picker.GetTemplateChildOfType