public void PropertyMustHaveCompatibleTypeToBeBoundAgainst() { InvalidCommand command = new(); CommandLineArguments args = CreateArgs("F0"); Assert.Throws <UnsupportedCommandArgumentsTypeException>(() => CommandArgumentsBinder.BindArguments(command, args)); }
public void CommandDoesNotRequireMatchIfNoArgumentsAreProvided() { NullCommand command = new(); CommandLineArguments args = CreateArgs(); CommandArgumentsBinder.BindArguments(command, args); }
public void CommandCannotHaveMultipleConventionalMatchesForArguments() { AmbiguousCommand command = new(); CommandLineArguments args = CreateArgs("F0"); Assert.Throws <AmbiguousCommandArgumentsException>(() => CommandArgumentsBinder.BindArguments(command, args)); }
public void CommandRequiresMatchIfArgumentsAreProvided() { NullCommand command = new(); CommandLineArguments args = CreateArgs("F0"); Assert.Throws <CommandArgumentsNotFoundException>(() => CommandArgumentsBinder.BindArguments(command, args)); }
public void NullCheck() { NullCommand command = new(); CommandLineArguments args = CreateArgs(); Assert.Throws <ArgumentNullException>("command", () => CommandArgumentsBinder.BindArguments(null, args)); Assert.Throws <ArgumentNullException>("args", () => CommandArgumentsBinder.BindArguments(command, null)); }
public void ArgumentsAreBoundToConventionallyNamedPropertyOfTypeCollectionOfStrings() { Command command = new(); CommandLineArguments args = CreateArgs("2", "4", "0"); Assert.Null(command.Arguments); CommandArgumentsBinder.BindArguments(command, args); Assert.Equal(new string[] { "2", "4", "0" }, command.Arguments); }
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); }