示例#1
0
        public static Tuple <TestWorkspace, EnvDTE.FileCodeModel> CreateWorkspaceAndFileCodeModel(string file)
        {
            var workspace = CSharpWorkspaceFactory.CreateWorkspaceFromFile(file, exportProvider: VisualStudioTestExportProvider.ExportProvider);

            try
            {
                var project  = workspace.CurrentSolution.Projects.Single();
                var document = project.Documents.Single().Id;

                var componentModel  = new MockComponentModel(workspace.ExportProvider);
                var serviceProvider = new MockServiceProvider(componentModel);

                var visualStudioWorkspaceMock = new MockVisualStudioWorkspace(workspace);

                var state = new CodeModelState(serviceProvider, project.LanguageServices, visualStudioWorkspaceMock);

                var codeModel = FileCodeModel.Create(state, null, document, new MockTextManagerAdapter()).Handle;

                return(Tuple.Create(workspace, (EnvDTE.FileCodeModel)codeModel));
            }
            catch
            {
                // We threw during creation of the FileCodeModel. Make sure we clean up our workspace or else we leak it
                workspace.Dispose();
                throw;
            }
        }
示例#2
0
        public static Tuple <TestWorkspace, EnvDTE.FileCodeModel> CreateWorkspaceAndFileCodeModel(string file)
        {
            var workspace = TestWorkspace.CreateCSharp(file, exportProvider: VisualStudioTestExportProvider.Factory.CreateExportProvider());

            try
            {
                var project  = workspace.CurrentSolution.Projects.Single();
                var document = project.Documents.Single().Id;

                var componentModel  = new MockComponentModel(workspace.ExportProvider);
                var serviceProvider = new MockServiceProvider(componentModel);
                WrapperPolicy.s_ComWrapperFactory = MockComWrapperFactory.Instance;

                var visualStudioWorkspaceMock = new MockVisualStudioWorkspace(workspace);
                var threadingContext          = workspace.ExportProvider.GetExportedValue <IThreadingContext>();

                var state = new CodeModelState(
                    threadingContext,
                    serviceProvider,
                    project.LanguageServices,
                    visualStudioWorkspaceMock,
                    new ProjectCodeModelFactory(visualStudioWorkspaceMock, serviceProvider, threadingContext));

                var codeModel = FileCodeModel.Create(state, null, document, new MockTextManagerAdapter()).Handle;

                return(Tuple.Create(workspace, (EnvDTE.FileCodeModel)codeModel));
            }
            catch
            {
                // We threw during creation of the FileCodeModel. Make sure we clean up our workspace or else we leak it
                workspace.Dispose();
                throw;
            }
        }
        public static Tuple<TestWorkspace, EnvDTE.FileCodeModel> CreateWorkspaceAndFileCodeModel(string file)
        {
            var workspace = CSharpWorkspaceFactory.CreateWorkspaceFromFile(file, exportProvider: VisualStudioTestExportProvider.ExportProvider);

            try
            {
                var project = workspace.CurrentSolution.Projects.Single();
                var document = project.Documents.Single().Id;

                var componentModel = new MockComponentModel(workspace.ExportProvider);
                var serviceProvider = new MockServiceProvider(componentModel);
                WrapperPolicy.s_ComWrapperFactory = MockComWrapperFactory.Instance;

                var visualStudioWorkspaceMock = new MockVisualStudioWorkspace(workspace);

                var state = new CodeModelState(serviceProvider, project.LanguageServices, visualStudioWorkspaceMock);

                var codeModel = FileCodeModel.Create(state, null, document, new MockTextManagerAdapter()).Handle;

                return Tuple.Create(workspace, (EnvDTE.FileCodeModel)codeModel);
            }
            catch
            {
                // We threw during creation of the FileCodeModel. Make sure we clean up our workspace or else we leak it
                workspace.Dispose();
                throw;
            }
        }
示例#4
0
        public static (TestWorkspace workspace, VisualStudioWorkspace extraWorkspaceToDisposeButNotUse, EnvDTE.FileCodeModel fileCodeModel) CreateWorkspaceAndFileCodeModel(
            string file
            )
        {
            var workspace = TestWorkspace.CreateCSharp(
                file,
                composition: VisualStudioTestCompositions.LanguageServices
                );

            try
            {
                var project  = workspace.CurrentSolution.Projects.Single();
                var document = project.Documents.Single().Id;

                var componentModel  = new MockComponentModel(workspace.ExportProvider);
                var serviceProvider = new MockServiceProvider(componentModel);
                WrapperPolicy.s_ComWrapperFactory = MockComWrapperFactory.Instance;

                var visualStudioWorkspaceMock = new MockVisualStudioWorkspace(workspace);
                var threadingContext          =
                    workspace.ExportProvider.GetExportedValue <IThreadingContext>();
                var notificationService =
                    workspace.ExportProvider.GetExportedValue <IForegroundNotificationService>();
                var listenerProvider =
                    workspace.ExportProvider.GetExportedValue <AsynchronousOperationListenerProvider>();

                var state = new CodeModelState(
                    threadingContext,
                    serviceProvider,
                    project.LanguageServices,
                    visualStudioWorkspaceMock,
                    new ProjectCodeModelFactory(
                        visualStudioWorkspaceMock,
                        serviceProvider,
                        threadingContext,
                        notificationService,
                        listenerProvider
                        )
                    );

                var codeModel =
                    FileCodeModel.Create(
                        state,
                        null,
                        document,
                        new MockTextManagerAdapter()
                        ).Handle;

                return(workspace, visualStudioWorkspaceMock, codeModel);
            }
            catch
            {
                // We threw during creation of the FileCodeModel. Make sure we clean up our workspace or else we leak it
                workspace.Dispose();
                throw;
            }
        }