PopoverBaseImplTests.cs 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. using System;
  2. using Terminal.Gui;
  3. using Terminal.Gui.App;
  4. using Xunit;
  5. namespace UnitTests_Parallelizable.ApplicationTests;
  6. public class PopoverBaseImplTests
  7. {
  8. // Minimal concrete implementation for testing
  9. private class TestPopover : PopoverBaseImpl { }
  10. [Fact]
  11. public void Constructor_SetsDefaults ()
  12. {
  13. var popover = new TestPopover ();
  14. Assert.Equal ("popoverBaseImpl", popover.Id);
  15. Assert.True (popover.CanFocus);
  16. Assert.Equal (Dim.Fill (), popover.Width);
  17. Assert.Equal (Dim.Fill (), popover.Height);
  18. Assert.True (popover.ViewportSettings.HasFlag (ViewportSettingsFlags.Transparent));
  19. Assert.True (popover.ViewportSettings.HasFlag (ViewportSettingsFlags.TransparentMouse));
  20. }
  21. [Fact]
  22. public void Toplevel_Property_CanBeSetAndGet ()
  23. {
  24. var popover = new TestPopover ();
  25. var top = new Toplevel ();
  26. popover.Current = top;
  27. Assert.Same (top, popover.Current);
  28. }
  29. [Fact]
  30. public void Show_ThrowsIfPopoverMissingRequiredFlags ()
  31. {
  32. var popover = new TestPopover ();
  33. // Popover missing Transparent flags
  34. popover.ViewportSettings = ViewportSettingsFlags.None; // Remove required flags
  35. var popoverManager = new ApplicationPopover ();
  36. // Test missing Transparent flags
  37. Assert.ThrowsAny<Exception> (() => popoverManager.Show (popover));
  38. }
  39. [Fact]
  40. public void Show_ThrowsIfPopoverMissingQuitCommand ()
  41. {
  42. var popover = new TestPopover ();
  43. // Popover missing Command.Quit binding
  44. popover.KeyBindings.Clear (); // Remove all key bindings
  45. var popoverManager = new ApplicationPopover ();
  46. Assert.ThrowsAny<Exception> (() => popoverManager.Show (popover));
  47. }
  48. [Fact]
  49. public void Show_Throw_If_Not_Registered ()
  50. {
  51. var popover = new TestPopover ();
  52. var popoverManager = new ApplicationPopover ();
  53. Assert.Throws<InvalidOperationException> (() => popoverManager.Show (popover));
  54. }
  55. }