示例#1
0
        public void GetConfig_RulesInUserSettings_MergedConfigReturned()
        {
            // Arrange
            var testLogger  = new TestLogger();
            var testSubject = new EffectiveRulesConfigCalculator(testLogger);

            var defaultRulesConfig = CreateMockConfig("key");
            var sourcesSettings    = new UserSettings
            {
                Rules = new System.Collections.Generic.Dictionary <string, RuleConfig>
                {
                    { "rule1", new RuleConfig() }
                }
            };

            // 1. First call -> new config returned
            var result1 = testSubject.GetEffectiveRulesConfig("language1", defaultRulesConfig, sourcesSettings);

            result1.Should().NotBeSameAs(defaultRulesConfig);
            testLogger.AssertOutputStringExists(CoreStrings.EffectiveRules_CacheMiss);

            // 2. Second call with same settings -> cache hit
            testLogger.Reset();
            var result2 = testSubject.GetEffectiveRulesConfig("language1", defaultRulesConfig, sourcesSettings);

            result2.Should().BeSameAs(result1);
            testLogger.AssertOutputStringExists(CoreStrings.EffectiveRules_CacheHit);

            // 3. Call with different key -> cache miss
            testLogger.Reset();
            var result3 = testSubject.GetEffectiveRulesConfig("another language", defaultRulesConfig, sourcesSettings);

            result3.Should().NotBeSameAs(result2);
            testLogger.AssertOutputStringExists(CoreStrings.EffectiveRules_CacheMiss);
        }
示例#2
0
        public void GetConfig_NullUserSettings_DefaultConfigReturned(bool sourceUserSettingsAreNull)
        {
            // Arrange
            var testLogger  = new TestLogger();
            var testSubject = new EffectiveRulesConfigCalculator(testLogger);

            var defaultRulesConfig = CreateMockConfig("language1");
            var sourcesSettings    = sourceUserSettingsAreNull ? null : new UserSettings();

            // Act
            var result = testSubject.GetEffectiveRulesConfig("language1", defaultRulesConfig, sourcesSettings);

            // Assert - optimisation - expecting the same object instance
            result.Should().BeSameAs(defaultRulesConfig);
            testLogger.AssertOutputStringExists(CoreStrings.EffectiveRules_NoUserSettings);
        }
        public void GetConfig_NullArguments_Throws()
        {
            var defaultRulesConfig = CreateWellKnownRulesConfig("language1");
            var customSettings     = new RulesSettings();

            // 1. Language
            Action act = () => testSubject.GetEffectiveRulesConfig(null, defaultRulesConfig, customSettings);

            act.Should().ThrowExactly <ArgumentNullException>().And.ParamName.Should().Be("languageKey");

            // 2. Default rules config
            act = () => testSubject.GetEffectiveRulesConfig("x", null, customSettings);
            act.Should().ThrowExactly <ArgumentNullException>().And.ParamName.Should().Be("defaultRulesConfig");

            // 3. Custom settings
            act = () => testSubject.GetEffectiveRulesConfig("x", defaultRulesConfig, null);
            act.Should().ThrowExactly <ArgumentNullException>().And.ParamName.Should().Be("customSettings");
        }
示例#4
0
 protected virtual /* for testing */ ICFamilyRulesConfig CreateConfiguration(string languageKey, ICFamilyRulesConfig sonarWayConfig, RulesSettings settings)
 => effectiveConfigCalculator.GetEffectiveRulesConfig(languageKey, sonarWayConfig, settings);