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); }
public CFamilyRuleConfigProvider(IHost host, IActiveSolutionBoundTracker activeSolutionBoundTracker, IUserSettingsProvider userSettingsProvider, ILogger logger, ICFamilyRulesConfigProvider sonarWayProvider, IFileSystem fileSystem) { this.activeSolutionBoundTracker = activeSolutionBoundTracker; this.userSettingsProvider = userSettingsProvider; this.logger = logger; this.sonarWayProvider = sonarWayProvider; this.serializer = new RulesSettingsSerializer(fileSystem, logger); this.effectiveConfigCalculator = new EffectiveRulesConfigCalculator(logger); }
public CFamilyRuleConfigProvider(IHost host, IActiveSolutionBoundTracker activeSolutionBoundTracker, IUserSettingsProvider userSettingsProvider, ILogger logger, ICFamilyRulesConfigProvider sonarWayProvider, IFileSystem fileSystem) { this.activeSolutionBoundTracker = activeSolutionBoundTracker; this.userSettingsProvider = userSettingsProvider; this.logger = logger; solutionInfoProvider = host.GetService <ISolutionRuleSetsInformationProvider>(); solutionInfoProvider.AssertLocalServiceIsNotNull(); this.sonarWayProvider = sonarWayProvider; this.serializer = new RulesSettingsSerializer(fileSystem, logger); this.effectiveConfigCalculator = new EffectiveRulesConfigCalculator(logger); }
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 TestInitialize() { testLogger = new TestLogger(); testSubject = new EffectiveRulesConfigCalculator(testLogger); }