public void SetUp() { _config = new DefaultRuleConfiguration(); _config.Description = "Description"; _config.Rule = typeof(UnCreatableRule); DefaultRuleConfigurationParameter param = new DefaultRuleConfigurationParameter(); param.Name = "arg"; param.Value = "argumentValue"; param.ParameterType = ParameterType.String; _config.Parameters = new DefaultRuleConfigurationParameter[] { param }; }
/// <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); }