From dec2f982ee7c2e66f36b25b4d7bed021f52b7ba6 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Thu, 7 Jul 2016 19:26:31 +0200 Subject: [PATCH] add test for resolving links to library classes from KDoc comments --- idea/testData/kdoc/navigate/jdkClass.kt | 4 ++ idea/testData/kdoc/navigate/stdlibFunction.kt | 2 + .../editor/quickDoc/QuickDocNavigationTest.kt | 41 +++++++++++++++---- 3 files changed, 40 insertions(+), 7 deletions(-) create mode 100644 idea/testData/kdoc/navigate/jdkClass.kt create mode 100644 idea/testData/kdoc/navigate/stdlibFunction.kt diff --git a/idea/testData/kdoc/navigate/jdkClass.kt b/idea/testData/kdoc/navigate/jdkClass.kt new file mode 100644 index 00000000000..1902891cadf --- /dev/null +++ b/idea/testData/kdoc/navigate/jdkClass.kt @@ -0,0 +1,4 @@ +import java.util.* + +fun foo() { +} diff --git a/idea/testData/kdoc/navigate/stdlibFunction.kt b/idea/testData/kdoc/navigate/stdlibFunction.kt new file mode 100644 index 00000000000..9319450cc2a --- /dev/null +++ b/idea/testData/kdoc/navigate/stdlibFunction.kt @@ -0,0 +1,2 @@ +fun foo() { +} diff --git a/idea/tests/org/jetbrains/kotlin/idea/editor/quickDoc/QuickDocNavigationTest.kt b/idea/tests/org/jetbrains/kotlin/idea/editor/quickDoc/QuickDocNavigationTest.kt index 898325c17b4..195c0f8a344 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/editor/quickDoc/QuickDocNavigationTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/editor/quickDoc/QuickDocNavigationTest.kt @@ -16,25 +16,52 @@ package org.jetbrains.kotlin.idea.editor.quickDoc -import com.intellij.testFramework.fixtures.LightPlatformCodeInsightFixtureTestCase +import com.intellij.psi.PsiClass +import com.intellij.psi.PsiElement +import com.intellij.testFramework.UsefulTestCase import org.jetbrains.kotlin.idea.KotlinQuickDocumentationProvider +import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCase import org.jetbrains.kotlin.idea.test.PluginTestCaseBase +import org.jetbrains.kotlin.idea.test.ProjectDescriptorWithStdlibSources import org.jetbrains.kotlin.psi.KtClass import org.jetbrains.kotlin.psi.KtFunction import org.jetbrains.kotlin.psi.psiUtil.getParentOfType import org.junit.Assert -class QuickDocNavigationTest() : LightPlatformCodeInsightFixtureTestCase() { +class QuickDocNavigationTest() : KotlinLightCodeInsightFixtureTestCase() { override fun getTestDataPath(): String { return PluginTestCaseBase.getTestDataPathBase() + "/kdoc/navigate/" } + override fun getProjectDescriptor() = ProjectDescriptorWithStdlibSources.INSTANCE + fun testSimple() { - myFixture.configureByFile(getTestName(true) + ".kt") - val source = myFixture.elementAtCaret.getParentOfType(false) - val target = KotlinQuickDocumentationProvider().getDocumentationElementForLink( - myFixture.psiManager, "C", source) - Assert.assertTrue(target is KtClass) + val target = resolveDocLink("C") + UsefulTestCase.assertInstanceOf(target, KtClass::class.java) Assert.assertEquals("C", (target as KtClass).name) } + + fun testJdkClass() { + val target = resolveDocLink("ArrayList") + UsefulTestCase.assertInstanceOf(target, PsiClass::class.java) + Assert.assertEquals("ArrayList", (target as PsiClass).name) + } + + fun testStdlibFunction() { + val target = resolveDocLink("arrayListOf") + UsefulTestCase.assertInstanceOf(target, KtFunction::class.java) + Assert.assertEquals("arrayListOf", (target as KtFunction).name) + + val secondaryTarget = KotlinQuickDocumentationProvider().getDocumentationElementForLink( + myFixture.psiManager, "ArrayList", target) + UsefulTestCase.assertInstanceOf(secondaryTarget, PsiClass::class.java) + Assert.assertEquals("ArrayList", (secondaryTarget as PsiClass).name) + } + + private fun resolveDocLink(linkText: String): PsiElement? { + myFixture.configureByFile(getTestName(true) + ".kt") + val source = myFixture.elementAtCaret.getParentOfType(false) + return KotlinQuickDocumentationProvider().getDocumentationElementForLink( + myFixture.psiManager, linkText, source) + } }