コード例 #1
0
        public void Should_Update_CodeLens_Removing_HandlerType()
        {
            // Given
            var handlerMatcher = new ResolveCommandMatcher(_logger);
            var resolveHandler = Substitute.For(new Type[] {
                typeof(ICodeLensHandler),
                typeof(ICodeLensResolveHandler)
            }, new object[0]);

            (resolveHandler as ICodeLensResolveHandler).CanResolve(Arg.Any <CodeLens>()).Returns(true);
            var descriptor = new HandlerDescriptor(
                DocumentNames.CodeLensResolve,
                "Key",
                resolveHandler as IJsonRpcHandler,
                resolveHandler.GetType(),
                typeof(CodeLens),
                null,
                null,
                () => { });

            var item = new CodeLens()
            {
                Data = JObject.FromObject(new { data = new { hello = "world" } })
            };

            item.Data[ResolveCommandMatcher.PrivateHandlerTypeName] = resolveHandler.GetType().FullName;

            // When
            var response = handlerMatcher.Process(descriptor, item);

            // Then
            response.Should().Be(item);
            item.Data?[ResolveCommandMatcher.PrivateHandlerTypeName].Should().BeNull();
            item.Data["hello"].Value <string>().Should().Be("world");
        }
コード例 #2
0
        public void Should_Handle_Simple_Json_Data()
        {
            // Given
            var handlerMatcher = new ResolveCommandMatcher(_logger);
            var resolveHandler = Substitute.For <ICompletionResolveHandler>();

            resolveHandler.CanResolve(Arg.Any <CompletionItem>()).Returns(true);

            // When
            var result = handlerMatcher.FindHandler(new CompletionItem()
            {
                Data = new Uri("file:///c%3A/Users/mb/src/gh/Cake.Json/src/Cake.Json/Namespaces.cs")
            },
                                                    new List <HandlerDescriptor> {
                new HandlerDescriptor(DocumentNames.CompletionResolve,
                                      "Key",
                                      resolveHandler,
                                      resolveHandler.GetType(),
                                      typeof(CompletionItem),
                                      null,
                                      null,
                                      () => { }),
            })
                         .ToArray();

            // Then
            result.Should().NotBeNullOrEmpty();
            result.Should().Contain(x => x.Handler == resolveHandler);
        }
コード例 #3
0
        public void Should_Return_Empty_Descriptor()
        {
            // Given
            var handlerDescriptors = Enumerable.Empty <ILspHandlerDescriptor>();
            var handlerMatcher     = new ResolveCommandMatcher(_logger);

            // When
            var result = handlerMatcher.FindHandler(1, handlerDescriptors);

            // Then
            result.Should().BeEmpty();
        }
コード例 #4
0
        public void Should_Deal_WithHandlers_That_Not_Also_Resolvers2()
        {
            // Given
            var handlerMatcher = new ResolveCommandMatcher(_logger);
            var resolveHandler = Substitute.For <ICompletionResolveHandler>();

            resolveHandler.CanResolve(Arg.Any <CompletionItem>()).Returns(true);
            var resolveHandler2 = Substitute.For(new Type[] {
                typeof(ICompletionHandler),
                typeof(ICompletionResolveHandler)
            }, new object[0]);

            (resolveHandler2 as ICompletionResolveHandler).CanResolve(Arg.Any <CompletionItem>()).Returns(false);

            // When
            var result = handlerMatcher.FindHandler(new CompletionItem()
            {
                Data = new JObject()
            },
                                                    new List <HandlerDescriptor> {
                new HandlerDescriptor(DocumentNames.CompletionResolve,
                                      "Key",
                                      resolveHandler,
                                      resolveHandler.GetType(),
                                      typeof(CompletionItem),
                                      null,
                                      null,
                                      () => { }),
                new HandlerDescriptor(DocumentNames.CompletionResolve,
                                      "Key2",
                                      resolveHandler2 as IJsonRpcHandler,
                                      typeof(ICompletionResolveHandler),
                                      typeof(CompletionItem),
                                      null,
                                      null,
                                      () => { }),
            })
                         .ToArray();

            // Then
            result.Should().NotBeNullOrEmpty();
            result.Should().Contain(x => x.Handler == resolveHandler);
        }
コード例 #5
0
        public void Should_Not_Throw_Given_Another_Descriptor()
        {
            // Given
            var resolveHandler    = Substitute.For <ICodeLensHandler>();
            var handlerDescriptor = new HandlerDescriptor(
                DocumentNames.CodeLens,
                "Key",
                resolveHandler,
                resolveHandler.GetType(),
                typeof(CodeLensParams),
                null,
                null,
                () => { });
            var handlerMatcher = new ResolveCommandMatcher(_logger);

            // When
            Action a = () => handlerMatcher.Process(handlerDescriptor, new CodeLensParams(), new CodeLensContainer());

            a.ShouldNotThrow();
        }
コード例 #6
0
        public void Should_Update_CodeLensContainer_With_HandlerType()
        {
            // Given
            var handlerMatcher = new ResolveCommandMatcher(_logger);
            var resolveHandler = Substitute.For(new Type[] {
                typeof(ICodeLensHandler),
                typeof(ICodeLensResolveHandler)
            }, new object[0]);

            (resolveHandler as ICodeLensResolveHandler).CanResolve(Arg.Any <CodeLens>()).Returns(true);
            var descriptor = new HandlerDescriptor(
                DocumentNames.CodeLens,
                "Key",
                resolveHandler as IJsonRpcHandler,
                resolveHandler.GetType(),
                typeof(CodeLensParams),
                null,
                null,
                () => { });

            var item = new CodeLens()
            {
                Data = JObject.FromObject(new { hello = "world" })
            };
            var list = new CodeLensContainer(new[] { item });

            (list is IEnumerable <ICanBeResolved>).Should().BeTrue();

            // When
            var response = handlerMatcher.Process(descriptor, new CodeLensParams(), list);

            // Then
            response.Should().Be(list);
            (response as CodeLensContainer).Should().Contain(item);
            var responseItem = (response as CodeLensContainer).First();

            responseItem.Data[ResolveCommandMatcher.PrivateHandlerTypeName].Value <string>().Should().NotBeNullOrEmpty();
            responseItem.Data[ResolveCommandMatcher.PrivateHandlerKey].Value <string>().Should().NotBeNullOrEmpty();
            responseItem.Data["data"]["hello"].Value <string>().Should().Be("world");
        }
コード例 #7
0
        public void Should_Return_CodeLensResolve_Descriptor()
        {
            // Given
            var handlerMatcher  = new ResolveCommandMatcher(_logger);
            var resolveHandler  = Substitute.For <ICodeLensResolveHandler>();
            var resolveHandler2 = Substitute.For <ICodeLensResolveHandler>();

            resolveHandler.CanResolve(Arg.Any <CodeLens>()).Returns(false);
            resolveHandler2.CanResolve(Arg.Any <CodeLens>()).Returns(true);

            // When
            var result = handlerMatcher.FindHandler(new CodeLens()
            {
                Data = JToken.FromObject(new { handlerType = typeof(ICodeLensResolveHandler).FullName, data = new { a = 1 } })
            },
                                                    new List <HandlerDescriptor> {
                new HandlerDescriptor(DocumentNames.CodeLensResolve,
                                      "Key",
                                      resolveHandler,
                                      resolveHandler.GetType(),
                                      typeof(CodeLens),
                                      null,
                                      null,
                                      () => { }),
                new HandlerDescriptor(DocumentNames.CodeLensResolve,
                                      "Key2",
                                      resolveHandler2,
                                      typeof(ICodeLensResolveHandler),
                                      typeof(CodeLens),
                                      null,
                                      null,
                                      () => { }),
            })
                         .ToArray();

            // Then
            result.Should().NotBeNullOrEmpty();
            result.Should().Contain(x => x.Handler == resolveHandler2);
        }
コード例 #8
0
        public void Should_FindPostProcessor_AsSelf_For_Completion()
        {
            var handlerMatcher = new ResolveCommandMatcher(_logger);
            var resolveHandler = Substitute.For <ICompletionHandler>();
            var descriptor     = new HandlerDescriptor(
                DocumentNames.Completion,
                "Key",
                resolveHandler,
                resolveHandler.GetType(),
                typeof(CompletionParams),
                null,
                null,
                () => { });

            // When
            var processors = handlerMatcher
                             .FindPostProcessor(descriptor, new CompletionParams(), new CompletionList(Enumerable.Empty <CompletionItem>()))
                             .ToArray();

            // Then
            processors.Should().Contain(x => x == handlerMatcher);
        }