// It's possible for the user to provide arguments that conflict with each other. This method throws // exceptions in these cases. public static bool ValidateArgumentsModel(ArgumentsModel argumentsModel) { // Respond with "how to use" if no arguments are provided. if (!argumentsModel.NumberProvided && !argumentsModel.MathFact && !argumentsModel.TriviaFact && !argumentsModel.RandomNumber) { throw new ArgumentException(ErrorConstants.HOW_TO_USE); } // Make sure we didn't both provide a number and request a random one if (argumentsModel.NumberProvided && argumentsModel.RandomNumber) { throw new ArgumentException(ErrorConstants.BOTH_RANDOM_AND_NUMBER_PROVIDED); } // Make sure we either were given a number or a random number was requested. if (!argumentsModel.NumberProvided && !argumentsModel.RandomNumber) { throw new ArgumentException(ErrorConstants.NEITHER_RANDOM_OR_NUMBER_PROVIDED); } // Make sure we're not requesting both a math fact and a trivia fact. if (argumentsModel.MathFact && argumentsModel.TriviaFact) { throw new ArgumentException(ErrorConstants.BOTH_MATH_AND_TRIVIA_FACT_PROVIDED); } // Make sure we're making a request for either a trivia or a math fact. if (!argumentsModel.MathFact && !argumentsModel.TriviaFact) { throw new ArgumentException(ErrorConstants.NEITHER_MATH_OR_TRIVIA_FACT_PROVIDED); } return(true); }
public ActionResult <double> Post([FromBody] ArgumentsModel model) { double?result = null; if (model == null) { return(BadRequest("Неверно указаны аргументы")); } switch (model.Operation) { case "sum": result = CalculatorFunctions.Sum(model.FirstDigit, model.SecondDigit); break; case "multiply": result = CalculatorFunctions.Multiply(model.FirstDigit, model.SecondDigit); break; //TODO: Добавление новых операций default: return(BadRequest("Неправильно указана операция")); } return(result); }
public Dumper(ISource source, IDestination destination, ConsoleLifetime hostLifetime, ILogger <Dumper> logger, ArgumentsModel model) { _source = source; _destination = destination; _hostLifetime = hostLifetime; _logger = logger; _model = model; }
public ZipDestination(ArgumentsModel model, ILogger <ZipDestination> logger) { _logger = logger; _logger.LogDebug("Writing to zip file at {File}", model.Input); FileStream zipFs = File.Create(model.Output); _zip = new ZipArchive(zipFs, ZipArchiveMode.Create); }
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); }
// Returns either an endpoint with the user's number or the "random" endpoint. private static string NumberOrRandomNumberEndpoint(ArgumentsModel argumentsModel) { if (argumentsModel.RandomNumber) { return(APIConstants.RANDOM_NUMBER); } else { return(argumentsModel.Number.ToString()); } }
// Returns endpoint for either a math or trivia fact. private static string MathOrTriviaFactEndpoint(ArgumentsModel argumentsModel) { if (argumentsModel.MathFact) { return(APIConstants.MATH_FACT); } else { return(APIConstants.TRIVIA_FACT); } }
public ArgumentsModel Build() { ArgumentsModel argumentsModel = new ArgumentsModel(); argumentsModel.Number = _number; argumentsModel.NumberProvided = _numberProvided; argumentsModel.RandomNumber = _randomNumber; argumentsModel.MathFact = _mathFact; argumentsModel.TriviaFact = _triviaFact; return(argumentsModel); }
public void ShouldCreateEmptyModel() { // Arrange / Act ArgumentsModel argumentsModel = new ArgumentsModel(); // Assert Assert.AreEqual(0, argumentsModel.Number); Assert.AreEqual(false, argumentsModel.RandomNumber); Assert.AreEqual(false, argumentsModel.MathFact); Assert.AreEqual(false, argumentsModel.TriviaFact); Assert.AreEqual(false, argumentsModel.NumberProvided); }
public void ShouldReturnURLForProvidedNumberTriviaFact() { // Arrange ArgumentsModelBuilder argumentsModelBuilder = new ArgumentsModelBuilder(); ArgumentsModel argumentsModel = argumentsModelBuilder.WithNumber(33).WithTriviaFact().Build(); // Act string endpointUrl = NumfactsAPIClient.BuildAPIEndpointUrl(argumentsModel); // Assert Assert.AreEqual($"https://numbersapi.p.rapidapi.com/33/trivia", endpointUrl); }
public void ShouldReturnURLForRandomNumberMathFact() { // Arrange ArgumentsModelBuilder argumentsModelBuilder = new ArgumentsModelBuilder(); ArgumentsModel argumentsModel = argumentsModelBuilder.WithRandomNumber().WithMathFact().Build(); // Act string endpointUrl = NumfactsAPIClient.BuildAPIEndpointUrl(argumentsModel); // Assert Assert.AreEqual($"https://numbersapi.p.rapidapi.com/random/math", endpointUrl); }
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 ShouldHoldRandomNumberBooleanAndMathFactBoolean() { ArgumentsModel argumentsModel = new ArgumentsModel(); argumentsModel.RandomNumber = true; argumentsModel.MathFact = true; argumentsModel.TriviaFact = false; Assert.AreEqual(true, argumentsModel.RandomNumber); Assert.AreEqual(true, argumentsModel.MathFact); Assert.AreEqual(false, argumentsModel.TriviaFact); Assert.AreEqual(false, argumentsModel.NumberProvided); }
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 ShouldCreateModelWithBuilderDefaults() { // Arrange ArgumentsModelBuilder argumentsModelBuilder = new ArgumentsModelBuilder(); // Act ArgumentsModel argumentsModel = argumentsModelBuilder.Build(); // Assert Assert.AreEqual(int.MinValue, argumentsModel.Number); Assert.AreEqual(false, argumentsModel.RandomNumber); Assert.AreEqual(false, argumentsModel.MathFact); Assert.AreEqual(false, argumentsModel.TriviaFact); }
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 AmqpDestination(ArgumentsModel model, ILogger <AmqpDestination> logger) { _model = model; _logger = logger; Uri amqpUri = new Uri(model.Output); _logger.LogDebug("Connecting to AMQP for writing at {Uri}", amqpUri); UriConnectionFactory connectionFactory = new UriConnectionFactory(amqpUri); _connection = connectionFactory.CreateConnection(); _channel = _connection.CreateModel(); }
public AmqpSource(ArgumentsModel model, ILogger <AmqpSource> logger) { _model = model; _logger = logger; _remaining = model.MessageLimit ?? -1; Uri amqpUri = new Uri(model.Input); _logger.LogDebug("Connecting to AMQP for reading at {Uri}", amqpUri); UriConnectionFactory connectionFactory = new UriConnectionFactory(amqpUri); _connection = connectionFactory.CreateConnection(); _channel = _connection.CreateModel(); }
public void ParameterAdd(string text, object value, SqlVariables var, SqlDirections direction = SqlDirections.Input) { if (string.IsNullOrEmpty(text)) { throw new ArgumentNullException(EntitierStrings.MustProvideName); } var model = new ArgumentsModel { Text = text, Value = value, Var = var, Directions = direction }; if (_parameters == null) { _parameters = new List <ArgumentsModel>(); } _parameters.Add(model); }
public void ShouldCreateModelWithNumber() { // Arrange ArgumentsModelBuilder argumentsModelBuilder = new ArgumentsModelBuilder(); argumentsModelBuilder.WithNumber(33); // Act ArgumentsModel argumentsModel = argumentsModelBuilder.Build(); // Assert Assert.AreEqual(33, argumentsModel.Number); Assert.IsTrue(argumentsModel.NumberProvided); Assert.AreEqual(false, argumentsModel.RandomNumber); Assert.AreEqual(false, argumentsModel.MathFact); Assert.AreEqual(false, argumentsModel.TriviaFact); }
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); }
public void ShouldCreateModelWithTriviaFactBoolean() { // Arrange ArgumentsModelBuilder argumentsModelBuilder = new ArgumentsModelBuilder(); argumentsModelBuilder.WithTriviaFact(); // Act ArgumentsModel argumentsModel = argumentsModelBuilder.Build(); // Assert Assert.AreEqual(int.MinValue, argumentsModel.Number); Assert.IsFalse(argumentsModel.NumberProvided); Assert.AreEqual(false, argumentsModel.RandomNumber); Assert.AreEqual(false, argumentsModel.MathFact); Assert.AreEqual(true, argumentsModel.TriviaFact); }
public static ArgumentsModel CreateArgumentsModelFromUserInput(string[] args) { // Create the model builder and begin the building process. Check for errors along the way. ArgumentsModelBuilder argumentsModelBuilder = new ArgumentsModelBuilder(); // Loop through each argument and add it to the builder for (int i = 0; i < args.Length; i++) { // If this is the first argument, try to parse it as an integer. if (i == 0) { bool numberSuccessfullyParsed = int.TryParse(args[i], out int passedInNumber); if (numberSuccessfullyParsed) { argumentsModelBuilder.WithNumber(passedInNumber); continue; } } // Check for valid options and update model build accordingly. switch (args[i]) { case FlagConstants.RANDOM_NUMBER_FLAG: argumentsModelBuilder.WithRandomNumber(); break; case FlagConstants.MATH_FACT_FLAG: argumentsModelBuilder.WithMathFact(); break; case FlagConstants.TRIVIA_FACT_FLAG: argumentsModelBuilder.WithTriviaFact(); break; default: throw new ArgumentException(ErrorConstants.INVALID_INPUT + args[i]); } } ArgumentsModel argumentsModel = argumentsModelBuilder.Build(); return(argumentsModel); }
public void ShouldHoldNumberIntegerAndMathFactBoolean() { // Arrange ArgumentsModel argumentsModel = new ArgumentsModel(); // Act argumentsModel.Number = 33; argumentsModel.NumberProvided = true; argumentsModel.RandomNumber = false; argumentsModel.MathFact = true; argumentsModel.TriviaFact = false; // Assert Assert.AreEqual(33, argumentsModel.Number); Assert.AreEqual(false, argumentsModel.RandomNumber); Assert.AreEqual(true, argumentsModel.MathFact); Assert.AreEqual(false, argumentsModel.TriviaFact); Assert.AreEqual(true, argumentsModel.NumberProvided); }
static void Main(string[] args) { try { ArgumentsModel arguments = ArgumentsParser.Parse(args); HttpListener listener = new HttpListener(Console.Out, arguments.WebsiteDirectory, arguments.IP, arguments.Port); listener.ListenLoop(); } catch (Exception exc) { Console.WriteLine(" >>Error: " + exc.Message); Console.WriteLine(" >>Press enter to exit"); Console.ReadLine(); } }
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); } }
// Returns the endpoint url we need based upon the user's arguments. public static string BuildAPIEndpointUrl(ArgumentsModel argumentsModel) { return($"{APIConstants.BASE_URL}/{NumberOrRandomNumberEndpoint(argumentsModel)}/{MathOrTriviaFactEndpoint(argumentsModel)}"); }