File: Workspaces\TestWorkspace.cs
Web Access
Project: src\src\Workspaces\CoreTestUtilities\Microsoft.CodeAnalysis.Workspaces.Test.Utilities.csproj (Microsoft.CodeAnalysis.Workspaces.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;
using System.Collections.Generic;
using System.Collections.Immutable;
using Microsoft.CodeAnalysis.Diagnostics;
using Microsoft.CodeAnalysis.Host;
using Microsoft.CodeAnalysis.Text;
using Microsoft.VisualStudio.Composition;
 
namespace Microsoft.CodeAnalysis.Test.Utilities
{
    public partial class TestWorkspace : TestWorkspace<TestHostDocument, TestHostProject, TestHostSolution>
    {
        internal TestWorkspace(
            TestComposition? composition = null,
            string? workspaceKind = WorkspaceKind.Host,
            Guid solutionTelemetryId = default,
            bool disablePartialSolutions = true,
            bool ignoreUnchangeableDocumentsWhenApplyingChanges = true,
            WorkspaceConfigurationOptions? configurationOptions = null,
            bool supportsLspMutation = false)
            : base(composition,
                   workspaceKind,
                   solutionTelemetryId,
                   disablePartialSolutions,
                   ignoreUnchangeableDocumentsWhenApplyingChanges,
                   configurationOptions,
                   supportsLspMutation)
        {
        }
 
        private protected override TestHostDocument CreateDocument(
            string text = "",
            string displayName = "",
            SourceCodeKind sourceCodeKind = SourceCodeKind.Regular,
            DocumentId? id = null,
            string? filePath = null,
            IReadOnlyList<string>? folders = null,
            ExportProvider? exportProvider = null,
            IDocumentServiceProvider? documentServiceProvider = null)
            => new(text, displayName, sourceCodeKind, id, filePath, folders, exportProvider, documentServiceProvider);
 
        private protected override TestHostDocument CreateDocument(
            ExportProvider exportProvider,
            HostLanguageServices? languageServiceProvider,
            string code,
            string name,
            string filePath,
            int? cursorPosition,
            IDictionary<string, ImmutableArray<TextSpan>> spans,
            SourceCodeKind sourceCodeKind = SourceCodeKind.Regular,
            IReadOnlyList<string>? folders = null,
            bool isLinkFile = false,
            IDocumentServiceProvider? documentServiceProvider = null,
            ISourceGenerator? generator = null)
            => new(exportProvider, languageServiceProvider, code, name, filePath, cursorPosition, spans, sourceCodeKind, folders, isLinkFile, documentServiceProvider, generator);
 
        private protected override TestHostProject CreateProject(
            HostLanguageServices languageServices,
            CompilationOptions? compilationOptions,
            ParseOptions? parseOptions,
            string assemblyName,
            string projectName,
            IList<MetadataReference>? references,
            IList<TestHostDocument> documents,
            IList<TestHostDocument>? additionalDocuments = null,
            IList<TestHostDocument>? analyzerConfigDocuments = null,
            Type? hostObjectType = null,
            bool isSubmission = false,
            string? filePath = null,
            IList<AnalyzerReference>? analyzerReferences = null,
            string? defaultNamespace = null)
            => new(languageServices,
                   compilationOptions,
                   parseOptions,
                   assemblyName,
                   projectName,
                   references,
                   documents,
                   additionalDocuments,
                   analyzerConfigDocuments,
                   hostObjectType,
                   isSubmission,
                   filePath,
                   analyzerReferences,
                   defaultNamespace);
 
        private protected override TestHostSolution CreateSolution(TestHostProject[] projects)
            => new(projects);
    }
}