예제 #1
0
        public void ConfigurationFactoryShouldReturnConfigurationFromConfigurationFactoryProvider()
        {
            IRule rule = Mocker.DynamicMock <IRule>();
            IRuleConfiguration        config  = Mocker.DynamicMock <IRuleConfiguration>();
            IRuleConfigurationFactory factory = Mocker.DynamicMock <IRuleConfigurationFactory>();

            Expect.Call(_provider.GetRuleConfigurationFactoryFor(rule.GetType())).Return(factory).Repeat.Once();
            Expect.Call(factory.Get(rule.GetType())).Return(config).Repeat.Once();
            Expect.Call(_project.GetProjectRuleConfigurationOverrides()).Return(new IRuleConfigurationOverride[] {}).Repeat.Once();

            Mocker.ReplayAll();

            Assert.AreEqual(config, _configFactory.GetRuleConfigurationFor(rule.GetType()));

            Mocker.VerifyAll();
        }
        /// <summary>
        /// Gets the configuration for the specified rule type
        /// </summary>
        /// <param name="aType">The rule type</param>
        /// <returns>The rule configuration</returns>
        public IRuleConfiguration GetRuleConfigurationFor(Type aType)
        {
            IRuleConfigurationFactory factory = _provider.GetRuleConfigurationFactoryFor(aType);

            if (factory == null)
            {
                throw new CalidusException("No default configuration could be loaded for rule " + aType.FullName);
            }

            //determine default and overridden configuration
            IRuleConfiguration         defaultConfig  = factory.Get(aType);
            IRuleConfigurationOverride overrideConfig = _project.GetProjectRuleConfigurationOverrides().FirstOrDefault <IRuleConfigurationOverride>(p => p.Rule.FullName.Equals(aType.FullName));

            IRuleConfiguration actualConfig = defaultConfig;

            if (overrideConfig != null)
            {
                IList <IRuleConfigurationParameter> parameters = new List <IRuleConfigurationParameter>();
                foreach (IRuleConfigurationParameter aParam in overrideConfig.Parameters)
                {
                    //get the default value
                    IRuleConfigurationParameter defaultConfigParameter = defaultConfig.Parameters.FirstOrDefault <IRuleConfigurationParameter>(p => p.Name.Equals(aParam.Name));
                    //create an overridden parameter with the overridden value
                    DefaultRuleConfigurationParameter overriddenParam = new DefaultRuleConfigurationParameter();
                    overriddenParam.Name          = defaultConfigParameter.Name;
                    overriddenParam.ParameterType = defaultConfigParameter.ParameterType;
                    overriddenParam.Value         = aParam.Value;
                    //add the overridden parameter
                    parameters.Add(overriddenParam);
                }

                actualConfig = new DefaultRuleConfiguration(aType, defaultConfig.Description, parameters);
            }

            return(actualConfig);
        }