public void ComposesOptionsForNamedArguments_WithRestrictedValues() { this.AddNamedArgument( "name", "placeholder", "description", Optional <IEnumerable <string> > .CreateSet(new[] { "firstAllowed", "secondAllowed" })); Usage result = this.testee.Compose(); result.Options.Should().Be(Lines("-name <placeholder = { firstAllowed | secondAllowed }>\tdescription")); }
public void Succeeds_WhenAllowedValueForNamedArgumentWithRestrictedValues() { const string Name = "name"; const string Allowed = "allowed"; string[] allowedValues = { "okay", Allowed, "allowedToo" }; var configuration = new CommandLineConfiguration( new[] { new NamedArgument <string>(Name, x => { }) { AllowedValues = Optional <IEnumerable <string> > .CreateSet(allowedValues) } }, NoLongAliases, NoRequiredArguments, NoHelp); var testee = new CommandLineParser(configuration); var result = testee.Parse(new[] { "-" + Name, Allowed }); result.Succeeded.Should().BeTrue(); }
public void Fails_WhenNotAllowedValueForNamedArgumentWithRestrictedValues() { const string Name = "name"; string[] allowedValues = new[] { "allowed" }; const string NotAllowed = "notAllowed"; var configuration = new CommandLineConfiguration( new[] { new NamedArgument <string>(Name, x => { }) { AllowedValues = Optional <IEnumerable <string> > .CreateSet(allowedValues) } }, NoLongAliases, NoRequiredArguments, NoHelp); var testee = new CommandLineParser(configuration); var result = testee.Parse(new[] { "-" + Name, NotAllowed }); result.Should() .BeFailedParsingResult() .WithMessage(Errors.Errors.ValueNotAllowed(NotAllowed, allowedValues)); }
public INamedSyntax <T> RestrictedTo(params T[] allowedValues) { this.current.AllowedValues = Optional <IEnumerable <T> > .CreateSet(allowedValues); return(this); }