SpinnerViewTests.cs 2.8 KB

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