File: CodeGeneration\NameGenerationTests.cs
Web Access
Project: src\src\EditorFeatures\Test\Microsoft.CodeAnalysis.EditorFeatures.UnitTests.csproj (Microsoft.CodeAnalysis.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.
 
#nullable disable
 
using Microsoft.CodeAnalysis.Test.Utilities;
using Xunit;
 
namespace Microsoft.CodeAnalysis.Editor.UnitTests.CodeGeneration;
 
[Trait(Traits.Feature, Traits.Features.CodeGeneration)]
public class NameGenerationTests : AbstractCodeGenerationTests
{
    [Fact]
    public void TestIdentifierName()
    {
        Test(
            f => f.IdentifierName("a"),
            cs: "a",
            csSimple: "a",
            vb: "a",
            vbSimple: "a");
    }
 
    [Fact]
    public void TestIdentifierNameCSharpKeyword()
    {
        Test(
            f => f.IdentifierName("int"),
            cs: "@int",
            csSimple: "@int",
            vb: "int",
            vbSimple: "int");
    }
 
    [Fact]
    public void TestIdentifierNameVisualBasicKeyword()
    {
        Test(
            f => f.IdentifierName("Integer"),
            cs: "Integer",
            csSimple: "Integer",
            vb: "[Integer]",
            vbSimple: "[Integer]");
    }
 
    [Fact]
    public void TestGenericName1()
    {
        Test(
            f => f.GenericName("Outer", CreateClass("Inner1")),
            cs: "Outer<Inner1>",
            csSimple: null,
            vb: "Outer(Of Inner1)",
            vbSimple: null);
    }
 
    [Fact]
    public void TestGenericName2()
    {
        Test(
            f => f.GenericName("Outer", CreateClass("Inner1"), CreateClass("Inner2")),
            cs: "Outer<Inner1, Inner2>",
            csSimple: null,
            vb: "Outer(Of Inner1, Inner2)",
            vbSimple: null);
    }
 
    [Fact]
    public void TestGenericNameCSharpKeyword()
    {
        Test(
            f => f.GenericName("int", CreateClass("string"), CreateClass("bool")),
            cs: "@int<@string, @bool>",
            csSimple: null,
            vb: "int(Of [string], bool)",
            vbSimple: null);
    }
 
    [Fact]
    public void TestGenericNameVisualBasicKeyword()
    {
        Test(
            f => f.GenericName("Integer", CreateClass("String"), CreateClass("Boolean")),
            cs: "Integer<String, Boolean>",
            csSimple: null,
            vb: "[Integer](Of [String], [Boolean])",
            vbSimple: null);
    }
 
    [Fact]
    public void TestQualifiedName1()
    {
        Test(
            f => f.QualifiedName(f.IdentifierName("Outer"), f.IdentifierName("Inner1")),
            cs: "Outer.Inner1",
            csSimple: "Outer.Inner1",
            vb: "Outer.Inner1",
            vbSimple: "Outer.Inner1");
    }
 
    [Fact]
    public void TestQualifiedNameCSharpKeywords1()
    {
        Test(
            f => f.QualifiedName(f.IdentifierName("int"), f.IdentifierName("string")),
            cs: "@int.@string",
            csSimple: "@int.@string",
            vb: "int.[string]",
            vbSimple: "int.string");
    }
 
    [Fact]
    public void TestQualifiedNameVBKeywords1()
    {
        Test(
            f => f.QualifiedName(f.IdentifierName("Integer"), f.IdentifierName("String")),
            cs: "Integer.String",
            csSimple: "Integer.String",
            vb: "[Integer].[String]",
            vbSimple: "Integer.String");
    }
 
    [Fact]
    public void TestQualifiedGenericName1()
    {
        Test(
            f => f.QualifiedName(
                f.IdentifierName("One"),
                f.GenericName("Outer",
                    CreateClass("Inner1"),
                    CreateClass("Inner2"))),
            cs: "One.Outer<Inner1, Inner2>",
            csSimple: "One.Outer<Inner1, Inner2>",
            vb: "One.Outer(Of Inner1, Inner2)",
            vbSimple: "One.Outer(Of Inner1, Inner2)");
    }
 
    [Fact]
    public void TestQualifiedGenericName2()
    {
        Test(
            f => f.QualifiedName(
                f.GenericName("Outer",
                    CreateClass("Inner1"),
                    CreateClass("Inner2")),
                f.IdentifierName("One")),
            cs: "Outer<Inner1, Inner2>.One",
            csSimple: "Outer<Inner1, Inner2>.One",
            vb: "Outer(Of Inner1, Inner2).One",
            vbSimple: "Outer(Of Inner1, Inner2).One");
    }
}