SpinnerViewTests.cs 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  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. Application.ClipToScreen ();
  52. view.Draw ();
  53. expected = "/";
  54. TestHelpers.AssertDriverContentsWithFrameAre (expected, output);
  55. Application.Top.Dispose ();
  56. }
  57. [Fact]
  58. [AutoInitShutdown]
  59. public void TestSpinnerView_ThrottlesAnimation ()
  60. {
  61. SpinnerView view = GetSpinnerView ();
  62. view.Draw ();
  63. var expected = @"\";
  64. TestHelpers.AssertDriverContentsWithFrameAre (expected, output);
  65. view.AdvanceAnimation ();
  66. view.Draw ();
  67. expected = @"\";
  68. TestHelpers.AssertDriverContentsWithFrameAre (expected, output);
  69. view.AdvanceAnimation ();
  70. view.Draw ();
  71. expected = @"\";
  72. TestHelpers.AssertDriverContentsWithFrameAre (expected, output);
  73. // BUGBUG: Disabled due to xunit error
  74. //Task.Delay (400).Wait ();
  75. //view.AdvanceAnimation ();
  76. //view.Draw ();
  77. //expected = "|";
  78. //TestHelpers.AssertDriverContentsWithFrameAre (expected, output);
  79. Application.Top.Dispose ();
  80. }
  81. private SpinnerView GetSpinnerView ()
  82. {
  83. var view = new SpinnerView ();
  84. var top = new Toplevel ();
  85. top.Add (view);
  86. Application.Begin (top);
  87. Assert.Equal (1, view.Frame.Width);
  88. Assert.Equal (1, view.Frame.Height);
  89. return view;
  90. }
  91. }