private static VsSafeProjectGuidService CreateInstance(IUnconfiguredProjectTasksService tasksService = null) { var project = UnconfiguredProjectFactory.Create(); tasksService = tasksService ?? IUnconfiguredProjectTasksServiceFactory.ImplementPrioritizedProjectLoadedInHost(() => Task.CompletedTask); return(new VsSafeProjectGuidService(project, tasksService)); }
public async Task GetProjectGuidAsync_WhenProjectUnloads_CancelsTask() { var projectUnloaded = new TaskCompletionSource <object>(); var tasksService = IUnconfiguredProjectTasksServiceFactory.ImplementPrioritizedProjectLoadedInHost(() => projectUnloaded.Task); var accessor = CreateInstance(tasksService); var result = accessor.GetProjectGuidAsync(); Assert.False(result.IsCanceled); // Now "unload" the project projectUnloaded.SetCanceled(); await Assert.ThrowsAnyAsync <OperationCanceledException>(() => { return(result); }); }