From 9835fe0ba4e02cd0fd19cc5dae6fe58b13c1189d Mon Sep 17 00:00:00 2001 From: rabbitism Date: Wed, 13 Nov 2024 01:11:59 +0800 Subject: [PATCH] feat: add drawer and dialog headless test. --- .../Dialog_Primary_Focus/Test.cs | 38 ++++++++++++++++++- .../Dialog_Primary_Focus/TestWindow.axaml.cs | 17 ++++++++- 2 files changed, 51 insertions(+), 4 deletions(-) diff --git a/tests/HeadlessTest.Ursa/Controls/OverlayShared/Dialog_Primary_Focus/Test.cs b/tests/HeadlessTest.Ursa/Controls/OverlayShared/Dialog_Primary_Focus/Test.cs index a5edd8f..bc86188 100644 --- a/tests/HeadlessTest.Ursa/Controls/OverlayShared/Dialog_Primary_Focus/Test.cs +++ b/tests/HeadlessTest.Ursa/Controls/OverlayShared/Dialog_Primary_Focus/Test.cs @@ -9,12 +9,45 @@ namespace HeadlessTest.Ursa.Controls.OverlayShared.Dialog_Primary_Focus; public class Test { [AvaloniaFact] - public void Normal_Dialog_Focus_On_Border() + public async Task Normal_Drawer_Focus_On_Border() + { + var ursaWindow = new TestWindow(); + ursaWindow.Show(); + ursaWindow.InvokeNormalDrawer(); + Dispatcher.UIThread.RunJobs(); + await Task.Delay(500); + var dialog = ursaWindow.GetVisualDescendants().OfType().FirstOrDefault(); + Assert.NotNull(dialog); + var border = dialog.GetVisualDescendants().OfType().FirstOrDefault(a=>a.Name == "PART_Root"); + var text = dialog.GetVisualDescendants().OfType().FirstOrDefault(); + Assert.True(border?.IsFocused); + Assert.False(text?.IsFocused); + } + + [AvaloniaFact] + public async Task Focus_Drawer_Focus_On_Primary() + { + var ursaWindow = new TestWindow(); + ursaWindow.Show(); + ursaWindow.InvokeFocusDrawer(); + Dispatcher.UIThread.RunJobs(); + await Task.Delay(500); + var dialog = ursaWindow.GetVisualDescendants().OfType().FirstOrDefault(); + Assert.NotNull(dialog); + var border = dialog.GetVisualDescendants().OfType().FirstOrDefault(a=>a.Name == "PART_Root"); + var text = dialog.GetVisualDescendants().OfType().FirstOrDefault(); + Assert.False(border?.IsFocused); + Assert.True(text?.IsFocused); + } + + [AvaloniaFact] + public async Task Normal_Dialog_Focus_On_Border() { var ursaWindow = new TestWindow(); ursaWindow.Show(); ursaWindow.InvokeNormalDialog(); Dispatcher.UIThread.RunJobs(); + await Task.Delay(100); var dialog = ursaWindow.GetVisualDescendants().OfType().FirstOrDefault(); Assert.NotNull(dialog); var border = dialog.GetVisualDescendants().OfType().FirstOrDefault(a=>a.Name == "PART_Border"); @@ -24,12 +57,13 @@ public class Test } [AvaloniaFact] - public void Focus_Dialog_Focus_On_Primary() + public async Task Focus_Dialog_Focus_On_Primary() { var ursaWindow = new TestWindow(); ursaWindow.Show(); ursaWindow.InvokeFocusDialog(); Dispatcher.UIThread.RunJobs(); + await Task.Delay(100); var dialog = ursaWindow.GetVisualDescendants().OfType().FirstOrDefault(); Assert.NotNull(dialog); var border = dialog.GetVisualDescendants().OfType().FirstOrDefault(a=>a.Name == "PART_Border"); diff --git a/tests/HeadlessTest.Ursa/Controls/OverlayShared/Dialog_Primary_Focus/TestWindow.axaml.cs b/tests/HeadlessTest.Ursa/Controls/OverlayShared/Dialog_Primary_Focus/TestWindow.axaml.cs index 90153ad..a835212 100644 --- a/tests/HeadlessTest.Ursa/Controls/OverlayShared/Dialog_Primary_Focus/TestWindow.axaml.cs +++ b/tests/HeadlessTest.Ursa/Controls/OverlayShared/Dialog_Primary_Focus/TestWindow.axaml.cs @@ -1,4 +1,5 @@ using Ursa.Controls; +using Ursa.Controls.Options; namespace HeadlessTest.Ursa.Controls.OverlayShared.Dialog_Primary_Focus; @@ -9,15 +10,27 @@ public partial class TestWindow : UrsaWindow InitializeComponent(); } + public void InvokeNormalDrawer() + { + Drawer.ShowModal("Hello World", + options: new DrawerOptions() { TopLevelHashCode = GetHashCode() }); + } + + public void InvokeFocusDrawer() + { + Drawer.ShowModal("Hello World", + options: new DrawerOptions() { TopLevelHashCode = GetHashCode() }); + } + public void InvokeNormalDialog() { OverlayDialog.ShowModal("Hello World", - options: new OverlayDialogOptions { TopLevelHashCode = GetHashCode() }); + options: new OverlayDialogOptions() { TopLevelHashCode = GetHashCode() }); } public void InvokeFocusDialog() { OverlayDialog.ShowModal("Hello World", - options: new OverlayDialogOptions { TopLevelHashCode = GetHashCode() }); + options: new OverlayDialogOptions() { TopLevelHashCode = GetHashCode() }); } } \ No newline at end of file