From 5e28ba1ef9453b05b3d4bf5d142a0032c38994f1 Mon Sep 17 00:00:00 2001 From: Tig Date: Fri, 26 Jul 2024 08:02:18 -0400 Subject: [PATCH] Added low-level Focus tests --- .../Application.NavigationTests.cs | 76 +++++++++++++++++++ 1 file changed, 76 insertions(+) diff --git a/UnitTests/Application/Application.NavigationTests.cs b/UnitTests/Application/Application.NavigationTests.cs index fe191de78..109581fc1 100644 --- a/UnitTests/Application/Application.NavigationTests.cs +++ b/UnitTests/Application/Application.NavigationTests.cs @@ -83,4 +83,80 @@ public class ApplicationNavigationTests (ITestOutputHelper output) // Assert Assert.Equal (grandChildView, result); } + + [Fact] + public void MoveNextView_ShouldMoveFocusToNextView () + { + // Arrange + var top = new Toplevel (); + var view1 = new View () { Id = "view1", CanFocus = true }; + var view2 = new View () { Id = "view2", CanFocus = true }; + top.Add (view1, view2); + Application.Top = top; + Application.Current = top; + view1.SetFocus (); + + // Act + ApplicationNavigation.MoveNextView (); + + // Assert + Assert.True (view2.HasFocus); + } + + [Fact] + public void MoveNextViewOrTop_ShouldMoveFocusToNextViewOrTop () + { + // Arrange + var top = new Toplevel (); + var view1 = new View () { Id = "view1", CanFocus = true }; + var view2 = new View () { Id = "view2", CanFocus = true }; + top.Add (view1, view2); + Application.Top = top; + Application.Current = top; + view1.SetFocus (); + + // Act + ApplicationNavigation.MoveNextViewOrTop (); + + // Assert + Assert.True (view2.HasFocus); + } + + [Fact] + public void MovePreviousView_ShouldMoveFocusToPreviousView () + { + // Arrange + var top = new Toplevel (); + var view1 = new View () { Id = "view1", CanFocus = true }; + var view2 = new View () { Id = "view2", CanFocus = true }; + top.Add (view1, view2); + Application.Top = top; + Application.Current = top; + view2.SetFocus (); + + // Act + ApplicationNavigation.MovePreviousView (); + + // Assert + Assert.True (view1.HasFocus); + } + + [Fact] + public void MovePreviousViewOrTop_ShouldMoveFocusToPreviousViewOrTop () + { + // Arrange + var top = new Toplevel (); + var view1 = new View () { Id = "view1", CanFocus = true }; + var view2 = new View () { Id = "view2", CanFocus = true }; + top.Add (view1, view2); + Application.Top = top; + Application.Current = top; + view2.SetFocus (); + + // Act + ApplicationNavigation.MovePreviousViewOrTop (); + + // Assert + Assert.True (view1.HasFocus); + } }