public void AddingTwoOptionValuesWithTheSameNameShouldThrow() { var builder = new CmdLineInputDefinitionBuilder(); var optionDefinitionBuilder = builder.Option("option"); optionDefinitionBuilder.Value("value"); Should.Throw<InvalidOperationException>(() => optionDefinitionBuilder.Value("value")); }
public void AddingTwoOptionsWithSameNameShouldThrow() { var builder = new CmdLineInputDefinitionBuilder(); builder.Option("foo"); Should.Throw<InvalidOperationException>(() => builder.Option("Foo")); }
public void ShouldParseMissingOptionalArg() { var builder = new CmdLineInputDefinitionBuilder(); builder.Arg("name").IsOptional(); var settings = new CmdLineSettings(); var parser = new CmdLineParser(builder.Definition, settings); parser.Parse(new string[0]); }
public void AddingOptionValueWithNameEqualToNullOrWhiteSpaceShouldThrow() { var builder = new CmdLineInputDefinitionBuilder(); var optionDefinitionBuilder = builder.Option("option"); Should.Throw<ArgumentException>(() => optionDefinitionBuilder.Value(null)); Should.Throw<ArgumentException>(() => optionDefinitionBuilder.Value(string.Empty)); Should.Throw<ArgumentException>(() => optionDefinitionBuilder.Value(" ")); }
public void ShouldParseMultipleUndefinedOptionIfAllowed() { var builder = new CmdLineInputDefinitionBuilder(); var settings = new CmdLineSettings { UndefinedOptionsPolicy = UndefinedOptionsPolicy.AllowMultipleInstances }; var parser = new CmdLineParser(builder.Definition, settings); var input = parser.Parse("-name:value1.1;value1.2", "-name:value2.1;value2.2"); input.UndefinedOptions.GetAll("name").ShouldBe(new[] { new[] { "value1.1", "value1.2" }, new[] { "value2.1", "value2.2" } }); }
public void ShouldParseArg() { var builder = new CmdLineInputDefinitionBuilder(); builder.Arg("name"); var settings = new CmdLineSettings(); var parser = new CmdLineParser(builder.Definition, settings); var input = parser.Parse(new[] { "value" }); input.Args.GetSingle("name").ShouldBe("value"); }
public void ShouldParseFlagOption() { var builder = new CmdLineInputDefinitionBuilder(); builder.Option("name"); var settings = new CmdLineSettings(); var parser = new CmdLineParser(builder.Definition, settings); var input = parser.Parse(new[] { "-name" }); input.Options.Contains("name").ShouldBe(true); }
public void ShouldParseOptionsWithSeparatedFormat() { var builder = new CmdLineInputDefinitionBuilder(); builder.Option("name").Value("value"); var settings = new CmdLineSettings { OptionValueFormat = OptionValueFormat.Separated }; var parser = new CmdLineParser(builder.Definition, settings); var input = parser.Parse("-name", "foo"); input.Options.GetSingle("name").GetSingle("value").ShouldBe("foo"); }
public void ArgsShouldBeAccessibleInTheSameOrderTheyWereAdded() { var builder = new CmdLineInputDefinitionBuilder(); builder.Arg("foo"); builder.Arg("bar"); builder.Definition.Args.First().Name.ShouldBe("foo"); builder.Definition.Args.Skip(1).First().Name.ShouldBe("bar"); }
public void ShouldParseOptionWithParamsValue() { var builder = new CmdLineInputDefinitionBuilder(); builder.Option("name") .Value("value", x => x.IsParams()); var settings = new CmdLineSettings(); var parser = new CmdLineParser(builder.Definition, settings); var input = parser.Parse("-name:foo;bar"); input.Options.GetSingle("name").GetAll("value").ShouldBe(new[] { "foo", "bar" }); }
public void ShouldParseMultipleInstancesOfAllowMultipleOption() { var builder = new CmdLineInputDefinitionBuilder(); builder.Option("name") .AllowMultiple() .Value("value"); var settings = new CmdLineSettings(); var parser = new CmdLineParser(builder.Definition, settings); var input = parser.Parse("-name:foo", "-name:bar"); var options = input.Options.GetAll("name"); options.Length.ShouldBe(2); options[0].GetSingle("value").ShouldBe("foo"); options[1].GetSingle("value").ShouldBe("bar"); }
public void ConfiguredArgShouldHaveCorrectConfiguration() { var builder = new CmdLineInputDefinitionBuilder(); builder.Arg("foo") .IsOptional() .IsParams() .Description("description") .DisplayName("displayName"); var definition = builder.Definition.Args.First(); definition.Name.ShouldBe("foo"); definition.IsOptional.ShouldBe(true); definition.IsParams.ShouldBe(true); definition.DisplayName.ShouldBe("displayName"); var writer = new TestWriter(); definition.DescriptionWriter(definition, writer, 0); writer.ToString().ShouldBe("description" + Environment.NewLine); }
public void OptionRetievalShouldBeCaseInsensitive() { var builder = new CmdLineInputDefinitionBuilder(); builder.Option("foo"); CmdLineOptionDefinition optionDefinition; builder.TryGetOption("foo", out optionDefinition).ShouldBe(true); optionDefinition.Name.ShouldBe("foo"); builder.TryGetOption("Foo", out optionDefinition).ShouldBe(true); optionDefinition.Name.ShouldBe("foo"); }
public void ArgThatIsParamsShouldBeTheLastArg() { var builder = new CmdLineInputDefinitionBuilder(); builder.Arg("foo").IsParams(); Should.Throw<InvalidOperationException>(() => builder.Arg("bar")); }
public void OptionValueThatIsParamsShouldBeTheLastArg() { var builder = new CmdLineInputDefinitionBuilder(); var optionDefinitionBuilder = builder.Option("option"); optionDefinitionBuilder.Value("value1", x => x.IsParams()); Should.Throw<InvalidOperationException>(() => optionDefinitionBuilder.Value("value2")); }
public void OptionValuesShouldBeAccessibleInTheSameOrderTheyWereAdded() { var builder = new CmdLineInputDefinitionBuilder(); builder.Option("option") .Value("value1") .Value("value2"); builder.Definition.Options.First().Values.Select(x => x.Name).ShouldBe(new[] { "value1", "value2" }); }
public void UnconfiguredArgShouldHaveCorrectDefaultConfiguration() { var builder = new CmdLineInputDefinitionBuilder(); builder.Arg("foo"); var definition = builder.Definition.Args.First(); definition.Name.ShouldBe("foo"); definition.IsOptional.ShouldBe(false); definition.IsParams.ShouldBe(false); definition.DescriptionWriter.ShouldBe(null); definition.DisplayName.ShouldBe(null); }
public void ShouldBeAbleToEnumerateAddedOptions() { var builder = new CmdLineInputDefinitionBuilder(); builder.Option("foo"); builder.Option("bar"); builder.Definition.Options.Select(x => x.Name).ShouldBe(new[] { "foo", "bar" }); }
public void ShouldThrowIfRequiredOptionValueIsntProvided() { var builder = new CmdLineInputDefinitionBuilder(); builder.Option("name").IsRequired().Value("value"); var settings = new CmdLineSettings(); var parser = new CmdLineParser(builder.Definition, settings); Should.Throw<ParserException>(() => parser.Parse("-name")); }
public void ShouldThrowIfUndefinedOptionIsProvidedButNotAllowed() { var builder = new CmdLineInputDefinitionBuilder(); var settings = new CmdLineSettings(); var parser = new CmdLineParser(builder.Definition, settings); Should.Throw<ParserException>(() => parser.Parse("-foobar")).Message.ShouldBe("Unknown option 'foobar'."); }
public void ShouldThrowIfMultipleUndefinedOptionsAreProvidedButNotAllowed() { var builder = new CmdLineInputDefinitionBuilder(); var settings = new CmdLineSettings { UndefinedOptionsPolicy = UndefinedOptionsPolicy.AllowSingleInstance }; var parser = new CmdLineParser(builder.Definition, settings); Should.Throw<ParserException>(() => parser.Parse("-name", "-name")).Message.ShouldBe("Option 'name' is provided more than once."); var input = parser.Parse("-name:value1;value2"); input.UndefinedOptions.GetSingle("name").ShouldBe(new[] { "value1", "value2" }); }
public void ShouldThrowIfRequiredArgIsntProvided() { var builder = new CmdLineInputDefinitionBuilder(); builder.Arg("name"); var settings = new CmdLineSettings(); var parser = new CmdLineParser(builder.Definition, settings); Should.Throw<Exception>(() => parser.Parse(new string[0])); }
public void ShouldThrowIfFlagOptionHasValue() { var builder = new CmdLineInputDefinitionBuilder(); builder.Option("name"); var settings = new CmdLineSettings(); var parser = new CmdLineParser(builder.Definition, settings); Should.Throw<ParserException>(() => parser.Parse(new[] { "-name:value" })); }
public void UnconfiguredOptionShouldHaveCorrectDefaultConfiguration() { var builder = new CmdLineInputDefinitionBuilder(); builder.Option("foo"); CmdLineOptionDefinition definition; builder.TryGetOption("foo", out definition); definition.Name.ShouldBe("foo"); definition.AllowMultiple.ShouldBe(false); definition.IsRequired.ShouldBe(false); definition.DescriptionWriter.ShouldBe(null); definition.Shortcut.ShouldBe(null); definition.Values.ShouldBeEmpty(); }
public void ConfiguredOptionValueShouldHaveCorrectConfiguration() { var builder = new CmdLineInputDefinitionBuilder(); builder.Option("option") .Value("value", x => x.IsOptional().IsParams().Description("description").DisplayName("displayName")); CmdLineOptionDefinition optionDefinition; builder.TryGetOption("option", out optionDefinition); var definition = optionDefinition.Values.First(); definition.Name.ShouldBe("value"); definition.IsOptional.ShouldBe(true); definition.IsParams.ShouldBe(true); definition.DisplayName.ShouldBe("displayName"); var writer = new TestWriter(); definition.DescriptionWriter(definition, writer, 0); writer.ToString().ShouldBe("description" + Environment.NewLine); }
public void ShouldParseParamsArg() { var builder = new CmdLineInputDefinitionBuilder(); builder.Arg("name").IsParams(); var settings = new CmdLineSettings(); var parser = new CmdLineParser(builder.Definition, settings); var input = parser.Parse(new[] { "value1", "value2" }); input.Args.GetAll("name").ShouldBe(new[] { "value1", "value2" }); }
public void UnconfiguredOptionValueShouldHaveCorrectDefaultConfiguration() { var builder = new CmdLineInputDefinitionBuilder(); builder.Option("foo") .Value("bar"); CmdLineOptionDefinition optionDefinition; builder.TryGetOption("foo", out optionDefinition); var valueDefinition = optionDefinition.Values.First(); valueDefinition.Name.ShouldBe("bar"); valueDefinition.IsOptional.ShouldBe(false); valueDefinition.IsParams.ShouldBe(false); valueDefinition.DescriptionWriter.ShouldBe(null); valueDefinition.DisplayName.ShouldBe(null); }
public void ShouldParseUndefinedOptionIfAllowed() { var builder = new CmdLineInputDefinitionBuilder(); var settings = new CmdLineSettings { UndefinedOptionsPolicy = UndefinedOptionsPolicy.AllowSingleInstance }; var parser = new CmdLineParser(builder.Definition, settings); var input = parser.Parse("-name:value1;value2"); input.UndefinedOptions.GetSingle("name").ShouldBe(new[] { "value1", "value2" }); }
public void ConfiguredOptionShouldHaveCorrectConfiguration() { var builder = new CmdLineInputDefinitionBuilder(); builder.Option("noValueOption") .AllowMultiple() .IsRequired() .Description("description") .ShortCut("nvo"); CmdLineOptionDefinition definition; builder.TryGetOption("noValueOption", out definition); definition.Name.ShouldBe("noValueOption"); definition.AllowMultiple.ShouldBe(true); definition.IsRequired.ShouldBe(true); definition.Shortcut.ShouldBe("nvo"); var writer = new TestWriter(); definition.DescriptionWriter(definition, writer, 0); writer.ToString().ShouldBe("description" + Environment.NewLine); }