package org.jetbrains.plugins.clojure.resolve; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.CharsetToolkit; import com.intellij.openapi.vfs.LocalFileSystem; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiReference; import org.jetbrains.plugins.clojure.base.ClojureLightPlatformCodeInsightTestCase; import org.jetbrains.plugins.clojure.util.TestUtils; import java.io.File; import java.io.IOException; /** * @author ilyas */ public abstract class ClojureResolveTestCaseBase extends ClojureLightPlatformCodeInsightTestCase { public String folderPath() { return TestUtils.getTestDataPath() + "/"; } private static String JDK_HOME = TestUtils.getMockJdk(); public abstract String getTestDataPath(); public String getTestFolderPath() { VirtualFile testDataRoot = LocalFileSystem.getInstance().findFileByPath(getTestDataPath()); assertNotNull(testDataRoot); return testDataRoot.getPath() + File.separatorChar + getTestName(true) + File.separatorChar; } protected void configureByFileName(String fileName) throws IOException { String filePath = folderPath() + File.separator + fileName; File ioFile = new File(filePath); String fileText = FileUtil.loadFile(ioFile, CharsetToolkit.UTF8); fileText = StringUtil.convertLineSeparators(fileText); int offset = fileText.indexOf("<ref>"); fileText = fileText.replace("<ref>", ""); configureFromFileText(ioFile.getName(), fileText); if (offset != -1) { getEditor().getCaretModel().moveToOffset(offset); } } protected PsiReference findReference() { return getFile().findReferenceAt(getEditor().getCaretModel().getOffset()); } }