public void NewInstanceHasNoWatchers() { SystemConfigurationSourceImplementation implementation = new SystemConfigurationSourceImplementation(false); Assert.AreEqual(0, implementation.WatchedConfigSources.Count); Assert.AreEqual(0, implementation.WatchedSections.Count); }
public void WatchedSectionInExternalFileValuesAreUpdatedIfExternalFileChangesAndNotificationIsFired() { SystemConfigurationSourceImplementation implementation = new SystemConfigurationSourceImplementation(false); object section1 = implementation.GetSection(externalSection); Assert.IsNotNull(section1); DummySection dummySection1 = section1 as DummySection; Assert.AreEqual(externalSection, dummySection1.Name); Assert.AreEqual(20, dummySection1.Value); System.Configuration.Configuration rwConfiguration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); DummySection rwSection = rwConfiguration.GetSection(externalSection) as DummySection; rwSection.Value = 25; rwConfiguration.Save(); implementation.ExternalConfigSourceChanged(externalSectionSource); section1 = implementation.GetSection(externalSection); Assert.IsNotNull(section1); dummySection1 = section1 as DummySection; Assert.AreEqual(externalSection, dummySection1.Name); Assert.AreEqual(25, dummySection1.Value); }
public void CanGetExistingSectionInExternalFile() { SystemConfigurationSourceImplementation implementation = new SystemConfigurationSourceImplementation(false); object section = implementation.GetSection(externalSection); Assert.IsNotNull(section); }
public void RestoredSectionGetsNotificationOnRestoreAndGetsFurtherNotifications() { SystemConfigurationSourceImplementation implementation = new SystemConfigurationSourceImplementation(false); object section1 = implementation.GetSection(localSection); Assert.IsNotNull(section1); object section2 = implementation.GetSection(localSection2); Assert.IsNotNull(section2); implementation.AddSectionChangeHandler(localSection, new ConfigurationChangedEventHandler(OnConfigurationChanged)); implementation.AddSectionChangeHandler(localSection2, new ConfigurationChangedEventHandler(OnConfigurationChanged)); // a change in system config notifies both sections System.Configuration.Configuration rwConfiguration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); rwConfiguration.Save(); implementation.ConfigSourceChanged(localSectionSource); Assert.AreEqual(1, updatedSectionsTally[localSection]); Assert.AreEqual(1, updatedSectionsTally[localSection2]); // removal of the section notifies both sections rwConfiguration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); rwConfiguration.Sections.Remove(localSection2); rwConfiguration.Save(); implementation.ConfigSourceChanged(localSectionSource); Assert.AreEqual(2, updatedSectionsTally[localSection]); Assert.AreEqual(2, updatedSectionsTally[localSection2]); // further updates only notify the remaining section rwConfiguration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); rwConfiguration.Save(); implementation.ConfigSourceChanged(localSectionSource); Assert.AreEqual(3, updatedSectionsTally[localSection]); Assert.AreEqual(2, updatedSectionsTally[localSection2]); // restore of section gets notified DummySection rwSection = new DummySection(); rwSection.Name = localSection2; rwSection.Value = 30; rwSection.SectionInformation.ConfigSource = localSectionSource; rwConfiguration.Sections.Add(localSection2, rwSection); rwConfiguration.Save(); implementation.ConfigSourceChanged(localSectionSource); Assert.AreEqual(4, updatedSectionsTally[localSection]); Assert.AreEqual(3, updatedSectionsTally[localSection2]); // further updates notify both sections rwConfiguration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); rwConfiguration.Save(); implementation.ConfigSourceChanged(localSectionSource); Assert.AreEqual(5, updatedSectionsTally[localSection]); Assert.AreEqual(4, updatedSectionsTally[localSection2]); }
public void GetsNullIfSectionDoesNotExist() { SystemConfigurationSourceImplementation implementation = new SystemConfigurationSourceImplementation(false); object section = implementation.GetSection(nonExistingSection); Assert.IsNull(section); }
public void WatchedExistingSectionInExternalFileIsNoLongerWatchedIfRemovedFromConfigurationAndExternalFileWatcherIsRemoved() { SystemConfigurationSourceImplementation implementation = new SystemConfigurationSourceImplementation(false); DummySection dummySection1 = implementation.GetSection(localSection) as DummySection; DummySection dummySection2 = implementation.GetSection(externalSection) as DummySection; Assert.IsNotNull(dummySection1); Assert.IsNotNull(dummySection2); Assert.AreEqual(2, implementation.WatchedConfigSources.Count); Assert.IsTrue(implementation.WatchedConfigSources.Contains(localSectionSource)); Assert.IsTrue(implementation.WatchedConfigSources.Contains(externalSectionSource)); Assert.AreEqual(2, implementation.WatchedSections.Count); Assert.IsTrue(implementation.WatchedSections.Contains(localSection)); Assert.IsTrue(implementation.WatchedSections.Contains(externalSection)); System.Configuration.Configuration rwConfiguration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); rwConfiguration.Sections.Remove(externalSection); rwConfiguration.Save(); implementation.ConfigSourceChanged(localSectionSource); Assert.AreEqual(2, implementation.WatchedConfigSources.Count); Assert.IsTrue(implementation.WatchedConfigSources.Contains(localSectionSource)); Assert.IsTrue(implementation.WatchedConfigSources.Contains(SystemConfigurationSourceImplementation.NullConfigSource)); Assert.AreEqual(2, implementation.WatchedSections.Count); Assert.IsTrue(implementation.WatchedSections.Contains(localSection)); Assert.IsTrue(implementation.WatchedSections.Contains(externalSection)); Assert.AreEqual(1, implementation.ConfigSourceWatcherMappings[string.Empty].WatchedSections.Count); Assert.IsTrue(implementation.ConfigSourceWatcherMappings[string.Empty].WatchedSections.Contains(localSection)); Assert.AreEqual(1, implementation.ConfigSourceWatcherMappings[SystemConfigurationSourceImplementation.NullConfigSource].WatchedSections.Count); Assert.IsTrue(implementation.ConfigSourceWatcherMappings[SystemConfigurationSourceImplementation.NullConfigSource].WatchedSections.Contains(externalSection)); }
public void RegisteredObjectForNonRequestedSectionIsNotNotified() { SystemConfigurationSourceImplementation implementation = new SystemConfigurationSourceImplementation(false); implementation.AddSectionChangeHandler(localSection, new ConfigurationChangedEventHandler(OnConfigurationChanged)); implementation.ConfigSourceChanged(localSectionSource); Assert.IsFalse(updatedSectionsTally.ContainsKey(localSection)); }
public void RequestForNonexistentSectionCreatesNoWatcher() { SystemConfigurationSourceImplementation implementation = new SystemConfigurationSourceImplementation(false); object section = implementation.GetSection(nonExistingSection); Assert.IsNull(section); Assert.AreEqual(0, implementation.WatchedConfigSources.Count); Assert.AreEqual(0, implementation.WatchedSections.Count); }
public void RegisteredObjectForExternalFileIsNotifiedOfSectionChangesForAppConfigIfConfigSourceForExternalSectionNotChanged() { SystemConfigurationSourceImplementation implementation = new SystemConfigurationSourceImplementation(false); implementation.GetSection(externalSection); implementation.AddSectionChangeHandler(externalSection, new ConfigurationChangedEventHandler(OnConfigurationChanged)); implementation.ConfigSourceChanged(localSectionSource); Assert.IsFalse(updatedSectionsTally.ContainsKey(externalSection)); }
public void RegisteredObjectIsNotifiedOfSectionChangesForExternalFile() { SystemConfigurationSourceImplementation implementation = new SystemConfigurationSourceImplementation(false); implementation.GetSection(externalSection); implementation.AddSectionChangeHandler(externalSection, new ConfigurationChangedEventHandler(OnConfigurationChanged)); implementation.ExternalConfigSourceChanged(externalSectionSource); Assert.AreEqual(1, updatedSectionsTally[externalSection]); }
public void AllRegisteredObjectsAreNotifiedOfSectionChangesForAppConfig() { SystemConfigurationSourceImplementation implementation = new SystemConfigurationSourceImplementation(false); implementation.GetSection(localSection); implementation.AddSectionChangeHandler(localSection, new ConfigurationChangedEventHandler(OnConfigurationChanged)); implementation.AddSectionChangeHandler(localSection, new ConfigurationChangedEventHandler(OnConfigurationChanged)); implementation.AddSectionChangeHandler(localSection, new ConfigurationChangedEventHandler(OnConfigurationChanged)); implementation.ConfigSourceChanged(localSectionSource); Assert.AreEqual(3, updatedSectionsTally[localSection]); }
public void FirstRequestForSectionInExternalFileCreatesWatchersForExternalFileAndAppConfig() { SystemConfigurationSourceImplementation implementation = new SystemConfigurationSourceImplementation(false); object section = implementation.GetSection(externalSection); Assert.IsNotNull(section); Assert.AreEqual(2, implementation.WatchedConfigSources.Count); Assert.IsTrue(implementation.WatchedConfigSources.Contains(localSectionSource)); Assert.IsTrue(implementation.WatchedConfigSources.Contains(externalSectionSource)); Assert.AreEqual(1, implementation.WatchedSections.Count); Assert.IsTrue(implementation.WatchedSections.Contains(externalSection)); }
public void SecondRequestForSameSectionInAppConfigDoesNotCreateSecondWatcherForAppConfig() { SystemConfigurationSourceImplementation implementation = new SystemConfigurationSourceImplementation(false); object section1 = implementation.GetSection(localSection); object section2 = implementation.GetSection(localSection); Assert.IsNotNull(section1); Assert.IsNotNull(section2); Assert.AreEqual(1, implementation.WatchedConfigSources.Count); Assert.IsTrue(implementation.WatchedConfigSources.Contains(localSectionSource)); Assert.AreEqual(1, implementation.WatchedSections.Count); Assert.IsTrue(implementation.WatchedSections.Contains(localSection)); }
public void RequestsForAppConfigAndExternalFileCreatesWatchersForBoth() { SystemConfigurationSourceImplementation implementation = new SystemConfigurationSourceImplementation(false); object section1 = implementation.GetSection(localSection); object section2 = implementation.GetSection(externalSection); Assert.IsNotNull(section1); Assert.IsNotNull(section2); Assert.AreEqual(2, implementation.WatchedConfigSources.Count); Assert.IsTrue(implementation.WatchedConfigSources.Contains(localSectionSource)); Assert.IsTrue(implementation.WatchedConfigSources.Contains(externalSectionSource)); Assert.AreEqual(2, implementation.WatchedSections.Count); Assert.IsTrue(implementation.WatchedSections.Contains(localSection)); Assert.IsTrue(implementation.WatchedSections.Contains(externalSection)); }
public void FirstRequestForSectionInAppConfigCreatesWatcherForAppConfig() { SystemConfigurationSourceImplementation implementation = new SystemConfigurationSourceImplementation(true); object section = implementation.GetSection(localSection); Assert.IsNotNull(section); Assert.AreEqual(1, implementation.WatchedConfigSources.Count); Assert.IsTrue(implementation.WatchedConfigSources.Contains(localSectionSource)); Assert.AreEqual(1, implementation.WatchedSections.Count); Assert.IsTrue(implementation.WatchedSections.Contains(localSection)); Assert.IsNotNull(implementation.ConfigSourceWatcherMappings[localSectionSource].Watcher); Assert.AreEqual(implementation.ConfigSourceWatcherMappings[localSectionSource].Watcher.GetType(), typeof(ConfigurationChangeFileWatcher)); implementation.Dispose(); }
public void RemovedSectionGetsNotificationOnRemovalAndDoesNotGetFurtherNotifications() { ConfigurationChangeWatcher.SetDefaultPollDelayInMilliseconds(100); SystemConfigurationSourceImplementation implementation = new SystemConfigurationSourceImplementation(false); object section1 = implementation.GetSection(localSection); Assert.IsNotNull(section1); object section2 = implementation.GetSection(localSection2); Assert.IsNotNull(section2); implementation.AddSectionChangeHandler(localSection, new ConfigurationChangedEventHandler(OnConfigurationChanged)); implementation.AddSectionChangeHandler(localSection2, new ConfigurationChangedEventHandler(OnConfigurationChanged)); // a change in system config notifies both sections System.Configuration.Configuration rwConfiguration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); rwConfiguration.Save(ConfigurationSaveMode.Minimal, true); implementation.ConfigSourceChanged(localSectionSource); Assert.AreEqual(1, updatedSectionsTally[localSection]); Assert.AreEqual(1, updatedSectionsTally[localSection2]); // removal of the section notifies both sections rwConfiguration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); rwConfiguration.Sections.Remove(localSection2); rwConfiguration.Save(ConfigurationSaveMode.Minimal, true); implementation.ConfigSourceChanged(localSectionSource); Assert.AreEqual(2, updatedSectionsTally[localSection]); Assert.AreEqual(2, updatedSectionsTally[localSection2]); // further updates only notify the remaining section rwConfiguration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); rwConfiguration.Save(ConfigurationSaveMode.Minimal, true); implementation.ConfigSourceChanged(localSectionSource); Assert.AreEqual(3, updatedSectionsTally[localSection]); Assert.AreEqual(2, updatedSectionsTally[localSection2]); }
public void CanAddAndRemoveHandlers() { SystemConfigurationSourceImplementation implementation = new SystemConfigurationSourceImplementation(false); object section = implementation.GetSection(externalSection); Assert.IsNotNull(section); implementation.AddSectionChangeHandler(externalSection, new ConfigurationChangedEventHandler(OnConfigurationChanged)); implementation.AddSectionChangeHandler(externalSection, new ConfigurationChangedEventHandler(OnConfigurationChanged)); implementation.ExternalConfigSourceChanged(externalSectionSource); Assert.AreEqual(2, updatedSectionsTally[externalSection]); implementation.RemoveSectionChangeHandler(externalSection, new ConfigurationChangedEventHandler(OnConfigurationChanged)); implementation.ExternalConfigSourceChanged(externalSectionSource); Assert.AreEqual(3, updatedSectionsTally[externalSection]); implementation.RemoveSectionChangeHandler(externalSection, new ConfigurationChangedEventHandler(OnConfigurationChanged)); implementation.ExternalConfigSourceChanged(externalSectionSource); Assert.AreEqual(3, updatedSectionsTally[externalSection]); }