/
githubmirror
/
roslyn
Обзор
Документация
Войти
/
githubmirror
/
roslyn
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/EditorFeatures/CSharpTest/Rename/CSharpRenamerTests.cs
413 строк
9 KB
Cyrus Najmabadi
Cleanup test methods
24 июл 2025, 11:15
24 июл 2025, 11:15
9b3e554
Код
Авторство
О чём код?
// 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 System.Threading.Tasks; using Roslyn.Test.Utilities; using Xunit; namespace Microsoft.CodeAnalysis.UnitTests.Renamer; public sealed class CSharpRenamerTests : RenamerTests { protected override string LanguageName => LanguageNames.CSharp; [Fact] public Task CSharp_TestEmptyDocument() => TestRenameDocument( "", "", newDocumentName: "NewDocumentName"); [Fact] public Task CSharp_TestNullDocumentName() => TestEmptyActionSet( "class C {}", documentName: "C.cs"); [Fact] public Task CSharp_RenameDocument_NoRenameType() => TestEmptyActionSet( @"class C {}", documentName: "NotC.cs", newDocumentName: "C.cs"); [Fact] public Task CSharp_RenameDocument_RenameType() => TestRenameDocument( @"class OriginalName {}", @"class NewDocumentName {}", documentName: "OriginalName.cs", newDocumentName: "NewDocumentName.cs"); [Fact] public Task CSharp_RenameDocument_RenameType_CaseInsensitive() => TestRenameDocument( @"class OriginalName {}", @"class NewDocumentName {}", documentName: "originalName.cs", newDocumentName: "NewDocumentName.cs"); [Fact] public Task CSharp_RenameDocument_RenameInterface() => TestRenameDocument( @"interface IInterface {}", @"interface IInterface2 {}", documentName: "IInterface.cs", newDocumentName: "IInterface2.cs"); [Fact] public Task CSharp_RenameDocument_RenameEnum() => TestRenameDocument( @"enum MyEnum {}", @"enum MyEnum2 {}", documentName: "MyEnum.cs", newDocumentName: "MyEnum2.cs"); [Fact] public Task CSharp_RenameDocument_RenamePartialClass() { var originalDocuments = new[] { new DocumentWithInfo() { Text = """ namespace Test { partial class C { } } """, DocumentFilePath = @"Test\Folder\Path\C.cs", DocumentName = "C.cs" }, new DocumentWithInfo() { Text = """ namespace Test { partial class C { class Other { } } } """, DocumentFilePath = @"Test\Folder\Path\C.Other.cs", DocumentName = "C.Other.cs" } }; var expectedDocuments = new[] { new DocumentWithInfo() { Text = """ namespace Test { partial class C2 { } } """, DocumentFilePath = @"Test\Folder\Path\C2.cs", DocumentName = "C2.cs" }, new DocumentWithInfo() { Text = """ namespace Test { partial class C2 { class Other { } } } """, DocumentFilePath = @"Test\Folder\Path\C.Other.cs", DocumentName = "C.Other.cs" } }; return TestRenameDocument(originalDocuments, expectedDocuments); } [Fact] public Task CSharp_RenameDocument_NoRenameNamespace() => TestEmptyActionSet( """ namespace Test.Path { class C { } } """, documentPath: @"Test\Path\Document.cs", documentName: @"Document.cs"); [Fact] public Task CSharp_RenameDocument_RenameNamespace() => TestRenameDocument( """ namespace Test.Path { class C { } } """, """ namespace Test.Path.After.Test { class C { } } """, documentPath: @"Test\Path\Document.cs", documentName: @"Document.cs", newDocumentPath: @"Test\Path\After\Test\Document.cs"); [Fact] public Task CSharp_RenameDocument_RenameMultipleNamespaces() => TestRenameDocument( """ namespace Test.Path { class C { } } namespace Test.Path { class C2 { } } """, """ namespace Test.Path.After.Test { class C { } } namespace Test.Path.After.Test { class C2 { } } """, documentPath: @"Test\Path\Document.cs", documentName: @"Document.cs", newDocumentPath: @"Test\Path\After\Test\Document.cs"); [Fact] public Task CSharp_RenameDocument_RenameMultipleNamespaces2() => TestRenameDocument( """ namespace Test.Path { class C { } } namespace Test.Path { class C2 { } } namespace Other.Namespace { class C3 { } } """, """ namespace Test.Path.After.Test { class C { } } namespace Test.Path.After.Test { class C2 { } } namespace Other.Namespace { class C3 { } } """, documentPath: @"Test\Path\Document.cs", documentName: @"Document.cs", newDocumentPath: @"Test\Path\After\Test\Document.cs"); [Fact] public Task CSharp_RenameDocument_RenameMultipleNamespaces3() => TestRenameDocument( """ namespace Test.Path { class C { } } namespace Other.Namespace { class C2 { } } namespace Test.Path { class C3 { } } """, """ namespace Test.Path.After.Test { class C { } } namespace Other.Namespace { class C2 { } } namespace Test.Path.After.Test { class C3 { } } """, documentPath: @"Test\Path\Document.cs", documentName: @"Document.cs", newDocumentPath: @"Test\Path\After\Test\Document.cs"); [Fact] public Task CSharp_RenameDocument_RenameMultipleNamespaces_Nested() => TestRenameDocument( """ namespace Test.Path { class C { } } namespace Test { namespace Path { class C2 { } } } """, """ namespace Test.Path.After.Test { class C { } } namespace Test { namespace Path { class C2 { } } } """, documentPath: @"Test\Path\Document.cs", documentName: @"Document.cs", newDocumentPath: @"Test\Path\After\Test\Document.cs"); [Fact] public Task CSharp_RenameDocument_RenameNamespace2() => TestRenameDocument( """ namespace Test.Path { class C { } } """, """ namespace Test { class C { } } """, documentPath: @"Test\Path\Document.cs", documentName: @"Document.cs", newDocumentPath: @"Test\Document.cs"); [Fact] public Task CSharp_RenameDocument_RenameNamespaceAndClass() => TestRenameDocument( """ namespace Test.Path { class C { } } """, """ namespace Test { class C2 { } } """, documentPath: @"Test\Path\C2.cs", documentName: @"C.cs", newDocumentName: @"C2", newDocumentPath: @"Test\C2.cs"); [Fact, WorkItem("https://github.com/dotnet/roslyn/issues/46580")] public Task CSharp_RenameDocument_MappedDocumentHasNoResults() => TestRenameMappedFile(""" <h3>Component1</h3> @code {} """, "Component1.razor", newDocumentName: "MyComponent.razor"); }