SpinnerViewTests.cs 2.5 KB

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