public async Task ErrorIfAllMatchesFailToParse() { // set true for fail parsing. var parser = new TestArgumentParser(true); var context = new CommandContext(); var match1Mock = new Mock <ICommandMatch>(); var match2Mock = new Mock <ICommandMatch>(); match1Mock.SetupGet(a => a.Command).Returns(new Mock <ICommand>().Object); match2Mock.SetupGet(a => a.Command).Returns(new Mock <ICommand>().Object); var match1 = match1Mock.Object; var match2 = match2Mock.Object; var matches = new List <ICommandMatch>() { match1, match2, }; context.Features.Set <ICommandMatchesFeature>(new CommandMatchesFeature { CommandMatches = matches, }); await ExecuteMiddlewareAsync(context, parser); Assert.NotNull(context.Result); Assert.False(context.Result.Success); Assert.IsType <MatchesFailedResult>(context.Result); Assert.NotEmpty((context.Result as MatchesFailedResult).FailedCommands); }
public async Task ThrowsIfCommandNotSettedAndDontHasMatchesFeature() { var parser = new TestArgumentParser(); var context = new CommandContext(); await Assert.ThrowsAsync <InvalidOperationException>(async() => { await ExecuteMiddlewareAsync(context, parser); }); }
public async Task DoAnythingIfResultSetted() { var parser = new TestArgumentParser(); var context = new CommandContext(); var result = new SuccessResult(); context.Result = result; await ExecuteMiddlewareAsync(context, parser); Assert.NotNull(context.Result); Assert.Equal(result, context.Result); }
public async Task ChooseAllMatchesParseSuccess() { var cmdName1 = "command1"; var cmdName2 = "command2"; // set true for fail parsing. var parser = new TestArgumentParser(true, cmdName2); var config = new MariCommandsOptions(); var context = new CommandContext(); config.ContinueMultiMatchAfterParser = true; var match1Mock = new Mock <ICommandMatch>(); var match2Mock = new Mock <ICommandMatch>(); match1Mock.SetupGet(a => a.Command.Name).Returns(cmdName1); match1Mock.SetupGet(a => a.Command.Parameters).Returns(new List <IParameter>()); match2Mock.SetupGet(a => a.Command.Name).Returns(cmdName2); match2Mock.SetupGet(a => a.Command.Parameters).Returns(new List <IParameter>()); var match1 = match1Mock.Object; var match2 = match2Mock.Object; var matches = new List <ICommandMatch>() { match1, match2, }; context.Features.Set <ICommandMatchesFeature>(new CommandMatchesFeature { CommandMatches = matches, }); await ExecuteMiddlewareAsync(context, parser, config => { config.ContinueMultiMatchAfterParser = true; }); var matchesFeature = context.Features.Get <ICommandMatchesFeature>(); var argumentParserFeature = context.Features.Get <IArgumentParserFeature>(); Assert.Null(context.Result); Assert.NotNull(matchesFeature); Assert.NotEmpty(matchesFeature.CommandMatches); Assert.NotNull(argumentParserFeature); Assert.NotEmpty(argumentParserFeature.CommandArgs); }
public async Task ChooseOneWhenContinueMultiMatchAfterParserIsDisabled() { var parser = new TestArgumentParser(); var config = new MariCommandsOptions(); var context = new CommandContext(); config.ContinueMultiMatchAfterParser = false; const string aliasName = "testAlias"; var match1Mock = new Mock <ICommandMatch>(); var match2Mock = new Mock <ICommandMatch>(); match1Mock.SetupGet(a => a.Command.Parameters).Returns(new List <IParameter>()); match1Mock.SetupGet(a => a.Command.Priority).Returns(3); match1Mock.SetupGet(a => a.Alias).Returns(aliasName); match2Mock.SetupGet(a => a.Command.Parameters).Returns(new List <IParameter>()); match2Mock.SetupGet(a => a.Command.Priority).Returns(2); match2Mock.SetupGet(a => a.Alias).Returns(aliasName); var match1 = match1Mock.Object; var match2 = match2Mock.Object; var matches = new List <ICommandMatch>() { match1, match2, }; context.Features.Set <ICommandMatchesFeature>(new CommandMatchesFeature { CommandMatches = matches, }); await ExecuteMiddlewareAsync(context, parser, config => { config.ContinueMultiMatchAfterParser = false; }); Assert.Null(context.Result); Assert.NotNull(context.Command); Assert.Equal(match1.Command, context.Command); Assert.False(string.IsNullOrWhiteSpace(context.Alias)); Assert.Equal(aliasName, context.Alias); Assert.NotNull(context.Args); }
public async Task DoAnyThingIfArgsAndCommandIsSetted() { var parser = new TestArgumentParser(); var context = new CommandContext(); var args = new object[0]; var command = new Mock <ICommand>().Object; context.Command = command; context.Args = args; await ExecuteMiddlewareAsync(context, parser); Assert.NotNull(context.Args); Assert.Equal(args, context.Args); Assert.NotNull(context.Command); Assert.Equal(command, context.Command); }
public async Task AlsoCanParseSettedCommandWithRawArgs() { var parser = new TestArgumentParser(); var context = new CommandContext(); var commandMock = new Mock <ICommand>(); commandMock.SetupGet(a => a.Parameters).Returns(new List <IParameter>()); var command = commandMock.Object; context.Command = command; context.RawArgs = string.Empty; await ExecuteMiddlewareAsync(context, parser); Assert.Null(context.Result); Assert.NotNull(context.Command); Assert.Equal(command, context.Command); Assert.NotNull(context.RawArgs); Assert.Equal(string.Empty, context.RawArgs); Assert.NotNull(context.Args); }