コード例 #1
0
ファイル: Parameter.cs プロジェクト: watermelonpizza/argparse
        public Parameter(ICreateParameterCatagory catagoryCreator, IParameterCatagory <TArgumentOptions> currentCatagory, PropertyInfo property, uint position)
        {
            if (!ArgumentParser.SupportedTypes.Contains(typeof(TArgument)))
            {
                throw new ArgumentException(
                          $"{typeof(TArgument).Name} is not supported as a parameter type for {property.Name}. Please use only one of the supported types as found in {nameof(ArgumentParser.SupportedTypes)}",
                          nameof(TArgument));
            }

            if (property.GetMethod == null || property.SetMethod == null)
            {
                throw new ArgumentException(
                          $"Property '{property.Name}' must have both a get and set accessor on catagory '{typeof(TArgumentOptions).Name}'.",
                          nameof(property));
            }

            _catagoryCreator = catagoryCreator;
            _currentCatagory = currentCatagory;
            Property         = property;

            Name(property.Name.ToUpperInvariant());

            ParameterType = typeof(TArgument);

            Position = position;
        }
コード例 #2
0
        public void ParameterCatagoryNameMethodSetsName()
        {
            IParameterCatagory <NoOptions> cat = ArgumentParser.Create("app").CreateParameterCatagory <NoOptions>();

            cat.Name("CustomName");

            Assert.Equal("CustomName", cat.CatagoryName);
        }
コード例 #3
0
        public void ParametersHaveCorrectPositionOrderWithinCatagory()
        {
            IParameterCatagory <BasicOptions> catagory = ArgumentParser.Create("app").CreateParameterCatagory <BasicOptions>();

            IParameter <BasicOptions, string> firstParameter  = catagory.WithParameter(x => x.String);
            IParameter <BasicOptions, int>    secondParameter = catagory.WithParameter(x => x.Integer);

            Assert.Equal(1000u, catagory.PositionStart);
            Assert.Equal(1000u, firstParameter.Position);
            Assert.Equal(1001u, secondParameter.Position);
        }
コード例 #4
0
        public void ParameterCanCreateParameterCatagory()
        {
            ArgumentParser parser = ArgumentParser.Create("app");

            IParameterCatagory <BasicOptions> firstCatagory          = parser.CreateParameterCatagory <BasicOptions>();
            IParameter <BasicOptions, string> firstCatagoryParameter = firstCatagory.WithParameter(x => x.String);

            IParameterCatagory <BasicOptions> secondCatagory          = firstCatagoryParameter.CreateParameterCatagory <BasicOptions>();
            IParameter <BasicOptions, string> secondCatagoryParameter = secondCatagory.WithParameter(x => x.String);

            Assert.NotSame(firstCatagory, secondCatagory);
            Assert.NotSame(firstCatagoryParameter, secondCatagoryParameter);
        }
コード例 #5
0
        public void ParametersHaveCorrectPositionOrderBetweenCatagories()
        {
            ArgumentParser parser = ArgumentParser.Create("app");
            IParameterCatagory <BasicOptions> firstCatagory  = parser.CreateParameterCatagory <BasicOptions>();
            IParameterCatagory <BasicOptions> secondCatagory = parser.CreateParameterCatagory <BasicOptions>();

            IParameter <BasicOptions, string> firstCatagoryParameter  = firstCatagory.WithParameter(x => x.String);
            IParameter <BasicOptions, int>    secondCatagoryParameter = secondCatagory.WithParameter(x => x.Integer);

            Assert.Equal(1000u, firstCatagory.PositionStart);
            Assert.Equal(2000u, secondCatagory.PositionStart);
            Assert.Equal(1000u, firstCatagoryParameter.Position);
            Assert.Equal(2000u, secondCatagoryParameter.Position);
        }
コード例 #6
0
 public MultiParameter(ICreateParameterCatagory catagoryCreator, IParameterCatagory <TArgumentOptions> currentCatagory, PropertyInfo property, uint position)
     : base(catagoryCreator, currentCatagory, property, position)
 {
     IsMultiple = true;
 }
コード例 #7
0
        public void ParameterCatagoryWithMultiParameterOnSamePropertyThrowArgumentException()
        {
            IParameterCatagory <MultiOptions> catagory = ArgumentParser.Create("app").CreateParameterCatagory <MultiOptions>();

            Assert.Throws <ArgumentException>(() => catagory.WithMultiParameter(x => x.Boolean).WithMultiParameter(x => x.Boolean));
        }
コード例 #8
0
        public void ParameterCatagoryWithCatagoryIsTypeIParameter_T_()
        {
            IParameterCatagory <BasicOptions> catagory = ArgumentParser.Create("app").CreateParameterCatagory <BasicOptions>();

            Assert.IsAssignableFrom <IParameter <BasicOptions, bool> >(catagory.WithParameter(x => x.Boolean));
        }
コード例 #9
0
        public void ParameterCatagoryWithCatagoryNotNull()
        {
            IParameterCatagory <BasicOptions> catagory = ArgumentParser.Create("app").CreateParameterCatagory <BasicOptions>();

            Assert.NotNull(catagory.WithParameter(x => x.Boolean));
        }