blob: ea0370267aaf694e11d07da6f8991b034e9b2658 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2019 IBM and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
*******************************************************************************/
package org.eclipse.jdt.core.tests.model;
import org.eclipse.jdt.core.ICompilationUnit;
import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.jdt.internal.codeassist.RelevanceConstants;
import junit.framework.Test;
public class CompletionTests12 extends AbstractJavaModelCompletionTests {
static {
// TESTS_NAMES = new String[]{"test018e"};
}
public CompletionTests12(String name) {
super(name);
}
public void setUpSuite() throws Exception {
if (COMPLETION_PROJECT == null) {
COMPLETION_PROJECT = setUpJavaProject("Completion", "12");
} else {
setUpProjectCompliance(COMPLETION_PROJECT, "12");
}
super.setUpSuite();
}
public static Test suite() {
return buildModelTestSuite(CompletionTests12.class);
}
public void test001() throws JavaModelException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy(
"/Completion/src/Switch.java",
"public class Switch {\n" +
" public static void bar(MyDay day) {\n" +
" switch (day) {\n" +
" case SATURDAY, SUN ->\n" +
" System.out.println(day.toString());\n" +
" }\n" +
" }\n" +
" public static void main(String[] args) {\n" +
" bar(MyDay.SUNDAY);\n" +
" }\n" +
"}\n" +
"enum MyDay { SATURDAY, SUNDAY}");
CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
requestor.allowAllRequiredProposals();
String str = this.workingCopies[0].getSource();
String completeBehind = "SATURDAY, SUN";
int cursorLocation = str.indexOf(completeBehind) + completeBehind.length();
this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
assertResults(
"SUNDAY[FIELD_REF]{SUNDAY, LMyDay;, LMyDay;, SUNDAY, null, "+
(RelevanceConstants.R_DEFAULT + RelevanceConstants.R_RESOLVED + RelevanceConstants.R_INTERESTING+
RelevanceConstants.R_CASE + RelevanceConstants.R_EXACT_EXPECTED_TYPE +
RelevanceConstants.R_ENUM + RelevanceConstants.R_ENUM_CONSTANT +
RelevanceConstants.R_UNQUALIFIED + RelevanceConstants.R_NON_RESTRICTED)+ "}",
requestor.getResults());
}
public void test002() throws JavaModelException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy(
"/Completion/src/Switch.java",
"public class Switch {\n" +
" public static void bar(MyDay day) {\n" +
" switch (day) {\n" +
" case SATURDAY, SUN :\n" +
" System.out.println(day.toString());\n" +
" }\n" +
" }\n" +
" public static void main(String[] args) {\n" +
" bar(MyDay.SUNDAY);\n" +
" }\n" +
"}\n" +
"enum MyDay { SATURDAY, SUNDAY}");
CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
requestor.allowAllRequiredProposals();
String str = this.workingCopies[0].getSource();
String completeBehind = "SATURDAY, SUN";
int cursorLocation = str.indexOf(completeBehind) + completeBehind.length();
this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
assertResults(
"SUNDAY[FIELD_REF]{SUNDAY, LMyDay;, LMyDay;, SUNDAY, null, "+
(RelevanceConstants.R_DEFAULT + RelevanceConstants.R_RESOLVED + RelevanceConstants.R_INTERESTING+
RelevanceConstants.R_CASE + RelevanceConstants.R_EXACT_EXPECTED_TYPE +
RelevanceConstants.R_ENUM + RelevanceConstants.R_ENUM_CONSTANT +
RelevanceConstants.R_UNQUALIFIED + RelevanceConstants.R_NON_RESTRICTED)+ "}",
requestor.getResults());
}
public void test003() throws JavaModelException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy(
"/Completion/src/Switch.java",
"public class Switch {\n" +
" public static void bar(MyDay day) {\n" +
" switch (day) {\n" +
" case SATU -> \n" +
" System.out.println(day.toString());\n" +
" }\n" +
" }\n" +
" public static void main(String[] args) {\n" +
" bar(MyDay.SUNDAY);\n" +
" }\n" +
"}\n" +
"enum MyDay { SATURDAY, SUNDAY}");
CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
requestor.allowAllRequiredProposals();
String str = this.workingCopies[0].getSource();
String completeBehind = "SATU";
int cursorLocation = str.indexOf(completeBehind) + completeBehind.length();
this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
assertResults(
"SATURDAY[FIELD_REF]{SATURDAY, LMyDay;, LMyDay;, SATURDAY, null, "+
(RelevanceConstants.R_DEFAULT + RelevanceConstants.R_RESOLVED + RelevanceConstants.R_INTERESTING+
RelevanceConstants.R_CASE + RelevanceConstants.R_EXACT_EXPECTED_TYPE +
RelevanceConstants.R_ENUM + RelevanceConstants.R_ENUM_CONSTANT +
RelevanceConstants.R_UNQUALIFIED + RelevanceConstants.R_NON_RESTRICTED)+ "}",
requestor.getResults());
}
public void test004() throws JavaModelException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy(
"/Completion/src/Switch.java",
"public class Switch {\n" +
" public static void bar(MyDay day) {\n" +
" switch (day) {\n" +
" case SATURDAY, SUNDAY, MOND -> \n" +
" System.out.println(day.toString());\n" +
" }\n" +
" }\n" +
" public static void main(String[] args) {\n" +
" bar(MyDay.SUNDAY);\n" +
" }\n" +
"}\n" +
"enum MyDay { SATURDAY, SUNDAY, MONDAY}");
CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
requestor.allowAllRequiredProposals();
String str = this.workingCopies[0].getSource();
String completeBehind = "MOND";
int cursorLocation = str.indexOf(completeBehind) + completeBehind.length();
this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
assertResults(
"MONDAY[FIELD_REF]{MONDAY, LMyDay;, LMyDay;, MONDAY, null, "+
(RelevanceConstants.R_DEFAULT + RelevanceConstants.R_RESOLVED + RelevanceConstants.R_INTERESTING+
RelevanceConstants.R_CASE + RelevanceConstants.R_EXACT_EXPECTED_TYPE +
RelevanceConstants.R_ENUM + RelevanceConstants.R_ENUM_CONSTANT +
RelevanceConstants.R_UNQUALIFIED + RelevanceConstants.R_NON_RESTRICTED)+ "}",
requestor.getResults());
}
public void test005() throws JavaModelException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy(
"/Completion/src/Switch.java",
"public class Switch {\n" +
" public static void bar(MyDay day) {\n" +
" switch (day) {\n" +
" case SATURDAY, SUND, MONDAY -> \n" +
" System.out.println(day.toString());\n" +
" }\n" +
" }\n" +
" public static void main(String[] args) {\n" +
" bar(MyDay.SUNDAY);\n" +
" }\n" +
"}\n" +
"enum MyDay { SATURDAY, SUNDAY, MONDAY}");
CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
requestor.allowAllRequiredProposals();
String str = this.workingCopies[0].getSource();
String completeBehind = "SUND";
int cursorLocation = str.indexOf(completeBehind) + completeBehind.length();
this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
assertResults(
"SUNDAY[FIELD_REF]{SUNDAY, LMyDay;, LMyDay;, SUNDAY, null, "+
(RelevanceConstants.R_DEFAULT + RelevanceConstants.R_RESOLVED + RelevanceConstants.R_INTERESTING+
RelevanceConstants.R_CASE + RelevanceConstants.R_EXACT_EXPECTED_TYPE +
RelevanceConstants.R_ENUM + RelevanceConstants.R_ENUM_CONSTANT +
RelevanceConstants.R_UNQUALIFIED + RelevanceConstants.R_NON_RESTRICTED)+ "}",
requestor.getResults());
}
public void test005a() throws JavaModelException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy(
"/Completion/src/Switch.java",
"public class Switch {\n" +
" public static void bar(MyDay day) {\n" +
" switch (day) {\n" +
" case SATURDAY, SUNDAY -> \n" +
" System.out.println(day.toString());\n" +
" case MON -> \n" +
" System.out.println(day.toString());\n" +
" }\n" +
" }\n" +
" public static void main(String[] args) {\n" +
" bar(MyDay.SUNDAY);\n" +
" }\n" +
"}\n" +
"enum MyDay { SATURDAY, SUNDAY, MONDAY}");
CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
requestor.allowAllRequiredProposals();
String str = this.workingCopies[0].getSource();
String completeBehind = "case MON";
int cursorLocation = str.indexOf(completeBehind) + completeBehind.length();
this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
assertResults(
"MONDAY[FIELD_REF]{MONDAY, LMyDay;, LMyDay;, MONDAY, null, "+
(RelevanceConstants.R_DEFAULT + RelevanceConstants.R_RESOLVED + RelevanceConstants.R_INTERESTING+
RelevanceConstants.R_CASE + RelevanceConstants.R_EXACT_EXPECTED_TYPE +
RelevanceConstants.R_ENUM + RelevanceConstants.R_ENUM_CONSTANT +
RelevanceConstants.R_UNQUALIFIED + RelevanceConstants.R_NON_RESTRICTED)+ "}",
requestor.getResults());
}
public void test006() throws JavaModelException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy(
"/Completion/src/Switch.java",
"public class Switch {\n" +
" public static void bar(MyDay day) {\n" +
" switch (day.toS) {\n" +
" case \"SATURDAY\" -> \n" +
" System.out.println(day.toString());\n" +
" }\n" +
" }\n" +
" public static void main(String[] args) {\n" +
" bar(MyDay.SUNDAY);\n" +
" }\n" +
"}\n" +
"enum MyDay { SATURDAY, SUNDAY}");
CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
requestor.allowAllRequiredProposals();
String str = this.workingCopies[0].getSource();
String completeBehind = "day.toS";
int cursorLocation = str.indexOf(completeBehind) + completeBehind.length();
this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
assertResults(
"toString[METHOD_REF]{toString(), Ljava.lang.Object;, ()Ljava.lang.String;, toString, null, 60}",
requestor.getResults());
}
public void test007() throws JavaModelException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy(
"/Completion/src/Switch.java",
"public class Switch {\n" +
" public static void bar(MyDay day) {\n" +
" switch (day.o) {\n" +
" case 0 -> \n" +
" System.out.println(day.toString());\n" +
" }\n" +
" }\n" +
" public static void main(String[] args) {\n" +
" bar(MyDay.SUNDAY);\n" +
" }\n" +
"}\n" +
"enum MyDay { SATURDAY, SUNDAY}");
CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
requestor.allowAllRequiredProposals();
String str = this.workingCopies[0].getSource();
String completeBehind = "day.o";
int cursorLocation = str.indexOf(completeBehind) + completeBehind.length();
this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
assertResults(
"ordinal[METHOD_REF]{ordinal(), Ljava.lang.Enum<LMyDay;>;, ()I, ordinal, null, 60}",
requestor.getResults());
}
public void test008() throws JavaModelException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy(
"/Completion/src/Switch.java",
"public class Switch {\n" +
" public static void bar(MyDay day) {\n" +
" switch (1 + day.o) {\n" +
" case 0 -> \n" +
" System.out.println(day.toString());\n" +
" }\n" +
" }\n" +
" public static void main(String[] args) {\n" +
" bar(MyDay.SUNDAY);\n" +
" }\n" +
"}\n" +
"enum MyDay { SATURDAY, SUNDAY}");
CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
requestor.allowAllRequiredProposals();
String str = this.workingCopies[0].getSource();
String completeBehind = "day.o";
int cursorLocation = str.indexOf(completeBehind) + completeBehind.length();
this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
assertResults(
"ordinal[METHOD_REF]{ordinal(), Ljava.lang.Enum<LMyDay;>;, ()I, ordinal, null, 90}",
requestor.getResults());
}
public void test009() throws JavaModelException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy(
"/Completion/src/Switch.java",
"public class Switch {\n" +
" public static void bar(MyDay day) {\n" +
" switch (1 + da) {\n" +
" case 0 -> \n" +
" System.out.println(day.toString());\n" +
" }\n" +
" }\n" +
" public static void main(String[] args) {\n" +
" bar(MyDay.SUNDAY);\n" +
" }\n" +
"}\n" +
"enum MyDay { SATURDAY, SUNDAY}");
CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
requestor.allowAllRequiredProposals();
String str = this.workingCopies[0].getSource();
String completeBehind = "1 + da";
int cursorLocation = str.indexOf(completeBehind) + completeBehind.length();
this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
assertResults(
"day[LOCAL_VARIABLE_REF]{day, null, LMyDay;, day, null, 52}",
requestor.getResults());
}
public void test010() throws JavaModelException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy(
"/Completion/src/Switch.java",
"public class Switch {\n" +
" public static void bar(MyDay day) {\n" +
" switch (1 + da + 1) {\n" +
" case 0 -> \n" +
" System.out.println(day.toString());\n" +
" }\n" +
" }\n" +
" public static void main(String[] args) {\n" +
" bar(MyDay.SUNDAY);\n" +
" }\n" +
"}\n" +
"enum MyDay { SATURDAY, SUNDAY}");
CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
requestor.allowAllRequiredProposals();
String str = this.workingCopies[0].getSource();
String completeBehind = "1 + da";
int cursorLocation = str.indexOf(completeBehind) + completeBehind.length();
this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
assertResults(
"day[LOCAL_VARIABLE_REF]{day, null, LMyDay;, day, null, 52}",
requestor.getResults());
}
public void test011() throws JavaModelException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy(
"/Completion/src/Switch.java",
"public class Switch {\n" +
" public static void bar(int arg0) {\n" +
" foo(\n" +
" switch (arg) {\n" +
" case 1 -> 1;\n" +
" default -> 0;\n" +
" }\n" +
" });\n" +
" public static void foo(int arg0) {\n" +
" bar(MyDay.SUNDAY);\n" +
" }\n" +
"}\n");
CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
requestor.allowAllRequiredProposals();
String str = this.workingCopies[0].getSource();
String completeBehind = "switch (arg";
int cursorLocation = str.indexOf(completeBehind) + completeBehind.length();
this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
assertResults(
"arg0[LOCAL_VARIABLE_REF]{arg0, null, I, arg0, null, 52}",
requestor.getResults());
}
public void test012() throws JavaModelException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy(
"/Completion/src/Switch.java",
"public class Switch {\n" +
" public static void bar(int arg0) {\n" +
" foo(\n" +
" switch (arg0) {\n" +
" case 1 -> arg;\n" +
" default -> 0;\n" +
" }\n" +
" });\n" +
" public static void foo(int arg0) {\n" +
" bar(MyDay.SUNDAY);\n" +
" }\n" +
"}\n");
CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
requestor.allowAllRequiredProposals();
String str = this.workingCopies[0].getSource();
String completeBehind = "-> arg";
int cursorLocation = str.indexOf(completeBehind) + completeBehind.length();
this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
assertResults(
"arg0[LOCAL_VARIABLE_REF]{arg0, null, I, arg0, null, 52}",
requestor.getResults());
}
public void test013() throws JavaModelException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy(
"/Completion/src/Switch.java",
"public class Switch {\n" +
" public static void bar(int arg0) {\n" +
" foo(\n" +
" switch (0 + arg) {\n" +
" case 1 -> 1;\n" +
" default -> 0;\n" +
" }\n" +
" });\n" +
" public static void foo(int arg0) {\n" +
" bar(MyDay.SUNDAY);\n" +
" }\n" +
"}\n");
CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
requestor.allowAllRequiredProposals();
String str = this.workingCopies[0].getSource();
String completeBehind = "0 + arg";
int cursorLocation = str.indexOf(completeBehind) + completeBehind.length();
this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
assertResults(
"arg0[LOCAL_VARIABLE_REF]{arg0, null, I, arg0, null, 82}",
requestor.getResults());
}
public void test014() throws JavaModelException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy(
"/Completion/src/X.java",
"public class X {\n" +
" public static void bar(int arg0) {\n" +
" foo(\n" +
" swi);\n" +
" public static void foo(int arg0) {\n" +
" bar(MyDay.SUNDAY);\n" +
" }\n" +
"}\n");
CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
requestor.allowAllRequiredProposals();
String str = this.workingCopies[0].getSource();
String completeBehind = "swi";
int cursorLocation = str.indexOf(completeBehind) + completeBehind.length();
this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
assertResults(
"switch[KEYWORD]{switch, null, null, switch, null, 49}",
requestor.getResults());
}
public void _test015() throws JavaModelException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy(
"/Completion/src/X.java",
"public class Switch {\n" +
" public static void bar(int arg0) {\n" +
" foo(\n" +
" switch (0 + arg0) {\n" +
" case 1 -> {break ar;}\n" +
" default -> 0;\n" +
" }\n" +
" });\n" +
" public static void foo(int arg0) {\n" +
" bar(MyDay.SUNDAY);\n" +
" }\n" +
"}\n");
CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
requestor.allowAllRequiredProposals();
String str = this.workingCopies[0].getSource();
String completeBehind = "break ar";
int cursorLocation = str.indexOf(completeBehind) + completeBehind.length();
this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
assertResults(
"arg0[LOCAL_VARIABLE_REF]{arg0, null, I, arg0, null, 52}",
requestor.getResults());
}
public void test016() throws JavaModelException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy(
"/Completion/src/X.java",
"public class Switch {\n" +
" public static void bar(int arg0) {\n" +
" foo(\n" +
" switch (0 + arg0) {\n" +
" case 1 -> {break 1;}\n" +
" default -> ar;\n" +
" }\n" +
" });\n" +
" public static void foo(int arg0) {\n" +
" bar(MyDay.SUNDAY);\n" +
" }\n" +
"}\n");
CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
requestor.allowAllRequiredProposals();
String str = this.workingCopies[0].getSource();
String completeBehind = "-> ar";
int cursorLocation = str.indexOf(completeBehind) + completeBehind.length();
this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
assertResults(
"arg0[LOCAL_VARIABLE_REF]{arg0, null, I, arg0, null, 52}",
requestor.getResults());
}
public void _test017() throws JavaModelException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy(
"/Completion/src/X.java",
"public class Switch {\n" +
" public static void bar(int arg0) {\n" +
" int arg1 = 0;\n" +
" foo(\n" +
" switch (0 + arg0) {\n" +
" case 1 -> 1;\n" +
" default -> {break ar;}\n" +
" }\n" +
" });\n" +
" public static void foo(int arg0) {\n" +
" bar(MyDay.SUNDAY);\n" +
" }\n" +
"}\n");
CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
requestor.allowAllRequiredProposals();
String str = this.workingCopies[0].getSource();
String completeBehind = "break ar";
int cursorLocation = str.indexOf(completeBehind) + completeBehind.length();
this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
assertResults(
"arg0[LOCAL_VARIABLE_REF]{arg0, null, I, arg0, null, 52}",
requestor.getResults());
}
public void _test017a() throws JavaModelException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy(
"/Completion/src/X.java",
"public class Switch {\n" +
" public static void bar(int arg0) {\n" +
" foo(\n" +
" argLabel: switch (0 + arg0) {\n" +
" case 1 -> 1;\n" +
" default -> {break ar;}\n" +
" }\n" +
" });\n" +
" public static void foo(int arg0) {\n" +
" bar(MyDay.SUNDAY);\n" +
" }\n" +
"}\n");
CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
requestor.allowAllRequiredProposals();
String str = this.workingCopies[0].getSource();
String completeBehind = "break ar";
int cursorLocation = str.indexOf(completeBehind) + completeBehind.length();
this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
assertResults(
"arg0[LOCAL_VARIABLE_REF]{arg0, null, I, arg0, null, 52}\n" +
"argLabel[LABEL_REF]{argLabel, null, null, argLabel, null, 49}",
requestor.getResults());
}
public void test018a() throws JavaModelException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy(
"/Completion/src/X.java",
"import org.eclipse.jdt.annotation.*;\n" +
"import java.util.function.*;\n" +
"interface IN0 {} \n" +
"interface IN1 extends IN0 {} \n" +
"interface IN2 extends IN0 {}\n" +
"public class X {\n" +
" @NonNull IN1 n_1() { return new IN1() {}; } \n" +
" IN2 n_2() { return null; } \n" +
" <M> void m(@NonNull Supplier<@NonNull M> m2) { } \n" +
" void testSw(int i) { \n" +
" m(switch(i) { \n" +
" case 1 -> this::n_; \n" +
" case 2 -> () -> n1(); \n" +
" case 3 -> null; \n" +
" case 4 -> () -> n2(); \n" +
" default -> this::n2; }); \n" +
" }\n" +
"}");
CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
requestor.allowAllRequiredProposals();
String str = this.workingCopies[0].getSource();
String completeBehind = "this::n_";
int cursorLocation = str.indexOf(completeBehind) + completeBehind.length();
this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
assertResults(
"n_1[METHOD_NAME_REFERENCE]{n_1, LX;, ()LIN1;, n_1, null, 60}\n" +
"n_2[METHOD_NAME_REFERENCE]{n_2, LX;, ()LIN2;, n_2, null, 60}",
requestor.getResults());
}
public void test018b() throws JavaModelException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy(
"/Completion/src/X.java",
"import org.eclipse.jdt.annotation.*;\n" +
"interface IN0 {} \n" +
"interface IN1 extends IN0 {} \n" +
"interface IN2 extends IN0 {}\n" +
"public class X {\n" +
" @NonNull IN1 n_1() { return new IN1() {}; } \n" +
" IN2 n_2() { return null; } \n" +
" <M> void m(@NonNull Supplier<@NonNull M> m2) { } \n" +
" void testSw(int i) { \n" +
" m(switch(i) { \n" +
" case 2 -> () -> n_; \n" +
" }\n" +
"}\n" +
"interface Supplier<T> {\n" +
" T get();\n" +
"}");
CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
requestor.allowAllRequiredProposals();
String str = this.workingCopies[0].getSource();
String completeBehind = "-> n_";
int cursorLocation = str.indexOf(completeBehind) + completeBehind.length();
this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
assertResults(
"n_1[METHOD_REF]{n_1(), LX;, ()LIN1;, n_1, null, 52}\n" +
"n_2[METHOD_REF]{n_2(), LX;, ()LIN2;, n_2, null, 52}",
requestor.getResults());
}
public void test018c() throws JavaModelException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy(
"/Completion/src/X.java",
"import org.eclipse.jdt.annotation.*;\n" +
"interface IN0 {} \n" +
"interface IN1 extends IN0 {} \n" +
"interface IN2 extends IN0 {}\n" +
"public class X {\n" +
" @NonNull IN1 n_1() { return new IN1() {}; } \n" +
" IN2 n_2() { return null; } \n" +
" <M> void m(@NonNull Supplier<@NonNull M> m2) { } \n" +
" void testSw(int i) { \n" +
" m(switch(i) { \n" +
" default -> this::n_; }); \n" +
" }\n" +
"}\n" +
"interface Supplier<T> {\n" +
" T get();\n" +
"}");
CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
requestor.allowAllRequiredProposals();
String str = this.workingCopies[0].getSource();
String completeBehind = "this::n_";
int cursorLocation = str.indexOf(completeBehind) + completeBehind.length();
this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
assertResults(
"n_1[METHOD_NAME_REFERENCE]{n_1, LX;, ()LIN1;, n_1, null, 60}\n" +
"n_2[METHOD_NAME_REFERENCE]{n_2, LX;, ()LIN2;, n_2, null, 60}",
requestor.getResults());
}
public void test018d() throws JavaModelException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy(
"/Completion/src/X.java",
"import org.eclipse.jdt.annotation.*;\n" +
"interface IN0 {} \n" +
"interface IN1 extends IN0 {} \n" +
"interface IN2 extends IN0 {}\n" +
"public class X {\n" +
" @NonNull IN1 n_1() { return new IN1() {}; } \n" +
" IN2 n_2() { return null; } \n" +
" <M> void m(@NonNull Supplier<@NonNull M> m2) { } \n" +
" void testSw(int i) { \n" +
" m(switch(i) { \n" +
" default -> () -> n_; }); \n" +
" }\n" +
"}\n" +
"interface Supplier<T> {\n" +
" T get();\n" +
"}");
CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
requestor.allowAllRequiredProposals();
String str = this.workingCopies[0].getSource();
String completeBehind = "() -> n_";
int cursorLocation = str.indexOf(completeBehind) + completeBehind.length();
this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
assertResults(
"n_1[METHOD_REF]{n_1(), LX;, ()LIN1;, n_1, null, 52}\n" +
"n_2[METHOD_REF]{n_2(), LX;, ()LIN2;, n_2, null, 52}",
requestor.getResults());
}
public void test018e() throws JavaModelException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy(
"/Completion/src/X.java",
"import org.eclipse.jdt.annotation.*;\n" +
"interface IN0 {} \n" +
"interface IN1 extends IN0 {} \n" +
"interface IN2 extends IN0 {}\n" +
"public class X {\n" +
" @NonNull IN1 n_1() { return new IN1() {}; } \n" +
" IN2 n_2() { return null; } \n" +
" <M> void m(@NonNull Supplier<@NonNull M> m2) { } \n" +
" void testSw(int i) { \n" +
" m(switch(i) { \n" +
" case 1 -> this::n_1; \n" +
" case 2 -> () -> n_; \n" +
" }\n" +
"}\n" +
"interface Supplier<T> {\n" +
" T get();\n" +
"}");
CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
requestor.allowAllRequiredProposals();
String str = this.workingCopies[0].getSource();
String completeBehind = "() -> n_";
int cursorLocation = str.indexOf(completeBehind) + completeBehind.length();
this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
assertResults(
"n_1[LOCAL_VARIABLE_REF]{n_1, null, Ljava.lang.Object;, n_1, null, 51}\n" +
"n_1[METHOD_REF]{n_1(), LX;, ()LIN1;, n_1, null, 52}\n" +
"n_2[METHOD_REF]{n_2(), LX;, ()LIN2;, n_2, null, 52}",
requestor.getResults());
}
public void test018f() throws JavaModelException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy(
"/Completion/src/X.java",
"import org.eclipse.jdt.annotation.*;\n" +
"interface IN0 {} \n" +
"interface IN1 extends IN0 {} \n" +
"interface IN2 extends IN0 {}\n" +
"public class X {\n" +
" @NonNull IN1 n_1() { return new IN1() {}; } \n" +
" IN2 n_2() { return null; } \n" +
" <M> void m(@NonNull Supplier<@NonNull M> m2) { } \n" +
" void testSw(int i) { \n" +
" m(switch(i) { \n" +
" case 1 -> () -> n_1; \n" +
" case 2 -> this::n_; \n" +
" }\n" +
"}\n" +
"interface Supplier<T> {\n" +
" T get();\n" +
"}");
CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
requestor.allowAllRequiredProposals();
String str = this.workingCopies[0].getSource();
String completeBehind = "this::n_";
int cursorLocation = str.indexOf(completeBehind) + completeBehind.length();
this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
assertResults(
"n_1[METHOD_NAME_REFERENCE]{n_1, LX;, ()LIN1;, n_1, null, 60}\n" +
"n_2[METHOD_NAME_REFERENCE]{n_2, LX;, ()LIN2;, n_2, null, 60}",
requestor.getResults());
}
public void test019() throws JavaModelException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy(
"/Completion/src/X.java",
"import org.eclipse.jdt.annotation.*;\n" +
" <M> void m(@NonNull Supplier<@NonNull M> m2) { } \n" +
"public class X {\n" +
" void testSw(int i) { \n" +
" m(swi);\n" +
"}\n" +
"interface Supplier<T> {\n" +
" T get();\n" +
"}");
CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
requestor.allowAllRequiredProposals();
String str = this.workingCopies[0].getSource();
String completeBehind = "swi";
int cursorLocation = str.indexOf(completeBehind) + completeBehind.length();
this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
assertResults(
"switch[KEYWORD]{switch, null, null, switch, null, 49}",
requestor.getResults());
}
public void test020() throws JavaModelException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy(
"/Completion/src/X.java",
"public class X {\n" +
" static final String MONDAY = \"MONDAY\";\n" +
" static final String TUESDAY = \"TUESDAY\";\n" +
" static final String WEDNESDAY = \"WEDNESDAY\";\n" +
" static final String THURSDAY = \"THURSDAY\";\n" +
" static final String FRIDAY = \"FRIDAY\";\n" +
" static final String SATURDAY = \"SATURDAY\";\n" +
" static final String SUNDAY = \"SUNDAY\"; \n" +
" @SuppressWarnings(\"preview\")\n" +
" public static void main(String[] args) {\n" +
" String day = \"MONDAY\";\n" +
" switch (day) {\n" +
" case MONDAY, FRIDAY, SUNDAY -> System.out.println(6);\n" +
" case TUESDAY -> System.out.println(7);\n" +
" case THURSDAY, SATURDAY -> System.out.println(8);\n" +
" case WEDNESDAY -> System.out.println(9);\n" +
" }\n" +
" int k = switch (day) {\n" +
" case MONDAY -> throw new NullPointerException();\n" +
" case TUESDAY -> 1;\n" +
" case WEDNESDAY -> {break 10;}\n" +
" default -> {\n" +
" int g = day.h();\n" +
" int result = f(g);\n" +
" break result;\n" +
" }};\n" +
" }\n" +
" static int f(int k) {\n" +
" return k*k;\n" +
" }\n" +
"}");
CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
requestor.allowAllRequiredProposals();
String str = this.workingCopies[0].getSource();
String completeBehind = "day.h";
int cursorLocation = str.indexOf(completeBehind) + completeBehind.length();
this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
assertResults(
"hashCode[METHOD_REF]{hashCode, Ljava.lang.Object;, ()I, hashCode, null, 90}",
requestor.getResults());
}
public void test021() throws JavaModelException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy(
"/Completion/src/X.java",
"public class X {\n" +
" static final String MONDAY = \"MONDAY\";\n" +
" static final String TUESDAY = \"TUESDAY\";\n" +
" static final String WEDNESDAY = \"WEDNESDAY\";\n" +
" static final String THURSDAY = \"THURSDAY\";\n" +
" static final String FRIDAY = \"FRIDAY\";\n" +
" static final String SATURDAY = \"SATURDAY\";\n" +
" static final String SUNDAY = \"SUNDAY\"; \n" +
" @SuppressWarnings(\"preview\")\n" +
" public static void main(String[] args) {\n" +
" String day = \"MONDAY\";\n" +
" int k = switch (day) {\n" +
" case MONDAY -> throw new NullPointerException();\n" +
" case TUESDAY -> 1;\n" +
" case WEDNESDAY -> {break 10;}\n" +
" default -> {\n" +
" int g = day.h();\n" +
" int result = f(g);\n" +
" break result;\n" +
" }};\n" +
" }\n" +
" static int f(int k) {\n" +
" return k*k;\n" +
" }\n" +
"}");
CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
requestor.allowAllRequiredProposals();
String str = this.workingCopies[0].getSource();
String completeBehind = "day.h";
int cursorLocation = str.indexOf(completeBehind) + completeBehind.length();
this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
assertResults(
"hashCode[METHOD_REF]{hashCode, Ljava.lang.Object;, ()I, hashCode, null, 90}",
requestor.getResults());
}
}