/
githubmirror
/
roslyn
Обзор
Документация
Войти
/
githubmirror
/
roslyn
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/LanguageServer/ProtocolUnitTests/OnAutoInsert/RawStringOnAutoInsertTests.cs
241 строка
9 KB
Jason Malinowski
Remove AssertEx.NotNull
21 апр 2026, 23:28
21 апр 2026, 23:28
4c5adf0
Код
Авторство
О чём код?
// 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 System.Diagnostics.CodeAnalysis; using System.Linq; using System.Threading.Tasks; using Roslyn.LanguageServer.Protocol; using Roslyn.Test.Utilities; using Xunit; using Xunit.Abstractions; namespace Microsoft.CodeAnalysis.LanguageServer.UnitTests.OnAutoInsert; public sealed class RawStringOnAutoInsertTests(ITestOutputHelper testOutputHelper) : AbstractOnAutoInsertTests(testOutputHelper) { [Theory, CombinatorialData] public Task OnAutoInsert_RawString_GenerateInitialEmpty(bool mutatingLspWorkspace) => VerifyCSharpMarkupAndExpectedRawString("\"", """" var v = """{|type:|} """", """" var v = """$0""" """", mutatingLspWorkspace); [Theory, CombinatorialData] public Task OnAutoInsert_RawString_GenerateInitialEmpty_Interpolated(bool mutatingLspWorkspace) => VerifyCSharpMarkupAndExpectedRawString("\"", """" var v = $"""{|type:|} """", """" var v = $"""$0""" """", mutatingLspWorkspace); [Theory, CombinatorialData] public Task OnAutoInsert_RawString_GrowInitialEmpty(bool mutatingLspWorkspace) => VerifyCSharpMarkupAndExpectedRawString("\"", """"" var v = """"{|type:|}""" """"", """"" var v = """"$0"""" """"", mutatingLspWorkspace); [Theory, CombinatorialData] public Task OnAutoInsert_RawString_GrowWithText(bool mutatingLspWorkspace) => VerifyCSharpMarkupAndExpectedRawString("\"", """"" var v = """"{|type:|} test """ """"", """"" var v = """" test """" """"", mutatingLspWorkspace); [Theory, CombinatorialData] public Task OnAutoInsert_RawString_NoGrowForTwoStart(bool mutatingLspWorkspace) => VerifyNoResult("\"", """" var v = """{|type:|}""" """", mutatingLspWorkspace); [Theory, CombinatorialData] public Task OnAutoInsert_RawString_NoGrowForVerbatim(bool mutatingLspWorkspace) => VerifyNoResult("\"", """ var v = @""${|type:|} """, mutatingLspWorkspace); [Theory, CombinatorialData] public Task OnAutoInsert_RawString_GenerateAtEndOfFile(bool mutatingLspWorkspace) => VerifyCSharpMarkupAndExpectedRawString("\"", """"var v = """{|type:|}"""", """" var v = """$0""" """", mutatingLspWorkspace); [Theory, CombinatorialData] public Task OnAutoInsert_RawString_GenerateWithSemicolonAfter(bool mutatingLspWorkspace) => VerifyCSharpMarkupAndExpectedRawString("\"", """"var v = """{|type:|};"""", """"var v = """$0""";"""", mutatingLspWorkspace); [Theory, CombinatorialData] public Task OnAutoInsert_RawString_GenerateWithInterpolatedString_TwoDollarSigns(bool mutatingLspWorkspace) => VerifyCSharpMarkupAndExpectedRawString("\"", """"var v = $$"""{|type:|}"""", """" var v = $$"""$0""" """", mutatingLspWorkspace); [Theory, CombinatorialData] public Task OnAutoInsert_RawString_GenerateWithInterpolatedString_ThreeDollarSigns(bool mutatingLspWorkspace) => VerifyCSharpMarkupAndExpectedRawString("\"", """"var v = $$$"""{|type:|}"""", """" var v = $$$"""$0""" """", mutatingLspWorkspace); [Theory, CombinatorialData] public Task OnAutoInsert_RawString_NoGenerateWithVerbatimString(bool mutatingLspWorkspace) => VerifyNoResult("\"", """var v = @""{|type:|}""", mutatingLspWorkspace); [Theory, CombinatorialData] public Task OnAutoInsert_RawString_NoGenerateWithVerbatimInterpolatedString1(bool mutatingLspWorkspace) => VerifyNoResult("\"", """var v = @$""{|type:|}""", mutatingLspWorkspace); [Theory, CombinatorialData] public Task OnAutoInsert_RawString_NoGenerateWithVerbatimInterpolatedString2(bool mutatingLspWorkspace) => VerifyNoResult("\"", """var v = $@""{|type:|}""", mutatingLspWorkspace); [Theory, CombinatorialData] public Task OnAutoInsert_RawString_DoNotGrowEmptyInsideSimpleString(bool mutatingLspWorkspace) => VerifyNoResult("\"", """ var v = ""{|type:|}" """, mutatingLspWorkspace); [Theory, CombinatorialData] public Task OnAutoInsert_RawString_DoNotGrowEmptyInsideFourQuotes(bool mutatingLspWorkspace) => VerifyNoResult("\"", """" var v = """{|type:|}"" """", mutatingLspWorkspace); [Theory, CombinatorialData] public Task OnAutoInsert_RawString_GrowEmptyInsideSixQuotesInInterpolatedRaw(bool mutatingLspWorkspace) => VerifyCSharpMarkupAndExpectedRawString("\"", """"" var v = $""""{|type:|}""" """"", """"" var v = $""""$0"""" """"", mutatingLspWorkspace); [Theory, CombinatorialData] public Task OnAutoInsert_RawString_DoNotGrowEmptyInsideSixQuotesWhenNotInMiddle(bool mutatingLspWorkspace) => VerifyNoResult("\"", """"" var v = $"""{|type:|}"""" """"", mutatingLspWorkspace); [Theory, CombinatorialData] public Task OnAutoInsert_RawString_GrowDelimitersWhenEndExists_SingleLine(bool mutatingLspWorkspace) => VerifyCSharpMarkupAndExpectedRawString("\"", """"" var v = """"{|type:|} """ """"", """"" var v = """" """" """"", mutatingLspWorkspace); [Theory, CombinatorialData] public Task OnAutoInsert_RawString_GrowDelimitersWhenEndExists_MultiLine(bool mutatingLspWorkspace) => VerifyCSharpMarkupAndExpectedRawString("\"", """"" var v = """"{|type:|} """ """"", """"" var v = """" """" """"", mutatingLspWorkspace); [Theory, CombinatorialData] public Task OnAutoInsert_RawString_GrowDelimitersWhenEndExists_Interpolated(bool mutatingLspWorkspace) => VerifyCSharpMarkupAndExpectedRawString("\"", """"" var v = $""""{|type:|} """ """"", """"" var v = $"""" """" """"", mutatingLspWorkspace); [Theory, CombinatorialData] public Task OnAutoInsert_RawString_DoNotGrowDelimitersWhenEndNotThere(bool mutatingLspWorkspace) => VerifyNoResult("\"", """"" var v = """"{|type:|} """"", mutatingLspWorkspace); [Theory, CombinatorialData] public Task OnAutoInsert_RawString_DoNotGrowDelimitersWhenEndTooShort(bool mutatingLspWorkspace) => VerifyNoResult("\"", """"" var v = """"{|type:|} "" """"", mutatingLspWorkspace); [Theory, CombinatorialData] public Task OnAutoInsert_RawString_TypeQuoteEmptyFile(bool mutatingLspWorkspace) => VerifyNoResult("\"", """ "{|type:|} """, mutatingLspWorkspace); private async Task VerifyCSharpMarkupAndExpectedRawString( string characterTyped, [StringSyntax(PredefinedEmbeddedLanguageNames.CSharpTest)] string markup, [StringSyntax(PredefinedEmbeddedLanguageNames.CSharpTest)] string expected, bool mutatingLspWorkspace) { markup = markup.NormalizeLineEndings(); expected = expected.NormalizeLineEndings(); await using var testLspServer = await CreateTestLspServerAsync(markup, mutatingLspWorkspace); var locationTyped = testLspServer.GetLocations("type").Single(); var document = await testLspServer.GetDocumentAsync(locationTyped.DocumentUri); var documentText = await document.GetTextAsync(); var result = await RunOnAutoInsertAsync(testLspServer, characterTyped, locationTyped, insertSpaces: true, tabSize: 4); Assert.NotNull(result); var actualText = ApplyTextEdits([result.TextEdit], documentText); var expectedCaret = expected.IndexOf("$0"); if (expectedCaret >= 0) { Assert.Equal(InsertTextFormat.Snippet, result.TextEditFormat); } else { Assert.Equal(InsertTextFormat.Plaintext, result.TextEditFormat); } MarkupTestFile.GetPositionAndSpans(expected, out var massaged, out int? caretPosition, out var spans); Assert.Equal(massaged, actualText); } }