mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 06:05:01 +07:00
a test that lambdas in constructor calls are found
This commit is contained in:
+35
-13
@@ -50,9 +50,7 @@ public class FindFunctionalInterfaceTest extends LightCodeInsightFixtureTestCase
|
||||
myFixture.addClass("public class A {" +
|
||||
" public I r;" +
|
||||
"}");
|
||||
for (int i = 0; i < JavaFunctionalExpressionSearcher.SMART_SEARCH_THRESHOLD + 1; i++) {
|
||||
myFixture.addClass("class B" + i + " { {Runnable r = () -> {};}}"); //ensure common case is used
|
||||
}
|
||||
addManyLambdas();
|
||||
|
||||
doTestOneExpression();
|
||||
}
|
||||
@@ -63,19 +61,14 @@ public class FindFunctionalInterfaceTest extends LightCodeInsightFixtureTestCase
|
||||
" <T> void foo(T... r) {}\n" +
|
||||
" void bar(J i){foo(i, i, () -> {});}\n" +
|
||||
"}");
|
||||
for (int i = 0; i < JavaFunctionalExpressionSearcher.SMART_SEARCH_THRESHOLD + 1; i++) {
|
||||
myFixture.addClass("class B" + i + " { {Runnable r = () -> {};}}"); //ensure common case is used
|
||||
}
|
||||
addManyLambdas();
|
||||
|
||||
doTestOneExpression();
|
||||
}
|
||||
|
||||
private void doTestOneExpression() {
|
||||
myFixture.configureByFile(getTestName(false) + ".java");
|
||||
final PsiElement elementAtCaret = myFixture.getElementAtCaret();
|
||||
assertNotNull(elementAtCaret);
|
||||
final PsiClass psiClass = PsiTreeUtil.getParentOfType(elementAtCaret, PsiClass.class, false);
|
||||
assertTrue(psiClass != null && psiClass.isInterface());
|
||||
final PsiClass psiClass = findClassAtCaret();
|
||||
final Collection<PsiFunctionalExpression> expressions = FunctionalExpressionSearch.search(psiClass).findAll();
|
||||
int size = expressions.size();
|
||||
assertEquals(1, size);
|
||||
@@ -84,6 +77,15 @@ public class FindFunctionalInterfaceTest extends LightCodeInsightFixtureTestCase
|
||||
assertEquals("() -> {}", next.getText());
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private PsiClass findClassAtCaret() {
|
||||
final PsiElement elementAtCaret = myFixture.getElementAtCaret();
|
||||
assertNotNull(elementAtCaret);
|
||||
final PsiClass psiClass = PsiTreeUtil.getParentOfType(elementAtCaret, PsiClass.class, false);
|
||||
assertTrue(psiClass != null && psiClass.isInterface());
|
||||
return psiClass;
|
||||
}
|
||||
|
||||
public void testFieldFromAnonymousClassScope() throws Exception {
|
||||
myFixture.configureByFile(getTestName(false) + ".java");
|
||||
final PsiElement elementAtCaret = myFixture.getElementAtCaret();
|
||||
@@ -108,9 +110,7 @@ public class FindFunctionalInterfaceTest extends LightCodeInsightFixtureTestCase
|
||||
public void doTestIndexSearch(String expected) {
|
||||
myFixture.configureByFile(getTestName(false) + ".java");
|
||||
|
||||
for (int i = 0; i < JavaFunctionalExpressionSearcher.SMART_SEARCH_THRESHOLD + 5; i++) {
|
||||
myFixture.addFileToProject("a" + i + ".java", "class Goo {{ Runnable r = () -> {} }}");
|
||||
}
|
||||
addManyLambdas();
|
||||
|
||||
PsiClass predicate = JavaPsiFacade.getInstance(getProject()).findClass(Predicate.class.getName(), GlobalSearchScope.allScope(getProject()));
|
||||
assert predicate != null;
|
||||
@@ -118,6 +118,28 @@ public class FindFunctionalInterfaceTest extends LightCodeInsightFixtureTestCase
|
||||
assertEquals(expected, next.getText());
|
||||
}
|
||||
|
||||
public void testConstructorReferences() {
|
||||
myFixture.configureByFile(getTestName(false) + ".java");
|
||||
|
||||
myFixture.addClass("class Bar extends Foo {\n" +
|
||||
" public Bar() { super(() -> 1); }\n" +
|
||||
"\n" +
|
||||
" {\n" +
|
||||
" new Foo(() -> 2) { };\n" +
|
||||
" new Foo(() -> 3);\n" +
|
||||
" }\n" +
|
||||
"}");
|
||||
addManyLambdas();
|
||||
|
||||
assertSize(4, FunctionalExpressionSearch.search(findClassAtCaret()).findAll());
|
||||
}
|
||||
|
||||
private void addManyLambdas() {
|
||||
for (int i = 0; i < JavaFunctionalExpressionSearcher.SMART_SEARCH_THRESHOLD + 5; i++) {
|
||||
myFixture.addFileToProject("a" + i + ".java", "class Goo {{ Runnable r = () -> {} }}");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getBasePath() {
|
||||
return JavaTestUtil.getRelativeJavaTestDataPath() + "/codeInsight/daemonCodeAnalyzer/lambda/findUsages/";
|
||||
|
||||
Reference in New Issue
Block a user