public void MaximumNumberOfTries_ActionSucceedsThirdTime_TriedThreeTimes() { using (ShimsContext.Create()) { // Arrange ShimThread.SleepInt32 = i => { }; var callCount = 0; var retry = new RetryImpl((() => { callCount += 1; if (callCount == 3) { return; // success } Throws(); })); // Act retry.MaximumNumberOfTries(5) .Run(); // Assert Assert.AreEqual(3, callCount); } }
public void MaximumNumberOfTries_ActionKeepsFailing_SleptFourTimes() { // Arrange var retry = new RetryImpl(() => false, new RethrowAllExceptionBehavior(), doNotWaitHandler); // Act var result = retry.MaximumNumberOfTries(5) .Run(); // Assert Assert.AreEqual(4, doNotWaitHandler.SleepCount); Assert.AreEqual(CompletionState.Failed, result); }
public void MaximumNumberOfTries_ActionKeepsFailing_TriedFiveTimes() { // Arrange var callCount = 0; var retry = new RetryImpl((() => { callCount += 1; Throws(); })); // Act var result = retry.MaximumNumberOfTries(5) .Run(); // Assert Assert.AreEqual(5, callCount); Assert.AreEqual(CompletionState.Failed, result); }
public void RunAsync_TryThrows_BehaviorOnExceptionIsCalled() { // Arrange var mockedExceptionBehavior = new Mock <IExceptionBehavior>(); var retry = new RetryImpl(() => { Throws(); }, mockedExceptionBehavior.Object, doNotWaitHandler); retry.MaximumNumberOfTries(1); // Act retry.RunAsync().Wait(); // Assert mockedExceptionBehavior.Verify(behavior => behavior.OnException(It.IsAny <Exception>()), Times.Once); }
public void MaximumNumberOfTries_ActionKeepsFailing_TriedFiveTimes() { using (ShimsContext.Create()) { // Arrange ShimThread.SleepInt32 = i => { }; var callCount = 0; var retry = new RetryImpl((() => { callCount += 1; Throws(); })); // Act retry.MaximumNumberOfTries(5) .Run(); // Assert Assert.AreEqual(5, callCount); } }
public void MaximumNumberOfTries_ActionSucceedsThirdTime_TriedThreeTimes() { // Arrange var callCount = 0; var retry = new RetryImpl((() => { callCount += 1; if (callCount == 3) { return; // success } Throws(); })); // Act var result = retry.MaximumNumberOfTries(5) .Run(); // Assert Assert.AreEqual(3, callCount); Assert.AreEqual(CompletionState.Success, result); }