CSharpInteractiveCommands.cs 7.5 KB
Newer Older
1 2 3 4
// 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.VisualStudio.IntegrationTest.Utilities;
using Microsoft.VisualStudio.IntegrationTest.Utilities.Input;
5
using Roslyn.Test.Utilities;
6
using Xunit;
7
using Xunit.Abstractions;
8 9 10 11 12 13

namespace Roslyn.VisualStudio.IntegrationTests.CSharp
{
    [Collection(nameof(SharedIntegrationHostFixture))]
    public class CSharpInteractiveCommands : AbstractInteractiveWindowTest
    {
14 15
        public CSharpInteractiveCommands(VisualStudioInstanceFactory instanceFactory, ITestOutputHelper testOutputHelper)
            : base(instanceFactory, testOutputHelper)
16 17 18
        {
        }

19
        [WpfFact(Skip = "https://github.com/dotnet/roslyn/issues/18779")]
20 21
        public void VerifyPreviousAndNextHistory()
        {
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
            VisualStudio.InteractiveWindow.SubmitText("1 + 2");
            VisualStudio.InteractiveWindow.SubmitText("1.ToString()");
            VisualStudio.InteractiveWindow.WaitForLastReplOutput("\"1\"");
            VisualStudio.SendKeys.Send(Alt(VirtualKey.Up));
            VisualStudio.InteractiveWindow.Verify.LastReplInput("1.ToString()");
            VisualStudio.SendKeys.Send(VirtualKey.Enter);
            VisualStudio.InteractiveWindow.WaitForLastReplOutput("\"1\"");
            VisualStudio.SendKeys.Send(Alt(VirtualKey.Up));
            VisualStudio.InteractiveWindow.Verify.LastReplInput("1.ToString()");
            VisualStudio.SendKeys.Send(Alt(VirtualKey.Up));
            VisualStudio.InteractiveWindow.Verify.LastReplInput("1 + 2");
            VisualStudio.SendKeys.Send(VirtualKey.Enter);
            VisualStudio.InteractiveWindow.WaitForLastReplOutput("3");
            VisualStudio.SendKeys.Send(Alt(VirtualKey.Down));
            VisualStudio.InteractiveWindow.Verify.LastReplInput("1.ToString()");
            VisualStudio.SendKeys.Send(VirtualKey.Enter);
            VisualStudio.InteractiveWindow.WaitForLastReplOutput("\"1\"");
39 40
        }

J
Joey Robichaud 已提交
41
        [WpfFact(Skip = "https://github.com/dotnet/roslyn/issues/40160")]
42 43
        public void VerifyMaybeExecuteInput()
        {
44 45 46
            VisualStudio.InteractiveWindow.InsertCode("2 + 3");
            VisualStudio.SendKeys.Send(VirtualKey.Enter);
            VisualStudio.InteractiveWindow.WaitForLastReplOutput("5");
47 48
        }

49
        [WpfFact(Skip = "https://github.com/dotnet/roslyn/issues/40160")]
50 51
        public void VerifyNewLineAndIndent()
        {
52 53 54 55 56
            VisualStudio.InteractiveWindow.InsertCode("3 + ");
            VisualStudio.SendKeys.Send(VirtualKey.Enter);
            VisualStudio.InteractiveWindow.InsertCode("4");
            VisualStudio.SendKeys.Send(VirtualKey.Enter);
            VisualStudio.InteractiveWindow.WaitForLastReplOutput("7");
57 58
        }

59
        [WpfFact]
60 61
        public void VerifyExecuteInput()
        {
62 63
            VisualStudio.InteractiveWindow.SubmitText("1 + ");
            VisualStudio.InteractiveWindow.WaitForLastReplOutputContains("CS1733");
64 65
        }

66
        [WpfFact]
67 68
        public void VerifyForceNewLineAndIndent()
        {
69 70 71 72 73
            VisualStudio.InteractiveWindow.InsertCode("1 + 2");
            VisualStudio.SendKeys.Send(VirtualKey.Enter);
            VisualStudio.InteractiveWindow.SubmitText("+ 3");
            VisualStudio.InteractiveWindow.WaitForLastReplOutputContains("3");
            VisualStudio.InteractiveWindow.Verify.ReplPromptConsistency("<![CDATA[1 + 2 + 3]]>", "6");
74 75
        }

76
        [WpfFact(Skip = "https://github.com/dotnet/roslyn/issues/40160")]
77 78
        public void VerifyCancelInput()
        {
79 80 81 82
            VisualStudio.InteractiveWindow.InsertCode("1 + 4");
            VisualStudio.SendKeys.Send(Shift(VirtualKey.Enter));
            VisualStudio.SendKeys.Send(VirtualKey.Escape);
            VisualStudio.InteractiveWindow.Verify.LastReplInput(string.Empty);
83 84
        }

85
        [WpfFact(Skip = "https://github.com/dotnet/roslyn/issues/40160")]
86 87
        public void VerifyUndoAndRedo()
        {
88 89 90 91 92 93 94 95
            VisualStudio.InteractiveWindow.ClearReplText();
            VisualStudio.InteractiveWindow.InsertCode(" 2 + 4 ");
            VisualStudio.SendKeys.Send(Ctrl(VirtualKey.Z));
            VisualStudio.InteractiveWindow.Verify.ReplPromptConsistency("< ![CDATA[]] >", string.Empty);
            VisualStudio.SendKeys.Send(Ctrl(VirtualKey.Y));
            VisualStudio.InteractiveWindow.Verify.LastReplInput(" 2 + 4 ");
            VisualStudio.SendKeys.Send(VirtualKey.Enter);
            VisualStudio.InteractiveWindow.WaitForLastReplOutput("6");
96 97
        }

98
        [WpfFact(Skip = "https://github.com/dotnet/roslyn/issues/40160")]
99 100
        public void CutDeletePasteSelectAll()
        {
101
            ClearInteractiveWindow();
102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124
            VisualStudio.InteractiveWindow.InsertCode("Text");
            VisualStudio.ExecuteCommand(WellKnownCommandNames.Edit_LineStart);
            VisualStudio.ExecuteCommand(WellKnownCommandNames.Edit_LineEnd);
            VisualStudio.ExecuteCommand(WellKnownCommandNames.Edit_LineStartExtend);
            VisualStudio.ExecuteCommand(WellKnownCommandNames.Edit_SelectionCancel);
            VisualStudio.ExecuteCommand(WellKnownCommandNames.Edit_LineEndExtend);
            VisualStudio.ExecuteCommand(WellKnownCommandNames.Edit_SelectAll);
            VisualStudio.ExecuteCommand(WellKnownCommandNames.Edit_SelectAll);
            VisualStudio.ExecuteCommand(WellKnownCommandNames.Edit_Copy);
            VisualStudio.ExecuteCommand(WellKnownCommandNames.Edit_Cut);
            VisualStudio.ExecuteCommand(WellKnownCommandNames.Edit_Paste);
            VisualStudio.InteractiveWindow.WaitForLastReplInputContains("Text");
            VisualStudio.InteractiveWindow.Verify.LastReplInput("Text");
            VisualStudio.ExecuteCommand(WellKnownCommandNames.Edit_Delete);
            VisualStudio.ExecuteCommand(WellKnownCommandNames.Edit_LineUp);
            VisualStudio.ExecuteCommand(WellKnownCommandNames.Edit_LineDown);
            VisualStudio.ExecuteCommand(WellKnownCommandNames.Edit_Paste);
            VisualStudio.InteractiveWindow.WaitForLastReplInputContains("TextText");
            VisualStudio.InteractiveWindow.Verify.LastReplInput("TextText");
            VisualStudio.ExecuteCommand(WellKnownCommandNames.Edit_Paste);
            VisualStudio.InteractiveWindow.WaitForLastReplInputContains("TextTextText");
            VisualStudio.InteractiveWindow.Verify.LastReplInput("TextTextText");
            VisualStudio.SendKeys.Send(VirtualKey.Escape);
125 126
        }

127
        //<!-- Regression test for bug 13731.
128 129 130 131 132 133 134
        //     Unfortunately we don't have good unit-test infrastructure to test InteractiveWindow.cs.
        //     For now, since we don't have coverage of InteractiveWindow.IndentCurrentLine at all,
        //     I'd rather have a quick integration test scenario rather than no coverage at all.
        //     At some point when we start investing in Interactive work again, we'll go through some
        //     of these tests and convert them to unit-tests.
        //     -->
        //<!-- TODO(https://github.com/dotnet/roslyn/issues/4235)
135
        [WpfFact(Skip = "https://github.com/dotnet/roslyn/issues/40160")]
136 137
        public void VerifyReturnIndentCurrentLine()
        {
138 139 140 141 142 143
            VisualStudio.InteractiveWindow.ClearScreen();
            VisualStudio.SendKeys.Send(" (");
            VisualStudio.SendKeys.Send(")");
            VisualStudio.SendKeys.Send(VirtualKey.Left);
            VisualStudio.SendKeys.Send(VirtualKey.Enter);
            VisualStudio.InteractiveWindow.Verify.CaretPosition(12);
144 145
        }
    }
S
Sam Harwell 已提交
146
}