diff --git a/src/VisualStudio/Core/Def/Implementation/Progression/GraphProvider.cs b/src/VisualStudio/Core/Def/Implementation/Progression/GraphProvider.cs index 124e805570959..906e76faaf512 100644 --- a/src/VisualStudio/Core/Def/Implementation/Progression/GraphProvider.cs +++ b/src/VisualStudio/Core/Def/Implementation/Progression/GraphProvider.cs @@ -47,10 +47,8 @@ private void EnsureInitialized() _initialized = true; } - public void BeginGetGraphData(IGraphContext context) + internal static List GetGraphQueries(IGraphContext context) { - EnsureInitialized(); - var graphQueries = new List(); if (context.Direction == GraphContextDirection.Self && context.RequestedProperties.Contains(DgmlNodeProperties.ContainsChildren)) @@ -58,7 +56,8 @@ public void BeginGetGraphData(IGraphContext context) graphQueries.Add(new ContainsChildrenGraphQuery()); } - if (context.Direction == GraphContextDirection.Contains) + if (context.Direction == GraphContextDirection.Contains || + (context.Direction == GraphContextDirection.Target && context.LinkCategories.Contains(CodeLinkCategories.Contains))) { graphQueries.Add(new ContainsGraphQuery()); } @@ -129,6 +128,15 @@ public void BeginGetGraphData(IGraphContext context) } } + return graphQueries; + } + + public void BeginGetGraphData(IGraphContext context) + { + EnsureInitialized(); + + var graphQueries = GetGraphQueries(context); + if (graphQueries.Count > 0) { _graphQueryManager.AddQueries(context, graphQueries); diff --git a/src/VisualStudio/Core/Test/Progression/GraphProviderTests.vb b/src/VisualStudio/Core/Test/Progression/GraphProviderTests.vb new file mode 100644 index 0000000000000..7fb18f22c1d43 --- /dev/null +++ b/src/VisualStudio/Core/Test/Progression/GraphProviderTests.vb @@ -0,0 +1,36 @@ +' Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +Imports Microsoft.VisualStudio.GraphModel +Imports Microsoft.VisualStudio.GraphModel.Schemas +Imports Microsoft.VisualStudio.LanguageServices.Implementation.Progression +Imports Moq +Imports Roslyn.Test.Utilities + +Namespace Microsoft.VisualStudio.LanguageServices.UnitTests.Progression + + Public Class GraphProviderTests + + + Public Sub GetContainsGraphQueries() + Dim context = CreateGraphContext(GraphContextDirection.Contains, {}) + Dim queries = AbstractGraphProvider.GetGraphQueries(context) + Assert.Equal(queries.Single().GetType(), GetType(ContainsGraphQuery)) + End Sub + + + + Public Sub GetContainsGraphQueriesWithTarget() + Dim context = CreateGraphContext(GraphContextDirection.Target, {CodeLinkCategories.Contains}) + Dim queries = AbstractGraphProvider.GetGraphQueries(context) + Assert.Equal(queries.Single().GetType(), GetType(ContainsGraphQuery)) + End Sub + + Private Shared Function CreateGraphContext(direction As GraphContextDirection, linkCategories As IEnumerable(Of GraphCategory)) As IGraphContext + Dim context = New Mock(Of IGraphContext)() + context.Setup(Function(x) x.Direction).Returns(direction) + context.Setup(Function(x) x.LinkCategories).Returns(linkCategories) + Return context.Object + End Function + End Class + +End Namespace diff --git a/src/VisualStudio/Core/Test/ServicesVisualStudioTest.vbproj b/src/VisualStudio/Core/Test/ServicesVisualStudioTest.vbproj index a0e7c801e090f..be0e37296f918 100644 --- a/src/VisualStudio/Core/Test/ServicesVisualStudioTest.vbproj +++ b/src/VisualStudio/Core/Test/ServicesVisualStudioTest.vbproj @@ -331,6 +331,7 @@ +