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); }
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")); }
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")); }
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")); }
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"); }
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"); }
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); }