public void SpecialSettings()
        {
            var controller = new BasicSettingController();
            var settings   = new BasicSettingController.SettingsData
            {
                Data = new BasicSettingController.BasicSettingsData {
                    CompileBeforeRunning = true, OptimizedBuild = true
                }
            };

            controller.UpdateSettings(settings);
            Assert.IsFalse(controller.HasWorkingDirectory);
            Assert.IsFalse(controller.BasicSettings.CompileBeforeRunning);
            Assert.IsFalse(controller.BasicSettings.OptimizedBuild);

            settings.Data.OptionalWorkingDirectory     = "WorkingDirectory";
            controller.IsCompileBeforeRunningEnabled   = true;
            controller.IsOptimizedBuildCheckBoxEnabled = true;
            settings.Data.CompileBeforeRunning         = true; // Reset by UpdateSettings
            settings.Data.OptimizedBuild = true;               // Reset by UpdateSettings

            controller.UpdateSettings(settings);
            Assert.IsTrue(controller.HasWorkingDirectory);
            Assert.IsTrue(controller.BasicSettings.CompileBeforeRunning);
            Assert.IsTrue(controller.BasicSettings.OptimizedBuild);
        }
        public void BuildJsonSettings()
        {
            var controller = new BasicSettingController();
            var settings   = new BasicSettingController.SettingsData
            {
                Data = new BasicSettingController.BasicSettingsData()
            };

            settings.IsSelectedByProjectPath = new Dictionary <string, bool>
            {
                { "project1", true }, { "project2", false }
            };
            foreach (var kvp in settings.IsSelectedByProjectPath)
            {
                controller.SelectableProjects.Add(
                    new SelectableProject(new StartUpProjectSettings.CppProject {
                    Path = kvp.Key
                }));
            }

            controller.UpdateSettings(settings);
            var newSettings = controller.BuildJsonSettings();

            PropertyHelper.CheckPropertiesEqualRecursive(settings, newSettings);
        }