File: SpellCheck\SpellCheckSpanTests.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 System.Threading.Tasks;
using Microsoft.CodeAnalysis.Editor.UnitTests.SpellCheck;
using Microsoft.CodeAnalysis.Test.Utilities;
using Roslyn.Test.Utilities;
using Xunit;
 
namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.SpellCheck;
 
[UseExportProvider]
public class SpellCheckSpanTests : AbstractSpellCheckSpanTests
{
    protected override EditorTestWorkspace CreateWorkspace(string content)
        => EditorTestWorkspace.CreateCSharp(content);
 
    [Fact]
    public async Task TestSingleLineComment1()
    {
        await TestAsync("{|Comment:// Goo|}");
    }
 
    [Fact]
    public async Task TestSingleLineComment2()
    {
        await TestAsync("""
            {|Comment:// Goo|}
            """);
    }
 
    [Fact]
    public async Task TestMultiLineComment1()
    {
        await TestAsync("{|Comment:/* Goo */|}");
    }
 
    [Fact]
    public async Task TestMultiLineComment2()
    {
        await TestAsync("""
            {|Comment:/*
               Goo
             */|}
            """);
    }
 
    [Fact]
    public async Task TestMultiLineComment3()
    {
        await TestAsync("""
            {|Comment:/*
               Goo
             |}
            """);
    }
 
    [Fact]
    public async Task TestMultiLineComment4()
    {
        await TestAsync("""
            {|Comment:/**/|}
            """);
    }
 
    [Fact]
    public async Task TestMultiLineComment5()
    {
        await TestAsync("""
            {|Comment:/*/|}
            """);
    }
 
    [Fact]
    public async Task TestDocComment1()
    {
        await TestAsync("""
            ///{|Comment:goo bar baz|}
            class {|Identifier:C|}
            {
            }
            """);
    }
 
    [Fact]
    public async Task TestDocComment2()
    {
        await TestAsync("""
            ///{|Comment:goo bar baz|}
            ///{|Comment:goo bar baz|}
            class {|Identifier:C|}
            {
            }
            """);
    }
 
    [Fact]
    public async Task TestDocComment3()
    {
        await TestAsync("""
            ///{|Comment: |}<summary>{|Comment: goo bar baz |}</summary>
            class {|Identifier:C|}
            {
            }
            """);
    }
 
    [Fact]
    public async Task TestString1()
    {
        await TestAsync(@"{|String:"" goo ""|}");
    }
 
    [Fact]
    public async Task TestString2()
    {
        await TestAsync("""
            " goo
            """);
    }
 
    [Fact]
    public async Task TestString3()
    {
        await TestAsync("""
            {|String:" goo "|}
            """);
    }
 
    [Fact]
    public async Task TestString4()
    {
        await TestAsync("""
            " goo
            """);
    }
 
    [Fact]
    public async Task TestString5()
    {
        await TestAsync("""
            {|String:@" goo "|}
            """);
    }
 
    [Fact]
    public async Task TestString6()
    {
        await TestAsync("""
            @" goo
            """);
    }
 
    [Fact]
    public async Task TestString7()
    {
        await TestAsync(@"{|String:"""""" goo """"""|}");
    }
 
    [Fact]
    public async Task TestString8()
    {
        await TestAsync(""""
            """ goo ""
            """");
    }
 
    [Fact]
    public async Task TestString9()
    {
        await TestAsync(""""
            """ goo "
            """");
    }
 
    [Fact]
    public async Task TestString10()
    {
        await TestAsync(""""
            """ goo
            """");
    }
 
    [Fact]
    public async Task TestString11()
    {
        await TestAsync(""""
            {|String:"""
                goo 
                """|}
            """");
    }
 
    [Fact]
    public async Task TestString12()
    {
        await TestAsync(""""
            """
                goo
                ""
            """");
    }
 
    [Fact]
    public async Task TestString13()
    {
        await TestAsync(""""
            """
                goo
                "
            """");
    }
 
    [Fact]
    public async Task TestString14()
    {
        await TestAsync(""""
            """
                goo
            """");
    }
 
    [Fact]
    public async Task TestString15()
    {
        await TestAsync("""
            $"{|String: goo |}"
            """);
    }
 
    [Fact]
    public async Task TestString16()
    {
        await TestAsync("""
            $"{|String: goo |}{0}{|String: bar |}"
            """);
    }
 
    [Fact]
    public async Task TestString17()
    {
        await TestAsync(""""
            $"""{|String: goo |}{0}{|String: bar |}"""
            """");
    }
 
    [Fact]
    public async Task TestString18()
    {
        await TestAsync(""""
            $"""{|String: goo |}{0:abcd}{|String: bar |}"""
            """");
    }
 
    [Fact]
    public async Task TestEscapedString1()
    {
        await TestAsync(""" " {|String:goo|}\r\n{|String:bar |}" """);
    }
 
    [Fact]
    public async Task TestEscapedString2()
    {
        await TestAsync(""" " {|String:goo|}\r\t{|String:bar |}" """);
    }
 
    [Fact]
    public async Task TestEscapedString3()
    {
        await TestAsync(""" " {|String:goo|}\r\u0065bar " """);
    }
 
    [Fact]
    public async Task TestEscapedString4()
    {
        await TestAsync(""" " {|String:C|}:\t{|String:ests |}" """);
    }
 
    [Fact]
    public async Task TestEscapedString5()
    {
        await TestAsync(""" {|String:@" C:\tests "|} """);
    }
 
    [Fact]
    public async Task TestEscapedString6()
    {
        await TestAsync(""" " {|String:C|}:\\{|String:tests |}" """);
    }
 
    [Fact]
    public async Task TestEscapedString7()
    {
        await TestAsync(""" " {|String:C|}:\\{|String:tests|}\\{|String:goo |}" """);
    }
 
    [Fact]
    public async Task TestEscapedString8()
    {
        await TestAsync(""" {|String:@" C:\tests\goo "|} """);
    }
 
    [Fact]
    public async Task TestEscapedString9()
    {
        await TestAsync(""" $" {|String:C|}:\\{|String:tests|}\\{|String:goo |}{0} {|String:C|}:\\{|String:tests|}\\{|String:bar |}" """);
    }
 
    [Fact]
    public async Task TestEscapedString10()
    {
        await TestAsync(""" $@"{|String: C:\tests\goo |}{0}{|String: C:\tests\bar |}" """);
    }
 
    [Fact, WorkItem("https://devdiv.visualstudio.com/DevDiv/_workitems/edit/1908466")]
    public async Task TestEscapedString11()
    {
        await TestAsync(""" " {|String:open telemetry for audits |}\n\t {|String:and |}0{|String:Tel table doesn't exist yet |}" """);
    }
 
    [Fact]
    public async Task TestIdentifier1()
    {
        await TestAsync("""
            class {|Identifier:C|}
            {
            }
            """);
    }
 
    [Fact]
    public async Task TestIdentifier2()
    {
        await TestAsync("""
            record {|Identifier:C|}
            {
            }
            """);
    }
 
    [Fact]
    public async Task TestIdentifier3()
    {
        await TestAsync("""
            record class {|Identifier:C|}
            {
            }
            """);
    }
 
    [Fact]
    public async Task TestIdentifier4()
    {
        await TestAsync("""
            delegate void {|Identifier:C|}();
            """);
    }
 
    [Fact]
    public async Task TestIdentifier5()
    {
        await TestAsync("""
            enum {|Identifier:C|} { }
            """);
    }
 
    [Fact]
    public async Task TestIdentifier6()
    {
        await TestAsync("""
            enum {|Identifier:C|}
            {
                {|Identifier:D|}
            }
            """);
    }
 
    [Fact]
    public async Task TestIdentifier7()
    {
        await TestAsync("""
            enum {|Identifier:C|}
            {
                {|Identifier:D|}, {|Identifier:E|}
            }
            """);
    }
 
    [Fact]
    public async Task TestIdentifier8()
    {
        await TestAsync("""
            interface {|Identifier:C|} { }
            """);
    }
 
    [Fact]
    public async Task TestIdentifier9()
    {
        await TestAsync("""
            struct {|Identifier:C|} { }
            """);
    }
 
    [Fact]
    public async Task TestIdentifier10()
    {
        await TestAsync("""
            record struct {|Identifier:C|}() { }
            """);
    }
 
    [Fact]
    public async Task TestIdentifier11()
    {
        await TestAsync("""
            class {|Identifier:C|}<{|Identifier:T|}> { }
            """);
    }
 
    [Fact]
    public async Task TestIdentifier12()
    {
        await TestAsync("""
            class {|Identifier:C|}
            {
                private int {|Identifier:X|};
            }
            """);
    }
 
    [Fact]
    public async Task TestIdentifier13()
    {
        await TestAsync("""
            class {|Identifier:C|}
            {
                private int {|Identifier:X|}, {|Identifier:Y|};
            }
            """);
    }
 
    [Fact]
    public async Task TestIdentifier14()
    {
        await TestAsync("""
            class {|Identifier:C|}
            {
                private const int {|Identifier:X|};
            }
            """);
    }
 
    [Fact]
    public async Task TestIdentifier15()
    {
        await TestAsync("""
            class {|Identifier:C|}
            {
                private const int {|Identifier:X|}, {|Identifier:Y|};
            }
            """);
    }
 
    [Fact]
    public async Task TestIdentifier16()
    {
        await TestAsync("""
            class {|Identifier:C|}
            {
                private int {|Identifier:X|} => 0;
            }
            """);
    }
 
    [Fact]
    public async Task TestIdentifier17()
    {
        await TestAsync("""
            class {|Identifier:C|}
            {
                private event Action {|Identifier:X|};
            }
            """);
    }
 
    [Fact]
    public async Task TestIdentifier18()
    {
        await TestAsync("""
            class {|Identifier:C|}
            {
                private event Action {|Identifier:X|}, {|Identifier:Y|};
            }
            """);
    }
 
    [Fact]
    public async Task TestIdentifier19()
    {
        await TestAsync("""
            class {|Identifier:C|}
            {
                private event Action {|Identifier:X|} { add { } remove { } }
            }
            """);
    }
 
    [Fact]
    public async Task TestIdentifier20()
    {
        await TestAsync("""
            class {|Identifier:C|}
            {
                void {|Identifier:D|}()
                {
                    int {|Identifier:E|};
                }
            }
            """);
    }
 
    [Fact]
    public async Task TestIdentifier21()
    {
        await TestAsync("""
            class {|Identifier:C|}
            {
                void {|Identifier:D|}()
                {
                    int {|Identifier:E|}, {|Identifier:F|};
                }
            }
            """);
    }
 
    [Fact]
    public async Task TestIdentifier22()
    {
        await TestAsync("""
            class {|Identifier:C|}
            {
                void {|Identifier:D|}()
                {
            {|Identifier:E|}:
                    return;
                }
            }
            """);
    }
 
    [Fact]
    public async Task TestIdentifier23()
    {
        await TestAsync("""
            class {|Identifier:C|}
            {
                void {|Identifier:D|}(int {|Identifier:E|})
                {
                }
            }
            """);
    }
 
    [Fact]
    public async Task TestIdentifier24()
    {
        await TestAsync("""
            class {|Identifier:C|}
            {
                void {|Identifier:D|}(int {|Identifier:E|})
                {
                }
            }
            """);
    }
 
    [Fact]
    public async Task TestIdentifier25()
    {
        await TestAsync("""
            class {|Identifier:C|}
            {
                void {|Identifier:D|}(int {|Identifier:E|}, int {|Identifier:F|})
                {
                }
            }
            """);
    }
 
    [Fact]
    public async Task TestIdentifier26()
    {
        await TestAsync("""
            static class {|Identifier:C|}
            {
                static void {|Identifier:D|}(this int {|Identifier:E|})
                {
                }
            }
            """);
    }
 
    [Fact]
    public async Task TestIdentifier27()
    {
        await TestAsync("""
            namespace {|Identifier:C|}
            {
            }
            """);
    }
 
    [Fact]
    public async Task TestIdentifier28()
    {
        await TestAsync("""
            namespace {|Identifier:C|}.{|Identifier:D|}
            {
            }
            """);
    }
 
    [Fact]
    public async Task TestIdentifier29()
    {
        await TestAsync("""
            class {|Identifier:C|}
            {
                void {|Identifier:D|}()
                {
                    for (int {|Identifier:E|} = 0; E < 10; E++)
                    {
                    }
                }
            }
            """);
    }
 
    [Fact]
    public async Task TestIdentifier30()
    {
        await TestAsync("""
            class {|Identifier:C|}
            {
                void {|Identifier:D|}()
                {
                    Goo(out var {|Identifier:E|});
                }
            }
            """);
    }
 
    [Fact]
    public async Task TestIdentifier31()
    {
        await TestAsync("""
            class {|Identifier:C|}() { }
            """);
    }
 
    [Fact]
    public async Task TestIdentifier32()
    {
        await TestAsync("""
            struct {|Identifier:C|}() { }
            """);
    }
 
    [Fact]
    public async Task TestIdentifier33()
    {
        await TestAsync("""
            class {|Identifier:C|};
            """);
    }
 
    [Fact]
    public async Task TestIdentifier34()
    {
        await TestAsync("""
            struct {|Identifier:C|};
            """);
    }
}