CSharpReplIntellisense.cs 4.1 KB
Newer Older
I
Ivan Basov 已提交
1 2
// Copyright (c) Microsoft.  All Rights Reserved.  Licensed under the Apache License, Version 2.0.  See License.txt in the project root for license information.

3
using System.Threading.Tasks;
I
Ivan Basov 已提交
4 5 6
using Microsoft.CodeAnalysis.Shared.TestHooks;
using Microsoft.VisualStudio.IntegrationTest.Utilities;
using Microsoft.VisualStudio.IntegrationTest.Utilities.Input;
7
using Roslyn.Test.Utilities;
I
Ivan Basov 已提交
8
using Xunit;
9
using Xunit.Abstractions;
I
Ivan Basov 已提交
10 11 12 13 14 15

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

21
        [WpfFact(Skip = "https://github.com/dotnet/roslyn/issues/40160")]
I
Ivan Basov 已提交
22 23
        public void VerifyCompletionListOnEmptyTextAtTopLevel()
        {
24 25
            VisualStudio.InteractiveWindow.InvokeCompletionList();
            VisualStudio.InteractiveWindow.Verify.CompletionItemsExist("var", "public", "readonly", "goto");
I
Ivan Basov 已提交
26 27
        }

28
        [WpfFact(Skip = "https://github.com/dotnet/roslyn/issues/40160")]
I
Ivan Basov 已提交
29 30
        public void VerifySharpRCompletionList()
        {
31 32 33
            VisualStudio.InteractiveWindow.InsertCode("#r \"");
            VisualStudio.InteractiveWindow.InvokeCompletionList();
            VisualStudio.InteractiveWindow.Verify.CompletionItemsExist("System");
I
Ivan Basov 已提交
34 35
        }

36
        [WpfFact(Skip = "https://github.com/dotnet/roslyn/issues/40160")]
I
Ivan Basov 已提交
37 38
        public void VerifyCommitCompletionOnTopLevel()
        {
39 40 41 42 43 44
            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 已提交
45 46
        }

47
        [WpfFact(Skip = "https://github.com/dotnet/roslyn/issues/40160")]
I
Ivan Basov 已提交
48 49
        public void VerifyCompletionListForAmbiguousParsingCases()
        {
50
            VisualStudio.InteractiveWindow.InsertCode(@"class C { }
I
Ivan Basov 已提交
51 52
public delegate R Del<T, R>(T arg);
Del<C, System");
53 54
            VisualStudio.SendKeys.Send(VirtualKey.Period);
            VisualStudio.InteractiveWindow.Verify.CompletionItemsExist("ArgumentException");
I
Ivan Basov 已提交
55 56
        }

57
        [WpfFact(Skip = "https://github.com/dotnet/roslyn/issues/40160")]
I
Ivan Basov 已提交
58 59
        public void VerifySharpLoadCompletionList()
        {
60 61 62
            VisualStudio.InteractiveWindow.InsertCode("#load \"");
            VisualStudio.InteractiveWindow.InvokeCompletionList();
            VisualStudio.InteractiveWindow.Verify.CompletionItemsExist("C:");
I
Ivan Basov 已提交
63 64
        }

65
        [WpfFact(Skip = "https://github.com/dotnet/roslyn/issues/40160")]
I
Ivan Basov 已提交
66 67
        public void VerifyNoCrashOnEnter()
        {
S
Sam Harwell 已提交
68
            VisualStudio.Editor.SetUseSuggestionMode(false);
69
            VisualStudio.SendKeys.Send("#help", VirtualKey.Enter, VirtualKey.Enter);
I
Ivan Basov 已提交
70 71
        }

72
        [WpfFact(Skip = "https://github.com/dotnet/roslyn/issues/40160")]
I
Ivan Basov 已提交
73 74
        public void VerifyCorrectIntellisenseSelectionOnEnter()
        {
S
Sam Harwell 已提交
75
            VisualStudio.Editor.SetUseSuggestionMode(false);
76 77 78
            VisualStudio.SendKeys.Send("TimeSpan.FromMin");
            VisualStudio.SendKeys.Send(VirtualKey.Enter, "(0d)", VirtualKey.Enter);
            VisualStudio.InteractiveWindow.WaitForReplOutput("[00:00:00]");
I
Ivan Basov 已提交
79 80
        }

S
Sam Harwell 已提交
81
        [WpfFact]
I
Ivan Basov 已提交
82 83
        public void VerifyCompletionListForLoadMembers()
        {
C
Cyrus Najmabadi 已提交
84
            using var temporaryTextFile = new TemporaryTextFile(
85
                "c.csx",
C
Cyrus Najmabadi 已提交
86 87 88 89 90 91
                "int x = 2; class Complex { public int goo() { return 4; } }");
            temporaryTextFile.Create();
            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
        }
    }
S
Sam Harwell 已提交
94
}