private static Mock <ILanguageServerFacade> CreateMockLanguageServer(Action <ShowDocumentParams, CancellationToken> callback, ShowDocumentResult result, Container <WorkspaceFolder>?workspaceFolders = null) { var window = StrictMock.Of <IWindowLanguageServer>(); window .Setup(m => m.SendNotification(It.IsAny <LogMessageParams>())); window .Setup(m => m.SendRequest <ShowDocumentResult>(It.IsAny <ShowDocumentParams>(), It.IsAny <CancellationToken>())) .Callback((IRequest <ShowDocumentResult> request, CancellationToken token) => { var @params = (ShowDocumentParams)request; callback(@params, token); }) .ReturnsAsync(() => result); var workspace = StrictMock.Of <IWorkspaceLanguageServer>(); workspace .Setup(m => m.SendRequest <Container <WorkspaceFolder>?>(It.IsAny <WorkspaceFolderParams>(), It.IsAny <CancellationToken>())) .ReturnsAsync(() => workspaceFolders); var server = StrictMock.Of <ILanguageServerFacade>(); server .Setup(m => m.Window) .Returns(window.Object); server .Setup(m => m.Workspace) .Returns(workspace.Object); return(server); }
private static Mock <ILanguageServerFacade> CreateMockLanguageServer(Action <ShowDocumentParams, CancellationToken> callback, ShowDocumentResult result, Action <string>?messageCallback = null, Container <WorkspaceFolder>?workspaceFolders = null) { var window = StrictMock.Of <IWindowLanguageServer>(); window .Setup(m => m.SendNotification(It.IsAny <LogMessageParams>())); window .Setup(m => m.SendRequest <ShowDocumentResult>(It.IsAny <ShowDocumentParams>(), It.IsAny <CancellationToken>())) .Callback((IRequest <ShowDocumentResult> request, CancellationToken token) => { var @params = (ShowDocumentParams)request; callback(@params, token); }) .ReturnsAsync(() => result); window .Setup(m => m.SendNotification(It.IsAny <ShowMessageParams>())) .Callback((IRequest request) => { var @params = (ShowMessageParams)request; if (messageCallback != null) { messageCallback(@params.Message); } else { Assert.Fail($"Message was displayed when no message expected: {@params.Message}"); } }); var workspace = StrictMock.Of <IWorkspaceLanguageServer>(); workspace .Setup(m => m.SendRequest <Container <WorkspaceFolder>?>(It.IsAny <WorkspaceFolderParams>(), It.IsAny <CancellationToken>())) .ReturnsAsync(() => workspaceFolders); var server = StrictMock.Of <ILanguageServerFacade>(); server .Setup(m => m.Window) .Returns(window.Object); server .Setup(m => m.Workspace) .Returns(workspace.Object); return(server); }