Every guy in the town should be able to use UnwrapTestCase
authorMaxim.Mossienko <Maxim.Mossienko@jetbrains.com>
Thu, 5 Nov 2009 21:55:53 +0000 (00:55 +0300)
committerMaxim.Mossienko <Maxim.Mossienko@jetbrains.com>
Thu, 5 Nov 2009 21:55:53 +0000 (00:55 +0300)
platform/lang-impl/src/com/intellij/codeInsight/unwrap/UnwrapAction.java
platform/testFramework/testSrc/com/intellij/codeInsight/unwrap/UnwrapTestCase.java [new file with mode: 0644]

index f06e46664384b612363404ec0d268895dff8cdbc..0ca3ec7554048fa0b9688378b336c81eddb66dfb 100644 (file)
@@ -24,6 +24,7 @@ import com.intellij.psi.*;
 
 public class UnwrapAction extends BaseCodeInsightAction{
   public UnwrapAction() {
+    super(true);
     setEnabledInModalContext(true);
   }
 
diff --git a/platform/testFramework/testSrc/com/intellij/codeInsight/unwrap/UnwrapTestCase.java b/platform/testFramework/testSrc/com/intellij/codeInsight/unwrap/UnwrapTestCase.java
new file mode 100644 (file)
index 0000000..5545063
--- /dev/null
@@ -0,0 +1,77 @@
+package com.intellij.codeInsight.unwrap;
+
+import com.intellij.openapi.actionSystem.AnAction;
+import com.intellij.openapi.editor.Editor;
+import com.intellij.openapi.util.text.StringUtil;
+import com.intellij.psi.PsiFile;
+import com.intellij.testFramework.LightPlatformCodeInsightTestCase;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+public abstract class UnwrapTestCase extends LightPlatformCodeInsightTestCase {
+  protected void assertUnwrapped(String codeBefore, String expectedCodeAfter) throws Exception {
+    assertUnwrapped(codeBefore, expectedCodeAfter, 0);
+  }
+
+  protected void assertUnwrapped(String codeBefore, String expectedCodeAfter, final int option) throws Exception {
+    configureCode(codeBefore);
+
+    UnwrapHandler h = new UnwrapHandler() {
+      @Override
+      protected void selectOption(List<AnAction> options, Editor editor, PsiFile file) {
+        if (options.isEmpty()) return;
+        options.get(option).actionPerformed(null);
+      }
+    };
+
+    h.invoke(getProject(), getEditor(), getFile());
+
+    checkResultByText(createCode(expectedCodeAfter));
+  }
+
+  protected void assertOptions(String code, String... expectedOptions) throws IOException {
+    configureCode(code);
+
+    final List<String> actualOptions = new ArrayList<String>();
+
+    UnwrapHandler h = new UnwrapHandler() {
+      @Override
+      protected void selectOption(List<AnAction> options, Editor editor, PsiFile file) {
+        for (AnAction each : options) {
+          actualOptions.add(each.getTemplatePresentation().getText());
+        }
+      }
+    };
+
+    h.invoke(getProject(), getEditor(), getFile());
+
+    assertEquals(Arrays.asList(expectedOptions), actualOptions);
+  }
+
+  protected void configureCode(final String codeBefore) throws IOException {
+    configureFromFileText(getFileNameToCreate(), createCode(codeBefore));
+  }
+
+  protected String getFileNameToCreate() {
+    return "A.java";
+  }
+
+  protected String createCode(String codeBefore) {
+    return "public class A {\n" +
+    "    void foo() {\n" +
+    indentTwice(codeBefore) +
+    "    }\n" +
+    "}";
+  }
+
+  protected String indentTwice(String code) {
+    String result = "";
+    for (String line : StringUtil.tokenize(code, "\n")) {
+      result += "        " + line + "\n";
+    }
+    return result;
+  }
+}
\ No newline at end of file