Helper class for accessing FieldWorks-specific registry settings
コード例 #1
0
        public void UpgradeUserSettingsIfNeeded_ExistingV8Key_DontOverwrite()
        {
            // Setup
            const string flexKeyName = "LanguageExplorer";
            const string teKeyName   = "TE";
            const string dirName     = "TestDir";
            const string crashes     = "NumberOfHorrendousCrashes";
            const string valueName3  = "FlexTestValue1";
            const string valueName4  = "FlexTestValue2";
            const string launches    = "launches";
            const string userWs      = "UserWs";

            using (var version7Key = m_helper.SetupVersion7Settings())
                using (var version8Key = m_helper.SetupVersion8Settings())
                {
                    // SUT
                    FwRegistryHelper.UpgradeUserSettingsIfNeeded();

                    // Verification
                    // first and foremost, is the version 7 key gone?
                    Assert.IsFalse(RegistryHelper.KeyExists(FwRegistryHelper.FieldWorksVersionlessRegistryKey,
                                                            FwRegistryHelper.OldFieldWorksRegistryKeyNameVersion7),
                                   "Old version 7.0 subkey tree didn't get wiped out.");

                    // Check for version 8 key
                    using (AssertIfRegistrySubkeyNotPresent(FwRegistryHelper.FieldWorksVersionlessRegistryKey,
                                                            FwRegistryHelper.FieldWorksRegistryKeyName))
                    {}                     // dispose of local RegistryKey for Gendarme
                    // Check that UserWs didn't get overwritten
                    // Version 7 had 'pt', pre-existing Version 8 had 'fr', which we should have kept.
                    CheckForRegistryStringValue(FwRegistryHelper.FieldWorksVersionlessRegistryKey,
                                                FwRegistryHelper.FieldWorksRegistryKeyName, userWs, "fr");
                }
        }
コード例 #2
0
        public void UnlovedStuff_Removed_v7_and_v8_Upgrade()
        {
            using (var version7Key = m_helper.SetupVersion7Settings())
                using (var version8Key = m_helper.SetupVersion8Settings())
                    using (var version9Key = m_helper.SetupVersion9Settings())
                    {
                        // In 7.
                        AssertRegistrySubkeyPresent(version7Key, FwRegistryHelper.TranslationEditor);
                        AssertRegistrySubkeyPresent(version7Key, DummyFwRegistryHelper.FlexKeyName);
                        // In 8.
                        AssertRegistrySubkeyPresent(version8Key, FwRegistryHelper.TranslationEditor);
                        AssertRegistrySubkeyPresent(version8Key, DummyFwRegistryHelper.FlexKeyName);
                        // Not in 9.
                        AssertRegistrySubkeyNotPresent(version9Key, FwRegistryHelper.TranslationEditor);
                        AssertRegistrySubkeyNotPresent(version9Key, DummyFwRegistryHelper.FlexKeyName);

                        // SUT
                        Assert.IsTrue(FwRegistryHelper.UpgradeUserSettingsIfNeeded());

                        using (var newVersion9Key = m_helper.FieldWorksRegistryKey)
                        {
                            // Didn't make it into 9.
                            AssertRegistrySubkeyNotPresent(newVersion9Key, FwRegistryHelper.TranslationEditor);
                            AssertRegistryValueNotPresent(newVersion9Key, DummyFwRegistryHelper.FlexKeyName, DummyFwRegistryHelper.Crashes);
                            AssertRegistryValueNotPresent(newVersion9Key, DummyFwRegistryHelper.FlexKeyName, DummyFwRegistryHelper.Launches);
                        }
                    }
        }
コード例 #3
0
        public void V8_and_V7_KeyRemoved_7_and_8_To_9_Upgrade()
        {
            using (m_helper.SetupVersion7Settings())
                using (m_helper.SetupVersion8Settings())
                    using (m_helper.SetupVersion9Settings())
                    {
                        // SUT
                        Assert.IsTrue(FwRegistryHelper.UpgradeUserSettingsIfNeeded());

                        // Is the version 7 key gone?
                        Assert.IsFalse(RegistryHelper.KeyExists(FwRegistryHelper.FieldWorksVersionlessRegistryKey,
                                                                FwRegistryHelper.OldFieldWorksRegistryKeyNameVersion7),
                                       "Old version 7.0 subkey tree didn't get wiped out.");

                        // Is the version 8 key gone?
                        Assert.IsFalse(RegistryHelper.KeyExists(FwRegistryHelper.FieldWorksVersionlessRegistryKey,
                                                                FwRegistryHelper.OldFieldWorksRegistryKeyNameVersion8),
                                       "Old version 8 subkey tree didn't get wiped out.");

                        using (var version9Key = m_helper.FieldWorksRegistryKey)
                        {
                            VerifyExpectedMigrationResults(version9Key);
                            Assert.AreEqual("sp", version9Key.GetValue(DummyFwRegistryHelper.UserWs));
                        }
                    }
        }
コード例 #4
0
        public void MigrateVersion7ValueIfNeeded_7Set_Migrated()
        {
            // Setup
            using (m_helper.SetupVersion7ProjectSharedSetting())
                using (var version7Key = m_helper.SetupVersion7Settings())
                {
                    object projectsSharedValue;
                    // Verify that the version 8 ProjectShared key is missing before migration
                    Assert.IsFalse(RegistryHelper.RegEntryExists(FwRegistryHelper.FieldWorksRegistryKey, null, "ProjectShared", out projectsSharedValue));

                    FwRegistryHelper.MigrateVersion7ValueIfNeeded();

                    // Verification
                    // Verify that the version 8 ProjectShared key is set after migration.
                    Assert.IsTrue(RegistryHelper.RegEntryExists(FwRegistryHelper.FieldWorksRegistryKey, null, "ProjectShared", out projectsSharedValue));
                    Assert.IsTrue(bool.Parse((string)projectsSharedValue));

                    FwRegistryHelper.FieldWorksRegistryKey.SetValue("ProjectShared", "False");

                    FwRegistryHelper.MigrateVersion7ValueIfNeeded();

                    // Verification
                    // Verify that the version 7 ProjectShared value has not been migrated again.
                    Assert.IsTrue(RegistryHelper.RegEntryExists(FwRegistryHelper.FieldWorksRegistryKey, null, "ProjectShared", out projectsSharedValue));
                    Assert.IsFalse(bool.Parse((string)projectsSharedValue));
                }
        }
コード例 #5
0
        public void UpgradeUserSettingsIfNeeded_NotNeeded_ProjectSharedNotSet()
        {
            // If there's no version 7.0 key, the upgrade shouldn't happen

            // SUT
            FwRegistryHelper.UpgradeUserSettingsIfNeeded();

            // Verification
            // The above upgrade shouldn't have done anything; verify that the version 8 ProjectShared key
            // is missing.
            AssertIfRegistryValuePresent(FwRegistryHelper.FieldWorksRegistryKey, null, "ProjectShared");
        }
コード例 #6
0
        public void UpgradeUserSettingsIfNeeded_NotNeeded()
        {
            // If there's no version 7.0 key, the upgrade shouldn't happen

            // SUT
            FwRegistryHelper.UpgradeUserSettingsIfNeeded();

            // Verification
            // The above upgrade shouldn't have done anything; verify at least that the version 8 key
            // is missing.
            AssertIfRegistrySubkeyPresent(FwRegistryHelper.FieldWorksVersionlessRegistryKey,
                                          FwRegistryHelper.FieldWorksRegistryKeyName);
        }
コード例 #7
0
        public void UpgradeUserSettingsIfNeeded_NotNeeded()
        {
            // SUT
            Assert.IsFalse(FwRegistryHelper.UpgradeUserSettingsIfNeeded());

            // Verification
            // The above upgrade shouldn't have done anything; verify at least that the version 9 key is empty.
            using (var version9Key = FwRegistryHelper.FieldWorksRegistryKey)
            {
                Assert.AreEqual(0, version9Key.SubKeyCount, "There was nothing to migrate, so no subkeys should have been created");
                Assert.AreEqual(0, version9Key.ValueCount, "There was nothing to migrate, so no values should have been created");
            }
        }
コード例 #8
0
        public void MigrateVersion7ValueIfNeeded_7Unset_NotMigrated()
        {
            // Setup
            using (var version7Key = m_helper.SetupVersion7Settings())
            {
                FwRegistryHelper.MigrateVersion7ValueIfNeeded();

                // Verification
                // Verify that the version 8 ProjectShared key is missing.
                object dummy;
                Assert.IsFalse(RegistryHelper.RegEntryExists(FwRegistryHelper.FieldWorksRegistryKey, null, "ProjectShared", out dummy));
            }
        }
コード例 #9
0
        public void ExpectedSettingsRetained_8_To_9_Upgrade()
        {
            using (m_helper.SetupVersion8Settings())
            {
                // SUT
                Assert.IsTrue(FwRegistryHelper.UpgradeUserSettingsIfNeeded());

                using (var version9Key = m_helper.FieldWorksRegistryKey)
                {
                    VerifyExpectedMigrationResults(version9Key);
                    Assert.AreEqual("fr", version9Key.GetValue(DummyFwRegistryHelper.UserWs));
                }
            }
        }
コード例 #10
0
        public void UpgradeUserSettingsIfNeeded_Needed()
        {
            // Setup
            const string flexKeyName = "LanguageExplorer";
            const string teKeyName   = "TE";
            const string dirName     = "TestDir";
            const string crashes     = "NumberOfHorrendousCrashes";
            const string valueName3  = "FlexTestValue1";
            const string valueName4  = "FlexTestValue2";
            const string launches    = "launches";

            using (var version7Key = m_helper.SetupVersion7Settings())
            {
                // SUT
                FwRegistryHelper.UpgradeUserSettingsIfNeeded();

                // Verification
                // first and foremost, is the version 7 key gone?
                Assert.IsFalse(RegistryHelper.KeyExists(FwRegistryHelper.FieldWorksVersionlessRegistryKey,
                                                        FwRegistryHelper.OldFieldWorksRegistryKeyNameVersion7),
                               "Old version 7.0 subkey tree didn't get wiped out.");

                // Check for version 8 key
                using (var version8Key = AssertIfRegistrySubkeyNotPresent(
                           FwRegistryHelper.FieldWorksVersionlessRegistryKey, FwRegistryHelper.FieldWorksRegistryKeyName))
                {
                    // Check for flex key
                    using (var flexKey = AssertIfRegistrySubkeyNotPresent(version8Key, flexKeyName))
                    {
                        // Check for TE key
                        using (var teKey = AssertIfRegistrySubkeyNotPresent(version8Key, teKeyName))
                        {
                            // Check for absense of crash value
                            AssertIfRegistryValuePresent(FwRegistryHelper.FieldWorksVersionlessRegistryKey,
                                                         FwRegistryHelper.FieldWorksRegistryKeyName, crashes);
                            // Check for absense of launches value
                            AssertIfRegistryValuePresent(version8Key, flexKeyName, launches);
                            CheckForRegistryIntValue(version8Key, flexKeyName, valueName3, 20);
                            CheckForRegistryStringValue(version8Key, teKeyName, dirName, "Z:\\somedirectory");
                        }
                    }
                }
            }
        }
コード例 #11
0
        public void HKCU_ProjectShared_Removed_8_To_9_Upgrade()
        {
            using (var version8Key = m_helper.SetupVersion8Settings())
            {
                version8Key.SetValue(DummyFwRegistryHelper.ProjectShared, "False");
                // Verify ProjectShared is present in version8Key
                AssertRegistryValuePresent(version8Key, null, DummyFwRegistryHelper.ProjectShared);

                object projectsSharedValue;
                // Verify that the version 9 ProjectShared key is missing before migration
                AssertRegistryValueNotPresent(FwRegistryHelper.FieldWorksRegistryKey, null, DummyFwRegistryHelper.ProjectShared);

                //SUT
                Assert.IsTrue(FwRegistryHelper.UpgradeUserSettingsIfNeeded());

                // Verification
                // Verify that the version 9 ProjectShared key is still missing after migration.
                AssertRegistryValueNotPresent(FwRegistryHelper.FieldWorksRegistryKey, null, DummyFwRegistryHelper.ProjectShared);
            }
        }
コード例 #12
0
        public void RetainExtantV9Setting_v7_and_v8_Upgrade()
        {
            // Setup
            using (m_helper.SetupVersion7Settings())
                using (m_helper.SetupVersion8Settings())
                    using (m_helper.SetupVersion9Settings())
                    {
                        // SUT
                        Assert.IsTrue(FwRegistryHelper.UpgradeUserSettingsIfNeeded());

                        // Verification
                        using (var versionlessKey = FwRegistryHelper.FieldWorksVersionlessRegistryKey)
                        {
                            // Check that UserWs didn't get overwritten
                            // Version 7 had 'pt', pre-existing Version 8 had 'fr', but 9 already had it set to 'sp'.
                            AssertRegistryStringValueEquals(versionlessKey,
                                                            FwRegistryHelper.FieldWorksRegistryKeyName, DummyFwRegistryHelper.UserWs, "sp");
                        }
                    }
        }
コード例 #13
0
        public void TestUpgradeFrom32BitTo64Bit()
        {
            using (m_helper.SetupVersion8Old32BitSettings())
                using (m_helper.SetupVersion9Old32BitSettings())
                {
                    // SUT
                    Assert.IsTrue(FwRegistryHelper.UpgradeUserSettingsIfNeeded());

                    // Is the key under WOW6432Node gone?
                    Assert.IsNull(FwRegistryHelper.FieldWorksVersionlessOld32BitRegistryKey, "Old 32-bit key tree didn't get wiped out.");

                    using (var version9Key = m_helper.FieldWorksRegistryKey)
                    {
                        Assert.AreEqual(DummyFwRegistryHelper.UserWsValue, version9Key.GetValue(DummyFwRegistryHelper.UserWs),
                                        "Values from 32-bit version 9 did not get migrated");
                        Assert.AreEqual("From32Bit8", version9Key.GetValue(DummyFwRegistryHelper.ExtraValue),
                                        "Values from 32-bit version 8 did not get migrated");
                        VerifyExpectedMigrationResults(version9Key);
                    }
                }
        }