SpinnerViewTests.cs 2.3 KB

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