Inheritance: MonoBehaviour
		public void RepeatingWithExceptionsGood() {
			var bkg = new BackgroundRepeater(SometimesException) {
				Cooldown = TimeSpan.FromMilliseconds(1D),
				IsCatchExceptions = true,
			};

			_counter = 0;
			Console.WriteLine(_counter);

			bkg.Start();
			SpinWait.SpinUntil(() => _counter > 100);
			bkg.Stop();

			Console.WriteLine(_counter);

			var c = _counter;
			Thread.Sleep(500);

			if (_counter > c)
				Assert.Fail("repeating not stopped");

			if (4 > c)
				Assert.Fail("where all repeating?");

			Console.WriteLine(_counter);
			Assert.IsFalse(bkg.IsStarted());
		}
		public void MultipleStart() {
			var bkg = new BackgroundRepeater(SingleMethod);
			bkg.Start();
			bkg.Start();
			bkg.Start();
			bkg.Start();
			Assert.IsTrue(bkg.IsStarted());

			bkg.Stop();
			bkg.Stop();
			bkg.Stop();
			Assert.IsFalse(bkg.IsStarted());

			bkg.Start();
			Assert.IsTrue(bkg.IsStarted());
			bkg.Stop();
			Assert.IsFalse(bkg.IsStarted());
			bkg.Stop();
			Assert.IsFalse(bkg.IsStarted());
			bkg.Start();
			bkg.Start();
			bkg.Stop();
			bkg.Stop();

			Assert.IsFalse(bkg.IsStarted());
		}
		public void SelfCancel() {
			var bkg = new BackgroundRepeater(t => {throw new OperationCanceledException();}) {
				Cooldown = TimeSpan.FromMilliseconds(1D),
				IsCatchExceptions = false,
			};
			bkg.Start();
			Thread.Sleep(TimeSpan.FromSeconds(.5D));
			Assert.IsFalse(bkg.IsStarted());
		}
		public void WrongArguments() {
			try {
				Action a = null;
				var bkg = new BackgroundRepeater(a);
				Console.WriteLine("Wtf??");
				bkg.Start();
				Console.WriteLine("Wtf??!!!");
				Assert.Fail("Where ArgumentNullException?");
			} catch (ArgumentNullException) {
				Console.WriteLine("OK: Action == null");
			}

			try {
				Action<CancellationToken> a = null;
				var bkg = new BackgroundRepeater(a);
				Console.WriteLine("Wtf?? (2)");
				bkg.Start();
				Console.WriteLine("Wtf??!!! (2)");
				Assert.Fail("Where ArgumentNullException? (2)");
			} catch (ArgumentNullException) {
				Console.WriteLine("OK: Action<CancellationToken> == null");
			}
		}
		public void EverlastingTest() {
			var bkg = new BackgroundRepeater(EverlastingMethod) {
				Cooldown = TimeSpan.FromMilliseconds(10),
			};

			bkg.Enabled(true);
			Thread.Sleep(TimeSpan.FromSeconds(.5D));
			bkg.Enabled(false);
			
			Assert.IsFalse(bkg.IsStarted());
		}
		public void RepeatingWithExceptionsFail() {
			var bkg = new BackgroundRepeater(SometimesException) {
				Cooldown = TimeSpan.FromMilliseconds(1D),
				IsCatchExceptions = false,
			};

			_counter = 0;
			bkg.Start();

			SpinWait.SpinUntil(() => _counter == 4);
			Thread.Sleep(TimeSpan.FromSeconds(1D));

			Assert.IsTrue(_counter == 4);
			Assert.IsFalse(bkg.IsStarted());
		}
 void Awake()
 {
     main = this;
 }
Example #8
0
 public MainWorker()
 {
     _repeater = new BackgroundRepeater(MainWork, TimeSpan.FromSeconds(_config.CheckCooldownSec), _config.IsEnabled);
     ((IRealtimeConfiguration)_config).PropertyChanged += MainWorker_PropertyChanged;
 }