提交 fd6c7845 编写于 作者: D Dustin Campbell

Add unit tests for Code Model issue with member node keys

Add unit tests for PR #3242 that correctly trigger the failure when the
change is not present, but pass when it *is* present.
上级 146092ce
......@@ -7,12 +7,12 @@ Namespace Microsoft.VisualStudio.LanguageServices.UnitTests.CodeModel
Public MustInherit Class AbstractFileCodeModelTests
Inherits AbstractCodeModelObjectTests(Of EnvDTE80.FileCodeModel2)
Protected Sub TestOperation(code As XElement, expectedCode As XElement, testOperation As Action(Of EnvDTE80.FileCodeModel2))
Protected Sub TestOperation(code As XElement, expectedCode As XElement, operation As Action(Of EnvDTE80.FileCodeModel2))
Using state = CreateCodeModelTestState(GetWorkspaceDefinition(code))
Dim fileCodeModel = state.FileCodeModel
Assert.NotNull(fileCodeModel)
testOperation(fileCodeModel)
operation(fileCodeModel)
Dim text = state.GetDocumentAtCursor().GetTextAsync(CancellationToken.None).Result.ToString()
......@@ -24,7 +24,7 @@ Namespace Microsoft.VisualStudio.LanguageServices.UnitTests.CodeModel
Assert.NotNull(fileCodeModel)
fileCodeModel.BeginBatch()
testOperation(fileCodeModel)
operation(fileCodeModel)
fileCodeModel.EndBatch()
Dim text = state.GetDocumentAtCursor().GetTextAsync(CancellationToken.None).Result.ToString()
......@@ -33,6 +33,24 @@ Namespace Microsoft.VisualStudio.LanguageServices.UnitTests.CodeModel
End Using
End Sub
Protected Sub TestOperation(code As XElement, operation As Action(Of EnvDTE80.FileCodeModel2))
Using state = CreateCodeModelTestState(GetWorkspaceDefinition(code))
Dim fileCodeModel = state.FileCodeModel
Assert.NotNull(fileCodeModel)
operation(fileCodeModel)
End Using
Using state = CreateCodeModelTestState(GetWorkspaceDefinition(code))
Dim fileCodeModel = state.FileCodeModel
Assert.NotNull(fileCodeModel)
fileCodeModel.BeginBatch()
operation(fileCodeModel)
fileCodeModel.EndBatch()
End Using
End Sub
Protected Overrides Sub TestAddAttribute(code As XElement, expectedCode As XElement, data As AttributeData)
TestOperation(code, expectedCode,
Sub(fileCodeModel)
......
......@@ -994,6 +994,33 @@ class D
End Using
End Sub
<WorkItem(925569)>
<ConditionalFact(GetType(x86)), Trait(Traits.Feature, Traits.Features.CodeModel)>
Public Sub ChangeClassNameAndGetNameOfChildFunction()
Dim code =
<Code>
class C
{
void M() { }
}
</Code>
TestOperation(code,
Sub(fileCodeModel)
Dim codeClass = TryCast(fileCodeModel.CodeElements.Item(1), EnvDTE.CodeClass)
Assert.NotNull(codeClass)
Assert.Equal("C", codeClass.Name)
Dim codeFunction = TryCast(codeClass.Members.Item(1), EnvDTE.CodeFunction)
Assert.NotNull(codeFunction)
Assert.Equal("M", codeFunction.Name)
codeClass.Name = "NewClassName"
Assert.Equal("NewClassName", codeClass.Name)
Assert.Equal("M", codeFunction.Name)
End Sub)
End Sub
Protected Overrides ReadOnly Property LanguageName As String
Get
Return LanguageNames.CSharp
......
......@@ -922,6 +922,33 @@ End Class
End Sub
<WorkItem(925569)>
<ConditionalFact(GetType(x86)), Trait(Traits.Feature, Traits.Features.CodeModel)>
Public Sub ChangeClassNameAndGetNameOfChildFunction()
Dim code =
<Code>
Class C
Sub M()
End Sub
End Class
</Code>
TestOperation(code,
Sub(fileCodeModel)
Dim codeClass = TryCast(fileCodeModel.CodeElements.Item(1), EnvDTE.CodeClass)
Assert.NotNull(codeClass)
Assert.Equal("C", codeClass.Name)
Dim codeFunction = TryCast(codeClass.Members.Item(1), EnvDTE.CodeFunction)
Assert.NotNull(codeFunction)
Assert.Equal("M", codeFunction.Name)
codeClass.Name = "NewClassName"
Assert.Equal("NewClassName", codeClass.Name)
Assert.Equal("M", codeFunction.Name)
End Sub)
End Sub
<WorkItem(2355, "https://github.com/dotnet/roslyn/issues/2355")>
<ConditionalFact(GetType(x86)), Trait(Traits.Feature, Traits.Features.CodeModel)>
Public Sub CreateUnknownElementForDeclarationFunctionAndSub()
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册