public async Task ProvideSemanticTokensAsync_CannotLookupVirtualDocument_ReturnsNullAsync() { // Arrange var testDocUri = new Uri("C:/path/to/file.razor"); LSPDocumentSnapshot testDocument = new TestLSPDocumentSnapshot(testDocUri, 0); var documentManager = new Mock <TrackingLSPDocumentManager>(MockBehavior.Strict); documentManager.Setup(manager => manager.TryGetDocument(It.IsAny <Uri>(), out testDocument)) .Returns(true); var target = new DefaultRazorLanguageServerCustomMessageTarget(documentManager.Object); var request = new ProvideSemanticTokensParams() { TextDocument = new OmniSharpTextDocumentIdentifier() { Uri = new Uri("C:/path/to/file.razor") }, }; // Act var result = await target.ProvideSemanticTokensAsync(request, CancellationToken.None); // Assert Assert.Null(result); }
public async Task ProvideSemanticTokensAsync_ReturnsSemanticTokensAsync() { // Arrange var testDocUri = new Uri("C:/path/to - project/file.razor"); var testVirtualDocUri = new Uri("C:/path/to - project/file2.razor.g"); var testCSharpDocUri = new Uri("C:/path/to - project/file.razor.g.cs"); var documentVersion = 0; var testVirtualDocument = new TestVirtualDocumentSnapshot(testVirtualDocUri, 0); var csharpVirtualDocument = new CSharpVirtualDocumentSnapshot(testCSharpDocUri, TextBuffer.CurrentSnapshot, 0); LSPDocumentSnapshot testDocument = new TestLSPDocumentSnapshot(testDocUri, documentVersion, testVirtualDocument, csharpVirtualDocument); var documentManager = new Mock <TrackingLSPDocumentManager>(MockBehavior.Strict); documentManager.Setup(manager => manager.TryGetDocument(testDocUri, out testDocument)) .Returns(true); var expectedcSharpResults = new VSSemanticTokensResponse(); var requestInvoker = new Mock <LSPRequestInvoker>(MockBehavior.Strict); requestInvoker.Setup(invoker => invoker.ReinvokeRequestOnServerAsync <OmniSharp.Extensions.LanguageServer.Protocol.Models.SemanticTokensParams, VSSemanticTokensResponse>( TextBuffer, Methods.TextDocumentSemanticTokensFullName, LanguageServerKind.CSharp.ToLanguageServerName(), It.IsAny <OmniSharp.Extensions.LanguageServer.Protocol.Models.SemanticTokensParams>(), It.IsAny <CancellationToken>() )).Returns(Task.FromResult(new ReinvocationResponse <VSSemanticTokensResponse>("languageClient", expectedcSharpResults))); var uIContextManager = new Mock <RazorUIContextManager>(MockBehavior.Strict); var disposable = new Mock <IDisposable>(MockBehavior.Strict); var clientOptionsMonitor = new Mock <RazorLSPClientOptionsMonitor>(MockBehavior.Strict); var documentSynchronizer = new Mock <LSPDocumentSynchronizer>(MockBehavior.Strict); documentSynchronizer.Setup(r => r.TrySynchronizeVirtualDocumentAsync(0, It.IsAny <CSharpVirtualDocumentSnapshot>(), It.IsAny <CancellationToken>())) .Returns(Task.FromResult(true)); var target = new DefaultRazorLanguageServerCustomMessageTarget( documentManager.Object, JoinableTaskContext, requestInvoker.Object, uIContextManager.Object, disposable.Object, clientOptionsMonitor.Object, documentSynchronizer.Object); var request = new ProvideSemanticTokensParams() { TextDocument = new OmniSharpTextDocumentIdentifier() { Uri = new Uri("C:/path/to%20-%20project/file.razor") }, RequiredHostDocumentVersion = 0, }; var expectedResults = new ProvideSemanticTokensResponse( expectedcSharpResults.ResultId, expectedcSharpResults.Data, expectedcSharpResults.IsFinalized, documentVersion); // Act var result = await target.ProvideSemanticTokensAsync(request, CancellationToken.None); // Assert Assert.Equal(expectedResults, result); }
public async Task ProvideSemanticTokensAsync_CannotLookupDocument_ReturnsNullAsync() { // Arrange LSPDocumentSnapshot document; var documentManager = new Mock <TrackingLSPDocumentManager>(MockBehavior.Strict); documentManager.Setup(manager => manager.TryGetDocument(It.IsAny <Uri>(), out document)) .Returns(false); var target = new DefaultRazorLanguageServerCustomMessageTarget(documentManager.Object); var request = new ProvideSemanticTokensParams() { TextDocument = new OmniSharp.Extensions.LanguageServer.Protocol.Models.TextDocumentIdentifier() { Uri = new Uri("C:/path/to/file.razor") }, RequiredHostDocumentVersion = 1, }; // Act var result = await target.ProvideSemanticTokensAsync(request, CancellationToken.None); // Assert Assert.Null(result); }
public abstract Task <ProvideSemanticTokensResponse> ProvideSemanticTokensAsync(ProvideSemanticTokensParams semanticTokensParams, CancellationToken cancellationToken);