IDEADEV-40882 add static imports when needed
[idea/community.git] / plugins / IntentionPowerPak / src / com / siyeh / ipp / junit / FlipAssertLiteralIntention.java
index c030a9c63939c9e9691159bd6c8b7550dc23d5fc..a410b867977b7ae263336479d56e4f03eb12b865 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2006 Dave Griffith, Bas Leijdekkers
+ * Copyright 2003-2009 Dave Griffith, Bas Leijdekkers
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  */
 package com.siyeh.ipp.junit;
 
-import com.intellij.openapi.util.text.StringUtil;
+import com.intellij.codeInsight.AnnotationUtil;
 import com.intellij.psi.*;
+import com.intellij.psi.util.PsiTreeUtil;
 import com.intellij.util.IncorrectOperationException;
 import com.siyeh.IntentionPowerPackBundle;
 import com.siyeh.ipp.base.MutablyNamedIntention;
 import com.siyeh.ipp.base.PsiElementPredicate;
 import com.siyeh.ipp.psiutils.BoolUtils;
+import com.siyeh.ipp.psiutils.ImportUtils;
 import org.jetbrains.annotations.NonNls;
 import org.jetbrains.annotations.NotNull;
 
 public class FlipAssertLiteralIntention extends MutablyNamedIntention {
 
+    @Override
     protected String getTextForElement(PsiElement element) {
         final PsiMethodCallExpression call = (PsiMethodCallExpression)element;
         final PsiReferenceExpression methodExpression =
                 call.getMethodExpression();
-      @NonNls final String fromMethodName = StringUtil.notNullize(methodExpression.getReferenceName());
+        @NonNls final String fromMethodName = methodExpression.getReferenceName();
         @NonNls final String toMethodName;
         if ("assertTrue".equals(fromMethodName)) {
             toMethodName = "assertFalse";
@@ -43,11 +46,12 @@ public class FlipAssertLiteralIntention extends MutablyNamedIntention {
                 fromMethodName, toMethodName);
     }
 
-    @NotNull
+    @Override @NotNull
     public PsiElementPredicate getElementPredicate() {
         return new AssertTrueOrFalsePredicate();
     }
 
+    @Override
     public void processIntention(PsiElement element)
             throws IncorrectOperationException {
         final PsiMethodCallExpression call = (PsiMethodCallExpression)element;
@@ -82,6 +86,14 @@ public class FlipAssertLiteralIntention extends MutablyNamedIntention {
                     args[0].getText() + ',' +
                     BoolUtils.getNegatedExpressionText(arg) + ')';
         }
+        if (qualifier == null) {
+            final PsiMethod containingMethod =
+                    PsiTreeUtil.getParentOfType(call, PsiMethod.class);
+            if (containingMethod != null &&
+                AnnotationUtil.isAnnotated(containingMethod, "org.junit.Test", true)) {
+                ImportUtils.addStaticImport(element, "org.junit.Assert", toMethodName);
+            }
+        }
         replaceExpression(callString, call);
     }
 }
\ No newline at end of file