예제 #1
0
        /// <summary>
        ///     Initializes a new instance of the <see cref="EngineDescription" /> class.
        /// </summary>
        /// <param name="name">The engine's name.</param>
        /// <param name="version">The engine's version.</param>
        /// <param name="settings">The engine's settings.</param>
        public EngineDescription(string name, string version, SettingsGroup settings)
        {
            Name = name;
            Version = version;
            Settings = settings;

            LoadSettings();
        }
예제 #2
0
        /// <summary>
        ///     Initializes a new instance of the <see cref="EngineDescription" /> class.
        /// </summary>
        /// <param name="name">The engine's name.</param>
        /// <param name="levlSize">The size of the levl chunk.</param>
        /// <param name="version">The engine's version.</param>
        /// <param name="settings">The engine's settings.</param>
        public EngineDescription(string name, int levlSize, int version, SettingsGroup settings)
        {
            Name = name;
            LevlSize = levlSize;
            Version = version;
            Settings = settings;

            LoadSettings();
        }
예제 #3
0
 public void BadSettingPUT212()
 {
     using (PexDisposableContext disposables = PexDisposableContext.Create())
     {
         SettingsGroup           settingsGroup;
         RegistrySettingsStorage s0 = new RegistrySettingsStorage(Registry.DynData);
         settingsGroup = new SettingsGroup((ISettingsStorage)s0);
         disposables.Add((IDisposable)settingsGroup);
         this.BadSettingPUT2(settingsGroup, "\\\0.", "", false);
         disposables.Dispose();
     }
 }
예제 #4
0
 public void TopLevelSettingsPUT101()
 {
     using (PexDisposableContext disposables = PexDisposableContext.Create())
     {
         SettingsGroup settingsGroup;
         settingsGroup = new SettingsGroup((ISettingsStorage)null);
         disposables.Add((IDisposable)settingsGroup);
         object s0 = new object();
         this.TopLevelSettingsPUT1(settingsGroup, "", s0);
         disposables.Dispose();
     }
 }
예제 #5
0
        public void SetPropertyPersistence(string name, bool doPersist, SettingsGroup settingsGroup)
        {
            CheckDisposed();

            string key;

            GetBestSettingsGroupAndKey(name, settingsGroup, out key);
            // Will properly throw if not in Dictionary.
            var property = m_properties[key];

            property.doPersist = doPersist;
        }
예제 #6
0
        /// <summary>
        /// A sinmple consturctor that initializes the object with the given values.
        /// </summary>
        /// <param name="p_gsgSettings">The settings group whose settings will be editable with this view.</param>
        public GeneralSettingsPage(GeneralSettingsGroup p_gsgSettings)
            : this()
        {
            SettingsGroup            = p_gsgSettings;
            rdcDirectories.ViewModel = p_gsgSettings.RequiredDirectoriesVM;

            lblWorkingDirectory.Text = String.Format(lblWorkingDirectory.Text, p_gsgSettings.Title);

            BindingHelper.CreateFullBinding(tbxWorkingDirectory, () => tbxWorkingDirectory.Text, p_gsgSettings, () => p_gsgSettings.InstallationPath);
            BindingHelper.CreateFullBinding(tbxCommand, () => tbxCommand.Text, p_gsgSettings, () => p_gsgSettings.CustomLaunchCommand);
            BindingHelper.CreateFullBinding(tbxCommandArguments, () => tbxCommandArguments.Text, p_gsgSettings, () => p_gsgSettings.CustomLaunchCommandArguments);
        }
예제 #7
0
 /// <summary>
 /// Test whether a property exists and gives its 'best' group and its value.
 /// (ie. local first and then global).
 /// </summary>
 /// <param name="name"></param>
 /// <param name="propertyValue">null, if it didn't find the property.</param>
 /// <param name="bestGuessGroup">Undecided, if none was found.</param>
 /// <returns></returns>
 public bool PropertyExists(string name, out object propertyValue, out SettingsGroup bestGuessGroup)
 {
     bestGuessGroup = SettingsGroup.Undecided;
     if (PropertyExists(name, out propertyValue, SettingsGroup.LocalSettings))
     {
         bestGuessGroup = SettingsGroup.LocalSettings;
     }
     else if (PropertyExists(name, out propertyValue, SettingsGroup.GlobalSettings))
     {
         bestGuessGroup = SettingsGroup.GlobalSettings;
     }
     return(bestGuessGroup != SettingsGroup.Undecided);
 }
예제 #8
0
        public void BadSettingPUT1([PexAssumeUnderTest] SettingsGroup testGroup1, [PexAssumeUnderTest] String settingName, [PexAssumeNotNull] Object settingValue, int defSettingValue)
        {
            PexAssume.IsTrue(settingName != null);
            PexAssume.IsTrue(settingValue != null);
            //PexAssume.IsTrue(defSettingValue != null);
            PexAssume.IsTrue(settingValue is string);
            String str_sv = settingValue as string;

            PexAssume.IsTrue(Regex.IsMatch(str_sv, "@([a-z])*"));

            testGroup1.SaveSetting(settingName, settingValue);
            PexAssert.AreEqual(defSettingValue, testGroup1.GetSetting(settingName, defSettingValue));
        }
예제 #9
0
 public void SubGroupSettingsPUT103()
 {
     using (PexDisposableContext disposables = PexDisposableContext.Create())
     {
         SettingsGroup           settingsGroup;
         RegistrySettingsStorage s0 = new RegistrySettingsStorage(Registry.DynData);
         settingsGroup = new SettingsGroup((ISettingsStorage)s0);
         disposables.Add((IDisposable)settingsGroup);
         object s1 = new object();
         this.SubGroupSettingsPUT1(settingsGroup, "", s1);
         disposables.Dispose();
     }
 }
예제 #10
0
 public void TopLevelSettingsPUT205()
 {
     using (PexDisposableContext disposables = PexDisposableContext.Create())
     {
         SettingsGroup           settingsGroup;
         RegistrySettingsStorage s0 = new RegistrySettingsStorage((RegistryKey)null);
         settingsGroup = new SettingsGroup((ISettingsStorage)s0);
         disposables.Add((IDisposable)settingsGroup);
         object s1 = new object();
         this.TopLevelSettingsPUT2(settingsGroup, ".", s1);
         disposables.Dispose();
     }
 }
예제 #11
0
        public void SubGroupSettingsPUT1([PexAssumeUnderTest] SettingsGroup testGroup1, [PexAssumeUnderTest]
                                         String settingName, [PexAssumeNotNull] Object settingValue)
        {
            PexAssume.IsTrue(settingName != null);
            PexAssume.IsTrue(settingValue != null);

            SettingsGroup subGroup = new SettingsGroup(testGroup1.Storage);

            PexAssert.IsNotNull(subGroup);
            PexAssert.IsNotNull(subGroup.Storage);

            subGroup.SaveSetting(settingName, settingValue);
            PexAssert.AreEqual(settingValue, subGroup.GetSetting(settingName));
        }
예제 #12
0
 public void BadSettingPUT207()
 {
     using (PexDisposableContext disposables = PexDisposableContext.Create())
     {
         SettingsGroup         settingsGroup;
         MemorySettingsStorage memorySettingsStorage = new MemorySettingsStorage();
         settingsGroup = new SettingsGroup((ISettingsStorage)memorySettingsStorage);
         disposables.Add((IDisposable)settingsGroup);
         this.BadSettingPUT2(settingsGroup, "", "", false);
         disposables.Dispose();
         PexAssert.IsNotNull((object)settingsGroup);
         PexAssert.IsNull(settingsGroup.Storage);
     }
 }
예제 #13
0
 public void BadSettingPUT217()
 {
     using (PexDisposableContext disposables = PexDisposableContext.Create())
     {
         XmlSettingsStorage xmlSettingsStorage;
         SettingsGroup      settingsGroup;
         xmlSettingsStorage = new XmlSettingsStorage((string)null);
         disposables.Add((IDisposable)xmlSettingsStorage);
         settingsGroup = new SettingsGroup((ISettingsStorage)xmlSettingsStorage);
         disposables.Add((IDisposable)settingsGroup);
         this.BadSettingPUT2(settingsGroup, "", "True\0", false);
         disposables.Dispose();
     }
 }
예제 #14
0
 public void SubGroupSettingsPUT104()
 {
     using (PexDisposableContext disposables = PexDisposableContext.Create())
     {
         SettingsGroup         settingsGroup;
         MemorySettingsStorage memorySettingsStorage = new MemorySettingsStorage();
         settingsGroup = new SettingsGroup((ISettingsStorage)memorySettingsStorage);
         disposables.Add((IDisposable)settingsGroup);
         object s0 = new object();
         this.SubGroupSettingsPUT1(settingsGroup, "", s0);
         disposables.Dispose();
         PexAssert.IsNotNull((object)settingsGroup);
         PexAssert.IsNull(settingsGroup.Storage);
     }
 }
예제 #15
0
 public void BadSettingPUT215()
 {
     using (PexDisposableContext disposables = PexDisposableContext.Create())
     {
         XmlSettingsStorage xmlSettingsStorage;
         SettingsGroup      settingsGroup;
         xmlSettingsStorage = new XmlSettingsStorage((string)null);
         disposables.Add((IDisposable)xmlSettingsStorage);
         settingsGroup = new SettingsGroup((ISettingsStorage)xmlSettingsStorage);
         disposables.Add((IDisposable)settingsGroup);
         this.BadSettingPUT2
             (settingsGroup, "", "\0", PexSafeHelpers.ByteToBoolean((byte)128));
         disposables.Dispose();
     }
 }
예제 #16
0
        public void DefaultSettings()
        {
            RegistrySettingsStorage storage   = new RegistrySettingsStorage("Test", testKey);
            SettingsGroup           testGroup = new SettingsGroup("TestGroup", storage);

            Assert.IsNull(testGroup.LoadSetting("X"));
            Assert.IsNull(testGroup.LoadSetting("NAME"));

            Assert.AreEqual(5, testGroup.LoadSetting("X", 5));
            Assert.AreEqual(6, testGroup.LoadIntSetting("X", 6));
            Assert.AreEqual("7", testGroup.LoadStringSetting("X", "7"));

            Assert.AreEqual("Charlie", testGroup.LoadSetting("NAME", "Charlie"));
            Assert.AreEqual("Fred", testGroup.LoadStringSetting("NAME", "Fred"));
        }
예제 #17
0
        public void BadSettingPUT5([PexAssumeUnderTest] String settingName, [PexAssumeUnderTest] Object settingValue, [PexAssumeUnderTest] Object defSettingValue)
        {
            PexAssume.IsTrue(settingName != null);
            PexAssume.IsTrue(settingValue != null);
            PexAssume.IsTrue(defSettingValue != null && defSettingValue is String);
            PexAssume.IsTrue(settingValue is bool);

            SettingsGroup   testGroup1 = new SettingsGroup(new MemorySettingsStorage());
            DelegateHandler dhObj1     = new DelegateHandler(testGroup1);

            testGroup1.SaveSetting(settingName, settingValue);
            String defSettingValue_typecast = defSettingValue as String;

            PexAssert.AreEqual(settingValue.ToString(), testGroup1.GetSetting(settingName, defSettingValue_typecast));
        }
예제 #18
0
 public void BadSettingPUT216()
 {
     using (PexDisposableContext disposables = PexDisposableContext.Create())
     {
         XmlSettingsStorage xmlSettingsStorage;
         SettingsGroup      settingsGroup;
         xmlSettingsStorage = new XmlSettingsStorage((string)null);
         disposables.Add((IDisposable)xmlSettingsStorage);
         settingsGroup = new SettingsGroup((ISettingsStorage)xmlSettingsStorage);
         disposables.Add((IDisposable)settingsGroup);
         this.BadSettingPUT2(settingsGroup, "", "False\0", false);
         disposables.Dispose();
         PexAssert.IsNotNull((object)settingsGroup);
         PexAssert.IsNull(settingsGroup.Storage);
     }
 }
예제 #19
0
        /// <summary>
        /// Gets string value of property for the specified settingsGroup
        /// and creates the property with the default value if it doesn't exist yet.
        /// </summary>
        /// <param name="name"></param>
        /// <param name="defaultValue"></param>
        /// <param name="settingsGroup"></param>
        /// <returns></returns>
        public int GetIntProperty(string name, int defaultValue, SettingsGroup settingsGroup)
        {
            SettingsGroup firstSettings;

            settingsGroup = TestForBestSettings(name, settingsGroup, out firstSettings);
            switch (settingsGroup)
            {
            case SettingsGroup.LocalSettings:
                return(GetIntPropertyInternal(FormatPropertyNameForLocalSettings(name), defaultValue));

            case SettingsGroup.GlobalSettings:
            case SettingsGroup.Undecided:
            default:
                return(GetIntPropertyInternal(name, defaultValue));
            }
        }
예제 #20
0
        /// <summary>
        ///     Loads an engine database from an XML container.
        /// </summary>
        /// <param name="container">The container to read engine elements from.</param>
        /// <returns>The built engine database.</returns>
        public static EngineDatabase LoadDatabase(XContainer container)
        {
            XMLSettingsGroupLoader loader = CreateSettingsGroupLoader();
            var result = new EngineDatabase();

            foreach (XElement elem in container.Elements("engine"))
            {
                string        name     = XMLUtil.GetStringAttribute(elem, "name");
                int           levlSize = (int)XMLUtil.GetNumericAttribute(elem, "levlSize");
                int           version  = (int)XMLUtil.GetNumericAttribute(elem, "version");
                SettingsGroup settings = loader.LoadSettingsGroup(elem);
                var           desc     = new EngineDescription(name, levlSize, version, settings);
                result.RegisterEngine(desc);
            }
            return(result);
        }
예제 #21
0
 /// <summary>
 ///     Loads a settings group from an XML container.
 /// </summary>
 /// <param name="container">The container to read settings from.</param>
 /// <returns>The loaded settings group.</returns>
 public SettingsGroup LoadSettingsGroup(XContainer container)
 {
     var result = new SettingsGroup();
     foreach (XElement elem in container.Elements())
     {
         if (elem.HasElements)
         {
             result.SetGroup(elem.Name.LocalName, LoadSettingsGroup(elem));
         }
         else
         {
             result.SetSetting(elem.Name.LocalName, LoadSetting(elem));
         }
     }
     return result;
 }
예제 #22
0
        public void SetPropertyPersistence(string name, bool doPersist, SettingsGroup settingsGroup)
        {
            SettingsGroup firstSettings;

            settingsGroup = TestForBestSettings(name, settingsGroup, out firstSettings);
            switch (settingsGroup)
            {
            case SettingsGroup.LocalSettings:
                SetPropertyPersistenceInternal(FormatPropertyNameForLocalSettings(name), doPersist);
                break;

            case SettingsGroup.GlobalSettings:
            default:
                SetPropertyPersistenceInternal(name, doPersist);
                break;
            }
        }
예제 #23
0
 public void SubGroupSettingsPUT105()
 {
     using (PexDisposableContext disposables = PexDisposableContext.Create())
     {
         XmlSettingsStorage xmlSettingsStorage;
         SettingsGroup      settingsGroup;
         xmlSettingsStorage = new XmlSettingsStorage((string)null);
         disposables.Add((IDisposable)xmlSettingsStorage);
         settingsGroup = new SettingsGroup((ISettingsStorage)xmlSettingsStorage);
         disposables.Add((IDisposable)settingsGroup);
         object s0 = new object();
         this.SubGroupSettingsPUT1(settingsGroup, "", s0);
         disposables.Dispose();
         PexAssert.IsNotNull((object)settingsGroup);
         PexAssert.IsNull(settingsGroup.Storage);
     }
 }
예제 #24
0
        private SettingsGroup CreateNewSettingsGroup()
        {
            SettingsGroup settingsGroup;

            if (string.IsNullOrEmpty(this.ScopeFilter) && this.Scope != ExchangeSettingsScope.Forest)
            {
                settingsGroup = new SettingsGroup(this.GroupName, this.CreateDownlevelScope());
            }
            else
            {
                if (this.IsFieldSet("Scope") && this.Scope != ExchangeSettingsScope.Forest)
                {
                    base.WriteError(new ExchangeSettingsCannotChangeScopeOnScopeFilteredGroupException(this.GroupName), ExchangeErrorCategory.Client, this.DataObject);
                }
                int priority = this.Priority;
                if (!this.IsFieldSet("Priority"))
                {
                    int num = -1;
                    foreach (SettingsGroup settingsGroup2 in this.DataObject.Settings.Values)
                    {
                        if (settingsGroup2.Priority > num)
                        {
                            num = settingsGroup2.Priority;
                        }
                    }
                    if (num == -1)
                    {
                        priority = 100;
                    }
                    else
                    {
                        priority = num + 10;
                    }
                }
                settingsGroup = new SettingsGroup(this.GroupName, this.ScopeFilter, priority);
            }
            if (this.IsFieldSet("ExpirationDate"))
            {
                if (this.ExpirationDate != null && this.ExpirationDate.Value < DateTime.UtcNow)
                {
                    this.WriteWarning(Strings.ExchangeSettingsExpirationDateIsInThePastWarning(this.ExpirationDate.Value.ToString()));
                }
                settingsGroup.ExpirationDate = (this.ExpirationDate ?? DateTime.MinValue);
            }
            return(settingsGroup);
        }
예제 #25
0
        public void SetPropertyDispose(string name, bool doDispose, SettingsGroup settingsGroup)
        {
            SettingsGroup firstSettings;

            settingsGroup = TestForBestSettings(name, settingsGroup, out firstSettings);
            switch (settingsGroup)
            {
            case SettingsGroup.LocalSettings:
                SetPropertyDisposeInternal(FormatPropertyNameForLocalSettings(name), doDispose);
                break;

            case SettingsGroup.GlobalSettings:
            case SettingsGroup.Undecided:
            default:
                SetPropertyDisposeInternal(name, doDispose);
                break;
            }
        }
예제 #26
0
    public void Generate(SettingsGroup group, MenuManager manager)
    {
        if (items.Count > 0)
        {
            for (int i = 0; i < items.Count; i++)
            {
                Destroy(items[i].gameObject);
            }
            items.Clear();
        }

        this.group = group;

        foreach (SettingItem si in group.items)
        {
            AddItem(si, manager);
        }
    }
예제 #27
0
    /// <summary>
    /// Creates SettingsGroup panel for a specified category.
    /// </summary>
    /// <param name="category">Non-group category</param>
    protected CMSUserControl CreatePanelForCategory(SettingsCategoryInfo category)
    {
        if (category == null)
        {
            return(null);
        }

        // Create new Category bar and initialize it
        SettingsGroup group = Page.LoadControl("~/CMSModules/Settings/Controls/SettingsGroup.ascx") as SettingsGroup;

        group.Category         = category;
        group.SiteID           = mSiteId;
        group.ActionPerformed += new CommandEventHandler(group_ActionPerformed);
        group.OnNewKey        += new CommandEventHandler(group_OnNewKey);
        group.OnKeyAction     += new OnActionEventHandler(group_OnKeyAction);

        return(group);
    }
예제 #28
0
        public void BadSettingPUT4([PexAssumeUnderTest] String settingName, [PexAssumeUnderTest] Object settingValue, [PexAssumeUnderTest] Object defSettingValue)
        {
            PexAssume.IsTrue(settingName != null);
            PexAssume.IsTrue(settingValue != null);
            PexAssume.IsTrue(defSettingValue != null);

            SettingsGroup   testGroup1 = new SettingsGroup(new MemorySettingsStorage());
            DelegateHandler dhObj1     = new DelegateHandler(testGroup1);

            if (defSettingValue is object)
            {
                PexAssert.AreEqual(defSettingValue, testGroup1.GetSetting(settingName, defSettingValue));
            }
            if (settingValue is String && defSettingValue is int)
            {
                PexAssert.AreEqual(defSettingValue, testGroup1.GetSetting(settingName, defSettingValue));
            }
        }
예제 #29
0
        public void SubGroupSettings()
        {
            SettingsGroup subGroup = new SettingsGroup( testGroup.Storage );
            Assert.IsNotNull( subGroup );
            Assert.IsNotNull( subGroup.Storage );

            subGroup.SaveSetting( "X", 5 );
            subGroup.SaveSetting( "NAME", "Charlie" );
            Assert.AreEqual( 5, subGroup.GetSetting( "X" ) );
            Assert.AreEqual( "Charlie", subGroup.GetSetting( "NAME" ) );

            subGroup.RemoveSetting( "X" );
            Assert.IsNull( subGroup.GetSetting( "X" ), "X not removed" );
            Assert.AreEqual( "Charlie", subGroup.GetSetting( "NAME" ) );

            subGroup.RemoveSetting( "NAME" );
            Assert.IsNull( subGroup.GetSetting( "NAME" ), "NAME not removed" );
        }
예제 #30
0
        public void SubGroupSettings()
        {
            SettingsGroup subGroup = new SettingsGroup(testGroup.Storage);

            Assert.IsNotNull(subGroup);
            Assert.IsNotNull(subGroup.Storage);

            subGroup.SaveSetting("X", 5);
            subGroup.SaveSetting("NAME", "Charlie");
            Assert.AreEqual(5, subGroup.GetSetting("X"));
            Assert.AreEqual("Charlie", subGroup.GetSetting("NAME"));

            subGroup.RemoveSetting("X");
            Assert.IsNull(subGroup.GetSetting("X"), "X not removed");
            Assert.AreEqual("Charlie", subGroup.GetSetting("NAME"));

            subGroup.RemoveSetting("NAME");
            Assert.IsNull(subGroup.GetSetting("NAME"), "NAME not removed");
        }
예제 #31
0
        /// <summary>
        /// Saves shares in directory specified
        /// </summary>
        /// <param name="dir">Directory where we should save settings to</param>
        public void Save(string dir)
        {
            directory = dir;
            SettingsGroup setting = new SettingsGroup();

            System.Text.StringBuilder sb = new System.Text.StringBuilder();
            foreach (KeyValuePair <string, IShare> item in shares)
            {
                sb.Append(item.Key);
                sb.Append("|");
            }
            if (sb.Length > 0)
            {
                setting.Add(IndexShareNames, new SettingItem(sb.ToString(), null));
            }
            FlowLib.Utils.FileOperations.PathExists(dir);
            SettingsGroup.Save(dir + FileName + ".xml", setting, FileName);
            setting = null;
        }
예제 #32
0
 public void SubGroupSettingsPUT111()
 {
     using (PexDisposableContext disposables = PexDisposableContext.Create())
     {
         MemorySettingsStorage memorySettingsStorage;
         SettingsGroup         settingsGroup;
         string[] ss = new string[1];
         object[] os = new object[1];
         ss[0] = "";
         os[0] = "";
         memorySettingsStorage = MemorySettingsStorageFactory.Create(ss, os);
         disposables.Add((IDisposable)memorySettingsStorage);
         settingsGroup = new SettingsGroup((ISettingsStorage)memorySettingsStorage);
         disposables.Add((IDisposable)settingsGroup);
         this.SubGroupSettingsPUT1(settingsGroup, "", "");
         disposables.Dispose();
         PexAssert.IsNotNull((object)settingsGroup);
         PexAssert.IsNull(settingsGroup.Storage);
     }
 }
예제 #33
0
        public void TypeSafeSettings()
        {
            RegistrySettingsStorage storage   = new RegistrySettingsStorage("Test", testKey);
            SettingsGroup           testGroup = new SettingsGroup("TestGroup", storage);

            testGroup.SaveIntSetting("X", 5);
            testGroup.SaveStringSetting("Y", "17");
            testGroup.SaveStringSetting("NAME", "Charlie");

            Assert.AreEqual(5, testGroup.LoadSetting("X"));
            Assert.AreEqual(5, testGroup.LoadIntSetting("X"));
            Assert.AreEqual("5", testGroup.LoadStringSetting("X"));

            Assert.AreEqual("17", testGroup.LoadSetting("Y"));
            Assert.AreEqual(17, testGroup.LoadIntSetting("Y"));
            Assert.AreEqual("17", testGroup.LoadStringSetting("Y"));

            Assert.AreEqual("Charlie", testGroup.LoadSetting("NAME"));
            Assert.AreEqual("Charlie", testGroup.LoadStringSetting("NAME"));
        }
예제 #34
0
        public void TopLevelSettings()
        {
            RegistrySettingsStorage storage   = new RegistrySettingsStorage("Test", testKey);
            SettingsGroup           testGroup = new SettingsGroup("TestGroup", storage);

            Assert.IsNotNull(testGroup);
            Assert.AreEqual("TestGroup", testGroup.Name);
            Assert.AreEqual(storage, testGroup.Storage);

            testGroup.SaveSetting("X", 5);
            testGroup.SaveSetting("NAME", "Charlie");
            Assert.AreEqual(5, testGroup.LoadSetting("X"));
            Assert.AreEqual("Charlie", testGroup.LoadSetting("NAME"));

            testGroup.RemoveSetting("X");
            Assert.IsNull(testGroup.LoadSetting("X"), "X not removed");
            Assert.AreEqual("Charlie", testGroup.LoadSetting("NAME"));

            testGroup.RemoveSetting("NAME");
            Assert.IsNull(testGroup.LoadSetting("NAME"), "NAME not removed");
        }
예제 #35
0
		/// <summary>
		/// set the property value for the specified settingsGroup (broadcast change by default)
		/// </summary>
		/// <param name="name"></param>
		/// <param name="newValue"></param>
		/// <param name="settingsGroup"></param>
		public void SetProperty(string name, object newValue, SettingsGroup settingsGroup)
		{
			SetProperty(name, newValue, true, settingsGroup);
		}
예제 #36
0
		/// <summary>
		/// Get the value of the property in the specified settingsGroup.
		/// Sets the defaultValue if the property doesn't exist.
		/// </summary>
		/// <param name="name"></param>
		/// <param name="defaultValue"></param>
		/// <param name="settingsGroup"></param>
		/// <returns></returns>
		public object GetValue(string name, object defaultValue, SettingsGroup settingsGroup)
		{
			object result = GetValue(name, settingsGroup);
			if (result == null)
			{
				result = defaultValue;
				SetProperty(name, result, settingsGroup);
			}
			return result;
		}
예제 #37
0
		/// <summary>
		/// Test whether a property exists in the specified group. Gives any value found.
		/// </summary>
		/// <param name="name"></param>
		/// <param name="propertyValue">null, if it didn't find the property.</param>
		/// <param name="settingsGroup"></param>
		/// <returns></returns>
		public bool PropertyExists(string name, out object propertyValue, SettingsGroup settingsGroup)
		{
			propertyValue = GetValue(name, settingsGroup);
			return propertyValue != null;
		}
예제 #38
0
 public void BeforeEachTest()
 {
     MemorySettingsStorage storage = new MemorySettingsStorage();
     testGroup = new SettingsGroup( storage );
 }
예제 #39
0
		public void SetPropertyDispose(string name, bool doDispose, SettingsGroup settingsGroup)
		{
			SettingsGroup firstSettings;
			settingsGroup = TestForBestSettings(name, settingsGroup, out firstSettings);
			switch (settingsGroup)
			{
				case SettingsGroup.LocalSettings:
					SetPropertyDisposeInternal(FormatPropertyNameForLocalSettings(name), doDispose);
					break;
				case SettingsGroup.GlobalSettings:
				case SettingsGroup.Undecided:
				default:
					SetPropertyDisposeInternal(name, doDispose);
					break;
			}
		}
예제 #40
0
 public DelegateHandler(SettingsGroup sgObj)
 {
     SettingsEventHandler sehObj1 = new SettingsEventHandler(MySettingsEventHandler);
     sgObj.Changed += sehObj1;
 }
예제 #41
0
 public void BeforeEachTest()
 {
     settings = new SettingsGroup();
 }
예제 #42
0
        public void BadSettingPUT4([PexAssumeUnderTest]String settingName, [PexAssumeUnderTest]Object settingValue, [PexAssumeUnderTest]Object defSettingValue)
        {
            PexAssume.IsTrue(settingName != null);
            PexAssume.IsTrue(settingValue != null);
            PexAssume.IsTrue(defSettingValue != null);

            SettingsGroup testGroup1 = new SettingsGroup(new MemorySettingsStorage());
            DelegateHandler dhObj1 = new DelegateHandler(testGroup1);
            if (defSettingValue is object)
            {
                PexAssert.AreEqual(defSettingValue, testGroup1.GetSetting(settingName, defSettingValue));
            }
            if (settingValue is String && defSettingValue is int)
            {
                PexAssert.AreEqual(defSettingValue, testGroup1.GetSetting(settingName, defSettingValue));
            }
        }
예제 #43
0
        public void SubGroupSettingsPUT3([PexAssumeUnderTest] SettingsGroup testGroup1, [PexAssumeUnderTest]
            String settingName, [PexAssumeUnderTest]Object settingValue)
        {
            PexAssume.IsTrue(settingName != null);
            PexAssume.IsTrue(settingValue != null);
            DelegateHandler dhObj1 = new DelegateHandler(testGroup1);
            SettingsGroup subGroup = new SettingsGroup(testGroup1.Storage);
            PexAssert.IsNotNull(subGroup);
            PexAssert.IsNotNull(subGroup.Storage);

            //Without delegate
            subGroup.SaveSetting(settingName, settingValue);
            PexAssert.AreEqual(settingValue, subGroup.GetSetting(settingName));
            subGroup.RemoveSetting(settingName);
            PexAssert.IsNull(subGroup.GetSetting(settingName));

            //With delegate
            DelegateHandler dhObj2 = new DelegateHandler(subGroup);
            subGroup.SaveSetting(settingName, settingValue);
            PexAssert.AreEqual(settingValue, subGroup.GetSetting(settingName));
            subGroup.RemoveSetting(settingName);
            PexAssert.IsNull(subGroup.GetSetting(settingName));
        }
예제 #44
0
        public void BadSettingPUT5([PexAssumeUnderTest]String settingName, [PexAssumeUnderTest]Object settingValue, [PexAssumeUnderTest]Object defSettingValue)
        {
            PexAssume.IsTrue(settingName != null);
            PexAssume.IsTrue(settingValue != null);
            PexAssume.IsTrue(defSettingValue != null && defSettingValue is String);
            PexAssume.IsTrue(settingValue is bool);

            SettingsGroup testGroup1 = new SettingsGroup(new MemorySettingsStorage());
            DelegateHandler dhObj1 = new DelegateHandler(testGroup1);
            testGroup1.SaveSetting(settingName, settingValue);
            String defSettingValue_typecast = defSettingValue as String;
            PexAssert.AreEqual(settingValue.ToString(), testGroup1.GetSetting(settingName, defSettingValue_typecast));
        }
예제 #45
0
        private void SaveGroup(XmlWriter xml, FieldInfo groupFi, SettingsGroup groupObj)
        {
            xml.WriteStartElement(groupFi.Name);

            foreach (FieldInfo fi in groupFi.FieldType.GetFields())
            {
                if (!fi.IsPublic) continue;

                xml.WriteStartElement(fi.Name);

                try
                {
                    object value = fi.GetValue(groupObj);
                    if (value != null) SaveItem(xml, fi, value);
                }
                catch (Exception ex)
                {
                    _plugin.Output.WriteLine(OutputStyle.Error, "Exception when getting value for {0}.{1}: {2}", groupFi.Name, fi.Name, ex);
                }

                xml.WriteEndElement();	// fi.Name
            }

            xml.WriteEndElement();	// groupFi.Name
        }
예제 #46
0
        private void LoadItem(XmlElement fieldElement, FieldInfo fi, SettingsGroup groupObj)
        {
            Type type = fi.FieldType;

            if (type.IsValueType)
            {
                string str = fieldElement.InnerText;
                if (str == null) str = "";

                object val = ConvertStringToType(str, fi.FieldType);
                if (val != null) fi.SetValue(groupObj, val);
            }
            else if (type == typeof(string))
            {
                fi.SetValue(groupObj, fieldElement.InnerText);
            }
            else
            {
                _plugin.Output.WriteLine(OutputStyle.Warning, "Unable to determine how to load settings field {0} (type {1})", fi.Name, type.ToString());
            }
        }
예제 #47
0
        private void LoadGroup(XmlElement groupElement, FieldInfo groupFi, SettingsGroup groupObj)
        {
            foreach (XmlNode node in groupElement.ChildNodes)
            {
                if (node.NodeType != XmlNodeType.Element) continue;
                XmlElement fieldElement = (XmlElement)node;

                FieldInfo fi = groupFi.FieldType.GetField(fieldElement.Name);
                if (fi == null)
                {
                    _plugin.Output.WriteLine(OutputStyle.Warning, "Couldn't find a field to match element '{0}' in group '{1}'.", fieldElement.Name, groupFi.Name);
                }
                else
                {
                    LoadItem(fieldElement, fi, groupObj);
                }
            }
        }
예제 #48
0
		/// <summary>
		/// set the property value for the specified settingsGroup, and allow user to not broadcast the change.
		/// </summary>
		/// <param name="name"></param>
		/// <param name="newValue"></param>
		/// <param name="doBroadcastChange"></param>
		/// <param name="settingsGroup"></param>
		public void SetProperty(string name, object newValue, bool doBroadcastChange, SettingsGroup settingsGroup)
		{
			SettingsGroup firstSettings;
			settingsGroup = TestForBestSettings(name, settingsGroup, out firstSettings);
			switch (settingsGroup)
			{
				case SettingsGroup.LocalSettings:
					SetPropertyInternal(FormatPropertyNameForLocalSettings(name), newValue, doBroadcastChange);
					break;
				case SettingsGroup.GlobalSettings:
				default:
					SetPropertyInternal(name, newValue, doBroadcastChange);
					break;
			}
		}
예제 #49
0
		/// <summary>
		/// If the specified settingsGroup is "BestSettings", find the best setting,
		/// otherwise return the specified settingsGroup.
		/// </summary>
		/// <param name="name"></param>
		/// <param name="settingsGroup"></param>
		/// <param name="firstSettings"></param>
		/// <returns></returns>
		private SettingsGroup TestForBestSettings(string name, SettingsGroup settingsGroup, out SettingsGroup firstSettings)
		{
			firstSettings = settingsGroup;
			if (settingsGroup == SettingsGroup.BestSettings)
				settingsGroup = GetBestSettings(name);
			return settingsGroup;
		}
예제 #50
0
		/// <summary>
		/// Gets string value of property for the specified settingsGroup
		/// and creates the property with the default value if it doesn't exist yet.
		/// </summary>
		/// <param name="name"></param>
		/// <param name="defaultValue"></param>
		/// <param name="settingsGroup"></param>
		/// <returns></returns>
		public int GetIntProperty(string name, int defaultValue, SettingsGroup settingsGroup)
		{
			SettingsGroup firstSettings;
			settingsGroup = TestForBestSettings(name, settingsGroup, out firstSettings);
			switch (settingsGroup)
			{
				case SettingsGroup.LocalSettings:
					return GetIntPropertyInternal(FormatPropertyNameForLocalSettings(name), defaultValue);
				case SettingsGroup.GlobalSettings:
				case SettingsGroup.Undecided:
				default:
					return GetIntPropertyInternal(name, defaultValue);
			}
		}
예제 #51
0
		/// <summary>
		/// Tests whether a property exists, and gives the 'best' group it was found in
		/// (ie. local first and then global).
		/// </summary>
		/// <param name="name"></param>
		/// <param name="bestGuessGroup">Undecided, if none was found.</param>
		/// <returns></returns>
		public bool PropertyExists(string name, out SettingsGroup bestGuessGroup)
		{
			object propertyValue = null;
			return PropertyExists(name, out propertyValue, out bestGuessGroup);
		}
예제 #52
0
		public void SetPropertyPersistence(string name, bool doPersist, SettingsGroup settingsGroup)
		{
			SettingsGroup firstSettings;
			settingsGroup = TestForBestSettings(name, settingsGroup, out firstSettings);
			switch(settingsGroup)
			{
				case SettingsGroup.LocalSettings:
					SetPropertyPersistenceInternal(FormatPropertyNameForLocalSettings(name), doPersist);
					break;
				case SettingsGroup.GlobalSettings:
				default:
					SetPropertyPersistenceInternal(name, doPersist);
					break;
			}
		}
예제 #53
0
		/// <summary>
		/// Test whether a property exists and gives its 'best' group and its value.
		/// (ie. local first and then global).
		/// </summary>
		/// <param name="name"></param>
		/// <param name="propertyValue">null, if it didn't find the property.</param>
		/// <param name="bestGuessGroup">Undecided, if none was found.</param>
		/// <returns></returns>
		public bool PropertyExists(string name, out object propertyValue, out SettingsGroup bestGuessGroup)
		{
			bestGuessGroup = SettingsGroup.Undecided;
			if (PropertyExists(name, out propertyValue, SettingsGroup.LocalSettings))
				bestGuessGroup = SettingsGroup.LocalSettings;
			else if (PropertyExists(name, out propertyValue, SettingsGroup.GlobalSettings))
				bestGuessGroup = SettingsGroup.GlobalSettings;
			return bestGuessGroup != SettingsGroup.Undecided;
		}
 public NaivePhotoGaleryFactory(SettingsGroup settings)
 {
     Settings = settings;
 }
예제 #55
0
		/// <summary>
		/// Test whether a property exist in the specified group.
		/// </summary>
		/// <param name="name"></param>
		/// <param name="settingsGroup"></param>
		/// <returns></returns>
		public bool PropertyExists(string name, SettingsGroup settingsGroup)
		{
			object propertyValue = null;
			return PropertyExists(name, out propertyValue, settingsGroup);
		}
예제 #56
0
        public void BadSettingPUT6([PexAssumeUnderTest]String settingName, [PexAssumeUnderTest]Object settingValue, [PexAssumeUnderTest]Object defSettingValue)
        {
            PexAssume.IsTrue(settingName != null);
            PexAssume.IsTrue(settingValue != null && settingValue is String);

            String str_sv = settingValue.ToString();
            PexAssume.IsTrue(Regex.IsMatch(str_sv, "@([a-z])*"));
            PexAssume.IsTrue(defSettingValue != null);

            SettingsGroup testGroup1 = new SettingsGroup(new MemorySettingsStorage());
            DelegateHandler dhObj1 = new DelegateHandler(testGroup1);

            if (defSettingValue is int)
            {
                testGroup1.SaveSetting(settingName, settingValue);
                int defVal = Int32.Parse(defSettingValue.ToString());
                PexAssert.AreEqual(defVal, testGroup1.GetSetting(settingName, defVal));
            }
            else if (defSettingValue is string)
            {
                String defVal = defSettingValue.ToString();
                PexAssert.AreEqual(defVal, testGroup1.GetSetting(settingName, defVal));
            }
            else if (!settingValue.Equals("True") && !settingValue.Equals("False") && defSettingValue is bool)
            {
                bool defVal = Boolean.Parse(defSettingValue.ToString());
                PexAssert.AreEqual(defVal, testGroup1.GetSetting(settingName, defVal));
                testGroup1.SaveSetting(settingName, settingValue);
                PexAssert.AreEqual(defVal, testGroup1.GetSetting(settingName, defVal));
            }
        }
예제 #57
0
        public void SubGroupSettingsPUT2([PexAssumeUnderTest] SettingsGroup testGroup1, [PexAssumeUnderTest]
            String settingName, [PexAssumeNotNull]Object settingValue)
        {
            PexAssume.IsTrue(settingName != null);
            PexAssume.IsTrue(settingValue != null);

            SettingsGroup subGroup = new SettingsGroup(testGroup1.Storage);
            PexAssert.IsNotNull(subGroup);
            PexAssert.IsNotNull(subGroup.Storage);
            subGroup.SaveSetting(settingName, settingValue);
            PexAssert.AreEqual(settingValue, subGroup.GetSetting(settingName));
            subGroup.RemoveSetting(settingName);
            PexAssert.IsNull(subGroup.GetSetting(settingName));
        }