SpinnerViewTests.cs 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  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. Application.Top.Dispose ();
  39. }
  40. [Fact]
  41. [AutoInitShutdown]
  42. public void TestSpinnerView_NoThrottle ()
  43. {
  44. SpinnerView view = GetSpinnerView ();
  45. view.SpinDelay = 0;
  46. view.AdvanceAnimation ();
  47. view.Draw ();
  48. var expected = "|";
  49. TestHelpers.AssertDriverContentsWithFrameAre (expected, output);
  50. view.AdvanceAnimation ();
  51. view.Draw ();
  52. expected = "/";
  53. TestHelpers.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. TestHelpers.AssertDriverContentsWithFrameAre (expected, output);
  64. view.AdvanceAnimation ();
  65. view.Draw ();
  66. expected = @"\";
  67. TestHelpers.AssertDriverContentsWithFrameAre (expected, output);
  68. view.AdvanceAnimation ();
  69. view.Draw ();
  70. expected = @"\";
  71. TestHelpers.AssertDriverContentsWithFrameAre (expected, output);
  72. // BUGBUG: Disabled due to xunit error
  73. //Task.Delay (400).Wait ();
  74. //view.AdvanceAnimation ();
  75. //view.Draw ();
  76. //expected = "|";
  77. //TestHelpers.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. }