private CommandRegistry CreateCommandRegistry() { var nameValidator = new NameValidator(); var descriptorGenerator = new CommandAttributeInspector(); return(new CommandRegistry(nameValidator, descriptorGenerator)); }
public void DescribeCommand_CommandHasNamedParameters_ReturnsDescriptor() { // arrange var sut = new CommandAttributeInspector(); // act var descriptor = sut.DescribeCommand(typeof(NamedParameterCommand)); // assert Assert.Equal(typeof(NamedParameterCommand), descriptor.ImplementingType); Assert.Equal("nam", descriptor.CommandName); var namedParameterDescriptor1 = descriptor.NamedParameters["param1"]; Assert.Equal("param1", namedParameterDescriptor1.Name); Assert.Equal("value1", namedParameterDescriptor1.ValuePlaceholderText); Assert.Equal(typeof(NamedParameterCommand).GetProperty("NamedParameter1"), namedParameterDescriptor1.Property); Assert.Equal("The param1 parameter.", namedParameterDescriptor1.GetDescription("")); var namedParameterDescriptor2 = descriptor.NamedParameters["param2"]; Assert.Equal("param2", namedParameterDescriptor2.Name); Assert.Equal("value2", namedParameterDescriptor2.ValuePlaceholderText); Assert.Equal(typeof(NamedParameterCommand).GetProperty("NamedParameter2"), namedParameterDescriptor2.Property); Assert.Equal("The param2 parameter.", namedParameterDescriptor2.GetDescription("")); }
private Session CreateSession( Action <ScopedObjectRegistry> sessionObjectsConfigurator = null, params Type[] commandTypes) { var parser = new Parser(); var nameValidator = new NameValidator(); var descriptorGenerator = new CommandAttributeInspector(); var registry = new CommandRegistry(nameValidator, descriptorGenerator); foreach (var commandType in commandTypes) { registry.Register(commandType); } var services = new CommandServices(); var scopedObjects = new ScopedObjectRegistry(); scopedObjects.Register <VariableCollection>(); sessionObjectsConfigurator?.Invoke(scopedObjects); var factory = new CommandFactory(registry, services, scopedObjects); var variables = scopedObjects.Resolve(typeof(VariableCollection)) as VariableCollection; var replacer = new VariableReplacer(); var binder = new CommandParameterBinder(registry, replacer, variables); return(new Session(parser, factory, binder)); }
public void DescribeCommand_CommandHasNumberedParameters_ReturnsDescriptor() { // arrange var sut = new CommandAttributeInspector(); // act var descriptor = sut.DescribeCommand(typeof(NumberedParameterCommand)); // assert Assert.Equal(typeof(NumberedParameterCommand), descriptor.ImplementingType); Assert.Equal("num", descriptor.CommandName); var numberedParameterDescriptor1 = descriptor.NumberedParameters[0]; Assert.Equal(1, numberedParameterDescriptor1.Number); Assert.Equal("param1", numberedParameterDescriptor1.PlaceholderText); Assert.Equal(typeof(NumberedParameterCommand).GetProperty("NumberedParameter1"), numberedParameterDescriptor1.Property); Assert.Equal("The first parameter", numberedParameterDescriptor1.GetDescription("")); var numberedParameterDescriptor2 = descriptor.NumberedParameters[1]; Assert.Equal(2, numberedParameterDescriptor2.Number); Assert.Equal("param2", numberedParameterDescriptor2.PlaceholderText); Assert.Equal(typeof(NumberedParameterCommand).GetProperty("NumberedParameter2"), numberedParameterDescriptor2.Property); Assert.Equal("The second parameter", numberedParameterDescriptor2.GetDescription("")); }
private CommandFactory CreateCommandFactory( Action <CommandRegistry> commandRegistryConfigurator = null, Action <CommandServices> commandServicesConfigurator = null, Action <ScopedObjectRegistry> scopedObjectRegistryConfigurator = null) { var nameValidator = new NameValidator(); var descriptorGenerator = new CommandAttributeInspector(); var registry = new CommandRegistry(nameValidator, descriptorGenerator); if (commandRegistryConfigurator != null) { commandRegistryConfigurator.Invoke(registry); } var services = new CommandServices(); if (commandServicesConfigurator != null) { commandServicesConfigurator.Invoke(services); } var sessionObjects = new ScopedObjectRegistry(); sessionObjects.Register <VariableCollection>(); if (scopedObjectRegistryConfigurator != null) { scopedObjectRegistryConfigurator.Invoke(sessionObjects); } return(new CommandFactory(registry, services, sessionObjects)); }
public void Ctor_NullNameValidator_ThrowsException() { // arrange var descriptorGenerator = new CommandAttributeInspector(); Action sutAction = () => new CommandRegistry(null, descriptorGenerator); // act, assert var ex = Assert.Throws <ArgumentNullException>(sutAction); Assert.Equal("nameValidator", ex.ParamName); }
public void DescribeCommand_CommandDoesNotContainRequiredParameter_ReturnedDescriptorHasNoRequiredParameter() { // arrange var sut = new CommandAttributeInspector(); // act var descriptor = sut.DescribeCommand(typeof(NumberedParameterCommand)); // assert Assert.False(descriptor.NumberedParameters[0].Required); }
public void DescribeCommand_CommandHasRequiredParameter_ReturnedDescriptorIncludesRequiredParameter() { // arrange var sut = new CommandAttributeInspector(); // act var descriptor = sut.DescribeCommand(typeof(RequiredParameterCommand)); // assert Assert.True(descriptor.NumberedParameters[0].Required); }
public void DescribeCommand_CommandTypeIsNull_ThrowsException() { // arrange var sut = new CommandAttributeInspector(); Action sutAction = () => sut.DescribeCommand(null); // act, assert var ex = Assert.Throws <ArgumentNullException>(sutAction); Assert.Equal("commandType", ex.ParamName); }
public void DescribeCommand_TypeIsNotACommand_ThrowsException() { // arrange var sut = new CommandAttributeInspector(); var type = GetType(); Action sutAction = () => sut.DescribeCommand(type); // act, assert var ex = Assert.Throws <TypeNotACommandException>(sutAction); Assert.Equal(type, ex.Type); }
private CommandRegistry CreateCommandRegistry(params Type[] commandTypes) { var nameValidator = new NameValidator(); var descriptorGenerator = new CommandAttributeInspector(); var registry = new CommandRegistry(nameValidator, descriptorGenerator); foreach (var commandType in commandTypes) { registry.Register(commandType); } return(registry); }
private Help CreateSut(params Type[] commandTypes) { var nameValidator = new NameValidator(); var descriptorGenerator = new CommandAttributeInspector(); var registry = new CommandRegistry(nameValidator, descriptorGenerator); foreach (var type in commandTypes) { registry.Register(type); } return(new Help(registry, new PhraseDictionary())); }
public void Ctor_VariablesIsNull_ThrowsException() { // arrange var nameValidator = new NameValidator(); var descriptorGenerator = new CommandAttributeInspector(); var registry = new CommandRegistry(nameValidator, descriptorGenerator); Action sutAction = () => new CommandParameterBinder(registry, new VariableReplacer(), null); // act, assert var ex = Assert.Throws <ArgumentNullException>(sutAction); Assert.Equal("variables", ex.ParamName); }
public void DescribeCommand_CommandHasRequiredFlagParameter_ThrowsException() { // arrange var sut = new CommandAttributeInspector(); var type = typeof(RequiredFlagParameterCommand); var property = type.GetProperty("Flag"); Action sutAction = () => sut.DescribeCommand(type); // act, assert var ex = Assert.Throws <InvalidParameterDefinitionException>(sutAction); Assert.Equal(property, ex.Property); Assert.Contains("Flag parameters cannot be marked as required", ex.Message); }
public void DescribeCommand_CommandWithoutDescription_ReturnsDescriptor() { // arrange var sut = new CommandAttributeInspector(); // act var descriptor = sut.DescribeCommand(typeof(SampleCommand2)); // assert Assert.Equal(typeof(SampleCommand2), descriptor.ImplementingType); Assert.Equal("sample2", descriptor.CommandName); var description = descriptor.GetDescription(CultureInfo.InvariantCulture.Name); Assert.Null(description); }
public void Execute_NoDescriptionOnCommand_DoesNotError() { // arrange var nameValidator = new NameValidator(); var descriptorGenerator = new CommandAttributeInspector(); var registry = new CommandRegistry(nameValidator, descriptorGenerator); registry.Register(typeof(SampleCommand2)); var sut = new Help(registry, new PhraseDictionary()); // act var result = sut.Execute() as ValueResult; // assert Assert.Contains("sample2", result.Value); }
public void DescribeCommand_CommandHasFlagParameters_ReturnsDescriptor() { // arrange var sut = new CommandAttributeInspector(); // act var descriptor = sut.DescribeCommand(typeof(FlagParameterCommand)); // assert Assert.Equal(typeof(FlagParameterCommand), descriptor.ImplementingType); Assert.Equal("command", descriptor.CommandName); var flagParameterDescriptor1 = descriptor.FlagParameters[0]; Assert.Equal("p1", flagParameterDescriptor1.Name); Assert.Equal(typeof(FlagParameterCommand).GetProperty("Param1"), flagParameterDescriptor1.Property); var flagParameterDescriptor2 = descriptor.FlagParameters[1]; Assert.Equal("p2", flagParameterDescriptor2.Name); Assert.Equal(typeof(FlagParameterCommand).GetProperty("Param2"), flagParameterDescriptor2.Property); }
public void DescribeCommand_CommandWithDescriptions_ReturnsDescriptor() { // arrange var sut = new CommandAttributeInspector(); // act var descriptor = sut.DescribeCommand(typeof(SampleCommand)); // assert Assert.Equal(typeof(SampleCommand), descriptor.ImplementingType); Assert.Equal("sample", descriptor.CommandName); var invariantDescription = descriptor.GetDescription(CultureInfo.InvariantCulture.Name); Assert.Equal("description", invariantDescription); var enDescription = descriptor.GetDescription("en"); Assert.Equal("description", enDescription); var deDescription = descriptor.GetDescription("de"); Assert.Equal("das description", deDescription); }