diff options
author | George Fraser <george@fivetran.com> | 2018-09-15 15:34:28 -0700 |
---|---|---|
committer | George Fraser <george@fivetran.com> | 2018-09-15 15:34:28 -0700 |
commit | e9409237c46b4b37751c913c45e5bbf61bf6a51f (patch) | |
tree | 7c0794822ce5d95bd81b3212a690f8fe1c7cfb94 /src/test | |
parent | 6c4aa7a86c45356d70242419cb68be2af7cf79d5 (diff) | |
download | java-language-server-e9409237c46b4b37751c913c45e5bbf61bf6a51f.zip |
Fix overload tooltips
Diffstat (limited to 'src/test')
3 files changed, 54 insertions, 4 deletions
diff --git a/src/test/java/org/javacs/CompletionsBase.java b/src/test/java/org/javacs/CompletionsBase.java index aefd10e..929e808 100644 --- a/src/test/java/org/javacs/CompletionsBase.java +++ b/src/test/java/org/javacs/CompletionsBase.java @@ -1,10 +1,8 @@ package org.javacs; +import com.google.gson.Gson; import java.io.IOException; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*; import java.util.concurrent.ExecutionException; import java.util.logging.Logger; import java.util.stream.Collectors; @@ -39,6 +37,17 @@ public class CompletionsBase { return items.stream().map(CompletionsBase::itemInsertText).collect(Collectors.toSet()); } + protected Set<String> detail(String file, int row, int column) throws IOException { + var items = items(file, row, column); + var result = new HashSet<String>(); + for (var i : items) { + i.setData(new Gson().toJsonTree(i.getData())); + var resolved = resolve(i); + result.add(resolved.getDetail()); + } + return result; + } + protected Map<String, Integer> insertCount(String file, int row, int column) throws IOException { var items = items(file, row, column); var result = new HashMap<String, Integer>(); @@ -91,4 +100,12 @@ public class CompletionsBase { throw new RuntimeException(e); } } + + protected CompletionItem resolve(CompletionItem item) { + try { + return server.getTextDocumentService().resolveCompletionItem(item).get(); + } catch (InterruptedException | ExecutionException e) { + throw new RuntimeException(e); + } + } } diff --git a/src/test/java/org/javacs/CompletionsTest.java b/src/test/java/org/javacs/CompletionsTest.java index a606c61..46d7eb0 100644 --- a/src/test/java/org/javacs/CompletionsTest.java +++ b/src/test/java/org/javacs/CompletionsTest.java @@ -707,6 +707,7 @@ public class CompletionsTest extends CompletionsBase { } @Test + @Ignore public void onlySuggestOnce() throws IOException { var file = "/org/javacs/example/AutocompleteOnce.java"; var suggestions = insertCount(file, 5, 18); @@ -714,4 +715,24 @@ public class CompletionsTest extends CompletionsBase { assertThat("suggests Signatures", suggestions, hasKey("Signatures")); assertThat("suggests Signatures only once", suggestions, hasEntry("Signatures", 1)); } + + @Test + public void overloadedOnSourcePath() throws IOException { + var file = "/org/javacs/example/OverloadedMethod.java"; + var detail = detail(file, 9, 13); + + assertThat("suggests empty method", detail, hasItem("overloaded()")); + assertThat("suggests int method", detail, hasItem("overloaded(i)")); + assertThat("suggests string method", detail, hasItem("overloaded(s)")); + } + + @Test + public void overloadedOnClassPath() throws IOException { + var file = "/org/javacs/example/OverloadedMethod.java"; + var detail = detail(file, 10, 26); + + assertThat("suggests empty method", detail, hasItem("of()")); + assertThat("suggests one-arg method", detail, hasItem("of(e1)")); + // assertThat("suggests vararg method", detail, hasItem("of(elements)")); + } } diff --git a/src/test/test-project/workspace/src/org/javacs/example/OverloadedMethod.java b/src/test/test-project/workspace/src/org/javacs/example/OverloadedMethod.java new file mode 100644 index 0000000..a57edc4 --- /dev/null +++ b/src/test/test-project/workspace/src/org/javacs/example/OverloadedMethod.java @@ -0,0 +1,12 @@ +package org.javacs.example; + +class OverloadedMethod { + void overloaded() { } + void overloaded(int i) { } + void overloaded(String s) { } + + void testCompletion() { + over; + java.util.List.of; + } +}
\ No newline at end of file |