summaryrefslogtreecommitdiff
path: root/plugins/InspectionGadgets/testsrc/com/siyeh/ig/IGQuickFixesTestCase.java
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/InspectionGadgets/testsrc/com/siyeh/ig/IGQuickFixesTestCase.java')
-rw-r--r--plugins/InspectionGadgets/testsrc/com/siyeh/ig/IGQuickFixesTestCase.java45
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);