public void Named_parameters_are_loaded_correctly(ApplicationType applicationType) { // ARRANGE using var assembly = Compile($@" using System; using CommandLine; public enum SomeEnum {{ Value1, Value2, SomeOtherValue }} {GetClassAttributes(applicationType)} public class Command1Options {{ [Option(""option1"", HelpText = ""some help text"", Default = ""some default"")] public string Option1Property {{ get; set; }} [Option('x', Default = 23)] public int Option2Property {{ get; set; }} [Option('y', Default = true)] public bool? Option3Property {{ get; set; }} [Option(""option4"", Hidden = true)] public string Option4Property {{ get; set; }} [Option(""option5"", Required = true, MetaValue = ""PATH"")] public string Option5Property {{ get; set; }} [Option('z', ""option6"")] public SomeEnum Option6Property {{ get; set; }} [Option(""option7"", Default = SomeEnum.SomeOtherValue)] public SomeEnum Option7Property {{ get; set; }} [Option(""option8"", Default = true)] public bool? Option8Property {{ get; set; }} }} "); // ACT var sut = new CommandLineParserLoader(m_Logger); // ACT var application = sut.Load(assembly); // ASSERT Assert.NotNull(application); var parameterCollection = GetParameterCollection(application, applicationType); Assert.Empty(parameterCollection.SwitchParameters); Assert.Empty(parameterCollection.PositionalParameters); Assert.Collection(parameterCollection.NamedParameters, param => { Assert.Equal("option1", param.Name); Assert.Null(param.ShortName); Assert.Equal("some help text", param.Description); Assert.False(param.Required); Assert.Equal("some default", param.DefaultValue); Assert.Null(param.AcceptedValues); Assert.Null(param.ValuePlaceHolderName); }, param => { Assert.Equal("option5", param.Name); Assert.Null(param.ShortName); Assert.Null(param.Description); Assert.True(param.Required); Assert.Null(param.DefaultValue); Assert.Null(param.AcceptedValues); Assert.Equal("PATH", param.ValuePlaceHolderName); }, param => { Assert.Equal("option6", param.Name); Assert.Equal("z", param.ShortName); Assert.Null(param.Description); Assert.False(param.Required); Assert.Null(param.DefaultValue); Assert.NotNull(param.AcceptedValues); Assert.Equal(3, param.AcceptedValues !.Count); Assert.Contains("Value1", param.AcceptedValues); Assert.Contains("Value2", param.AcceptedValues); Assert.Contains("SomeOtherValue", param.AcceptedValues); Assert.Null(param.ValuePlaceHolderName); },