示例#1
0
        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);
        }
示例#2
0
        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);
        }
示例#3
0
        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]);
        }
示例#4
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());
        }