public void ShouldThrowExceptionWhenInvalidArgumentIsPassedIn()
        {
            // Arrange
            string[] args = new string[3] {
                "33", "/m", "sdflkjdsfs"
            };

            // Act
            ArgumentsModel argumentsModel = ArgumentsHandler.CreateArgumentsModelFromUserInput(args);
        }
        public void ShouldThrowExceptionIfNumberIsNotFirstArgument()
        {
            // Arrange
            string[] args = new string[2] {
                "/m", "33"
            };

            // Act
            ArgumentsModel argumentsModel = ArgumentsHandler.CreateArgumentsModelFromUserInput(args);
        }
        public void ShouldThrowExceptionWhenTriviaFactIsProvidedButNumberIsNot()
        {
            // Arrange
            string[] args = new string[1] {
                "/t"
            };

            // Act
            ArgumentsModel argumentsModel = ArgumentsHandler.CreateArgumentsModelFromUserInput(args);

            // Assert
            bool modelIsValid = ArgumentsHandler.ValidateArgumentsModel(argumentsModel);
        }
        public void ShouldThrowExceptionWhenBothMathAndTriviaFactsAreRequested()
        {
            // Arrange
            string[] args = new string[2] {
                "/m", "/t"
            };

            // Act
            ArgumentsModel argumentsModel = ArgumentsHandler.CreateArgumentsModelFromUserInput(args);

            // Assert
            bool modelIsValid = ArgumentsHandler.ValidateArgumentsModel(argumentsModel);
        }
        public void ShouldThrowExceptionWhenBothNumberAndRandomNumberAreRequested()
        {
            // Arrange
            string[] args = new string[2] {
                "33", "/r"
            };

            // Act
            ArgumentsModel argumentsModel = ArgumentsHandler.CreateArgumentsModelFromUserInput(args);

            // Assert
            bool modelIsValid = ArgumentsHandler.ValidateArgumentsModel(argumentsModel);
        }
        public void ShouldConsiderModelValidWithRandomNumberAndTriviaFact()
        {
            // Arrange
            string[] args = new string[2] {
                "/r", "/t"
            };
            ArgumentsModel argumentsModel = ArgumentsHandler.CreateArgumentsModelFromUserInput(args);

            // Act
            bool modelIsValid = ArgumentsHandler.ValidateArgumentsModel(argumentsModel);

            // Assert
            Assert.IsTrue(modelIsValid);
        }
        public void ShouldCreateModelWithSingleIntegerArgument()
        {
            // Arrange
            string[] args = new string[1] {
                "33"
            };

            // Act
            ArgumentsModel argumentsModel = ArgumentsHandler.CreateArgumentsModelFromUserInput(args);

            // Assert
            Assert.AreEqual(33, argumentsModel.Number);
            Assert.IsTrue(argumentsModel.NumberProvided);
        }
        public void ShouldCreateModelWithAllPossibleArguments()
        {
            // Arrange
            string[] args = new string[4] {
                "33", "/r", "/m", "/t"
            };

            // Act
            ArgumentsModel argumentsModel = ArgumentsHandler.CreateArgumentsModelFromUserInput(args);

            // Assert
            Assert.AreEqual(33, argumentsModel.Number);
            Assert.IsTrue(argumentsModel.RandomNumber);
            Assert.IsTrue(argumentsModel.MathFact);
            Assert.IsTrue(argumentsModel.TriviaFact);
            Assert.IsTrue(argumentsModel.NumberProvided);
        }
Beispiel #9
0
        public static void Main(string[] args)
        {
            try
            {
                // Make sure the arguments are properly split apart before creating the argument model.
                string[] splitArgs = ArgumentsHandler.BreakApartArguments(args);

                // Create arguments model from passed in arguments.
                ArgumentsModel argumentsModel = ArgumentsHandler.CreateArgumentsModelFromUserInput(splitArgs);

                // Validate the arguments model before making the API request.
                ArgumentsHandler.ValidateArgumentsModel(argumentsModel);

                // Notify the user that we're about to make an API request.
                Console.WriteLine(OutputConstants.API_LOADING);

                // Make the API request.
                NumfactsAPIClient numfactsAPIClient = new NumfactsAPIClient(
                    new RestClient(
                        NumfactsAPIClient.BuildAPIEndpointUrl(argumentsModel)
                        )
                    );

                APIResponseModel apiResponseModel = numfactsAPIClient.GetNumFact();

                // Display the results to the user.
                if (apiResponseModel.Found)
                {
                    Console.WriteLine(OutputConstants.FACT_DISPLAY_TEMPLATE, MathOrTriviaFactPrefix(apiResponseModel), apiResponseModel.Number, apiResponseModel.Text);
                }
                else
                {
                    throw new Exception(ErrorConstants.NO_FACT_FOUND + apiResponseModel.Number);
                }
            } catch (Exception ex)
            {
                // Display the error to the user.
                Console.WriteLine(ex.Message);
            }
        }