| /******************************************************************************* |
| * 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 org.eclipse.core.runtime.*; |
| import org.eclipse.jdt.core.*; |
| import org.eclipse.jdt.core.compiler.CharOperation; |
| import org.eclipse.jdt.core.search.*; |
| |
| /** |
| * Abstract class for generic search tests. |
| */ |
| public class AbstractJavaSearchGenericTests extends JavaSearchTests { |
| |
| static char[] RESULT_POTENTIAL_MATCH = "*] POTENTIAL_*".toCharArray(); |
| static char[] RESULT_EXACT_MATCH = "*] EXACT_*".toCharArray(); |
| static char[] RESULT_ERASURE_MATCH = "*] ERASURE_*".toCharArray(); |
| int matchRule; |
| |
| public AbstractJavaSearchGenericTests(String name, int matchRule) { |
| super(name); |
| this.matchRule = matchRule; |
| } |
| |
| protected void setUp () throws Exception { |
| super.setUp(); |
| this.resultCollector.showAccuracy(true); |
| this.resultCollector.showRule(); |
| } |
| |
| /* |
| * Add given line to given buffer. |
| */ |
| void addResultLine(StringBuffer buffer, char[] line) { |
| if (buffer.length() > 0) buffer.append('\n'); |
| buffer.append(line); |
| } |
| |
| /* |
| * Clean results from all lines which have not expected match rule. |
| */ |
| final String cleanResults(String expected) { |
| char[][] lines = CharOperation.splitOn('\n', expected.toCharArray()); |
| StringBuffer buffer = new StringBuffer(expected.length()); |
| for (int i=0, n=lines.length; i<n; i++) { |
| addResultLine(buffer, lines[i]); |
| } |
| return buffer.toString(); |
| } |
| |
| /* (non-Javadoc) |
| * Overridden to remove all last type arguments from expected string. |
| * @see org.eclipse.jdt.core.tests.model.AbstractJavaModelTests#assertSearchResults(java.lang.String, java.lang.String, java.lang.Object) |
| */ |
| protected void assertSearchResults(String message, String expected, JavaSearchResultCollector collector) { |
| String actual = collector.toString(); |
| String trimmed = cleanResults(expected); |
| if (!trimmed.equals(actual)) { |
| System.out.println(getName()+" expected result is:"); |
| System.out.print(displayString(actual, this.tabs)); |
| System.out.println(""); |
| } |
| assertEquals( |
| message, |
| trimmed, |
| actual |
| ); |
| } |
| |
| /* (non-Javadoc) |
| * @see org.eclipse.jdt.core.tests.model.AbstractJavaModelTests#search(org.eclipse.jdt.core.IJavaElement, int, org.eclipse.jdt.core.search.IJavaSearchScope, org.eclipse.jdt.core.search.SearchRequestor) |
| */ |
| protected void search(IJavaElement element, int limitTo) throws CoreException { |
| search(element, limitTo, this.matchRule, getJavaSearchScope15(), this.resultCollector); |
| } |
| /* (non-Javadoc) |
| * @see org.eclipse.jdt.core.tests.model.AbstractJavaModelTests#search(java.lang.String, int, int, org.eclipse.jdt.core.search.IJavaSearchScope, org.eclipse.jdt.core.search.SearchRequestor) |
| */ |
| protected void search(String patternString, int searchFor, int limitTo) throws CoreException { |
| search(patternString, searchFor, limitTo, this.matchRule, getJavaSearchScope15(), this.resultCollector); |
| } |
| |
| /* (non-Javadoc) |
| * @see org.eclipse.jdt.core.tests.model.AbstractJavaModelTests#search(org.eclipse.jdt.core.IJavaElement, int, org.eclipse.jdt.core.search.IJavaSearchScope, org.eclipse.jdt.core.search.SearchRequestor) |
| */ |
| protected void search(IJavaElement element, int limitTo, IJavaSearchScope scope) throws CoreException { |
| search(element, limitTo, this.matchRule, scope, this.resultCollector); |
| } |
| /* (non-Javadoc) |
| * @see org.eclipse.jdt.core.tests.model.AbstractJavaModelTests#search(java.lang.String, int, int, org.eclipse.jdt.core.search.IJavaSearchScope, org.eclipse.jdt.core.search.SearchRequestor) |
| */ |
| protected void search(String patternString, int searchFor, int limitTo, IJavaSearchScope scope) throws CoreException { |
| search(patternString, searchFor, limitTo, this.matchRule, scope, this.resultCollector); |
| } |
| |
| /* (non-Javadoc) |
| * @see org.eclipse.jdt.core.tests.model.AbstractJavaModelTests#search(org.eclipse.jdt.core.IJavaElement, int, org.eclipse.jdt.core.search.IJavaSearchScope, org.eclipse.jdt.core.search.SearchRequestor) |
| */ |
| protected void search(IJavaElement element, int limitTo, IJavaSearchScope scope, SearchRequestor requestor) throws CoreException { |
| search(element, limitTo, this.matchRule, scope, requestor); |
| } |
| /* (non-Javadoc) |
| * @see org.eclipse.jdt.core.tests.model.AbstractJavaModelTests#search(java.lang.String, int, int, org.eclipse.jdt.core.search.IJavaSearchScope, org.eclipse.jdt.core.search.SearchRequestor) |
| */ |
| protected void search(String patternString, int searchFor, int limitTo, IJavaSearchScope scope, SearchRequestor requestor) throws CoreException { |
| search(patternString, searchFor, limitTo, this.matchRule, scope, requestor); |
| } |
| } |