diff --git a/java/java-tests/testSrc/com/intellij/refactoring/AbstractJavaInplaceIntroduceTest.java b/java/java-tests/testSrc/com/intellij/refactoring/AbstractJavaInplaceIntroduceTest.java new file mode 100644 index 000000000000..ce82087c79ad --- /dev/null +++ b/java/java-tests/testSrc/com/intellij/refactoring/AbstractJavaInplaceIntroduceTest.java @@ -0,0 +1,60 @@ +/* + * Copyright 2000-2011 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.refactoring; + +import com.intellij.openapi.projectRoots.Sdk; +import com.intellij.openapi.projectRoots.impl.JavaSdkImpl; +import com.intellij.psi.*; +import com.intellij.psi.util.PsiTreeUtil; +import com.intellij.testFramework.IdeaTestCase; +import org.jetbrains.annotations.Nullable; + +/** + * User: anna + */ +public abstract class AbstractJavaInplaceIntroduceTest extends AbstractInplaceIntroduceTest { + + @Override + protected void setUp() throws Exception { + IdeaTestCase.initPlatformPrefix(); + super.setUp(); + } + + @Override + @Nullable + protected PsiExpression getExpressionFromEditor() { + final PsiExpression expression = + PsiTreeUtil.getParentOfType(getFile().findElementAt(getEditor().getCaretModel().getOffset()), PsiExpression.class); + if (expression instanceof PsiReferenceExpression && expression.getParent() instanceof PsiMethodCallExpression) { + return (PsiExpression)expression.getParent(); + } + return expression; + } + + + @Override + protected PsiLocalVariable getLocalVariableFromEditor() { + final PsiLocalVariable localVariable = + PsiTreeUtil.getParentOfType(getFile().findElementAt(getEditor().getCaretModel().getOffset()), PsiLocalVariable.class); + assertNotNull(localVariable); + return localVariable; + } + + @Override + protected Sdk getProjectJDK() { + return JavaSdkImpl.getMockJdk17(); + } +} diff --git a/java/java-tests/testSrc/com/intellij/refactoring/InplaceIntroduceConstantTest.java b/java/java-tests/testSrc/com/intellij/refactoring/InplaceIntroduceConstantTest.java index d3b420acdd2d..927100df566e 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/InplaceIntroduceConstantTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/InplaceIntroduceConstantTest.java @@ -22,14 +22,13 @@ import com.intellij.psi.PsiExpression; import com.intellij.psi.PsiLocalVariable; import com.intellij.refactoring.introduce.inplace.AbstractInplaceIntroducer; import com.intellij.refactoring.introduceField.IntroduceConstantHandler; -import com.intellij.refactoring.introduceField.IntroduceFieldHandler; import org.jetbrains.annotations.NotNull; /** * User: anna * Date: 3/16/11 */ -public class InplaceIntroduceConstantTest extends AbstractInplaceIntroduceTest { +public class InplaceIntroduceConstantTest extends AbstractJavaInplaceIntroduceTest { private static final String BASE_PATH = "/refactoring/inplaceIntroduceConstant/"; @@ -112,7 +111,7 @@ public class InplaceIntroduceConstantTest extends AbstractInplaceIntroduceTest { return new MyIntroduceConstantHandler(); } - public static class MyIntroduceConstantHandler extends IntroduceConstantHandler implements MyIntroduceHandler { + public static class MyIntroduceConstantHandler extends IntroduceConstantHandler implements MyIntroduceHandler { @Override public boolean invokeImpl(Project project, @NotNull PsiExpression selectedExpr, Editor editor) { return super.invokeImpl(project, selectedExpr, editor); diff --git a/java/java-tests/testSrc/com/intellij/refactoring/InplaceIntroduceFieldTest.java b/java/java-tests/testSrc/com/intellij/refactoring/InplaceIntroduceFieldTest.java index 4d7be1f9fc3b..83a5203640eb 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/InplaceIntroduceFieldTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/InplaceIntroduceFieldTest.java @@ -28,7 +28,7 @@ import org.jetbrains.annotations.NotNull; * User: anna * Date: 3/16/11 */ -public class InplaceIntroduceFieldTest extends AbstractInplaceIntroduceTest { +public class InplaceIntroduceFieldTest extends AbstractJavaInplaceIntroduceTest { private static final String BASE_PATH = "/refactoring/inplaceIntroduceField/"; @@ -98,7 +98,7 @@ public class InplaceIntroduceFieldTest extends AbstractInplaceIntroduceTest { return new MyIntroduceFieldHandler(); } - public static class MyIntroduceFieldHandler extends IntroduceFieldHandler implements MyIntroduceHandler { + public static class MyIntroduceFieldHandler extends IntroduceFieldHandler implements MyIntroduceHandler { @Override public boolean invokeImpl(Project project, @NotNull PsiExpression selectedExpr, Editor editor) { return super.invokeImpl(project, selectedExpr, editor); diff --git a/java/java-tests/testSrc/com/intellij/refactoring/InplaceIntroduceParameterTest.java b/java/java-tests/testSrc/com/intellij/refactoring/InplaceIntroduceParameterTest.java index 9c79186e2620..482b9e6fa7ae 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/InplaceIntroduceParameterTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/InplaceIntroduceParameterTest.java @@ -15,26 +15,20 @@ */ package com.intellij.refactoring; -import com.intellij.codeInsight.template.TemplateManager; -import com.intellij.codeInsight.template.impl.TemplateManagerImpl; -import com.intellij.codeInsight.template.impl.TemplateState; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Pass; import com.intellij.psi.PsiExpression; import com.intellij.psi.PsiLocalVariable; -import com.intellij.psi.util.PsiTreeUtil; import com.intellij.refactoring.introduce.inplace.AbstractInplaceIntroducer; -import com.intellij.refactoring.introduceParameter.InplaceIntroduceParameterPopup; import com.intellij.refactoring.introduceParameter.IntroduceParameterHandler; -import com.intellij.testFramework.LightCodeInsightTestCase; import org.jetbrains.annotations.NotNull; /** * User: anna * Date: 3/16/11 */ -public class InplaceIntroduceParameterTest extends AbstractInplaceIntroduceTest { +public class InplaceIntroduceParameterTest extends AbstractJavaInplaceIntroduceTest { private static final String BASE_PATH = "/refactoring/inplaceIntroduceParameter/"; @@ -99,7 +93,7 @@ public class InplaceIntroduceParameterTest extends AbstractInplaceIntroduceTest fail("Conflict expected"); } - private static class MyIntroduceParameterHandler extends IntroduceParameterHandler implements MyIntroduceHandler { + private static class MyIntroduceParameterHandler extends IntroduceParameterHandler implements MyIntroduceHandler { @Override public boolean invokeImpl(Project project, @NotNull PsiExpression selectedExpr, Editor editor) { diff --git a/java/java-tests/testSrc/com/intellij/refactoring/AbstractInplaceIntroduceTest.java b/platform/testFramework/src/com/intellij/refactoring/AbstractInplaceIntroduceTest.java similarity index 57% rename from java/java-tests/testSrc/com/intellij/refactoring/AbstractInplaceIntroduceTest.java rename to platform/testFramework/src/com/intellij/refactoring/AbstractInplaceIntroduceTest.java index ecdb4b854217..f57904cefeaa 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/AbstractInplaceIntroduceTest.java +++ b/platform/testFramework/src/com/intellij/refactoring/AbstractInplaceIntroduceTest.java @@ -21,39 +21,41 @@ import com.intellij.codeInsight.template.impl.TemplateState; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Pass; -import com.intellij.psi.PsiExpression; -import com.intellij.psi.PsiLocalVariable; -import com.intellij.psi.PsiMethodCallExpression; -import com.intellij.psi.PsiReferenceExpression; -import com.intellij.psi.util.PsiTreeUtil; +import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiNameIdentifierOwner; import com.intellij.refactoring.introduce.inplace.AbstractInplaceIntroducer; -import com.intellij.refactoring.introduceField.IntroduceFieldHandler; -import com.intellij.testFramework.LightCodeInsightTestCase; +import com.intellij.testFramework.LightPlatformCodeInsightTestCase; +import com.intellij.testFramework.LightPlatformTestCase; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; /** * User: anna + * Date: 8/25/11 */ -public abstract class AbstractInplaceIntroduceTest extends LightCodeInsightTestCase { +public abstract class AbstractInplaceIntroduceTest extends LightPlatformCodeInsightTestCase { + @Nullable protected abstract V getLocalVariableFromEditor(); + @Nullable protected abstract E getExpressionFromEditor(); + + protected abstract String getBasePath(); + protected abstract MyIntroduceHandler createIntroduceHandler(); + protected void doTestEscape() throws Exception { String name = getTestName(true); configureByFile(getBasePath() + name + ".java"); final boolean enabled = getEditor().getSettings().isVariableInplaceRenameEnabled(); - TemplateManagerImpl templateManager = (TemplateManagerImpl)TemplateManager.getInstance(getProject()); + TemplateManagerImpl templateManager = (TemplateManagerImpl)TemplateManager.getInstance(LightPlatformTestCase.getProject()); try { templateManager.setTemplateTesting(true); getEditor().getSettings().setVariableInplaceRenameEnabled(true); final MyIntroduceHandler introduceFieldHandler = createIntroduceHandler(); - final PsiExpression expression = - PsiTreeUtil.getParentOfType(getFile().findElementAt(getEditor().getCaretModel().getOffset()), PsiExpression.class); + final E expression = getExpressionFromEditor(); if (expression != null) { - introduceFieldHandler.invokeImpl(getProject(), expression, getEditor()); + introduceFieldHandler.invokeImpl(LightPlatformTestCase.getProject(), expression, getEditor()); } else { - final PsiLocalVariable localVariable = - PsiTreeUtil.getParentOfType(getFile().findElementAt(getEditor().getCaretModel().getOffset()), PsiLocalVariable.class); - assertNotNull(localVariable); - introduceFieldHandler.invokeImpl(getProject(), localVariable, getEditor()); + final V localVariable = getLocalVariableFromEditor(); + introduceFieldHandler.invokeImpl(LightPlatformTestCase.getProject(), localVariable, getEditor()); } TemplateState state = TemplateManagerImpl.getTemplateState(getEditor()); assert state != null; @@ -61,34 +63,27 @@ public abstract class AbstractInplaceIntroduceTest extends LightCodeInsightTestC checkResultByFile(getBasePath() + name + "_after.java"); } finally { - myEditor.getSettings().setVariableInplaceRenameEnabled(enabled); + getEditor().getSettings().setVariableInplaceRenameEnabled(enabled); templateManager.setTemplateTesting(false); } } - protected void doTest(final Pass pass) throws Exception { String name = getTestName(true); configureByFile(getBasePath() + name + ".java"); final boolean enabled = getEditor().getSettings().isVariableInplaceRenameEnabled(); - TemplateManagerImpl templateManager = (TemplateManagerImpl)TemplateManager.getInstance(getProject()); + TemplateManagerImpl templateManager = (TemplateManagerImpl)TemplateManager.getInstance(LightPlatformTestCase.getProject()); try { templateManager.setTemplateTesting(true); getEditor().getSettings().setVariableInplaceRenameEnabled(true); final MyIntroduceHandler introduceFieldHandler = createIntroduceHandler(); - PsiExpression expression = - PsiTreeUtil.getParentOfType(getFile().findElementAt(getEditor().getCaretModel().getOffset()), PsiExpression.class); - if (expression instanceof PsiReferenceExpression && expression.getParent() instanceof PsiMethodCallExpression) { - expression = (PsiExpression)expression.getParent(); - } + final E expression = getExpressionFromEditor(); if (expression != null) { - introduceFieldHandler.invokeImpl(getProject(), expression, getEditor()); + introduceFieldHandler.invokeImpl(LightPlatformTestCase.getProject(), expression, getEditor()); } else { - final PsiLocalVariable localVariable = - PsiTreeUtil.getParentOfType(getFile().findElementAt(getEditor().getCaretModel().getOffset()), PsiLocalVariable.class); - assertNotNull(localVariable); - introduceFieldHandler.invokeImpl(getProject(), localVariable, getEditor()); + final V localVariable = getLocalVariableFromEditor(); + introduceFieldHandler.invokeImpl(LightPlatformTestCase.getProject(), localVariable, getEditor()); } pass.pass(introduceFieldHandler.getInplaceIntroducer()); TemplateState state = TemplateManagerImpl.getTemplateState(getEditor()); @@ -97,19 +92,14 @@ public abstract class AbstractInplaceIntroduceTest extends LightCodeInsightTestC checkResultByFile(getBasePath() + name + "_after.java"); } finally { - myEditor.getSettings().setVariableInplaceRenameEnabled(enabled); + getEditor().getSettings().setVariableInplaceRenameEnabled(enabled); templateManager.setTemplateTesting(false); } } - protected abstract String getBasePath(); - protected abstract MyIntroduceHandler createIntroduceHandler(); - - - - public static interface MyIntroduceHandler { - boolean invokeImpl(Project project, @NotNull PsiExpression selectedExpr, Editor editor); - boolean invokeImpl(Project project, PsiLocalVariable localVariable, Editor editor); + public interface MyIntroduceHandler { + boolean invokeImpl(Project project, @NotNull EH selectedExpr, Editor editor); + boolean invokeImpl(Project project, VH localVariable, Editor editor); AbstractInplaceIntroducer getInplaceIntroducer(); } }