public void Stop_Should_StopAfterLooping() { var mockTask = MockTask.Create(); int loopCount = 3; //todo: fix failed sometimes using (var loopTask = new SimpleLoopTask()) { loopTask.LoopSpan = TimeSpan.FromMilliseconds(50); loopTask.LoopAction = mockTask.MockAction; loopTask.AfterExitLoopAction = mockTask.MockStopAction; loopTask.Start(); Task.Delay(TimeSpan.FromMilliseconds(50 + 20)).Wait(); loopTask.Stop(); Task.Delay(TimeSpan.FromMilliseconds(50 * 2)).Wait(); mockTask.StopInvoked.ShouldTrue(); } mockTask.InvokeCount.Log(); (mockTask.InvokeCount >= 1).ShouldTrue(); (mockTask.InvokeCount <= 2).ShouldTrue(); mockTask.StopInvoked.ShouldTrue(); }
public void Start_Should_LoopBySpan() { var mockTask = MockTask.Create(); int loopCount = 3; using (var loopTask = new SimpleLoopTask()) { loopTask.LoopSpan = TimeSpan.FromMilliseconds(50); loopTask.LoopAction = mockTask.MockAction; loopTask.AfterExitLoopAction = mockTask.MockStopAction; loopTask.Start(); Task.Delay(TimeSpan.FromMilliseconds(50 * loopCount + 20)).Wait(); mockTask.StopInvoked.ShouldFalse(); } (mockTask.InvokeCount >= 3).ShouldTrue(); (mockTask.InvokeCount <= 4).ShouldTrue(); mockTask.StopInvoked.ShouldTrue(); }