public void Parse_MoreThanOneOptionValue_ShouldAddError() { var parser = new StringOptionParser(typeof(DataTypesCommandOptions).GetProperty("String"), "string"); var tokens = new List <Token> { new OptionToken("string") { OptionValues = { "value1", "value2" } } }; var parseResult = new ParseResult(); parseResult.CommandOptions = new DataTypesCommandOptions(); parser.Parse(tokens, parseResult); parseResult.HasErrors.Should().BeTrue(); parseResult.Errors.Should().HaveCount(1); parseResult.Errors[0].Should().BeOfType <OptionMultipleValuesError>(); var error = (OptionMultipleValuesError)parseResult.Errors[0]; error.OptionName.Should().Be("string"); error.GetErrorMessage().Should().Be("Multiple values are given for the option --string, but the option expects a single value."); }
public void Parse_OptionNotPresent_ShouldAssignDefaultValueToTargetProperty() { var parser = new StringOptionParser(typeof(DataTypesCommandOptions).GetProperty("String"), "string"); parser.OptionDefaultValue = "value"; var tokens = new List <Token>(); var parseResult = new ParseResult(); var dataTypesCommandOptions = new DataTypesCommandOptions(); parseResult.CommandOptions = dataTypesCommandOptions; parser.Parse(tokens, parseResult); dataTypesCommandOptions.String.Should().Be("value"); }
public void Parse_ValidValue_ShouldParseAndAssignValueToTargetProperty() { var parser = new StringOptionParser(typeof(DataTypesCommandOptions).GetProperty("String"), "string"); var tokens = new List <Token> { new OptionToken("string") { OptionValues = { "value" } } }; var parseResult = new ParseResult(); var dataTypesCommandOptions = new DataTypesCommandOptions(); parseResult.CommandOptions = dataTypesCommandOptions; parser.Parse(tokens, parseResult); dataTypesCommandOptions.String.Should().Be("value"); }
public void Parse_RequiredOptionMissing_ShouldAddError() { var parser = new StringOptionParser(typeof(DataTypesCommandOptions).GetProperty("String"), "string"); parser.IsOptionRequired = true; var tokens = new List <Token>(); var parseResult = new ParseResult(); parseResult.CommandOptions = new DataTypesCommandOptions(); parser.Parse(tokens, parseResult); parseResult.HasErrors.Should().BeTrue(); parseResult.Errors.Should().HaveCount(1); parseResult.Errors[0].Should().BeOfType <OptionMissingError>(); var error = (OptionMissingError)parseResult.Errors[0]; error.OptionName.Should().Be("string"); error.GetErrorMessage().Should().Be("The option --string is required."); }
public void Parse_OptionValueMissing_ShouldAddError() { var parser = new StringOptionParser(typeof(DataTypesCommandOptions).GetProperty("String"), "string"); var tokens = new List <Token> { new OptionToken("string") }; var parseResult = new ParseResult(); parseResult.CommandOptions = new DataTypesCommandOptions(); parser.Parse(tokens, parseResult); parseResult.HasErrors.Should().BeTrue(); parseResult.Errors.Should().HaveCount(1); parseResult.Errors[0].Should().BeOfType <OptionValueMissingError>(); var error = (OptionValueMissingError)parseResult.Errors[0]; error.OptionName.Should().Be("string"); error.GetErrorMessage().Should().Be("The option --string requires a value, but no value was specified."); }