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