SpinnerViewTests.cs 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. using System.Threading.Tasks;
  2. using Terminal.Gui;
  3. using Xunit;
  4. using Xunit.Abstractions;
  5. namespace UnitTests.Views {
  6. public class SpinnerViewTests {
  7. readonly ITestOutputHelper output;
  8. public SpinnerViewTests (ITestOutputHelper output)
  9. {
  10. this.output = output;
  11. }
  12. [Fact, AutoInitShutdown]
  13. public void TestSpinnerView_AutoSpin()
  14. {
  15. var view = GetSpinnerView ();
  16. Assert.Empty (Application.MainLoop.timeouts);
  17. view.AutoSpin ();
  18. Assert.NotEmpty (Application.MainLoop.timeouts);
  19. //More calls to AutoSpin do not add more timeouts
  20. Assert.Equal (1,Application.MainLoop.timeouts.Count);
  21. view.AutoSpin ();
  22. view.AutoSpin ();
  23. view.AutoSpin ();
  24. Assert.Equal (1, Application.MainLoop.timeouts.Count);
  25. // Dispose clears timeout
  26. Assert.NotEmpty (Application.MainLoop.timeouts);
  27. view.Dispose ();
  28. Assert.Empty (Application.MainLoop.timeouts);
  29. }
  30. [Fact, AutoInitShutdown]
  31. public void TestSpinnerView_ThrottlesAnimation ()
  32. {
  33. var view = GetSpinnerView ();
  34. view.Redraw (view.Bounds);
  35. var expected = "/";
  36. TestHelpers.AssertDriverContentsWithFrameAre (expected, output);
  37. view.SetNeedsDisplay ();
  38. view.Redraw (view.Bounds);
  39. expected = "/";
  40. TestHelpers.AssertDriverContentsWithFrameAre (expected, output);
  41. view.SetNeedsDisplay ();
  42. view.Redraw (view.Bounds);
  43. expected = "/";
  44. TestHelpers.AssertDriverContentsWithFrameAre (expected, output);
  45. Task.Delay (400).Wait();
  46. view.SetNeedsDisplay ();
  47. view.Redraw (view.Bounds);
  48. expected = "─";
  49. TestHelpers.AssertDriverContentsWithFrameAre (expected, output);
  50. }
  51. [Fact, AutoInitShutdown]
  52. public void TestSpinnerView_NoThrottle ()
  53. {
  54. var view = GetSpinnerView ();
  55. view.SpinDelayInMilliseconds = 0;
  56. view.Redraw (view.Bounds);
  57. var expected = @"─";
  58. TestHelpers.AssertDriverContentsWithFrameAre (expected, output);
  59. view.SetNeedsDisplay ();
  60. view.Redraw (view.Bounds);
  61. expected = @"\";
  62. TestHelpers.AssertDriverContentsWithFrameAre (expected, output);
  63. }
  64. private SpinnerView GetSpinnerView ()
  65. {
  66. var view = new SpinnerView ();
  67. Application.Top.Add (view);
  68. Application.Begin (Application.Top);
  69. Assert.Equal (1, view.Width);
  70. Assert.Equal (1, view.Height);
  71. return view;
  72. }
  73. }
  74. }