public async Task UiInitializationTest() { var ui = await ReAttachUi.InitAsync(_mocks.MockReAttachPackage.Object); _mocks.MockMenuService.Verify(m => m.AddCommand(It.IsAny <MenuCommand>()), Times.Exactly(ReAttachConstants.ReAttachHistorySize)); Assert.AreEqual(0, _mocks.MockReAttachReporter.ErrorCount, "Unexpected number of ReAttach errors."); Assert.AreEqual(0, _mocks.MockReAttachReporter.WarningCount, "Unexpected number of ReAttach warnings."); }
public async Task ReAttachCommandClickedEmptyHistory() { var ui = await ReAttachUi.InitAsync(_mocks.MockReAttachPackage.Object); await ui.ReAttachCommandClickedAsync(new VsShell.OleMenuCommand((sender, args) => {}, new CommandID(ReAttachConstants.ReAttachPackageCmdSet, ReAttachConstants.ReAttachCommandId)), null); _mocks.MockReAttachDebugger.Verify(d => d.ReAttach(It.IsAny <ReAttachTarget>()), Times.Never()); Assert.AreEqual(0, _mocks.MockReAttachReporter.ErrorCount, "Unexpected number of ReAttach errors."); Assert.AreEqual(0, _mocks.MockReAttachReporter.WarningCount, "Unexpected number of ReAttach warnings."); }
public async Task InitializeAsync(ReAttachPackage package, ReAttachHistory history, CancellationToken cancellationToken) { _history = history; await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync(cancellationToken); _ui = (await package.GetServiceAsync(typeof(ReAttachUi))) as ReAttachUi; if (_ui == null) { ReAttachUtils.ShowStartupError("Unable to obtain reference to UI."); return; } var debugger = (await package.GetServiceAsync(typeof(IVsDebugger))) as IVsDebugger; if (debugger == null) { ReAttachUtils.ShowStartupError("Unable to obtain reference to debugger."); return; } if (debugger.AdviseDebugEventCallback(this) != VSConstants.S_OK) { ReAttachUtils.ShowStartupError("Unable to subscribe on debug events."); return; } if (debugger.AdviseDebuggerEvents(this, out _cookie) != VSConstants.S_OK) { ReAttachUtils.ShowStartupError("Unable to subscribe on debugger mode changes."); return; } var dte = await package.GetServiceAsync(typeof(EnvDTE.DTE)) as DTE2; if (dte == null) { ReAttachUtils.ShowStartupError("Unable to get obtain reference to automation object model (DTE2)."); return; } _dteDebugger = dte.Debugger as Debugger2; if (_dteDebugger == null) { ReAttachUtils.ShowStartupError("Unable to get reference to debugger from automation object."); return; } _engines = GetTransportEngines(); }
public async Task NoDialogShownWhenTargetIsAlreadyRunning() { var ui = await ReAttachUi.InitAsync(_mocks.MockReAttachPackage.Object); _mocks.MockReAttachDebugger.Setup(d => d.ReAttach(It.IsAny <ReAttachTarget>())).Returns(true); _mocks.MockReAttachHistoryItems.AddFirst(new ReAttachTarget(123, "path", "user")); var id = new CommandID(ReAttachConstants.ReAttachPackageCmdSet, ReAttachConstants.ReAttachCommandId); var command = new VsShell.OleMenuCommand((sender, args) => { }, id); await ui.ReAttachCommandClickedAsync(command, null); _mocks.MockReAttachDebugger.Verify(d => d.ReAttach(It.IsAny <ReAttachTarget>()), Times.Once()); Assert.AreEqual(0, _mocks.MockReAttachReporter.ErrorCount, "Unexpected number of ReAttach errors."); Assert.AreEqual(0, _mocks.MockReAttachReporter.WarningCount, "Unexpected number of ReAttach warnings."); }
public async Task CommandsShouldBeVisibleIfTheirInHistoryAndNotAttached() { var ui = await ReAttachUi.InitAsync(_mocks.MockReAttachPackage.Object); _mocks.MockReAttachDebugger.Setup(d => d.ReAttach(It.IsAny <ReAttachTarget>())).Returns(true); for (var i = 1; i <= 3; i++) { _mocks.MockReAttachHistoryItems.AddFirst(new ReAttachTarget(123, "name" + i, "user" + i)); } ui.Update(); Assert.AreEqual(3, ui.Commands.Count(c => c.Visible), "Incorrect number of commands visible."); _mocks.MockReAttachHistoryItems[2].IsAttached = true; ui.Update(); Assert.AreEqual(2, ui.Commands.Count(c => c.Visible), "Incorrect number of commands visible."); }
public async Task WillDoReAttachIfHistoryItemsArePresent() { var ui = await ReAttachUi.InitAsync(_mocks.MockReAttachPackage.Object); _mocks.MockReAttachDebugger.Setup(d => d.ReAttach(It.IsAny <ReAttachTarget>())).Returns(true); for (var i = 1; i < 5; i++) { _mocks.MockReAttachHistoryItems.AddLast(new ReAttachTarget(i, "path" + i, "user" + i)); } Assert.AreEqual(1, _mocks.MockReAttachHistoryItems[0].ProcessId, "Wrong target on top of ReAttach list."); var id = new CommandID(ReAttachConstants.ReAttachPackageCmdSet, ReAttachConstants.ReAttachCommandId + 3); var command = new VsShell.OleMenuCommand((sender, args) => { }, id); await ui.ReAttachCommandClickedAsync(command, null); _mocks.MockReAttachDebugger.Verify(d => d.ReAttach(_mocks.MockReAttachHistoryItems[3]), Times.Once()); Assert.AreEqual(0, _mocks.MockReAttachReporter.ErrorCount, "Unexpected number of ReAttach errors."); Assert.AreEqual(0, _mocks.MockReAttachReporter.WarningCount, "Unexpected number of ReAttach warnings."); }