예제 #1
0
        /// <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);
        }
예제 #2
0
        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));
        }