public void TestParseWithStringArg() { VerbToken token1 = new VerbToken(new Name("verb1", "a")); ArgumentToken token2 = TokenUtils.BuildArgString("arg1"); CommandRoot command1 = new CommandRoot.Builder() .Id(0) .Description("command") .WithToken(token1) .WithUsage(new CommandUsage.Builder() .Description("usage1") .WithToken(token2) .Build()) .Build(); CommandLibrary library = new CommandLibrary(); library.AddCommand(command1); CommandUsageMatchData matchData = library.Parse("verb1 \"the entire string\""); Assert.True(matchData.IsSuccessful); Assert.True(matchData.HasToken(token1)); Assert.True(matchData.HasToken(token2)); bool hasArg1Val = matchData.TryGetArgValue(token2, out string arg1Val); Assert.True(hasArg1Val); Assert.Equal("the entire string", arg1Val); }
public void TestParse() { VerbToken token1 = new VerbToken(new Name("verb1", "a")); ArgumentToken token2 = new ArgumentToken <int> .Builder().Name("arg").Parser(int.TryParse).IsOptional(false).Build(); CommandRoot command1 = new CommandRoot.Builder() .Id(0) .Description("command") .WithToken(token1) .WithUsage(new CommandUsage.Builder() .Description("usage1") .WithToken(token2) .Build()) .Build(); CommandLibrary library = new CommandLibrary(); library.AddCommand(command1); CommandUsageMatchData matchData = library.Parse("verb1 123"); Assert.True(matchData.IsSuccessful); Assert.True(matchData.HasToken(token1)); Assert.True(matchData.HasToken(token2)); bool hasArgVal = matchData.TryGetArgValue(token2, out int argVal); Assert.True(hasArgVal); Assert.Equal(123, argVal); }
public void TestBuild() { var usage = BuildUsage(); var command = new CommandRoot.Builder().WithToken("command").Description("description").WithUsage(usage).Build(); Assert.Equal(1, command.CommonTokens.Length); Assert.True(command.CommonTokens[0].Name.Equals("command")); Assert.Equal("description", command.Description); Assert.Equal(1, command.Usages.Length); Assert.Same(usage, command.Usages[0]); }
private ICommandRoot BuildCommandRoot(params ICommandUsage[] usages) { var builder = new CommandRoot.Builder().WithToken("command") .Description("test command"); foreach (var usage in usages) { builder.WithUsage(usage); } return(builder.Build()); }