/******************************************************************************* * Copyright (c) 2000, 2009 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * 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" ); } }