public void TestUnsupportedEvidence()
        {
            const string previousInstallDir = @"C:\Program Files\ACME Laboratories\ExperimentalRats";
            const string appDataPath        = @"C:\Documents and Settings\Snowball\LocalSettings\AppData\ACME Laboratories\Acme.Laboratories.Exper_Url_abcdefghijklmnopqrstuvwxyz012345\3.0.0.0\user.config";

            var evidence  = new Evidence();
            var altFolder = UserUpgradeStrategy.GetAlternateAppSettingsFolder(previousInstallDir, evidence, appDataPath);

            Assert.IsNullOrEmpty(altFolder, "app domain without url in evidence is unusual, and we don't have any data points to back up any implementation, so we don't implement it!");
        }
        public void TestAltFolderOnSlashesNoPreviousInstallDirectory()
        {
            const string appDataPath     = @"C:\Documents and Settings\Snowball\LocalSettings\AppData\ACME Laboratories\Acme.Laboratories.Exper_Url_2vbxhp2udm4o5dcwujyvygdqgjfgjfvn\3.0.0.0\user.config";
            const string assemblyName    = "Acme.Laboratories.Experimental.Rat.TheBrain";
            const string assemblyVersion = "2.1.0.1";
            const string assemblyUrl     = @"file:///C:\Program Files\ACME Laboratories\ExperimentalRats\TheBrain.exe";

            var evidence  = CreateAppDomainEvidence(assemblyName, assemblyVersion, assemblyUrl, false);
            var altFolder = UserUpgradeStrategy.GetAlternateAppSettingsFolder(null, evidence, appDataPath);

            Assert.AreEqual("Acme.Laboratories.Exper_Url_kgyle1vbltt4mwwk4hgjgr1z52ofp1u0", altFolder, "getting the old path (with forward slashes) if the current path is based on backslashes");
        }
        public void TestSameAsCurrentFolderNoPreviousInstallDirectory()
        {
            const string appDataPath     = @"C:\Documents and Settings\Snowball\LocalSettings\AppData\ACME Laboratories\Acme.Laboratories.Exper_Url_kgyle1vbltt4mwwk4hgjgr1z52ofp1u0\3.0.0.0\user.config";
            const string assemblyName    = "Acme.Laboratories.Experimental.Rat.TheBrain";
            const string assemblyVersion = "2.1.0.1";
            const string assemblyUrl     = @"file:///C:/Program Files/ACME Laboratories/ExperimentalRats/TheBrain.exe";

            var evidence  = CreateAppDomainEvidence(assemblyName, assemblyVersion, assemblyUrl, false);
            var altFolder = UserUpgradeStrategy.GetAlternateAppSettingsFolder(null, evidence, appDataPath);

            Assert.IsNullOrEmpty(altFolder, "should return null when alt path is exactly the same as current path");
        }
        public void TestPathCaseInsensitive2()
        {
            const string appDataPath     = @"C:\Documents and Settings\Snowball\LocalSettings\AppData\ACME Laboratories\Acme.Laboratories.Exper_Url_abcdefghijklmnopqrstuvwxyz012345\3.0.0.0\user.config";
            const string assemblyName    = "Acme.Laboratories.Experimental.Rat.TheBrain";
            const string assemblyVersion = "2.1.0.1";
            const string assemblyUrl     = @"FILE:///c:/program Files/ACME Laboratories/ExperimentalRats/thebrain.EXE";

            var evidence  = CreateAppDomainEvidence(assemblyName, assemblyVersion, assemblyUrl, false);
            var altFolder = UserUpgradeStrategy.GetAlternateAppSettingsFolder(null, evidence, appDataPath);

            Assert.AreEqual("Acme.Laboratories.Exper_Url_kgyle1vbltt4mwwk4hgjgr1z52ofp1u0", altFolder, "assembly url should be case insensitive");
        }
        public void TestStrongNameEvidence()
        {
            const string previousInstallDir = @"C:\Program Files\ACME Laboratories\ExperimentalRats";
            const string appDataPath        = @"C:\Documents and Settings\Snowball\LocalSettings\AppData\ACME Laboratories\Acme.Laboratories.Exper_Url_abcdefghijklmnopqrstuvwxyz012345\3.0.0.0\user.config";
            const string assemblyName       = "Acme.Laboratories.Experimental.Rat.TheBrain";
            const string assemblyVersion    = "2.1.0.1";
            const string assemblyUrl        = @"file:///C:/Program Files/ACME Laboratories/ExperimentalRats/TheBrain.exe";

            var evidence  = CreateAppDomainEvidence(assemblyName, assemblyVersion, assemblyUrl, true);
            var altFolder = UserUpgradeStrategy.GetAlternateAppSettingsFolder(previousInstallDir, evidence, appDataPath);

            Assert.IsNullOrEmpty(altFolder, "strong named entry assembly should not have an alt folder");
        }
        public void TestInstallFolderChanged3()
        {
            const string previousInstallDir = @"C:\Program Files\ACME Labs\Rats\";             // note the different slashes, trailing slash and capitalization
            const string appDataPath        = @"C:\Documents and Settings\Snowball\LocalSettings\AppData\ACME Laboratories\Acme.Laboratories.Exper_Url_kgyle1vbltt4mwwk4hgjgr1z52ofp1u0\3.0.0.0\user.config";
            const string assemblyName       = "Acme.Laboratories.Experimental.Rat.TheBrain";
            const string assemblyVersion    = "2.1.0.1";
            const string assemblyUrl        = @"file:///C:/program Files/ACME Laboratories/ExperimentalRats/TheBrain.exe";

            var evidence  = CreateAppDomainEvidence(assemblyName, assemblyVersion, assemblyUrl, false);
            var altFolder = UserUpgradeStrategy.GetAlternateAppSettingsFolder(previousInstallDir, evidence, appDataPath);

            Assert.AreEqual("Acme.Laboratories.Exper_Url_gyj1vfoawarsonr4ssufrpzggih1qwle", altFolder, "should find correct former install directory");
        }
        public void TestDistinctAltFolder()
        {
            const string previousInstallDir = @"C:\Program Files\ACME Laboratories\ExperimentalRats";
            const string appDataPath        = @"C:\Documents and Settings\Snowball\LocalSettings\AppData\ACME Laboratories\Acme.Laboratories.Exper_Url_abcdefghijklmnopqrstuvwxyz012345\3.0.0.0\user.config";
            const string assemblyName       = "Acme.Laboratories.Experimental.Rat.TheBrain";
            const string assemblyVersion    = "2.1.0.1";
            const string assemblyUrl        = @"file:///C:/Program Files/ACME Laboratories/ExperimentalRats/TheBrain.exe";

            var evidence  = CreateAppDomainEvidence(assemblyName, assemblyVersion, assemblyUrl, false);
            var altFolder = UserUpgradeStrategy.GetAlternateAppSettingsFolder(previousInstallDir, evidence, appDataPath);

            Assert.AreEqual("Acme.Laboratories.Exper_Url_kgyle1vbltt4mwwk4hgjgr1z52ofp1u0", altFolder, "getting the old path when the current path is based on some unknown (in this case, dummy) hashing");
        }