diff --git a/UnitTests/Views/SpinnerViewTests.cs b/UnitTests/Views/SpinnerViewTests.cs index 67f45c283..d43f56c19 100644 --- a/UnitTests/Views/SpinnerViewTests.cs +++ b/UnitTests/Views/SpinnerViewTests.cs @@ -1,4 +1,5 @@ -using Terminal.Gui; +using System.Threading.Tasks; +using Terminal.Gui; using Xunit; using Xunit.Abstractions; @@ -12,6 +13,27 @@ namespace UnitTests.Views { this.output = output; } + [Fact, AutoInitShutdown] + public void TestSpinnerView_AutoSpin() + { + var view = GetSpinnerView (); + + Assert.Empty (Application.MainLoop.timeouts); + view.AutoSpin (); + Assert.NotEmpty (Application.MainLoop.timeouts); + + //More calls to AutoSpin do not add more timeouts + Assert.Equal (1,Application.MainLoop.timeouts.Count); + view.AutoSpin (); + view.AutoSpin (); + view.AutoSpin (); + Assert.Equal (1, Application.MainLoop.timeouts.Count); + + // Dispose clears timeout + Assert.NotEmpty (Application.MainLoop.timeouts); + view.Dispose (); + Assert.Empty (Application.MainLoop.timeouts); + } [Fact, AutoInitShutdown] public void TestSpinnerView_ThrottlesAnimation () @@ -34,6 +56,14 @@ namespace UnitTests.Views { expected = "/"; TestHelpers.AssertDriverContentsWithFrameAre (expected, output); + + Task.Delay (400).Wait(); + + view.SetNeedsDisplay (); + view.Redraw (view.Bounds); + + expected = "─"; + TestHelpers.AssertDriverContentsWithFrameAre (expected, output); } [Fact, AutoInitShutdown] public void TestSpinnerView_NoThrottle ()