package org.jetbrains.plugins.clojure.editor; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.command.CommandProcessor; import com.intellij.openapi.fileTypes.FileTypeManager; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.TextRange; import com.intellij.psi.PsiFile; import com.intellij.psi.PsiFileFactory; import com.intellij.psi.codeStyle.CodeStyleManager; import com.intellij.util.IncorrectOperationException; import com.intellij.util.LocalTimeCounter; import org.jetbrains.plugins.clojure.base.ClojureBaseTestCase; /** * @author ilyas */ public class ClojureFormatterTest extends ClojureBaseTestCase { private static final String DATA_PATH = System.getProperty("user.dir") + "/testdata/formatter/"; public String getDataPath() { return DATA_PATH; } @Override protected PsiFile createPseudoPhysicalFile(Project project, String fileName, String text) throws IncorrectOperationException { String tmpFile = project.getBaseDir() + fileName; return PsiFileFactory.getInstance(project).createFileFromText(tmpFile, FileTypeManager.getInstance().getFileTypeByFileName(fileName), text, LocalTimeCounter.currentTime(), true); } public void doFormat() { final String testName = getTestName(); final String contents = fetchFile("", testName, SOURCE_FILE_EXT); final String expected = fetchFile("", testName, TEST_FILE_EXT); final PsiFile psiFile = createPseudoPhysicalFile(getProject(), "test.clj", contents); final TextRange textRange = psiFile.getTextRange(); CommandProcessor.getInstance().executeCommand(getProject(), new Runnable() { public void run() { ApplicationManager.getApplication().runWriteAction(new Runnable() { public void run() { CodeStyleManager.getInstance(getProject()).reformatText(psiFile, textRange.getStartOffset(), textRange.getEndOffset()); } }); } }, null, null); assertEquals(expected, psiFile.getText()); } public void testClj_98() { doFormat(); } public void testNameApostrophe() { doFormat(); } public void testKeywordBeforeBrace() { doFormat(); } }