public async Task RenameTrackingOnReference_Namespace() { var code = @" namespace NS { class C { static void M() { NS$$.C.M(); } } }"; using var state = RenameTrackingTestState.Create(code, LanguageNames.CSharp); state.EditorOperations.InsertText("A"); await state.AssertTag("NS", "NSA"); }
public async Task RenameImplicitTupleFieldExtendedVB() { var code = @" Class C Sub M() Dim x as (Integer, Integer, Integer, Integer, Integer, Integer, Integer, Integer, Integer, Integer) = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10) Dim y = x.Item9$$ End Sub End Class "; using var state = RenameTrackingTestState.Create(code, LanguageNames.VisualBasic); state.EditorOperations.Backspace(); state.EditorOperations.Backspace(); await state.AssertNoTag(); Assert.Empty(await state.GetDocumentDiagnosticsAsync()); }
public async Task RenameTrackingNotOnExplicitTupleFieldReference_CSharp() { var code = @" class C { void M() { (int abc, int) x = (1, 2); var y = x.abc$$; } }"; using var state = RenameTrackingTestState.Create(code, LanguageNames.CSharp); state.EditorOperations.Backspace(); state.EditorOperations.Backspace(); await state.AssertNoTag(); }
public async Task RenameTrackingNotWhenDeclaringEnumMembersEvenAfterCancellation() { var code = @" Enum E $$ End Enum"; using (var state = RenameTrackingTestState.Create(code, LanguageNames.VisualBasic)) { state.EditorOperations.InsertText(" a"); state.EditorOperations.InsertText("b"); await state.AssertNoTag(); state.SendEscape(); state.EditorOperations.InsertText("c"); await state.AssertNoTag(); } }
public async Task RenameTrackingDoesNotProvideDiagnosticAfterCancellation() { var code = @" class C$$ { }"; using var state = RenameTrackingTestState.Create(code, LanguageNames.CSharp); state.EditorOperations.InsertText("at"); await state.AssertTag("C", "Cat"); Assert.NotEmpty(await state.GetDocumentDiagnosticsAsync()); state.SendEscape(); await state.AssertNoTag(); Assert.Empty(await state.GetDocumentDiagnosticsAsync()); }
public async Task RenameTrackingInvokeAndChangeBackToOriginal() { var code = @" class Cat$$ { }"; using (var state = RenameTrackingTestState.Create(code, LanguageNames.CSharp)) { state.EditorOperations.InsertText("s"); await state.AssertTag("Cat", "Cats", invokeAction : true); await state.AssertNoTag(); state.EditorOperations.Backspace(); await state.AssertTag("Cats", "Cat"); } }
public async Task RenameTrackingNotWhenCaseCorrectingReference() { var code = @" Module Program Sub Main() $$main() End Sub End Module"; using (var state = RenameTrackingTestState.Create(code, LanguageNames.VisualBasic)) { state.EditorOperations.Delete(); await state.AssertTag("main", "ain"); state.EditorOperations.InsertText("M"); await state.AssertNoTag(); } }
public async Task RenameTrackingNotThroughEmptyStringResumeOnDifferentSpace() { var code = @" class C$$ { }"; using (var state = RenameTrackingTestState.Create(code, LanguageNames.CSharp)) { state.EditorOperations.Backspace(); // Move to previous space state.MoveCaret(-1); state.EditorOperations.InsertText("D"); await state.AssertNoTag(); } }
public async Task RenameTrackingThroughEmptyStringWithCaretMove() { var code = @" class C$$ { }"; using (var state = RenameTrackingTestState.Create(code, LanguageNames.CSharp)) { state.EditorOperations.Backspace(); state.MoveCaret(-4); state.MoveCaret(4); await state.AssertNoTag(); state.EditorOperations.InsertText("D"); await state.AssertTag("C", "D"); } }
public async Task RenameTrackingNotOnExplicitTupleFieldReference_VB() { var code = @" class C Sub M() Dim x as (abc as integer, int Item2 as integer) = (1, 2) Dim y = x.abc$$ End Sub End Class"; using (var state = RenameTrackingTestState.Create(code, LanguageNames.VisualBasic)) { state.EditorOperations.Backspace(); state.EditorOperations.Backspace(); await state.AssertNoTag(); } }
public async Task RenameImplicitTupleFieldVB() { var code = @" class C Sub M() Dim x as (Integer, Integer) = (1, 2) Dim y = x.Item1$$ End Sub End Class "; using var state = RenameTrackingTestState.Create(code, LanguageNames.VisualBasic); state.EditorOperations.Backspace(); state.EditorOperations.Backspace(); await state.AssertNoTag(); Assert.Null(await state.TryGetCodeActionAsync()); }
public async Task RenameTracking_NoTagWhenFirstEditChangesReferenceToAnotherSymbol() { var code = @" class C { void M() { int abc = 7; int ab = 8; int z = abc$$; } }"; using (var state = RenameTrackingTestState.Create(code, LanguageNames.CSharp)) { state.EditorOperations.Backspace(); await state.AssertNoTag(); } }
public async Task RenameTracking_CannotRenameFromVarInCSharp() { var code = @" class C { void M() { var$$ c = new C(); } }"; using (var state = RenameTrackingTestState.Create(code, LanguageNames.CSharp)) { state.EditorOperations.Backspace(); await state.AssertNoTag(); Assert.Empty(await state.GetDocumentDiagnosticsAsync()); } }
public async Task RenameTrackingReplaceIdentifierWithDiscard() { var code = @" class Class { int Method() { int i; [|i|]$$ = Method(); rteurn 0; } }"; using var state = RenameTrackingTestState.Create(code, LanguageNames.CSharp); var textSpan = state.HostDocument.SelectedSpans.Single(); state.EditorOperations.ReplaceText(new Span(textSpan.Start, textSpan.Length), "_"); await state.AssertNoTag(); }
public async Task RenameImplicitTupleField() { var code = @" class C { void M() { (int, int) x = (1, 2); var y = x.Item1$$; } }"; using var state = RenameTrackingTestState.Create(code, LanguageNames.CSharp); state.EditorOperations.Backspace(); state.EditorOperations.Backspace(); await state.AssertNoTag(); Assert.Null(await state.TryGetCodeActionAsync()); }
public async Task RenameTrackingNotAtMethodArgument() { var code = @" class ABCD { void Goo(int x) { int abc = 3; Goo($$ } }"; using var state = RenameTrackingTestState.Create(code, LanguageNames.CSharp); state.EditorOperations.InsertText("a"); await state.AssertNoTag(); state.EditorOperations.InsertText("b"); await state.AssertNoTag(); }
public async Task RenameTrackingThroughSameIdentifier() { var code = @" class C$$ { }"; using (var state = RenameTrackingTestState.Create(code, LanguageNames.CSharp)) { state.EditorOperations.InsertText("s"); await state.AssertTag("C", "Cs"); state.EditorOperations.Backspace(); await state.AssertNoTag(); state.EditorOperations.InsertText("s"); await state.AssertTag("C", "Cs"); } }
public async Task RenameTrackingThroughKeyword() { var code = @" class i$$ { }"; using (var state = RenameTrackingTestState.Create(code, LanguageNames.CSharp)) { state.EditorOperations.InsertText("n"); await state.AssertNoTag(); state.EditorOperations.InsertText("t"); await state.AssertNoTag(); state.EditorOperations.InsertText("s"); await state.AssertTag("i", "ints"); } }
public async Task RenameTracking_CanRenameToVarInVisualBasic() { var code = @" Class C Sub M() Dim x as C$$ End Sub End Class"; using (var state = RenameTrackingTestState.Create(code, LanguageNames.VisualBasic)) { state.EditorOperations.Backspace(); state.EditorOperations.InsertText("var"); await state.AssertTag("C", "var"); Assert.NotEmpty(await state.GetDocumentDiagnosticsAsync()); } }
public async Task RenameTrackingNotWhenNewIdentifierReferenceBinds() { var code = @" Module Program Sub Main() $$[|main|]() End Sub Sub Goo() End Sub End Module"; using var state = RenameTrackingTestState.Create(code, LanguageNames.VisualBasic); var textSpan = state.HostDocument.SelectedSpans.Single(); state.EditorOperations.ReplaceText(new Span(textSpan.Start, textSpan.Length), "Go"); await state.AssertTag("main", "Go"); state.EditorOperations.InsertText("o"); await state.AssertNoTag(); }
public async Task RenameTrackingUndoTwiceAndContinueSession() { var code = @" class Cat$$ { }"; using var state = RenameTrackingTestState.Create(code, LanguageNames.CSharp); state.EditorOperations.InsertText("abc"); await state.AssertTag("Cat", "Catabc", invokeAction : true); await state.AssertNoTag(); // Resume rename tracking session state.Undo(2); await state.AssertTag("Cat", "Catabc"); state.EditorOperations.InsertText("xyz"); await state.AssertTag("Cat", "Catabcxyz"); }
public async Task RenameTrackingUndoOnceAndStartNewSession() { var code = @" class Cat$$ { }"; using var state = RenameTrackingTestState.Create(code, LanguageNames.CSharp); state.EditorOperations.InsertText("abc"); await state.AssertTag("Cat", "Catabc", invokeAction : true); await state.AssertNoTag(); // Back to original state.Undo(); await state.AssertNoTag(); state.EditorOperations.InsertText("xyz"); await state.AssertTag("Cat", "Catxyz"); }
public async Task RenameImplicitTupleFieldExtended() { var code = @" class C { void M() { (int, int, int, int, int, int, int, int, int, int) x = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10); var y = x.Item9$$; } } "; using var state = RenameTrackingTestState.Create(code, LanguageNames.CSharp); state.EditorOperations.Backspace(); state.EditorOperations.Backspace(); await state.AssertNoTag(); Assert.Empty(await state.GetDocumentDiagnosticsAsync()); }
public async Task RenameTracking_Nameof_FromMethodDefinition_WithOverloads() { var code = @" class C { void M$$() { nameof(M).ToString(); } void M(int x) { } }"; using (var state = RenameTrackingTestState.Create(code, LanguageNames.CSharp)) { state.EditorOperations.InsertText("at"); await state.AssertTag("M", "Mat", invokeAction : true); // Make sure the rename completed var expectedCode = @" class C { void Mat() { nameof(M).ToString(); } void M(int x) { } }"; Assert.Equal(expectedCode, state.HostDocument.TextBuffer.CurrentSnapshot.GetText()); await state.AssertNoTag(); } }
public async Task RenameTrackingRedoAlwaysClearsState() { var code = @" class Cat$$ { }"; using var state = RenameTrackingTestState.Create(code, LanguageNames.CSharp); state.EditorOperations.InsertText("s"); await state.AssertTag("Cat", "Cats", invokeAction : true); await state.AssertNoTag(); // Resume rename tracking session state.Undo(2); await state.AssertTag("Cat", "Cats"); state.Redo(); await state.AssertNoTag(); state.Redo(); await state.AssertNoTag(); }
public async Task RenameTrackingOnReference_Not_Capitalized_Attribute_VB() { var code = @" Import System; Public Class [|$$ustom|]attribute Inherits Attribute End Class "; using var state = RenameTrackingTestState.Create(code, LanguageNames.VisualBasic); state.EditorOperations.InsertText("C"); await state.AssertTag("ustomattribute", "Customattribute", invokeAction : true); var expectedCode = @" Import System; Public Class Customattribute Inherits Attribute End Class "; Assert.Equal(expectedCode, state.HostDocument.GetTextBuffer().CurrentSnapshot.GetText()); }
public async Task RenameTrackingOnReference_Attribute_CSharp() { var code = @" using System; class [|$$ustom|]Attribute : Attribute { } "; using var state = RenameTrackingTestState.Create(code, LanguageNames.CSharp); state.EditorOperations.InsertText("C"); await state.AssertTag("ustomAttribute", "CustomAttribute", invokeAction : true); var expectedCode = @" using System; class CustomAttribute : Attribute { } "; Assert.Equal(expectedCode, state.HostDocument.GetTextBuffer().CurrentSnapshot.GetText()); }