Example #1
0
        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"));
        }
Example #2
0
        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"));
        }
Example #4
0
        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);
            }
        }
Example #5
0
        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"));
        }