Change Signature: Allow running Java's Change Signature in tests
This commit is contained in:
+62
-7
@@ -16,16 +16,21 @@
|
|||||||
|
|
||||||
package org.jetbrains.jet.plugin.refactoring.changeSignature;
|
package org.jetbrains.jet.plugin.refactoring.changeSignature;
|
||||||
|
|
||||||
|
import com.intellij.codeInsight.TargetElementUtilBase;
|
||||||
import com.intellij.openapi.editor.Editor;
|
import com.intellij.openapi.editor.Editor;
|
||||||
import com.intellij.openapi.project.Project;
|
import com.intellij.openapi.project.Project;
|
||||||
import com.intellij.openapi.projectRoots.Sdk;
|
import com.intellij.openapi.projectRoots.Sdk;
|
||||||
import com.intellij.openapi.util.Disposer;
|
import com.intellij.openapi.util.Disposer;
|
||||||
import com.intellij.openapi.util.text.StringUtil;
|
import com.intellij.openapi.util.text.StringUtil;
|
||||||
import com.intellij.psi.PsiElement;
|
import com.intellij.psi.*;
|
||||||
import com.intellij.psi.PsiFile;
|
|
||||||
import com.intellij.refactoring.BaseRefactoringProcessor;
|
import com.intellij.refactoring.BaseRefactoringProcessor;
|
||||||
|
import com.intellij.refactoring.changeSignature.ChangeSignatureProcessor;
|
||||||
|
import com.intellij.refactoring.changeSignature.ParameterInfoImpl;
|
||||||
|
import com.intellij.refactoring.changeSignature.ThrownExceptionInfo;
|
||||||
import com.intellij.refactoring.util.CommonRefactoringUtil;
|
import com.intellij.refactoring.util.CommonRefactoringUtil;
|
||||||
|
import com.intellij.util.VisibilityUtil;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.jetbrains.jet.lang.descriptors.FunctionDescriptor;
|
import org.jetbrains.jet.lang.descriptors.FunctionDescriptor;
|
||||||
import org.jetbrains.jet.lang.descriptors.Visibilities;
|
import org.jetbrains.jet.lang.descriptors.Visibilities;
|
||||||
import org.jetbrains.jet.lang.psi.JetElement;
|
import org.jetbrains.jet.lang.psi.JetElement;
|
||||||
@@ -38,7 +43,10 @@ import org.jetbrains.jet.plugin.caches.resolve.ResolvePackage;
|
|||||||
import org.jetbrains.jet.plugin.refactoring.JetRefactoringBundle;
|
import org.jetbrains.jet.plugin.refactoring.JetRefactoringBundle;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.*;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import static org.jetbrains.jet.lang.psi.PsiPackage.JetPsiFactory;
|
import static org.jetbrains.jet.lang.psi.PsiPackage.JetPsiFactory;
|
||||||
import static org.jetbrains.jet.plugin.refactoring.changeSignature.ChangeSignaturePackage.getChangeSignatureDialog;
|
import static org.jetbrains.jet.plugin.refactoring.changeSignature.ChangeSignaturePackage.getChangeSignatureDialog;
|
||||||
@@ -339,13 +347,10 @@ public class JetChangeSignatureTest extends KotlinCodeInsightTestCase {
|
|||||||
private void configureFiles() throws Exception {
|
private void configureFiles() throws Exception {
|
||||||
editors.clear();
|
editors.clear();
|
||||||
|
|
||||||
configureByFile(getTestName(false) + "Before.kt");
|
|
||||||
editors.add(getEditor());
|
|
||||||
|
|
||||||
indexLoop:
|
indexLoop:
|
||||||
for (int i = 0; ; i++) {
|
for (int i = 0; ; i++) {
|
||||||
for (String extension : EXTENSIONS) {
|
for (String extension : EXTENSIONS) {
|
||||||
String extraFileName = getTestName(false) + "Before." + i + extension;
|
String extraFileName = getTestName(false) + "Before" + (i > 0 ? "." + i : "") + extension;
|
||||||
File extraFile = new File(getTestDataPath() + extraFileName);
|
File extraFile = new File(getTestDataPath() + extraFileName);
|
||||||
if (extraFile.exists()) {
|
if (extraFile.exists()) {
|
||||||
configureByFile(extraFileName);
|
configureByFile(extraFileName);
|
||||||
@@ -385,9 +390,59 @@ public class JetChangeSignatureTest extends KotlinCodeInsightTestCase {
|
|||||||
return dialog.evaluateChangeInfo();
|
return dialog.evaluateChangeInfo();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private class JavaRefactoringProvider {
|
||||||
|
@NotNull
|
||||||
|
String getNewName(@NotNull PsiMethod method) {
|
||||||
|
return method.getName();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
PsiType getNewReturnType(@NotNull PsiMethod method) {
|
||||||
|
return method.getReturnType();
|
||||||
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
ParameterInfoImpl[] getNewParameters(@NotNull PsiMethod method) {
|
||||||
|
PsiParameter[] parameters = method.getParameterList().getParameters();
|
||||||
|
ParameterInfoImpl[] parameterInfos = new ParameterInfoImpl[parameters.length];
|
||||||
|
for (int i = 0; i < parameters.length; i++) {
|
||||||
|
PsiParameter parameter = parameters[i];
|
||||||
|
parameterInfos[i] = new ParameterInfoImpl(i, parameter.getName(), parameter.getType());
|
||||||
|
}
|
||||||
|
return parameterInfos;
|
||||||
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
final ChangeSignatureProcessor getProcessor(@NotNull PsiMethod method) {
|
||||||
|
return new ChangeSignatureProcessor(
|
||||||
|
getProject(),
|
||||||
|
method,
|
||||||
|
false,
|
||||||
|
VisibilityUtil.getVisibilityModifier(method.getModifierList()),
|
||||||
|
getNewName(method),
|
||||||
|
getNewReturnType(method),
|
||||||
|
getNewParameters(method),
|
||||||
|
new ThrownExceptionInfo[0]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void doJavaTest(JavaRefactoringProvider provider) throws Exception {
|
||||||
|
configureFiles();
|
||||||
|
|
||||||
|
PsiElement targetElement = TargetElementUtilBase.findTargetElement(getEditor(), TargetElementUtilBase.ELEMENT_NAME_ACCEPTED);
|
||||||
|
assertTrue("<caret> is not on method name", targetElement instanceof PsiMethod);
|
||||||
|
|
||||||
|
provider.getProcessor((PsiMethod)targetElement).run();
|
||||||
|
|
||||||
|
compareEditorsWithExpectedData();
|
||||||
|
}
|
||||||
|
|
||||||
private void doTest(JetChangeInfo changeInfo) throws Exception {
|
private void doTest(JetChangeInfo changeInfo) throws Exception {
|
||||||
new JetChangeSignatureProcessor(getProject(), changeInfo, "Change signature").run();
|
new JetChangeSignatureProcessor(getProject(), changeInfo, "Change signature").run();
|
||||||
|
compareEditorsWithExpectedData();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void compareEditorsWithExpectedData() throws Exception {
|
||||||
for (Editor editor : editors) {
|
for (Editor editor : editors) {
|
||||||
setActiveEditor(editor);
|
setActiveEditor(editor);
|
||||||
checkResultByFile(getFile().getName().replace("Before.", "After."));
|
checkResultByFile(getFile().getName().replace("Before.", "After."));
|
||||||
|
|||||||
Reference in New Issue
Block a user