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();
        }
Esempio n. 4
0
        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());
        }
Esempio n. 6
0
        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");
            }
        }
Esempio n. 7
0
        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();
            }
        }
Esempio n. 8
0
        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();
            }
        }
Esempio n. 9
0
        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");
            }
        }
Esempio n. 10
0
        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());
        }
Esempio n. 12
0
        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();
            }
        }
Esempio n. 13
0
        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());
            }
        }
Esempio n. 14
0
        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();
        }
Esempio n. 15
0
        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());
        }
Esempio n. 16
0
        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();
        }
Esempio n. 17
0
        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");
            }
        }
Esempio n. 18
0
        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");
            }
        }
Esempio n. 19
0
        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());
            }
        }
Esempio n. 20
0
        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();
        }
Esempio n. 21
0
        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");
        }
Esempio n. 22
0
        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");
        }
Esempio n. 23
0
        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());
        }
Esempio n. 24
0
        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();
            }
        }
Esempio n. 25
0
        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();
        }
Esempio n. 26
0
        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());
        }
Esempio n. 27
0
        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());
        }