Пример #1
0
        public void OptionKeysMustMatchExactly()
        {
            Command command           = new();
            CommandLineArguments args = CreateArgs("option0", "F0");

            Assert.Throws <CommandOptionNotFoundException>(() => CommandOptionsBinder.BindOptions(command, args));
        }
Пример #2
0
        public void OptionKeysMustBeLowercase()
        {
            Command command           = new();
            CommandLineArguments args = CreateArgs("Option", "240");

            Assert.Throws <CommandOptionNotFoundException>(() => CommandOptionsBinder.BindOptions(command, args));
        }
Пример #3
0
        public void StringPropertiesAreBoundAgainstOptionsWithValues()
        {
            TextCommand          command = new();
            CommandLineArguments args    = CreateArgs("text", null);

            Assert.Throws <InvalidCommandSwitchException>(() => CommandOptionsBinder.BindOptions(command, args));
        }
Пример #4
0
        public void BooleanPropertiesAreBoundAgainstOptionsWithoutValues()
        {
            LogicalCommand       command = new();
            CommandLineArguments args    = CreateArgs("switch", "bool");

            Assert.Throws <UnsupportedCommandOptionTypeException>(() => CommandOptionsBinder.BindOptions(command, args));
        }
Пример #5
0
        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));
        }
Пример #6
0
        public void OptionsWithValuesMayBeBoundToStringPropertiesWherePropertyNameMatchesOptionKey()
        {
            TextCommand          command = new();
            CommandLineArguments args    = CreateArgs("text", "string");

            Assert.Null(command.Text);
            CommandOptionsBinder.BindOptions(command, args);
            Assert.Equal("string", command.Text);
        }
Пример #7
0
        public void OptionsWithoutValuesAreBoundToBooleanPropertiesWherePropertyNameMatchesOptionKey()
        {
            LogicalCommand       command = new();
            CommandLineArguments args    = CreateArgs("switch", null);

            Assert.False(command.Switch);
            CommandOptionsBinder.BindOptions(command, args);
            Assert.True(command.Switch);
        }
Пример #8
0
        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);
        }