aboutsummaryrefslogtreecommitdiff
path: root/plugins/base/src/test/kotlin/locationProvider/JavadocExternalLocationProviderTest.kt
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/base/src/test/kotlin/locationProvider/JavadocExternalLocationProviderTest.kt')
-rw-r--r--plugins/base/src/test/kotlin/locationProvider/JavadocExternalLocationProviderTest.kt78
1 files changed, 78 insertions, 0 deletions
diff --git a/plugins/base/src/test/kotlin/locationProvider/JavadocExternalLocationProviderTest.kt b/plugins/base/src/test/kotlin/locationProvider/JavadocExternalLocationProviderTest.kt
new file mode 100644
index 00000000..cb2b0331
--- /dev/null
+++ b/plugins/base/src/test/kotlin/locationProvider/JavadocExternalLocationProviderTest.kt
@@ -0,0 +1,78 @@
+package locationProvider
+
+import org.jetbrains.dokka.base.resolvers.external.DefaultExternalLocationProvider
+import org.jetbrains.dokka.base.resolvers.external.javadoc.JavadocExternalLocationProvider
+import org.jetbrains.dokka.base.resolvers.shared.ExternalDocumentation
+import org.jetbrains.dokka.base.resolvers.shared.PackageList
+import org.jetbrains.dokka.plugability.DokkaContext
+import org.jetbrains.dokka.base.testApi.testRunner.BaseAbstractTest
+import org.jetbrains.dokka.links.*
+import org.junit.jupiter.api.Assertions.assertEquals
+import org.junit.jupiter.api.Test
+import java.net.URL
+
+class JavadocExternalLocationProviderTest : BaseAbstractTest() {
+ private val testDataDir =
+ getTestDataDir("locationProvider").toAbsolutePath().toString().removePrefix("/").let { "/$it" }
+
+ private val jdk = "https://docs.oracle.com/javase/8/docs/api/"
+ private val jdkPackageListURL = URL("file://$testDataDir/jdk8-package-list")
+
+ private val configuration = dokkaConfiguration {
+ sourceSets {
+ sourceSet {
+ sourceRoots = listOf("src/")
+ classpath += jvmStdlibPath!!
+ }
+ }
+ }
+
+ private fun getTestLocationProvider(context: DokkaContext? = null): DefaultExternalLocationProvider {
+ val dokkaContext = context ?: DokkaContext.create(configuration, logger, emptyList())
+ val packageList = PackageList.load(jdkPackageListURL, 8, true)!!
+ val externalDocumentation =
+ ExternalDocumentation(URL(jdk), packageList)
+ return JavadocExternalLocationProvider(externalDocumentation, "--", "-", dokkaContext)
+ }
+
+ @Test
+ fun `link to enum entity of javadoc`() {
+ val locationProvider = getTestLocationProvider()
+ val ktDri = DRI(
+ "java.nio.file",
+ "StandardOpenOption.CREATE",
+ extra = DRIExtraContainer().also { it[EnumEntryDRIExtra] = EnumEntryDRIExtra }.encode()
+ )
+ val javaDri = DRI(
+ "java.nio.file",
+ "StandardOpenOption",
+ Callable("CREATE", null, emptyList()),
+ PointingToDeclaration,
+ DRIExtraContainer().also { it[EnumEntryDRIExtra] = EnumEntryDRIExtra }.encode()
+ )
+
+ assertEquals(
+ "https://docs.oracle.com/javase/8/docs/api/java/nio/file/StandardOpenOption.html#CREATE",
+ locationProvider.resolve(ktDri)
+ )
+
+ assertEquals(
+ "https://docs.oracle.com/javase/8/docs/api/java/nio/file/StandardOpenOption.html#CREATE",
+ locationProvider.resolve(javaDri)
+ )
+ }
+
+ @Test
+ fun `link to nested class of javadoc`() {
+ val locationProvider = getTestLocationProvider()
+ val dri = DRI(
+ "java.rmi.activation",
+ "ActivationGroupDesc.CommandEnvironment"
+ )
+
+ assertEquals(
+ "https://docs.oracle.com/javase/8/docs/api/java/rmi/activation/ActivationGroupDesc.CommandEnvironment.html",
+ locationProvider.resolve(dri)
+ )
+ }
+}