/// <summary> Validates the data described by findGCD. </summary> /// <exception cref="ArgumentNullException"> Thrown when one or more required arguments are /// null. </exception> /// <param name="findGCD"> The find gcd delegate. </param> private static void ValidateData(FindingDelegateGCD findingDelegate) { if (findingDelegate == null) { throw new ArgumentNullException($"{(nameof(findingDelegate))} cant be a null"); } }
private static int GetGCD(FindingDelegateGCD findingDelegate, params int[] numbers) { int greatestCommonDivisor = 0; for (int i = 0; i < numbers.Length; i++) { greatestCommonDivisor = findingDelegate(greatestCommonDivisor, numbers[i]); } return(greatestCommonDivisor); }
/// <summary> Validates the data described by findGCD. </summary> /// <exception cref="ArgumentNullException"> Thrown when one or more required arguments are /// null. </exception> /// <exception cref="ArgumentException"> Thrown when one or more arguments have /// unsupported or illegal values. </exception> /// <param name="findingDelegate"> The finding delegate. </param> /// <param name="numbers"> A variable-length parameters list containing numbers. </param> private static void ValidateData(FindingDelegateGCD findingDelegate, params int[] numbers) { if (findingDelegate == null) { throw new ArgumentNullException($"{(nameof(findingDelegate))} cant be a null"); } if (numbers.Length == 1 && numbers[0] == 0) { throw new ArgumentException($"{nameof(numbers)} cant have length is one and element zero"); } }
public static void EuclidsAlgorithmTest_Numbers_ArgumentNullException(FindingDelegateGCD findingDelegateGCD, params int[] numbers) => Assert.Throws <ArgumentNullException>(() => GreatestCommonDivisor.EuclidMethodForFindingGCD(findingDelegateGCD, numbers));
public static void EuclidsAlgorithmTest(FindingDelegateGCD findingDelegateGCD, int expected, int a, int b) { Assert.AreEqual(expected, GreatestCommonDivisor.EuclidMethodForFindingGCD(findingDelegateGCD, a, b)); }
public static void EuclidsAlgorithmTest(FindingDelegateGCD findingDelegateGCD, int expected, params int[] numbers) { Assert.AreEqual(expected, GreatestCommonDivisor.EuclidMethodForFindingGCD(findingDelegateGCD, numbers)); }
/// <summary> Gcd for a two numbers. </summary> /// <param name="findGCD"> The find gcd delegate. </param> /// <param name="a"> An int to process. </param> /// <param name="b"> An int to process. </param> /// <returns> An int value. </returns> public static int EuclidMethodForFindingGCD(FindingDelegateGCD findGCD, int a, int b) { ValidateData(findGCD); return(findGCD.Invoke(a, b)); }
/// <summary> Gcd for a lot of numbers. </summary> /// <param name="findGCD"> The find gcd delegate. </param> /// <param name="numbers"> A variable-length parameters list containing numbers. </param> /// <returns> An int value. </returns> public static int EuclidMethodForFindingGCD(FindingDelegateGCD findGCD, params int[] numbers) { ValidateData(findGCD, numbers); return(GetGCD(findGCD, numbers)); }