internal static void WriteSharedValuesToConfig(Type type, SettingValue settingValue) { var configuration = SystemConfigurationHelper.GetExeConfiguration(); var values = CreateSettingsValues(type, MigrationScope.Shared, settingValue); SystemConfigurationHelper.PutSettingsValues(configuration, _settingsClass, values); }
public void TestReadWriteValues_Xml() { Type settingsClass = typeof(LocalXmlSettings); SystemConfigurationHelper.RemoveSettingsValues(SystemConfigurationHelper.GetExeConfiguration(), settingsClass); try { var values = SystemConfigurationHelper.GetSettingsValues(GetExeConfiguration(), settingsClass); Assert.AreEqual(0, values.Count); values = new Dictionary <string, string>(); values[LocalXmlSettings.PropertyUser] = LocalXmlSettings.DefaultValueUser; values[LocalXmlSettings.PropertyApp] = LocalXmlSettings.DefaultValueApp; SystemConfigurationHelper.PutSettingsValues(SystemConfigurationHelper.GetExeConfiguration(), settingsClass, values); values = SystemConfigurationHelper.GetSettingsValues(GetExeConfiguration(), settingsClass); Assert.AreEqual(1, values.Count); LocalXmlSettings settings = (LocalXmlSettings)ApplicationSettingsHelper.GetSettingsClassInstance(settingsClass); Assert.IsNull(ApplicationSettingsExtensions.GetSharedPropertyValue(settings, LocalXmlSettings.PropertyUser)); XmlDocument defaultDoc = new XmlDocument(); defaultDoc.LoadXml(LocalXmlSettings.DefaultValueApp); Assert.AreEqual(defaultDoc.DocumentElement.OuterXml, settings.App.DocumentElement.OuterXml); } finally { SystemConfigurationHelper.RemoveSettingsValues(SystemConfigurationHelper.GetExeConfiguration(), settingsClass); } }
public void TestWriteEmptyString_Xml() { Type settingsClass = typeof(LocalXmlSettings); SystemConfigurationHelper.RemoveSettingsValues(SystemConfigurationHelper.GetExeConfiguration(), settingsClass); try { var values = SystemConfigurationHelper.GetSettingsValues(GetExeConfiguration(), settingsClass); Assert.AreEqual(0, values.Count); values = new Dictionary <string, string>(); values[LocalXmlSettings.PropertyApp] = ""; SystemConfigurationHelper.PutSettingsValues(SystemConfigurationHelper.GetExeConfiguration(), settingsClass, values); values = SystemConfigurationHelper.GetSettingsValues(GetExeConfiguration(), settingsClass); Assert.AreEqual(1, values.Count); Assert.AreEqual("", values[LocalXmlSettings.PropertyApp]); //For xml values, empty string means "default". LocalXmlSettings settings = (LocalXmlSettings)ApplicationSettingsHelper.GetSettingsClassInstance(settingsClass); XmlDocument defaultDoc = new XmlDocument(); defaultDoc.LoadXml(LocalXmlSettings.DefaultValueApp); Assert.AreEqual(defaultDoc.DocumentElement.OuterXml, settings.App.DocumentElement.OuterXml); } finally { SystemConfigurationHelper.RemoveSettingsValues(SystemConfigurationHelper.GetExeConfiguration(), settingsClass); } }
public void TestRepeatedWritesDifferentProperties() { RemoveSettings(); var configuration = SystemConfigurationHelper.GetExeConfiguration(); var expectedValue1 = CreateSettingValue(LocalMixedScopeSettings.PropertyApp1, SettingValue.Current); var expectedValue2 = CreateSettingValue(LocalMixedScopeSettings.PropertyApp2, SettingValue.Current); var values = new Dictionary <string, string>(); values[LocalMixedScopeSettings.PropertyApp1] = expectedValue1; SystemConfigurationHelper.PutSettingsValues(configuration, _settingsClass, values); values = SystemConfigurationHelper.GetSettingsValues(configuration, _settingsClass); Assert.AreEqual(1, values.Count); Assert.AreEqual(expectedValue1, values[LocalMixedScopeSettings.PropertyApp1]); values.Clear(); values[LocalMixedScopeSettings.PropertyApp2] = expectedValue2; SystemConfigurationHelper.PutSettingsValues(configuration, _settingsClass, values); values = SystemConfigurationHelper.GetSettingsValues(configuration, _settingsClass); Assert.AreEqual(2, values.Count); Assert.AreEqual(expectedValue1, values[LocalMixedScopeSettings.PropertyApp1]); Assert.AreEqual(expectedValue2, values[LocalMixedScopeSettings.PropertyApp2]); }
public void TestWriteNull_String() { RemoveSettings(); var configuration = SystemConfigurationHelper.GetExeConfiguration(); var values = new Dictionary <string, string>(); values[LocalMixedScopeSettings.PropertyApp1] = "Test1"; values[LocalMixedScopeSettings.PropertyApp2] = "Test2"; SystemConfigurationHelper.PutSettingsValues(configuration, _settingsClass, values); values = SystemConfigurationHelper.GetSettingsValues(GetExeConfiguration(), _settingsClass); Assert.AreEqual(2, values.Count); Assert.AreEqual("Test1", values[LocalMixedScopeSettings.PropertyApp1]); Assert.AreEqual("Test2", values[LocalMixedScopeSettings.PropertyApp2]); values = new Dictionary <string, string>(); values[LocalMixedScopeSettings.PropertyApp1] = null; values[LocalMixedScopeSettings.PropertyApp2] = null; //writing null essentially means to reset it to the default, which is equivalent to removing it. SystemConfigurationHelper.PutSettingsValues(configuration, _settingsClass, values); values = SystemConfigurationHelper.GetSettingsValues(GetExeConfiguration(), _settingsClass); Assert.AreEqual(0, values.Count); var settings = (LocalMixedScopeSettings)ApplicationSettingsHelper.GetSettingsClassInstance(_settingsClass); Assert.AreEqual(LocalMixedScopeSettings.PropertyApp1, settings.App1); Assert.AreEqual(LocalMixedScopeSettings.PropertyApp2, settings.App2); }
public void TestWriteEmptyString_String() { RemoveSettings(); var configuration = SystemConfigurationHelper.GetExeConfiguration(); var values = new Dictionary <string, string>(); values[LocalMixedScopeSettings.PropertyApp1] = "Test1"; values[LocalMixedScopeSettings.PropertyApp2] = "Test2"; SystemConfigurationHelper.PutSettingsValues(configuration, _settingsClass, values); values = SystemConfigurationHelper.GetSettingsValues(GetExeConfiguration(), _settingsClass); Assert.AreEqual(2, values.Count); Assert.AreEqual("Test1", values[LocalMixedScopeSettings.PropertyApp1]); Assert.AreEqual("Test2", values[LocalMixedScopeSettings.PropertyApp2]); values = new Dictionary <string, string>(); values[LocalMixedScopeSettings.PropertyApp1] = ""; values[LocalMixedScopeSettings.PropertyApp2] = ""; SystemConfigurationHelper.PutSettingsValues(configuration, _settingsClass, values); values = SystemConfigurationHelper.GetSettingsValues(GetExeConfiguration(), _settingsClass); Assert.AreEqual(2, values.Count); Assert.AreEqual("", values[LocalMixedScopeSettings.PropertyApp1]); Assert.AreEqual("", values[LocalMixedScopeSettings.PropertyApp2]); //For string values, empty string means empty string. var settings = (LocalMixedScopeSettings)ApplicationSettingsHelper.GetSettingsClassInstance(_settingsClass); Assert.AreEqual("", settings.App1); Assert.AreEqual("", settings.App2); }
public void TestLocalSharedSettingsMigration() { Type settingsClass = typeof(LocalMixedScopeSettings); var configuration = SystemConfigurationHelper.GetExeConfiguration(); var values = CreateSettingsValues(settingsClass, MigrationScope.Shared, SettingValue.Current); SystemConfigurationHelper.PutSettingsValues(configuration, settingsClass, values); string directory = Path.GetDirectoryName(configuration.FilePath); string previousExeFilename = String.Format("{0}{1}Previous.exe.config", directory, Path.DirectorySeparatorChar); try { TestConfigResourceToFile(previousExeFilename); ValidateLocalMixedScopeSettingsValuesInConfig(configuration, SettingValue.Current); SettingsMigrator.MigrateSharedSettings(settingsClass, previousExeFilename); configuration = SystemConfigurationHelper.GetExeConfiguration(); ValidateLocalMixedScopeSettingsValuesInConfig(configuration, SettingValue.Previous); } finally { File.Delete(previousExeFilename); SystemConfigurationHelper.RemoveSettingsValues(configuration, settingsClass); } }
/// <summary> /// Stores the settings values (both application and user scoped) for a given settings class. Only the shared profile /// is supported (application settings + default user settings). /// </summary> /// <param name="group">the settings class for which to store the values</param> /// <param name="user">must be null or ""</param> /// <param name="instanceKey">must be null or ""</param> /// <param name="dirtyValues">contains the values to be stored</param> /// <exception cref="NotSupportedException">will be thrown if the user or instance key is specified</exception> public void PutSettingsValues(SettingsGroupDescriptor group, string user, string instanceKey, Dictionary <string, string> dirtyValues) { CheckUser(user); CheckInstanceKey(instanceKey); Type type = Type.GetType(group.AssemblyQualifiedTypeName, true); SystemConfigurationHelper.PutSettingsValues(_configuration, type, dirtyValues); }
public void TestMigrateXmlSettings() { Type settingsClass = typeof(LocalXmlSettings); var configuration = SystemConfigurationHelper.GetExeConfiguration(); var settings = (LocalXmlSettings)ApplicationSettingsHelper.GetSettingsClassInstance(settingsClass); XmlDocument document = new XmlDocument(); document.LoadXml((string)settings.Properties[LocalXmlSettings.PropertyApp].DefaultValue); var node = document.SelectSingleNode("//test"); node.InnerText = "CurrentApp"; Dictionary <string, string> values = new Dictionary <string, string>(); values[LocalXmlSettings.PropertyApp] = document.InnerXml; SystemConfigurationHelper.PutSettingsValues(configuration, settingsClass, values); string directory = Path.GetDirectoryName(configuration.FilePath); string previousExeFilename = String.Format("{0}{1}Previous.exe.config", directory, Path.DirectorySeparatorChar); try { TestConfigResourceToFile(previousExeFilename); SettingsMigrator.MigrateSharedSettings(settingsClass, previousExeFilename); configuration = SystemConfigurationHelper.GetExeConfiguration(); settings = (LocalXmlSettings)ApplicationSettingsHelper.GetSettingsClassInstance(settingsClass); settings.Reload(); document = (XmlDocument)ApplicationSettingsExtensions.GetSharedPropertyValue(settings, LocalXmlSettings.PropertyApp); Assert.AreEqual("PreviousApp", document.SelectSingleNode("//test").InnerXml); document = settings.App; Assert.AreEqual("PreviousApp", document.SelectSingleNode("//test").InnerXml); } finally { File.Delete(previousExeFilename); SystemConfigurationHelper.RemoveSettingsValues(configuration, settingsClass); } }