| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182 |
- using static System.Net.Mime.MediaTypeNames;
- namespace Terminal.Gui.ApplicationTests;
- public class ApplicationPopoverTests
- {
- [Fact]
- public void ApplicationInit_Initializes_PopoverManager ()
- {
- // Arrange
- Assert.Null (Application.Popover);
- Application.Init (new FakeDriver ());
- // Act
- Assert.NotNull (Application.Popover);
- Application.ResetState (true);
- }
- [Fact]
- public void Application_Shutdown_CleansUp_PopoverManager ()
- {
- // Arrange
- Assert.Null (Application.Popover);
- Application.Init (new FakeDriver ());
- // Act
- Assert.NotNull (Application.Popover);
- Application.Shutdown ();
- // Test
- Assert.Null (Application.Popover);
- }
- [Fact]
- public void Application_End_Does_Not_CleanedUp ()
- {
- // Arrange
- Assert.Null (Application.Popover);
- Application.Init (new FakeDriver ());
- Assert.NotNull (Application.Popover);
- Application.Iteration += (s, a) => Application.RequestStop ();
- var top = new Toplevel ();
- RunState rs = Application.Begin (top);
- // Act
- Application.End (rs);
- // Test
- Assert.NotNull (Application.Popover);
- top.Dispose ();
- Application.Shutdown ();
- }
- [Fact]
- public void Application_End_Hides_Active ()
- {
- // Arrange
- Assert.Null (Application.Popover);
- Application.Init (new FakeDriver ());
- Application.Iteration += (s, a) => Application.RequestStop ();
- var top = new Toplevel ();
- RunState rs = Application.Begin (top);
- PopoverTestClass popover = new ();
- Application.Popover?.Show (popover);
- Assert.True (popover.Visible);
- // Act
- Application.End (rs);
- top.Dispose ();
- // Test
- Assert.False (popover.Visible);
- Assert.NotNull (Application.Popover);
- popover.Dispose ();
- Application.Shutdown ();
- }
- [Fact]
- public void Application_Shutdown_Disposes_Registered_Popovers ()
- {
- // Arrange
- Assert.Null (Application.Popover);
- Application.Init (new FakeDriver ());
- PopoverTestClass popover = new ();
- // Act
- Application.Popover?.Register (popover);
- Application.Shutdown ();
- // Test
- Assert.Equal(1, popover.DisposedCount);
- }
- [Fact]
- public void Application_Shutdown_Does_Not_Dispose_DeRegistered_Popovers ()
- {
- // Arrange
- Assert.Null (Application.Popover);
- Application.Init (new FakeDriver ());
- PopoverTestClass popover = new ();
- Application.Popover?.Register (popover);
- // Act
- Application.Popover?.DeRegister (popover);
- Application.Shutdown ();
- // Test
- Assert.Equal (0, popover.DisposedCount);
- popover.Dispose ();
- }
- [Fact]
- public void Application_Shutdown_Does_Not_Dispose_ActiveNotRegistered_Popover ()
- {
- // Arrange
- Assert.Null (Application.Popover);
- Application.Init (new FakeDriver ());
- PopoverTestClass popover = new ();
- Application.Popover?.Show (popover);
- // Act
- Application.Shutdown ();
- // Test
- Assert.Equal (0, popover.DisposedCount);
- popover.Dispose ();
- }
- public class PopoverTestClass : View, IPopover
- {
- public List<Key> HandledKeys { get; } = [];
- public int NewCommandInvokeCount { get; private set; }
- // NOTE: Hides the base DisposedCount property
- public new int DisposedCount { get; private set; }
- public PopoverTestClass ()
- {
- CanFocus = true;
- AddCommand (Command.New, NewCommandHandler);
- HotKeyBindings.Add (Key.N.WithCtrl, Command.New);
- return;
- bool? NewCommandHandler (ICommandContext ctx)
- {
- NewCommandInvokeCount++;
- return false;
- }
- }
- protected override bool OnKeyDown (Key key)
- {
- HandledKeys.Add (key);
- return false;
- }
- /// <inheritdoc />
- protected override void Dispose (bool disposing)
- {
- base.Dispose (disposing);
- DisposedCount++;
- }
- }
- }
|