public void GetMaximumProductExceptionsTest()
        {
            var calc = new MaximumProductCalculator();

            Assert.Throws(typeof(ArgumentNullException), () => calc.GetMaximumProduct(null));
            Assert.Throws(typeof(ApplicationException), () => calc.GetMaximumProduct(new int[0]));
            Assert.Throws(typeof(ApplicationException), () => calc.GetMaximumProduct(new int[] { Int32.MaxValue, Int32.MaxValue }));
        }
        public void GetIndexOfMaximumTest()
        {
            var       array          = new int[] { 1, 2, 3, 4 };
            const int indexOfMaximum = 3;

            var calc    = new MaximumProductCalculator();
            var maxProd = calc.GetIndexOfMaximum(array);

            Assert.AreEqual(indexOfMaximum, maxProd);
        }
        public void GetIndexOfMaximumWithExclusionTest()
        {
            var       array = new int[] { 1, 2, 5, 4 };
            const int indexOMaximumWithExclusion = 3;
            const int indexToExclude             = 2;

            var calc    = new MaximumProductCalculator();
            var maxProd = calc.GetIndexOfMaximum(array, indexToExclude);

            Assert.AreEqual(indexOMaximumWithExclusion, maxProd);
        }
        public int?GetMaximumProductTest(int[] input)
        {
            var calc = new MaximumProductCalculator();

            return(calc.GetMaximumProduct(input));
        }