提交 bdd2f16d 编写于 作者: B Balaji Krishnan

Some improvements to..

.. Move type tests.
上级 ff0cb871
......@@ -158,7 +158,8 @@
<Compile Include="CodeActions\LambdaSimplifier\LambdaSimplifierTests.cs" />
<Compile Include="CodeActions\MoveType\CSharpMoveTypeTestsBase.cs" />
<Compile Include="CodeActions\MoveType\MoveTypeTests.MoveToNewFile.cs" />
<Compile Include="CodeActions\MoveType\MoveTypeTests.RenameFileOrType.cs" />
<Compile Include="CodeActions\MoveType\MoveTypeTests.RenameType.cs" />
<Compile Include="CodeActions\MoveType\MoveTypeTests.RenameFile.cs" />
<Compile Include="CodeActions\ReplacePropertyWithMethods\ReplacePropertyWithMethodsTests.cs" />
<Compile Include="Completion\CompletionServiceTests.cs" />
<Compile Include="Diagnostics\AddUsing\AddUsingTests_NuGet.cs" />
......
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Threading.Tasks;
using Roslyn.Test.Utilities;
using Xunit;
namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.CodeActions.MoveType
{
public partial class MoveTypeTests : CSharpMoveTypeTestsBase
{
[WpfFact, Trait(Traits.Feature, Traits.Features.CodeActionsMoveType)]
public async Task SingleClassInFile_RenameFile()
{
var code =
@"[||]class Class1 { }";
var expectedDocumentName = "Class1.cs";
await TestRenameFileToMatchTypeAsync(code, expectedDocumentName);
}
[WpfFact, Trait(Traits.Feature, Traits.Features.CodeActionsMoveType)]
public async Task TypeNameMatchesFileName_RenameFile()
{
// testworkspace creates files like test1.cs, test2.cs and so on..
// so type name matches filename here and rename file action should not be offered.
var code =
@"[||]class test1 { }";
await TestRenameFileToMatchTypeAsync(code, expectedCodeAction: false);
}
[WpfFact, Trait(Traits.Feature, Traits.Features.CodeActionsMoveType)]
public async Task MoreThanOneTypeInFile_RenameFile()
{
var code =
@"[||]class Class1 { }
class Class2 { }";
await TestRenameFileToMatchTypeAsync(code, expectedCodeAction: false);
}
}
}
......@@ -9,41 +9,35 @@ namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.CodeActions.MoveType
public partial class MoveTypeTests : CSharpMoveTypeTestsBase
{
[WpfFact, Trait(Traits.Feature, Traits.Features.CodeActionsMoveType)]
public async Task SingleClassInFile()
public async Task SingleClassInFile_RenameType()
{
var code =
@"[||]class Class1 { }";
var expectedDocumentName = "Class1.cs";
await TestRenameFileToMatchTypeAsync(code, expectedDocumentName);
var codeWithTypeRenamedToMatchFileName =
@"class test1 { }";
@"class [|test1|] { }";
await TestRenameTypeToMatchFileAsync(code, codeWithTypeRenamedToMatchFileName);
}
[WpfFact, Trait(Traits.Feature, Traits.Features.CodeActionsMoveType)]
public async Task TypeNameMatchesFileName()
public async Task TypeNameMatchesFileName_RenameType()
{
// testworkspace creates files like test1.cs, test2.cs and so on..
// so type name matches filename here and rename file action should not be offered.
var code =
@"[||]class test1 { }";
await TestRenameFileToMatchTypeAsync(code, expectedCodeAction: false);
await TestRenameTypeToMatchFileAsync(code, expectedCodeAction: false);
}
[WpfFact, Trait(Traits.Feature, Traits.Features.CodeActionsMoveType)]
public async Task MoreThanOneTypeInFile()
public async Task MoreThanOneTypeInFile_RenameType()
{
var code =
@"[||]class Class1 { }
class Class2 { }";
await TestRenameFileToMatchTypeAsync(code, expectedCodeAction: false);
await TestRenameTypeToMatchFileAsync(code, expectedCodeAction: false);
}
}
......
......@@ -8,6 +8,7 @@
using Microsoft.CodeAnalysis.CodeRefactorings;
using Microsoft.CodeAnalysis.CodeRefactorings.MoveType;
using Microsoft.CodeAnalysis.Editor.UnitTests.CodeActions;
using Microsoft.CodeAnalysis.Text;
using Microsoft.CodeAnalysis.UnitTests;
using Roslyn.Test.Utilities;
using Xunit;
......@@ -16,15 +17,8 @@ namespace Microsoft.CodeAnalysis.Editor.UnitTests.MoveType
{
public abstract class AbstractMoveTypeTest : AbstractCodeActionTest
{
private const string SpanMarker = "[||]";
private const string RenameFileCodeActionTitle = "Rename File";
private const string RenameTypeCodeActionTitle = "Rename Type";
private string StripSpanMarkers(string text)
{
var index = text.IndexOf(SpanMarker);
return text.Remove(index, SpanMarker.Length);
}
private string RenameFileCodeActionTitle = FeaturesResources.RenameFileTo_0;
private string RenameTypeCodeActionTitle = FeaturesResources.RenameTypeTo_0;
protected override CodeRefactoringProvider CreateCodeRefactoringProvider(Workspace workspace)
{
......@@ -46,8 +40,14 @@ protected override CodeRefactoringProvider CreateCodeRefactoringProvider(Workspa
var documentId = workspace.Documents[0].Id;
var documentName = workspace.Documents[0].Name;
string expectedText;
TextSpan span;
MarkupTestFile.GetSpan(expectedCode, out expectedText, out span);
var codeActionTitle = string.Format(RenameTypeCodeActionTitle, expectedText.Substring(span.Start, span.Length));
var oldSolutionAndNewSolution = await TestOperationAsync(
workspace, expectedCode, RenameTypeCodeActionTitle, compareTokens);
workspace, expectedText, codeActionTitle, compareTokens);
// the original source document does not exist in the new solution.
var newSolution = oldSolutionAndNewSolution.Item2;
......@@ -82,11 +82,16 @@ protected override CodeRefactoringProvider CreateCodeRefactoringProvider(Workspa
Assert.True(expectedDocumentName != null, $"{nameof(expectedDocumentName)} should be present if {nameof(expectedCodeAction)} is true.");
var oldDocumentId = workspace.Documents[0].Id;
var expectedText = StripSpanMarkers(originalCode);
string expectedText;
IList<TextSpan> spans;
MarkupTestFile.GetSpans(originalCode, out expectedText, out spans);
var codeActionTitle = string.Format(RenameFileCodeActionTitle, expectedDocumentName);
// a new document with the same text as old document is added.
var oldSolutionAndNewSolution = await TestOperationAsync(
workspace, expectedText, RenameFileCodeActionTitle, compareTokens);
workspace, expectedText, codeActionTitle, compareTokens);
// the original source document does not exist in the new solution.
var newSolution = oldSolutionAndNewSolution.Item2;
......
......@@ -138,7 +138,8 @@
<Compile Include="CodeActions\InvertIf\InvertIfTests.vb" />
<Compile Include="CodeActions\MoveType\BasicMoveTypeTestsBase.vb" />
<Compile Include="CodeActions\MoveType\MoveTypeTests.MoveToNewFile.vb" />
<Compile Include="CodeActions\MoveType\MoveTypeTests.RenameFileOrType.vb" />
<Compile Include="CodeActions\MoveType\MoveTypeTests.RenameType.vb" />
<Compile Include="CodeActions\MoveType\MoveTypeTests.RenameFile.vb" />
<Compile Include="CodeActions\Preview\PreviewTests.vb" />
<Compile Include="CodeActions\ReplacePropertyWithMethods\ReplacePropertyWithMethodsTests.vb" />
<Compile Include="Completion\CompletionServiceTests.vb" />
......
' Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.CodeRefactorings.MoveType
Partial Public Class MoveTypeTests
<WpfFact, Trait(Traits.Feature, Traits.Features.CodeActionsMoveType)>
Public Async Function SingleClassInFileWithNoContainerNamespace_RenameFile() As Task
Dim code =
<File>
[||]Class Class1
End Class
</File>
Dim expectedDocumentName = "Class1.vb"
Await TestRenameFileToMatchTypeAsync(code, expectedDocumentName)
End Function
<WpfFact, Trait(Traits.Feature, Traits.Features.CodeActionsMoveType)>
Public Async Function TypeNameMatchesFileName_RenameFile() As Task
' testworkspace creates files Like test1.cs, test2.cs And so on..
' so type name matches filename here And rename file action should Not be offered.
Dim code =
<File>
[||]Class test1
End Class
</File>
Await TestRenameFileToMatchTypeAsync(code, expectedCodeAction:=False)
End Function
<WpfFact, Trait(Traits.Feature, Traits.Features.CodeActionsMoveType)>
Public Async Function MoreThanOneTypeInFile_RenameFile() As Task
Dim code =
<File>
[||]Class Class1
End Class
Class Class2
End Class
</File>
Await TestRenameFileToMatchTypeAsync(code, expectedCodeAction:=False)
End Function
End Class
End Namespace
......@@ -4,19 +4,16 @@ Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.CodeRefactorings.M
Partial Public Class MoveTypeTests
<WpfFact, Trait(Traits.Feature, Traits.Features.CodeActionsMoveType)>
Public Async Function SingleClassInFileWithNoContainerNamespace() As Task
Public Async Function SingleClassInFileWithNoContainerNamespace_RenameType() As Task
Dim code =
<File>
[||]Class Class1
End Class
</File>
Dim expectedDocumentName = "Class1.vb"
Await TestRenameFileToMatchTypeAsync(code, expectedDocumentName)
Dim codeAfterRenamingType =
<File>
Class test1
Class [|test1|]
End Class
</File>
......@@ -24,7 +21,7 @@ End Class
End Function
<WpfFact, Trait(Traits.Feature, Traits.Features.CodeActionsMoveType)>
Public Async Function TypeNameMatchesFileName() As Task
Public Async Function TypeNameMatchesFileName_RenameType() As Task
' testworkspace creates files Like test1.cs, test2.cs And so on..
' so type name matches filename here And rename file action should Not be offered.
Dim code =
......@@ -33,12 +30,11 @@ End Class
End Class
</File>
Await TestRenameFileToMatchTypeAsync(code, expectedCodeAction:=False)
Await TestRenameTypeToMatchFileAsync(code, expectedCodeAction:=False)
End Function
<WpfFact, Trait(Traits.Feature, Traits.Features.CodeActionsMoveType)>
Public Async Function MoreThanOneTypeInFile() As Task
Public Async Function MoreThanOneTypeInFile_RenameType() As Task
Dim code =
<File>
[||]Class Class1
......@@ -48,7 +44,6 @@ Class Class2
End Class
</File>
Await TestRenameFileToMatchTypeAsync(code, expectedCodeAction:=False)
Await TestRenameTypeToMatchFileAsync(code, expectedCodeAction:=False)
End Function
End Class
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册