SpinnerViewTests.cs 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. using UnitTests;
  2. using Xunit.Abstractions;
  3. namespace Terminal.Gui.ViewsTests;
  4. public class SpinnerViewTests (ITestOutputHelper output)
  5. {
  6. [Theory]
  7. [AutoInitShutdown]
  8. [InlineData (true)]
  9. [InlineData (false)]
  10. public void TestSpinnerView_AutoSpin (bool callStop)
  11. {
  12. SpinnerView view = GetSpinnerView ();
  13. Assert.Empty (Application.MainLoop.TimedEvents.Timeouts);
  14. view.AutoSpin = true;
  15. Assert.NotEmpty (Application.MainLoop.TimedEvents.Timeouts);
  16. Assert.True (view.AutoSpin);
  17. //More calls to AutoSpin do not add more timeouts
  18. Assert.Single (Application.MainLoop.TimedEvents.Timeouts);
  19. view.AutoSpin = true;
  20. view.AutoSpin = true;
  21. view.AutoSpin = true;
  22. Assert.True (view.AutoSpin);
  23. Assert.Single (Application.MainLoop.TimedEvents.Timeouts);
  24. if (callStop)
  25. {
  26. view.AutoSpin = false;
  27. Assert.Empty (Application.MainLoop.TimedEvents.Timeouts);
  28. Assert.False (view.AutoSpin);
  29. }
  30. else
  31. {
  32. Assert.NotEmpty (Application.MainLoop.TimedEvents.Timeouts);
  33. }
  34. // Dispose clears timeout
  35. view.Dispose ();
  36. Assert.Empty (Application.MainLoop.TimedEvents.Timeouts);
  37. Application.Top.Dispose ();
  38. }
  39. [Fact]
  40. [AutoInitShutdown]
  41. public void TestSpinnerView_NoThrottle ()
  42. {
  43. SpinnerView view = GetSpinnerView ();
  44. view.SpinDelay = 0;
  45. view.AdvanceAnimation ();
  46. view.Draw ();
  47. var expected = "|";
  48. DriverAssert.AssertDriverContentsWithFrameAre (expected, output);
  49. view.AdvanceAnimation ();
  50. View.SetClipToScreen ();
  51. view.Draw ();
  52. expected = "/";
  53. DriverAssert.AssertDriverContentsWithFrameAre (expected, output);
  54. Application.Top.Dispose ();
  55. }
  56. [Fact]
  57. [AutoInitShutdown]
  58. public void TestSpinnerView_ThrottlesAnimation ()
  59. {
  60. SpinnerView view = GetSpinnerView ();
  61. view.Draw ();
  62. var expected = @"\";
  63. DriverAssert.AssertDriverContentsWithFrameAre (expected, output);
  64. view.AdvanceAnimation ();
  65. view.Draw ();
  66. expected = @"\";
  67. DriverAssert.AssertDriverContentsWithFrameAre (expected, output);
  68. view.AdvanceAnimation ();
  69. view.Draw ();
  70. expected = @"\";
  71. DriverAssert.AssertDriverContentsWithFrameAre (expected, output);
  72. // BUGBUG: Disabled due to xunit error
  73. //Task.Delay (400).Wait ();
  74. //view.AdvanceAnimation ();
  75. //view.Draw ();
  76. //expected = "|";
  77. //DriverAsserts.AssertDriverContentsWithFrameAre (expected, output);
  78. Application.Top.Dispose ();
  79. }
  80. private SpinnerView GetSpinnerView ()
  81. {
  82. var view = new SpinnerView ();
  83. var top = new Toplevel ();
  84. top.Add (view);
  85. Application.Begin (top);
  86. Assert.Equal (1, view.Frame.Width);
  87. Assert.Equal (1, view.Frame.Height);
  88. return view;
  89. }
  90. }