diff --git a/tests/HeadlessTest.Ursa/Controls/OverlayShared/Dialog_Primary_Focus/FocusDialog.axaml b/tests/HeadlessTest.Ursa/Controls/OverlayShared/Dialog_Primary_Focus/FocusDialog.axaml new file mode 100644 index 0000000..e1903bd --- /dev/null +++ b/tests/HeadlessTest.Ursa/Controls/OverlayShared/Dialog_Primary_Focus/FocusDialog.axaml @@ -0,0 +1,10 @@ + + + diff --git a/tests/HeadlessTest.Ursa/Controls/OverlayShared/Dialog_Primary_Focus/FocusDialog.axaml.cs b/tests/HeadlessTest.Ursa/Controls/OverlayShared/Dialog_Primary_Focus/FocusDialog.axaml.cs new file mode 100644 index 0000000..fc70acd --- /dev/null +++ b/tests/HeadlessTest.Ursa/Controls/OverlayShared/Dialog_Primary_Focus/FocusDialog.axaml.cs @@ -0,0 +1,13 @@ +using Avalonia; +using Avalonia.Controls; +using Avalonia.Markup.Xaml; + +namespace HeadlessTest.Ursa.Controls.OverlayShared.Dialog_Primary_Focus; + +public partial class FocusDialog : UserControl +{ + public FocusDialog() + { + InitializeComponent(); + } +} \ No newline at end of file diff --git a/tests/HeadlessTest.Ursa/Controls/OverlayShared/Dialog_Primary_Focus/NormalDialog.axaml b/tests/HeadlessTest.Ursa/Controls/OverlayShared/Dialog_Primary_Focus/NormalDialog.axaml new file mode 100644 index 0000000..3d4c3e6 --- /dev/null +++ b/tests/HeadlessTest.Ursa/Controls/OverlayShared/Dialog_Primary_Focus/NormalDialog.axaml @@ -0,0 +1,9 @@ + + + diff --git a/tests/HeadlessTest.Ursa/Controls/OverlayShared/Dialog_Primary_Focus/NormalDialog.axaml.cs b/tests/HeadlessTest.Ursa/Controls/OverlayShared/Dialog_Primary_Focus/NormalDialog.axaml.cs new file mode 100644 index 0000000..0d0025d --- /dev/null +++ b/tests/HeadlessTest.Ursa/Controls/OverlayShared/Dialog_Primary_Focus/NormalDialog.axaml.cs @@ -0,0 +1,13 @@ +using Avalonia; +using Avalonia.Controls; +using Avalonia.Markup.Xaml; + +namespace HeadlessTest.Ursa.Controls.OverlayShared.Dialog_Primary_Focus; + +public partial class NormalDialog : UserControl +{ + public NormalDialog() + { + InitializeComponent(); + } +} \ No newline at end of file diff --git a/tests/HeadlessTest.Ursa/Controls/OverlayShared/Dialog_Primary_Focus/Test.cs b/tests/HeadlessTest.Ursa/Controls/OverlayShared/Dialog_Primary_Focus/Test.cs new file mode 100644 index 0000000..a5edd8f --- /dev/null +++ b/tests/HeadlessTest.Ursa/Controls/OverlayShared/Dialog_Primary_Focus/Test.cs @@ -0,0 +1,40 @@ +using Avalonia.Controls; +using Avalonia.Headless.XUnit; +using Avalonia.Threading; +using Avalonia.VisualTree; +using Ursa.Controls; + +namespace HeadlessTest.Ursa.Controls.OverlayShared.Dialog_Primary_Focus; + +public class Test +{ + [AvaloniaFact] + public void Normal_Dialog_Focus_On_Border() + { + var ursaWindow = new TestWindow(); + ursaWindow.Show(); + ursaWindow.InvokeNormalDialog(); + Dispatcher.UIThread.RunJobs(); + var dialog = ursaWindow.GetVisualDescendants().OfType().FirstOrDefault(); + Assert.NotNull(dialog); + var border = dialog.GetVisualDescendants().OfType().FirstOrDefault(a=>a.Name == "PART_Border"); + var text = dialog.GetVisualDescendants().OfType().FirstOrDefault(); + Assert.True(border?.IsFocused); + Assert.False(text?.IsFocused); + } + + [AvaloniaFact] + public void Focus_Dialog_Focus_On_Primary() + { + var ursaWindow = new TestWindow(); + ursaWindow.Show(); + ursaWindow.InvokeFocusDialog(); + Dispatcher.UIThread.RunJobs(); + var dialog = ursaWindow.GetVisualDescendants().OfType().FirstOrDefault(); + Assert.NotNull(dialog); + var border = dialog.GetVisualDescendants().OfType().FirstOrDefault(a=>a.Name == "PART_Border"); + var text = dialog.GetVisualDescendants().OfType().FirstOrDefault(); + Assert.False(border?.IsFocused); + Assert.True(text?.IsFocused); + } +} \ No newline at end of file diff --git a/tests/HeadlessTest.Ursa/Controls/OverlayShared/Dialog_Primary_Focus/TestWindow.axaml b/tests/HeadlessTest.Ursa/Controls/OverlayShared/Dialog_Primary_Focus/TestWindow.axaml new file mode 100644 index 0000000..855ec1d --- /dev/null +++ b/tests/HeadlessTest.Ursa/Controls/OverlayShared/Dialog_Primary_Focus/TestWindow.axaml @@ -0,0 +1,11 @@ + + Welcome to Avalonia! + 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 new file mode 100644 index 0000000..90153ad --- /dev/null +++ b/tests/HeadlessTest.Ursa/Controls/OverlayShared/Dialog_Primary_Focus/TestWindow.axaml.cs @@ -0,0 +1,23 @@ +using Ursa.Controls; + +namespace HeadlessTest.Ursa.Controls.OverlayShared.Dialog_Primary_Focus; + +public partial class TestWindow : UrsaWindow +{ + public TestWindow() + { + InitializeComponent(); + } + + public void InvokeNormalDialog() + { + OverlayDialog.ShowModal("Hello World", + options: new OverlayDialogOptions { TopLevelHashCode = GetHashCode() }); + } + + public void InvokeFocusDialog() + { + OverlayDialog.ShowModal("Hello World", + options: new OverlayDialogOptions { TopLevelHashCode = GetHashCode() }); + } +} \ No newline at end of file