Esempio n. 1
0
        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);
            },