File: StringCopyPaste\PasteUnknownSourceIntoVerbatimInterpolatedStringTests.cs
Web Access
Project: src\src\EditorFeatures\CSharpTest\Microsoft.CodeAnalysis.CSharp.EditorFeatures.UnitTests.csproj (Microsoft.CodeAnalysis.CSharp.EditorFeatures.UnitTests)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
 
using Roslyn.Test.Utilities;
 
namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.StringCopyPaste;
 
public class PasteUnknownSourceIntoVerbatimInterpolatedStringTests
    : StringCopyPasteCommandHandlerUnknownSourceTests
{
    #region Paste from external source into verbatim interpolated string no hole
 
    [WpfFact]
    public void TestNewLineIntoVerbatimInterpolatedString1()
    {
        TestPasteUnknownSource(
            pasteText: "\n",
            """
            var x = $@"[||]"
            """,
            "var x = $@\"\n[||]\"",
            afterUndo: """
            var x = $@"[||]"
            """);
    }
 
    [WpfFact]
    public void TestNewLineIntoVerbatimInterpolatedString2()
    {
        TestPasteUnknownSource(
            pasteText: """
 
 
            """,
            """
            var x = $@"[||]"
            """,
            """
            var x = $@"
            [||]"
            """,
            afterUndo: """
            var x = $@"[||]"
            """);
    }
 
    [WpfFact]
    public void TestTabIntoVerbatimInterpolatedString1()
    {
        TestPasteUnknownSource(
            pasteText: "\t",
            """
            var x = $@"[||]"
            """,
            "var x = $@\"\t[||]\"",
            afterUndo: """
            var x = $@"[||]"
            """);
    }
 
    [WpfFact]
    public void TestSingleQuoteIntoVerbatimInterpolatedString()
    {
        TestPasteUnknownSource(
            pasteText: """'""",
            """
            var x = $@"[||]"
            """,
            """
            var x = $@"'[||]"
            """,
            afterUndo: """
            var x = $@"[||]"
            """);
    }
 
    [WpfFact]
    public void TestDoubleQuoteIntoVerbatimInterpolatedString()
    {
        TestPasteUnknownSource(
            pasteText: """
            "
            """,
            """
            var x = $@"[||]"
            """,
            """"
            var x = $@"""[||]"
            """",
            afterUndo: """
            var x = $@""[||]"
            """);
    }
 
    [WpfFact]
    public void TestComplexStringIntoVerbatimInterpolatedString()
    {
        TestPasteUnknownSource(
            pasteText: "\t\"\"\t",
            """
            var x = $@"[||]"
            """,
            "var x = $@\"\t\"\"\t[||]\"",
            afterUndo: """
            var x = $@"[||]"
            """);
    }
 
    [WpfFact]
    public void TestVerbatimTextIntoVerbatimInterpolatedString()
    {
        TestPasteUnknownSource(
            pasteText: """abc""",
            """
            var x = $@"[||]"
            """,
            """
            var x = $@"abc[||]"
            """,
            afterUndo: """
            var x = $@"[||]"
            """);
    }
 
    [WpfFact]
    public void TestOpenCurlyIntoVerbatimInterpolatedString1()
    {
        TestPasteUnknownSource(
            pasteText: """{""",
            """
            var x = $@"[||]"
            """,
            """
            var x = $@"{{[||]"
            """,
            afterUndo: """
            var x = $@"{[||]"
            """);
    }
 
    [WpfFact]
    public void TestTwoOpenCurliesIntoVerbatimInterpolatedString1()
    {
        TestPasteUnknownSource(
            pasteText: """{{""",
            """
            var x = $@"[||]"
            """,
            """
            var x = $@"{{[||]"
            """,
            afterUndo: """
            var x = $@"[||]"
            """);
    }
 
    [WpfFact]
    public void TestTwoOpenCurliesAndContentIntoVerbatimInterpolatedString1()
    {
        TestPasteUnknownSource(
            pasteText: """{{0""",
            """
            var x = $@"[||]"
            """,
            """
            var x = $@"{{0[||]"
            """,
            afterUndo: """
            var x = $@"[||]"
            """);
    }
 
    [WpfFact]
    public void TestCloseCurlyIntoVerbatimInterpolatedString1()
    {
        TestPasteUnknownSource(
            pasteText: """}""",
            """
            var x = $@"[||]"
            """,
            """
            var x = $@"}}[||]"
            """,
            afterUndo: """
            var x = $@"}[||]"
            """);
    }
 
    [WpfFact]
    public void TestTwoCloseCurliesIntoVerbatimInterpolatedString1()
    {
        TestPasteUnknownSource(
            pasteText: """}}""",
            """
            var x = $@"[||]"
            """,
            """
            var x = $@"}}[||]"
            """,
            afterUndo: """
            var x = $@"[||]"
            """);
    }
 
    [WpfFact]
    public void TestTwoCloseCurliesAndContentIntoVerbatimInterpolatedString1()
    {
        TestPasteUnknownSource(
            pasteText: """}}0""",
            """
            var x = $@"[||]"
            """,
            """
            var x = $@"}}0[||]"
            """,
            afterUndo: """
            var x = $@"[||]"
            """);
    }
 
    [WpfFact]
    public void TestCurlyWithContentIntoVerbatimInterpolatedString1()
    {
        TestPasteUnknownSource(
            pasteText: """x{0}y""",
            """
            var x = $@"[||]"
            """,
            """
            var x = $@"x{0}y[||]"
            """,
            afterUndo: """
            var x = $@"[||]"
            """);
    }
 
    [WpfFact]
    public void TestCurliesWithContentIntoVerbatimInterpolatedString1()
    {
        TestPasteUnknownSource(
            pasteText: """x{{0}}y""",
            """
            var x = $@"[||]"
            """,
            """
            var x = $@"x{{0}}y[||]"
            """,
            afterUndo: """
            var x = $@"[||]"
            """);
    }
 
    #endregion
 
    #region Paste from external source into verbatim interpolated string before hole
 
    [WpfFact]
    public void TestNewLineIntoVerbatimInterpolatedStringBeforeHole1()
    {
        TestPasteUnknownSource(
            pasteText: "\n",
            """
            var x = $@"[||]{0}"
            """,
            "var x = $@\"\n[||]{0}\"",
            afterUndo: """
            var x = $@"[||]{0}"
            """);
    }
 
    [WpfFact]
    public void TestNewLineIntoVerbatimInterpolatedStringBeforeHole2()
    {
        TestPasteUnknownSource(
            pasteText: """
 
 
            """,
            """
            var x = $@"[||]{0}"
            """,
            """
            var x = $@"
            [||]{0}"
            """,
            afterUndo: """
            var x = $@"[||]{0}"
            """);
    }
 
    [WpfFact]
    public void TestTabIntoVerbatimInterpolatedStringBeforeHole1()
    {
        TestPasteUnknownSource(
            pasteText: "\t",
            """
            var x = $@"[||]{0}"
            """,
            "var x = $@\"\t[||]{0}\"",
            afterUndo: """
            var x = $@"[||]{0}"
            """);
    }
 
    [WpfFact]
    public void TestSingleQuoteIntoVerbatimInterpolatedStringBeforeHole()
    {
        TestPasteUnknownSource(
            pasteText: """'""",
            """
            var x = $@"[||]{0}"
            """,
            """
            var x = $@"'[||]{0}"
            """,
            afterUndo: """
            var x = $@"[||]{0}"
            """);
    }
 
    [WpfFact]
    public void TestDoubleQuoteIntoVerbatimInterpolatedStringBeforeHole()
    {
        TestPasteUnknownSource(
            pasteText: """
            "
            """,
            """
            var x = $@"[||]{0}"
            """,
            """"
            var x = $@"""[||]{0}"
            """",
            afterUndo: """
            var x = $@""[||]{0}"
            """);
    }
 
    [WpfFact]
    public void TestComplexStringIntoVerbatimInterpolatedStringBeforeHole()
    {
        TestPasteUnknownSource(
            pasteText: "\t\"\"\t",
            """
            var x = $@"[||]{0}"
            """,
            "var x = $@\"\t\"\"\t[||]{0}\"",
            afterUndo: """
            var x = $@"[||]{0}"
            """);
    }
 
    [WpfFact]
    public void TestVerbatimTextIntoVerbatimInterpolatedStringBeforeHole()
    {
        TestPasteUnknownSource(
            pasteText: """abc""",
            """
            var x = $@"[||]{0}"
            """,
            """
            var x = $@"abc[||]{0}"
            """,
            afterUndo: """
            var x = $@"[||]{0}"
            """);
    }
 
    [WpfFact]
    public void TestOpenCurlyIntoVerbatimInterpolatedStringBeforeHole1()
    {
        TestPasteUnknownSource(
            pasteText: """{""",
            """
            var x = $@"[||]{0}"
            """,
            """
            var x = $@"{{[||]{0}"
            """,
            afterUndo: """
            var x = $@"{[||]{0}"
            """);
    }
 
    [WpfFact]
    public void TestTwoOpenCurliesIntoVerbatimInterpolatedStringBeforeHole1()
    {
        TestPasteUnknownSource(
            pasteText: """{{""",
            """
            var x = $@"[||]{0}"
            """,
            """
            var x = $@"{{[||]{0}"
            """,
            afterUndo: """
            var x = $@"[||]{0}"
            """);
    }
 
    [WpfFact]
    public void TestTwoOpenCurliesAndContentIntoVerbatimInterpolatedStringBeforeHole1()
    {
        TestPasteUnknownSource(
            pasteText: """{{0""",
            """
            var x = $@"[||]{0}"
            """,
            """
            var x = $@"{{0[||]{0}"
            """,
            afterUndo: """
            var x = $@"[||]{0}"
            """);
    }
 
    [WpfFact]
    public void TestCloseCurlyIntoVerbatimInterpolatedStringBeforeHole1()
    {
        TestPasteUnknownSource(
            pasteText: """}""",
            """
            var x = $@"[||]{0}"
            """,
            """
            var x = $@"}}[||]{0}"
            """,
            afterUndo: """
            var x = $@"}[||]{0}"
            """);
    }
 
    [WpfFact]
    public void TestTwoCloseCurliesIntoVerbatimInterpolatedStringBeforeHole1()
    {
        TestPasteUnknownSource(
            pasteText: """}}""",
            """
            var x = $@"[||]{0}"
            """,
            """
            var x = $@"}}[||]{0}"
            """,
            afterUndo: """
            var x = $@"[||]{0}"
            """);
    }
 
    [WpfFact]
    public void TestTwoCloseCurliesAndContentIntoVerbatimInterpolatedStringBeforeHole1()
    {
        TestPasteUnknownSource(
            pasteText: """}}0""",
            """
            var x = $@"[||]{0}"
            """,
            """
            var x = $@"}}0[||]{0}"
            """,
            afterUndo: """
            var x = $@"[||]{0}"
            """);
    }
 
    [WpfFact]
    public void TestCurlyWithContentIntoVerbatimInterpolatedStringBeforeHole1()
    {
        TestPasteUnknownSource(
            pasteText: """x{0}y""",
            """
            var x = $@"[||]{0}"
            """,
            """
            var x = $@"x{0}y[||]{0}"
            """,
            afterUndo: """
            var x = $@"[||]{0}"
            """);
    }
 
    [WpfFact]
    public void TestCurliesWithContentIntoVerbatimInterpolatedStringBeforeHole1()
    {
        TestPasteUnknownSource(
            pasteText: """x{{0}}y""",
            """
            var x = $@"[||]{0}"
            """,
            """
            var x = $@"x{{0}}y[||]{0}"
            """,
            afterUndo: """
            var x = $@"[||]{0}"
            """);
    }
 
    #endregion
 
    #region Paste from external source into verbatim interpolated string after hole
 
    [WpfFact]
    public void TestNewLineIntoVerbatimInterpolatedStringAfterHole1()
    {
        TestPasteUnknownSource(
            pasteText: "\n",
            """
            var x = $@"{0}[||]"
            """,
            "var x = $@\"{0}\n[||]\"",
            afterUndo: """
            var x = $@"{0}[||]"
            """);
    }
 
    [WpfFact]
    public void TestNewLineIntoVerbatimInterpolatedStringAfterHole2()
    {
        TestPasteUnknownSource(
            pasteText: """
 
 
            """,
            """
            var x = $@"{0}[||]"
            """,
            """
            var x = $@"{0}
            [||]"
            """,
            afterUndo: """
            var x = $@"{0}[||]"
            """);
    }
 
    [WpfFact]
    public void TestTabIntoVerbatimInterpolatedStringAfterHole1()
    {
        TestPasteUnknownSource(
            pasteText: "\t",
            """
            var x = $@"{0}[||]"
            """,
            "var x = $@\"{0}\t[||]\"",
            afterUndo: """
            var x = $@"{0}[||]"
            """);
    }
 
    [WpfFact]
    public void TestSingleQuoteIntoVerbatimInterpolatedStringAfterHole()
    {
        TestPasteUnknownSource(
            pasteText: """'""",
            """
            var x = $@"{0}[||]"
            """,
            """
            var x = $@"{0}'[||]"
            """,
            afterUndo: """
            var x = $@"{0}[||]"
            """);
    }
 
    [WpfFact]
    public void TestDoubleQuoteIntoVerbatimInterpolatedStringAfterHole()
    {
        TestPasteUnknownSource(
            pasteText: """
            "
            """,
            """
            var x = $@"{0}[||]"
            """,
            """
            var x = $@"{0}""[||]"
            """,
            afterUndo: """
            var x = $@"{0}"[||]"
            """);
    }
 
    [WpfFact]
    public void TestComplexStringIntoVerbatimInterpolatedStringAfterHole()
    {
        TestPasteUnknownSource(
            pasteText: "\t\"\"\t",
            """
            var x = $@"{0}[||]"
            """,
            "var x = $@\"{0}\t\"\"\t[||]\"",
            afterUndo: """
            var x = $@"{0}[||]"
            """);
    }
 
    [WpfFact]
    public void TestVerbatimTextIntoVerbatimInterpolatedStringAfterHole()
    {
        TestPasteUnknownSource(
            pasteText: """abc""",
            """
            var x = $@"{0}[||]"
            """,
            """
            var x = $@"{0}abc[||]"
            """,
            afterUndo: """
            var x = $@"{0}[||]"
            """);
    }
 
    [WpfFact]
    public void TestOpenCurlyIntoVerbatimInterpolatedStringAfterHole1()
    {
        TestPasteUnknownSource(
            pasteText: """{""",
            """
            var x = $@"{0}[||]"
            """,
            """
            var x = $@"{0}{{[||]"
            """,
            afterUndo: """
            var x = $@"{0}{[||]"
            """);
    }
 
    [WpfFact]
    public void TestTwoOpenCurliesIntoVerbatimInterpolatedStringAfterHole1()
    {
        TestPasteUnknownSource(
            pasteText: """{{""",
            """
            var x = $@"{0}[||]"
            """,
            """
            var x = $@"{0}{{[||]"
            """,
            afterUndo: """
            var x = $@"{0}[||]"
            """);
    }
 
    [WpfFact]
    public void TestTwoOpenCurliesAndContentIntoVerbatimInterpolatedStringAfterHole1()
    {
        TestPasteUnknownSource(
            pasteText: """{{0""",
            """
            var x = $@"{0}[||]"
            """,
            """
            var x = $@"{0}{{0[||]"
            """,
            afterUndo: """
            var x = $@"{0}[||]"
            """);
    }
 
    [WpfFact]
    public void TestCloseCurlyIntoVerbatimInterpolatedStringAfterHole1()
    {
        TestPasteUnknownSource(
            pasteText: """}""",
            """
            var x = $@"{0}[||]"
            """,
            """
            var x = $@"{0}}}[||]"
            """,
            afterUndo: """
            var x = $@"{0}}[||]"
            """);
    }
 
    [WpfFact]
    public void TestTwoCloseCurliesIntoVerbatimInterpolatedStringAfterHole1()
    {
        TestPasteUnknownSource(
            pasteText: """}}""",
            """
            var x = $@"{0}[||]"
            """,
            """
            var x = $@"{0}}}[||]"
            """,
            afterUndo: """
            var x = $@"{0}[||]"
            """);
    }
 
    [WpfFact]
    public void TestTwoCloseCurliesAndContentIntoVerbatimInterpolatedStringAfterHole1()
    {
        TestPasteUnknownSource(
            pasteText: """}}0""",
            """
            var x = $@"{0}[||]"
            """,
            """
            var x = $@"{0}}}0[||]"
            """,
            afterUndo: """
            var x = $@"{0}[||]"
            """);
    }
 
    [WpfFact]
    public void TestCurlyWithContentIntoVerbatimInterpolatedStringAfterHole1()
    {
        TestPasteUnknownSource(
            pasteText: """x{0}y""",
            """
            var x = $@"{0}[||]"
            """,
            """
            var x = $@"{0}x{0}y[||]"
            """,
            afterUndo: """
            var x = $@"{0}[||]"
            """);
    }
 
    [WpfFact]
    public void TestCurliesWithContentIntoVerbatimInterpolatedStringAfterHole1()
    {
        TestPasteUnknownSource(
            pasteText: """x{{0}}y""",
            """
            var x = $@"{0}[||]"
            """,
            """
            var x = $@"{0}x{{0}}y[||]"
            """,
            afterUndo: """
            var x = $@"{0}[||]"
            """);
    }
 
    #endregion
}