blob: 91c473222710f4d8ad6f571d8e87877980863584 [file] [log] [blame]
/*******************************************************************************
* 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);
}
}