123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362 |
- namespace Terminal.Gui.ViewMouseTests;
- [Trait ("Category", "Input")]
- public class MouseEnterLeaveTests
- {
- private class TestView : View
- {
- public TestView ()
- {
- MouseEnter += OnMouseEnterHandler;
- MouseLeave += OnMouseLeaveHandler;
- }
- public bool HandleOnEnter { get; init; }
- public bool HandleOnLeave { get; }
- public bool HandleEnterEvent { get; init; }
- public bool HandleLeaveEvent { get; }
- public bool OnMouseEnterCalled { get; private set; }
- public bool OnMouseLeaveCalled { get; private set; }
- protected internal override bool? OnMouseEnter (MouseEvent mouseEvent)
- {
- OnMouseEnterCalled = true;
- mouseEvent.Handled = HandleOnEnter;
- base.OnMouseEnter (mouseEvent);
- return mouseEvent.Handled;
- }
- protected internal override bool OnMouseLeave (MouseEvent mouseEvent)
- {
- OnMouseLeaveCalled = true;
- mouseEvent.Handled = HandleOnLeave;
- base.OnMouseLeave (mouseEvent);
- return mouseEvent.Handled;
- }
- public bool MouseEnterRaised { get; private set; }
- public bool MouseLeaveRaised { get; private set; }
- private void OnMouseEnterHandler (object s, MouseEventEventArgs e)
- {
- MouseEnterRaised = true;
- if (HandleEnterEvent)
- {
- e.Handled = true;
- }
- }
- private void OnMouseLeaveHandler (object s, MouseEventEventArgs e)
- {
- MouseLeaveRaised = true;
- if (HandleLeaveEvent)
- {
- e.Handled = true;
- }
- }
- }
- [Fact]
- public void NewMouseEnterEvent_ViewIsEnabledAndVisible_CallsOnMouseEnter ()
- {
- // Arrange
- var view = new TestView
- {
- Enabled = true,
- Visible = true
- };
- var mouseEvent = new MouseEvent ();
- // Act
- bool? handled = view.NewMouseEnterEvent (mouseEvent);
- // Assert
- Assert.True (view.OnMouseEnterCalled);
- Assert.False (handled);
- Assert.False (mouseEvent.Handled);
- // Cleanup
- view.Dispose ();
- }
- [Fact]
- public void NewMouseEnterEvent_ViewIsDisabled_DoesNotCallOnMouseEnter ()
- {
- // Arrange
- var view = new TestView
- {
- Enabled = false,
- Visible = true
- };
- var mouseEvent = new MouseEvent ();
- // Act
- bool? handled = view.NewMouseEnterEvent (mouseEvent);
- // Assert
- Assert.False (view.OnMouseEnterCalled);
- Assert.False (handled);
- Assert.False (mouseEvent.Handled);
- // Cleanup
- view.Dispose ();
- }
- [Fact]
- public void NewMouseEnterEvent_ViewIsNotVisible_DoesNotCallOnMouseEnter ()
- {
- // Arrange
- var view = new TestView
- {
- Enabled = true,
- Visible = false
- };
- var mouseEvent = new MouseEvent ();
- // Act
- bool? handled = view.NewMouseEnterEvent (mouseEvent);
- // Assert
- Assert.False (view.OnMouseEnterCalled);
- Assert.False (handled);
- Assert.False (mouseEvent.Handled);
- // Cleanup
- view.Dispose ();
- }
- [Fact]
- public void NewMouseLeaveEvent_ViewIsVisible_CallsOnMouseLeave ()
- {
- // Arrange
- var view = new TestView
- {
- Enabled = true, Visible = true
- };
- var mouseEvent = new MouseEvent ();
- // Act
- bool? handled = view.NewMouseLeaveEvent (mouseEvent);
- // Assert
- Assert.True (view.OnMouseLeaveCalled);
- Assert.False (handled);
- 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 MouseEvent ();
- // Act
- bool? handled = view.NewMouseLeaveEvent (mouseEvent);
- // Assert
- Assert.True (view.OnMouseLeaveCalled);
- Assert.False (handled);
- Assert.False (mouseEvent.Handled);
- // Cleanup
- view.Dispose ();
- }
- // Events
- [Fact]
- public void NewMouseEnterEvent_ViewIsEnabledAndVisible_RaisesMouseEnter ()
- {
- // Arrange
- var view = new TestView
- {
- Enabled = true,
- Visible = true
- };
- var mouseEvent = new MouseEvent ();
- // Act
- bool? handled = view.NewMouseEnterEvent (mouseEvent);
- // Assert
- Assert.True (view.MouseEnterRaised);
- Assert.False (handled);
- Assert.False (mouseEvent.Handled);
- // Cleanup
- view.Dispose ();
- }
- [Fact]
- public void NewMouseEnterEvent_ViewIsDisabled_DoesNotRaiseMouseEnter ()
- {
- // Arrange
- var view = new TestView
- {
- Enabled = false,
- Visible = true
- };
- var mouseEvent = new MouseEvent ();
- // Act
- bool? handled = view.NewMouseEnterEvent (mouseEvent);
- // Assert
- Assert.False (view.MouseEnterRaised);
- Assert.False (handled);
- Assert.False (mouseEvent.Handled);
- // Cleanup
- view.Dispose ();
- }
- [Fact]
- public void NewMouseEnterEvent_ViewIsNotVisible_DoesNotRaiseMouseEnter ()
- {
- // Arrange
- var view = new TestView
- {
- Enabled = true,
- Visible = false
- };
- var mouseEvent = new MouseEvent ();
- // Act
- bool? handled = view.NewMouseEnterEvent (mouseEvent);
- // Assert
- Assert.False (view.MouseEnterRaised);
- Assert.False (handled);
- Assert.False (mouseEvent.Handled);
- // Cleanup
- view.Dispose ();
- }
- [Fact]
- public void NewMouseLeaveEvent_ViewIsVisible_RaisesMouseLeave ()
- {
- // Arrange
- var view = new TestView
- {
- Enabled = true,
- Visible = true
- };
- var mouseEvent = new MouseEvent ();
- // Act
- bool? handled = view.NewMouseLeaveEvent (mouseEvent);
- // Assert
- Assert.True (view.MouseLeaveRaised);
- Assert.False (handled);
- Assert.False (mouseEvent.Handled);
- // Cleanup
- view.Dispose ();
- }
- [Fact]
- public void NewMouseLeaveEvent_ViewIsNotVisible_DoesNotRaiseMouseLeave ()
- {
- // Arrange
- var view = new TestView
- {
- Enabled = true,
- Visible = false
- };
- var mouseEvent = new MouseEvent ();
- // Act
- bool? handled = view.NewMouseLeaveEvent (mouseEvent);
- // Assert
- Assert.True (view.MouseLeaveRaised);
- Assert.False (handled);
- 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,
- HandleOnEnter = true
- };
- var mouseEvent = new MouseEvent ();
- // Act
- bool? handled = view.NewMouseEnterEvent (mouseEvent);
- // Assert
- Assert.True (view.OnMouseEnterCalled);
- Assert.True (handled);
- Assert.True (mouseEvent.Handled);
- Assert.False (view.MouseEnterRaised);
- // Cleanup
- view.Dispose ();
- }
- [Fact]
- public void NewMouseEnterEvent_HandleMouseEnterEvent ()
- {
- // Arrange
- var view = new TestView
- {
- Enabled = true,
- Visible = true,
- HandleEnterEvent = true
- };
- var mouseEvent = new MouseEvent ();
- // Act
- bool? handled = view.NewMouseEnterEvent (mouseEvent);
- // Assert
- Assert.True (view.OnMouseEnterCalled);
- Assert.True (handled);
- Assert.True (mouseEvent.Handled);
- Assert.True (view.MouseEnterRaised);
- // Cleanup
- view.Dispose ();
- }
- }
|