public void FindNextSmallerIndex_GivenIsTheLargest_LastButOne(int length)
        {
            var values = Enumerable.Range(1, length).ToArray();
            var index  = MinAbsSumOfTwo.FindNextSmallerIndex(values, values.Last(), 0, length);

            index.Should().Be(length - 2);
        }
        public void FindNextSmallerIndex_AllSmallerThanGiven_Last(int length)
        {
            var values = Enumerable.Range(1, length).ToArray();
            var index  = MinAbsSumOfTwo.FindNextSmallerIndex(values, values.Last() + 1, 0, length);

            index.Should().Be(length - 1);
        }
        public void GetMinAbsSumOfTwo_AllNegative_MaxNegativeDoubledAbs()
        {
            var values    = new[] { -8, -4123221, -5, -10, -3 };
            var minAbsSum = new MinAbsSumOfTwo().GetMinAbsSumOfTwo(values);

            minAbsSum.Should().Be(6);
        }
        public void FindNextSmallerIndex_GivenIsTheSmallest_NotFound(int length)
        {
            var values = Enumerable.Range(1, length).ToArray();
            var index  = MinAbsSumOfTwo.FindNextSmallerIndex(values, 1, 0, length);

            index.Should().Be(-1);
        }
        public void GetMinAbsSumOfTwo_AllPositive_MinPositiveDoubled()
        {
            var values    = new[] { 8, 4, 546546448, 10, 3 };
            var minAbsSum = new MinAbsSumOfTwo().GetMinAbsSumOfTwo(values);

            minAbsSum.Should().Be(6);
        }
        public void GetMinAbsSumOfTwo_ContainsZero_0()
        {
            var values    = new[] { -8, 4, 5, -10, 0, 3 };
            var minAbsSum = new MinAbsSumOfTwo().GetMinAbsSumOfTwo(values);

            minAbsSum.Should().Be(0);
        }
        public void GetMinAbsSumOfTwo_Sample2_3()
        {
            var values    = new[] { -8, 4, 5, -10, 3 };
            var minAbsSum = new MinAbsSumOfTwo().GetMinAbsSumOfTwo(values);

            minAbsSum.Should().Be(3);
        }
        public void GetMinAbsSumOfTwo_Sample1_1()
        {
            var values    = new[] { 1, 4, -3 };
            var minAbsSum = new MinAbsSumOfTwo().GetMinAbsSumOfTwo(values);

            minAbsSum.Should().Be(1);
        }
        public void FindNextSmallerIndex_GivenIsInTheMiddle_JustBeforeMiddle(int length)
        {
            var values = Enumerable.Range(1, length).ToArray();
            var target = values[length / 2];
            var index  = MinAbsSumOfTwo.FindNextSmallerIndex(values, target, 0, length);

            index.Should().Be(length / 2 - 1);
        }
 private int?DoFind(int[] values, int target)
 {
     try
     {
         return(MinAbsSumOfTwo.FindNextSmallerIndex(values, target, 0, values.Length));
     }
     catch (Exception exc)
     {
         _outputHelper.WriteLine(exc.Message);
         return(null);
     }
 }