OrientationHelperTests.cs 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. using Moq;
  2. namespace Terminal.Gui.ViewTests.OrientationTests;
  3. public class OrientationHelperTests
  4. {
  5. [Fact]
  6. public void Orientation_Set_NewValue_InvokesChangingAndChangedEvents ()
  7. {
  8. // Arrange
  9. Mock<IOrientation> mockIOrientation = new Mock<IOrientation> ();
  10. var orientationHelper = new OrientationHelper (mockIOrientation.Object);
  11. var changingEventInvoked = false;
  12. var changedEventInvoked = false;
  13. orientationHelper.OrientationChanging += (sender, e) => { changingEventInvoked = true; };
  14. orientationHelper.OrientationChanged += (sender, e) => { changedEventInvoked = true; };
  15. // Act
  16. orientationHelper.Orientation = Orientation.Vertical;
  17. // Assert
  18. Assert.True (changingEventInvoked, "OrientationChanging event was not invoked.");
  19. Assert.True (changedEventInvoked, "OrientationChanged event was not invoked.");
  20. }
  21. [Fact]
  22. public void Orientation_Set_NewValue_InvokesOnChangingAndOnChangedOverrides ()
  23. {
  24. // Arrange
  25. Mock<IOrientation> mockIOrientation = new Mock<IOrientation> ();
  26. var onChangingOverrideCalled = false;
  27. var onChangedOverrideCalled = false;
  28. mockIOrientation.Setup (x => x.OnOrientationChanging (It.IsAny<Orientation> (), It.IsAny<Orientation> ()))
  29. .Callback (() => onChangingOverrideCalled = true)
  30. .Returns (false); // Ensure it doesn't cancel the change
  31. mockIOrientation.Setup (x => x.OnOrientationChanged (It.IsAny<Orientation> ()))
  32. .Callback (() => onChangedOverrideCalled = true);
  33. var orientationHelper = new OrientationHelper (mockIOrientation.Object);
  34. // Act
  35. orientationHelper.Orientation = Orientation.Vertical;
  36. // Assert
  37. Assert.True (onChangingOverrideCalled, "OnOrientationChanging override was not called.");
  38. Assert.True (onChangedOverrideCalled, "OnOrientationChanged override was not called.");
  39. }
  40. [Fact]
  41. public void Orientation_Set_SameValue_DoesNotInvokeChangingOrChangedEvents ()
  42. {
  43. // Arrange
  44. Mock<IOrientation> mockIOrientation = new Mock<IOrientation> ();
  45. var orientationHelper = new OrientationHelper (mockIOrientation.Object);
  46. orientationHelper.Orientation = Orientation.Horizontal; // Set initial orientation
  47. var changingEventInvoked = false;
  48. var changedEventInvoked = false;
  49. orientationHelper.OrientationChanging += (sender, e) => { changingEventInvoked = true; };
  50. orientationHelper.OrientationChanged += (sender, e) => { changedEventInvoked = true; };
  51. // Act
  52. orientationHelper.Orientation = Orientation.Horizontal; // Set to the same value
  53. // Assert
  54. Assert.False (changingEventInvoked, "OrientationChanging event was invoked.");
  55. Assert.False (changedEventInvoked, "OrientationChanged event was invoked.");
  56. }
  57. [Fact]
  58. public void Orientation_Set_NewValue_OrientationChanging_CancellationPreventsChange ()
  59. {
  60. // Arrange
  61. Mock<IOrientation> mockIOrientation = new Mock<IOrientation> ();
  62. var orientationHelper = new OrientationHelper (mockIOrientation.Object);
  63. orientationHelper.OrientationChanging += (sender, e) => { e.Cancel = true; }; // Cancel the change
  64. // Act
  65. orientationHelper.Orientation = Orientation.Vertical;
  66. // Assert
  67. Assert.Equal (Orientation.Horizontal, orientationHelper.Orientation); // Initial orientation is Horizontal
  68. }
  69. [Fact]
  70. public void Orientation_Set_NewValue_OnOrientationChanging_CancelsChange ()
  71. {
  72. // Arrange
  73. Mock<IOrientation> mockIOrientation = new Mock<IOrientation> ();
  74. mockIOrientation.Setup (x => x.OnOrientationChanging (It.IsAny<Orientation> (), It.IsAny<Orientation> ()))
  75. .Returns (true); // Override to return true, cancelling the change
  76. var orientationHelper = new OrientationHelper (mockIOrientation.Object);
  77. // Act
  78. orientationHelper.Orientation = Orientation.Vertical;
  79. // Assert
  80. Assert.Equal (
  81. Orientation.Horizontal,
  82. orientationHelper.Orientation); // Initial orientation is Horizontal, and it should remain unchanged due to cancellation
  83. }
  84. }