Lines 37-42
Link Here
|
37 |
import org.eclipse.jdt.internal.core.JavaModelManager; |
37 |
import org.eclipse.jdt.internal.core.JavaModelManager; |
38 |
import org.eclipse.jdt.internal.core.search.indexing.IndexManager; |
38 |
import org.eclipse.jdt.internal.core.search.indexing.IndexManager; |
39 |
import org.eclipse.jdt.internal.core.search.matching.AndPattern; |
39 |
import org.eclipse.jdt.internal.core.search.matching.AndPattern; |
|
|
40 |
import org.eclipse.jdt.internal.core.search.matching.MethodPattern; |
40 |
|
41 |
|
41 |
/** |
42 |
/** |
42 |
* Non-regression tests for bugs fixed in Java Search engine. |
43 |
* Non-regression tests for bugs fixed in Java Search engine. |
Lines 160-165
Link Here
|
160 |
suite.addTest(new JavaSearchBugs8Tests("test430159b")); |
161 |
suite.addTest(new JavaSearchBugs8Tests("test430159b")); |
161 |
suite.addTest(new JavaSearchBugs8Tests("test430159c")); |
162 |
suite.addTest(new JavaSearchBugs8Tests("test430159c")); |
162 |
suite.addTest(new JavaSearchBugs8Tests("test430159d")); |
163 |
suite.addTest(new JavaSearchBugs8Tests("test430159d")); |
|
|
164 |
suite.addTest(new JavaSearchBugs8Tests("testBug429012_001")); |
165 |
suite.addTest(new JavaSearchBugs8Tests("testBug429012_002")); |
166 |
suite.addTest(new JavaSearchBugs8Tests("testBug429012_003")); |
167 |
suite.addTest(new JavaSearchBugs8Tests("testBug429012_004")); |
163 |
return suite; |
168 |
return suite; |
164 |
} |
169 |
} |
165 |
class TestCollector extends JavaSearchResultCollector { |
170 |
class TestCollector extends JavaSearchResultCollector { |
Lines 3770-3775
Link Here
|
3770 |
assertSearchResults("" |
3775 |
assertSearchResults("" |
3771 |
); |
3776 |
); |
3772 |
} |
3777 |
} |
|
|
3778 |
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=429012, [1.8][search] Add finegrain (limitTo) option for method reference expressions |
3779 |
public void testBug429012_001() throws CoreException { |
3780 |
this.workingCopies = new ICompilationUnit[1]; |
3781 |
this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b429498/X.java", |
3782 |
"interface I {\n" + |
3783 |
" public void doit();\n" + |
3784 |
"}\n" + |
3785 |
"public class X {\n" + |
3786 |
" static void foo() {}\n" + |
3787 |
" static void foo(int i) {}\n" + |
3788 |
" I i = X :: foo;\n" + |
3789 |
"}\n" |
3790 |
); |
3791 |
String str = this.workingCopies[0].getSource(); |
3792 |
String selection = "foo"; |
3793 |
int start = str.indexOf(selection); |
3794 |
int length = selection.length(); |
3795 |
|
3796 |
IJavaElement[] elements = this.workingCopies[0].codeSelect(start, length); |
3797 |
MethodPattern pattern = (MethodPattern) SearchPattern.createPattern(elements[0], JAVA8_METHOD_REFERENCE, ERASURE_RULE); |
3798 |
|
3799 |
new SearchEngine(this.workingCopies).search(pattern, |
3800 |
new SearchParticipant[] {SearchEngine.getDefaultSearchParticipant()}, |
3801 |
getJavaSearchWorkingCopiesScope(), |
3802 |
this.resultCollector, |
3803 |
null); |
3804 |
assertSearchResults( |
3805 |
"src/b429498/X.java b429498.X.i [X :: foo] EXACT_MATCH" |
3806 |
); |
3807 |
} |
3808 |
//https://bugs.eclipse.org/bugs/show_bug.cgi?id=429012, [1.8][search] Add finegrain (limitTo) option for method reference expressions |
3809 |
public void testBug429012_002() throws CoreException { |
3810 |
this.workingCopies = new ICompilationUnit[1]; |
3811 |
this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/test/Test.java", |
3812 |
"interface I { \n" + |
3813 |
" int thrice(int p);\n" + |
3814 |
"}\n" + |
3815 |
"class Y {\n" + |
3816 |
" int goo(int x) { return 3 * x; } \n" + |
3817 |
"}\n" + |
3818 |
"public class X extends Y {\n" + |
3819 |
" public void main(String[] args) { \n" + |
3820 |
" I i = this::goo;\n" + |
3821 |
" i = super::goo;\n" + |
3822 |
" }\n" + |
3823 |
"}\n" |
3824 |
); |
3825 |
|
3826 |
search(this.workingCopies[0].getType("Y").getMethod("goo", new String[] { "I" }), JAVA8_METHOD_REFERENCE); |
3827 |
assertSearchResults( |
3828 |
"src/test/Test.java void test.X.main(String[]) [this::goo] EXACT_MATCH\n" + |
3829 |
"src/test/Test.java void test.X.main(String[]) [super::goo] EXACT_MATCH" |
3830 |
); |
3831 |
} |
3832 |
//https://bugs.eclipse.org/bugs/show_bug.cgi?id=429012, [1.8][search] Add finegrain (limitTo) option for method reference expressions |
3833 |
public void testBug429012_003() throws CoreException { |
3834 |
this.workingCopies = new ICompilationUnit[1]; |
3835 |
this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/test/Test.java", |
3836 |
"interface I { \n" + |
3837 |
" int thrice(int p);\n" + |
3838 |
"}\n" + |
3839 |
"class Y {\n" + |
3840 |
" int goo(int x) { return 3 * x; } \n" + |
3841 |
"}\n" + |
3842 |
"public class X extends Y {\n" + |
3843 |
" public void main(String[] args) { \n" + |
3844 |
" I i = this::goo;\n" + |
3845 |
" i = super::goo;\n" + |
3846 |
" }\n" + |
3847 |
"}\n" |
3848 |
); |
3849 |
|
3850 |
search(this.workingCopies[0].getType("Y").getMethod("goo", new String[] { "I" }), THIS_REFERENCE | JAVA8_METHOD_REFERENCE); |
3851 |
assertSearchResults( |
3852 |
"src/test/Test.java void test.X.main(String[]) [this::goo] EXACT_MATCH\n" + |
3853 |
"src/test/Test.java void test.X.main(String[]) [super::goo] EXACT_MATCH" |
3854 |
); |
3855 |
} |
3856 |
//https://bugs.eclipse.org/bugs/show_bug.cgi?id=429012, [1.8][search] Add finegrain (limitTo) option for method reference expressions |
3857 |
public void testBug429012_004() throws CoreException { |
3858 |
this.workingCopies = new ICompilationUnit[1]; |
3859 |
this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/test/Test.java", |
3860 |
"interface I { \n" + |
3861 |
" int thrice(int p);\n" + |
3862 |
"}\n" + |
3863 |
"class Y {\n" + |
3864 |
" static class Z {\n" + |
3865 |
" static int goo(int x) { return 3 * x; } \n" + |
3866 |
" I i = Z::goo;\n" + |
3867 |
" }\n" + |
3868 |
"}\n" + |
3869 |
"public class X extends Y.Z {\n" + |
3870 |
" public void main(String[] args) { \n" + |
3871 |
" I i = Y.Z::goo;\n" + |
3872 |
" }\n" + |
3873 |
"}\n" |
3874 |
); |
3875 |
|
3876 |
search(this.workingCopies[0].getType("Y").getType("Z").getMethod("goo", new String[] { "I" }), JAVA8_METHOD_REFERENCE); |
3877 |
assertSearchResults( |
3878 |
"src/test/Test.java test.Y$Z.i [Z::goo] EXACT_MATCH\n" + |
3879 |
"src/test/Test.java void test.X.main(String[]) [Y.Z::goo] EXACT_MATCH" |
3880 |
); |
3881 |
} |
3773 |
// Add new tests in JavaSearchBugs8Tests |
3882 |
// Add new tests in JavaSearchBugs8Tests |
3774 |
} |
3883 |
} |
3775 |
|
3884 |
|