CSharpReplIntellisense.cs 3.8 KB
Newer Older
I
Ivan Basov 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
// Copyright (c) Microsoft.  All Rights Reserved.  Licensed under the Apache License, Version 2.0.  See License.txt in the project root for license information.

using Microsoft.CodeAnalysis.Shared.TestHooks;
using Microsoft.VisualStudio.IntegrationTest.Utilities;
using Microsoft.VisualStudio.IntegrationTest.Utilities.Input;
using Xunit;

namespace Roslyn.VisualStudio.IntegrationTests.CSharp
{
    [Collection(nameof(SharedIntegrationHostFixture))]
    public class CSharpReplIntellisense : AbstractInteractiveWindowTest
    {
        public CSharpReplIntellisense(VisualStudioInstanceFactory instanceFactory)
            : base(instanceFactory)
        {
16
            VisualStudio.Workspace.SetUseSuggestionMode(true);
I
Ivan Basov 已提交
17 18 19 20 21
        }

        [Fact]
        public void VerifyCompletionListOnEmptyTextAtTopLevel()
        {
22 23
            VisualStudio.InteractiveWindow.InvokeCompletionList();
            VisualStudio.InteractiveWindow.Verify.CompletionItemsExist("var", "public", "readonly", "goto");
I
Ivan Basov 已提交
24 25 26 27 28
        }

        [Fact]
        public void VerifySharpRCompletionList()
        {
29 30 31
            VisualStudio.InteractiveWindow.InsertCode("#r \"");
            VisualStudio.InteractiveWindow.InvokeCompletionList();
            VisualStudio.InteractiveWindow.Verify.CompletionItemsExist("System");
I
Ivan Basov 已提交
32 33 34 35 36
        }

        [Fact]
        public void VerifyCommitCompletionOnTopLevel()
        {
37 38 39 40 41 42
            VisualStudio.InteractiveWindow.InsertCode("pub");
            VisualStudio.InteractiveWindow.InvokeCompletionList();
            VisualStudio.InteractiveWindow.Verify.CompletionItemsExist("public");
            VisualStudio.SendKeys.Send(VirtualKey.Tab);
            VisualStudio.InteractiveWindow.Verify.LastReplInput("public");
            VisualStudio.SendKeys.Send(VirtualKey.Escape);
I
Ivan Basov 已提交
43 44 45 46 47
        }

        [Fact]
        public void VerifyCompletionListForAmbiguousParsingCases()
        {
48
            VisualStudio.InteractiveWindow.InsertCode(@"class C { }
I
Ivan Basov 已提交
49 50
public delegate R Del<T, R>(T arg);
Del<C, System");
51 52 53
            VisualStudio.SendKeys.Send(VirtualKey.Period);
            VisualStudio.Workspace.WaitForAsyncOperations(FeatureAttribute.CompletionSet);
            VisualStudio.InteractiveWindow.Verify.CompletionItemsExist("ArgumentException");
I
Ivan Basov 已提交
54 55 56 57 58
        }

        [Fact]
        public void VerifySharpLoadCompletionList()
        {
59 60 61
            VisualStudio.InteractiveWindow.InsertCode("#load \"");
            VisualStudio.InteractiveWindow.InvokeCompletionList();
            VisualStudio.InteractiveWindow.Verify.CompletionItemsExist("C:");
I
Ivan Basov 已提交
62 63
        }

V
vsadov 已提交
64
        [Fact(Skip = "https://github.com/dotnet/roslyn/issues/18877")]
I
Ivan Basov 已提交
65 66
        public void VerifyNoCrashOnEnter()
        {
67 68
            VisualStudio.Workspace.SetUseSuggestionMode(false);
            VisualStudio.SendKeys.Send("#help", VirtualKey.Enter, VirtualKey.Enter);
I
Ivan Basov 已提交
69 70 71 72 73
        }

        [Fact]
        public void VerifyCorrectIntellisenseSelectionOnEnter()
        {
74 75 76 77
            VisualStudio.Workspace.SetUseSuggestionMode(false);
            VisualStudio.SendKeys.Send("TimeSpan.FromMin");
            VisualStudio.SendKeys.Send(VirtualKey.Enter, "(0d)", VirtualKey.Enter);
            VisualStudio.InteractiveWindow.WaitForReplOutput("[00:00:00]");
I
Ivan Basov 已提交
78 79 80 81 82 83
        }

        [Fact]
        public void VerifyCompletionListForLoadMembers()
        {
            using (var temporaryTextFile = new TemporaryTextFile(
84
                "c.csx",
I
Ivan Basov 已提交
85 86 87
                "int x = 2; class Complex { public int foo() { return 4; } }"))
            {
                temporaryTextFile.Create();
88 89 90 91
                VisualStudio.InteractiveWindow.SubmitText(string.Format("#load \"{0}\"", temporaryTextFile.FullName));
                VisualStudio.InteractiveWindow.InvokeCompletionList();
                VisualStudio.InteractiveWindow.Verify.CompletionItemsExist("x", "Complex");
                VisualStudio.SendKeys.Send(VirtualKey.Escape);
I
Ivan Basov 已提交
92 93 94 95
            }
        }
    }
}