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);
        }
Пример #7
0
        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);
            }
        }
Пример #8
0
        /// <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);
        }
Пример #9
0
        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);
            }
        }