public void Help_ShouldReturnCommandSetup() { var parser = A.Fake <Parser>(); var commandParser = A.Fake <CommandParser <Command1Options> >(ob => ob.WithArgumentsForConstructor(() => new CommandParser <Command1Options>(parser))); var setup = new NamedCommandSetup <Command1Options>(parser, commandParser); setup.Help("helpText").Should().Be(setup); }
public void ExampleUsage_ShouldReturnCommandSetup() { var parser = A.Fake <Parser>(); var commandParser = A.Fake <CommandParser <Command1Options> >(ob => ob.WithArgumentsForConstructor(() => new CommandParser <Command1Options>(parser))); var setup = new NamedCommandSetup <Command1Options>(parser, commandParser); setup.ExampleUsage("newExampleUsage").Should().Be(setup); }
public void Validate_ShouldReturnCommandSetup() { var parser = A.Fake <Parser>(); var commandParser = A.Fake <CommandParser <Command1Options> >(ob => ob.WithArgumentsForConstructor(() => new CommandParser <Command1Options>(parser))); var validator = A.Fake <Action <CommandValidatorContext <Command1Options> > >(); var setup = new NamedCommandSetup <Command1Options>(parser, commandParser); setup.Validate(validator).Should().Be(setup); }
public void Help_ShouldAssignHelpTextToCommandParser() { var parser = A.Fake <Parser>(); var commandParser = A.Fake <CommandParser <Command1Options> >(ob => ob.WithArgumentsForConstructor(() => new CommandParser <Command1Options>(parser))); var setup = new NamedCommandSetup <Command1Options>(parser, commandParser); setup.Help("newHelpText"); A.CallToSet(() => commandParser.CommandHelp).To("newHelpText").MustHaveHappened(); }
public void ExampleUsage_ShouldAssignExampleUsageToCommandParser() { var parser = A.Fake <Parser>(); var commandParser = A.Fake <CommandParser <Command1Options> >(ob => ob.WithArgumentsForConstructor(() => new CommandParser <Command1Options>(parser))); var setup = new NamedCommandSetup <Command1Options>(parser, commandParser); setup.ExampleUsage("newExampleUsage"); A.CallToSet(() => commandParser.CommandExampleUsage).To("newExampleUsage").MustHaveHappened(); }
public void Name_ShouldReturnCommandSetup() { var parser = A.Fake <Parser>(); var commandParser = A.Fake <CommandParser <Command1Options> >(); A.CallTo(() => parser.CanCommandParserUseCommandName(commandParser, "name")).Returns(true); var setup = new NamedCommandSetup <Command1Options>(parser, commandParser); setup.Name("name").Should().Be(setup); }
public void Validate_ShouldAssignValidatorToCommandParser() { var parser = A.Fake <Parser>(); var commandParser = A.Fake <CommandParser <Command1Options> >(ob => ob.WithArgumentsForConstructor(() => new CommandParser <Command1Options>(parser))); var validator = A.Fake <Action <CommandValidatorContext <Command1Options> > >(); var setup = new NamedCommandSetup <Command1Options>(parser, commandParser); setup.Validate(validator); A.CallToSet(() => commandParser.Validator).To(validator).MustHaveHappened(); }
public void Name_ShouldAssignNameToCommandParser() { var parser = A.Fake <Parser>(); var commandParser = A.Fake <CommandParser <Command1Options> >(); A.CallTo(() => parser.CanCommandParserUseCommandName(commandParser, "newCommandName")).Returns(true); var setup = new NamedCommandSetup <Command1Options>(parser, commandParser); setup.Name("newCommandName"); A.CallToSet(() => commandParser.CommandName).To("newCommandName").MustHaveHappened(); }
public void Name_DuplicateName_ShouldThrowException() { var parser = A.Fake <Parser>(); var commandParser = A.Fake <CommandParser <Command1Options> >(); A.CallTo(() => parser.CanCommandParserUseCommandName(commandParser, "command2")).Returns(false); var setup = new NamedCommandSetup <Command1Options>(parser, commandParser); setup.Invoking(a => a.Name("command2")) .Should() .Throw <ArgumentException>() .WithMessage(@"The given command name 'command2' is already in use by another command. Please use a different name. Parameter name: name"); A.CallTo(() => parser.CanCommandParserUseCommandName(commandParser, "command2")).MustHaveHappened(); }
public void Option_TimeSpanTargetProperty_ShouldReturnANewTimeSpanOptionSetup() { var targetProperty = typeof(DataTypesCommandOptions).GetProperty("TimeSpan"); var parser = A.Fake <Parser>(); var commandParser = A.Fake <CommandParser <DataTypesCommandOptions> >(ob => ob.WithArgumentsForConstructor(() => new CommandParser <DataTypesCommandOptions>(parser))); var optionParser = A.Fake <TimeSpanOptionParser>(ob => ob.WithArgumentsForConstructor(() => new TimeSpanOptionParser(targetProperty, "timeSpan"))); var optionSetup = A.Fake <TimeSpanOptionSetup <DataTypesCommandOptions> >(ob => ob.WithArgumentsForConstructor(() => new TimeSpanOptionSetup <DataTypesCommandOptions>(commandParser, optionParser))); var setup = new NamedCommandSetup <DataTypesCommandOptions>(parser, commandParser); A.CallTo(() => commandParser.GetOrCreateOptionParser <TimeSpanOptionParser>(targetProperty)).Returns(optionParser); A.CallTo(() => this.DependencyResolver.Resolve <TimeSpanOptionSetup <DataTypesCommandOptions> >(commandParser, optionParser)).Returns(optionSetup); Expression <Func <DataTypesCommandOptions, TimeSpan> > propertyExpression = a => a.TimeSpan; setup.Option(propertyExpression).Should().Be(optionSetup); A.CallTo(() => commandParser.GetOrCreateOptionParser <TimeSpanOptionParser>(targetProperty)).MustHaveHappened(); A.CallTo(() => this.DependencyResolver.Resolve <TimeSpanOptionSetup <DataTypesCommandOptions> >(commandParser, optionParser)).MustHaveHappened(); }
public void Option_NullableEnumTargetProperty_ShouldReturnANewEnumOptionSetup() { var targetProperty = typeof(DataTypesCommandOptions).GetProperty("NullableEnum"); var parser = A.Fake <Parser>(); var commandParser = A.Fake <CommandParser <DataTypesCommandOptions> >(ob => ob.WithArgumentsForConstructor(() => new CommandParser <DataTypesCommandOptions>(parser))); var optionParser = A.Fake <EnumOptionParser <LogLevel> >(ob => ob.WithArgumentsForConstructor(() => new EnumOptionParser <LogLevel>(targetProperty, "nullableEnum"))); var optionSetup = A.Fake <EnumOptionSetup <DataTypesCommandOptions, LogLevel> >(ob => ob.WithArgumentsForConstructor(() => new EnumOptionSetup <DataTypesCommandOptions, LogLevel>(commandParser, optionParser))); var setup = new NamedCommandSetup <DataTypesCommandOptions>(parser, commandParser); A.CallTo(() => commandParser.GetOrCreateOptionParser <EnumOptionParser <LogLevel> >(targetProperty)).Returns(optionParser); A.CallTo(() => this.DependencyResolver.Resolve <EnumOptionSetup <DataTypesCommandOptions, LogLevel> >(commandParser, optionParser)).Returns(optionSetup); Expression <Func <DataTypesCommandOptions, Nullable <LogLevel> > > propertyExpression = a => a.NullableEnum; setup.Option(propertyExpression).Should().Be(optionSetup); A.CallTo(() => commandParser.GetOrCreateOptionParser <EnumOptionParser <LogLevel> >(targetProperty)).MustHaveHappened(); A.CallTo(() => this.DependencyResolver.Resolve <EnumOptionSetup <DataTypesCommandOptions, LogLevel> >(commandParser, optionParser)).MustHaveHappened(); }