123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- using Xunit.Abstractions;
- namespace Terminal.Gui.ViewsTests;
- public class SpinnerViewTests
- {
- private readonly ITestOutputHelper output;
- public SpinnerViewTests (ITestOutputHelper output) { this.output = output; }
- [Theory]
- [AutoInitShutdown]
- [InlineData (true)]
- [InlineData (false)]
- public void TestSpinnerView_AutoSpin (bool callStop)
- {
- SpinnerView view = GetSpinnerView ();
- Assert.Empty (Application.MainLoop._timeouts);
- view.AutoSpin = true;
- Assert.NotEmpty (Application.MainLoop._timeouts);
- Assert.True (view.AutoSpin);
- //More calls to AutoSpin do not add more timeouts
- Assert.Single (Application.MainLoop._timeouts);
- view.AutoSpin = true;
- view.AutoSpin = true;
- view.AutoSpin = true;
- Assert.True (view.AutoSpin);
- Assert.Single (Application.MainLoop._timeouts);
- if (callStop)
- {
- view.AutoSpin = false;
- Assert.Empty (Application.MainLoop._timeouts);
- Assert.False (view.AutoSpin);
- }
- else
- {
- Assert.NotEmpty (Application.MainLoop._timeouts);
- }
- // Dispose clears timeout
- view.Dispose ();
- Assert.Empty (Application.MainLoop._timeouts);
- Application.Top.Dispose ();
- }
- [Fact]
- [AutoInitShutdown]
- public void TestSpinnerView_NoThrottle ()
- {
- SpinnerView view = GetSpinnerView ();
- view.SpinDelay = 0;
- view.AdvanceAnimation ();
- view.Draw ();
- var expected = "|";
- TestHelpers.AssertDriverContentsWithFrameAre (expected, output);
- view.AdvanceAnimation ();
- Application.ClipToScreen ();
- view.Draw ();
- expected = "/";
- TestHelpers.AssertDriverContentsWithFrameAre (expected, output);
- Application.Top.Dispose ();
- }
- [Fact]
- [AutoInitShutdown]
- public void TestSpinnerView_ThrottlesAnimation ()
- {
- SpinnerView view = GetSpinnerView ();
- view.Draw ();
- var expected = @"\";
- TestHelpers.AssertDriverContentsWithFrameAre (expected, output);
- view.AdvanceAnimation ();
- view.Draw ();
- expected = @"\";
- TestHelpers.AssertDriverContentsWithFrameAre (expected, output);
- view.AdvanceAnimation ();
- view.Draw ();
- expected = @"\";
- TestHelpers.AssertDriverContentsWithFrameAre (expected, output);
- // BUGBUG: Disabled due to xunit error
- //Task.Delay (400).Wait ();
- //view.AdvanceAnimation ();
- //view.Draw ();
- //expected = "|";
- //TestHelpers.AssertDriverContentsWithFrameAre (expected, output);
- Application.Top.Dispose ();
- }
- private SpinnerView GetSpinnerView ()
- {
- var view = new SpinnerView ();
- var top = new Toplevel ();
- top.Add (view);
- Application.Begin (top);
- Assert.Equal (1, view.Frame.Width);
- Assert.Equal (1, view.Frame.Height);
- return view;
- }
- }
|