EnabledTests.cs 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. using UnitTests;
  2. namespace Terminal.Gui.ViewTests;
  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 Toplevel ();
  16. top.Add (win);
  17. var iterations = 0;
  18. Application.Iteration += (s, a) =>
  19. {
  20. iterations++;
  21. win.NewKeyDownEvent (Key.Enter);
  22. Assert.True (wasClicked);
  23. button.NewMouseEvent (new () { Flags = MouseFlags.Button1Clicked });
  24. Assert.False (wasClicked);
  25. Assert.True (button.Enabled);
  26. Assert.True (button.CanFocus);
  27. Assert.True (button.HasFocus);
  28. Assert.True (win.Enabled);
  29. Assert.True (win.CanFocus);
  30. Assert.True (win.HasFocus);
  31. Assert.True (button.HasFocus);
  32. win.Enabled = false;
  33. Assert.False (button.HasFocus);
  34. button.NewKeyDownEvent (Key.Enter);
  35. Assert.False (wasClicked);
  36. button.NewMouseEvent (new () { Flags = MouseFlags.Button1Clicked });
  37. Assert.False (wasClicked);
  38. Assert.False (button.Enabled);
  39. Assert.True (button.CanFocus);
  40. Assert.False (button.HasFocus);
  41. Assert.False (win.Enabled);
  42. Assert.True (win.CanFocus);
  43. Assert.False (win.HasFocus);
  44. button.SetFocus ();
  45. Assert.False (button.HasFocus);
  46. Assert.False (win.HasFocus);
  47. win.SetFocus ();
  48. Assert.False (button.HasFocus);
  49. Assert.False (win.HasFocus);
  50. win.Enabled = true;
  51. win.FocusDeepest (NavigationDirection.Forward, null);
  52. Assert.True (button.HasFocus);
  53. Assert.True (win.HasFocus);
  54. Application.RequestStop ();
  55. };
  56. Application.Run (top);
  57. Assert.Equal (1, iterations);
  58. top.Dispose ();
  59. }
  60. }