blob: 820b24754c2e09e6bb639e890e053745aa1abab3 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2009 IBM Corporation 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
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.jdt.core.tests.model;
import junit.framework.Test;
import org.eclipse.core.runtime.*;
import org.eclipse.jdt.core.*;
import org.eclipse.jdt.core.search.*;
/**
* Test for generic methods search using R_ERASURE_MATCH rule.
*/
public class JavaSearchGenericMethodTests extends AbstractJavaSearchGenericTests {
public JavaSearchGenericMethodTests(String name) {
super(name, ERASURE_RULE);
}
// defined for sub-classes
JavaSearchGenericMethodTests(String name, int matchRule) {
super(name, matchRule);
}
public static Test suite() {
return buildModelTestSuite(JavaSearchGenericMethodTests.class);
}
// Use this static initializer to specify subset for tests
// All specified tests which do not belong to the class are skipped...
static {
// TESTS_PREFIX = "testMethodReferencesElementPatternSingleParamArguments";
// TESTS_NAMES = new String[] { "testMethodReferencesElementPatternMultipleParamArguments04" };
// TESTS_NUMBERS = new int[] { 8 };
// TESTS_RANGE = new int[] { -1, -1 };
}
/*
* Remove last type arguments from a line of an expected result.
* This line contains one search match print out.
*/
long removeFirstTypeArgument(char[] line) {
int idx=0;
int length = line.length;
while (line[idx++] != '[') {
if (idx == length) return -1;
}
if (line[idx++] != '<') return -1;
int start = idx;
int n = 1;
while(idx < length && n!= 0) {
switch (line[idx++]) {
case '<': n++; break;
case '>': n--; break;
}
}
if (n!= 0) {
// something wrong here...
return -1;
}
return ((long)start<<32) + idx;
}
void addResultLine(StringBuffer buffer, char[] line) {
long positions = removeFirstTypeArgument(line);
if (buffer.length() > 0) buffer.append('\n');
if (positions != -1) {
int stop = (int) (positions >>> 32) - 1;
int restart = (int) positions;
buffer.append(line, 0, stop);
buffer.append(line, restart, line.length-restart);
} else {
buffer.append(line);
}
}
/**
* Bug 75642: [1.5][search] Methods and constructor search does not work with generics
* @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=75642"
*/
/*
* REFERENCES
*/
// Search references to methods defined in a single type parameter class
public void testMethodReferencesElementPatternSingleTypeParameter01() throws CoreException {
IType type = getCompilationUnit("JavaSearch15/src/g5/m/def/Single.java").getType("Single");
// search reference to a standard method
IMethod method = type.getMethod("standard", new String[] { "QT;" });
IJavaSearchScope scope = getJavaSearchScope15();
search(method, REFERENCES, scope, this.resultCollector);
assertSearchResults(
"src/g5/m/ref/RefRaw.java void g5.m.ref.RefRaw.testSingle() [standard(new Exception())] ERASURE_RAW_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testObject() [standard(new Object())] ERASURE_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testException() [standard(new Exception())] ERASURE_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testRuntimeException() [standard(new RuntimeException())] ERASURE_MATCH"
);
}
public void testMethodReferencesElementPatternSingleTypeParameter02() throws CoreException {
IType type = getCompilationUnit("JavaSearch15/src/g5/m/def/Single.java").getType("Single");
// search reference to a generic method
IMethod method = type.getMethod("generic", new String[] { "QU;" });
IJavaSearchScope scope = getJavaSearchScope15();
search(method, REFERENCES, scope, this.resultCollector);
assertSearchResults(
"src/g5/m/ref/RefRaw.java void g5.m.ref.RefRaw.testSingle() [generic(new Exception())] ERASURE_RAW_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testObject() [generic(new Object())] ERASURE_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testException() [generic(new Exception())] ERASURE_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testRuntimeException() [generic(new RuntimeException())] ERASURE_MATCH"
);
}
public void testMethodReferencesElementPatternSingleTypeParameter03() throws CoreException {
IType type = getCompilationUnit("JavaSearch15/src/g5/m/def/Single.java").getType("Single");
// search reference to a method returning a parameterized type
IMethod method = type.getMethod("returnParamType", new String[] {});
IJavaSearchScope scope = getJavaSearchScope15();
search(method, REFERENCES, scope, this.resultCollector);
assertSearchResults(
"src/g5/m/def/Single.java Single<T> g5.m.def.Single.complete(U, Single<T>) [returnParamType()] EXACT_MATCH\n" +
"src/g5/m/ref/RefRaw.java void g5.m.ref.RefRaw.testSingle() [returnParamType()] ERASURE_RAW_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testObject() [returnParamType()] ERASURE_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testException() [returnParamType()] ERASURE_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testRuntimeException() [returnParamType()] ERASURE_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testUnbound() [returnParamType()] ERASURE_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testExtends() [returnParamType()] ERASURE_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testSuper() [returnParamType()] ERASURE_MATCH"
);
}
public void testMethodReferencesElementPatternSingleTypeParameter04() throws CoreException {
IType type = getCompilationUnit("JavaSearch15/src/g5/m/def/Single.java").getType("Single");
// search reference to a method with parameterized type arguments
IMethod method = type.getMethod("paramTypesArgs", new String[] { "QSingle<QT;>;" });
IJavaSearchScope scope = getJavaSearchScope15();
search(method, REFERENCES, scope, this.resultCollector);
assertSearchResults(
"src/g5/m/ref/RefRaw.java void g5.m.ref.RefRaw.testSingle() [paramTypesArgs(gs)] ERASURE_RAW_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testObject() [paramTypesArgs(gs)] ERASURE_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testException() [paramTypesArgs(gs)] ERASURE_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testRuntimeException() [paramTypesArgs(gs)] ERASURE_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testUnbound() [paramTypesArgs(gs)] POTENTIAL_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testExtends() [paramTypesArgs(gs)] POTENTIAL_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testSuper() [paramTypesArgs(gs)] POTENTIAL_MATCH"
);
}
public void testMethodReferencesElementPatternSingleTypeParameter05() throws CoreException {
IType type = getCompilationUnit("JavaSearch15/src/g5/m/def/Single.java").getType("Single");
// search reference to a generic method returning a param type with param type parameters (=complete)
IMethod method = type.getMethod("complete", new String[] { "QU;", "QSingle<QT;>;" });
IJavaSearchScope scope = getJavaSearchScope15();
search(method, REFERENCES, scope, this.resultCollector);
assertSearchResults(
"src/g5/m/ref/RefRaw.java void g5.m.ref.RefRaw.testSingle() [complete(new Exception(), gs)] ERASURE_RAW_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testObject() [complete(new Object(), gs)] ERASURE_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testException() [complete(new Exception(), gs)] ERASURE_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testRuntimeException() [complete(new RuntimeException(), gs)] ERASURE_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testUnbound() [complete(new String(), gs)] POTENTIAL_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testExtends() [complete(new Throwable(), gs)] POTENTIAL_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testSuper() [complete(new RuntimeException(), gs)] POTENTIAL_MATCH"
);
}
// Search references to methods defined in a multiple type parameters class
public void testMethodReferencesElementPatternMultipleTypeParameter01() throws CoreException {
IType type = getCompilationUnit("JavaSearch15/src/g5/m/def/Multiple.java").getType("Multiple");
IMethod method = type.getMethod("standard", new String[] { "QT1;","QT2;","QT3;" });
IJavaSearchScope scope = getJavaSearchScope15();
search(method, REFERENCES, scope, this.resultCollector);
assertSearchResults(
"src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.test() [standard(new Object(), new Exception(), new RuntimeException())] ERASURE_MATCH\n" +
"src/g5/m/ref/RefRaw.java void g5.m.ref.RefRaw.testMultiple() [standard(new Object(), new Exception(), new RuntimeException())] ERASURE_RAW_MATCH"
);
}
public void testMethodReferencesElementPatternMultipleTypeParameter02() throws CoreException {
IType type = getCompilationUnit("JavaSearch15/src/g5/m/def/Multiple.java").getType("Multiple");
IMethod method = type.getMethod("generic", new String[] { "QU1;","QU2;","QU3;" });
IJavaSearchScope scope = getJavaSearchScope15();
search(method, REFERENCES, scope, this.resultCollector);
assertSearchResults(
"src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.test() [generic(new Object(), new Exception(), new RuntimeException())] ERASURE_MATCH\n" +
"src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testExtends() [generic(new Object(), new RuntimeException(), new RuntimeException())] ERASURE_MATCH\n" +
"src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testSuper() [generic(new Object(), new RuntimeException(), new IllegalMonitorStateException())] ERASURE_MATCH\n" +
"src/g5/m/ref/RefRaw.java void g5.m.ref.RefRaw.testMultiple() [generic(new Object(), new Exception(), new RuntimeException())] ERASURE_RAW_MATCH"
);
}
public void testMethodReferencesElementPatternMultipleTypeParameter03() throws CoreException {
IType type = getCompilationUnit("JavaSearch15/src/g5/m/def/Multiple.java").getType("Multiple");
IMethod method = type.getMethod("returnParamType", new String[] {});
IJavaSearchScope scope = getJavaSearchScope15();
search(method, REFERENCES, scope, this.resultCollector);
assertSearchResults(
"src/g5/m/def/Multiple.java Multiple<T1,T2,T3> g5.m.def.Multiple.complete(U1, U2, U3, Multiple<T1,T2,T3>) [returnParamType()] EXACT_MATCH\n" +
"src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.test() [returnParamType()] ERASURE_MATCH\n" +
"src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testUnbound() [returnParamType()] ERASURE_MATCH\n" +
"src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testExtends() [returnParamType()] ERASURE_MATCH\n" +
"src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testSuper() [returnParamType()] ERASURE_MATCH\n" +
"src/g5/m/ref/RefRaw.java void g5.m.ref.RefRaw.testMultiple() [returnParamType()] ERASURE_RAW_MATCH"
);
}
public void testMethodReferencesElementPatternMultipleTypeParameter04() throws CoreException {
IType type = getCompilationUnit("JavaSearch15/src/g5/m/def/Multiple.java").getType("Multiple");
IMethod method = type.getMethod("paramTypesArgs", new String[] { "QSingle<QT1;>;","QSingle<QT2;>;","QSingle<QT3;>;","QMultiple<QT1;QT2;QT3;>;" });
IJavaSearchScope scope = getJavaSearchScope15();
search(method, REFERENCES, scope, this.resultCollector);
assertSearchResults(
"src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.test() [paramTypesArgs(new Single<Object>(), new Single<Exception>(), new Single<RuntimeException>(), gm)] ERASURE_MATCH\n" +
"src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testUnbound() [paramTypesArgs(new Single<Object>(), new Single<Object>(), new Single<Object>(), gm)] POTENTIAL_MATCH\n" +
"src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testExtends() [paramTypesArgs(new Single<Object>(), new Single<Throwable>(), new Single<Exception>(), gm)] POTENTIAL_MATCH\n" +
"src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testSuper() [paramTypesArgs(new Single<Object>(), new Single<RuntimeException>(), new Single<RuntimeException>(), gm)] POTENTIAL_MATCH\n" +
"src/g5/m/ref/RefRaw.java void g5.m.ref.RefRaw.testMultiple() [paramTypesArgs(new Single<Object>(), new Single<Exception>(), new Single<RuntimeException>(), gm)] ERASURE_RAW_MATCH"
);
}
public void testMethodReferencesElementPatternMultipleTypeParameter05() throws CoreException {
IType type = getCompilationUnit("JavaSearch15/src/g5/m/def/Multiple.java").getType("Multiple");
IMethod method = type.getMethod("complete", new String[] { "QU1;","QU2;","QU3;", "QMultiple<QT1;QT2;QT3;>;" });
IJavaSearchScope scope = getJavaSearchScope15();
search(method, REFERENCES, scope, this.resultCollector);
assertSearchResults(
"src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.test() [complete(new Object(), new Exception(), new RuntimeException(), gm)] ERASURE_MATCH\n" +
"src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testExtends() [complete(new Object(), new RuntimeException(), new RuntimeException(), gm)] POTENTIAL_MATCH\n" +
"src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testSuper() [complete(new Object(), new RuntimeException(), new IllegalMonitorStateException(), gm)] POTENTIAL_MATCH\n" +
"src/g5/m/ref/RefRaw.java void g5.m.ref.RefRaw.testMultiple() [complete(new Object(), new Exception(), new RuntimeException(), gm)] ERASURE_RAW_MATCH"
);
}
// Search references to single parameterized methods
public void testMethodReferencesElementPatternSingleParamArguments01() throws CoreException {
ICompilationUnit unit = getCompilationUnit("JavaSearch15/src/g5/m/ref/RefSingle.java");
IMethod method = selectMethod(unit, "generic", 3);
IJavaSearchScope scope = getJavaSearchScope15();
search(method, REFERENCES, scope, this.resultCollector);
assertSearchResults(
"src/g5/m/ref/RefRaw.java void g5.m.ref.RefRaw.testSingle() [generic(new Exception())] EQUIVALENT_RAW_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testObject() [<Object>generic(new Object())] EXACT_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testException() [generic(new Exception())] ERASURE_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testRuntimeException() [generic(new RuntimeException())] ERASURE_MATCH"
);
}
public void testMethodReferencesElementPatternSingleParamArguments02() throws CoreException {
ICompilationUnit unit = getCompilationUnit("JavaSearch15/src/g5/m/ref/RefSingle.java");
IMethod method = selectMethod(unit, "generic", 6);
IJavaSearchScope scope = getJavaSearchScope15();
search(method, REFERENCES, scope, this.resultCollector);
assertSearchResults(
"src/g5/m/ref/RefRaw.java void g5.m.ref.RefRaw.testSingle() [generic(new Exception())] EQUIVALENT_RAW_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testObject() [generic(new Object())] ERASURE_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testException() [<Exception>generic(new Exception())] EXACT_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testRuntimeException() [generic(new RuntimeException())] ERASURE_MATCH"
);
}
public void testMethodReferencesElementPatternSingleParamArguments03() throws CoreException {
ICompilationUnit unit = getCompilationUnit("JavaSearch15/src/g5/m/ref/RefSingle.java");
IMethod method = selectMethod(unit, "complete");
IJavaSearchScope scope = getJavaSearchScope15();
search(method, REFERENCES, scope, this.resultCollector);
assertSearchResults(
"src/g5/m/ref/RefRaw.java void g5.m.ref.RefRaw.testSingle() [complete(new Exception(), gs)] EQUIVALENT_RAW_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testObject() [<Object>complete(new Object(), gs)] EXACT_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testException() [complete(new Exception(), gs)] ERASURE_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testRuntimeException() [complete(new RuntimeException(), gs)] ERASURE_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testUnbound() [complete(new String(), gs)] POTENTIAL_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testExtends() [complete(new Throwable(), gs)] POTENTIAL_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testSuper() [complete(new RuntimeException(), gs)] POTENTIAL_MATCH"
);
}
public void testMethodReferencesElementPatternSingleParamArguments04() throws CoreException {
ICompilationUnit unit = getCompilationUnit("JavaSearch15/src/g5/m/ref/RefSingle.java");
IMethod method = selectMethod(unit, "complete", 2);
IJavaSearchScope scope = getJavaSearchScope15();
search(method, REFERENCES, scope, this.resultCollector);
assertSearchResults(
"src/g5/m/ref/RefRaw.java void g5.m.ref.RefRaw.testSingle() [complete(new Exception(), gs)] EQUIVALENT_RAW_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testObject() [complete(new Object(), gs)] ERASURE_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testException() [<Exception>complete(new Exception(), gs)] EXACT_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testRuntimeException() [complete(new RuntimeException(), gs)] ERASURE_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testUnbound() [complete(new String(), gs)] POTENTIAL_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testExtends() [complete(new Throwable(), gs)] POTENTIAL_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testSuper() [complete(new RuntimeException(), gs)] POTENTIAL_MATCH"
);
}
public void testMethodReferencesElementPatternSingleParamArguments05() throws CoreException {
ICompilationUnit unit = getCompilationUnit("JavaSearch15/src/g5/m/ref/RefRaw.java");
IMethod method = selectMethod(unit, "generic", 2);
IJavaSearchScope scope = getJavaSearchScope15();
search(method, REFERENCES, scope, this.resultCollector);
assertSearchResults(
"src/g5/m/ref/RefRaw.java void g5.m.ref.RefRaw.testSingle() [generic(new Exception())] EXACT_RAW_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testObject() [generic(new Object())] EQUIVALENT_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testException() [generic(new Exception())] EQUIVALENT_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testRuntimeException() [generic(new RuntimeException())] EQUIVALENT_MATCH"
);
}
public void testMethodReferencesElementPatternSingleParamArguments06() throws CoreException {
ICompilationUnit unit = getCompilationUnit("JavaSearch15/src/g5/m/ref/RefRaw.java");
IMethod method = selectMethod(unit, "complete");
IJavaSearchScope scope = getJavaSearchScope15();
search(method, REFERENCES, scope, this.resultCollector);
assertSearchResults(
"src/g5/m/ref/RefRaw.java void g5.m.ref.RefRaw.testSingle() [complete(new Exception(), gs)] EXACT_RAW_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testObject() [complete(new Object(), gs)] EQUIVALENT_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testException() [complete(new Exception(), gs)] EQUIVALENT_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testRuntimeException() [complete(new RuntimeException(), gs)] EQUIVALENT_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testUnbound() [complete(new String(), gs)] POTENTIAL_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testExtends() [complete(new Throwable(), gs)] POTENTIAL_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testSuper() [complete(new RuntimeException(), gs)] POTENTIAL_MATCH"
);
}
// Search references to multiple parameterized methods
public void testMethodReferencesElementPatternMultipleParamArguments01() throws CoreException {
ICompilationUnit unit = getCompilationUnit("JavaSearch15/src/g5/m/ref/RefMultiple.java");
IMethod method = selectMethod(unit, "generic", 2);
IJavaSearchScope scope = getJavaSearchScope15();
search(method, REFERENCES, scope, this.resultCollector);
assertSearchResults(
"src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.test() [<Object, Exception, RuntimeException>generic(new Object(), new Exception(), new RuntimeException())] EXACT_MATCH\n" +
"src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testExtends() [generic(new Object(), new RuntimeException(), new RuntimeException())] ERASURE_MATCH\n" +
"src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testSuper() [generic(new Object(), new RuntimeException(), new IllegalMonitorStateException())] ERASURE_MATCH\n" +
"src/g5/m/ref/RefRaw.java void g5.m.ref.RefRaw.testMultiple() [generic(new Object(), new Exception(), new RuntimeException())] EQUIVALENT_RAW_MATCH"
);
}
public void testMethodReferencesElementPatternMultipleParamArguments02() throws CoreException {
ICompilationUnit unit = getCompilationUnit("JavaSearch15/src/g5/m/ref/RefMultiple.java");
IMethod method = selectMethod(unit, "generic", 6);
search(method, REFERENCES);
assertSearchResults(
"src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.test() [generic(new Object(), new Exception(), new RuntimeException())] ERASURE_MATCH\n" +
"src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testExtends() [<Object, RuntimeException, RuntimeException>generic(new Object(), new RuntimeException(), new RuntimeException())] EXACT_MATCH\n" +
"src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testSuper() [generic(new Object(), new RuntimeException(), new IllegalMonitorStateException())] ERASURE_MATCH\n" +
"src/g5/m/ref/RefRaw.java void g5.m.ref.RefRaw.testMultiple() [generic(new Object(), new Exception(), new RuntimeException())] EQUIVALENT_RAW_MATCH"
);
}
public void testMethodReferencesElementPatternMultipleParamArguments03() throws CoreException {
ICompilationUnit unit = getCompilationUnit("JavaSearch15/src/g5/m/ref/RefMultiple.java");
IMethod method = selectMethod(unit, "complete");
IJavaSearchScope scope = getJavaSearchScope15();
search(method, REFERENCES, scope, this.resultCollector);
assertSearchResults(
"src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.test() [<Object, Exception, RuntimeException>complete(new Object(), new Exception(), new RuntimeException(), gm)] EXACT_MATCH\n" +
"src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testExtends() [complete(new Object(), new RuntimeException(), new RuntimeException(), gm)] POTENTIAL_MATCH\n" +
"src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testSuper() [complete(new Object(), new RuntimeException(), new IllegalMonitorStateException(), gm)] POTENTIAL_MATCH\n" +
"src/g5/m/ref/RefRaw.java void g5.m.ref.RefRaw.testMultiple() [complete(new Object(), new Exception(), new RuntimeException(), gm)] EQUIVALENT_RAW_MATCH"
);
}
public void testMethodReferencesElementPatternMultipleParamArguments04() throws CoreException {
ICompilationUnit unit = getCompilationUnit("JavaSearch15/src/g5/m/ref/RefMultiple.java");
IMethod method = selectMethod(unit, "complete", 2);
IJavaSearchScope scope = getJavaSearchScope15();
search(method, REFERENCES, scope, this.resultCollector);
assertSearchResults(
"src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.test() [complete(new Object(), new Exception(), new RuntimeException(), gm)] ERASURE_MATCH\n" +
"src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testExtends() [<Object, RuntimeException, RuntimeException>complete(new Object(), new RuntimeException(), new RuntimeException(), gm)] POTENTIAL_MATCH\n" +
"src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testSuper() [complete(new Object(), new RuntimeException(), new IllegalMonitorStateException(), gm)] POTENTIAL_MATCH\n" +
"src/g5/m/ref/RefRaw.java void g5.m.ref.RefRaw.testMultiple() [complete(new Object(), new Exception(), new RuntimeException(), gm)] EQUIVALENT_RAW_MATCH"
);
}
public void testMethodReferencesElementPatternMultipleParamArguments05() throws CoreException {
ICompilationUnit unit = getCompilationUnit("JavaSearch15/src/g5/m/ref/RefRaw.java");
IMethod method = selectMethod(unit, "generic", 4);
IJavaSearchScope scope = getJavaSearchScope15();
search(method, REFERENCES, scope, this.resultCollector);
assertSearchResults(
"src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.test() [generic(new Object(), new Exception(), new RuntimeException())] EQUIVALENT_MATCH\n" +
"src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testExtends() [generic(new Object(), new RuntimeException(), new RuntimeException())] EQUIVALENT_MATCH\n" +
"src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testSuper() [generic(new Object(), new RuntimeException(), new IllegalMonitorStateException())] EQUIVALENT_MATCH\n" +
"src/g5/m/ref/RefRaw.java void g5.m.ref.RefRaw.testMultiple() [generic(new Object(), new Exception(), new RuntimeException())] EXACT_RAW_MATCH"
);
}
public void testMethodReferencesElementPatternMultipleParamArguments06() throws CoreException {
ICompilationUnit unit = getCompilationUnit("JavaSearch15/src/g5/m/ref/RefRaw.java");
IMethod method = selectMethod(unit, "complete", 2);
IJavaSearchScope scope = getJavaSearchScope15();
search(method, REFERENCES, scope, this.resultCollector);
assertSearchResults(
"src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.test() [complete(new Object(), new Exception(), new RuntimeException(), gm)] EQUIVALENT_MATCH\n" +
"src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testExtends() [complete(new Object(), new RuntimeException(), new RuntimeException(), gm)] POTENTIAL_MATCH\n" +
"src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testSuper() [complete(new Object(), new RuntimeException(), new IllegalMonitorStateException(), gm)] POTENTIAL_MATCH\n" +
"src/g5/m/ref/RefRaw.java void g5.m.ref.RefRaw.testMultiple() [complete(new Object(), new Exception(), new RuntimeException(), gm)] EXACT_RAW_MATCH"
);
}
// Search string pattern references to single parameterized methods
public void testMethodReferencesStringPatternSingleParamArguments01() throws CoreException {
search("<Exception>generic", METHOD, REFERENCES);
assertSearchResults(
"src/g5/m/ref/RefRaw.java void g5.m.ref.RefRaw.testSingle() [generic(new Exception())] EQUIVALENT_RAW_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testObject() [generic(new Object())] ERASURE_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testException() [<Exception>generic(new Exception())] EXACT_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testRuntimeException() [generic(new RuntimeException())] ERASURE_MATCH"
);
}
public void testMethodReferencesStringPatternSingleParamArguments02() throws CoreException {
IJavaSearchScope scope = getJavaSearchScope15();
search("<? extends Exception> complete ", METHOD, REFERENCES, scope, this.resultCollector);
assertSearchResults(
"src/g5/m/ref/RefRaw.java void g5.m.ref.RefRaw.testSingle() [complete(new Exception(), gs)] EQUIVALENT_RAW_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testObject() [complete(new Object(), gs)] ERASURE_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testException() [<Exception>complete(new Exception(), gs)] EQUIVALENT_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testRuntimeException() [<RuntimeException>complete(new RuntimeException(), gs)] EQUIVALENT_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testUnbound() [complete(new String(), gs)] POTENTIAL_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testExtends() [complete(new Throwable(), gs)] POTENTIAL_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testSuper() [<RuntimeException>complete(new RuntimeException(), gs)] POTENTIAL_MATCH"
);
}
public void testMethodReferencesStringPatternSingleParamArguments03() throws CoreException {
IJavaSearchScope scope = getJavaSearchScope15();
search("<? super Exception>*e?e*", METHOD, REFERENCES, scope, this.resultCollector);
assertSearchResults(
"src/g5/m/ref/RefRaw.java void g5.m.ref.RefRaw.testSingle() [generic(new Exception())] EQUIVALENT_RAW_MATCH\n" +
"src/g5/m/ref/RefRaw.java void g5.m.ref.RefRaw.testSingle() [complete(new Exception(), gs)] EQUIVALENT_RAW_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testObject() [<Object>generic(new Object())] EQUIVALENT_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testObject() [<Object>complete(new Object(), gs)] EQUIVALENT_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testException() [<Exception>generic(new Exception())] EQUIVALENT_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testException() [<Exception>complete(new Exception(), gs)] EQUIVALENT_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testRuntimeException() [generic(new RuntimeException())] ERASURE_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testRuntimeException() [complete(new RuntimeException(), gs)] ERASURE_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testUnbound() [complete(new String(), gs)] POTENTIAL_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testExtends() [<Throwable>complete(new Throwable(), gs)] POTENTIAL_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testSuper() [complete(new RuntimeException(), gs)] POTENTIAL_MATCH"
);
}
public void testMethodReferencesStringPatternSingleParamArguments04() throws CoreException {
IJavaSearchScope scope = getJavaSearchScope15("g5.m.ref", false);
search("generic", METHOD, REFERENCES, scope, this.resultCollector);
assertSearchResults(
"src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.test() [generic(new Object(), new Exception(), new RuntimeException())] EXACT_MATCH\n" +
"src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testExtends() [generic(new Object(), new RuntimeException(), new RuntimeException())] EXACT_MATCH\n" +
"src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testSuper() [generic(new Object(), new RuntimeException(), new IllegalMonitorStateException())] EXACT_MATCH\n" +
"src/g5/m/ref/RefRaw.java void g5.m.ref.RefRaw.testSingle() [generic(new Exception())] EXACT_MATCH\n" +
"src/g5/m/ref/RefRaw.java void g5.m.ref.RefRaw.testMultiple() [generic(new Object(), new Exception(), new RuntimeException())] EXACT_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testObject() [generic(new Object())] EXACT_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testException() [generic(new Exception())] EXACT_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testRuntimeException() [generic(new RuntimeException())] EXACT_MATCH"
);
}
public void testMethodReferencesStringPatternSingleParamArguments05() throws CoreException {
IJavaSearchScope scope = getJavaSearchScope15();
search("generic(Object)", METHOD, REFERENCES, scope, this.resultCollector);
assertSearchResults(
/* Results while resolving string pattern with no qualification (currently disabled as it is not comaptible with previous results):
"src/g5/m/ref/RefRaw.java void g5.m.ref.RefRaw.testSingle() [generic(new Exception())] EQUIVALENT_RAW_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testObject() [generic(new Object())] EQUIVALENT_RAW_MATCH"
*/
"src/g5/m/ref/RefRaw.java void g5.m.ref.RefRaw.testSingle() [generic(new Exception())] EXACT_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testObject() [generic(new Object())] EXACT_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testException() [generic(new Exception())] EXACT_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testRuntimeException() [generic(new RuntimeException())] EXACT_MATCH"
);
}
public void testMethodReferencesStringPatternSingleParamArguments06() throws CoreException {
IJavaSearchScope scope = getJavaSearchScope15();
search("complete(Exception, Single<Exception>)", METHOD, REFERENCES, scope, this.resultCollector);
assertSearchResults(
/* Results while resolving string pattern with no qualification (currently disabled as it is not comaptible with previous results):
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testException() [complete(new Exception(), gs)] EQUIVALENT_RAW_MATCH"
*/
"src/g5/m/ref/RefRaw.java void g5.m.ref.RefRaw.testSingle() [complete(new Exception(), gs)] EXACT_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testObject() [complete(new Object(), gs)] EXACT_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testException() [complete(new Exception(), gs)] EXACT_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testRuntimeException() [complete(new RuntimeException(), gs)] EXACT_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testUnbound() [complete(new String(), gs)] EXACT_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testExtends() [complete(new Throwable(), gs)] EXACT_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testSuper() [complete(new RuntimeException(), gs)] EXACT_MATCH"
);
}
public void testMethodReferencesStringPatternSingleParamArguments07() throws CoreException {
IJavaSearchScope scope = getJavaSearchScope15();
search("<Exception> generic ( Exception ) ", METHOD, REFERENCES, scope, this.resultCollector);
assertSearchResults(
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testException() [<Exception>generic(new Exception())] EXACT_MATCH"
);
}
public void testMethodReferencesStringPatternSingleParamArguments08() throws CoreException {
IJavaSearchScope scope = getJavaSearchScope15();
search("<? extends Exception>complete(Exception, Single<? super Exception>)", METHOD, REFERENCES, scope, this.resultCollector);
assertSearchResults(
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testException() [<Exception>complete(new Exception(), gs)] EQUIVALENT_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testUnbound() [complete(new String(), gs)] POTENTIAL_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testExtends() [complete(new Throwable(), gs)] POTENTIAL_MATCH\n" +
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testSuper() [complete(new RuntimeException(), gs)] POTENTIAL_MATCH"
);
}
public void testMethodReferencesStringPatternSingleParamArguments09() throws CoreException {
IJavaSearchScope scope = getJavaSearchScope15();
search("Single.generic(Exception)", METHOD, REFERENCES, scope, this.resultCollector);
assertSearchResults(
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testException() [generic(new Exception())] EQUIVALENT_MATCH"
);
}
public void testMethodReferencesStringPatternSingleParamArguments10() throws CoreException {
IJavaSearchScope scope = getJavaSearchScope15();
search("g5.m.def.Single<Exception>.generic(Exception)", METHOD, REFERENCES, scope, this.resultCollector);
assertSearchResults(
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testException() [generic(new Exception())] EQUIVALENT_MATCH"
);
}
public void testMethodReferencesStringPatternSingleParamArguments11() throws CoreException {
IJavaSearchScope scope = getJavaSearchScope15();
search("g5.m.def.Single<? extends Exception>.<? extends Exception>generic(Exception)", METHOD, REFERENCES, scope, this.resultCollector);
assertSearchResults(
"src/g5/m/ref/RefSingle.java void g5.m.ref.RefSingle.testException() [<Exception>generic(new Exception())] EQUIVALENT_MATCH"
);
}
// Search string pattern references to multiple parameterized methods
public void testMethodReferencesStringPatternMultipleParamArguments01() throws CoreException {
IJavaSearchScope scope = getJavaSearchScope15();
search("<?, ? extends Exception, ? super RuntimeException>generic", METHOD, REFERENCES, scope, this.resultCollector);
assertSearchResults(
"src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.test() [<Object, Exception, RuntimeException>generic(new Object(), new Exception(), new RuntimeException())] EQUIVALENT_MATCH\n" +
"src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testExtends() [<Object, RuntimeException, RuntimeException>generic(new Object(), new RuntimeException(), new RuntimeException())] EQUIVALENT_MATCH\n" +
"src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testSuper() [generic(new Object(), new RuntimeException(), new IllegalMonitorStateException())] ERASURE_MATCH\n" +
"src/g5/m/ref/RefRaw.java void g5.m.ref.RefRaw.testMultiple() [generic(new Object(), new Exception(), new RuntimeException())] EQUIVALENT_RAW_MATCH"
);
}
public void testMethodReferencesStringPatternMultipleParamArguments02() throws CoreException {
IJavaSearchScope scope = getJavaSearchScope15();
search("<Object, Exception, RuntimeException>complete", METHOD, REFERENCES, scope, this.resultCollector);
assertSearchResults(
"src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.test() [<Object, Exception, RuntimeException>complete(new Object(), new Exception(), new RuntimeException(), gm)] EXACT_MATCH\n" +
"src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testExtends() [complete(new Object(), new RuntimeException(), new RuntimeException(), gm)] POTENTIAL_MATCH\n" +
"src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testSuper() [complete(new Object(), new RuntimeException(), new IllegalMonitorStateException(), gm)] POTENTIAL_MATCH\n" +
"src/g5/m/ref/RefRaw.java void g5.m.ref.RefRaw.testMultiple() [complete(new Object(), new Exception(), new RuntimeException(), gm)] EQUIVALENT_RAW_MATCH"
);
}
public void testMethodReferencesStringPatternMultipleParamArguments04() throws CoreException {
IJavaSearchScope scope = getJavaSearchScope15();
search("generic(Object,Exception,RuntimeException)", METHOD, REFERENCES, scope, this.resultCollector);
assertSearchResults(
/* Results while resolving string pattern with no qualification (currently disabled as it is not comaptible with previous results):
"src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.test() [generic(new Object(), new Exception(), new RuntimeException())] EQUIVALENT_RAW_MATCH"
*/
"src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.test() [generic(new Object(), new Exception(), new RuntimeException())] EXACT_MATCH\n" +
"src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testExtends() [generic(new Object(), new RuntimeException(), new RuntimeException())] EXACT_MATCH\n" +
"src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testSuper() [generic(new Object(), new RuntimeException(), new IllegalMonitorStateException())] EXACT_MATCH\n" +
"src/g5/m/ref/RefRaw.java void g5.m.ref.RefRaw.testMultiple() [generic(new Object(), new Exception(), new RuntimeException())] EXACT_MATCH"
);
}
public void testMethodReferencesStringPatternMultipleParamArguments05() throws CoreException {
IJavaSearchScope scope = getJavaSearchScope15();
search("complete(Object,RuntimeException,RuntimeException,Multiple<Object, RuntimeException, RuntimeException>)", METHOD, REFERENCES, scope, this.resultCollector);
assertSearchResults(
/* Results while resolving string pattern with no qualification (currently disabled as it is not comaptible with previous results):
"src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testExtends() [complete(new Object(), new RuntimeException(), new RuntimeException(), gm)] EQUIVALENT_RAW_MATCH"
*/
"src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.test() [complete(new Object(), new Exception(), new RuntimeException(), gm)] EXACT_MATCH\n" +
"src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testExtends() [complete(new Object(), new RuntimeException(), new RuntimeException(), gm)] EXACT_MATCH\n" +
"src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testSuper() [complete(new Object(), new RuntimeException(), new IllegalMonitorStateException(), gm)] EXACT_MATCH\n" +
"src/g5/m/ref/RefRaw.java void g5.m.ref.RefRaw.testMultiple() [complete(new Object(), new Exception(), new RuntimeException(), gm)] EXACT_MATCH"
);
}
public void testMethodReferencesStringPatternMultipleParamArguments06() throws CoreException {
IJavaSearchScope scope = getJavaSearchScope15();
search("<Object, RuntimeException, RuntimeException>generic(*,*,*)", METHOD, REFERENCES, scope, this.resultCollector);
assertSearchResults(
"src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.test() [generic(new Object(), new Exception(), new RuntimeException())] ERASURE_MATCH\n" +
"src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testExtends() [<Object, RuntimeException, RuntimeException>generic(new Object(), new RuntimeException(), new RuntimeException())] EXACT_MATCH\n" +
"src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testSuper() [generic(new Object(), new RuntimeException(), new IllegalMonitorStateException())] ERASURE_MATCH\n" +
"src/g5/m/ref/RefRaw.java void g5.m.ref.RefRaw.testMultiple() [generic(new Object(), new Exception(), new RuntimeException())] EQUIVALENT_RAW_MATCH"
);
}
public void testMethodReferencesStringPatternMultipleParamArguments07() throws CoreException {
IJavaSearchScope scope = getJavaSearchScope15();
search("<?,? extends Throwable,? extends RuntimeException>complete", METHOD, REFERENCES, scope, this.resultCollector);
assertSearchResults(
"src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.test() [<Object, Exception, RuntimeException>complete(new Object(), new Exception(), new RuntimeException(), gm)] EQUIVALENT_MATCH\n" +
"src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testExtends() [<Object, RuntimeException, RuntimeException>complete(new Object(), new RuntimeException(), new RuntimeException(), gm)] POTENTIAL_MATCH\n" +
"src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testSuper() [<Object, RuntimeException, IllegalMonitorStateException>complete(new Object(), new RuntimeException(), new IllegalMonitorStateException(), gm)] POTENTIAL_MATCH\n" +
"src/g5/m/ref/RefRaw.java void g5.m.ref.RefRaw.testMultiple() [complete(new Object(), new Exception(), new RuntimeException(), gm)] EQUIVALENT_RAW_MATCH"
);
}
public void testMethodReferencesStringPatternMultipleParamArguments08() throws CoreException {
IJavaSearchScope scope = getJavaSearchScope15();
search("Multiple.generic(Object,Exception,RuntimeException)", METHOD, REFERENCES, scope, this.resultCollector);
assertSearchResults(
"src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.test() [generic(new Object(), new Exception(), new RuntimeException())] EQUIVALENT_MATCH"
);
}
public void testMethodReferencesStringPatternMultipleParamArguments09() throws CoreException {
IJavaSearchScope scope = getJavaSearchScope15();
search("g5.m.def.Multiple<Object, RuntimeException, RuntimeException>.generic(Object,Exception,RuntimeException)", METHOD, REFERENCES, scope, this.resultCollector);
assertSearchResults(
"src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.test() [generic(new Object(), new Exception(), new RuntimeException())] ERASURE_MATCH"
);
}
public void testMethodReferencesStringPatternMultipleParamArguments10() throws CoreException {
IJavaSearchScope scope = getJavaSearchScope15();
search("g5.m.def.Multiple<?,? extends Throwable,? extends RuntimeException>.<?,? extends Throwable,? extends RuntimeException>generic(Object,Exception,RuntimeException)", METHOD, REFERENCES, scope, this.resultCollector);
assertSearchResults(
"src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.test() [<Object, Exception, RuntimeException>generic(new Object(), new Exception(), new RuntimeException())] EQUIVALENT_MATCH"
);
}
/*
* DECLARATIONS
*/
// Search references to single parameterized methods
public void testMethodDeclarationsElementPatternSingleParamArguments01() throws CoreException {
ICompilationUnit unit = getCompilationUnit("JavaSearch15/src/g5/m/ref/RefSingle.java");
IMethod method = selectMethod(unit, "generic", 3);
IJavaSearchScope scope = getJavaSearchScope15();
search(method, DECLARATIONS, scope, this.resultCollector);
assertSearchResults(
"src/g5/m/def/Single.java T g5.m.def.Single.generic(U) [generic] EXACT_MATCH"
);
}
public void testMethodDeclarationsElementPatternSingleParamArguments02() throws CoreException {
ICompilationUnit unit = getCompilationUnit("JavaSearch15/src/g5/m/ref/RefSingle.java");
IMethod method = selectMethod(unit, "generic", 6);
IJavaSearchScope scope = getJavaSearchScope15();
search(method, DECLARATIONS, scope, this.resultCollector);
assertSearchResults(
"src/g5/m/def/Single.java T g5.m.def.Single.generic(U) [generic] EXACT_MATCH"
);
}
public void testMethodDeclarationsElementPatternSingleParamArguments03() throws CoreException {
ICompilationUnit unit = getCompilationUnit("JavaSearch15/src/g5/m/ref/RefRaw.java");
IMethod method = selectMethod(unit, "generic", 2);
IJavaSearchScope scope = getJavaSearchScope15();
search(method, DECLARATIONS, scope, this.resultCollector);
assertSearchResults(
"src/g5/m/def/Single.java T g5.m.def.Single.generic(U) [generic] EXACT_MATCH"
);
}
public void testMethodDeclarationsElementPatternSingleParamArguments04() throws CoreException {
ICompilationUnit unit = getCompilationUnit("JavaSearch15/src/g5/m/ref/RefSingle.java");
IMethod method = selectMethod(unit, "complete");
IJavaSearchScope scope = getJavaSearchScope15();
search(method, DECLARATIONS, scope, this.resultCollector);
assertSearchResults(
"src/g5/m/def/Single.java Single<T> g5.m.def.Single.complete(U, Single<T>) [complete] EXACT_MATCH"
);
}
public void testMethodDeclarationsElementPatternSingleParamArguments05() throws CoreException {
ICompilationUnit unit = getCompilationUnit("JavaSearch15/src/g5/m/ref/RefSingle.java");
IMethod method = selectMethod(unit, "complete", 2);
IJavaSearchScope scope = getJavaSearchScope15();
search(method, DECLARATIONS, scope, this.resultCollector);
assertSearchResults(
"src/g5/m/def/Single.java Single<T> g5.m.def.Single.complete(U, Single<T>) [complete] EXACT_MATCH"
);
}
public void testMethodDeclarationsElementPatternSingleParamArguments06() throws CoreException {
ICompilationUnit unit = getCompilationUnit("JavaSearch15/src/g5/m/ref/RefRaw.java");
IMethod method = selectMethod(unit, "complete");
IJavaSearchScope scope = getJavaSearchScope15();
search(method, DECLARATIONS, scope, this.resultCollector);
assertSearchResults(
"src/g5/m/def/Single.java Single<T> g5.m.def.Single.complete(U, Single<T>) [complete] EXACT_MATCH"
);
}
// Search references to multiple parameterized methods
public void testMethodDeclarationsElementPatternMultipleParamArguments01() throws CoreException {
ICompilationUnit unit = getCompilationUnit("JavaSearch15/src/g5/m/ref/RefMultiple.java");
IMethod method = selectMethod(unit, "generic", 2);
IJavaSearchScope scope = getJavaSearchScope15();
search(method, DECLARATIONS, scope, this.resultCollector);
assertSearchResults(
"src/g5/m/def/Multiple.java T1 g5.m.def.Multiple.generic(U1, U2, U3) [generic] EXACT_MATCH"
);
}
public void testMethodDeclarationsElementPatternMultipleParamArguments02() throws CoreException {
ICompilationUnit unit = getCompilationUnit("JavaSearch15/src/g5/m/ref/RefMultiple.java");
IMethod method = selectMethod(unit, "generic", 6);
IJavaSearchScope scope = getJavaSearchScope15();
search(method, DECLARATIONS, scope, this.resultCollector);
assertSearchResults(
"src/g5/m/def/Multiple.java T1 g5.m.def.Multiple.generic(U1, U2, U3) [generic] EXACT_MATCH"
);
}
public void testMethodDeclarationsElementPatternMultipleParamArguments03() throws CoreException {
ICompilationUnit unit = getCompilationUnit("JavaSearch15/src/g5/m/ref/RefRaw.java");
IMethod method = selectMethod(unit, "generic", 4);
IJavaSearchScope scope = getJavaSearchScope15();
search(method, DECLARATIONS, scope, this.resultCollector);
assertSearchResults(
"src/g5/m/def/Multiple.java T1 g5.m.def.Multiple.generic(U1, U2, U3) [generic] EXACT_MATCH"
);
}
public void testMethodDeclarationsElementPatternMultipleParamArguments04() throws CoreException {
ICompilationUnit unit = getCompilationUnit("JavaSearch15/src/g5/m/ref/RefMultiple.java");
IMethod method = selectMethod(unit, "complete");
IJavaSearchScope scope = getJavaSearchScope15();
search(method, DECLARATIONS, scope, this.resultCollector);
assertSearchResults(
"src/g5/m/def/Multiple.java Multiple<T1,T2,T3> g5.m.def.Multiple.complete(U1, U2, U3, Multiple<T1,T2,T3>) [complete] EXACT_MATCH"
);
}
public void testMethodDeclarationsElementPatternMultipleParamArguments05() throws CoreException {
ICompilationUnit unit = getCompilationUnit("JavaSearch15/src/g5/m/ref/RefMultiple.java");
IMethod method = selectMethod(unit, "complete", 2);
IJavaSearchScope scope = getJavaSearchScope15();
search(method, DECLARATIONS, scope, this.resultCollector);
assertSearchResults(
"src/g5/m/def/Multiple.java Multiple<T1,T2,T3> g5.m.def.Multiple.complete(U1, U2, U3, Multiple<T1,T2,T3>) [complete] EXACT_MATCH"
);
}
public void testMethodDeclarationsElementPatternMultipleParamArguments06() throws CoreException {
ICompilationUnit unit = getCompilationUnit("JavaSearch15/src/g5/m/ref/RefRaw.java");
IMethod method = selectMethod(unit, "complete", 2);
IJavaSearchScope scope = getJavaSearchScope15();
search(method, DECLARATIONS, scope, this.resultCollector);
assertSearchResults(
"src/g5/m/def/Multiple.java Multiple<T1,T2,T3> g5.m.def.Multiple.complete(U1, U2, U3, Multiple<T1,T2,T3>) [complete] EXACT_MATCH"
);
}
// Search string pattern references to single parameterized methods
public void testMethodDeclarationsStringPatternSingleParamArguments01() throws CoreException {
IJavaSearchScope scope = getJavaSearchScope15();
search("<Exception>generic", METHOD, DECLARATIONS, scope, this.resultCollector);
assertSearchResults(
"src/g5/m/def/Single.java T g5.m.def.Single.generic(U) [generic] EXACT_MATCH"
);
}
public void testMethodDeclarationsStringPatternSingleParamArguments02() throws CoreException {
IJavaSearchScope scope = getJavaSearchScope15();
search("<U>complete", METHOD, DECLARATIONS, scope, this.resultCollector);
assertSearchResults(
"src/g5/m/def/Single.java Single<T> g5.m.def.Single.complete(U, Single<T>) [complete] EXACT_MATCH"
);
}
public void testMethodDeclarationsStringPatternSingleParamArguments03() throws CoreException {
IJavaSearchScope scope = getJavaSearchScope15();
search("<T> *e?e*", METHOD, DECLARATIONS, scope, this.resultCollector);
assertSearchResults(
"src/g5/m/def/Single.java T g5.m.def.Single.generic(U) [generic] EXACT_MATCH\n" +
"src/g5/m/def/Single.java Single<T> g5.m.def.Single.complete(U, Single<T>) [complete] EXACT_MATCH"
);
}
public void testMethodDeclarationsStringPatternSingleParamArguments04() throws CoreException {
IJavaSearchScope scope = getJavaSearchScope15();
search("generic(*)", METHOD, DECLARATIONS, scope, this.resultCollector);
assertSearchResults(
"src/g5/m/def/Single.java T g5.m.def.Single.generic(U) [generic] EXACT_MATCH"
);
}
public void testMethodDeclarationsStringPatternSingleParamArguments05() throws CoreException {
IJavaSearchScope scope = getJavaSearchScope15();
search("<Exception>generic(*)", METHOD, DECLARATIONS, scope, this.resultCollector);
assertSearchResults(
"src/g5/m/def/Single.java T g5.m.def.Single.generic(U) [generic] EXACT_MATCH"
);
}
public void testMethodDeclarationsStringPatternSingleParamArguments06() throws CoreException {
IJavaSearchScope scope = getJavaSearchScope15();
search("Single.<Object>generic", METHOD, DECLARATIONS, scope, this.resultCollector);
assertSearchResults(
"src/g5/m/def/Single.java T g5.m.def.Single.generic(U) [generic] EXACT_MATCH"
);
}
public void testMethodDeclarationsStringPatternSingleParamArguments07() throws CoreException {
IJavaSearchScope scope = getJavaSearchScope15();
search("g5.m.def.Single<Object>.<U>generic", METHOD, DECLARATIONS, scope, this.resultCollector);
assertSearchResults(
"src/g5/m/def/Single.java T g5.m.def.Single.generic(U) [generic] EXACT_MATCH"
);
}
public void testMethodDeclarationsStringPatternSingleParamArguments08() throws CoreException {
IJavaSearchScope scope = getJavaSearchScope15();
search("g5.m.def.Single<?>.<?>generic", METHOD, DECLARATIONS, scope, this.resultCollector);
assertSearchResults(
"src/g5/m/def/Single.java T g5.m.def.Single.generic(U) [generic] EXACT_MATCH"
);
}
// Search string pattern references to multiple parameterized methods
public void testMethodDeclarationsStringPatternMultipleParamArguments01() throws CoreException {
IJavaSearchScope scope = getJavaSearchScope15();
search("<?, ? extends Exception, ? super RuntimeException>generic", METHOD, DECLARATIONS, scope, this.resultCollector);
assertSearchResults(
"src/g5/m/def/Multiple.java T1 g5.m.def.Multiple.generic(U1, U2, U3) [generic] EXACT_MATCH"
);
}
public void testMethodDeclarationsStringPatternMultipleParamArguments02() throws CoreException {
IJavaSearchScope scope = getJavaSearchScope15();
search("<Object, Exception, RuntimeException>complete", METHOD, DECLARATIONS, scope, this.resultCollector);
assertSearchResults(
"src/g5/m/def/Multiple.java Multiple<T1,T2,T3> g5.m.def.Multiple.complete(U1, U2, U3, Multiple<T1,T2,T3>) [complete] EXACT_MATCH"
);
}
public void testMethodDeclarationsStringPatternMultipleParamArguments03() throws CoreException {
IJavaSearchScope scope = getJavaSearchScope15();
search("complete(*,*,*,*)", METHOD, DECLARATIONS, scope, this.resultCollector);
assertSearchResults(
"src/g5/m/def/Multiple.java Multiple<T1,T2,T3> g5.m.def.Multiple.complete(U1, U2, U3, Multiple<T1,T2,T3>) [complete] EXACT_MATCH"
);
}
public void testMethodDeclarationsStringPatternMultipleParamArguments04() throws CoreException {
IJavaSearchScope scope = getJavaSearchScope15();
search("<Object, Exception, RuntimeException>complete(*,*,*,*)", METHOD, DECLARATIONS, scope, this.resultCollector);
assertSearchResults(
"src/g5/m/def/Multiple.java Multiple<T1,T2,T3> g5.m.def.Multiple.complete(U1, U2, U3, Multiple<T1,T2,T3>) [complete] EXACT_MATCH"
);
}
public void testMethodDeclarationsStringPatternMultipleParamArguments05() throws CoreException {
IJavaSearchScope scope = getJavaSearchScope15();
search("Multiple.<Object, Exception, RuntimeException>complete", METHOD, DECLARATIONS, scope, this.resultCollector);
assertSearchResults(
"src/g5/m/def/Multiple.java Multiple<T1,T2,T3> g5.m.def.Multiple.complete(U1, U2, U3, Multiple<T1,T2,T3>) [complete] EXACT_MATCH"
);
}
public void testMethodDeclarationsStringPatternMultipleParamArguments06() throws CoreException {
IJavaSearchScope scope = getJavaSearchScope15();
search("g5.m.def.Multiple<Object, Exception, RuntimeException>.<U1,U2,U3>complete", METHOD, DECLARATIONS, scope, this.resultCollector);
assertSearchResults(
"src/g5/m/def/Multiple.java Multiple<T1,T2,T3> g5.m.def.Multiple.complete(U1, U2, U3, Multiple<T1,T2,T3>) [complete] EXACT_MATCH"
);
}
public void testMethodDeclarationsStringPatternMultipleParamArguments07() throws CoreException {
IJavaSearchScope scope = getJavaSearchScope15();
search("g5.m.def.Multiple<?,?,?>.<?,?,?>complete", METHOD, DECLARATIONS, scope, this.resultCollector);
assertSearchResults(
"src/g5/m/def/Multiple.java Multiple<T1,T2,T3> g5.m.def.Multiple.complete(U1, U2, U3, Multiple<T1,T2,T3>) [complete] EXACT_MATCH"
);
}
}