public async Task InitializeAsync_InvokesHandlerWithParamsAndCapabilities()
        {
            // Arrange
            var originalInitParams = new InitializeParams()
            {
                Capabilities = new ClientCapabilities()
                {
                    Experimental = true
                },
                RootUri = new Uri("C:/path/to/workspace"),
            };
            var initializeResult = new InitializeResult();
            var handler          = new Mock <IRequestHandler <InitializeParams, InitializeResult> >(MockBehavior.Strict);

            handler.Setup(h => h.HandleRequestAsync(It.IsAny <InitializeParams>(), It.IsAny <ClientCapabilities>(), It.IsAny <CancellationToken>()))
            .Callback <InitializeParams, ClientCapabilities, CancellationToken>((initParams, clientCapabilities, token) =>
            {
                Assert.True((bool)initParams.Capabilities.Experimental);
                Assert.Equal(originalInitParams.RootUri.AbsoluteUri, initParams.RootUri.AbsoluteUri);
            })
            .Returns(Task.FromResult(initializeResult))
            .Verifiable();
            var metadata = Mock.Of <IRequestHandlerMetadata>(rhm => rhm.MethodName == Methods.InitializeName, MockBehavior.Strict);

            using var languageServer = new RazorHtmlCSharpLanguageServer(new[] { new Lazy <IRequestHandler, IRequestHandlerMetadata>(() => handler.Object, metadata) });
            var serializedInitParams = JToken.FromObject(originalInitParams);

            // Act
            var result = await languageServer.InitializeAsync(serializedInitParams, CancellationToken.None).ConfigureAwait(false);

            // Assert
            Assert.Same(initializeResult, result);
            handler.VerifyAll();
        }
        public async Task ExecuteRequestAsync_InvokesCustomHandler()
        {
            // Arrange
            var handler = new Mock <IRequestHandler <string, int> >();

            handler.Setup(h => h.HandleRequestAsync("hello world", It.IsAny <ClientCapabilities>(), It.IsAny <CancellationToken>()))
            .Returns(Task.FromResult(123))
            .Verifiable();
            var metadata       = Mock.Of <IRequestHandlerMetadata>(rhm => rhm.MethodName == "test");
            var languageServer = new RazorHtmlCSharpLanguageServer(new[] { new Lazy <IRequestHandler, IRequestHandlerMetadata>(() => handler.Object, metadata) });

            // Act
            var result = await languageServer.ExecuteRequestAsync <string, int>("test", "hello world", clientCapabilities : null, CancellationToken.None).ConfigureAwait(false);

            // Assert
            Assert.Equal(123, result);
            handler.VerifyAll();
        }