public void FindNextPrimeNumberBiggerOrEqual_NumberBiggerThanOne_TheNextBiggerPrimeNumber(int number, int expectedPrimeNumber)
        {
            var stopwatch = Stopwatch.StartNew();

            int primeNumber = PrimeNumberHelper.FindNextPrimeNumberBiggerOrEqual(number);

            stopwatch.Stop();

            Assert.Equal(expectedPrimeNumber, primeNumber);
        }
        public void FindNextPrimeNumberBiggerOrEqual_NumberSmallerThanZero_ThrowArgumentOutOfRangeException(int number)
        {
            var exceptionMessage = "Since a prime number (or a prime) is defined as a natural number " +
                                   "greater than 1, only numbers greater than 1 are accepted. (Parameter 'number')";
            Action action = () => PrimeNumberHelper.FindNextPrimeNumberBiggerOrEqual(number);

            Exception ex = Record.Exception(action);

            Assert.NotNull(ex);
            Assert.IsType <ArgumentOutOfRangeException>(ex);
            Assert.Equal(exceptionMessage, ((ArgumentOutOfRangeException)ex).Message);
        }
示例#3
0
        public ActionResult <OperationResult> FindNextPrimeNumber([Required] decimal number)
        {
            if (number > 2147483647)
            {
                return(ValidationProblem(
                           new ValidationProblemDetails(
                               new Dictionary <string, string[]> {
                    {
                        "number", new string[] { "Only numbers between 2 and 2,147,483,647 are accepted." }
                    }
                }
                               )
                           ));
            }

            try
            {
                int nextPrime = PrimeNumberHelper.FindNextPrimeNumberBiggerOrEqual((int)number);

                return(Ok(new OperationResult(
                              OperationNames.FindNextPrimeNumberBiggerOrEqual,
                              new Dictionary <string, object>()
                {
                    { "number", number }
                },
                              $"{nextPrime} is the next prime number.")));
            }
            catch (ArgumentOutOfRangeException argumentEx)
            {
                return(ValidationProblem(
                           new ValidationProblemDetails(
                               new Dictionary <string, string[]> {
                    {
                        "number", new string[] { argumentEx.Message }
                    }
                }
                               )
                           ));
            }
            catch (Exception)
            {
                return(StatusCode((int)HttpStatusCode.InternalServerError, new ProblemDetails()
                {
                    Status = (int)HttpStatusCode.InternalServerError,
                    Detail = ResponseErrors.UnknownError,
                    Title = "unknownError"
                }));
            }
        }