Parcourir la source

Add AutoSpin test

tznind il y a 2 ans
Parent
commit
13bbc6a2ba
1 fichiers modifiés avec 31 ajouts et 1 suppressions
  1. 31 1
      UnitTests/Views/SpinnerViewTests.cs

+ 31 - 1
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 ()