public void ShouldEventuallyFindAnEvenRandomInteger_WhenGivenRandomInteger() { var exceptionList = new List<Exception>(); var evenNumberFound = new FibonacciRetry().Do(() => { var randInt = rand.Next(0, 10000); if (randInt % 2 == 0) return true; throw new ApplicationException($"Random int [{randInt}] was odd."); }, ref exceptionList, 100, 5); if (evenNumberFound) { Debug.WriteLine("Successfully found an even integer after {0} tries.", exceptionList.Count); } var exceptionsText = new StringBuilder(); foreach (var exceptionString in exceptionList) { exceptionsText.Append(exceptionString); } var message = String.Format("Failed to find an even number [{0}] times. Details: {1}", exceptionList.Count, exceptionsText); Assert.IsTrue(evenNumberFound, message); }
public void ShouldFailTenTimesThenSucceed() { var exceptions = new List<Exception>(); var trueAfterTenTries = new FibonacciRetry().Do<bool>(() => { if (_tenTimeFailCounter-- > 0) { throw new ApplicationException($"Counter is at {_tenTimeFailCounter+1}, thus greater than zero"); } return true; }, ref exceptions, 11, 5); Assert.IsTrue(trueAfterTenTries, "Test delegate never succeeded"); Assert.AreEqual(10, exceptions.Count); }
public void ShouldDoSimpleTask_WhenAsked() { var two = new FibonacciRetry().Do(() => 1+1); Assert.AreEqual(2, two); }
public void ShouldReturnDefaultOfT_WhenDividingByZero() { var fibonacciRetry = new FibonacciRetry(); var i = 0; Assert.AreEqual(default(object), fibonacciRetry.Do<object>(() => 27 / i)); }
public void ShouldRunBaseCase_WhenCalledWithDefault() { var i = 0; var ret = new FibonacciRetry().Do<object>((() => $"Hello {i++}")); Assert.AreEqual("Hello 0", ret); }