Пример #1
0
        public void SendSingleLineSubmissionToInteractive()
        {
            VisualStudio.InteractiveWindow.InsertCode("// scenario 1");
            var project = new Project(ProjectName);

            VisualStudio.SolutionExplorer.OpenFile(project, FileName);
            VisualStudio.Editor.PlaceCaret("/* 1 */", charsOffset: 1);
            VisualStudio.Editor.PlaceCaret("/* 2 */", charsOffset: -1, extendSelection: true);
            VisualStudio.ExecuteCommand(WellKnownCommandNames.InteractiveConsole_ExecuteInInteractive);
            VisualStudio.InteractiveWindow.WaitForLastReplOutput("int x = 1;");

            VisualStudio.InteractiveWindow.ClearReplText();
            VisualStudio.InteractiveWindow.SubmitText("x.ToString()");
            VisualStudio.InteractiveWindow.WaitForLastReplOutputContains("\"1\"");
        }
Пример #2
0
        public void NavigationBetweenKeywords()
        {
            VisualStudio.Editor.SetText(@"
Class C
    Sub Main()
        For a = 0 To 1 Step 1
            For b = 0 To 2
        Next b, a
    End Sub
End Class");

            Verify("To", 3);
            VisualStudio.ExecuteCommand("Edit.NextHighlightedReference");
            VisualStudio.Editor.Verify.CurrentLineText("For a = 0 To 1 Step$$ 1", assertCaretPosition: true, trimWhitespace: true);
        }
Пример #3
0
        public void ExecuteSingleLineSubmissionInInteractiveWhilePreservingReplSubmissionBuffer()
        {
            VisualStudio.InteractiveWindow.InsertCode("// scenario 5");
            var project = new Project(ProjectName);

            VisualStudio.SolutionExplorer.OpenFile(project, FileName);
            VisualStudio.Editor.PlaceCaret("/* 1 */", charsOffset: 1);
            VisualStudio.Editor.PlaceCaret("/* 2 */", charsOffset: -1, extendSelection: true);
            VisualStudio.ExecuteCommand(WellKnownCommandNames.InteractiveConsole_ExecuteInInteractive);
            VisualStudio.InteractiveWindow.WaitForLastReplInputContains("// scenario 5");

            VisualStudio.InteractiveWindow.ClearReplText();
            VisualStudio.InteractiveWindow.SubmitText("x");
            VisualStudio.InteractiveWindow.WaitForLastReplOutput("1");
        }
Пример #4
0
        public void SimpleExtractMethod()
        {
            VisualStudio.Editor.SetText(TestSource);
            VisualStudio.Editor.PlaceCaret("Console", charsOffset: -1);
            VisualStudio.Editor.PlaceCaret("World", charsOffset: 4, extendSelection: true);
            VisualStudio.ExecuteCommand(WellKnownCommandNames.Refactor_ExtractMethod);

            var expectedMarkup =
                @"
using System;
public class Program
{
    public int Method()
    {
        [|NewMethod|]();
        int a;
        int b;
        a = 5;
        b = 10;
        int result = a * b;
        return result;
    }

    private static void [|NewMethod|]()
    {
        Console.WriteLine(""Hello World"");
    }
}";

            MarkupTestFile.GetSpans(
                expectedMarkup,
                out var expectedText,
                out ImmutableArray <TextSpan> spans
                );
            VisualStudio.Editor.Verify.TextContains(expectedText);
            AssertEx.SetEqual(
                spans,
                VisualStudio.Editor.GetTagSpans(VisualStudio.InlineRenameDialog.ValidRenameTag)
                );

            VisualStudio.Editor.SendKeys("SayHello", VirtualKey.Enter);
            VisualStudio.Editor.Verify.TextContains(
                @"private static void SayHello()
    {
        Console.WriteLine(""Hello World"");
    }"
                );
        }
Пример #5
0
        private void CommitOnSave()
        {
            VisualStudio.Editor.SetText(@"Module Module1
    Sub Main()
    End Sub
End Module
");

            VisualStudio.Editor.PlaceCaret("(", charsOffset: 1);
            VisualStudio.Editor.SendKeys("x   as   integer", VirtualKey.Tab);
            VisualStudio.Editor.SendKeys(new KeyPress(VirtualKey.S, ShiftState.Ctrl));
            VisualStudio.Editor.Verify.TextContains(@"Sub Main(x As Integer)");
            VisualStudio.ExecuteCommand(WellKnownCommandNames.Edit_Undo);
            VisualStudio.Editor.Verify.TextContains(@"Sub Main(x   As   Integer)");
            VisualStudio.Editor.Verify.CaretPosition(45);
        }
Пример #6
0
        public void CtrlAltSpaceOption()
        {
            VisualStudio.Editor.SetUseSuggestionMode(false);

            VisualStudio.SendKeys.Send("Nam Foo");
            VisualStudio.Editor.Verify.CurrentLineText(
                "Namespace Foo$$",
                assertCaretPosition: true
                );

            ClearEditor();

            VisualStudio.ExecuteCommand(WellKnownCommandNames.Edit_ToggleCompletionMode);

            VisualStudio.SendKeys.Send("Nam Foo");
            VisualStudio.Editor.Verify.CurrentLineText("Nam Foo$$", assertCaretPosition: true);
        }
Пример #7
0
        public void Navigation()
        {
            var text = @"
class C
{
   void M()
    {
        int x;
        x = 3;
    }
}";

            VisualStudio.Editor.SetText(text);
            VisualStudio.Editor.PlaceCaret("x");
            VisualStudio.Workspace.WaitForAsyncOperations(Helper.HangMitigatingTimeout, FeatureAttribute.ReferenceHighlighting);
            VisualStudio.ExecuteCommand("Edit.NextHighlightedReference");
            VisualStudio.Workspace.WaitForAsyncOperations(Helper.HangMitigatingTimeout, FeatureAttribute.ReferenceHighlighting);
            VisualStudio.Editor.Verify.CurrentLineText("x$$ = 3;", assertCaretPosition: true, trimWhitespace: true);
        }
Пример #8
0
        public void CtrlAltSpace()
        {
            VisualStudio.Workspace.SetUseSuggestionMode(false);

            VisualStudio.Editor.SendKeys("nam Goo", VirtualKey.Enter);
            VisualStudio.Editor.SendKeys('{', VirtualKey.Enter, '}', VirtualKey.Up, VirtualKey.Enter);
            VisualStudio.Editor.SendKeys("pu cla Program", VirtualKey.Enter);
            VisualStudio.Editor.SendKeys('{', VirtualKey.Enter, '}', VirtualKey.Up, VirtualKey.Enter);
            VisualStudio.Editor.SendKeys("pub stati voi Main(string[] args)", VirtualKey.Enter);
            VisualStudio.Editor.SendKeys('{', VirtualKey.Enter, '}', VirtualKey.Up, VirtualKey.Enter);
            VisualStudio.Editor.SendKeys("System.Console.writeline();");
            VisualStudio.Editor.Verify.CurrentLineText("System.Console.WriteLine();$$", assertCaretPosition: true);
            VisualStudio.Editor.SendKeys(VirtualKey.Home, Shift(VirtualKey.End), VirtualKey.Delete);

            VisualStudio.ExecuteCommand(WellKnownCommandNames.Edit_ToggleCompletionMode);

            VisualStudio.Editor.SendKeys("System.Console.writeline();");
            VisualStudio.Editor.Verify.CurrentLineText("System.Console.writeline();$$", assertCaretPosition: true);
        }
Пример #9
0
        public void RemoveAndSort()
        {
            SetUpEditor(@"Imports System.Linq$$
Imports System
Imports System.Runtime.InteropServices
Imports System.Runtime.CompilerServices
Class Test
    Sub Method(<CallerMemberName> Optional str As String = Nothing)
        Dim data As COMException
    End Sub
End Class");
            VisualStudio.ExecuteCommand("Edit.RemoveAndSort");
            VisualStudio.Editor.Verify.TextContains(@"Imports System.Runtime.CompilerServices
Imports System.Runtime.InteropServices
Class Test
    Sub Method(<CallerMemberName> Optional str As String = Nothing)
        Dim data As COMException
    End Sub
End Class");
        }
Пример #10
0
        public void SimpleExtractMethod()
        {
            VisualStudio.Editor.SetText(TestSource);
            VisualStudio.Editor.PlaceCaret("Console", charsOffset: -1);
            VisualStudio.Editor.PlaceCaret("Hello VB!", charsOffset: 3, extendSelection: true);
            VisualStudio.ExecuteCommand(WellKnownCommandNames.Refactor_ExtractMethod);

            var expectedMarkup = @"
Imports System
Imports System.Collections.Generic
Imports System.Linq

Module Program
    Sub Main(args As String())
        [|NewMethod|]()
    End Sub

    Private Sub [|NewMethod|]()
        Console.WriteLine(""Hello VB!"")
    End Sub

    Function F() As Integer
        Dim a As Integer
        Dim b As Integer
        a = 5
        b = 5
        Dim result = a * b
        Return result
    End Function
End Module";

            MarkupTestFile.GetSpans(expectedMarkup, out var expectedText, out ImmutableArray <TextSpan> spans);
            VisualStudio.Editor.Verify.TextContains(expectedText);
            VisualStudio.Workspace.WaitForAsyncOperations(Helper.HangMitigatingTimeout, FeatureAttribute.Rename);
            AssertEx.SetEqual(spans, VisualStudio.Editor.GetTagSpans(VisualStudio.InlineRenameDialog.ValidRenameTag));

            VisualStudio.Editor.SendKeys("SayHello", VirtualKey.Enter);
            VisualStudio.Editor.Verify.TextContains(@"    Private Sub SayHello()
        Console.WriteLine(""Hello VB!"")
    End Sub");
        }
Пример #11
0
        public void VerifyNavBar3()
        {
            SetUpEditor(@"
struct S$$
{
    int Goo() { }
    void Bar() { }
}");
            VisualStudio.Editor.ExpandMemberNavBar();
            var expectedItems = new[]
            {
                "Bar()",
                "Goo()",
            };
            Assert.Equal(expectedItems, VisualStudio.Editor.GetMemberNavBarItems());
            VisualStudio.Editor.SelectMemberNavBarItem("Bar()");
            VisualStudio.Editor.Verify.CurrentLineText("void $$Bar() { }", assertCaretPosition: true, trimWhitespace: true);

            VisualStudio.ExecuteCommand("Edit.LineUp");
            VerifyRightSelected("Goo()");
        }
Пример #12
0
        public void VerifyNavBar()
        {
            SetUpEditor(TestSource);

            VisualStudio.Editor.PlaceCaret("Goo", charsOffset: 1);

            VerifyLeftSelected("C");
            VerifyRightSelected("Goo");

            VisualStudio.Editor.ExpandTypeNavBar();
            var expectedItems = new[]
            {
                "C",
                "Domain",
                "S"
            };

            Assert.Equal(expectedItems, VisualStudio.Editor.GetTypeNavBarItems());

            VisualStudio.Editor.SelectTypeNavBarItem("S");

            VisualStudio.Editor.Verify.CaretPosition(112);
            VisualStudio.Editor.Verify.CurrentLineText("Structure $$S", assertCaretPosition: true);

            VisualStudio.ExecuteCommand("Edit.LineDown");
            VerifyRightSelected("A");

            VisualStudio.Editor.ExpandMemberNavBar();
            expectedItems = new[]
            {
                "A",
                "B",
            };

            Assert.Equal(expectedItems, VisualStudio.Editor.GetMemberNavBarItems());
            VisualStudio.Editor.SelectMemberNavBarItem("B");
            VisualStudio.Editor.Verify.CaretPosition(169);
            VisualStudio.Editor.Verify.CurrentLineText("Public Property $$B As Integer", assertCaretPosition: true, trimWhitespace: true);
        }
Пример #13
0
        public void ExtractMethodWithTriviaSelected()
        {
            VisualStudio.Editor.SetText(TestSource);
            VisualStudio.Editor.PlaceCaret("int result", charsOffset: -8);
            VisualStudio.Editor.PlaceCaret("result;", charsOffset: 4, extendSelection: true);
            VisualStudio.ExecuteCommand(WellKnownCommandNames.Refactor_ExtractMethod);
            VisualStudio.Workspace.WaitForAsyncOperations(Helper.HangMitigatingTimeout, FeatureAttribute.ExtractMethod);

            var expectedMarkup = @"
using System;
public class Program
{
    public int Method()
    {
        Console.WriteLine(""Hello World"");
        int a;
        int b;
        a = 5;
        b = 10;
        return [|NewMethod|](a, b);
    }

    private static int [|NewMethod|](int a, int b)
    {
        return a * b;
    }
}";

            MarkupTestFile.GetSpans(expectedMarkup, out var expectedText, out ImmutableArray <TextSpan> spans);
            Assert.Equal(expectedText, VisualStudio.Editor.GetText());
            AssertEx.SetEqual(spans, VisualStudio.Editor.GetTagSpans(VisualStudio.InlineRenameDialog.ValidRenameTag));

            VisualStudio.Editor.SendKeys("SayHello", VirtualKey.Enter);
            VisualStudio.Editor.Verify.TextContains(@"private static int SayHello(int a, int b)
    {
        return a * b;
    }");
        }
Пример #14
0
        public void TestSplitWindow()
        {
            VisualStudio.Editor.SetText(@"
class C
{
    public void M(int i) { }
    private C this[int index] { get { return null; } set { } }
}

struct S
{
    int Goo() { }
    void Bar() { }
}");
            VisualStudio.ExecuteCommand("Window.Split");
            VisualStudio.Editor.PlaceCaret("this", charsOffset: 1);
            VerifyLeftSelected("C");
            VerifyRightSelected("this[int index]");
            VisualStudio.ExecuteCommand("Window.NextSplitPane");
            VisualStudio.Editor.PlaceCaret("Goo", charsOffset: 1);
            VerifyLeftSelected("S");
            VerifyRightSelected("Goo()");
        }
Пример #15
0
        public void VerifyProjectConfigChange()
        {
            VisualStudio.Editor.SetText(
                @"
namespace ClassLibrary1
{
    public class Class1
    {
#if DEBUG
        void Goo()
        {
        }
#else
        void Bar()
        {
        }
#endif
    }
}
"
                );

            VisualStudio.ExecuteCommand(
                WellKnownCommandNames.Build_SolutionConfigurations,
                argument: "Debug"
                );
            VisualStudio.Editor.PlaceCaret("Goo");
            VisualStudio.Editor.Verify.CurrentTokenType(tokenType: "method name");
            VisualStudio.Editor.PlaceCaret("Bar");
            VisualStudio.Editor.Verify.CurrentTokenType(tokenType: "excluded code");
            VisualStudio.Editor.MoveCaret(0);
            VisualStudio.ExecuteCommand("Build.SolutionConfigurations", argument: "Release");
            VisualStudio.Editor.PlaceCaret("Goo");
            VisualStudio.Editor.Verify.CurrentTokenType(tokenType: "excluded code");
            VisualStudio.Editor.PlaceCaret("Bar");
            VisualStudio.Editor.Verify.CurrentTokenType(tokenType: "method name");
        }
Пример #16
0
        public void ResetInteractiveFromProjectAndVerify()
        {
            var assembly = new ProjectUtils.AssemblyReference("System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089");
            var project  = new ProjectUtils.Project(ProjectName);

            VisualStudio.SolutionExplorer.AddMetadataReference(assembly, project);

            VisualStudio.SolutionExplorer.SelectItem(ProjectName);
            VisualStudio.ExecuteCommand(WellKnownCommandNames.ProjectAndSolutionContextMenus_Project_ResetCSharpInteractiveFromProject);

            // Waiting for a long operation: build + reset from project
            VisualStudio.InteractiveWindow.WaitForReplOutput("using TestProj;");

            VisualStudio.InteractiveWindow.SubmitText("x");
            VisualStudio.InteractiveWindow.WaitForLastReplOutputContains("CS0103");

            VisualStudio.InteractiveWindow.SubmitText("(new TestProj.C()).M()");
            VisualStudio.InteractiveWindow.WaitForLastReplOutput("\"C.M()\"");

            VisualStudio.InteractiveWindow.SubmitText("System.Windows.Forms.Form f = new System.Windows.Forms.Form(); f.Text = \"goo\";");
            VisualStudio.InteractiveWindow.SubmitText("f.Text");
            VisualStudio.InteractiveWindow.WaitForLastReplOutput("\"goo\"");
            VisualStudio.Workspace.WaitForAsyncOperations(Helper.HangMitigatingTimeout, FeatureAttribute.SolutionCrawler);
        }
 public new void Dispose()
 {
     VisualStudio.ExecuteCommand(WellKnownCommandNames.Edit_SelectionCancel);
     base.Dispose();
 }
Пример #18
0
 public override Task DisposeAsync()
 {
     VisualStudio.ExecuteCommand(WellKnownCommandNames.Edit_SelectionCancel);
     return(base.DisposeAsync());
 }