ResponderTests.cs 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using Terminal.Gui;
  5. using Xunit;
  6. using static Terminal.Gui.CoreTests.ViewTests;
  7. // Alias Console to MockConsole so we don't accidentally use Console
  8. using Console = Terminal.Gui.FakeConsole;
  9. namespace Terminal.Gui.CoreTests {
  10. public class ResponderTests {
  11. [Fact]
  12. public void New_Initializes ()
  13. {
  14. var r = new Responder ();
  15. Assert.NotNull (r);
  16. Assert.Equal ("Terminal.Gui.Responder", r.ToString ());
  17. Assert.False (r.CanFocus);
  18. Assert.False (r.HasFocus);
  19. Assert.True (r.Enabled);
  20. Assert.True (r.Visible);
  21. }
  22. [Fact]
  23. public void New_Methods_Return_False ()
  24. {
  25. var r = new Responder ();
  26. Assert.False (r.ProcessKey (new KeyEvent () { Key = Key.Unknown }));
  27. Assert.False (r.ProcessHotKey (new KeyEvent () { Key = Key.Unknown }));
  28. Assert.False (r.ProcessColdKey (new KeyEvent () { Key = Key.Unknown }));
  29. Assert.False (r.OnKeyDown (new KeyEvent () { Key = Key.Unknown }));
  30. Assert.False (r.OnKeyUp (new KeyEvent () { Key = Key.Unknown }));
  31. Assert.False (r.MouseEvent (new MouseEvent () { Flags = MouseFlags.AllEvents }));
  32. Assert.False (r.OnMouseEnter (new MouseEvent () { Flags = MouseFlags.AllEvents }));
  33. Assert.False (r.OnMouseLeave (new MouseEvent () { Flags = MouseFlags.AllEvents }));
  34. Assert.False (r.OnEnter (new View ()));
  35. Assert.False (r.OnLeave (new View ()));
  36. }
  37. // Generic lifetime (IDisposable) tests
  38. [Fact]
  39. public void Dispose_Works ()
  40. {
  41. }
  42. public class DerivedView : View {
  43. public DerivedView ()
  44. {
  45. }
  46. public override bool OnKeyDown (KeyEvent keyEvent)
  47. {
  48. return true;
  49. }
  50. }
  51. [Fact]
  52. public void IsOverridden_False_IfNotOverridden ()
  53. {
  54. // MouseEvent IS defined on Responder but NOT overridden
  55. Assert.False (Responder.IsOverridden (new Responder () { }, "MouseEvent"));
  56. // MouseEvent is defined on Responder and NOT overrident on View
  57. Assert.False (Responder.IsOverridden (new View () { Text = "View does not override MouseEvent" }, "MouseEvent"));
  58. Assert.False (Responder.IsOverridden (new DerivedView () { Text = "DerivedView does not override MouseEvent" }, "MouseEvent"));
  59. // MouseEvent is NOT defined on DerivedView
  60. Assert.False (Responder.IsOverridden (new DerivedView () { Text = "DerivedView does not override MouseEvent" }, "MouseEvent"));
  61. // OnKeyDown is defined on View and NOT overrident on Button
  62. Assert.False (Responder.IsOverridden (new Button () { Text = "Button does not override OnKeyDown" }, "OnKeyDown"));
  63. }
  64. [Fact]
  65. public void IsOverridden_True_IfOverridden ()
  66. {
  67. // MouseEvent is defined on Responder IS overriden on ScrollBarView (but not View)
  68. Assert.True (Responder.IsOverridden (new ScrollBarView () { Text = "ScrollBarView overrides MouseEvent" }, "MouseEvent"));
  69. // OnKeyDown is defined on View
  70. Assert.True (Responder.IsOverridden (new View () { Text = "View overrides OnKeyDown" }, "OnKeyDown"));
  71. // OnKeyDown is defined on DerivedView
  72. Assert.True (Responder.IsOverridden (new DerivedView () { Text = "DerivedView overrides OnKeyDown" }, "OnKeyDown"));
  73. // ScrollBarView overrides both MouseEvent (from Responder) and Redraw (from View)
  74. Assert.True (Responder.IsOverridden (new ScrollBarView () { Text = "ScrollBarView overrides MouseEvent" }, "MouseEvent"));
  75. Assert.True (Responder.IsOverridden (new ScrollBarView () { Text = "ScrollBarView overrides Redraw" }, "Redraw"));
  76. Assert.True (Responder.IsOverridden (new Button () { Text = "Button overrides MouseEvent" }, "MouseEvent"));
  77. }
  78. }
  79. }