123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- using Xunit;
- // Alias Console to MockConsole so we don't accidentally use Console
- using Console = Terminal.Gui.FakeConsole;
- namespace Terminal.Gui.InputTests {
- public class ResponderTests {
- [Fact, TestRespondersDisposed]
- public void New_Initializes ()
- {
- var r = new Responder ();
- Assert.NotNull (r);
- Assert.Equal ("Terminal.Gui.Responder", r.ToString ());
- Assert.False (r.CanFocus);
- Assert.False (r.HasFocus);
- Assert.True (r.Enabled);
- Assert.True (r.Visible);
- r.Dispose ();
- }
- [Fact, TestRespondersDisposed]
- public void New_Methods_Return_False ()
- {
- var r = new Responder ();
- Assert.False (r.ProcessKey (new KeyEvent () { Key = Key.Unknown }));
- Assert.False (r.ProcessHotKey (new KeyEvent () { Key = Key.Unknown }));
- Assert.False (r.ProcessColdKey (new KeyEvent () { Key = Key.Unknown }));
- Assert.False (r.OnKeyDown (new KeyEvent () { Key = Key.Unknown }));
- Assert.False (r.OnKeyUp (new KeyEvent () { Key = Key.Unknown }));
- Assert.False (r.MouseEvent (new MouseEvent () { Flags = MouseFlags.AllEvents }));
- Assert.False (r.OnMouseEnter (new MouseEvent () { Flags = MouseFlags.AllEvents }));
- Assert.False (r.OnMouseLeave (new MouseEvent () { Flags = MouseFlags.AllEvents }));
-
- var v = new View ();
- Assert.False (r.OnEnter (v));
- v.Dispose ();
-
- v = new View ();
- Assert.False (r.OnLeave (v));
- v.Dispose ();
- r.Dispose ();
- }
- // Generic lifetime (IDisposable) tests
- [Fact, TestRespondersDisposed]
- public void Dispose_Works ()
- {
-
- var r = new Responder ();
- #if DEBUG_IDISPOSABLE
- Assert.Single (Responder.Instances);
- #endif
- r.Dispose ();
- }
- public class DerivedView : View {
- public DerivedView ()
- {
- }
- public override bool OnKeyDown (KeyEvent keyEvent)
- {
- return true;
- }
- }
- [Fact, TestRespondersDisposed]
- public void IsOverridden_False_IfNotOverridden ()
- {
- // MouseEvent IS defined on Responder but NOT overridden
- Assert.False (Responder.IsOverridden (new Responder () { }, "MouseEvent"));
- // MouseEvent is defined on Responder and NOT overrident on View
- Assert.False (Responder.IsOverridden (new View () { Text = "View does not override MouseEvent" }, "MouseEvent"));
- Assert.False (Responder.IsOverridden (new DerivedView () { Text = "DerivedView does not override MouseEvent" }, "MouseEvent"));
- // MouseEvent is NOT defined on DerivedView
- Assert.False (Responder.IsOverridden (new DerivedView () { Text = "DerivedView does not override MouseEvent" }, "MouseEvent"));
- // OnKeyDown is defined on View and NOT overrident on Button
- Assert.False (Responder.IsOverridden (new Button () { Text = "Button does not override OnKeyDown" }, "OnKeyDown"));
- #if DEBUG_IDISPOSABLE
- // HACK: Force clean up of Responders to avoid having to Dispose all the Views created above.
- Responder.Instances.Clear ();
- Assert.Empty (Responder.Instances);
- #endif
- }
- [Fact, TestRespondersDisposed]
- public void IsOverridden_True_IfOverridden ()
- {
- // MouseEvent is defined on Responder IS overriden on ScrollBarView (but not View)
- Assert.True (Responder.IsOverridden (new ScrollBarView () { Text = "ScrollBarView overrides MouseEvent" }, "MouseEvent"));
- // OnKeyDown is defined on View
- Assert.True (Responder.IsOverridden (new View () { Text = "View overrides OnKeyDown" }, "OnKeyDown"));
- // OnKeyDown is defined on DerivedView
- Assert.True (Responder.IsOverridden (new DerivedView () { Text = "DerivedView overrides OnKeyDown" }, "OnKeyDown"));
- // ScrollBarView overrides both MouseEvent (from Responder) and Redraw (from View)
- Assert.True (Responder.IsOverridden (new ScrollBarView () { Text = "ScrollBarView overrides MouseEvent" }, "MouseEvent"));
- Assert.True (Responder.IsOverridden (new ScrollBarView () { Text = "ScrollBarView overrides OnDrawContent" }, "OnDrawContent"));
- Assert.True (Responder.IsOverridden (new Button () { Text = "Button overrides MouseEvent" }, "MouseEvent"));
- #if DEBUG_IDISPOSABLE
- // HACK: Force clean up of Responders to avoid having to Dispose all the Views created above.
- Responder.Instances.Clear ();
- Assert.Empty (Responder.Instances);
- #endif
- }
- }
- }
|