aboutsummaryrefslogtreecommitdiff
path: root/plugins/base/src/test
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/base/src/test')
-rw-r--r--plugins/base/src/test/kotlin/locationProvider/AndroidExternalLocationProviderTest.kt89
1 files changed, 89 insertions, 0 deletions
diff --git a/plugins/base/src/test/kotlin/locationProvider/AndroidExternalLocationProviderTest.kt b/plugins/base/src/test/kotlin/locationProvider/AndroidExternalLocationProviderTest.kt
new file mode 100644
index 00000000..ea2c434f
--- /dev/null
+++ b/plugins/base/src/test/kotlin/locationProvider/AndroidExternalLocationProviderTest.kt
@@ -0,0 +1,89 @@
+package locationProvider
+
+import org.jetbrains.dokka.base.resolvers.external.DefaultExternalLocationProvider
+import org.jetbrains.dokka.base.resolvers.external.javadoc.AndroidExternalLocationProvider
+import org.jetbrains.dokka.base.resolvers.shared.ExternalDocumentation
+import org.jetbrains.dokka.base.resolvers.shared.PackageList
+import org.jetbrains.dokka.base.resolvers.shared.RecognizedLinkFormat
+import org.jetbrains.dokka.links.Callable
+import org.jetbrains.dokka.links.DRI
+import org.jetbrains.dokka.links.TypeConstructor
+import org.jetbrains.dokka.plugability.DokkaContext
+import org.jetbrains.dokka.testApi.testRunner.AbstractCoreTest
+import org.junit.jupiter.api.Assertions.assertEquals
+import org.junit.jupiter.api.Test
+import java.net.URL
+
+class AndroidExternalLocationProviderTest : AbstractCoreTest() {
+ private val android = ExternalDocumentation(
+ URL("https://developer.android.com/reference/kotlin"),
+ PackageList(
+ RecognizedLinkFormat.DokkaHtml,
+ setOf("android.content", "android.net"),
+ emptyMap(),
+ URL("file://not-used")
+ )
+ )
+ private val androidx = ExternalDocumentation(
+ URL("https://developer.android.com/reference/kotlin"),
+ PackageList(
+ RecognizedLinkFormat.DokkaHtml,
+ setOf("androidx.appcompat.app"),
+ emptyMap(),
+ URL("file://not-used")
+ )
+ )
+ private val configuration = dokkaConfiguration {
+ sourceSets {
+ sourceSet {
+ sourceRoots = listOf("src/")
+ classpath += jvmStdlibPath!!
+ }
+ }
+ }
+
+ private fun getTestLocationProvider(
+ externalDocumentation: ExternalDocumentation,
+ context: DokkaContext? = null
+ ): DefaultExternalLocationProvider {
+ val dokkaContext = context ?: DokkaContext.create(configuration, logger, emptyList())
+ return AndroidExternalLocationProvider(externalDocumentation, dokkaContext)
+ }
+
+ @Test
+ fun `#1230 anchor to a method from AndroidX`() {
+ val locationProvider = getTestLocationProvider(androidx)
+ val dri = DRI(
+ "androidx.appcompat.app",
+ "AppCompatActivity",
+ Callable("findViewById", null, listOf(TypeConstructor("kotlin.Int", emptyList())))
+ )
+
+ assertEquals(
+ "${androidx.documentationURL}/androidx/appcompat/app/AppCompatActivity.html#findviewbyid",
+ locationProvider.resolve(dri)
+ )
+ }
+
+ @Test
+ fun `anchor to a method from Android`() {
+ val locationProvider = getTestLocationProvider(android)
+ val dri = DRI(
+ "android.content",
+ "ContextWrapper",
+ Callable(
+ "checkCallingUriPermission",
+ null,
+ listOf(
+ TypeConstructor("android.net.Uri", emptyList()),
+ TypeConstructor("kotlin.Int", emptyList())
+ )
+ )
+ )
+
+ assertEquals(
+ "${android.documentationURL}/android/content/ContextWrapper.html#checkcallinguripermission",
+ locationProvider.resolve(dri)
+ )
+ }
+}