public async Task RenameTrackingTypingInMiddle() { var code = @" class AB$$CD { }"; using (var state = new RenameTrackingTestState(code, LanguageNames.CSharp)) { state.EditorOperations.InsertText("ZZ"); await state.AssertTag("ABCD", "ABZZCD").ConfigureAwait(true); } }
public void RenameTrackingTypingAtEnd() { var code = @" class C$$ { }"; using (var state = new RenameTrackingTestState(code, LanguageNames.CSharp)) { state.EditorOperations.InsertText("at"); state.AssertTag("C", "Cat"); } }
public void RenameTrackingTypingInMiddle() { var code = @" class AB$$CD { }"; using (var state = new RenameTrackingTestState(code, LanguageNames.CSharp)) { state.EditorOperations.InsertText("ZZ"); state.AssertTag("ABCD", "ABZZCD"); } }
public void RenameTrackingTypingAtBeginning() { var code = @" class $$C { }"; using (var state = new RenameTrackingTestState(code, LanguageNames.CSharp)) { state.EditorOperations.InsertText("AB"); state.AssertTag("C", "ABC"); } }
public async Task RenameTrackingTypingAtBeginning() { var code = @" class $$C { }"; using (var state = new RenameTrackingTestState(code, LanguageNames.CSharp)) { state.EditorOperations.InsertText("AB"); await state.AssertTag("C", "ABC").ConfigureAwait(true); } }
public void RenameTracking_Nameof_FromMethodGroupReference() { var code = @" class C { void M() { nameof(M$$).ToString(); } void M(int x) { } }"; using (var state = new RenameTrackingTestState(code, LanguageNames.CSharp)) { state.EditorOperations.InsertText("at"); state.AssertTag("M", "Mat", invokeAction: true); // Make sure the rename completed var expectedCode = @" class C { void Mat() { nameof(Mat).ToString(); } void Mat(int x) { } }"; Assert.Equal(expectedCode, state.HostDocument.TextBuffer.CurrentSnapshot.GetText()); state.AssertNoTag(); } }
public void RenameTrackingUndoTwiceRedoTwiceUndoStillWorks() { var code = @" class Cat$$ { }"; using (var state = new RenameTrackingTestState(code, LanguageNames.CSharp)) { state.EditorOperations.InsertText("s"); state.AssertTag("Cat", "Cats", invokeAction: true); state.AssertNoTag(); // Resume rename tracking session state.Undo(2); state.AssertTag("Cat", "Cats"); state.Redo(2); state.AssertNoTag(); // Back to original state.Undo(); state.AssertNoTag(); // Resume rename tracking session state.Undo(); state.AssertTag("Cat", "Cats"); } }
public void RenameTrackingRedoAlwaysClearsState() { var code = @" class Cat$$ { }"; using (var state = new RenameTrackingTestState(code, LanguageNames.CSharp)) { state.EditorOperations.InsertText("s"); state.AssertTag("Cat", "Cats", invokeAction: true); state.AssertNoTag(); // Resume rename tracking session state.Undo(2); state.AssertTag("Cat", "Cats"); state.Redo(); state.AssertNoTag(); state.Redo(); state.AssertNoTag(); } }
public void RenameTrackingUndoTwiceAndContinueSession() { var code = @" class Cat$$ { }"; using (var state = new RenameTrackingTestState(code, LanguageNames.CSharp)) { state.EditorOperations.InsertText("abc"); state.AssertTag("Cat", "Catabc", invokeAction: true); state.AssertNoTag(); // Resume rename tracking session state.Undo(2); state.AssertTag("Cat", "Catabc"); state.EditorOperations.InsertText("xyz"); state.AssertTag("Cat", "Catabcxyz"); } }
public void RenameTrackingHandlesSquareBracketsAsVisualBasicEscape() { var code = @" Class $$C End Class"; using (var state = new RenameTrackingTestState(code, LanguageNames.VisualBasic)) { state.EditorOperations.InsertText("["); state.AssertNoTag(); state.MoveCaret(1); state.EditorOperations.InsertText("]"); state.AssertTag("C", "[C]"); } }
public void RenameTrackingAlertsAboutThirdPartyRequestsForCancellationAfterRename() { var code = @" class Cat$$ { public Cat() { } }"; using (var state = new RenameTrackingTestState(code, LanguageNames.CSharp, onAfterGlobalSymbolRenamedReturnValue: false)) { state.EditorOperations.InsertText("s"); state.AssertTag("Cat", "Cats", invokeAction: true); Assert.Equal(1, state.RefactorNotifyService.OnBeforeSymbolRenamedCount); Assert.Equal(1, state.RefactorNotifyService.OnAfterSymbolRenamedCount); state.AssertNotificationMessage(); // Make sure the rename completed var expectedCode = @" class Cats { public Cats() { } }"; Assert.Equal(expectedCode, state.HostDocument.TextBuffer.CurrentSnapshot.GetText()); state.AssertNoTag(); } }
public void RenameTrackingOnReference_Namespace() { var code = @" namespace NS { class C { static void M() { NS$$.C.M(); } } }"; using (var state = new RenameTrackingTestState(code, LanguageNames.CSharp)) { state.EditorOperations.InsertText("A"); state.AssertTag("NS", "NSA"); } }
public void RenameTrackingReplaceIdentifierPrefix() { var code = @" class $$[|Ident|]ifier { }"; using (var state = new RenameTrackingTestState(code, LanguageNames.CSharp)) { var textSpan = state.HostDocument.SelectedSpans.Single(); state.EditorOperations.ReplaceText(new Span(textSpan.Start, textSpan.Length), "Complex"); state.AssertTag("Identifier", "Complexifier"); } }
public void RenameTrackingThroughEmptyStringWithCaretMove() { var code = @" class C$$ { }"; using (var state = new RenameTrackingTestState(code, LanguageNames.CSharp)) { state.EditorOperations.Backspace(); state.MoveCaret(-4); state.MoveCaret(4); state.AssertNoTag(); state.EditorOperations.InsertText("D"); state.AssertTag("C", "D"); } }
public void RenameTrackingThroughSameIdentifier() { var code = @" class C$$ { }"; using (var state = new RenameTrackingTestState(code, LanguageNames.CSharp)) { state.EditorOperations.InsertText("s"); state.AssertTag("C", "Cs"); state.EditorOperations.Backspace(); state.AssertNoTag(); state.EditorOperations.InsertText("s"); state.AssertTag("C", "Cs"); } }
public void RenameTrackingOnBothSidesOfIdentifier() { var code = @" class $$Def { }"; using (var state = new RenameTrackingTestState(code, LanguageNames.CSharp)) { state.EditorOperations.InsertText("Abc"); state.AssertTag("Def", "AbcDef"); state.MoveCaret(3); state.EditorOperations.InsertText("Ghi"); state.AssertTag("Def", "AbcDefGhi"); } }
public void RenameTrackingThroughIllegalStartCharacter() { var code = @" class $$abc { }"; using (var state = new RenameTrackingTestState(code, LanguageNames.CSharp)) { state.EditorOperations.InsertText("9"); state.AssertNoTag(); state.MoveCaret(-1); state.EditorOperations.InsertText("t"); state.AssertTag("abc", "t9abc"); } }
public void RenameTrackingThroughKeyword() { var code = @" class i$$ { }"; using (var state = new RenameTrackingTestState(code, LanguageNames.CSharp)) { state.EditorOperations.InsertText("n"); state.AssertNoTag(); state.EditorOperations.InsertText("t"); state.AssertNoTag(); state.EditorOperations.InsertText("s"); state.AssertTag("i", "ints"); } }
public void RenameTrackingHandlesUnicode() { var code = @" class C$$ { }"; using (var state = new RenameTrackingTestState(code, LanguageNames.CSharp)) { state.EditorOperations.InsertText("ДѮѪÛÊÛÄÁÍäጟõàŸüĵÁiÛEêàêèäåíòèôèêàòîðñëîâî"); state.AssertTag("C", "CДѮѪÛÊÛÄÁÍäጟõàŸüĵÁiÛEêàêèäåíòèôèêàòîðñëîâî"); } }
public void RenameTrackingOnReference_ParameterAsNamedArgument() { var code = @" class C { void M(int x) { M(x$$: x); } }"; using (var state = new RenameTrackingTestState(code, LanguageNames.CSharp)) { state.EditorOperations.InsertText("yz"); state.AssertTag("x", "xyz"); } }
public void RenameTrackingNotWhenCaseCorrectingReference() { var code = @" Module Program Sub Main() $$main() End Sub End Module"; using (var state = new RenameTrackingTestState(code, LanguageNames.VisualBasic)) { state.EditorOperations.Delete(); state.AssertTag("main", "ain"); state.EditorOperations.InsertText("M"); state.AssertNoTag(); } }
public void RenameTrackingNotifiesThirdPartiesOfRenameOperation() { var code = @" class Cat$$ { public Cat() { } }"; using (var state = new RenameTrackingTestState(code, LanguageNames.CSharp)) { state.EditorOperations.InsertText("s"); state.AssertTag("Cat", "Cats", invokeAction: true); Assert.Equal(1, state.RefactorNotifyService.OnBeforeSymbolRenamedCount); Assert.Equal(1, state.RefactorNotifyService.OnAfterSymbolRenamedCount); var expectedCode = @" class Cats { public Cats() { } }"; Assert.Equal(expectedCode, state.HostDocument.TextBuffer.CurrentSnapshot.GetText()); state.AssertNoNotificationMessage(); state.AssertNoTag(); } }
public void RenameTrackingPreviewChanges() { var code = @" class C$$ { }"; using (var state = new RenameTrackingTestState(code, LanguageNames.CSharp)) { var mockPreview = state.Workspace.Services.GetService<IPreviewDialogService>() as MockPreviewDialogService; mockPreview.Called = false; mockPreview.ReturnsNull = false; state.EditorOperations.InsertText("at"); state.AssertTag("C", "Cat", invokeAction: true, actionIndex: 1); Assert.True(mockPreview.Called); Assert.Equal("Rename 'C' to 'Cat':", mockPreview.Description); Assert.Equal("Preview Changes - Rename", mockPreview.Title); Assert.Equal("C", mockPreview.TopLevelName); Assert.Equal(Glyph.ClassInternal, mockPreview.TopLevelGlyph); } }
public void RenameTrackingDeleteFromEnd() { var code = @" class ABC$$ { }"; using (var state = new RenameTrackingTestState(code, LanguageNames.CSharp)) { state.EditorOperations.Backspace(); state.AssertTag("ABC", "AB"); } }
public void RenameTrackingHandlesAtSignAsCSharpEscape() { var code = @" class $$C { }"; using (var state = new RenameTrackingTestState(code, LanguageNames.CSharp)) { state.EditorOperations.InsertText("@"); state.AssertTag("C", "@C"); } }
public void RenameTrackingNotWhenNewIdentifierReferenceBinds() { var code = @" Module Program Sub Main() $$[|main|]() End Sub Sub Foo() End Sub End Module"; using (var state = new RenameTrackingTestState(code, LanguageNames.VisualBasic)) { var textSpan = state.HostDocument.SelectedSpans.Single(); state.EditorOperations.ReplaceText(new Span(textSpan.Start, textSpan.Length), "Fo"); state.AssertTag("main", "Fo"); state.EditorOperations.InsertText("o"); state.AssertNoTag(); } }
public void RenameTrackingReplaceIdentifierCompletely() { var code = @" class [|Cat|]$$ { }"; using (var state = new RenameTrackingTestState(code, LanguageNames.CSharp)) { var textSpan = state.HostDocument.SelectedSpans.Single(); state.EditorOperations.ReplaceText(new Span(textSpan.Start, textSpan.Length), "Dog"); state.AssertTag("Cat", "Dog"); } }
public void RenameTrackingCancelPreviewChanges() { var code = @" class C$$ { }"; var expected = @" class Cat { }"; using (var state = new RenameTrackingTestState(code, LanguageNames.CSharp)) { var mockPreview = state.Workspace.Services.GetService<IPreviewDialogService>() as MockPreviewDialogService; mockPreview.Called = false; mockPreview.ReturnsNull = true; state.EditorOperations.InsertText("at"); state.AssertTag("C", "Cat", invokeAction: true, actionIndex: 1); Assert.True(mockPreview.Called); Assert.Equal(expected, state.HostDocument.TextBuffer.CurrentSnapshot.GetText()); state.AssertTag("C", "Cat"); } }
public void RenameTrackingInvokeAndChangeBackToOriginal() { var code = @" class Cat$$ { }"; using (var state = new RenameTrackingTestState(code, LanguageNames.CSharp)) { state.EditorOperations.InsertText("s"); state.AssertTag("Cat", "Cats", invokeAction: true); state.AssertNoTag(); state.EditorOperations.Backspace(); state.AssertTag("Cats", "Cat"); } }
public void CancelRenameTracking() { var code = @" class C$$ { }"; using (var state = new RenameTrackingTestState(code, LanguageNames.CSharp)) { state.EditorOperations.InsertText("at"); state.AssertTag("C", "Cat"); state.SendEscape(); state.AssertNoTag(); } }
public void RenameTrackingUndoOnceAndStartNewSession() { var code = @" class Cat$$ { }"; using (var state = new RenameTrackingTestState(code, LanguageNames.CSharp)) { state.EditorOperations.InsertText("abc"); state.AssertTag("Cat", "Catabc", invokeAction: true); state.AssertNoTag(); // Back to original state.Undo(); state.AssertNoTag(); state.EditorOperations.InsertText("xyz"); state.AssertTag("Cat", "Catxyz"); } }