File: EditorTestCompositions.cs
Web Access
Project: src\src\EditorFeatures\TestUtilities\Microsoft.CodeAnalysis.EditorFeatures.Test.Utilities.csproj (Microsoft.CodeAnalysis.EditorFeatures.Test.Utilities)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
 
using System.Reflection;
using Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.Interactive;
using Microsoft.CodeAnalysis.Editor.Implementation.Notification;
using Microsoft.CodeAnalysis.LanguageServer;
using Microsoft.CodeAnalysis.Test.Utilities;
using Microsoft.CodeAnalysis.Test.Utilities.Notification;
using Microsoft.CodeAnalysis.Text;
using Microsoft.CodeAnalysis.UnitTests.Fakes;
using Microsoft.CodeAnalysis.UnitTests.Remote;
using Microsoft.VisualStudio.InteractiveWindow;
using Roslyn.Test.Utilities;
 
namespace Microsoft.CodeAnalysis.Editor.UnitTests;
 
public static class EditorTestCompositions
{
    public static readonly TestComposition Editor = TestComposition.Empty
        .AddAssemblies(
            // Microsoft.VisualStudio.Platform.VSEditor.dll:
            Assembly.LoadFrom("Microsoft.VisualStudio.Platform.VSEditor.dll"),
 
            // Microsoft.VisualStudio.Text.Logic.dll:
            //   Must include this because several editor options are actually stored as exported information 
            //   on this DLL.  Including most importantly, the tab size information.
            typeof(VisualStudio.Text.Editor.DefaultOptions).Assembly,
 
            // Microsoft.VisualStudio.Text.UI.dll:
            //   Include this DLL to get several more EditorOptions including WordWrapStyle.
            typeof(VisualStudio.Text.Editor.WordWrapStyle).Assembly,
 
            // Microsoft.VisualStudio.Text.UI.Wpf.dll:
            //   Include this DLL to get more EditorOptions values.
            typeof(VisualStudio.Text.Editor.HighlightCurrentLineOption).Assembly,
 
            // BasicUndo.dll:
            //   Include this DLL to satisfy ITextUndoHistoryRegistry
            typeof(BasicUndo.IBasicUndoHistory).Assembly,
 
            // Microsoft.VisualStudio.Language.StandardClassification.dll:
            typeof(VisualStudio.Language.StandardClassification.PredefinedClassificationTypeNames).Assembly,
 
            // Microsoft.VisualStudio.Language
            typeof(VisualStudio.Language.Intellisense.AsyncCompletion.IAsyncCompletionBroker).Assembly,
 
            // Microsoft.VisualStudio.CoreUtility
            typeof(VisualStudio.Utilities.IFeatureServiceFactory).Assembly)
        .AddParts(
            typeof(TestSerializerService.Factory),
            typeof(TestExportJoinableTaskContext),
            typeof(WpfDispatcherTaskJoiner),
            typeof(StubStreamingFindUsagesPresenter), // actual implementation is in VS layer
            typeof(EditorNotificationServiceFactory), // TODO: use mock INotificationService instead (https://github.com/dotnet/roslyn/issues/46045)
            typeof(TestObscuringTipManager));         // TODO: https://devdiv.visualstudio.com/DevDiv/_workitems?id=544569
 
    public static readonly TestComposition EditorFeatures = FeaturesTestCompositions.Features
        .AddParts(typeof(TestGlobalOperationNotificationService))
        .Add(Editor)
        .AddAssemblies(
            typeof(TextEditorResources).Assembly,
            typeof(EditorFeaturesResources).Assembly,
            typeof(CSharp.CSharpEditorResources).Assembly,
            typeof(VisualBasic.VBEditorResources).Assembly,
            typeof(LanguageServerProtocolResources).Assembly);
 
    public static readonly TestComposition EditorFeaturesWpf = EditorFeatures
        .AddAssemblies(
            typeof(EditorFeaturesWpfResources).Assembly);
 
    public static readonly TestComposition InteractiveWindow = EditorFeaturesWpf
        .AddAssemblies(
            typeof(IInteractiveWindow).Assembly)
        .AddParts(
            typeof(TestInteractiveWindowEditorFactoryService));
 
    public static readonly TestComposition LanguageServerProtocolEditorFeatures = EditorFeatures
        .AddAssemblies(typeof(LanguageServerProtocolResources).Assembly);
}