public void When_The_Start_Less_Than_Zero()
 {
     var instance = new FibonacciSequenceCalculator();
     var result = instance.Evaluate(-1, 10);
     result.ToArray();
     Assert.Fail("Should have exceptioned...");
 }
示例#2
0
        public void canProduceCorrectFibonacciNthNumber()
        {
            Tuple <int, BigInteger>[] correctNthFibonacciNumbers =
            {
                Tuple.Create(1,   (BigInteger)1),
                Tuple.Create(2,   (BigInteger)1),
                Tuple.Create(3,   (BigInteger)2),
                Tuple.Create(4,   (BigInteger)3),
                Tuple.Create(5,   (BigInteger)5),
                Tuple.Create(6,   (BigInteger)8),
                Tuple.Create(7,   (BigInteger)13),
                Tuple.Create(8,   (BigInteger)21),
                Tuple.Create(9,   (BigInteger)34),
                Tuple.Create(10,  (BigInteger)55),
                Tuple.Create(99,  BigInteger.Parse("218922995834555169026")),
                Tuple.Create(100, BigInteger.Parse("354224848179261915075")),
            };

            var calculator = new FibonacciSequenceCalculator();

            foreach (var nPair in correctNthFibonacciNumbers)
            {
                var result = calculator.CalculateNthNumber(nPair.Item1);
                Assert.AreEqual(nPair.Item2, result);
            }
        }
示例#3
0
        public void canHandleInvalidInput()
        {
            int[] sampleInvalidInputData = { int.MinValue, -1, 0, 101, int.MaxValue };
            var   calculator             = new FibonacciSequenceCalculator();

            foreach (var n in sampleInvalidInputData)
            {
                var result = calculator.CalculateNthNumber(n);
                Assert.AreEqual(-1, result);
            }
        }
 public void When_A_Simple_Small_Range_Is_Selected()
 {
     var instance = new FibonacciSequenceCalculator();
     var result = instance.Evaluate(0, 11);
     Assert.IsNotNull(result);
     Assert.IsTrue(result.Any());
     Assert.AreEqual("0", result.First());
     Assert.AreEqual("8", result.Last());
     Assert.AreEqual(7, result.Count());
     Assert.AreEqual("0, 1, 1, 2, 3, 5, 8", String.Join(", ", result.ToArray()));
 }
        public void Then_The_Fibonacci_Values_Before_The_Start_Are_Skipped()
        {
            var instance = new FibonacciSequenceCalculator();
            var result = instance.Evaluate(10, 10000);
            Assert.IsNotNull(result);
            Assert.IsTrue(result.Any());
            Assert.AreEqual("13", result.First());
            Assert.AreEqual("6765", result.Last());

            // https://www.mathsisfun.com/numbers/fibonacci-sequence.html
            Assert.AreEqual("13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765", String.Join(", ", result.ToArray()));
        }
        public void When_A_Larger_Range_Is_Selected()
        {
            var instance = new FibonacciSequenceCalculator();
            var result = instance.Evaluate(0, 10000);
            Assert.IsNotNull(result);
            Assert.IsTrue(result.Any());
            Assert.AreEqual("0", result.First());
            Assert.AreEqual("6765", result.Last());

            // https://www.mathsisfun.com/numbers/fibonacci-sequence.html
            Assert.AreEqual("0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765", String.Join(", ", result.ToArray()));
        }