package org.intellij.plugins.markdown.reference; import com.intellij.openapi.diagnostic.Logger; import com.intellij.psi.PsiFile; import com.intellij.psi.PsiPolyVariantReference; import com.intellij.psi.PsiReference; import com.intellij.testFramework.fixtures.LightPlatformCodeInsightFixtureTestCase; import org.intellij.plugins.markdown.MarkdownTestingUtil; import org.jetbrains.annotations.NotNull; public class LinkDestinationReferenceTest extends LightPlatformCodeInsightFixtureTestCase { public static final Logger LOGGER = Logger.getInstance(LinkDestinationReferenceTest.class); @NotNull @Override protected String getTestDataPath() { return MarkdownTestingUtil.TEST_DATA_PATH + "/reference/linkDestination/"; } @Override protected void setUp() throws Exception { super.setUp(); myFixture.configureByFile("sample.md"); myFixture.copyDirectoryToProject("app", "app"); } private void doTest() { final PsiFile file = myFixture.getFile(); final String fileText = file.getText(); final int linkTitle = fileText.indexOf("[" + getTestName(true) + "]"); assertTrue(linkTitle >= 0); final int app = fileText.indexOf("app", linkTitle); assertTrue(app >= 0); assertGoodReference(file, app); final int foo = fileText.indexOf("foo", app); assertTrue(foo >= 0); assertGoodReference(file, foo); } private static void assertGoodReference(PsiFile file, int app) { final PsiReference reference = file.findReferenceAt(app); assertNotNull(reference); if (reference instanceof PsiPolyVariantReference) { assertTrue(((PsiPolyVariantReference)reference).multiResolve(false).length > 0); } else { assertNotNull(reference.resolve()); } if (LOGGER.isDebugEnabled()) { LOGGER.info(String.valueOf(reference.resolve().getClass())); } } public void testRef() { doTest(); } public void testRefBrack() { doTest(); } public void testLink() { doTest(); } public void testLinkBrack() { doTest(); } public void testUrl() { doTest(); } }