From 5864f7c756e704f92e92039fde13f96cbaca4ebf Mon Sep 17 00:00:00 2001 From: David Poeschl Date: Tue, 24 Mar 2020 12:14:57 -0700 Subject: [PATCH] Restore unit test --- .../ChangeSignature/RemoveParametersTests.cs | 85 +++++++++++++++++++ 1 file changed, 85 insertions(+) diff --git a/src/EditorFeatures/CSharpTest/ChangeSignature/RemoveParametersTests.cs b/src/EditorFeatures/CSharpTest/ChangeSignature/RemoveParametersTests.cs index 0710ddb4991..8252262ca33 100644 --- a/src/EditorFeatures/CSharpTest/ChangeSignature/RemoveParametersTests.cs +++ b/src/EditorFeatures/CSharpTest/ChangeSignature/RemoveParametersTests.cs @@ -184,6 +184,91 @@ void B() await TestChangeSignatureViaCommandAsync(LanguageNames.CSharp, markup, updatedSignature: updatedSignature, expectedUpdatedInvocationDocumentCode: updatedCode); } + [WpfFact, Trait(Traits.Feature, Traits.Features.ChangeSignature)] + [WorkItem(1102830, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/1102830")] + [WorkItem(784, "https://github.com/dotnet/roslyn/issues/784")] + public async Task RemoveParameters_ExtensionMethodInAnotherFile() + { + var workspaceXml = @" + + "; + + for (var i = 0; i <= 4; i++) + { + workspaceXml += $@" + +class C{i} +{{ + void M() + {{ + C5 c = new C5(); + c.Ext(1, ""two""); + }} +}} +"; + } + + workspaceXml += @" + +public class C5 +{ +} + +public static class C5Ext +{ + public void $$Ext(this C5 c, int i, string s) + { + } +} +"; + + for (var i = 6; i <= 9; i++) + { + workspaceXml += $@" + +class C{i} +{{ + void M() + {{ + C5 c = new C5(); + c.Ext(1, ""two""); + }} +}} +"; + } + + workspaceXml += @" + +"; + + // Ext(this F f, int i, string s) --> Ext(this F f, string s) + // If a reference does not bind correctly, it will believe Ext is not an extension + // method and remove the string argument instead of the int argument. + + var updatedSignature = new[] { + new AddedParameterOrExistingIndex(0), + new AddedParameterOrExistingIndex(2) }; + + using var testState = ChangeSignatureTestState.Create(XElement.Parse(workspaceXml)); + testState.TestChangeSignatureOptionsService.UpdatedSignature = updatedSignature; + var result = testState.ChangeSignature(); + + Assert.True(result.Succeeded); + Assert.Null(testState.ErrorMessage); + + foreach (var updatedDocument in testState.Workspace.Documents.Select(d => result.UpdatedSolution.GetDocument(d.Id))) + { + if (updatedDocument.Name == "C5.cs") + { + Assert.Contains("void Ext(this C5 c, string s)", (await updatedDocument.GetTextAsync(CancellationToken.None)).ToString()); + } + else + { + Assert.Contains(@"c.Ext(""two"");", (await updatedDocument.GetTextAsync(CancellationToken.None)).ToString()); + } + } + } + [WpfFact, Trait(Traits.Feature, Traits.Features.ChangeSignature)] [WorkItem(1102830, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/1102830")] [WorkItem(784, "https://github.com/dotnet/roslyn/issues/784")] -- GitLab