Esempio n. 1
0
        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(""));
        }
Esempio n. 3
0
        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(""));
        }
Esempio n. 5
0
        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));
        }
Esempio n. 6
0
        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);
        }
Esempio n. 11
0
        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);
        }
Esempio n. 12
0
        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()));
        }
Esempio n. 13
0
        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);
        }
Esempio n. 16
0
        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);
        }