private void PerformCommand(string commandName, string parameter = null, DeveroomEditorCommandTargetKey?commandTargetKey = null) { ActionsMock.ResetMock(); switch (commandName) { case "Go To Definition": { var command = new GoToStepDefinitionCommand(_ideScope, new StubBufferTagAggregatorFactoryService(_ideScope), _ideScope.MonitoringService); command.PreExec(_wpfTextView, command.Targets.First()); break; } case "Find Step Definition Usages": { var command = new FindStepDefinitionCommand(_ideScope, new StubBufferTagAggregatorFactoryService(_ideScope), _ideScope.MonitoringService); command.PreExec(_wpfTextView, command.Targets.First()); Wait.For(() => ActionsMock.IsComplete.Should().BeTrue()); break; } case "Comment": { var command = new CommentCommand(_ideScope, new StubBufferTagAggregatorFactoryService(_ideScope), _ideScope.MonitoringService); command.PreExec(_wpfTextView, command.Targets.First()); break; } case "Uncomment": { var command = new UncommentCommand(_ideScope, new StubBufferTagAggregatorFactoryService(_ideScope), _ideScope.MonitoringService); command.PreExec(_wpfTextView, command.Targets.First()); break; } case "Auto Format Table": { var command = new AutoFormatTableCommand(_ideScope, new StubBufferTagAggregatorFactoryService(_ideScope), _ideScope.MonitoringService); _wpfTextView.SimulateType(command, parameter?[0] ?? '|'); break; } case "Define Steps": { var command = new DefineStepsCommand(_ideScope, new StubBufferTagAggregatorFactoryService(_ideScope), _ideScope.MonitoringService); command.PreExec(_wpfTextView, command.Targets.First()); break; } case "Complete": case "Filter Completion": { EnsureStubCompletionBroker(); var command = new CompleteCommand(_ideScope, new StubBufferTagAggregatorFactoryService(_ideScope), _completionBroker, _ideScope.MonitoringService); if (parameter == null) { command.PreExec(_wpfTextView, commandTargetKey ?? command.Targets.First()); } else { _wpfTextView.SimulateTypeText(command, parameter); } break; } default: throw new NotImplementedException(commandName); } }