diff --git a/python/testData/refactoring/introduceField/py4414.after.py b/python/testData/refactoring/introduceField/py4414.after.py new file mode 100644 index 000000000000..2311d3e9d6a9 --- /dev/null +++ b/python/testData/refactoring/introduceField/py4414.after.py @@ -0,0 +1,3 @@ +class SomeClass(): + def a(self): + self.a = 1 diff --git a/python/testData/refactoring/introduceField/py4414.py b/python/testData/refactoring/introduceField/py4414.py new file mode 100644 index 000000000000..cc792900f692 --- /dev/null +++ b/python/testData/refactoring/introduceField/py4414.py @@ -0,0 +1,3 @@ +class SomeClass(): + def a(self): + 1 \ No newline at end of file diff --git a/python/testData/refactoring/introduceField/py4453.after.py b/python/testData/refactoring/introduceField/py4453.after.py new file mode 100644 index 000000000000..945ab52204bf --- /dev/null +++ b/python/testData/refactoring/introduceField/py4453.after.py @@ -0,0 +1,12 @@ +import math + +__author__ = 'wombat' +class SolverEquation: + def demo(self): + a = 3 + b = 25 + c = 46 + self.a = math.sqrt(b ** 2 - 4 * a * c) + root1 = (-b + self.a) / (2*a) + root2 = (-b - self.a) / (2*a) + print(root1,root2) \ No newline at end of file diff --git a/python/testData/refactoring/introduceField/py4453.py b/python/testData/refactoring/introduceField/py4453.py new file mode 100644 index 000000000000..9001d24c826e --- /dev/null +++ b/python/testData/refactoring/introduceField/py4453.py @@ -0,0 +1,11 @@ +import math + +__author__ = 'wombat' +class SolverEquation: + def demo(self): + a = 3 + b = 25 + c = 46 + root1 = (-b + math.sqrt(b ** 2 - 4 * a * c)) / (2*a) + root2 = (-b - math.sqrt(b ** 2 - 4 * a * c)) / (2*a) + print(root1,root2) \ No newline at end of file diff --git a/python/testSrc/com/jetbrains/python/PythonAllTestsSuite.java b/python/testSrc/com/jetbrains/python/PythonAllTestsSuite.java index d979f383410b..3750478347f7 100644 --- a/python/testSrc/com/jetbrains/python/PythonAllTestsSuite.java +++ b/python/testSrc/com/jetbrains/python/PythonAllTestsSuite.java @@ -62,7 +62,6 @@ public class PythonAllTestsSuite { PyStatementMoverTest.class, PyIntroduceVariableTest.class, PyIntroduceFieldTest.class, - PyInplaceIntroduceFieldTest.class, PyIntroduceConstantTest.class, PyClassNameCompletionTest.class, PySuppressInspectionsTest.class, diff --git a/python/testSrc/com/jetbrains/python/refactoring/PyInplaceIntroduceFieldTest.java b/python/testSrc/com/jetbrains/python/refactoring/PyInplaceIntroduceFieldTest.java deleted file mode 100644 index 1dc12825d245..000000000000 --- a/python/testSrc/com/jetbrains/python/refactoring/PyInplaceIntroduceFieldTest.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.jetbrains.python.refactoring; - -import com.intellij.codeInsight.template.TemplateManager; -import com.intellij.codeInsight.template.impl.TemplateManagerImpl; -import com.intellij.codeInsight.template.impl.TemplateState; -import com.intellij.testFramework.LightPlatformTestCase; -import com.jetbrains.python.fixtures.PyLightFixtureTestCase; -import com.jetbrains.python.refactoring.introduce.IntroduceOperation; -import com.jetbrains.python.refactoring.introduce.field.PyIntroduceFieldHandler; - -/** - * @author yole - */ -public class PyInplaceIntroduceFieldTest extends PyLightFixtureTestCase { - @SuppressWarnings("JUnitTestCaseWithNonTrivialConstructors") - public PyInplaceIntroduceFieldTest() { - PyLightFixtureTestCase.initPlatformPrefix(); - } - - public void testPy4453() { - doTest(); - } - - public void testPy4414() { - doTest(); - } - - private void doTest() { - String name = getTestName(true); - myFixture.configureByFile("refactoring/inplaceIntroduceField/" + name + ".py"); - final boolean enabled = myFixture.getEditor().getSettings().isVariableInplaceRenameEnabled(); - TemplateManagerImpl templateManager = (TemplateManagerImpl)TemplateManager.getInstance(LightPlatformTestCase.getProject()); - try { - templateManager.setTemplateTesting(true); - myFixture.getEditor().getSettings().setVariableInplaceRenameEnabled(true); - - PyIntroduceFieldHandler handler = new PyIntroduceFieldHandler(); - final IntroduceOperation introduceOperation = new IntroduceOperation(myFixture.getProject(), myFixture.getEditor(), myFixture.getFile(), "a", - false, false); - introduceOperation.setReplaceAll(true); - handler.performAction(introduceOperation); - - TemplateState state = TemplateManagerImpl.getTemplateState(myFixture.getEditor()); - assert state != null; - state.gotoEnd(false); - myFixture.checkResultByFile("refactoring/inplaceIntroduceField/" + name + ".after.py", true); - } - finally { - myFixture.getEditor().getSettings().setVariableInplaceRenameEnabled(enabled); - templateManager.setTemplateTesting(false); - } - } -} diff --git a/python/testSrc/com/jetbrains/python/refactoring/PyIntroduceFieldTest.java b/python/testSrc/com/jetbrains/python/refactoring/PyIntroduceFieldTest.java index ebc89deff379..0cc5cf5c0225 100644 --- a/python/testSrc/com/jetbrains/python/refactoring/PyIntroduceFieldTest.java +++ b/python/testSrc/com/jetbrains/python/refactoring/PyIntroduceFieldTest.java @@ -28,6 +28,14 @@ public class PyIntroduceFieldTest extends PyIntroduceTestCase { doTestSuggestions(PyExpression.class, "s1"); } + public void testPy4453() { + doTestInplace(); + } + + public void testPy4414() { + doTestInplace(); + } + @Override protected IntroduceHandler createHandler() { return new PyIntroduceFieldHandler(); diff --git a/python/testSrc/com/jetbrains/python/refactoring/PyIntroduceTestCase.java b/python/testSrc/com/jetbrains/python/refactoring/PyIntroduceTestCase.java index 8304fb3650f7..6331b338d565 100644 --- a/python/testSrc/com/jetbrains/python/refactoring/PyIntroduceTestCase.java +++ b/python/testSrc/com/jetbrains/python/refactoring/PyIntroduceTestCase.java @@ -1,7 +1,11 @@ package com.jetbrains.python.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.util.text.StringUtil; import com.intellij.psi.util.PsiTreeUtil; +import com.intellij.testFramework.LightPlatformTestCase; import com.intellij.util.Consumer; import com.jetbrains.python.fixtures.PyLightFixtureTestCase; import com.jetbrains.python.psi.PyExpression; @@ -51,4 +55,30 @@ public abstract class PyIntroduceTestCase extends PyLightFixtureTestCase { myFixture.getEditor().getSettings().setVariableInplaceRenameEnabled(inplaceEnabled); } } + + protected void doTestInplace() { + String name = getTestName(true); + myFixture.configureByFile(name + ".py"); + final boolean enabled = myFixture.getEditor().getSettings().isVariableInplaceRenameEnabled(); + TemplateManagerImpl templateManager = (TemplateManagerImpl)TemplateManager.getInstance(LightPlatformTestCase.getProject()); + try { + templateManager.setTemplateTesting(true); + myFixture.getEditor().getSettings().setVariableInplaceRenameEnabled(true); + + IntroduceHandler handler = createHandler(); + final IntroduceOperation introduceOperation = new IntroduceOperation(myFixture.getProject(), myFixture.getEditor(), myFixture.getFile(), "a", + false, false); + introduceOperation.setReplaceAll(true); + handler.performAction(introduceOperation); + + TemplateState state = TemplateManagerImpl.getTemplateState(myFixture.getEditor()); + assert state != null; + state.gotoEnd(false); + myFixture.checkResultByFile(name + ".after.py", true); + } + finally { + myFixture.getEditor().getSettings().setVariableInplaceRenameEnabled(enabled); + templateManager.setTemplateTesting(false); + } + } }