public async Task InitializedAsync_WhenInitializedWithContext_RegistersContextWithTracker() { string contextIdResult = null; var activeWorkspaceProjectContextTracker = IActiveEditorContextTrackerFactory.ImplementRegisterContext(id => { contextIdResult = id; }); var context = IWorkspaceProjectContextMockFactory.Create(); var accessor = IWorkspaceProjectContextAccessorFactory.ImplementContext(context, "ContextId"); var provider = new WorkspaceProjectContextProviderMock(); provider.ImplementCreateProjectContextAsync(project => accessor); var instance = await CreateInitializedInstanceAsync(workspaceProjectContextProvider : provider.Object, activeWorkspaceProjectContextTracker : activeWorkspaceProjectContextTracker); Assert.Equal("ContextId", contextIdResult); }
public async Task Dispose_WhenInitializedWithContext_UnregistersContextWithTracker() { IWorkspaceProjectContext result = null; var activeWorkspaceProjectContextTracker = IActiveEditorContextTrackerFactory.ImplementReleaseContext(c => { result = c; }); var context = IWorkspaceProjectContextMockFactory.Create(); var accessor = IWorkspaceProjectContextAccessorFactory.ImplementContext(context); var provider = new WorkspaceProjectContextProviderMock(); provider.ImplementCreateProjectContextAsync(project => accessor); var instance = await CreateInitializedInstanceAsync(workspaceProjectContextProvider : provider.Object, activeWorkspaceProjectContextTracker : activeWorkspaceProjectContextTracker); await instance.DisposeAsync(); Assert.Same(context, result); }
public async Task OnProjectChangedAsync_RespectsIsActiveContext(bool evaluation, bool isActiveContext) { bool?isActiveContextResult = null; void applyChanges(IProjectVersionedValue <IProjectSubscriptionUpdate> u, bool iac, CancellationToken _) { isActiveContextResult = iac; } var activeWorkspaceProjectContextTracker = IActiveEditorContextTrackerFactory.ImplementIsActiveEditorContext(context => isActiveContext); var applyChangesToWorkspaceContext = evaluation ? IApplyChangesToWorkspaceContextFactory.ImplementApplyProjectEvaluationAsync(applyChanges) : IApplyChangesToWorkspaceContextFactory.ImplementApplyProjectBuildAsync(applyChanges); var instance = await CreateInitializedInstanceAsync(applyChangesToWorkspaceContext : applyChangesToWorkspaceContext, activeWorkspaceProjectContextTracker : activeWorkspaceProjectContextTracker); var update = IProjectVersionedValueFactory.CreateEmpty(); await instance.OnProjectChangedAsync(update, evaluation); Assert.Equal(isActiveContext, isActiveContextResult); }
private static WorkspaceProjectContextHostInstance CreateInstance(ConfiguredProject?project = null, IProjectThreadingService?threadingService = null, IUnconfiguredProjectTasksService?tasksService = null, IProjectSubscriptionService?projectSubscriptionService = null, IActiveEditorContextTracker?activeWorkspaceProjectContextTracker = null, IWorkspaceProjectContextProvider?workspaceProjectContextProvider = null, IApplyChangesToWorkspaceContext?applyChangesToWorkspaceContext = null) { project ??= ConfiguredProjectFactory.Create(); threadingService ??= IProjectThreadingServiceFactory.Create(); tasksService ??= IUnconfiguredProjectTasksServiceFactory.Create(); projectSubscriptionService ??= IProjectSubscriptionServiceFactory.Create(); activeWorkspaceProjectContextTracker ??= IActiveEditorContextTrackerFactory.Create(); workspaceProjectContextProvider ??= IWorkspaceProjectContextProviderFactory.ImplementCreateProjectContextAsync(IWorkspaceProjectContextAccessorFactory.Create()); applyChangesToWorkspaceContext ??= IApplyChangesToWorkspaceContextFactory.Create(); IDataProgressTrackerService dataProgressTrackerService = IDataProgressTrackerServiceFactory.Create(); return(new WorkspaceProjectContextHostInstance(project, threadingService, tasksService, projectSubscriptionService, workspaceProjectContextProvider, activeWorkspaceProjectContextTracker, ExportFactoryFactory.ImplementCreateValueWithAutoDispose(() => applyChangesToWorkspaceContext), dataProgressTrackerService)); }
private WorkspaceProjectContextHostInstance CreateInstance(ConfiguredProject project = null, IProjectThreadingService threadingService = null, IUnconfiguredProjectTasksService tasksService = null, IProjectSubscriptionService projectSubscriptionService = null, IActiveEditorContextTracker activeWorkspaceProjectContextTracker = null, IWorkspaceProjectContextProvider workspaceProjectContextProvider = null, IApplyChangesToWorkspaceContext applyChangesToWorkspaceContext = null) { project = project ?? ConfiguredProjectFactory.Create(); threadingService = threadingService ?? IProjectThreadingServiceFactory.Create(); tasksService = tasksService ?? IUnconfiguredProjectTasksServiceFactory.Create(); projectSubscriptionService = projectSubscriptionService ?? IProjectSubscriptionServiceFactory.Create(); activeWorkspaceProjectContextTracker = activeWorkspaceProjectContextTracker ?? IActiveEditorContextTrackerFactory.Create(); workspaceProjectContextProvider = workspaceProjectContextProvider ?? IWorkspaceProjectContextProviderFactory.ImplementCreateProjectContextAsync(IWorkspaceProjectContextAccessorFactory.Create()); applyChangesToWorkspaceContext = applyChangesToWorkspaceContext ?? IApplyChangesToWorkspaceContextFactory.Create(); return(new WorkspaceProjectContextHostInstance(project, threadingService, tasksService, projectSubscriptionService, workspaceProjectContextProvider, activeWorkspaceProjectContextTracker, ExportFactoryFactory.ImplementCreateValueWithAutoDispose(() => applyChangesToWorkspaceContext))); }