diff options
Diffstat (limited to 'plugins/InspectionGadgets/testsrc/com/siyeh/ig/IGQuickFixesTestCase.java')
-rw-r--r-- | plugins/InspectionGadgets/testsrc/com/siyeh/ig/IGQuickFixesTestCase.java | 45 |
1 files changed, 43 insertions, 2 deletions
diff --git a/plugins/InspectionGadgets/testsrc/com/siyeh/ig/IGQuickFixesTestCase.java b/plugins/InspectionGadgets/testsrc/com/siyeh/ig/IGQuickFixesTestCase.java index 2ce63ec4814e..47fd152debec 100644 --- a/plugins/InspectionGadgets/testsrc/com/siyeh/ig/IGQuickFixesTestCase.java +++ b/plugins/InspectionGadgets/testsrc/com/siyeh/ig/IGQuickFixesTestCase.java @@ -16,15 +16,21 @@ package com.siyeh.ig; import com.intellij.codeInsight.intention.IntentionAction; +import com.intellij.codeInspection.ex.QuickFixWrapper; import com.intellij.ide.highlighter.JavaFileType; import com.intellij.openapi.application.PluginPathManager; +import com.intellij.openapi.util.Condition; import com.intellij.pom.java.LanguageLevel; import com.intellij.testFramework.builders.JavaModuleFixtureBuilder; import com.intellij.testFramework.fixtures.JavaCodeInsightFixtureTestCase; import com.intellij.util.ArrayUtil; +import com.intellij.util.containers.ContainerUtil; import org.intellij.lang.annotations.Language; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; +import org.junit.Assert; + +import java.util.List; /** * @author anna @@ -73,6 +79,17 @@ public abstract class IGQuickFixesTestCase extends JavaCodeInsightFixtureTestCas return PluginPathManager.getPluginHomePath("InspectionGadgets") + "/test/com/siyeh/igfixes/"; } + protected void assertQuickfixNotAvailable() { + assertQuickfixNotAvailable(myDefaultHint); + } + + protected void assertQuickfixNotAvailable(final String quickfixName) { + final String testName = getTestName(false); + myFixture.configureByFile(getRelativePath() + "/" + testName + ".java"); + assertEmpty("Quickfix \'" + quickfixName + "\' is available but should not", + myFixture.filterAvailableIntentions(quickfixName)); + } + protected void doTest() { assertNotNull(myDefaultHint); final String testName = getTestName(false); @@ -86,12 +103,36 @@ public abstract class IGQuickFixesTestCase extends JavaCodeInsightFixtureTestCas protected void doTest(final String testName, final String hint) { myFixture.configureByFile(getRelativePath() + "/" + testName + ".java"); - final IntentionAction action = myFixture.findSingleIntention(hint); + final IntentionAction action = findIntention(hint); assertNotNull(action); myFixture.launchAction(action); myFixture.checkResultByFile(getRelativePath() + "/" + testName + ".after.java"); } + public IntentionAction findIntention(@NotNull final String hint) { + final List<IntentionAction> availableIntentions = + ContainerUtil.findAll(myFixture.getAvailableIntentions(), new Condition<IntentionAction>() { + @Override + public boolean value(final IntentionAction intentionAction) { + return intentionAction instanceof QuickFixWrapper; + } + }); + final List<IntentionAction> list = ContainerUtil.findAll(availableIntentions, new Condition<IntentionAction>() { + @Override + public boolean value(IntentionAction intentionAction) { + return intentionAction.getText().equals(hint); + } + }); + if (list.isEmpty()) { + Assert.fail("\"" + hint + "\" not in " + list); + } + else if (list.size() > 1) { + Assert.fail("Too many quickfixes found for \"" + hint + "\": " + list + "]"); + } + return list.get(0); + } + + protected void doExpressionTest( String hint, @Language(value = "JAVA", prefix = "class $X$ {{System.out.print(", suffix = ");}}") @NotNull @NonNls String before, @@ -109,7 +150,7 @@ public abstract class IGQuickFixesTestCase extends JavaCodeInsightFixtureTestCas protected void doTest(String hint, @Language("JAVA") @NotNull @NonNls String before, @Language("JAVA") @NotNull @NonNls String after) { before = before.replace("/**/", "<caret>"); myFixture.configureByText(JavaFileType.INSTANCE, before); - final IntentionAction intention = myFixture.findSingleIntention(hint); + final IntentionAction intention = findIntention(hint); assertNotNull(intention); myFixture.launchAction(intention); myFixture.checkResult(after); |