public SuggestionsBuilder Suggest(string text, IMessage tooltip) { if (text.Equals(Remaining)) { return(this); } _result.Add(new Suggestion(StringRange.Between(Start, Input.Length), text, tooltip)); return(this); }
public void suggest_multiple() { var result = _builder.Suggest("world!").Suggest("everybody").Suggest("weekend").Build(); result.List.Should().BeEquivalentTo(new List <Suggestion.Suggestion> { new Suggestion.Suggestion(StringRange.Between(6, 7), "everybody"), new Suggestion.Suggestion(StringRange.Between(6, 7), "weekend"), new Suggestion.Suggestion(StringRange.Between(6, 7), "world!") }); result.Range.Should().BeEquivalentTo(StringRange.Between(6, 7)); result.IsEmpty().Should().Be(false); }
public async Task getCompletionSuggestions_rootCommands_partial_withInputOffset() { _subject.Register(r => r.Literal("foo")); _subject.Register(r => r.Literal("bar")); _subject.Register(r => r.Literal("baz")); var result = await _subject.GetCompletionSuggestions(_subject.Parse(InputWithOffset("Zb", 1), _source)); result.Range.Should().BeEquivalentTo(StringRange.Between(1, 2)); result.List.Should().BeEquivalentTo(new List <Suggestion.Suggestion> { new Suggestion.Suggestion(StringRange.Between(1, 2), "bar"), new Suggestion.Suggestion(StringRange.Between(1, 2), "baz") }); }
public override void Parse(StringReader reader, CommandContextBuilder <TSource> contextBuilder) { var start = reader.Cursor; var end = Parse(reader); if (end > -1) { contextBuilder.WithNode(this, StringRange.Between(start, end)); return; } throw CommandSyntaxException.BuiltInExceptions.LiteralIncorrect().CreateWithContext(reader, Literal); }
public async Task getCompletionSuggestions_redirectPartial_withInputOffset() { var actual = _subject.Register(r => r.Literal("actual").Then(r.Literal("sub"))); _subject.Register(r => r.Literal("redirect").Redirect(actual)); var parse = _subject.Parse(InputWithOffset("/redirect s", 1), _source); var result = await _subject.GetCompletionSuggestions(parse); result.Range.Should().BeEquivalentTo(StringRange.Between(10, 11)); result.List.Should().BeEquivalentTo(new List <Suggestion.Suggestion> { new Suggestion.Suggestion(StringRange.Between(10, 11), "sub") }); }
public void merge_multiple() { var a = new Suggestions(StringRange.At(5), new List <Suggestion.Suggestion> { new Suggestion.Suggestion(StringRange.At(5), "ar"), new Suggestion.Suggestion(StringRange.At(5), "az"), new Suggestion.Suggestion(StringRange.At(5), "Az") }); var b = new Suggestions(StringRange.Between(4, 5), new List <Suggestion.Suggestion> { new Suggestion.Suggestion(StringRange.Between(4, 5), "foo"), new Suggestion.Suggestion(StringRange.Between(4, 5), "qux"), new Suggestion.Suggestion(StringRange.Between(4, 5), "apple"), new Suggestion.Suggestion(StringRange.Between(4, 5), "Bar") }); var merged = Suggestions.Merge("foo b", new List <Suggestions> { a, b }); merged.List.Should().BeEquivalentTo(new List <Suggestion.Suggestion> { new Suggestion.Suggestion(StringRange.Between(4, 5), "apple"), new Suggestion.Suggestion(StringRange.Between(4, 5), "bar"), new Suggestion.Suggestion(StringRange.Between(4, 5), "Bar"), new Suggestion.Suggestion(StringRange.Between(4, 5), "baz"), new Suggestion.Suggestion(StringRange.Between(4, 5), "bAz"), new Suggestion.Suggestion(StringRange.Between(4, 5), "foo"), new Suggestion.Suggestion(StringRange.Between(4, 5), "qux") }); }
public async Task getCompletionSuggestions_SubCommands_partial_withInputOffset() { _subject.Register(r => r.Literal("parent") .Then(r.Literal("foo")) .Then(r.Literal("bar")) .Then(r.Literal("baz")) ); var parse = _subject.Parse(InputWithOffset("junk parent b", 5), _source); var result = await _subject.GetCompletionSuggestions(parse); result.Range.Should().BeEquivalentTo(StringRange.Between(12, 13)); result.List.Should().BeEquivalentTo(new List <Suggestion.Suggestion> { new Suggestion.Suggestion(StringRange.Between(12, 13), "bar"), new Suggestion.Suggestion(StringRange.Between(12, 13), "baz") }); }
public async Task getCompletionSuggestions_movingCursor_redirect() { var actualOne = _subject.Register(r => r.Literal("actual_one") .Then(r.Literal("faz")) .Then(r.Literal("fbz")) .Then(r.Literal("gaz")) ); _subject.Register(r => r.Literal("actual_two")); _subject.Register(r => r.Literal("redirect_one").Redirect(actualOne)); _subject.Register(r => r.Literal("redirect_two").Redirect(actualOne)); await TestSuggestions("redirect_one faz ", 0, StringRange.At(0), "actual_one", "actual_two", "redirect_one", "redirect_two"); await TestSuggestions("redirect_one faz ", 9, StringRange.Between(0, 9), "redirect_one", "redirect_two"); await TestSuggestions("redirect_one faz ", 10, StringRange.Between(0, 10), "redirect_one"); await TestSuggestions("redirect_one faz ", 12, StringRange.At(0)); await TestSuggestions("redirect_one faz ", 13, StringRange.At(13), "faz", "fbz", "gaz"); await TestSuggestions("redirect_one faz ", 14, StringRange.Between(13, 14), "faz", "fbz"); await TestSuggestions("redirect_one faz ", 15, StringRange.Between(13, 15), "faz"); await TestSuggestions("redirect_one faz ", 16, StringRange.At(0)); await TestSuggestions("redirect_one faz ", 17, StringRange.At(0)); }
public async Task getCompletionSuggestions_movingCursor_SubCommands() { _subject.Register(r => r.Literal("parent_one") .Then(r.Literal("faz")) .Then(r.Literal("fbz")) .Then(r.Literal("gaz")) ); _subject.Register(r => r.Literal("parent_two") ); await TestSuggestions("parent_one faz ", 0, StringRange.At(0), "parent_one", "parent_two"); await TestSuggestions("parent_one faz ", 1, StringRange.Between(0, 1), "parent_one", "parent_two"); await TestSuggestions("parent_one faz ", 7, StringRange.Between(0, 7), "parent_one", "parent_two"); await TestSuggestions("parent_one faz ", 8, StringRange.Between(0, 8), "parent_one"); await TestSuggestions("parent_one faz ", 10, StringRange.At(0)); await TestSuggestions("parent_one faz ", 11, StringRange.At(11), "faz", "fbz", "gaz"); await TestSuggestions("parent_one faz ", 12, StringRange.Between(11, 12), "faz", "fbz"); await TestSuggestions("parent_one faz ", 13, StringRange.Between(11, 13), "faz"); await TestSuggestions("parent_one faz ", 14, StringRange.At(0)); await TestSuggestions("parent_one faz ", 15, StringRange.At(0)); }
public void apply_replacement_everything() { var suggestion = new Suggestion.Suggestion(StringRange.Between(0, 12), "Oh dear."); suggestion.Apply("Hello world!").Should().BeEquivalentTo("Oh dear."); }
public void apply_replacement_start() { var suggestion = new Suggestion.Suggestion(StringRange.Between(0, 5), "Goodbye"); suggestion.Apply("Hello world!").Should().BeEquivalentTo("Goodbye world!"); }
public void TestEquals() { var otherSource = new object(); var command = Substitute.For <Command <object> >(); var otherCommand = Substitute.For <Command <object> >(); var rootNode = Substitute.For <CommandNode <object> >(null, null, null, null, false); var otherRootNode = Substitute.For <CommandNode <object> >(null, null, null, null, false); var node = Substitute.For <CommandNode <object> >(null, null, null, null, false); var otherNode = Substitute.For <CommandNode <object> >(null, null, null, null, false); new EqualsTester() .AddEqualityGroup(new CommandContextBuilder <object>(_dispatcher, _source, rootNode, 0).Build(""), new CommandContextBuilder <object>(_dispatcher, _source, rootNode, 0).Build("")) .AddEqualityGroup(new CommandContextBuilder <object>(_dispatcher, _source, otherRootNode, 0).Build(""), new CommandContextBuilder <object>(_dispatcher, _source, otherRootNode, 0).Build("")) .AddEqualityGroup(new CommandContextBuilder <object>(_dispatcher, otherSource, rootNode, 0).Build(""), new CommandContextBuilder <object>(_dispatcher, otherSource, rootNode, 0).Build("")) .AddEqualityGroup(new CommandContextBuilder <object>(_dispatcher, _source, rootNode, 0).WithCommand(command).Build(""), new CommandContextBuilder <object>(_dispatcher, _source, rootNode, 0).WithCommand(command).Build("")) .AddEqualityGroup(new CommandContextBuilder <object>(_dispatcher, _source, rootNode, 0).WithCommand(otherCommand).Build(""), new CommandContextBuilder <object>(_dispatcher, _source, rootNode, 0).WithCommand(otherCommand).Build("")) .AddEqualityGroup(new CommandContextBuilder <object>(_dispatcher, _source, rootNode, 0).WithArgument("foo", new ParsedArgument <object, int>(0, 1, 123)).Build("123"), new CommandContextBuilder <object>(_dispatcher, _source, rootNode, 0).WithArgument("foo", new ParsedArgument <object, int>(0, 1, 123)).Build("123")) .AddEqualityGroup(new CommandContextBuilder <object>(_dispatcher, _source, rootNode, 0).WithNode(node, StringRange.Between(0, 3)).WithNode(otherNode, StringRange.Between(4, 6)).Build("123 456"), new CommandContextBuilder <object>(_dispatcher, _source, rootNode, 0).WithNode(node, StringRange.Between(0, 3)).WithNode(otherNode, StringRange.Between(4, 6)).Build("123 456")) .AddEqualityGroup(new CommandContextBuilder <object>(_dispatcher, _source, rootNode, 0).WithNode(otherNode, StringRange.Between(0, 3)).WithNode(node, StringRange.Between(4, 6)).Build("123 456"), new CommandContextBuilder <object>(_dispatcher, _source, rootNode, 0).WithNode(otherNode, StringRange.Between(0, 3)).WithNode(node, StringRange.Between(4, 6)).Build("123 456")) .TestEquals(); }
public void apply_replacement_middle() { var suggestion = new Suggestion.Suggestion(StringRange.Between(6, 11), "Alex"); suggestion.Apply("Hello world!").Should().BeEquivalentTo("Hello Alex!"); }
public void expand_replacement() { var suggestion = new Suggestion.Suggestion(StringRange.Between(6, 11), "strangers"); suggestion.Expand("Hello world!", StringRange.Between(0, 12)).Should().BeEquivalentTo(new Suggestion.Suggestion(StringRange.Between(0, 12), "Hello strangers!")); }
public void expand_both() { var suggestion = new Suggestion.Suggestion(StringRange.At(11), "minecraft:"); suggestion.Expand("give Steve fish_block", StringRange.Between(5, 21)).Should().BeEquivalentTo(new Suggestion.Suggestion(StringRange.Between(5, 21), "Steve minecraft:fish_block")); }
public void expand_right() { var suggestion = new Suggestion.Suggestion(StringRange.At(0), "minecraft:"); suggestion.Expand("fish", StringRange.Between(0, 4)).Should().BeEquivalentTo(new Suggestion.Suggestion(StringRange.Between(0, 4), "minecraft:fish")); }
public void apply_replacement_end() { var suggestion = new Suggestion.Suggestion(StringRange.Between(6, 12), "Creeper!"); suggestion.Apply("Hello world!").Should().BeEquivalentTo("Hello Creeper!"); }
public SuggestionsBuilder Suggest(int value, IMessage tooltip) { _result.Add(new IntegerSuggestion(StringRange.Between(Start, Input.Length), value, tooltip)); return(this); }
public void expand_left() { var suggestion = new Suggestion.Suggestion(StringRange.At(1), "oo"); suggestion.Expand("f", StringRange.Between(0, 1)).Should().BeEquivalentTo(new Suggestion.Suggestion(StringRange.Between(0, 1), "foo")); }