提交 1e8c21b4 编写于 作者: R Ravi Chande

Port reference highlighting tests

上级 bf895a94
......@@ -90,6 +90,7 @@
<InternalsVisibleToTest Include="Roslyn.VisualStudio.CSharp.UnitTests" />
<InternalsVisibleToTest Include="Roslyn.VisualStudio.Services.UnitTests" />
<InternalsVisibleToTest Include="Microsoft.VisualStudio.IntegrationTest.Utilities" />
<InternalsVisibleToTest Include="Roslyn.VisualStudio.IntegrationTests" />
<InternalsVisibleToTest Include="Roslyn.VisualStudio.Test.Utilities2" />
<!-- Eventually a bunch of these unit tests should move into Roslyn.Services.Implementation.UnitTests
and this should be removed. -->
......
// 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.Collections.Generic;
using System.Collections.Immutable;
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.Editor.Implementation.ReferenceHighlighting;
using Microsoft.CodeAnalysis.Shared.TestHooks;
using Microsoft.CodeAnalysis.Text;
using Microsoft.VisualStudio.IntegrationTest.Utilities;
using Microsoft.VisualStudio.IntegrationTest.Utilities.Input;
using Roslyn.Test.Utilities;
using Xunit;
namespace Roslyn.VisualStudio.IntegrationTests.CSharp
{
[Collection(nameof(SharedIntegrationHostFixture))]
public class CSharpReferenceHighlighting : AbstractEditorTest
{
protected override string LanguageName => LanguageNames.CSharp;
public CSharpReferenceHighlighting(VisualStudioInstanceFactory instanceFactory)
: base(instanceFactory, nameof(CSharpReferenceHighlighting))
{
}
[Fact, Trait(Traits.Feature, Traits.Features.Classification)]
public void Highlighting()
{
var markup = @"
class {|definition:C|}
{
void M<T>({|reference:C|} c) where T : {|reference:C|}
{
{|reference:C|} c = new {|reference:C|}();
}
}";
Test.Utilities.MarkupTestFile.GetSpans(markup, out var text, out IDictionary<string, ImmutableArray<TextSpan>> spans);
VisualStudio.Editor.SetText(text);
Verify("C", spans);
// Verify tags disappear
VerifyNone("void");
}
private void Verify(string marker, IDictionary<string, ImmutableArray<TextSpan>> spans)
{
VisualStudio.Editor.PlaceCaret(marker, charsOffset: -1);
VisualStudio.Workspace.WaitForAsyncOperations(string.Concat(
FeatureAttribute.SolutionCrawler,
FeatureAttribute.DiagnosticService,
FeatureAttribute.Classification,
FeatureAttribute.ReferenceHighlighting));
AssertEx.SetEqual(spans["reference"], VisualStudio.Editor.GetTagSpans(ReferenceHighlightTag.TagId));
AssertEx.SetEqual(spans["definition"], VisualStudio.Editor.GetTagSpans(DefinitionHighlightTag.TagId));
}
private void VerifyNone(string marker)
{
VisualStudio.Editor.PlaceCaret(marker, charsOffset: -1);
VisualStudio.Workspace.WaitForAsyncOperations(string.Concat(
FeatureAttribute.SolutionCrawler,
FeatureAttribute.DiagnosticService,
FeatureAttribute.Classification,
FeatureAttribute.ReferenceHighlighting));
Assert.Empty(VisualStudio.Editor.GetTagSpans(ReferenceHighlightTag.TagId));
Assert.Empty(VisualStudio.Editor.GetTagSpans(DefinitionHighlightTag.TagId));
}
}
}
\ No newline at end of file
// 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.Collections.Generic;
using System.Collections.Immutable;
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.Editor.Implementation.ReferenceHighlighting;
using Microsoft.CodeAnalysis.Shared.TestHooks;
using Microsoft.CodeAnalysis.Text;
using Microsoft.VisualStudio.IntegrationTest.Utilities;
using Microsoft.VisualStudio.IntegrationTest.Utilities.Input;
using Roslyn.Test.Utilities;
using Xunit;
namespace Roslyn.VisualStudio.IntegrationTests.Basic
{
[Collection(nameof(SharedIntegrationHostFixture))]
public class BasicReferenceHighlighting : AbstractEditorTest
{
protected override string LanguageName => LanguageNames.VisualBasic;
public BasicReferenceHighlighting(VisualStudioInstanceFactory instanceFactory)
: base(instanceFactory, nameof(BasicReferenceHighlighting))
{
}
[Fact, Trait(Traits.Feature, Traits.Features.Classification)]
public void Highlighting()
{
var markup = @"
Class C
Dim {|definition:Foo|} as Int32
Function M()
Console.WriteLine({|reference:Foo|})
{|writtenReference:Foo|} = 4
End Function
End Class";
Test.Utilities.MarkupTestFile.GetSpans(markup, out var text, out IDictionary<string, ImmutableArray<TextSpan>> spans);
VisualStudio.Editor.SetText(text);
Verify("Foo", spans);
// Verify tags disappear
VerifyNone("4");
}
private void Verify(string marker, IDictionary<string, ImmutableArray<TextSpan>> spans)
{
VisualStudio.Editor.PlaceCaret(marker, charsOffset: -1);
VisualStudio.Workspace.WaitForAsyncOperations(string.Concat(
FeatureAttribute.SolutionCrawler,
FeatureAttribute.DiagnosticService,
FeatureAttribute.Classification,
FeatureAttribute.ReferenceHighlighting));
AssertEx.SetEqual(spans["reference"], VisualStudio.Editor.GetTagSpans(ReferenceHighlightTag.TagId));
AssertEx.SetEqual(spans["writtenReference"], VisualStudio.Editor.GetTagSpans(WrittenReferenceHighlightTag.TagId));
AssertEx.SetEqual(spans["definition"], VisualStudio.Editor.GetTagSpans(DefinitionHighlightTag.TagId));
}
private void VerifyNone(string marker)
{
VisualStudio.Editor.PlaceCaret(marker, charsOffset: -1);
VisualStudio.Workspace.WaitForAsyncOperations(string.Concat(
FeatureAttribute.SolutionCrawler,
FeatureAttribute.DiagnosticService,
FeatureAttribute.Classification,
FeatureAttribute.ReferenceHighlighting));
Assert.Empty(VisualStudio.Editor.GetTagSpans(ReferenceHighlightTag.TagId));
Assert.Empty(VisualStudio.Editor.GetTagSpans(WrittenReferenceHighlightTag.TagId));
Assert.Empty(VisualStudio.Editor.GetTagSpans(DefinitionHighlightTag.TagId));
}
}
}
\ No newline at end of file
......@@ -21,6 +21,7 @@
<ItemGroup>
<Compile Include="AbstractIntegrationTest.cs" />
<Compile Include="AbstractInteractiveWindowTest.cs" />
<Compile Include="CSharp\CSharpReferenceHighlighting.cs" />
<Compile Include="CSharp\CSharpEncapsulateField.cs" />
<Compile Include="CSharp\CSharpF1Help.cs" />
<Compile Include="CSharp\CSharpInteractiveBoxSelection.cs" />
......@@ -62,6 +63,7 @@
<Compile Include="CSharp\CSharpSquigglesNetCore.cs" />
<Compile Include="CSharp\CSharpWinForms.cs" />
<Compile Include="CSharp\CSharpAddMissingReference.cs" />
<Compile Include="VisualBasic\BasicReferenceHighlighting.cs" />
<Compile Include="VisualBasic\BasicKeywordHighlighting.cs" />
<Compile Include="VisualBasic\BasicEncapsulateField.cs" />
<Compile Include="VisualBasic\BasicNavigationBar.cs" />
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册