EnabledTests.cs 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. #nullable enable
  2. namespace UnitTests.ViewBaseTests;
  3. public class EnabledTests
  4. {
  5. [Fact]
  6. [AutoInitShutdown]
  7. public void _Enabled_Sets_Also_Sets_SubViews ()
  8. {
  9. var wasClicked = false;
  10. var button = new Button { Text = "Click Me" };
  11. button.IsDefault = true;
  12. button.Accepting += (s, e) => wasClicked = !wasClicked;
  13. var win = new Window { Width = Dim.Fill (), Height = Dim.Fill () };
  14. win.Add (button);
  15. var top = new Runnable ();
  16. top.Add (win);
  17. var iterations = 0;
  18. Application.Iteration += OnApplicationOnIteration;
  19. Application.Run (top);
  20. Application.Iteration -= OnApplicationOnIteration;
  21. Assert.Equal (1, iterations);
  22. top.Dispose ();
  23. return;
  24. void OnApplicationOnIteration (object? s, EventArgs<IApplication?> a)
  25. {
  26. iterations++;
  27. win.NewKeyDownEvent (Key.Enter);
  28. Assert.True (wasClicked);
  29. button.NewMouseEvent (new () { Flags = MouseFlags.Button1Clicked });
  30. Assert.False (wasClicked);
  31. Assert.True (button.Enabled);
  32. Assert.True (button.CanFocus);
  33. Assert.True (button.HasFocus);
  34. Assert.True (win.Enabled);
  35. Assert.True (win.CanFocus);
  36. Assert.True (win.HasFocus);
  37. Assert.True (button.HasFocus);
  38. win.Enabled = false;
  39. Assert.False (button.HasFocus);
  40. button.NewKeyDownEvent (Key.Enter);
  41. Assert.False (wasClicked);
  42. button.NewMouseEvent (new () { Flags = MouseFlags.Button1Clicked });
  43. Assert.False (wasClicked);
  44. Assert.False (button.Enabled);
  45. Assert.True (button.CanFocus);
  46. Assert.False (button.HasFocus);
  47. Assert.False (win.Enabled);
  48. Assert.True (win.CanFocus);
  49. Assert.False (win.HasFocus);
  50. button.SetFocus ();
  51. Assert.False (button.HasFocus);
  52. Assert.False (win.HasFocus);
  53. win.SetFocus ();
  54. Assert.False (button.HasFocus);
  55. Assert.False (win.HasFocus);
  56. win.Enabled = true;
  57. win.FocusDeepest (NavigationDirection.Forward, null);
  58. Assert.True (button.HasFocus);
  59. Assert.True (win.HasFocus);
  60. Application.RequestStop ();
  61. }
  62. }
  63. }