TextDocumentIdentifier clone(TextDocumentIdentifier textDocumentIdentifier) { if (textDocumentIdentifier == null) { return null; } String uri = textDocumentIdentifier.getUri(); TextDocumentIdentifier cloned = new TextDocumentIdentifier(); cloned.setUri(uri); return cloned; }
public TextDocumentIdentifier getId() { TextDocumentIdentifier id = new TextDocumentIdentifier(); id.setUri(getUri()); return id; }
public void assertLinkTargets(String hoverOver, Set<Location> expectedLocations) throws Exception { int pos = getRawText().indexOf(hoverOver); if (pos>=0) { pos += hoverOver.length() / 2; } assertTrue("Not found in editor: '"+hoverOver+"'", pos>=0); TextDocumentPositionParams params = new TextDocumentPositionParams(new TextDocumentIdentifier(getUri()), doc.toPosition(pos)); List<? extends Location> definitions = harness.getDefinitions(params); assertEquals(ImmutableSet.copyOf(expectedLocations), ImmutableSet.copyOf(definitions)); }
@Test public void testDocumentSymbols_absolutePath() throws InterruptedException, ExecutionException { CompletableFuture<List<? extends SymbolInformation>> response = service.documentSymbol( new DocumentSymbolParams( new TextDocumentIdentifier(filePath.toAbsolutePath().toString()))); assertThat(response.get().stream().collect(Collectors.toSet()), is(symbolsMap.get(filePath.toUri()))); }
@Test public void testDocumentSymbols_relativePath() throws InterruptedException, ExecutionException { CompletableFuture<List<? extends SymbolInformation>> response = service.documentSymbol(new DocumentSymbolParams(new TextDocumentIdentifier("something.groovy"))); assertThat(response.get().stream().collect(Collectors.toSet()), is(symbolsMap.get(filePath.toUri()))); }
@Test public void testDidClose() { service.didClose(new DidCloseTextDocumentParams( new TextDocumentIdentifier(filePath.toAbsolutePath().toString()))); // assert diagnostics were published assertEquals(1, publishedDiagnostics.size()); assertEquals(expectedDiagnostics, Sets.newHashSet(publishedDiagnostics.get(0))); }
@Test public void testDidSave() { service.didSave(new DidSaveTextDocumentParams( new TextDocumentIdentifier(filePath.toAbsolutePath().toString()))); // assert diagnostics were published assertEquals(1, publishedDiagnostics.size()); assertEquals(expectedDiagnostics, Sets.newHashSet(publishedDiagnostics.get(0))); }
@Test public void testDefinition() throws InterruptedException, ExecutionException { String uri = filePath.toAbsolutePath().toString(); TextDocumentPositionParams params = new TextDocumentPositionParams(new TextDocumentIdentifier(uri), uri, new Position(5, 5)); CompletableFuture<List<? extends Location>> response = service.definition(params); assertThat(response.get(), is(Lists.newArrayList(expectedDefinitionLocation.get()))); }
@Test public void testDefinition_NoDefinition() throws InterruptedException, ExecutionException { String uri = filePath.toAbsolutePath().toString(); TextDocumentPositionParams params = new TextDocumentPositionParams(new TextDocumentIdentifier(uri), uri, new Position(4, 4)); CompletableFuture<List<? extends Location>> response = service.definition(params); assertThat(response.get(), is(Lists.newArrayList())); }
@Test public void testDocumentLink_01() throws Exception, ExecutionException { LanguageServer languageServer = wrap(LanguageServer.class, new MockLanguageServer() { @Override public CompletableFuture<List<DocumentLink>> documentLink(DocumentLinkParams params) { return CompletableFutures.computeAsync(canceler -> { return new ArrayList<>(); }); } }); CompletableFuture<List<DocumentLink>> future = languageServer.getTextDocumentService().documentLink(new DocumentLinkParams(new TextDocumentIdentifier("test"))); List<DocumentLink> list = future.get(TIMEOUT, TimeUnit.MILLISECONDS); Assert.assertTrue(list.isEmpty()); }
@Test public void testCompletion() throws InterruptedException, ExecutionException { String uri = filePath.toAbsolutePath().toString(); TextDocumentPositionParams params = new TextDocumentPositionParams(new TextDocumentIdentifier(uri), uri, new Position(5, 5)); CompletableFuture<Either<List<CompletionItem>, CompletionList>> response = service.completion(params); assertThat(response.get().getRight().isIncomplete(), is(expectedCompletionList.isIncomplete())); assertThat(Sets.newHashSet(response.get().getRight().getItems()), is(Sets.newHashSet(expectedCompletionList.getItems()))); }
@Test public void testCompletion_noSymbols() throws InterruptedException, ExecutionException { String uri = workspace.getRoot().toPath().resolve("somethingthatdoesntexist.groovy").toString(); TextDocumentPositionParams params = new TextDocumentPositionParams(new TextDocumentIdentifier(uri), uri, new Position(5, 5)); CompletableFuture<Either<List<CompletionItem>, CompletionList>> response = service.completion(params); assertThat(response.get().getRight().isIncomplete(), is(false)); assertThat(response.get().getRight().getItems(), is(Lists.newArrayList())); }
@Test public void testDocumentLink_02() throws Exception, ExecutionException { LanguageServer languageServer = wrap(LanguageServer.class, new MockLanguageServer() { @Override public CompletableFuture<List<DocumentLink>> documentLink(DocumentLinkParams params) { return CompletableFutures.computeAsync(canceler -> { return null; }); } }); CompletableFuture<List<DocumentLink>> future = languageServer.getTextDocumentService().documentLink(new DocumentLinkParams(new TextDocumentIdentifier("test"))); List<DocumentLink> list = future.get(TIMEOUT, TimeUnit.MILLISECONDS); Assert.assertNull(list); }
@Test public void testReferences() throws InterruptedException, ExecutionException { ReferenceParams params = new ReferenceParams(new ReferenceContext(false)); params.setPosition(new Position(5, 5)); params.setTextDocument(new TextDocumentIdentifier("uri")); params.setUri("uri"); CompletableFuture<List<? extends Location>> response = service.references(params); assertThat(response.get().stream().collect(Collectors.toSet()), is(expectedReferences)); }
new TextDocumentPositionParamsDto( new TextDocumentPositionParams( new TextDocumentIdentifier(file.getLocation().toString()), new Position( activeEditor.getCursorPosition().getLine(),
private static ReferenceParams createReferenceParams(URI uri, int line, int col, boolean includeDeclaration) { ReferenceParams referenceParams = new ReferenceParams(new ReferenceContext(includeDeclaration)); referenceParams.setTextDocument(new TextDocumentIdentifier(uri.toString())); referenceParams.setPosition(new Position(line, col)); return referenceParams; }
public static Pair<BLangNode, Object> getBLangNode(int line, int column, String uri, WorkspaceDocumentManager documentManager, LSCompiler lsCompiler, LSContext context) { Position position = new Position(); position.setLine(line); position.setCharacter(column + 1); context.put(DocumentServiceKeys.FILE_URI_KEY, uri); TextDocumentIdentifier identifier = new TextDocumentIdentifier(uri); context.put(DocumentServiceKeys.POSITION_KEY, new TextDocumentPositionParams(identifier, position)); List<BLangPackage> bLangPackages = lsCompiler.getBLangPackages(context, documentManager, false, LSCustomErrorStrategy.class, true); // Get the current package. BLangPackage currentBLangPackage = CommonUtil.getCurrentPackageByFileName(bLangPackages, uri); context.put(DocumentServiceKeys.CURRENT_PACKAGE_NAME_KEY, currentBLangPackage.symbol.getName().getValue()); // Run the position calculator for the current package. PositionTreeVisitor positionTreeVisitor = new PositionTreeVisitor(context); currentBLangPackage.accept(positionTreeVisitor); return new ImmutablePair<>(context.get(NodeContextKeys.NODE_KEY), context.get(NodeContextKeys.PREVIOUSLY_VISITED_NODE_KEY)); }
@Test public void testEquals() { Assert.assertEquals(new TextDocumentIdentifier("foo"), new TextDocumentIdentifier("foo")); Assert.assertNotEquals(new TextDocumentIdentifier("foo"), new TextDocumentIdentifier("bar")); CompletionItem e1 = new CompletionItem(); e1.setAdditionalTextEdits(new ArrayList<>()); e1.getAdditionalTextEdits().add(new TextEdit(new Range(new Position(1,1), new Position(1,1)), "foo")); CompletionItem e2 = new CompletionItem(); e2.setAdditionalTextEdits(new ArrayList<>()); e2.getAdditionalTextEdits().add(new TextEdit(new Range(new Position(1,1), new Position(1,1)), "foo")); CompletionItem e3 = new CompletionItem(); e3.setAdditionalTextEdits(new ArrayList<>()); e3.getAdditionalTextEdits().add(new TextEdit(new Range(new Position(1,1), new Position(1,2)), "foo")); Assert.assertEquals(e1, e2); Assert.assertNotEquals(e1, e3); Assert.assertEquals(e1.hashCode(), e2.hashCode()); Assert.assertNotEquals(e1.hashCode(), e3.hashCode()); }
@Test public void testInvalidCompletion() { RequestMessage message = new RequestMessage(); message.setJsonrpc("2.0"); message.setId("1"); message.setMethod(MessageMethods.DOC_COMPLETION); TextDocumentPositionParams params = new TextDocumentPositionParams(); params.setTextDocument(new TextDocumentIdentifier("file:///tmp/foo")); message.setParams(params); assertIssues(message, "The accessor 'TextDocumentPositionParams.getPosition()' must return a non-null value."); }
@Test public void testRequest() throws Exception { CompletionParams p = new CompletionParams(); p.setPosition(new Position(1,1)); p.setTextDocument(new TextDocumentIdentifier("test/foo.txt")); CompletionList result = new CompletionList(); result.setIsIncomplete(true); result.setItems(new ArrayList<>()); CompletionItem item = new CompletionItem(); item.setDetail("test"); item.setDocumentation("doc"); item.setFilterText("filter"); item.setInsertText("insert"); item.setKind(CompletionItemKind.Field); result.getItems().add(item); server.expectedRequests.put("textDocument/completion", new Pair<>(p, result)); CompletableFuture<Either<List<CompletionItem>, CompletionList>> future = clientLauncher.getRemoteProxy().getTextDocumentService().completion(p); Assert.assertEquals(Either.forRight(result).toString(), future.get(TIMEOUT, TimeUnit.MILLISECONDS).toString()); client.joinOnEmpty(); }