private static void Validate(CommandValidatorContext <DateCommandOptions> context)
        {
            if (context.CommandOptions.DifferenceToDate != null)
            {
                if (context.CommandOptions.DifferenceToDate.Value < context.CommandOptions.Date)
                {
                    context.AddError(
                        new InvalidOptionError(
                            context.GetOptionName(a => a.DifferenceToDate),
                            $"The given date must be later than {context.CommandOptions.Date}."
                            )
                        );
                }

                if (context.CommandOptions.DisplayInUtc)
                {
                    context.AddError(
                        new InvalidOptionError(
                            context.GetOptionName(a => a.DisplayInUtc),
                            "The option --utc can not be used when the option --differenceTo is used."
                            )
                        );
                }
            }
        }
Beispiel #2
0
        private static void Validate(CommandValidatorContext <QueryWebCommandOptions> context)
        {
            if (String.IsNullOrEmpty(context.CommandOptions.SearchEngineQuery) && String.IsNullOrWhiteSpace(context.CommandOptions.WebsiteAddress))
            {
                context.AddError(new OptionMissingError(context.GetOptionName(a => a.WebsiteAddress)));
            }

            if (!String.IsNullOrWhiteSpace(context.CommandOptions.WebsiteAddress))
            {
                if (
                    !Uri.TryCreate(context.CommandOptions.WebsiteAddress, UriKind.Absolute, out var uri) ||
                    (
                        uri.Scheme != Uri.UriSchemeHttp &&
                        uri.Scheme != Uri.UriSchemeHttps
                    )
                    )
                {
                    context.AddError(
                        new InvalidOptionError(
                            context.GetOptionName(a => a.WebsiteAddress),
                            $"The website address '{context.CommandOptions.WebsiteAddress}' is not a valid web URL."
                            )
                        );
                }
            }
        }
Beispiel #3
0
        public void ParseResult_ShouldReturnParseResultAssignedViaConstructor()
        {
            var parser        = A.Fake <Parser>();
            var commandParser = A.Fake <CommandParser <Command1Options> >(ob => ob.WithArgumentsForConstructor(() => new CommandParser <Command1Options>(parser)));
            var parseResult   = A.Fake <ParseResult>();

            var context = new CommandValidatorContext <Command1Options>(commandParser, parseResult);

            context.ParseResult.Should().Be(parseResult);
        }
Beispiel #4
0
        public void GetOptionName_Null_ShouldThrowException()
        {
            var parser        = A.Fake <Parser>();
            var commandParser = A.Fake <CommandParser <Command1Options> >(ob => ob.WithArgumentsForConstructor(() => new CommandParser <Command1Options>(parser)));
            var parseResult   = A.Fake <ParseResult>();

            var context = new CommandValidatorContext <Command1Options>(commandParser, parseResult);

            context.Invoking(a => a.GetOptionName(null))
            .Should()
            .Throw <ArgumentNullException>();
        }
Beispiel #5
0
        public void AddError_ShouldAddErrorToParseResult()
        {
            var parser        = A.Fake <Parser>();
            var commandParser = A.Fake <CommandParser <Command1Options> >(ob => ob.WithArgumentsForConstructor(() => new CommandParser <Command1Options>(parser)));
            var parseResult   = A.Fake <ParseResult>();

            var context = new CommandValidatorContext <Command1Options>(commandParser, parseResult);

            var missingCommandError = new MissingCommandError();

            context.AddError(missingCommandError);

            A.CallTo(() => parseResult.AddError(missingCommandError)).MustHaveHappened();
        }
Beispiel #6
0
        public void CommandOptions_ShouldReturnCommandOptionsOfParseResult()
        {
            var parser         = A.Fake <Parser>();
            var commandParser  = A.Fake <CommandParser <Command1Options> >(ob => ob.WithArgumentsForConstructor(() => new CommandParser <Command1Options>(parser)));
            var parseResult    = A.Fake <ParseResult>();
            var commandOptions = A.Fake <Command1Options>();

            var context = new CommandValidatorContext <Command1Options>(commandParser, parseResult);

            A.CallTo(() => parseResult.CommandOptions).Returns(commandOptions);

            context.CommandOptions.Should().Be(commandOptions);

            A.CallTo(() => parseResult.CommandOptions).MustHaveHappened();
        }
Beispiel #7
0
        public void GetOptionName_ValidExpression_ShouldReturnOptionName()
        {
            var parser        = A.Fake <Parser>();
            var commandParser = A.Fake <CommandParser <Command1Options> >(ob => ob.WithArgumentsForConstructor(() => new CommandParser <Command1Options>(parser)));
            var parseResult   = A.Fake <ParseResult>();

            var targetProperty = typeof(Command1Options).GetProperty("OptionA");

            String optionName;

            A.CallTo(() => commandParser.TryGetOptionName(targetProperty, out optionName))
            .Returns(true)
            .AssignsOutAndRefParameters("optionA");

            var context = new CommandValidatorContext <Command1Options>(commandParser, parseResult);

            context.GetOptionName(a => a.OptionA).Should().BeEquivalentTo("optionA");
        }
Beispiel #8
0
        public void GetOptionName_UnmappedOption_ShouldThrowException()
        {
            var parser        = A.Fake <Parser>();
            var commandParser = A.Fake <CommandParser <Command1Options> >(ob => ob.WithArgumentsForConstructor(() => new CommandParser <Command1Options>(parser)));
            var parseResult   = A.Fake <ParseResult>();

            var targetProperty = typeof(Command1Options).GetProperty("OptionB");

            String optionName;

            A.CallTo(() => commandParser.TryGetOptionName(targetProperty, out optionName))
            .Returns(false);

            var context = new CommandValidatorContext <Command1Options>(commandParser, parseResult);

            context.Invoking(a => a.GetOptionName(b => b.OptionB))
            .Should()
            .Throw <ArgumentException>()
            .WithMessage(@"The property OptionB of the type ParseTheArgs.Tests.TestData.Command1Options is not mapped to any option.
Parameter name: optionSelector");
        }
        private static void Validate(CommandValidatorContext <FileReplaceCommandOptions> context)
        {
            if (!context.CommandOptions.InFile.Exists)
            {
                context.AddError(
                    new InvalidOptionError(
                        context.GetOptionName(a => a.InFile),
                        "The specified file does not exist."
                        )
                    );
            }

            if (context.CommandOptions.OutFile.Exists && !context.CommandOptions.OverrideOutFile)
            {
                context.AddError(
                    new InvalidOptionError(
                        context.GetOptionName(a => a.OutFile),
                        "The specified file already exists. Use the option --override to override the file."
                        )
                    );
            }
        }