示例#1
0
        public void Single_character_setters_generate_aliases_that_accept_a_single_dash_prefix()
        {
            var binder = new TypeBinder(typeof(ClassWithSingleLetterProperty));

            var options = binder.BuildOptions().ToArray();

            options.Should().Contain(o => o.HasRawAlias("-x"));
            options.Should().Contain(o => o.HasRawAlias("-y"));
        }
        public void Options_are_not_built_for_infrastructure_types_exposed_by_constructor_parameters(Type type)
        {
            var binder = new TypeBinder(typeof(ClassWithCtorParameter <>).MakeGenericType(type));

            var options = binder.BuildOptions();

            options.Should()
            .NotContain(o => o.Argument.ArgumentType == type);
        }
示例#3
0
        public void Single_character_constructor_arguments_generate_aliases_with_a_single_dash_prefix()
        {
            var binder = new TypeBinder(typeof(ClassWithSingleLetterCtorParameter));

            var options = binder.BuildOptions().ToArray();

            options.Should().Contain(o => o.HasRawAlias("-x"));
            options.Should().Contain(o => o.HasRawAlias("-y"));
        }
示例#4
0
        public void Multi_character_setters_generate_aliases_that_accept_a_single_dash_prefix()
        {
            var binder = new TypeBinder(typeof(ClassWithMultiLetterSetters));

            var options = binder.BuildOptions().ToArray();

            options.Should().Contain(o => o.HasRawAlias("--int-option"));
            options.Should().Contain(o => o.HasRawAlias("--string-option"));
            options.Should().Contain(o => o.HasRawAlias("--bool-option"));
        }
示例#5
0
        public void When_both_constructor_parameters_and_setters_are_present_then_BuildOptions_creates_options_for_all_of_them()
        {
            var binder = new TypeBinder(typeof(ClassWithSettersAndCtorParametersWithDifferentNames));

            var options = binder.BuildOptions();

            options.Should().Contain(o => o.HasRawAlias("--int-option"));
            options.Should().Contain(o => o.HasRawAlias("--string-option"));
            options.Should().Contain(o => o.HasRawAlias("--bool-option"));

            options.Should().Contain(o => o.HasRawAlias("-i"));
            options.Should().Contain(o => o.HasRawAlias("-s"));
            options.Should().Contain(o => o.HasRawAlias("-b"));
        }
示例#6
0
        public void Default_option_values_are_based_on_constructor_parameter_defaults()
        {
            var binder = new TypeBinder(typeof(ClassWithMultiLetterCtorParameters));

            var options = binder.BuildOptions().ToArray();

            options.Single(o => o.HasRawAlias("--int-option"))
            .Argument
            .GetDefaultValue()
            .Should()
            .Be(123);

            options.Single(o => o.HasRawAlias("--string-option"))
            .Argument
            .GetDefaultValue()
            .Should()
            .Be("the default");
        }
示例#7
0
        public void Property_setters_with_no_default_value_and_no_matching_option_are_not_called()
        {
            var command = new Command("the-command");

            var binder = new TypeBinder(typeof(ClassWithSettersAndCtorParametersWithDifferentNames));

            foreach (var option in binder.BuildOptions())
            {
                command.Add(option);
            }

            var parser            = new Parser(command);
            var invocationContext = new InvocationContext(
                parser.Parse(""),
                parser);

            var instance = (ClassWithSettersAndCtorParametersWithDifferentNames)binder.CreateInstance(invocationContext);

            instance.StringOption.Should().Be("the default");
        }
示例#8
0
        public static CommandLineBuilder ConfigureFromType <T>(
            this CommandLineBuilder builder,
            MethodInfo onExecuteMethod = null)
            where T : class
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            var typeBinder = new TypeBinder(typeof(T));

            foreach (var option in typeBinder.BuildOptions())
            {
                builder.AddOption(option);
            }

            builder.Handler = new TypeBindingCommandHandler(
                onExecuteMethod,
                typeBinder);

            return(builder);
        }