コード例 #1
0
        /**
         * Utility method for registering new commands.
         *
         * <p>This is a shortcut for calling {@link RootCommandNode#addChild(CommandNode)} after building the provided {@code command}.</p>
         *
         * <p>As {@link RootCommandNode} can only hold literals, this method will only allow literal arguments.</p>
         *
         * @param command a literal argument builder to add to this command tree
         * @return the node added to this tree
         */
        public LiteralCommandNode <TSource> Register(LiteralArgumentBuilder <TSource> command)
        {
            var build = command.Build();

            _root.AddChild(build);
            return(build);
        }
コード例 #2
0
        public void TestAddChildOverwritesCommand()
        {
            var node = GetCommandNode();

            node.AddChild(LiteralArgumentBuilder <object> .LiteralArgument("child").Build());
            node.AddChild(LiteralArgumentBuilder <object> .LiteralArgument("child").Executes(_command).Build());

            node.Children.First().Command.Should().Be(_command);
        }
コード例 #3
0
        public void TestFindNodeExists()
        {
            var bar = LiteralArgumentBuilder <object> .LiteralArgument("bar").Build();

            _subject.Register(r => r.Literal("foo").Then(bar));

            _subject.FindNode(new List <string> {
                "foo", "bar"
            }).Should().Be(bar);
        }
コード例 #4
0
        public void TestGetPath()
        {
            var bar = LiteralArgumentBuilder <object> .LiteralArgument("bar").Build();

            _subject.Register(r => r.Literal("foo").Then(bar));

            _subject.GetPath(bar).Should().BeEquivalentTo(new List <string> {
                "foo", "bar"
            });
        }
コード例 #5
0
        public void TestAddChild()
        {
            var node = GetCommandNode();



            node.AddChild(LiteralArgumentBuilder <object> .LiteralArgument("child1").Build());
            node.AddChild(LiteralArgumentBuilder <object> .LiteralArgument("child2").Build());
            node.AddChild(LiteralArgumentBuilder <object> .LiteralArgument("child1").Build());

            node.Children.Should().HaveCount(2);
        }
コード例 #6
0
        public override IArgumentBuilder <TSource, CommandNode <TSource> > CreateBuilder()
        {
            var builder = LiteralArgumentBuilder <TSource> .LiteralArgument(Literal);

            builder.Requires(Requirement);
            builder.Forward(Redirect, RedirectModifier, IsFork);
            if (Command != null)
            {
                builder.Executes(Command);
            }

            return(builder);
        }
コード例 #7
0
        public void TestAddChildMergesGrandchildren()
        {
            var node = GetCommandNode();

            node.AddChild(LiteralArgumentBuilder <object> .LiteralArgument("child")
                          .Then(r => r.Literal("grandchild1"))
                          .Build());

            node.AddChild(LiteralArgumentBuilder <object> .LiteralArgument("child")
                          .Then(r => r.Literal("grandchild2"))
                          .Build());

            node.Children.Should().HaveCount(1);
            node.Children.First().Children.Should().HaveCount(2);
        }
コード例 #8
0
 public void TestEquals()
 {
     new EqualsTester()
     .AddEqualityGroup(
         new RootCommandNode <object>(),
         new RootCommandNode <object>()
         )
     .AddEqualityGroup(
         new RootCommandNode <object> {
         LiteralArgumentBuilder <object> .LiteralArgument("foo").Build(),
     },
         new RootCommandNode <object> {
         LiteralArgumentBuilder <object> .LiteralArgument("foo").Build()
     }
         )
     .TestEquals();
 }
コード例 #9
0
        public void TestEquals()
        {
            var command = Substitute.For <Command <object> >();

            new EqualsTester()
            .AddEqualityGroup(
                LiteralArgumentBuilder <object> .LiteralArgument("foo").Build(),
                LiteralArgumentBuilder <object> .LiteralArgument("foo").Build()
                )
            .AddEqualityGroup(
                LiteralArgumentBuilder <object> .LiteralArgument("bar").Executes(command).Build(),
                LiteralArgumentBuilder <object> .LiteralArgument("bar").Executes(command).Build()
                )
            .AddEqualityGroup(
                LiteralArgumentBuilder <object> .LiteralArgument("bar").Build(),
                LiteralArgumentBuilder <object> .LiteralArgument("bar").Build()
                )
            .AddEqualityGroup(
                LiteralArgumentBuilder <object> .LiteralArgument("foo").Then(LiteralArgumentBuilder <object> .LiteralArgument("bar")).Build(),
                LiteralArgumentBuilder <object> .LiteralArgument("foo").Then(LiteralArgumentBuilder <object> .LiteralArgument("bar")).Build()
                )
            .TestEquals();
        }
コード例 #10
0
ファイル: CommandManager.cs プロジェクト: ramidzkh/Essentials
 public static LiteralArgumentBuilder <Source> RequiresPlayer(this LiteralArgumentBuilder <Source> builder)
 {
     return(builder.Requires(source => source.Player != null));
 }
コード例 #11
0
ファイル: CommandManager.cs プロジェクト: ramidzkh/Essentials
 public static LiteralArgumentBuilder <Source> Literal(string literal)
 {
     return(LiteralArgumentBuilder <Source> .Literal(literal));
 }
コード例 #12
0
        public LiteralCommandNodeTest()
        {
            _node = LiteralArgumentBuilder <object> .LiteralArgument("foo").Build();

            _contextBuilder = new CommandContextBuilder <object>(new CommandDispatcher <object>(), new object(), new RootCommandNode <object>(), 0);
        }
コード例 #13
0
 public LiteralArgumentBuilderTest()
 {
     _builder = new LiteralArgumentBuilder <object>("foo");
 }