예제 #1
0
        /// <summary>
        /// Sets up a limited service provider which can be used for testing.
        ///
        /// This will not include many of the services which are typically available in
        /// VS but is suitable for simple test cases which need just some base functionality.
        /// </summary>
        public static MockServiceProvider CreateMockServiceProvider()
        {
            var serviceProvider = new MockServiceProvider();

            serviceProvider.ComponentModel.AddExtension(
                typeof(IErrorProviderFactory),
                () => new MockErrorProviderFactory()
                );
            serviceProvider.ComponentModel.AddExtension(
                typeof(IContentTypeRegistryService),
                CreateContentTypeRegistryService
                );

#if DEV14_OR_LATER
            serviceProvider.ComponentModel.AddExtension(
                typeof(IInteractiveWindowCommandsFactory),
                () => new MockInteractiveWindowCommandsFactory()
                );
#endif

            serviceProvider.AddService(typeof(ErrorTaskProvider), CreateTaskProviderService, true);
            serviceProvider.AddService(typeof(CommentTaskProvider), CreateTaskProviderService, true);
            serviceProvider.AddService(typeof(UIThreadBase), new MockUIThread());
            var optionsService = new MockPythonToolsOptionsService();
            serviceProvider.AddService(typeof(IPythonToolsOptionsService), optionsService, true);

            var ptvsService = new PythonToolsService(serviceProvider);
            serviceProvider.AddService(typeof(PythonToolsService), ptvsService);
            return(serviceProvider);
        }
        public void ObjectExtenderContainerConverterConvertToTypeCompliantWithXmlSerializer()
        {
            MockServiceProvider        mockServiceProvider = new MockServiceProvider();
            MockServiceProviderService mockService         = new MockServiceProviderService();

            mockServiceProvider.AddService(typeof(IExtensionProviderService), mockService);

            ObjectExtenderContainerConverter converter = new ObjectExtenderContainerConverter(mockServiceProvider);

            TestSerializableObject testObject1 = new TestSerializableObject();

            testObject1.ValueOne = "TestDataOne";
            testObject1.ValueTwo = 33;
            string stringRepresentation;

            Type[] types = { typeof(TestSerializableObject) };
            ObjectExtenderContainer container1 = new ObjectExtenderContainer();

            container1.ObjectExtenders.Add(testObject1);

            stringRepresentation = GenericSerializer.Serialize <ObjectExtenderContainer>(container1, types);

            string stringRepresentation2 = converter.ConvertTo(stringRepresentation, typeof(string)) as string;

            Assert.AreEqual(stringRepresentation, stringRepresentation2, "Not equal");
        }
        public void ObjectExtenderContainerConverterConvertFromTypeCompliantWithXmlSerializer()
        {
            MockServiceProvider mockServiceProvider = new MockServiceProvider();

            Type[] types = { typeof(TestSerializableObject) };
            MockServiceProviderService mockService = new MockServiceProviderService();

            mockService.ObjectExtenderTypes.Add(types[0]);
            mockServiceProvider.AddService(typeof(IExtensionProviderService), mockService);

            ObjectExtenderContainerConverter converter = new ObjectExtenderContainerConverter(mockServiceProvider);

            TestSerializableObject testObject1 = new TestSerializableObject();

            testObject1.ValueOne = "TestDataOne";
            testObject1.ValueTwo = 33;
            string stringRepresentation;
            ObjectExtenderContainer container1 = new ObjectExtenderContainer();

            container1.ObjectExtenders.Add(testObject1);

            stringRepresentation = GenericSerializer.Serialize <ObjectExtenderContainer>(container1, types);

            ObjectExtenderContainer container2 = converter.ConvertFrom(stringRepresentation) as ObjectExtenderContainer;

            Assert.IsNotNull(container2, "container is null");
            Assert.IsNotNull(container2.ObjectExtenders, "ObjectExtenders is null");
            Assert.AreEqual(1, container2.ObjectExtenders.Count, "container.ObjectExtenders.Count != 1");

            TestSerializableObject testObject2 = container2.ObjectExtenders[0] as TestSerializableObject;

            Assert.AreEqual(testObject1.ValueOne, testObject2.ValueOne, "Not equal");
            Assert.AreEqual(testObject1.ValueTwo, testObject2.ValueTwo, "Not equal");
        }
예제 #4
0
        /// <summary>
        /// Sets up a limited service provider which can be used for testing.
        ///
        /// This will not include many of the services which are typically available in
        /// VS but is suitable for simple test cases which need just some base functionality.
        /// </summary>
        public static MockServiceProvider CreateMockServiceProvider()
        {
            var serviceProvider = new MockServiceProvider();
            var errorProvider   = new MockErrorProviderFactory();

            serviceProvider.AddService(typeof(MockErrorProviderFactory), errorProvider, true);
            serviceProvider.AddService(typeof(SComponentModel), new MockComponentModel());
            serviceProvider.AddService(
                typeof(ErrorTaskProvider),
                (container, type) => new ErrorTaskProvider(serviceProvider, null, errorProvider),
                true
                );
            serviceProvider.AddService(
                typeof(CommentTaskProvider),
                (container, type) => new CommentTaskProvider(serviceProvider, null, errorProvider),
                true
                );
            serviceProvider.AddService(typeof(IUIThread), new MockUIThread());
            var optionsService = new MockPythonToolsOptionsService();

            serviceProvider.AddService(typeof(IPythonToolsOptionsService), optionsService, true);

            var ptvsService = new PythonToolsService(serviceProvider);

            serviceProvider.AddService(typeof(PythonToolsService), ptvsService);
            return(serviceProvider);
        }
예제 #5
0
        private static CodeGenerationService CreateCodeGenerator(string itemPath, out MockVsRDT rdt)
        {
            string fullItemPath    = Path.Combine(Directory.GetCurrentDirectory(), itemPath);
            string fullProjectPath = Path.Combine(Directory.GetCurrentDirectory(), "Project.project");
            MockServiceProvider serviceProvider = new MockServiceProvider();
            MockVSHierarchy     vsHierarchy     = new MockVSHierarchy(fullProjectPath);
            MockVsSolution      vsSolution      = new MockVsSolution(vsHierarchy);

            rdt = new MockVsRDT(fullItemPath, vsHierarchy, 0);
            MockVsTextManager         textManager       = new MockVsTextManager();
            MockVsUIShellOpenDocument shellOpenDocument = new MockVsUIShellOpenDocument();

            serviceProvider.AddService(typeof(SVsSolution), vsSolution);
            serviceProvider.AddService(typeof(IVsRunningDocumentTable), rdt);
            serviceProvider.AddService(typeof(VsTextManagerClass), textManager);
            serviceProvider.AddService(typeof(SVsUIShellOpenDocument), shellOpenDocument);
            return(new TestableCodeGenerationService(serviceProvider));
        }
        public void ObjectExtenderContainerConverterCanConvertFromString()
        {
            MockServiceProvider        mockServiceProvider = new MockServiceProvider();
            MockServiceProviderService mockService         = new MockServiceProviderService();

            mockServiceProvider.AddService(typeof(IExtensionProviderService), mockService);

            ObjectExtenderContainerConverter converter = new ObjectExtenderContainerConverter(mockServiceProvider);

            Assert.IsTrue(converter.CanConvertFrom(typeof(string)), "Cannot convert from a string");
        }
예제 #7
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));
        }
예제 #8
0
        /// <summary>
        /// Sets up a limited service provider which can be used for testing.
        ///
        /// This will not include many of the services which are typically available in
        /// VS but is suitable for simple test cases which need just some base functionality.
        /// </summary>
        public static MockServiceProvider CreateMockServiceProvider(
            bool suppressTaskProvider = true
            )
        {
            var serviceProvider = new MockServiceProvider();

            serviceProvider.ComponentModel.AddExtension(
                typeof(IErrorProviderFactory),
                () => new MockErrorProviderFactory()
                );
            serviceProvider.ComponentModel.AddExtension(
                typeof(IContentTypeRegistryService),
                CreateContentTypeRegistryService
                );

            serviceProvider.ComponentModel.AddExtension(
                typeof(IInteractiveWindowCommandsFactory),
                () => new MockInteractiveWindowCommandsFactory()
                );

            var optService = new Lazy <MockInterpreterOptionsService>(() => new MockInterpreterOptionsService());

            serviceProvider.ComponentModel.AddExtension <IInterpreterRegistryService>(() => optService.Value);
            serviceProvider.ComponentModel.AddExtension <IInterpreterOptionsService>(() => optService.Value);

            var editorServices = CreatePythonEditorServices(serviceProvider, serviceProvider.ComponentModel);

            serviceProvider.ComponentModel.AddExtension(() => editorServices);

            var analysisEntryServiceCreator = new Lazy <AnalysisEntryService>(() => new AnalysisEntryService(new Lazy <PythonEditorServices>(() => editorServices)));

            serviceProvider.ComponentModel.AddExtension <IAnalysisEntryService>(() => analysisEntryServiceCreator.Value);
            serviceProvider.ComponentModel.AddExtension(() => analysisEntryServiceCreator.Value);

            if (suppressTaskProvider)
            {
                serviceProvider.AddService(typeof(ErrorTaskProvider), null, true);
                serviceProvider.AddService(typeof(CommentTaskProvider), null, true);
            }
            else
            {
                serviceProvider.AddService(typeof(ErrorTaskProvider), CreateTaskProviderService, true);
                serviceProvider.AddService(typeof(CommentTaskProvider), CreateTaskProviderService, true);
            }
            serviceProvider.AddService(typeof(UIThreadBase), new MockUIThread());
            var optionsService = new MockPythonToolsOptionsService();

            serviceProvider.AddService(typeof(IPythonToolsOptionsService), optionsService, true);

            var ptvsService = new PythonToolsService(serviceProvider);

            serviceProvider.AddService(typeof(PythonToolsService), ptvsService);
            return(serviceProvider);
        }
예제 #9
0
        /// <summary>
        /// Sets up a limited service provider which can be used for testing.
        ///
        /// This will not include many of the services which are typically available in
        /// VS but is suitable for simple test cases which need just some base functionality.
        /// </summary>
        public static MockServiceProvider CreateMockServiceProvider(
            bool suppressTaskProvider = true
            )
        {
            var componentModel  = new MockComponentModel();
            var serviceProvider = new MockServiceProvider(componentModel);

            componentModel.AddExtension(
                typeof(IErrorProviderFactory),
                () => new MockErrorProviderFactory()
                );
            componentModel.AddExtension(
                typeof(IContentTypeRegistryService),
                CreateContentTypeRegistryService
                );

            componentModel.AddExtension(
                typeof(IInteractiveWindowCommandsFactory),
                () => new MockInteractiveWindowCommandsFactory()
                );

            var optService = new Lazy <MockInterpreterOptionsService>(() => new MockInterpreterOptionsService());

            componentModel.AddExtension <IInterpreterRegistryService>(() => optService.Value);
            componentModel.AddExtension <IInterpreterOptionsService>(() => optService.Value);

            serviceProvider.AddService(typeof(UIThreadBase), new MockUIThread());
            var optionsService = new MockPythonToolsOptionsService();

            serviceProvider.AddService(typeof(IPythonToolsOptionsService), optionsService, true);

            var ptvsService = new PythonToolsService(serviceProvider, true);

            serviceProvider.AddService(typeof(PythonToolsService), ptvsService);
            return(serviceProvider);
        }
예제 #10
0
        public void EditValueWithNoFormsServiceThrows()
        {
            MockVSHierarchy     root            = new MockVSHierarchy();
            MockVsSolution      solution        = new MockVsSolution(root);
            MockServiceProvider serviceProvider = new MockServiceProvider();

            serviceProvider.AddService(typeof(IVsSolution), solution);
            MockTypeDescriptorContext context = new MockTypeDescriptorContext(serviceProvider);
            string          value             = "Project1.txt";
            MockVSHierarchy project           = new MockVSHierarchy(value);

            root.AddProject(project);
            SolutionPickerEditor target = new SolutionPickerEditor();

            target.EditValue(serviceProvider, null);
        }
예제 #11
0
        public void TestArtifactIsGenerated()
        {
            MockServiceProvider serviceProvider = new MockServiceProvider();
            MockVSHierarchy     root            = new MockVSHierarchy();
            MockVsSolution      solution        = new MockVsSolution(root);
            MockVSHierarchy     project         = new MockVSHierarchy("Project1.project");

            root.AddProject(project);
            serviceProvider.AddService(typeof(SVsSolution), solution);
            CodeGenerationService target    = new CodeGenerationService(serviceProvider);
            MyArtifactLink        validLink = new MyArtifactLink(project.GUID, "item1.cs");

            Assert.IsFalse(target.IsArtifactAlreadyGenerated(validLink));
            project.AddChild("item1.cs");
            Assert.IsTrue(target.IsArtifactAlreadyGenerated(validLink));
        }
        public void ExtensionProviderContainerConverterConvertToExtensionProvider()
        {
            MockExtensionProvider      provider            = new MockExtensionProvider();
            MockServiceProvider        mockServiceProvider = new MockServiceProvider();
            MockServiceProviderService mockService         = new MockServiceProviderService();

            mockServiceProvider.AddService(typeof(IExtensionProviderService), mockService);

            ExtensionProviderConverter converter = new ExtensionProviderConverter(mockServiceProvider);

            MockExtensionProvider provider1 = converter.ConvertFrom(provider.ToString()) as MockExtensionProvider;

            Assert.AreEqual(provider.Id, provider1.Id, "Not Equal");
            Assert.AreEqual(provider.Description, provider1.Description, "Not Equal");
            Assert.AreEqual(provider.Name, provider1.Name, "Not Equal");
        }
예제 #13
0
        public void TestValidateDelete()
        {
            MockServiceProvider serviceProvider = new MockServiceProvider();
            MockVSHierarchy     root            = new MockVSHierarchy();
            MockVsSolution      solution        = new MockVsSolution(root);
            MockVSHierarchy     project         = new MockVSHierarchy("Project1.project");

            root.AddProject(project);
            serviceProvider.AddService(typeof(SVsSolution), solution);
            TestableCodeGenerationService target = new TestableCodeGenerationService(serviceProvider);
            MyArtifactLink validLink             = new MyArtifactLink(project.GUID, "item1.cs");
            HierarchyNode  node = target.ValidateDelete(validLink);

            Assert.IsNull(node);
            Assert.AreEqual <int>(0, target.LogEntries.Count);
            project.AddChild("item1.cs");
            node = target.ValidateDelete(validLink);
            Assert.IsNotNull(node);
            Assert.AreEqual <int>(1, target.LogEntries.Count);
        }
예제 #14
0
        public void TestValidate()
        {
            MockServiceProvider serviceProvider = new MockServiceProvider();
            MockVSHierarchy     root            = new MockVSHierarchy();
            MockVsSolution      solution        = new MockVsSolution(root);
            MockVSHierarchy     project         = new MockVSHierarchy("Project1.project");

            root.AddProject(project);
            serviceProvider.AddService(typeof(SVsSolution), solution);
            CodeGenerationService target    = new CodeGenerationService(serviceProvider);
            MyArtifactLink        validLink = new MyArtifactLink(project.GUID, "item1.cs");

            Assert.IsTrue(target.IsValid(validLink));
            MyArtifactLink invalidLink1 = new MyArtifactLink(Guid.NewGuid(), "item2.cs");

            Assert.IsFalse(target.IsValid(invalidLink1));
            MyArtifactLink invalidLink2 = new MyArtifactLink(project.GUID, "it:em3.cs");

            Assert.IsFalse(target.IsValid(invalidLink2));
            MyArtifactLink invalidLink3 = new MyArtifactLink(Guid.NewGuid(), "<item3.cs>");

            Assert.IsFalse(target.IsValid(invalidLink3));
        }
예제 #15
0
 public EditorTestToolset WithPythonToolsService()
 {
     _serviceProvider.AddService(typeof(IPythonToolsOptionsService), new MockPythonToolsOptionsService());
     _serviceProvider.AddService(typeof(PythonToolsService), new PythonToolsService(_serviceProvider));
     return(this);
 }