/// <summary> /// Generate the Fibonacci Number. /// </summary> /// <param name="number">Index in the sequence.</param> /// <returns>The number at n position in the Fibonacci sequence.</returns> public long FibonacciNumber(long number) { var properties = new Dictionary <string, string> { { "Argument 'n'", number.ToString() } }; Telemetry.TrackEvent("FibonacciNumber", properties); long result = 0; try { result = new FibonacciNumberService().Calculate(number); } catch (ArgumentOutOfRangeException) { // The ArgumentOutOfRangeException is expected, therefore re-throw it further. throw; } catch (Exception exception) { Telemetry.TrackException(exception); } return(result); }
public long GetFibonacciNumber(long n) { var properties = new Dictionary <string, string> { { "Argument 'n'", n.ToString() } }; telemetry.TrackEvent("FibonacciNumber", properties); var result = new FibonacciNumberService().Calculate(n); return(result); }
public void OneTimeSetup() { publisherMoq = new Mock <IPublisher <FibonacciNumberMessage> >(); var guidManager = new Mock <IGuidManager>(); guidManager.Setup(x => x.GetNew()).Returns(testGuidValue); var dateTimeManager = new Mock <IDateTimeManager>(); dateTimeManager.Setup(x => x.GetNow()).Returns(testDateTimeValue); var messageBuilder = new FibonacciNumberMessageBuilder(dateTimeManager.Object, guidManager.Object); var numberValidator = new FibonacciNumberValidator(); var algorithm = new IterativeFibonacciAlgorithm(); var numberProvider = new FibonacciNumberProvider(numberValidator, algorithm); var loggerMoq = new Mock <ILogger <FibonacciNumberService> >(); service = new FibonacciNumberService(publisherMoq.Object, messageBuilder, numberProvider, loggerMoq.Object); }
public void Check_FibornacciNumberSerice(long number, long expected) { FibonacciNumberService service = new FibonacciNumberService(); Assert.Equal(expected, service.GetFibonacciNumber(number)); }