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/enums/EnumsTest.kt4
-rw-r--r--plugins/base/src/test/kotlin/linking/EnumValuesLinkingTest.kt117
-rw-r--r--plugins/base/src/test/kotlin/locationProvider/JavadocExternalLocationProviderTest.kt4
-rw-r--r--plugins/base/src/test/kotlin/model/JavaTest.kt4
-rw-r--r--plugins/base/src/test/resources/linking/jvmMain/kotlin/linking/source/JavaEnum.java5
-rw-r--r--plugins/base/src/test/resources/linking/jvmMain/kotlin/linking/source/JavaLinker.java8
-rw-r--r--plugins/base/src/test/resources/linking/jvmMain/kotlin/linking/source/KotlinEnum.kt5
-rw-r--r--plugins/base/src/test/resources/linking/jvmMain/kotlin/linking/source/KotlinLinker.kt8
8 files changed, 149 insertions, 6 deletions
diff --git a/plugins/base/src/test/kotlin/enums/EnumsTest.kt b/plugins/base/src/test/kotlin/enums/EnumsTest.kt
index 59a4c6f2..bfdfa73b 100644
--- a/plugins/base/src/test/kotlin/enums/EnumsTest.kt
+++ b/plugins/base/src/test/kotlin/enums/EnumsTest.kt
@@ -125,7 +125,7 @@ class EnumsTest : BaseAbstractTest() {
pagesGenerationStage = { module ->
val entryPage = module.dfs { it.name == "E1" } as ClasslikePageNode
val signaturePart = (entryPage.content.dfs {
- it is ContentGroup && it.dci.toString() == "[enums/Test.E1///PointingToDeclaration/][Symbol]"
+ it is ContentGroup && it.dci.toString() == "[enums/Test.E1///PointingToDeclaration/{\"org.jetbrains.dokka.links.EnumEntryDRIExtra\":{\"key\":\"org.jetbrains.dokka.links.EnumEntryDRIExtra\"}}][Symbol]"
} as ContentGroup)
assertEquals("(\"e1\", 1, true)", signaturePart.constructorSignature())
}
@@ -202,7 +202,7 @@ class EnumsTest : BaseAbstractTest() {
) {
pagesTransformationStage = { m ->
val entryNode = m.children.first { it.name == "enums" }.children.first { it.name == "Test" }.children.firstIsInstance<ClasslikePageNode>()
- val signature = (entryNode.content as ContentGroup).dfs { it is ContentGroup && it.dci.toString() == "[enums/Test.E1///PointingToDeclaration/][Cover]" } as ContentGroup
+ val signature = (entryNode.content as ContentGroup).dfs { it is ContentGroup && it.dci.toString() == "[enums/Test.E1///PointingToDeclaration/{\"org.jetbrains.dokka.links.EnumEntryDRIExtra\":{\"key\":\"org.jetbrains.dokka.links.EnumEntryDRIExtra\"}}][Cover]" } as ContentGroup
signature.assertNode {
header(1) { +"E1" }
diff --git a/plugins/base/src/test/kotlin/linking/EnumValuesLinkingTest.kt b/plugins/base/src/test/kotlin/linking/EnumValuesLinkingTest.kt
new file mode 100644
index 00000000..29e705fd
--- /dev/null
+++ b/plugins/base/src/test/kotlin/linking/EnumValuesLinkingTest.kt
@@ -0,0 +1,117 @@
+package linking
+
+import org.jetbrains.dokka.base.testApi.testRunner.BaseAbstractTest
+import org.jetbrains.dokka.links.DRIExtraContainer
+import org.jetbrains.dokka.links.EnumEntryDRIExtra
+import org.jetbrains.dokka.model.dfs
+import org.jetbrains.dokka.model.doc.DocumentationLink
+import org.jetbrains.dokka.pages.ContentDRILink
+import org.jetbrains.dokka.pages.ContentPage
+import org.jetbrains.kotlin.utils.addToStdlib.safeAs
+import org.jsoup.Jsoup
+import org.junit.jupiter.api.Assertions.*
+import org.junit.jupiter.api.Test
+import java.nio.file.Paths
+import utils.TestOutputWriterPlugin
+import java.lang.AssertionError
+
+class EnumValuesLinkingTest : BaseAbstractTest() {
+
+ @Test
+ fun `check if enum values are correctly linked`() {
+ val writerPlugin = TestOutputWriterPlugin()
+ val testDataDir = getTestDataDir("linking").toAbsolutePath()
+ testFromData(
+ dokkaConfiguration {
+ sourceSets {
+ sourceSet {
+ sourceRoots = listOf(Paths.get("$testDataDir/jvmMain/kotlin").toString())
+ analysisPlatform = "jvm"
+ name = "jvm"
+ }
+ }
+ },
+ pluginOverrides = listOf(writerPlugin)
+ ) {
+ documentablesTransformationStage = {
+ val classlikes = it.packages.single().children
+ assertEquals(4, classlikes.size)
+
+ val javaLinker = classlikes.single { it.name == "JavaLinker" }
+ javaLinker.documentation.values.single().children.run {
+ when (val kotlinLink = this[0].children[1].children[1]) {
+ is DocumentationLink -> kotlinLink.dri.run {
+ assertEquals("KotlinEnum.ON_CREATE", this.classNames)
+ assertEquals(null, this.callable)
+ assertNotNull(DRIExtraContainer(extra)[EnumEntryDRIExtra])
+ }
+ else -> throw AssertionError("Link node is not DocumentationLink type")
+ }
+
+ when (val javaLink = this[0].children[2].children[1]) {
+ is DocumentationLink -> javaLink.dri.run {
+ assertEquals("JavaEnum.ON_DECEIT", this.classNames)
+ assertEquals(null, this.callable)
+ assertNotNull(DRIExtraContainer(extra)[EnumEntryDRIExtra])
+ }
+ else -> throw AssertionError("Link node is not DocumentationLink type")
+ }
+ }
+
+ val kotlinLinker = classlikes.single { it.name == "KotlinLinker" }
+ kotlinLinker.documentation.values.single().children.run {
+ when (val kotlinLink = this[0].children[0].children[5]) {
+ is DocumentationLink -> kotlinLink.dri.run {
+ assertEquals("KotlinEnum.ON_CREATE", this.classNames)
+ assertEquals(null, this.callable)
+ assertNotNull(DRIExtraContainer(extra)[EnumEntryDRIExtra])
+ }
+ else -> throw AssertionError("Link node is not DocumentationLink type")
+ }
+
+ when (val javaLink = this[0].children[0].children[9]) {
+ is DocumentationLink -> javaLink.dri.run {
+ assertEquals("JavaEnum.ON_DECEIT", this.classNames)
+ assertEquals(null, this.callable)
+ assertNotNull(DRIExtraContainer(extra)[EnumEntryDRIExtra])
+ }
+ else -> throw AssertionError("Link node is not DocumentationLink type")
+ }
+ }
+
+ assertEquals(
+ javaLinker.documentation.values.single().children[0].children[1].children[1].safeAs<DocumentationLink>()?.dri,
+ kotlinLinker.documentation.values.single().children[0].children[0].children[5].safeAs<DocumentationLink>()?.dri
+ )
+
+ assertEquals(
+ javaLinker.documentation.values.single().children[0].children[2].children[1].safeAs<DocumentationLink>()?.dri,
+ kotlinLinker.documentation.values.single().children[0].children[0].children[9].safeAs<DocumentationLink>()?.dri
+ )
+ }
+
+ renderingStage = { rootPageNode, _ ->
+ val classlikes = rootPageNode.children.single().children
+ assertEquals(4, classlikes.size)
+
+ val javaLinker = classlikes.single { it.name == "JavaLinker" }
+ (javaLinker as ContentPage).run {
+ assertNotNull(content.dfs { it is ContentDRILink && it.address.classNames == "KotlinEnum.ON_CREATE" })
+ assertNotNull(content.dfs { it is ContentDRILink && it.address.classNames == "JavaEnum.ON_DECEIT" })
+ }
+
+ val kotlinLinker = classlikes.single { it.name == "KotlinLinker" }
+ (kotlinLinker as ContentPage).run {
+ assertNotNull(content.dfs { it is ContentDRILink && it.address.classNames == "KotlinEnum.ON_CREATE" })
+ assertNotNull(content.dfs { it is ContentDRILink && it.address.classNames == "JavaEnum.ON_DECEIT" })
+ }
+
+ // single method will throw an exception if there is no single element (0 or 2+)
+ Jsoup.parse(writerPlugin.writer.contents["root/linking.source/-java-linker/index.html"]).select("a[href=\"../-kotlin-enum/-o-n_-c-r-e-a-t-e/index.html\"]").single()
+ Jsoup.parse(writerPlugin.writer.contents["root/linking.source/-java-linker/index.html"]).select("a[href=\"../-java-enum/-o-n_-d-e-c-e-i-t/index.html\"]").single()
+ Jsoup.parse(writerPlugin.writer.contents["root/linking.source/-kotlin-linker/index.html"]).select("a[href=\"../-kotlin-enum/-o-n_-c-r-e-a-t-e/index.html\"]").single()
+ Jsoup.parse(writerPlugin.writer.contents["root/linking.source/-kotlin-linker/index.html"]).select("a[href=\"../-java-enum/-o-n_-d-e-c-e-i-t/index.html\"]").single()
+ }
+ }
+ }
+}
diff --git a/plugins/base/src/test/kotlin/locationProvider/JavadocExternalLocationProviderTest.kt b/plugins/base/src/test/kotlin/locationProvider/JavadocExternalLocationProviderTest.kt
index cb2b0331..95179e22 100644
--- a/plugins/base/src/test/kotlin/locationProvider/JavadocExternalLocationProviderTest.kt
+++ b/plugins/base/src/test/kotlin/locationProvider/JavadocExternalLocationProviderTest.kt
@@ -45,8 +45,8 @@ class JavadocExternalLocationProviderTest : BaseAbstractTest() {
)
val javaDri = DRI(
"java.nio.file",
- "StandardOpenOption",
- Callable("CREATE", null, emptyList()),
+ "StandardOpenOption.CREATE",
+ null,
PointingToDeclaration,
DRIExtraContainer().also { it[EnumEntryDRIExtra] = EnumEntryDRIExtra }.encode()
)
diff --git a/plugins/base/src/test/kotlin/model/JavaTest.kt b/plugins/base/src/test/kotlin/model/JavaTest.kt
index 886aa0be..aa132f6e 100644
--- a/plugins/base/src/test/kotlin/model/JavaTest.kt
+++ b/plugins/base/src/test/kotlin/model/JavaTest.kt
@@ -391,8 +391,8 @@ class JavaTest : AbstractModelTest("/src/main/kotlin/java/Test.java", "java") {
"RUNTIME",
DRI(
"java.lang.annotation",
- "RetentionPolicy",
- DRICallable("RUNTIME", null, emptyList()),
+ "RetentionPolicy.RUNTIME",
+ null,
PointingToDeclaration,
DRIExtraContainer().also { it[EnumEntryDRIExtra] = EnumEntryDRIExtra }.encode()
)
diff --git a/plugins/base/src/test/resources/linking/jvmMain/kotlin/linking/source/JavaEnum.java b/plugins/base/src/test/resources/linking/jvmMain/kotlin/linking/source/JavaEnum.java
new file mode 100644
index 00000000..016365a7
--- /dev/null
+++ b/plugins/base/src/test/resources/linking/jvmMain/kotlin/linking/source/JavaEnum.java
@@ -0,0 +1,5 @@
+package linking.source;
+
+public enum JavaEnum {
+ ON_DECEIT, ON_DESTROY;
+}
diff --git a/plugins/base/src/test/resources/linking/jvmMain/kotlin/linking/source/JavaLinker.java b/plugins/base/src/test/resources/linking/jvmMain/kotlin/linking/source/JavaLinker.java
new file mode 100644
index 00000000..ac416530
--- /dev/null
+++ b/plugins/base/src/test/resources/linking/jvmMain/kotlin/linking/source/JavaLinker.java
@@ -0,0 +1,8 @@
+package linking.source;
+
+/**
+ * Reference link {@link linking.source.KotlinEnum} should resolve <p>
+ * sjuff sjuff {@link linking.source.KotlinEnum#ON_CREATE} should resolve <p>
+ * sjujj sjujj {@link linking.source.JavaEnum#ON_DECEIT} should resolve
+ */
+public class JavaLinker {}
diff --git a/plugins/base/src/test/resources/linking/jvmMain/kotlin/linking/source/KotlinEnum.kt b/plugins/base/src/test/resources/linking/jvmMain/kotlin/linking/source/KotlinEnum.kt
new file mode 100644
index 00000000..a03316b1
--- /dev/null
+++ b/plugins/base/src/test/resources/linking/jvmMain/kotlin/linking/source/KotlinEnum.kt
@@ -0,0 +1,5 @@
+package linking.source
+
+enum class KotlinEnum {
+ ON_CREATE, ON_CATASTROPHE
+}
diff --git a/plugins/base/src/test/resources/linking/jvmMain/kotlin/linking/source/KotlinLinker.kt b/plugins/base/src/test/resources/linking/jvmMain/kotlin/linking/source/KotlinLinker.kt
new file mode 100644
index 00000000..45afc3d5
--- /dev/null
+++ b/plugins/base/src/test/resources/linking/jvmMain/kotlin/linking/source/KotlinLinker.kt
@@ -0,0 +1,8 @@
+package linking.source
+
+/**
+ * Reference link [KotlinEnum] should resolve <p>
+ * stuff stuff [KotlinEnum.ON_CREATE] should resolve <p>
+ * stuff stuff [JavaEnum.ON_DECEIT] should resolve
+ */
+class KotlinLinker {}