示例#1
0
        public void ProviderLoadLog_Success()
        {
            var sp  = new MockServiceProvider();
            var log = new MockActivityLog();

            sp.Services[typeof(SVsActivityLog).GUID] = log;
            var sm = new MockSettingsManager();

            sp.Services[typeof(SVsSettingsManager).GUID] = sm;

            var path = FactoryProviderSuccessPath;

            sm.Store.AddSetting(@"PythonTools\InterpreterFactories\Test", "CodeBase", path);

            var service = new InterpreterOptionsService(sp);

            foreach (var msg in log.AllItems)
            {
                Console.WriteLine(msg);
            }

            AssertUtil.AreEqual(
                new Regex(@"Information//Python Tools//Loading interpreter provider assembly.*//" + Regex.Escape(path)),
                log.AllItems.Single()
                );

            Assert.AreEqual(1, service.KnownProviders.Count());
        }
        public void RecentPackageRepositoryDoesNotReturnPackagesFromSourcesThatAreRemoved()
        {
            // Arrange
            var sources = new List <PackageSource> {
                new PackageSource("Source1"), new PackageSource("Source2")
            };
            var factory = new Mock <IPackageRepositoryFactory>();

            factory.Setup(c => c.CreateRepository(It.IsAny <string>())).Returns <string>(c =>
            {
                switch (c)
                {
                case "Source1":
                    var repo1 = new MockPackageRepository();
                    repo1.AddRange(new[] { PackageUtility.CreatePackage("Pack1") });
                    return(repo1);

                case "Source2":
                    var repo2 = new MockPackageRepository();
                    repo2.AddRange(new[] { PackageUtility.CreatePackage("Pack2", "1.1") });
                    return(repo2);
                }
                return(null);
            });

            var settingsManager = new MockSettingsManager();

            settingsManager.SavePackageMetadata(new[] {
                new PersistencePackageMetadata("Pack1", "1.0", new DateTime(2011, 01, 01)),
                new PersistencePackageMetadata("Pack2", "1.1", new DateTime(2011, 01, 01)),
                new PersistencePackageMetadata("Pack3", "1.0", new DateTime(2011, 01, 01)),
            });

            var sourceProvider = new Mock <IPackageSourceProvider>();

            sourceProvider.Setup(c => c.LoadPackageSources()).Returns(sources);
            var repository = new RecentPackageRepository(
                null,
                factory.Object,
                sourceProvider.Object,
                settingsManager,
                new MockPackageRepository());

            // Act - 1, Scene - 1
            var packages = repository.GetPackages();

            // Assert
            Assert.Equal(2, packages.Count());
            AssertPackage(packages.First(), "Pack1", "1.0");
            AssertPackage(packages.Last(), "Pack2", "1.1");

            // Act - 1, Scene - 2
            sources.Remove(sources.Last());

            packages = repository.GetPackages();
            Assert.Equal(1, packages.Count());
            AssertPackage(packages.First(), "Pack1", "1.0");

            // Fin
        }
示例#3
0
        public void ProviderLoadLog_CorruptImage()
        {
            var sp  = new MockServiceProvider();
            var log = new MockActivityLog();

            sp.Services[typeof(SVsActivityLog).GUID] = log;
            var sm = new MockSettingsManager();

            sp.Services[typeof(SVsSettingsManager).GUID] = sm;

            var path = FactoryProviderCorruptPath;

            sm.Store.AddSetting(@"PythonTools\InterpreterFactories\Test", "CodeBase", path);

            var service = new InterpreterOptionsService(sp);

            foreach (var msg in log.AllItems)
            {
                Console.WriteLine(msg);
            }

            AssertUtil.AreEqual(
                new Regex(@"Error//Python Tools//Failed to load interpreter provider assembly.+System\.BadImageFormatException.+//" + Regex.Escape(path)),
                log.ErrorsAndWarnings.Single()
                );
        }
示例#4
0
        public void ProviderLoadLog_FileNotFound()
        {
            var sp  = new MockServiceProvider();
            var log = new MockActivityLog();

            sp.Services[typeof(SVsActivityLog).GUID] = log;
            var sm = new MockSettingsManager();

            sp.Services[typeof(SVsSettingsManager).GUID] = sm;

            var path = Path.ChangeExtension(Path.GetTempFileName(), "dll");

            File.Delete(path);
            Assert.IsFalse(File.Exists(path));

            sm.Store.AddSetting(@"PythonTools\InterpreterFactories\Test", "CodeBase", path);

            var service = new InterpreterOptionsService(sp);

            foreach (var msg in log.AllItems)
            {
                Console.WriteLine(msg);
            }

            AssertUtil.AreEqual(
                new Regex(@"Error//Python Tools//Failed to load interpreter provider assembly.+System\.IO\.FileNotFoundException.+//" + Regex.Escape(path)),
                log.ErrorsAndWarnings.Single()
                );
        }
示例#5
0
        public void ProviderLoadLog_SuccessAndFailure()
        {
            var sp  = new MockServiceProvider();
            var log = new MockActivityLog();

            sp.Services[typeof(SVsActivityLog).GUID] = log;
            var sm = new MockSettingsManager();

            sp.Services[typeof(SVsSettingsManager).GUID] = sm;

            var path1 = FactoryProviderTypeLoadErrorPath;
            var path2 = FactoryProviderSuccessPath;

            sm.Store.AddSetting(@"PythonTools\InterpreterFactories\Test1", "CodeBase", path1);
            sm.Store.AddSetting(@"PythonTools\InterpreterFactories\Test2", "CodeBase", path2);

            var service = new InterpreterOptionsService(sp);

            foreach (var msg in log.AllItems)
            {
                Console.WriteLine(msg);
            }

            AssertUtil.AreEqual(
                new Regex(@"Error//Python Tools//Failed to import factory providers.*System\.ComponentModel\.Composition\.CompositionException"),
                log.ErrorsAndWarnings.Single()
                );

            Assert.AreEqual(1, service.KnownProviders.Count());
        }
示例#6
0
        static IInterpreterOptionsService GetInterpreterOptionsService(bool defaultProviders = true)
        {
            var sp = new MockServiceProvider();

            sp.Services[typeof(SVsActivityLog).GUID] = new MockActivityLog();
            var settings = new MockSettingsManager();

            sp.Services[typeof(SVsSettingsManager).GUID] = settings;
            if (defaultProviders)
            {
                settings.Store.AddSetting(
                    InterpreterOptionsService.FactoryProvidersCollection + "\\CPythonAndConfigurable",
                    InterpreterOptionsService.FactoryProviderCodeBaseSetting,
                    typeof(CPythonInterpreterFactoryConstants).Assembly.Location
                    );
                settings.Store.AddSetting(
                    InterpreterOptionsService.FactoryProvidersCollection + "\\LoadedProjects",
                    InterpreterOptionsService.FactoryProviderCodeBaseSetting,
                    typeof(LoadedProjectInterpreterFactoryProvider).Assembly.Location
                    );
            }
            else
            {
                settings.Store.CreateCollection(InterpreterOptionsService.SuppressFactoryProvidersCollection);
            }
            return(new InterpreterOptionsService(sp));
        }
        public void PropertyChangedDistinctTest()
        {
            var manager      = new MockSettingsManager();
            var triggerCount = 0;

            manager.PropertyChanged += (sender, args) =>
            {
                // Ignore IsSaved changing
                if (args.PropertyName == nameof(manager.IsSaved))
                {
                    return;
                }

                // Count how many times event was raised
                triggerCount++;
            };

            // Change value
            manager.Enum = MockEnum.Three;

            // Change value again, to the same thing
            manager.Enum = MockEnum.Three;
            manager.Enum = MockEnum.Three;

            // Change value to a new thing
            manager.Enum = MockEnum.One;

            // Change value again, to the same thing
            manager.Enum = MockEnum.One;
            manager.Enum = MockEnum.One;

            // Check if event was only raised the minimum number of times
            Assert.AreEqual(2, triggerCount);
        }
        public void SaveTest()
        {
            var manager = new MockSettingsManager();

            // Save
            manager.Save();
            Assert.IsTrue(File.Exists(manager.FullFilePath));
        }
        public void DeleteTest()
        {
            var manager = new MockSettingsManager();

            // Save
            manager.Save();

            // Delete
            manager.Delete();
            Assert.IsFalse(File.Exists(manager.FullFilePath));
        }
示例#10
0
        static CompositionContainer CreateCompositionContainer(bool defaultProviders = true)
        {
            var sp = new MockServiceProvider();

            sp.Services[typeof(SVsActivityLog).GUID] = new MockActivityLog();
            var settings = new MockSettingsManager();

            sp.Services[typeof(SVsSettingsManager).GUID] = settings;

            return(InterpreterCatalog.CreateContainer(typeof(IInterpreterRegistryService), typeof(IInterpreterOptionsService)));
        }
示例#11
0
        public void InstantiateTest()
        {
            var manager = new MockSettingsManager();

            // Check that configuration properties are set
            Assert.IsNotNull(manager.Configuration);
            Assert.IsNotNull(manager.Configuration.SubDirectoryPath);
            Assert.IsNotNull(manager.Configuration.FileName);
            Assert.IsNotNull(manager.FullDirectoryPath);
            Assert.IsNotNull(manager.FullFilePath);
        }
示例#12
0
        public void Cleanup()
        {
            var mock = new MockSettingsManager();

            try
            {
                Directory.Delete(mock.FullDirectoryPath, true);
            }
            catch (DirectoryNotFoundException)
            {
            }
        }
示例#13
0
        public void DeleteWithDirTest()
        {
            var manager = new MockSettingsManager();

            // Save
            manager.Save();

            // Delete
            manager.Delete(true);
            Assert.IsFalse(File.Exists(manager.FullFilePath));
            Assert.IsFalse(Directory.Exists(manager.FullDirectoryPath));
        }
示例#14
0
        public void ResetTest()
        {
            var manager = new MockSettingsManager();

            // Change some values
            manager.Str  = "Test";
            manager.Enum = MockEnum.One;

            // Reset
            manager.Reset();

            // Check values
            Assert.AreEqual("Hello World", manager.Str);
            Assert.AreEqual(MockEnum.Two, manager.Enum);
        }
示例#15
0
        public void CopyFromTest()
        {
            var manager1 = new MockSettingsManager();
            var manager2 = new MockSettingsManager();

            // Change stuff in manager2
            manager2.Class         = new MockClass();
            manager2.Class.Decimal = 123123;

            // Copy
            manager1.CopyFrom(manager2);

            // Check values
            Assert.IsNotNull(manager1.Class);
            Assert.AreEqual(123123, manager1.Class.Decimal);
        }
        private RecentPackageRepository CreateRecentPackageRepository(
            IEnumerable <IPackage> packagesList = null,
            IEnumerable <IPersistencePackageMetadata> settingsMetadata = null,
            IPackageRepository cacheRepository = null)
        {
            if (packagesList == null)
            {
                var packageA = PackageUtility.CreatePackage("A", "1.0");
                var packageC = PackageUtility.CreatePackage("C", "2.0");

                packagesList = new[] { packageA, packageC };
            }

            var mockRepository = new Mock <IPackageRepository>();

            mockRepository.Setup(p => p.GetPackages()).Returns(packagesList.AsQueryable());

            var mockRepositoryFactory = new Mock <IPackageRepositoryFactory>();

            mockRepositoryFactory.Setup(f => f.CreateRepository(It.IsAny <string>())).Returns(mockRepository.Object);

            var mockSettingsManager = new MockSettingsManager();

            if (settingsMetadata == null)
            {
                var A = new PersistencePackageMetadata("A", "1.0", new DateTime(2010, 8, 12));
                var B = new PersistencePackageMetadata("B", "2.0", new DateTime(2011, 3, 2));
                settingsMetadata = new[] { A, B };
            }

            mockSettingsManager.SavePackageMetadata(settingsMetadata);

            var mockPackageSourceProvider = new MockPackageSourceProvider();

            mockPackageSourceProvider.SavePackageSources(new[] { new PackageSource("source") });

            if (cacheRepository == null)
            {
                cacheRepository = new MockPackageRepository();
            }
            return(new RecentPackageRepository(
                       /* dte */ null,
                       mockRepositoryFactory.Object,
                       mockPackageSourceProvider,
                       mockSettingsManager,
                       cacheRepository));
        }
示例#17
0
        public void CloneTest()
        {
            var manager = new MockSettingsManager();

            // Change stuff
            manager.Array = new ushort[] { 99, 5, 6 };

            // Clone
            var clone = manager.Clone() as MockSettingsManager;

            Assert.IsNotNull(clone);

            // Check values
            Assert.IsNotNull(clone.Array);
            Assert.AreEqual(3, clone.Array.Length);
            Assert.AreEqual(99, clone.Array[0]);
            Assert.AreEqual(5, clone.Array[1]);
            Assert.AreEqual(6, clone.Array[2]);
        }
示例#18
0
        public void IsSavedTest()
        {
            var manager = new MockSettingsManager();

            // IsSaved should be true because it's persistent (all values are default)
            Assert.IsTrue(manager.IsSaved);

            // Change values
            manager.DateTime = DateTime.Now;

            // IsSaved should be false because a value was changed
            Assert.IsFalse(manager.IsSaved);

            // Save
            manager.Save();

            // IsSaved should be true because the settings are saved
            Assert.IsTrue(manager.IsSaved);

            // Change values
            manager.Int = 43;

            // IsSaved should be false because a value was changed
            Assert.IsFalse(manager.IsSaved);

            // Load
            manager.Load();

            // IsSaved should be true because the settings are saved
            Assert.IsTrue(manager.IsSaved);

            // Change values
            manager.Class = new MockClass();

            // IsSaved should be false because a value was changed
            Assert.IsFalse(manager.IsSaved);

            // Reset
            manager.Reset();

            // IsSaved should be false because it's not persistent anymore
            Assert.IsFalse(manager.IsSaved);
        }
示例#19
0
        public EditorTestToolset(bool useRealUIThread = true)
        {
            _exportProvider = MefExportProviders.CreateEditorExportProvider();

            var settingsManager = new MockSettingsManager();

            settingsManager.Store.AllowEmptyCollections = true;

            _serviceProvider = _exportProvider.GetExportedValue <MockServiceProvider>();
            _serviceProvider.Services[typeof(SVsSettingsManager).GUID] = settingsManager;

            if (useRealUIThread)
            {
                _serviceProvider.AddService(typeof(UIThreadBase), new UIThread(_exportProvider.GetExportedValue <JoinableTaskContext>()));
            }
            else
            {
                _serviceProvider.AddService(typeof(UIThreadBase), new MockUIThread());
            }

            UIThread = (UIThreadBase)_serviceProvider.GetService(typeof(UIThreadBase));
        }
示例#20
0
        public void SaveChangesTest()
        {
            var manager = new MockSettingsManager();

            // Change some values
            manager.Int    = 13;
            manager.Double = 3.14;

            // Save
            manager.Save();

            // Re-create
            manager = new MockSettingsManager();

            // Load
            manager.Load();

            // Check values
            Assert.AreEqual(13, manager.Int);
            Assert.AreEqual(3.14, manager.Double);
            Assert.AreEqual("Hello World", manager.Str);
        }
        private RecentPackagesRepository CreateRecentPackageRepository(IPackage[] packagesList = null, IPersistencePackageMetadata[] settingsMetadata = null)
        {
            if (packagesList == null)
            {
                var packageA = PackageUtility.CreatePackage("A", "1.0");
                var packageC = PackageUtility.CreatePackage("C", "2.0");

                packagesList = new[] { packageA, packageC };
            }

            var mockRepository = new Mock <IPackageRepository>();

            mockRepository.Setup(p => p.GetPackages()).Returns(packagesList.AsQueryable());

            var mockRepositoryFactory = new Mock <IPackageRepositoryFactory>();

            mockRepositoryFactory.Setup(f => f.CreateRepository(It.IsAny <PackageSource>())).Returns(mockRepository.Object);

            var mockSettingsManager = new MockSettingsManager();

            if (settingsMetadata == null)
            {
                var A = new PersistencePackageMetadata("A", "1.0", new DateTime(2010, 8, 12));
                var B = new PersistencePackageMetadata("B", "2.0", new DateTime(2011, 3, 2));
                settingsMetadata = new[] { A, B };
            }

            mockSettingsManager.SavePackageMetadata(settingsMetadata);

            var mockPackageSourceProvider = new Mock <IPackageSourceProvider>();

            mockPackageSourceProvider.Setup(p => p.AggregateSource).Returns(new PackageSource("All")
            {
                IsAggregate = true
            });

            return(new RecentPackagesRepository(null, mockRepositoryFactory.Object, mockPackageSourceProvider.Object, mockSettingsManager));
        }
示例#22
0
        public void SaveUpgradeLoadTest()
        {
            var oldManager = new MockSettingsManager();

            // Set some values
            oldManager.Double     = 66.55;
            oldManager.Class      = new MockClass();
            oldManager.Class.Long = 132;

            // Save
            oldManager.Save();

            // Upgrade
            var newManager = new MockSettingsManagerNewer();

            // Load
            newManager.Load();

            // Check values
            Assert.AreEqual(66.55, newManager.Double);
            Assert.IsNotNull(newManager.Class);
            Assert.AreEqual(132, newManager.Class.Long);
            Assert.AreEqual('Q', newManager.Char);
        }
示例#23
0
        public void PropertyChangedTest()
        {
            var    manager         = new MockSettingsManager();
            string changedProperty = null;

            manager.PropertyChanged += (sender, args) =>
            {
                // Ignore IsSaved changing
                if (args.PropertyName == nameof(manager.IsSaved))
                {
                    return;
                }

                // Save the name of the changed property
                changedProperty = args.PropertyName;
            };

            // Change value
            manager.DateTime = DateTime.UtcNow;

            // Check if event raised correctly
            Assert.IsNotNull(changedProperty);
            Assert.AreEqual(nameof(manager.DateTime), changedProperty);
        }
示例#24
0
        public SettingsResponse GetAccounts(int userID)
        {
            ISettingsManager manager = new MockSettingsManager();

            return(manager.GetAccounts(userID));
        }
示例#25
0
        public SettingsResponse GetCountries(int accountID)
        {
            ISettingsManager manager = new MockSettingsManager();

            return(manager.GetSegmentInfo(accountID, SegmentType.Country));
        }
        public void RecentPackageRepositoryDoesNotReturnPackagesFromSourcesThatAreDisabled()
        {
            // Arrange
            var sources = new List<PackageSource> { new PackageSource("Source1"), new PackageSource("Source2", "Source2", isEnabled: false) };
            var factory = new Mock<IPackageRepositoryFactory>();
            factory.Setup(c => c.CreateRepository(It.IsAny<string>())).Returns<string>(c =>
            {
                switch (c)
                {
                    case "Source1":
                        var repo1 = new MockPackageRepository();
                        repo1.AddRange(new[] { PackageUtility.CreatePackage("Pack1") });
                        return repo1;
                    case "Source2":
                        var repo2 = new MockPackageRepository();
                        repo2.AddRange(new[] { PackageUtility.CreatePackage("Pack2", "1.1") });
                        return repo2;
                }
                return null;
            });

            var settingsManager = new MockSettingsManager();
            settingsManager.SavePackageMetadata(new[] {
                new PersistencePackageMetadata("Pack1", "1.0", new DateTime(2011, 01, 01)),
                new PersistencePackageMetadata("Pack2", "1.1", new DateTime(2011, 01, 01)),
                new PersistencePackageMetadata("Pack3", "1.0", new DateTime(2011, 01, 01)),
            });

            var sourceProvider = new Mock<IPackageSourceProvider>();
            sourceProvider.Setup(c => c.LoadPackageSources()).Returns(sources);
            var repository = new RecentPackageRepository(
                null,
                factory.Object,
                sourceProvider.Object,
                settingsManager,
                new MockPackageRepository());

            // Act
            var packages = repository.GetPackages();

            // Assert 
            Assert.Equal(1, packages.Count());
            AssertPackage(packages.First(), "Pack1", "1.0");
            //AssertPackage(packages.Last(), "Pack2", "1.1");
        }
        private RecentPackagesRepository CreateRecentPackageRepository(IPackage[] packagesList = null, IPersistencePackageMetadata[] settingsMetadata = null)
        {
            if (packagesList == null) {
                var packageA = PackageUtility.CreatePackage("A", "1.0");
                var packageC = PackageUtility.CreatePackage("C", "2.0");

                packagesList = new[] { packageA, packageC };
            }

            var mockRepository = new Mock<IPackageRepository>();
            mockRepository.Setup(p => p.GetPackages()).Returns(packagesList.AsQueryable());

            var mockRepositoryFactory = new Mock<IPackageRepositoryFactory>();
            mockRepositoryFactory.Setup(f => f.CreateRepository(It.IsAny<PackageSource>())).Returns(mockRepository.Object);

            var mockSettingsManager = new MockSettingsManager();

            if (settingsMetadata == null) {
                var A = new PersistencePackageMetadata("A", "1.0", new DateTime(2010, 8, 12));
                var B = new PersistencePackageMetadata("B", "2.0", new DateTime(2011, 3, 2));
                settingsMetadata = new[] { A, B };
            }

            mockSettingsManager.SavePackageMetadata(settingsMetadata);

            var mockPackageSourceProvider = new Mock<IPackageSourceProvider>();
            mockPackageSourceProvider.Setup(p => p.AggregateSource).Returns(new PackageSource("All") { IsAggregate = true });

            return new RecentPackagesRepository(null, mockRepositoryFactory.Object, mockPackageSourceProvider.Object, mockSettingsManager);
        }
        private RecentPackageRepository CreateRecentPackageRepository(
            IEnumerable<IPackage> packagesList = null,
            IEnumerable<IPersistencePackageMetadata> settingsMetadata = null,
            IPackageRepository cacheRepository = null)
        {
            if (packagesList == null)
            {
                var packageA = PackageUtility.CreatePackage("A", "1.0");
                var packageC = PackageUtility.CreatePackage("C", "2.0");

                packagesList = new[] { packageA, packageC };
            }

            var mockRepository = new Mock<IPackageRepository>();
            mockRepository.Setup(p => p.GetPackages()).Returns(packagesList.AsQueryable());

            var mockRepositoryFactory = new Mock<IPackageRepositoryFactory>();
            mockRepositoryFactory.Setup(f => f.CreateRepository(It.IsAny<string>())).Returns(mockRepository.Object);

            var mockSettingsManager = new MockSettingsManager();

            if (settingsMetadata == null)
            {
                var A = new PersistencePackageMetadata("A", "1.0", new DateTime(2010, 8, 12));
                var B = new PersistencePackageMetadata("B", "2.0", new DateTime(2011, 3, 2));
                settingsMetadata = new[] { A, B };
            }

            mockSettingsManager.SavePackageMetadata(settingsMetadata);

            var mockPackageSourceProvider = new MockPackageSourceProvider();
            mockPackageSourceProvider.SavePackageSources(new[] { new PackageSource("source") });

            if (cacheRepository == null)
            {
                cacheRepository = new MockPackageRepository();
            }
            return new RecentPackageRepository(
                /* dte */ null,
                mockRepositoryFactory.Object,
                mockPackageSourceProvider,
                mockSettingsManager,
                cacheRepository);
        }