langtools/test/jdk/jshell/CompletionSuggestionTest.java
changeset 45747 bdf4b1b26697
parent 44814 d008ab12a00a
equal deleted inserted replaced
45746:a64c9a565bb7 45747:bdf4b1b26697
    21  * questions.
    21  * questions.
    22  */
    22  */
    23 
    23 
    24 /*
    24 /*
    25  * @test
    25  * @test
    26  * @bug 8131025 8141092 8153761 8145263 8131019 8175886 8176184 8176241
    26  * @bug 8131025 8141092 8153761 8145263 8131019 8175886 8176184 8176241 8176110
    27  * @summary Test Completion and Documentation
    27  * @summary Test Completion and Documentation
    28  * @library /tools/lib
    28  * @library /tools/lib
    29  * @modules jdk.compiler/com.sun.tools.javac.api
    29  * @modules jdk.compiler/com.sun.tools.javac.api
    30  *          jdk.compiler/com.sun.tools.javac.main
    30  *          jdk.compiler/com.sun.tools.javac.main
    31  *          jdk.jdeps/com.sun.tools.javap
    31  *          jdk.jdeps/com.sun.tools.javap
   178         assertCompletion("method(0, |", true, "ccTest3");
   178         assertCompletion("method(0, |", true, "ccTest3");
   179         assertCompletion("list.add(|", true, "ccTest1", "ccTest2", "ccTest3");
   179         assertCompletion("list.add(|", true, "ccTest1", "ccTest2", "ccTest3");
   180         assertCompletion("list.add(0, |", true, "ccTest3");
   180         assertCompletion("list.add(0, |", true, "ccTest3");
   181         assertCompletion("new String(|", true, "ccTest3");
   181         assertCompletion("new String(|", true, "ccTest3");
   182         assertCompletion("new String(new char[0], |", true, "ccTest1", "ccTest2");
   182         assertCompletion("new String(new char[0], |", true, "ccTest1", "ccTest2");
   183         assertCompletionIncludesExcludes("new jav|", new HashSet<>(Arrays.asList("java", "javax")), Collections.emptySet());
   183         assertCompletionIncludesExcludes("new jav|", new HashSet<>(Arrays.asList("java.", "javax.")), Collections.emptySet());
   184         assertCompletion("Class<String> clazz = String.c|", true, "class");
   184         assertCompletion("Class<String> clazz = String.c|", true, "class");
   185 
   185 
   186         Snippet klass = classKey(assertEval("class Klass {void method(int n) {} private void method(String str) {}}"));
   186         Snippet klass = classKey(assertEval("class Klass {void method(int n) {} private void method(String str) {}}"));
   187         assertCompletion("new Klass().method(|", true, "ccTest1", "ccTest2");
   187         assertCompletion("new Klass().method(|", true, "ccTest1", "ccTest2");
   188         Snippet klass2 = classKey(assertEval("class Klass {static void method(int n) {} void method(String str) {}}",
   188         Snippet klass2 = classKey(assertEval("class Klass {static void method(int n) {} void method(String str) {}}",
   239         assertCompletion("new I.|", "A()");
   239         assertCompletion("new I.|", "A()");
   240         assertCompletion("new String(I.A|", "A");
   240         assertCompletion("new String(I.A|", "A");
   241     }
   241     }
   242 
   242 
   243     public void testFullyQualified() {
   243     public void testFullyQualified() {
   244         assertCompletion("Optional<String> opt = java.u|", "util");
   244         assertCompletion("Optional<String> opt = java.u|", "util.");
   245         assertCompletionIncludesExcludes("Optional<Strings> opt = java.util.O|", new HashSet<>(Collections.singletonList("Optional")), Collections.emptySet());
   245         assertCompletionIncludesExcludes("Optional<Strings> opt = java.util.O|", new HashSet<>(Collections.singletonList("Optional")), Collections.emptySet());
   246 
   246 
   247         assertEval("void method(java.util.Optional<String> opt) {}");
   247         assertEval("void method(java.util.Optional<String> opt) {}");
   248         assertCompletion("method(java.u|", "util");
   248         assertCompletion("method(java.u|", "util.");
   249 
   249 
   250         assertCompletion("Object.notElement.|");
   250         assertCompletion("Object.notElement.|");
   251         assertCompletion("Object o = com.su|", "sun");
   251         assertCompletion("Object o = com.su|", "sun.");
   252 
   252 
   253         Path p1 = outDir.resolve("dir1");
   253         Path p1 = outDir.resolve("dir1");
   254         compiler.compile(p1,
   254         compiler.compile(p1,
   255                 "package p1.p2;\n" +
   255                 "package p1.p2;\n" +
   256                 "public class Test {\n" +
   256                 "public class Test {\n" +
   260                 "}");
   260                 "}");
   261         String jarName = "test.jar";
   261         String jarName = "test.jar";
   262         compiler.jar(p1, jarName, "p1/p2/Test.class", "p1/p3/Test.class");
   262         compiler.jar(p1, jarName, "p1/p2/Test.class", "p1/p3/Test.class");
   263         addToClasspath(compiler.getPath(p1.resolve(jarName)));
   263         addToClasspath(compiler.getPath(p1.resolve(jarName)));
   264 
   264 
   265         assertCompletionIncludesExcludes("|", new HashSet<>(Collections.singletonList("p1")), Collections.emptySet());
   265         assertCompletionIncludesExcludes("|", new HashSet<>(Collections.singletonList("p1.")), Collections.emptySet());
   266         assertCompletion("p1.|", "p2", "p3");
   266         assertCompletion("p1.|", "p2.", "p3.");
   267         assertCompletion("p1.p2.|", "Test");
   267         assertCompletion("p1.p2.|", "Test");
   268         assertCompletion("p1.p3.|", "Test");
   268         assertCompletion("p1.p3.|", "Test");
   269     }
   269     }
   270 
   270 
   271     public void testCheckAccessibility() {
   271     public void testCheckAccessibility() {
   272         assertCompletion("java.util.regex.Pattern.co|", "compile(");
   272         assertCompletion("java.util.regex.Pattern.co|", "compile(");
   273     }
   273     }
   274 
   274 
   275     public void testCompletePackages() {
   275     public void testCompletePackages() {
   276         assertCompletion("java.u|", "util");
   276         assertCompletion("java.u|", "util.");
   277         assertCompletionIncludesExcludes("jav|", new HashSet<>(Arrays.asList("java", "javax")), Collections.emptySet());
   277         assertCompletionIncludesExcludes("jav|", new HashSet<>(Arrays.asList("java.", "javax.")), Collections.emptySet());
   278     }
   278     }
   279 
   279 
   280     public void testImports() {
   280     public void testImports() {
   281         assertCompletion("import java.u|", "util");
   281         assertCompletion("import java.u|", "util.");
   282         assertCompletionIncludesExcludes("import jav|", new HashSet<>(Arrays.asList("java", "javax")), Collections.emptySet());
   282         assertCompletionIncludesExcludes("import jav|", new HashSet<>(Arrays.asList("java.", "javax.")), Collections.emptySet());
   283         assertCompletion("import static java.u|", "util");
   283         assertCompletion("import static java.u|", "util.");
   284         assertCompletionIncludesExcludes("import static jav|", new HashSet<>(Arrays.asList("java", "javax")), Collections.emptySet());
   284         assertCompletionIncludesExcludes("import static jav|", new HashSet<>(Arrays.asList("java.", "javax.")), Collections.emptySet());
   285         assertCompletion("import static java.lang.Boolean.g|", "getBoolean");
   285         assertCompletion("import static java.lang.Boolean.g|", "getBoolean");
   286         assertCompletion("import java.util.*|");
   286         assertCompletion("import java.util.*|");
   287         assertCompletionIncludesExcludes("import java.lang.String.|",
   287         assertCompletionIncludesExcludes("import java.lang.String.|",
   288                 Collections.emptySet(),
   288                 Collections.emptySet(),
   289                 new HashSet<>(Arrays.asList("CASE_INSENSITIVE_ORDER", "copyValueOf", "format", "join", "valueOf", "class", "length")));
   289                 new HashSet<>(Arrays.asList("CASE_INSENSITIVE_ORDER", "copyValueOf", "format", "join", "valueOf", "class", "length")));
   294                 new HashSet<>(Arrays.asList("Entry")),
   294                 new HashSet<>(Arrays.asList("Entry")),
   295                 new HashSet<>(Arrays.asList("class")));
   295                 new HashSet<>(Arrays.asList("class")));
   296     }
   296     }
   297 
   297 
   298     public void testImportStart() {
   298     public void testImportStart() {
   299         assertCompletionIncludesExcludes("import c|", Set.of("com"), Set.of());
   299         assertCompletionIncludesExcludes("import c|", Set.of("com."), Set.of());
   300     }
   300     }
   301 
   301 
   302     public void testBrokenClassFile() throws Exception {
   302     public void testBrokenClassFile() throws Exception {
   303         Compiler compiler = new Compiler();
   303         Compiler compiler = new Compiler();
   304         Path testOutDir = Paths.get("CompletionTestBrokenClassFile");
   304         Path testOutDir = Paths.get("CompletionTestBrokenClassFile");