SpinnerViewTests.cs 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  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. //More calls to AutoSpin do not add more timeouts
  22. Assert.Single (Application.MainLoop.timeouts);
  23. view.AutoSpin = true;
  24. view.AutoSpin = true;
  25. view.AutoSpin = true;
  26. Assert.Single (Application.MainLoop.timeouts);
  27. if (callStop) {
  28. view.AutoSpin = false;
  29. Assert.Empty (Application.MainLoop.timeouts);
  30. } else {
  31. Assert.NotEmpty (Application.MainLoop.timeouts);
  32. }
  33. // Dispose clears timeout
  34. view.Dispose ();
  35. Assert.Empty (Application.MainLoop.timeouts);
  36. }
  37. [Fact, AutoInitShutdown]
  38. public void TestSpinnerView_ThrottlesAnimation ()
  39. {
  40. var view = GetSpinnerView ();
  41. view.Draw ();
  42. var expected = @"\";
  43. TestHelpers.AssertDriverContentsWithFrameAre (expected, output);
  44. view.SetNeedsDisplay ();
  45. view.Draw ();
  46. expected = @"\";
  47. TestHelpers.AssertDriverContentsWithFrameAre (expected, output);
  48. view.SetNeedsDisplay ();
  49. view.Draw ();
  50. expected = @"\";
  51. TestHelpers.AssertDriverContentsWithFrameAre (expected, output);
  52. Task.Delay (400).Wait ();
  53. view.SetNeedsDisplay ();
  54. view.Draw ();
  55. expected = "|";
  56. TestHelpers.AssertDriverContentsWithFrameAre (expected, output);
  57. }
  58. [Fact, AutoInitShutdown]
  59. public void TestSpinnerView_NoThrottle ()
  60. {
  61. var view = GetSpinnerView ();
  62. view.SpinDelay = 0;
  63. view.Draw ();
  64. var expected = "|";
  65. TestHelpers.AssertDriverContentsWithFrameAre (expected, output);
  66. view.SetNeedsDisplay ();
  67. view.Draw ();
  68. expected = "/";
  69. TestHelpers.AssertDriverContentsWithFrameAre (expected, output);
  70. }
  71. private SpinnerView GetSpinnerView ()
  72. {
  73. var view = new SpinnerView ();
  74. Application.Top.Add (view);
  75. Application.Begin (Application.Top);
  76. Assert.Equal (1, view.Width);
  77. Assert.Equal (1, view.Height);
  78. return view;
  79. }
  80. }
  81. }