123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349 |
- using System.ComponentModel;
- namespace Terminal.Gui.ViewMouseTests;
- [Trait ("Category", "Input")]
- public class MouseEnterLeaveTests
- {
- private class TestView : View
- {
- public TestView ()
- {
- MouseEnter += OnMouseEnterHandler;
- MouseLeave += OnMouseLeaveHandler;
- }
- public bool CancelOnEnter { get; init; }
- public bool CancelEnterEvent { get; init; }
- public bool OnMouseEnterCalled { get; private set; }
- public bool OnMouseLeaveCalled { get; private set; }
- protected override bool OnMouseEnter (CancelEventArgs eventArgs)
- {
- OnMouseEnterCalled = true;
- eventArgs.Cancel = CancelOnEnter;
- base.OnMouseEnter (eventArgs);
- return eventArgs.Cancel;
- }
- protected override void OnMouseLeave ()
- {
- OnMouseLeaveCalled = true;
- base.OnMouseLeave ();
- }
- public bool MouseEnterRaised { get; private set; }
- public bool MouseLeaveRaised { get; private set; }
- private void OnMouseEnterHandler (object s, CancelEventArgs e)
- {
- MouseEnterRaised = true;
- if (CancelEnterEvent)
- {
- e.Cancel = true;
- }
- }
- private void OnMouseLeaveHandler (object s, EventArgs e) { MouseLeaveRaised = true; }
- }
- [Fact]
- public void NewMouseEnterEvent_ViewIsEnabledAndVisible_CallsOnMouseEnter ()
- {
- // Arrange
- var view = new TestView
- {
- Enabled = true,
- Visible = true
- };
- var mouseEvent = new MouseEventArgs ();
- var eventArgs = new CancelEventArgs ();
- // Act
- bool? cancelled = view.NewMouseEnterEvent (eventArgs);
- // Assert
- Assert.True (view.OnMouseEnterCalled);
- Assert.False (cancelled);
- Assert.False (eventArgs.Cancel);
- // Cleanup
- view.Dispose ();
- }
- [Fact]
- public void NewMouseEnterEvent_ViewIsDisabled_CallsOnMouseEnter ()
- {
- // Arrange
- var view = new TestView
- {
- Enabled = false,
- Visible = true
- };
- var eventArgs = new CancelEventArgs ();
- // Act
- bool? cancelled = view.NewMouseEnterEvent (eventArgs);
- // Assert
- Assert.True (view.OnMouseEnterCalled);
- Assert.False (cancelled);
- Assert.False (eventArgs.Cancel);
- // Cleanup
- view.Dispose ();
- }
- [Fact]
- public void NewMouseEnterEvent_ViewIsNotVisible_DoesNotCallOnMouseEnter ()
- {
- // Arrange
- var view = new TestView
- {
- Enabled = true,
- Visible = false
- };
- var eventArgs = new CancelEventArgs ();
- // Act
- bool? cancelled = view.NewMouseEnterEvent (eventArgs);
- // Assert
- Assert.False (view.OnMouseEnterCalled);
- Assert.Null (cancelled);
- Assert.False (eventArgs.Cancel);
- // Cleanup
- view.Dispose ();
- }
- [Fact]
- public void NewMouseLeaveEvent_ViewIsVisible_CallsOnMouseLeave ()
- {
- // Arrange
- var view = new TestView
- {
- Enabled = true, Visible = true
- };
- var mouseEvent = new MouseEventArgs ();
- // Act
- view.NewMouseLeaveEvent ();
- // Assert
- Assert.True (view.OnMouseLeaveCalled);
- Assert.False (mouseEvent.Handled);
- // Cleanup
- view.Dispose ();
- }
- [Fact]
- public void NewMouseLeaveEvent_ViewIsNotVisible_CallsOnMouseLeave ()
- {
- // Arrange
- var view = new TestView
- {
- Enabled = true,
- Visible = false
- };
- var mouseEvent = new MouseEventArgs ();
- // Act
- view.NewMouseLeaveEvent ();
- // Assert
- Assert.True (view.OnMouseLeaveCalled);
- Assert.False (mouseEvent.Handled);
- // Cleanup
- view.Dispose ();
- }
- // Events
- [Fact]
- public void NewMouseEnterEvent_ViewIsEnabledAndVisible_RaisesMouseEnter ()
- {
- // Arrange
- var view = new TestView
- {
- Enabled = true,
- Visible = true
- };
- var eventArgs = new CancelEventArgs ();
- // Act
- bool? cancelled = view.NewMouseEnterEvent (eventArgs);
- // Assert
- Assert.True (view.MouseEnterRaised);
- Assert.False (cancelled);
- Assert.False (eventArgs.Cancel);
- // Cleanup
- view.Dispose ();
- }
- [Fact]
- public void NewMouseEnterEvent_ViewIsDisabled_RaisesMouseEnter ()
- {
- // Arrange
- var view = new TestView
- {
- Enabled = false,
- Visible = true
- };
- var eventArgs = new CancelEventArgs ();
- // Act
- bool? cancelled = view.NewMouseEnterEvent (eventArgs);
- // Assert
- Assert.True (view.MouseEnterRaised);
- Assert.False (cancelled);
- Assert.False (eventArgs.Cancel);
- // Cleanup
- view.Dispose ();
- }
- [Fact]
- public void NewMouseEnterEvent_ViewIsNotVisible_DoesNotRaiseMouseEnter ()
- {
- // Arrange
- var view = new TestView
- {
- Enabled = true,
- Visible = false
- };
- var eventArgs = new CancelEventArgs ();
- // Act
- bool? cancelled = view.NewMouseEnterEvent (eventArgs);
- // Assert
- Assert.False (view.MouseEnterRaised);
- Assert.Null (cancelled);
- Assert.False (eventArgs.Cancel);
- // Cleanup
- view.Dispose ();
- }
- [Fact]
- public void NewMouseLeaveEvent_ViewIsVisible_RaisesMouseLeave ()
- {
- // Arrange
- var view = new TestView
- {
- Enabled = true,
- Visible = true
- };
- var mouseEvent = new MouseEventArgs ();
- // Act
- view.NewMouseLeaveEvent ();
- // Assert
- Assert.True (view.MouseLeaveRaised);
- Assert.False (mouseEvent.Handled);
- // Cleanup
- view.Dispose ();
- }
- [Fact]
- public void NewMouseLeaveEvent_ViewIsNotVisible_RaisesMouseLeave ()
- {
- // Arrange
- var view = new TestView
- {
- Enabled = true,
- Visible = false
- };
- var mouseEvent = new MouseEventArgs ();
- // Act
- view.NewMouseLeaveEvent ();
- // Assert
- Assert.True (view.MouseLeaveRaised);
- Assert.False (mouseEvent.Handled);
- // Cleanup
- view.Dispose ();
- }
- // Handled tests
- [Fact]
- public void NewMouseEnterEvent_HandleOnMouseEnter_Event_Not_Raised ()
- {
- // Arrange
- var view = new TestView
- {
- Enabled = true,
- Visible = true,
- CancelOnEnter = true
- };
- var eventArgs = new CancelEventArgs ();
- // Act
- bool? cancelled = view.NewMouseEnterEvent (eventArgs);
- // Assert
- Assert.True (view.OnMouseEnterCalled);
- Assert.True (cancelled);
- Assert.True (eventArgs.Cancel);
- Assert.False (view.MouseEnterRaised);
- // Cleanup
- view.Dispose ();
- }
- [Fact]
- public void NewMouseEnterEvent_HandleMouseEnterEvent ()
- {
- // Arrange
- var view = new TestView
- {
- Enabled = true,
- Visible = true,
- CancelEnterEvent = true
- };
- var eventArgs = new CancelEventArgs ();
- // Act
- bool? cancelled = view.NewMouseEnterEvent (eventArgs);
- // Assert
- Assert.True (view.OnMouseEnterCalled);
- Assert.True (cancelled);
- Assert.True (eventArgs.Cancel);
- Assert.True (view.MouseEnterRaised);
- // Cleanup
- view.Dispose ();
- }
- }
|