blob: c72b99e14ddaf74ab3971702bfd8e06945193ffd [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2005 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.ui.tests.refactoring.reorg;
import junit.framework.Test;
import junit.framework.TestSuite;
import org.eclipse.test.performance.Dimension;
import org.eclipse.jdt.core.ICompilationUnit;
import org.eclipse.jdt.core.IMethod;
import org.eclipse.jdt.core.IPackageFragment;
import org.eclipse.jdt.internal.corext.refactoring.rename.RenameVirtualMethodProcessor;
import org.eclipse.jdt.ui.tests.refactoring.infra.RefactoringPerformanceTestSetup;
import org.eclipse.ltk.core.refactoring.RefactoringStatus;
import org.eclipse.ltk.core.refactoring.participants.RenameRefactoring;
public class RenameMethodWithHidingPerfTests extends RepeatingRefactoringPerformanceTestCase {
public static Test suite() {
// we must make sure that cold is executed before warm
TestSuite suite= new TestSuite("RenameMethodWithHidingPerfTests");
suite.addTest(new RenameMethodWithHidingPerfTests("testCold"));
suite.addTest(new RenameMethodWithHidingPerfTests("testWarm"));
return new RefactoringPerformanceTestSetup(suite);
}
public static Test setUpTest(Test someTest) {
return new RefactoringPerformanceTestSetup(someTest);
}
public RenameMethodWithHidingPerfTests(String name) {
super(name);
}
public void testCold() throws Exception {
executeRefactoring(0, 0, false, 10);
}
public void testWarm() throws Exception {
tagAsSummary("Rename method with hiding", Dimension.CPU_TIME);
executeRefactoring(0, 0, true, 10);
}
protected void doExecuteRefactoring(int numberOfCus, int numberOfRefs, boolean measure) throws Exception {
ICompilationUnit cunit= generateSources(fTestProject);
IMethod method= cunit.findPrimaryType().getMethod("setString", new String[] {"QString;"});
RenameVirtualMethodProcessor processor= new RenameVirtualMethodProcessor(method);
processor.setNewElementName("set");
executeRefactoring(new RenameRefactoring(processor), measure, RefactoringStatus.ERROR);
}
protected void finishMeasurements() {
stopMeasuring();
commitMeasurements();
assertPerformanceInRelativeBand(Dimension.CPU_TIME, -100, +10);
}
private ICompilationUnit generateSources(TestProject testProject) throws Exception {
IPackageFragment definition= testProject.getSourceFolder().createPackageFragment("def", false, null);
StringBuffer buf= new StringBuffer();
buf.append("package def;\n");
buf.append("public class A {\n");
buf.append(" public void setString(String s) {\n");
buf.append(" }\n");
buf.append(" public class Defines {\n");
buf.append(" public void set(String s) {}\n");
buf.append(" }\n");
buf.append(" public class Ref extends Defines {\n");
buf.append(" public void ref() {\n");
buf.append(" setString(\"Eclipse\");\n");
buf.append(" }\n");
buf.append(" }\n");
buf.append("}\n");
return definition.createCompilationUnit("A.java", buf.toString(), false, null);
}
}