From 60f8761c0944482f154d4423170b8e39cdcad070 Mon Sep 17 00:00:00 2001 From: Cyrus Najmabadi Date: Thu, 16 Nov 2017 22:43:56 -0800 Subject: [PATCH] Add test to verify linked file updating works properly. --- ...AbstractCrossLanguageUserDiagnosticTest.vb | 14 ++++-- .../AddImport/AddImportCrossLanguageTests.vb | 8 +-- .../UseAutoProperty/UseAutoPropertyTests.vb | 49 +++++++++++++++++++ 3 files changed, 63 insertions(+), 8 deletions(-) diff --git a/src/EditorFeatures/Test2/Diagnostics/AbstractCrossLanguageUserDiagnosticTest.vb b/src/EditorFeatures/Test2/Diagnostics/AbstractCrossLanguageUserDiagnosticTest.vb index 812f9984899..202a6268a9a 100644 --- a/src/EditorFeatures/Test2/Diagnostics/AbstractCrossLanguageUserDiagnosticTest.vb +++ b/src/EditorFeatures/Test2/Diagnostics/AbstractCrossLanguageUserDiagnosticTest.vb @@ -44,7 +44,7 @@ Namespace Microsoft.CodeAnalysis.Editor.UnitTests.Diagnostics Optional codeActionIndex As Integer = 0, Optional verifyTokens As Boolean = True, Optional fileNameToExpected As Dictionary(Of String, String) = Nothing, - Optional verifySolutions As Action(Of Solution, Solution) = Nothing, + Optional verifySolutions As Func(Of Solution, Solution, Task) = Nothing, Optional onAfterWorkspaceCreated As Action(Of TestWorkspace) = Nothing) As Task Using workspace = TestWorkspace.CreateWorkspace(definition) onAfterWorkspaceCreated?.Invoke(workspace) @@ -65,16 +65,20 @@ Namespace Microsoft.CodeAnalysis.Editor.UnitTests.Diagnostics Dim updatedSolution = workspace.CurrentSolution - verifySolutions?.Invoke(oldSolution, updatedSolution) + If verifySolutions IsNot Nothing Then + Await verifySolutions(oldSolution, updatedSolution) + End If - If expected Is Nothing AndAlso fileNameToExpected Is Nothing Then + If expected Is Nothing AndAlso + fileNameToExpected Is Nothing AndAlso + verifySolutions Is Nothing Then Dim projectChanges = SolutionUtilities.GetSingleChangedProjectChanges(oldSolution, updatedSolution) Assert.Empty(projectChanges.GetChangedDocuments()) ElseIf expected IsNot Nothing Then Dim updatedDocument = SolutionUtilities.GetSingleChangedDocument(oldSolution, updatedSolution) Await VerifyAsync(expected, verifyTokens, updatedDocument) - Else + ElseIf fileNameToExpected IsNot Nothing Then For Each kvp In fileNameToExpected Dim updatedDocument = updatedSolution.Projects.SelectMany(Function(p) p.Documents).Single(Function(d) d.Name = kvp.Key) Await VerifyAsync(kvp.Value, verifyTokens, updatedDocument) @@ -134,7 +138,7 @@ Namespace Microsoft.CodeAnalysis.Editor.UnitTests.Diagnostics Dim hostDocument = GetHostDocument(workspace) Dim invocationBuffer = hostDocument.TextBuffer - Dim invocationPoint = workspace.Documents.Single(Function(d) d.CursorPosition.HasValue).CursorPosition.Value + Dim invocationPoint = workspace.Documents.Single(Function(d) d.CursorPosition.HasValue AndAlso Not d.IsLinkFile).CursorPosition.Value Dim document = workspace.CurrentSolution.GetDocument(hostDocument.Id) diff --git a/src/EditorFeatures/Test2/Diagnostics/AddImport/AddImportCrossLanguageTests.vb b/src/EditorFeatures/Test2/Diagnostics/AddImport/AddImportCrossLanguageTests.vb index 57f0f7bfbb0..045ea73bc0f 100644 --- a/src/EditorFeatures/Test2/Diagnostics/AddImport/AddImportCrossLanguageTests.vb +++ b/src/EditorFeatures/Test2/Diagnostics/AddImport/AddImportCrossLanguageTests.vb @@ -11,6 +11,7 @@ Imports Microsoft.CodeAnalysis.IncrementalCaches Imports Microsoft.CodeAnalysis.SolutionCrawler Imports Microsoft.CodeAnalysis.UnitTests Imports Microsoft.CodeAnalysis.VisualBasic.AddImport +Imports Roslyn.Utilities Namespace Microsoft.CodeAnalysis.Editor.UnitTests.Diagnostics.AddImport @@ -509,12 +510,12 @@ namespace CSAssembly2 Optional codeActionIndex As Integer = 0, Optional addedReference As String = Nothing, Optional onAfterWorkspaceCreated As Action(Of TestWorkspace) = Nothing) As Task - Dim verifySolutions As Action(Of Solution, Solution) = Nothing + Dim verifySolutions As Func(Of Solution, Solution, Task) = Nothing Dim workspace As TestWorkspace = Nothing If addedReference IsNot Nothing Then verifySolutions = - Sub(oldSolution As Solution, newSolution As Solution) + Function(oldSolution As Solution, newSolution As Solution) Dim initialDocId = workspace.DocumentWithCursor.Id Dim oldProject = oldSolution.GetDocument(initialDocId).Project Dim newProject = newSolution.GetDocument(initialDocId).Project @@ -529,7 +530,8 @@ namespace CSAssembly2 Select p.Name Assert.True(newProjectReferences.Contains(addedReference)) - End Sub + Return SpecializedTasks.EmptyTask + End Function End If Await TestAsync(definition, expected, codeActionIndex, diff --git a/src/EditorFeatures/Test2/Diagnostics/UseAutoProperty/UseAutoPropertyTests.vb b/src/EditorFeatures/Test2/Diagnostics/UseAutoProperty/UseAutoPropertyTests.vb index d7cff8fe291..6dfebd93cc3 100644 --- a/src/EditorFeatures/Test2/Diagnostics/UseAutoProperty/UseAutoPropertyTests.vb +++ b/src/EditorFeatures/Test2/Diagnostics/UseAutoProperty/UseAutoPropertyTests.vb @@ -94,5 +94,54 @@ end class .Value.Trim()} }) End Function + + + Public Async Function TestLinkedFile() As System.Threading.Tasks.Task + Dim input = + + + +partial class C +{ + $$int i; + + public int P { get { return i; } } + + public C() + { + this.i = 0; + } +} + + + + + + + + Dim expectedText = " +partial class C +{ + + public int P { get; private set; } + + public C() + { + this.P = 0; + } +}".Trim() + + Await TestAsync(input, verifySolutions:= + Async Function(oldSolution, newSolution) + Dim documents = newSolution.Projects.SelectMany(Function(p) p.Documents). + Where(Function(d) d.Name = "C.cs") + Assert.Equal(2, documents.Count()) + + For Each doc In documents + Dim text = (Await doc.GetTextAsync()).ToString().Trim() + Assert.Equal(expectedText, text) + Next + End Function) + End Function End Class End Namespace -- GitLab