public override async Task UpdateHtmlBufferAsync(UpdateBufferRequest request, CancellationToken cancellationToken) { if (request is null) { throw new ArgumentNullException(nameof(request)); } await _joinableTaskFactory.SwitchToMainThreadAsync(cancellationToken); UpdateHtmlBuffer(request); }
// Internal for testing internal void UpdateCSharpBuffer(UpdateBufferRequest request) { if (request == null || request.HostDocumentFilePath == null || request.HostDocumentVersion == null) { return; } var hostDocumentUri = new Uri(request.HostDocumentFilePath); _documentManager.UpdateVirtualDocument <CSharpVirtualDocument>( hostDocumentUri, request.Changes?.Select(change => change.ToVisualStudioTextChange()).ToArray(), request.HostDocumentVersion.Value); }
public void UpdateCSharpBuffer_CannotLookupDocument_NoopsGracefully() { // 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 UpdateBufferRequest() { HostDocumentFilePath = "C:/path/to/file.razor", }; // Act & Assert target.UpdateCSharpBuffer(request); }
public void UpdateCSharpBuffer_UpdatesDocument() { // Arrange var documentManager = new Mock <TrackingLSPDocumentManager>(MockBehavior.Strict); documentManager.Setup(manager => manager.UpdateVirtualDocument <CSharpVirtualDocument>(It.IsAny <Uri>(), It.IsAny <IReadOnlyList <ITextChange> >(), 1337, It.IsAny <object>())) .Verifiable(); var target = new DefaultRazorLanguageServerCustomMessageTarget(documentManager.Object); var request = new UpdateBufferRequest() { HostDocumentFilePath = "C:/path/to/file.razor", HostDocumentVersion = 1337, Changes = Array.Empty <TextChange>(), }; // Act target.UpdateCSharpBuffer(request); // Assert documentManager.VerifyAll(); }
public abstract Task UpdateHtmlBufferAsync(UpdateBufferRequest token, CancellationToken cancellationToken);