public async Task GetCSharpSyntaxTreeAsync_InWorkspace_ReusesSyntaxTree() { // Arrange var filePath = "C:\\path\\to\\file.razor.cs"; var uri = new Uri(filePath); using var workspace = TestWorkspace.Create(adhocWorkspace => { var project = adhocWorkspace.AddProject("TestProject", LanguageNames.CSharp); var csharpSourceText = SourceText.From("class Foo{}"); var documentId = DocumentId.CreateNewId(project.Id); var textAndVersion = TextAndVersion.Create(csharpSourceText, VersionStamp.Default); var textLoader = TextLoader.From(textAndVersion); var documentInfo = DocumentInfo.Create(documentId, "TestDocument", loader: textLoader, filePath: filePath); adhocWorkspace.AddDocument(documentInfo); }); var textBuffer = new TestTextBuffer(new StringTextSnapshot("INVALID")); var virtualDocument = new CSharpVirtualDocument(uri, textBuffer); var virtualDocumentSnapshot = (CSharpVirtualDocumentSnapshot)virtualDocument.CurrentSnapshot; // Act var syntaxTree = await virtualDocumentSnapshot.GetCSharpSyntaxTreeAsync(workspace, CancellationToken.None); // Assert var diagnostics = syntaxTree.GetDiagnostics(); Assert.Empty(diagnostics); Assert.True(syntaxTree.Length > 0); }
public async Task GetCSharpSyntaxTreeAsync_NoWorkspace_CreatesSyntaxTree() { // Arrange var filePath = "C:\\path\\to\\file.razor.cs"; var uri = new Uri(filePath); var textBuffer = new TestTextBuffer(new StringTextSnapshot("class Foo{}")); var virtualDocument = new CSharpVirtualDocument(uri, textBuffer); var virtualDocumentSnapshot = (CSharpVirtualDocumentSnapshot)virtualDocument.CurrentSnapshot; // Act var syntaxTree = await virtualDocumentSnapshot.GetCSharpSyntaxTreeAsync(workspace : null, CancellationToken.None); // Assert var diagnostics = syntaxTree.GetDiagnostics(); Assert.Empty(diagnostics); Assert.True(syntaxTree.Length > 0); }