public void GetHelpText_ShouldReturnSpecifiedHelpText() { var parser = new EnumListOptionParser <LogLevel>(typeof(DataTypesCommandOptions).GetProperty("Enums"), "enums"); parser.OptionHelp = "Help text for option enums."; parser.GetHelpText().Should().Be(@"Help text for option enums. Possible values: Trace, Debug, Info, Error."); }
public void GetHelpText_EnumValuesHelpPresent_ShouldReturnSpecifiedHelpText() { var parser = new EnumListOptionParser <LogLevel>(typeof(DataTypesCommandOptions).GetProperty("Enums"), "enums"); parser.OptionHelp = "Help text for option enums."; parser.EnumValuesHelps.Add(LogLevel.Trace, "Trace help."); parser.EnumValuesHelps.Add(LogLevel.Debug, "Debug help."); parser.EnumValuesHelps.Add(LogLevel.Info, "Info help."); parser.EnumValuesHelps.Add(LogLevel.Error, "Error help."); parser.GetHelpText().Should().Be(@"Help text for option enums. Possible values: Trace, Debug, Info, Error. Trace: Trace help. Debug: Debug help. Info: Info help. Error: Error help. "); }
public void Parse_OptionNotPresent_ShouldAssignDefaultValueToTargetProperty() { var parser = new EnumListOptionParser <LogLevel>(typeof(DataTypesCommandOptions).GetProperty("Enums"), "logLevels"); parser.OptionDefaultValue = new List <LogLevel> { LogLevel.Info, LogLevel.Error }; var tokens = new List <Token>(); var parseResult = new ParseResult(); var dataTypesCommandOptions = new DataTypesCommandOptions(); parseResult.CommandOptions = dataTypesCommandOptions; parser.Parse(tokens, parseResult); dataTypesCommandOptions.Enums.Should().BeEquivalentTo(LogLevel.Info, LogLevel.Error); }
public void Parse_ValidValues_ShouldParseAndAssignToTargetProperty() { var valueParser = A.Fake <ValueParser>(); var parser = new EnumListOptionParser <LogLevel>(typeof(DataTypesCommandOptions).GetProperty("Enums"), "logLevels"); parser.ValueParser = valueParser; var tokens = new List <Token> { new OptionToken("logLevels") { OptionValues = { "Debug", "Trace" } } }; var parseResult = new ParseResult(); var dataTypesCommandOptions = new DataTypesCommandOptions(); parseResult.CommandOptions = dataTypesCommandOptions; LogLevel logLevel; A.CallTo(() => valueParser.TryParseEnum("Debug", out logLevel)) .Returns(true) .AssignsOutAndRefParameters(LogLevel.Debug); A.CallTo(() => valueParser.TryParseEnum("Trace", out logLevel)) .Returns(true) .AssignsOutAndRefParameters(LogLevel.Trace); parser.Parse(tokens, parseResult); parseResult.HasErrors.Should().BeFalse(); parseResult.CommandOptions.Should().BeOfType <DataTypesCommandOptions>(); dataTypesCommandOptions.Enums.Should().BeEquivalentTo(LogLevel.Debug, LogLevel.Trace); A.CallTo(() => valueParser.TryParseEnum("Debug", out logLevel)).MustHaveHappened(); A.CallTo(() => valueParser.TryParseEnum("Trace", out logLevel)).MustHaveHappened(); }
public void Parse_RequiredOptionMissing_ShouldAddError() { var parser = new EnumListOptionParser <LogLevel>(typeof(DataTypesCommandOptions).GetProperty("Enums"), "enums"); 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("enums"); error.GetErrorMessage().Should().Be("The option --enums is required."); }
public void Parse_InvalidValue_ShouldAddError() { var valueParser = A.Fake <ValueParser>(); var parser = new EnumListOptionParser <LogLevel>(typeof(DataTypesCommandOptions).GetProperty("Enums"), "logLevels"); parser.ValueParser = valueParser; var tokens = new List <Token> { new OptionToken("logLevels") { OptionValues = { "NonExistentLogLevel" } } }; var parseResult = new ParseResult(); parseResult.CommandOptions = new DataTypesCommandOptions(); LogLevel logLevel; A.CallTo(() => valueParser.TryParseEnum("NonExistentLogLevel", out logLevel)) .Returns(false); parser.Parse(tokens, parseResult); parseResult.HasErrors.Should().BeTrue(); parseResult.Errors.Should().HaveCount(1); parseResult.Errors[0].Should().BeOfType <OptionValueInvalidFormatError>(); var error = (OptionValueInvalidFormatError)parseResult.Errors[0]; error.OptionName.Should().Be("logLevels"); error.InvalidOptionValue.Should().Be("NonExistentLogLevel"); error.ExpectedValueFormat.Should().Be("One of the valid values (see help)"); error.GetErrorMessage().Should().Be("The value 'NonExistentLogLevel' of the option --logLevels has an invalid format. The expected format is: One of the valid values (see help)."); }
/// <summary> /// Initializes a new instance of this class. /// </summary> /// <param name="commandParser">The parser for the command the option belongs to.</param> /// <param name="optionParser">The parser for the option.</param> /// <exception cref="ArgumentNullException"><paramref name="commandParser" /> is null.</exception> /// <exception cref="ArgumentNullException"><paramref name="optionParser" /> is null.</exception> public EnumListOptionSetup(CommandParser <TCommandOptions> commandParser, EnumListOptionParser <TEnum> optionParser) : base(commandParser, optionParser) { }
public void OptionName_ShouldReturnNameSpecifiedViaConstructor() { var parser = new EnumListOptionParser <LogLevel>(typeof(DataTypesCommandOptions).GetProperty("Enums"), "enums"); parser.OptionName.Should().Be("enums"); }
public void OptionDefaultValue_Initially_ShouldReturnNull() { var parser = new EnumListOptionParser <LogLevel>(typeof(DataTypesCommandOptions).GetProperty("Enums"), "enums"); parser.OptionDefaultValue.Should().BeNull(); }
public void IsOptionRequired_Initially_ShouldReturnFalse() { var parser = new EnumListOptionParser <LogLevel>(typeof(DataTypesCommandOptions).GetProperty("Enums"), "enums"); parser.IsOptionRequired.Should().BeFalse(); }
public void TargetProperty_ShouldReturnPropertySpecifiedViaConstructor() { var parser = new EnumListOptionParser <LogLevel>(typeof(DataTypesCommandOptions).GetProperty("Enums"), "enums"); parser.TargetProperty.Should().BeSameAs(typeof(DataTypesCommandOptions).GetProperty("Enums")); }
public void OptionType_ShouldReturnMultiValueOption() { var parser = new EnumListOptionParser <LogLevel>(typeof(DataTypesCommandOptions).GetProperty("Enums"), "enums"); parser.OptionType.Should().Be(OptionType.MultiValueOption); }