public async Task HighlightEntireFile() { var code = @" namespace N1 { class C1 { int n = true; } } "; var workspace = await TestHelpers.CreateSimpleWorkspace(new Dictionary <string, string> { { "a.cs", code } }); var controller = new HighlightingService(workspace); var regions = await controller.Handle(new HighlightRequest() { FileName = "a.cs" }); AssertSyntax(regions.Highlights, code, 0, Token("namespace", "keyword"), Token("N1", "identifier"), Token("{", "punctuation"), Token("class", "keyword"), Token("C1", "class name"), Token("{", "punctuation"), Token("int", "keyword"), Token("n", "identifier"), Token("=", "operator"), Token("true", "keyword"), Token(";", "punctuation"), Token("}", "punctuation"), Token("}", "punctuation")); }
public async Task HighlightStringInterpolation() { var code = @" class C1 { string s = $""{5}""; } "; var workspace = await TestHelpers.CreateSimpleWorkspace(new Dictionary <string, string> { { "a.cs", code } }); var controller = new HighlightingService(workspace); var regions = await controller.Handle(new HighlightRequest() { FileName = "a.cs" }); AssertSyntax(regions.Highlights, code, 0, Token("class", "keyword"), Token("C1", "class name"), Token("{", "punctuation"), Token("string", "keyword"), Token("s", "identifier"), Token("=", "operator"), Token("$\"", "string"), Token("{", "punctuation"), Token("5", "number"), Token("}", "punctuation"), Token("\"", "string"), Token(";", "punctuation"), Token("}", "punctuation")); }
public async Task HighlightEntireFile() { var code = @" namespace N1 { class C1 { int n = true; } } "; var workspace = await TestHelpers.CreateSimpleWorkspace(new Dictionary<string, string> { { "a.cs", code } }); var controller = new HighlightingService(workspace); var regions = await controller.Handle(new HighlightRequest() { FileName = "a.cs" }); AssertSyntax(regions.Highlights, code, 0, Token("namespace", "keyword"), Token("N1", "identifier"), Token("{", "punctuation"), Token("class", "keyword"), Token("C1", "class name"), Token("{", "punctuation"), Token("int", "keyword"), Token("n", "identifier"), Token("=", "operator"), Token("true", "keyword"), Token(";", "punctuation"), Token("}", "punctuation"), Token("}", "punctuation")); }
private async Task TestAsync(string markup, ParseOptions options) { using var workspace = CreateWorkspaceFromFile(markup, options); var testDocument = workspace.Documents.Single(); var expectedHighlightSpans = testDocument.SelectedSpans.ToList(); expectedHighlightSpans.Sort(); var cursorSpan = testDocument.AnnotatedSpans["Cursor"].Single(); var textSnapshot = testDocument.GetTextBuffer().CurrentSnapshot; var document = workspace.CurrentSolution.GetDocument(testDocument.Id); var highlighter = CreateHighlighter(); var service = new HighlightingService(new List <Lazy <IHighlighter, LanguageMetadata> > { new Lazy <IHighlighter, LanguageMetadata>(() => highlighter, new LanguageMetadata(document.Project.Language)), }); var root = await document.GetSyntaxRootAsync(); // Check that every point within the span (inclusive) produces the expected set of // results. for (var i = 0; i <= cursorSpan.Length; i++) { var position = cursorSpan.Start + i; var highlightSpans = new List <TextSpan>(); service.AddHighlights(root, position, highlightSpans, CancellationToken.None); CheckSpans(root.SyntaxTree, expectedHighlightSpans, highlightSpans); } }
public async Task HighlightExcludesUnwantedNames() { var code = @" namespace N1 { class C1 { int n = true; } } "; var workspace = await TestHelpers.CreateSimpleWorkspace(new Dictionary <string, string> { { "a.cs", code } }); var controller = new HighlightingService(workspace); var regions = await controller.Handle(new HighlightRequest() { FileName = "a.cs", ExcludeClassifications = new [] { HighlightClassification.Name } }); Assert.DoesNotContain(regions.Highlights, x => x.Kind.EndsWith(" name")); }
public async Task HighlightStringInterpolation() { var code = @" class C1 { string s = $""{5}""; } "; var workspace = await TestHelpers.CreateSimpleWorkspace(new Dictionary<string, string> { { "a.cs", code } }); var controller = new HighlightingService(workspace); var regions = await controller.Handle(new HighlightRequest() { FileName = "a.cs" }); AssertSyntax(regions.Highlights, code, 0, Token("class", "keyword"), Token("C1", "class name"), Token("{", "punctuation"), Token("string", "keyword"), Token("s", "identifier"), Token("=", "operator"), Token("$\"", "string"), Token("{", "punctuation"), Token("5", "number"), Token("}", "punctuation"), Token("\"", "string"), Token(";", "punctuation"), Token("}", "punctuation")); }
public async Task HighlightExcludesUnwantedNames() { var code = @" namespace N1 { class C1 { int n = true; } } "; var workspace = await TestHelpers.CreateSimpleWorkspace(new Dictionary<string, string> { { "a.cs", code } }); var controller = new HighlightingService(workspace); var regions = await controller.Handle(new HighlightRequest() { FileName = "a.cs", ExcludeClassifications = new [] { HighlightClassification.Name } }); Assert.DoesNotContain(regions.Highlights, x => x.Kind.EndsWith(" name")); }