public void OptionKeysMustMatchExactly() { Command command = new(); CommandLineArguments args = CreateArgs("option0", "F0"); Assert.Throws <CommandOptionNotFoundException>(() => CommandOptionsBinder.BindOptions(command, args)); }
public void OptionKeysMustBeLowercase() { Command command = new(); CommandLineArguments args = CreateArgs("Option", "240"); Assert.Throws <CommandOptionNotFoundException>(() => CommandOptionsBinder.BindOptions(command, args)); }
public void StringPropertiesAreBoundAgainstOptionsWithValues() { TextCommand command = new(); CommandLineArguments args = CreateArgs("text", null); Assert.Throws <InvalidCommandSwitchException>(() => CommandOptionsBinder.BindOptions(command, args)); }
public void BooleanPropertiesAreBoundAgainstOptionsWithoutValues() { LogicalCommand command = new(); CommandLineArguments args = CreateArgs("switch", "bool"); Assert.Throws <UnsupportedCommandOptionTypeException>(() => CommandOptionsBinder.BindOptions(command, args)); }
public void NullCheck() { NullCommand command = new(); CommandLineArguments args = CreateArgs(); Assert.Throws <ArgumentNullException>("command", () => CommandOptionsBinder.BindOptions(null, args)); Assert.Throws <ArgumentNullException>("args", () => CommandOptionsBinder.BindOptions(command, null)); }
public void OptionsWithValuesMayBeBoundToStringPropertiesWherePropertyNameMatchesOptionKey() { TextCommand command = new(); CommandLineArguments args = CreateArgs("text", "string"); Assert.Null(command.Text); CommandOptionsBinder.BindOptions(command, args); Assert.Equal("string", command.Text); }
public void OptionsWithoutValuesAreBoundToBooleanPropertiesWherePropertyNameMatchesOptionKey() { LogicalCommand command = new(); CommandLineArguments args = CreateArgs("switch", null); Assert.False(command.Switch); CommandOptionsBinder.BindOptions(command, args); Assert.True(command.Switch); }
public void OptionsAreOptional() { TestCommand command = new(); CommandLineArguments args = CreateArgs(); bool option1 = command.Option1; string option2 = command.Option2; CommandOptionsBinder.BindOptions(command, args); Assert.Equal(option1, command.Option1); Assert.Same(option2, command.Option2); }
private static async Task <CommandResult> RunCommandPipelineAsync(ReadOnlyCollection <string> commandLineArguments, Assembly commandAssembly, IServiceProvider provider, CancellationToken stoppingToken) { CommandLineArguments args = CommandLineArgumentsParser.Parse(commandLineArguments); Type type = CommandSelector.SelectCommand(commandAssembly, args); using CommandBase instance = CommandActivator.ConstructCommand(provider, type); CommandArgumentsBinder.BindArguments(instance, args); CommandOptionsBinder.BindOptions(instance, args); CommandResult result = await CommandExecutor.InvokeAsync(instance, stoppingToken); return(result); }