public void TestOptionWithQuotedStringNotFullMatch(string input) { ICommandArgumentToken <string> .ValueParser trivialStringParser = (string i, out string v) => { v = i; return(true); }; ArgumentToken arg1 = new ArgumentToken <string> .Builder().Name("arg1").Parser(trivialStringParser).Build(); ArgumentToken arg2 = new ArgumentToken <string> .Builder().Name("arg2").Parser(trivialStringParser).Build(); ArgumentToken arg3 = new ArgumentToken <string> .Builder().Name("arg3").Parser(trivialStringParser).Build(); var token = new OptionWithArgumentToken.Builder() .Name("option", "alt1", "alt2") .WithArgument(arg1) .WithArgument(arg2) .WithArgument(arg3) .Build(); ICommandUsage usage = new CommandUsage.Builder().WithToken(token).Build(); TokenMatchCollection matchCollection = CommandParser.Match(usage.Tokens, input); Assert.True(matchCollection.Matches.Count() == 1); ParserTokenMatch match = matchCollection.Matches.First(); Assert.False(match.IsFullMatch, input); }
[InlineData(new [] { "a" }, 0, MatchOutcome.Partial, 0)] //not enough public void TestOptionWithArgumentsMatches(string[] input, int startIdx, MatchOutcome expMatchLength, int expNumMatchTokens) { ArgumentToken arg1 = new ArgumentToken <int> .Builder().Name("arg1").Parser(int.TryParse).Build(); var token = new OptionWithArgumentToken.Builder() .Name("option", "alt1", "alt2") .WithArgument(arg1) .Build(); TokenMatchResult matchResult = token.Matches(input, startIdx); Assert.True(expMatchLength == matchResult.MatchOutcome, $"Failed in case \"{input}\""); Assert.Equal(expNumMatchTokens, matchResult.TokensMatched); }
public void TestOptionWithArgumentsTokenConstruction() { ArgumentToken arg1 = new ArgumentToken <int> .Builder().Name("arg1").Parser(int.TryParse).Build(); Name name = new Name("option", "alt1", "alt2"); var token = new OptionWithArgumentToken.Builder() .Name("option", "alt1", "alt2") .WithArgument(arg1) .Build(); Assert.Equal(name, token.Name); Assert.Equal("(option|alt1|alt2) <arg1>", token.DisplayName); Assert.True(token.IsOptional); Assert.Equal(TokenKind.OptionWithArgument, token.Kind); Assert.Equal(1, token.Arguments.Length); Assert.Same(arg1, token.Arguments[0]); }