public async Task TestMoveToNamespaceAsync( string markup, bool expectedSuccess = true, string expectedMarkup = null, TestParameters?testParameters = null, string targetNamespace = null, bool optionCancelled = false, bool testAnalysis = false ) { testParameters ??= new TestParameters(); var moveToNamespaceOptions = TestMoveToNamespaceOptionsService.DefaultOptions; if (optionCancelled) { moveToNamespaceOptions = MoveToNamespaceOptionsResult.Cancelled; } else if (!string.IsNullOrEmpty(targetNamespace)) { moveToNamespaceOptions = new MoveToNamespaceOptionsResult(targetNamespace); } var workspace = CreateWorkspaceFromFile(markup, testParameters.Value); using var testState = new TestState(workspace); testState.TestMoveToNamespaceOptionsService.SetOptions(moveToNamespaceOptions); if (expectedSuccess) { if (optionCancelled) { var actions = await testState.MoveToNamespaceService.GetCodeActionsAsync( testState.InvocationDocument, testState.TestInvocationDocument.SelectedSpans.Single(), CancellationToken.None); var operationTasks = actions .Cast <AbstractMoveToNamespaceCodeAction>() .Select(action => action.GetOperationsAsync(action.GetOptions(CancellationToken.None), CancellationToken.None)); foreach (var task in operationTasks) { var operations = await task; Assert.Empty(operations); } } else { await TestInRegularAndScriptAsync(markup, expectedMarkup); } } else { await TestMissingInRegularAndScriptAsync(markup, parameters : testParameters.Value); } }
internal void SetOptions(MoveToNamespaceOptionsResult moveToNamespaceOptions) => OptionsResult = moveToNamespaceOptions;
public async Task TestMoveToNamespaceAsync( string markup, bool expectedSuccess = true, string expectedMarkup = null, TestParameters?testParameters = null, string targetNamespace = null, bool optionCancelled = false, bool testAnalysis = false, IReadOnlyDictionary <string, string> expectedSymbolChanges = null ) { testParameters ??= new TestParameters(); var moveToNamespaceOptions = TestMoveToNamespaceOptionsService.DefaultOptions; if (optionCancelled) { moveToNamespaceOptions = MoveToNamespaceOptionsResult.Cancelled; } else if (!string.IsNullOrEmpty(targetNamespace)) { moveToNamespaceOptions = new MoveToNamespaceOptionsResult(targetNamespace); } var workspace = CreateWorkspaceFromFile(markup, testParameters.Value); using var testState = new TestState(workspace); testState.TestMoveToNamespaceOptionsService.SetOptions(moveToNamespaceOptions); if (expectedSuccess) { var actions = await testState.MoveToNamespaceService.GetCodeActionsAsync( testState.InvocationDocument, testState.TestInvocationDocument.SelectedSpans.Single(), CancellationToken.None); var operationTasks = actions .Cast <AbstractMoveToNamespaceCodeAction>() .Select(action => action.GetOperationsAsync(action.GetOptions(CancellationToken.None), CancellationToken.None)); foreach (var task in operationTasks) { var operations = await task; if (optionCancelled) { Assert.Empty(operations); } else { Assert.NotEmpty(operations); var renamedCodeActionsOperations = operations .Where(operation => operation is TestSymbolRenamedCodeActionOperationFactoryWorkspaceService.Operation) .Cast <TestSymbolRenamedCodeActionOperationFactoryWorkspaceService.Operation>() .ToImmutableArray(); Assert.NotEmpty(renamedCodeActionsOperations); Assert.NotNull(expectedSymbolChanges); var checkedCodeActions = new HashSet <TestSymbolRenamedCodeActionOperationFactoryWorkspaceService.Operation>(renamedCodeActionsOperations.Length); foreach (var kvp in expectedSymbolChanges) { var originalName = kvp.Key; var newName = kvp.Value; var codeAction = renamedCodeActionsOperations.FirstOrDefault(a => a._symbol.ToDisplayString() == originalName); Assert.Equal(newName, codeAction?._newName); Assert.False(checkedCodeActions.Contains(codeAction)); checkedCodeActions.Add(codeAction); } } } if (!optionCancelled) { await TestInRegularAndScriptAsync(markup, expectedMarkup); } } else { await TestMissingInRegularAndScriptAsync(markup, parameters : testParameters.Value); } }