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"); |