public void ErrorListAndTaskListAreClearedWhenProjectWithMultipleFilesIsUnloaded() { using (var app = new VisualStudioApp()) { var project = app.OpenProject(@"TestData\ErrorProjectMultipleFiles.sln"); app.WaitForTaskListItems(typeof(SVsErrorList), 14); app.WaitForTaskListItems(typeof(SVsTaskList), 4); var solutionService = app.GetService<IVsSolution>(typeof(SVsSolution)); Assert.IsNotNull(solutionService); IVsHierarchy selectedHierarchy; ErrorHandler.ThrowOnFailure(solutionService.GetProjectOfUniqueName(project.UniqueName, out selectedHierarchy)); Assert.IsNotNull(selectedHierarchy); Console.WriteLine("Unloading project"); ErrorHandler.ThrowOnFailure(solutionService.CloseSolutionElement((uint)__VSSLNCLOSEOPTIONS.SLNCLOSEOPT_UnloadProject, selectedHierarchy, 0)); app.WaitForTaskListItems(typeof(SVsErrorList), 0); app.WaitForTaskListItems(typeof(SVsTaskList), 0); } }
internal void TaskListTest(VisualStudioApp app, Type taskListService, IList<TaskItemInfo> expectedItems, int[] navigateTo = null) { var items = app.WaitForTaskListItems(taskListService, expectedItems.Count); var actualItems = items.Select(item => new TaskItemInfo(item)).ToList(); Assert.AreEqual(expectedItems.Count, actualItems.Count); AssertUtil.ContainsExactly(actualItems, expectedItems.ToSet()); if (navigateTo != null) { foreach (var i in navigateTo) { Console.WriteLine("Trying to navigate to " + expectedItems[i]); var j = actualItems.IndexOf(expectedItems[i]); Assert.IsTrue(j >= 0); app.ServiceProvider.GetUIThread().Invoke((Action)delegate { items[j].NavigateTo(); }); var doc = app.Dte.ActiveDocument; Assert.IsNotNull(doc); Assert.AreEqual(expectedItems[i].Document, doc.FullName); var textDoc = (EnvDTE.TextDocument)doc.Object("TextDocument"); Assert.AreEqual(expectedItems[i].Line + 1, textDoc.Selection.ActivePoint.Line); Assert.AreEqual(expectedItems[i].Column + 1, textDoc.Selection.ActivePoint.DisplayColumn); } } }
public void ErrorListAndTaskListAreClearedWhenProjectIsDeleted() { using (var app = new VisualStudioApp()) { var project = app.OpenProject(@"TestData\ErrorProjectDelete.sln"); app.WaitForTaskListItems(typeof(SVsErrorList), 7); app.WaitForTaskListItems(typeof(SVsTaskList), 2); Console.WriteLine("Deleting project"); app.Dte.Solution.Remove(project); app.WaitForTaskListItems(typeof(SVsErrorList), 0); app.WaitForTaskListItems(typeof(SVsTaskList), 0); } }