package markdown import org.jetbrains.dokka.pages.ClasslikePageNode import org.jetbrains.dokka.pages.ContentDRILink import org.jetbrains.dokka.pages.MemberPageNode import org.jetbrains.dokka.pages.dfs import org.jetbrains.dokka.testApi.testRunner.AbstractCoreTest import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Assertions.assertNotNull import org.junit.jupiter.api.Test class LinkTest : AbstractCoreTest() { @Test fun linkToClassLoader() { val configuration = dokkaConfiguration { passes { pass { sourceRoots = listOf("src/main/kotlin/parser") } } } testInline( """ |/src/main/kotlin/parser/Test.kt |package parser | | /** | * Some docs that link to [ClassLoader.clearAssertionStatus] | */ |fun test(x: ClassLoader) = x.clearAssertionStatus() | """.trimMargin(), configuration ) { renderingStage = { rootPageNode, _ -> (rootPageNode.children.single().children.single() as MemberPageNode) .content .dfs { node -> node is ContentDRILink } .let { assertEquals( "parser//test/#java.lang.ClassLoader/PointingToDeclaration/", (it as ContentDRILink).address.toString() ) } } } } @Test fun returnTypeShouldHaveLinkToOuterClassFromInner() { val configuration = dokkaConfiguration { passes { pass { sourceRoots = listOf("src/main/kotlin/parser") } } } testInline( """ |/src/main/kotlin/parser/Test.kt |package parser | |class Outer { | inner class Inner { | fun foo(): OUTER = TODO() | } |} """.trimMargin(), configuration ) { renderingStage = { rootPageNode, _ -> val root = rootPageNode.children.single().children.single() as ClasslikePageNode val innerClass = root.children.first { it is ClasslikePageNode } val foo = innerClass.children.first { it.name == "foo" } as MemberPageNode assertNotNull(foo.content.dfs { it is ContentDRILink && it.address.toString() == "parser/Outer///PointingToDeclaration/" } ) } } } }