public void CoroutineThreadIntShouldBePossibleToPauseAndRestart() { // ReSharper disable once ConvertToConstant.Local int hundred = 100; var ft = new CoroutineThread(1); var first = new WaitCoroutine(hundred); var second = new WaitCoroutine(200); ft.AddCoroutine(first, second); ft.Start(); Thread.Sleep(1000); ft.Pause(); Thread.Sleep(300); var firstCycles = first.Cycles; var secondCycles = second.Cycles; Assert.AreEqual(ft.Status, CoroutineThreadStatus.Paused); Thread.Sleep(1500); Assert.AreEqual(firstCycles, first.Cycles); Assert.AreEqual(secondCycles, second.Cycles); ft.Start(); Thread.Sleep(300); Assert.AreEqual(CoroutineThreadStatus.Running, ft.Status); ft.Stop(); Thread.Sleep(300); Assert.AreEqual(CoroutineThreadStatus.Stopped, ft.Status); Assert.IsTrue(firstCycles <= first.Cycles); Assert.IsTrue(secondCycles <= second.Cycles); }