From a027893fc42a46e52551cf083decbaa141e60826 Mon Sep 17 00:00:00 2001 From: Alexey Date: Wed, 15 Sep 2010 15:09:21 +0400 Subject: [PATCH] Updated version of the "conditionalOperatorConvertor" sample plugin. --- .../META-INF/plugin.xml | 10 +- .../conditionalOperatorConvertor.iml | 12 +- .../conditionalOperatorConvertor.ipr | 118 +++++++++--------- .../ConditionalOperatorConvertor.java | 2 +- .../after.java.template | 0 .../before.java.template | 0 .../description.html | 12 ++ .../description.html | 7 -- .../testData/before.template.after.java | 11 ++ .../testData/before.template.java | 6 + .../testSource/testPlugin/YourTest.java | 62 +++++++++ .../codeInsight/ConditionalToIfTest.java | 49 -------- 12 files changed, 165 insertions(+), 124 deletions(-) rename samples/conditionalOperatorConvertor/source/intentionDescriptions/{Convert ternary operator to if statement => ConditionalOperatorConvertor}/after.java.template (100%) rename samples/conditionalOperatorConvertor/source/intentionDescriptions/{Convert ternary operator to if statement => ConditionalOperatorConvertor}/before.java.template (100%) create mode 100644 samples/conditionalOperatorConvertor/source/intentionDescriptions/ConditionalOperatorConvertor/description.html delete mode 100644 samples/conditionalOperatorConvertor/source/intentionDescriptions/Convert ternary operator to if statement/description.html create mode 100644 samples/conditionalOperatorConvertor/testData/before.template.after.java create mode 100644 samples/conditionalOperatorConvertor/testData/before.template.java create mode 100644 samples/conditionalOperatorConvertor/testSource/testPlugin/YourTest.java delete mode 100644 samples/conditionalOperatorConvertor/testSrc/com/intellij/codeInsight/ConditionalToIfTest.java diff --git a/samples/conditionalOperatorConvertor/META-INF/plugin.xml b/samples/conditionalOperatorConvertor/META-INF/plugin.xml index f2cc0ab0e74e..ceb6ce3046cd 100644 --- a/samples/conditionalOperatorConvertor/META-INF/plugin.xml +++ b/samples/conditionalOperatorConvertor/META-INF/plugin.xml @@ -1,4 +1,6 @@ + Conditional Operator Converter ConditionalOperatorConverter @@ -7,13 +9,19 @@ 1.3 JetBrains + + - + com.intellij.codeInsight.intention.ConditionalOperatorConvertor Conditional Operator + ConditionalOperatorConvertor + diff --git a/samples/conditionalOperatorConvertor/conditionalOperatorConvertor.iml b/samples/conditionalOperatorConvertor/conditionalOperatorConvertor.iml index b33c9efa2fed..16a756ac2d47 100644 --- a/samples/conditionalOperatorConvertor/conditionalOperatorConvertor.iml +++ b/samples/conditionalOperatorConvertor/conditionalOperatorConvertor.iml @@ -1,16 +1,16 @@ - + - - - + + + + - + - diff --git a/samples/conditionalOperatorConvertor/conditionalOperatorConvertor.ipr b/samples/conditionalOperatorConvertor/conditionalOperatorConvertor.ipr index e2f1d8c7b4c1..dca74c112276 100644 --- a/samples/conditionalOperatorConvertor/conditionalOperatorConvertor.ipr +++ b/samples/conditionalOperatorConvertor/conditionalOperatorConvertor.ipr @@ -1,16 +1,10 @@ - + - - + + - - + + + @@ -40,14 +41,6 @@ - - - - - - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + + + + + + + + + + + + + + @@ -181,13 +184,14 @@ - - - diff --git a/samples/conditionalOperatorConvertor/source/com/intellij/codeInsight/intention/ConditionalOperatorConvertor.java b/samples/conditionalOperatorConvertor/source/com/intellij/codeInsight/intention/ConditionalOperatorConvertor.java index 5078f3b4ff7a..ffee0ad54d4c 100644 --- a/samples/conditionalOperatorConvertor/source/com/intellij/codeInsight/intention/ConditionalOperatorConvertor.java +++ b/samples/conditionalOperatorConvertor/source/com/intellij/codeInsight/intention/ConditionalOperatorConvertor.java @@ -49,7 +49,7 @@ import org.jetbrains.annotations.Nullable; final int offset = editor.getCaretModel().getOffset(); final PsiElement element = file.findElementAt(offset); PsiConditionalExpression conditionalExpression = PsiTreeUtil.getParentOfType(element, - PsiConditionalExpression.class, false); + PsiConditionalExpression.class, false); if (conditionalExpression == null) return; if (conditionalExpression.getThenExpression() == null || conditionalExpression.getElseExpression() == null) return; diff --git a/samples/conditionalOperatorConvertor/source/intentionDescriptions/Convert ternary operator to if statement/after.java.template b/samples/conditionalOperatorConvertor/source/intentionDescriptions/ConditionalOperatorConvertor/after.java.template similarity index 100% rename from samples/conditionalOperatorConvertor/source/intentionDescriptions/Convert ternary operator to if statement/after.java.template rename to samples/conditionalOperatorConvertor/source/intentionDescriptions/ConditionalOperatorConvertor/after.java.template diff --git a/samples/conditionalOperatorConvertor/source/intentionDescriptions/Convert ternary operator to if statement/before.java.template b/samples/conditionalOperatorConvertor/source/intentionDescriptions/ConditionalOperatorConvertor/before.java.template similarity index 100% rename from samples/conditionalOperatorConvertor/source/intentionDescriptions/Convert ternary operator to if statement/before.java.template rename to samples/conditionalOperatorConvertor/source/intentionDescriptions/ConditionalOperatorConvertor/before.java.template diff --git a/samples/conditionalOperatorConvertor/source/intentionDescriptions/ConditionalOperatorConvertor/description.html b/samples/conditionalOperatorConvertor/source/intentionDescriptions/ConditionalOperatorConvertor/description.html new file mode 100644 index 000000000000..7a3a66caf072 --- /dev/null +++ b/samples/conditionalOperatorConvertor/source/intentionDescriptions/ConditionalOperatorConvertor/description.html @@ -0,0 +1,12 @@ + + + + This intention converts the ternary operator to the if statement.
+ For example:
+ the (a > 0) ? return a;: return -a;
+ will be converted to the code:
+ if (a > 0) { return a;}
+ else {return -a;}
+
+ + \ No newline at end of file diff --git a/samples/conditionalOperatorConvertor/source/intentionDescriptions/Convert ternary operator to if statement/description.html b/samples/conditionalOperatorConvertor/source/intentionDescriptions/Convert ternary operator to if statement/description.html deleted file mode 100644 index 8795bad7e03b..000000000000 --- a/samples/conditionalOperatorConvertor/source/intentionDescriptions/Convert ternary operator to if statement/description.html +++ /dev/null @@ -1,7 +0,0 @@ - - - - This intention converts a ternary operator to an if statement. - - - \ No newline at end of file diff --git a/samples/conditionalOperatorConvertor/testData/before.template.after.java b/samples/conditionalOperatorConvertor/testData/before.template.after.java new file mode 100644 index 000000000000..6682628f7ea2 --- /dev/null +++ b/samples/conditionalOperatorConvertor/testData/before.template.after.java @@ -0,0 +1,11 @@ +public class X { + void f(boolean isMale) { + String title; + if (isMale) { + title = "Mr."; + } else { + title = "Ms."; + } + System.out.println("title = " + title); + } +} \ No newline at end of file diff --git a/samples/conditionalOperatorConvertor/testData/before.template.java b/samples/conditionalOperatorConvertor/testData/before.template.java new file mode 100644 index 000000000000..74107ea2d439 --- /dev/null +++ b/samples/conditionalOperatorConvertor/testData/before.template.java @@ -0,0 +1,6 @@ +public class X { + void f(boolean isMale) { + String title = isMale ? "Mr." : "Ms."; + System.out.println("title = " + title); + } +} \ No newline at end of file diff --git a/samples/conditionalOperatorConvertor/testSource/testPlugin/YourTest.java b/samples/conditionalOperatorConvertor/testSource/testPlugin/YourTest.java new file mode 100644 index 000000000000..c1d1064fe8fe --- /dev/null +++ b/samples/conditionalOperatorConvertor/testSource/testPlugin/YourTest.java @@ -0,0 +1,62 @@ +package testPlugin; + +import com.intellij.codeInsight.intention.IntentionAction; + +import com.intellij.testFramework.builders.JavaModuleFixtureBuilder; +import com.intellij.testFramework.fixtures.*; +import junit.framework.Assert; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +/** + * Created by IntelliJ IDEA. + * User: Alexey.Chursin + * Date: Sep 13, 2010 + * Time: 9:35:50 PM + * To change this template use File | Settings | File Templates. + */ + +public class YourTest { + protected CodeInsightTestFixture myFixture; + // Specify path to your test data + // e.g. final String dataPath = "c:\\users\\john.doe\\idea\\community\\samples\\conditionalOperatorConvertor/testData"; + final String dataPath = "c:\\users\\FirstName.LastName\\idea\\community\\samples\\conditionalOperatorConvertor/testData"; + + @Before + + public void setUp() throws Exception { + + final IdeaTestFixtureFactory fixtureFactory = IdeaTestFixtureFactory.getFixtureFactory(); + final TestFixtureBuilder testFixtureBuilder = fixtureFactory.createFixtureBuilder(); + myFixture = JavaTestFixtureFactory.getFixtureFactory().createCodeInsightFixture(testFixtureBuilder.getFixture()); + myFixture.setTestDataPath(dataPath); + final JavaModuleFixtureBuilder builder = testFixtureBuilder.addModule(JavaModuleFixtureBuilder.class); + + builder.addContentRoot(myFixture.getTempDirPath()).addSourceRoot(""); + builder.setMockJdkLevel(JavaModuleFixtureBuilder.MockJdkLevel.jdk15); + myFixture.setUp(); + + } + + @After + public void tearDown() throws Exception { + myFixture.tearDown(); + myFixture = null; + } + + protected void doTest(String testName, String hint) throws Throwable { + // Messages.showInfoMessage("Test started", "Info"); + myFixture.configureByFile(testName + ".java"); + final IntentionAction action = myFixture.findSingleIntention(hint); + Assert.assertNotNull(action); + myFixture.launchAction(action); + myFixture.checkResultByFile(testName + ".after.java"); + } + + @Test + public void test() throws Throwable { + doTest("before.template", "Convert ternary operator to if statement"); + } + +} diff --git a/samples/conditionalOperatorConvertor/testSrc/com/intellij/codeInsight/ConditionalToIfTest.java b/samples/conditionalOperatorConvertor/testSrc/com/intellij/codeInsight/ConditionalToIfTest.java deleted file mode 100644 index 375c14cd587c..000000000000 --- a/samples/conditionalOperatorConvertor/testSrc/com/intellij/codeInsight/ConditionalToIfTest.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Created by IntelliJ IDEA. - * User: mike - * Date: Aug 22, 2002 - * Time: 2:58:42 PM - * To change template for new class use - * Code Style | Class Templates options (Tools | IDE Options). - */ -package com.intellij.codeInsight; - -import com.intellij.codeInsight.intention.ConditionalOperatorConvertor; -import com.intellij.psi.codeStyle.CodeStyleSettings; -import com.intellij.psi.codeStyle.CodeStyleSettingsManager; -import com.intellij.testFramework.LightCodeInsightTestCase; - -public class ConditionalToIfTest extends LightCodeInsightTestCase { - private ConditionalOperatorConvertor myAction; - private static final String BASE_PATH = "/codeInsight/conditionalToIf/"; - private boolean myElseOnNewLine; - - protected void setUp() throws Exception { - super.setUp(); - - myAction = new ConditionalOperatorConvertor(); - CodeStyleSettings settings = CodeStyleSettingsManager.getSettings(getProject()); - myElseOnNewLine = settings.ELSE_ON_NEW_LINE; - settings.ELSE_ON_NEW_LINE = true; - } - - protected void tearDown() throws Exception { - CodeStyleSettings settings = CodeStyleSettingsManager.getSettings(getProject()); - settings.ELSE_ON_NEW_LINE = myElseOnNewLine; - - super.tearDown(); - } - - public void testAssign() throws Exception { doTest(); } - - public void testDeclaration() throws Exception { doTest(); } - - - private void doTest() throws Exception { - configureByFile(BASE_PATH + getTestName(false) + ".java"); - assertTrue(myAction.isAvailable(getProject(), getEditor(), getFile())); - myAction.invoke(getProject(), getEditor(), getFile()); - checkResultByFile(BASE_PATH + getTestName(false) + "_after.java"); - } - -}