提交 2ac6ac0c 编写于 作者: J Jason Malinowski

Switch EditorFactory methods over to taking a IContentType

The overloads sometimes had exportProvider first and sometimes second.
This was because if you always had it first and content type is passed
as a string, you have ambiguity of how to handle the params array.
Just passing in stuff explicitly makes this easier.

Also replace a hand-written implementation of string.Join with
string.Join.
上级 fca389f5
......@@ -74,8 +74,8 @@ protected async Task AssertFormatAsync(string expected, string code, IEnumerable
// create new buffer with cloned content
var clonedBuffer = EditorFactory.CreateBuffer(
buffer.ContentType.TypeName,
workspace.ExportProvider,
buffer.ContentType,
buffer.CurrentSnapshot.GetText());
var formattingRuleProvider = workspace.Services.GetService<IHostDependentFormattingRuleFactoryService>();
......
// 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.Text;
#nullable enable
using Microsoft.CodeAnalysis.Editor.UnitTests;
using Microsoft.VisualStudio.Composition;
using Microsoft.VisualStudio.Text;
......@@ -16,55 +17,42 @@ public static class EditorFactory
ExportProvider exportProvider,
params string[] lines)
{
return CreateBuffer("text", exportProvider, lines);
var contentType = exportProvider.GetExportedValue<ITextBufferFactoryService>().TextContentType;
return CreateBuffer(exportProvider, contentType, lines);
}
public static ITextBuffer CreateBuffer(
string contentType,
ExportProvider exportProvider,
IContentType contentType,
params string[] lines)
{
var text = LinesToFullText(lines);
var intContentType = exportProvider.GetExportedValue<IContentTypeRegistryService>().GetContentType(contentType);
var buffer = exportProvider.GetExportedValue<ITextBufferFactoryService>().CreateTextBuffer(intContentType);
buffer.Replace(new Span(0, 0), text);
return buffer;
return exportProvider.GetExportedValue<ITextBufferFactoryService>().CreateTextBuffer(text, contentType);
}
public static DisposableTextView CreateView(
ExportProvider exportProvider,
params string[] lines)
{
return CreateView("text", exportProvider, lines);
var contentType = exportProvider.GetExportedValue<ITextBufferFactoryService>().TextContentType;
return CreateView(exportProvider, contentType, lines);
}
public static DisposableTextView CreateView(
string contentType,
ExportProvider exportProvider,
IContentType contentType,
params string[] lines)
{
WpfTestRunner.RequireWpfFact($"Creates an {nameof(IWpfTextView)} through {nameof(EditorFactory)}.{nameof(CreateView)}");
var buffer = CreateBuffer(contentType, exportProvider, lines);
var buffer = CreateBuffer(exportProvider, contentType, lines);
return exportProvider.GetExportedValue<ITextEditorFactoryService>().CreateDisposableTextView(buffer);
}
public static string LinesToFullText(params string[] lines)
{
var builder = new StringBuilder();
var isFirst = true;
foreach (var line in lines)
{
if (!isFirst)
{
builder.AppendLine();
}
isFirst = false;
builder.Append(line);
}
return builder.ToString();
return string.Join("\r\n", lines);
}
}
}
......@@ -203,7 +203,7 @@ public static TestWorkspace Create(string xmlDefinition, bool completed = true,
var contentTypeLanguageService = languageServices.GetService<IContentTypeLanguageService>();
var contentType = contentTypeLanguageService.GetDefaultContentType();
var textBuffer = EditorFactory.CreateBuffer(contentType.TypeName, exportProvider, code);
var textBuffer = EditorFactory.CreateBuffer(exportProvider, contentType, code);
// The project
......@@ -748,7 +748,7 @@ private static CompilationOptions CreateCompilationOptions(TestWorkspace workspa
// For linked files, use the same ITextBuffer for all linked documents
if (!filePathToTextBufferMap.TryGetValue(filePath, out var textBuffer))
{
textBuffer = EditorFactory.CreateBuffer(contentType.TypeName, exportProvider, code);
textBuffer = EditorFactory.CreateBuffer(exportProvider, contentType, code);
filePathToTextBufferMap.Add(filePath, textBuffer);
}
......@@ -793,7 +793,7 @@ private static CompilationOptions CreateCompilationOptions(TestWorkspace workspa
var documentServiceProvider = GetDocumentServiceProvider(documentElement);
var contentTypeLanguageService = languageServiceProvider.GetService<IContentTypeLanguageService>();
var contentType = contentTypeLanguageService.GetDefaultContentType();
var textBuffer = EditorFactory.CreateBuffer(contentType.TypeName, exportProvider, code);
var textBuffer = EditorFactory.CreateBuffer(exportProvider, contentType, code);
return new TestHostDocument(
exportProvider, languageServiceProvider, textBuffer, filePath: string.Empty, cursorPosition, spans, codeKind, folders, isLinkFile: false, documentServiceProvider, roles: roles);
......
......@@ -28,7 +28,7 @@ Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.Formatting
Dim buffer = workspace.Documents.First().GetTextBuffer()
' create new buffer with cloned content
Dim clonedBuffer = EditorFactory.CreateBuffer(buffer.ContentType.TypeName, workspace.ExportProvider, buffer.CurrentSnapshot.GetText())
Dim clonedBuffer = EditorFactory.CreateBuffer(workspace.ExportProvider, buffer.ContentType, buffer.CurrentSnapshot.GetText())
Dim document = workspace.CurrentSolution.GetDocument(hostdoc.Id)
Dim syntaxTree = Await document.GetSyntaxTreeAsync()
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册