public void SpeedTestV1_EuclideanIsFaster()
        {
            int[] arr = Enumerable.Range(1, 100_000).ToArray();
            long  euclideanMilliseconds;
            long  steinMilliseconds;

            GCDAlgorithms.FindGcdByEuclidean(out euclideanMilliseconds, arr);
            GCDAlgorithms.FindGcdByStein(out steinMilliseconds, arr);
            Assert.IsTrue(steinMilliseconds > euclideanMilliseconds);
        }
 public static void FindGcdByEuclidian_IntMinValue_ArgumentExeption(params long[] numbers)
 {
     Assert.Throws <ArgumentException>(() => GCDAlgorithms.FindGcdByEuclidean(int.MaxValue, int.MinValue));
 }
 public static int FindGcdByEuclidean_Params_GCD(params int[] numbers)
 => GCDAlgorithms.FindGcdByEuclidean(numbers);
 public static int FindGcdByEuclidean_TwoNumbers_GCD(int val1, int val2)
 => GCDAlgorithms.FindGcdByEuclidean(val1, val2);
 public void GetGcdByEuclideanV1_WithAllZeroParameters_ThrowsArgumentException(params int[] vs) =>
 Assert.Throws <ArgumentException>(() => GCDAlgorithms.FindGcdByEuclidean(vs));
 public void GetGcdByEuclideanV1_WithMinValueParameter_ThrowsOutOfRangeException(params int[] vs) =>
 Assert.Throws <ArgumentOutOfRangeException>(() => GCDAlgorithms.FindGcdByEuclidean(vs));
        public void GetGcdByEuclideanV1_WithManyValidParameters(int expectedResult, params int[] vs)
        {
            int result = GCDAlgorithms.FindGcdByEuclidean(vs);

            Assert.AreEqual(expectedResult, result);
        }
 public static int GetGcdByEuclideanV1_With3ValidParameters(int firstNumber, int secondNumber, int thirdNumber) => GCDAlgorithms.FindGcdByEuclidean(firstNumber, secondNumber, thirdNumber);
 public static void FindGcdByStein_ZeroParams_ArgumentExeption(params long[] numbers)
 {
     Assert.Throws <ArgumentException>(() => GCDAlgorithms.FindGcdByEuclidean(0, 0, 0, 0, 0, 0, 0));
 }