aboutsummaryrefslogtreecommitdiff
path: root/subprojects/analysis-kotlin-api/src/test
diff options
context:
space:
mode:
Diffstat (limited to 'subprojects/analysis-kotlin-api/src/test')
-rw-r--r--subprojects/analysis-kotlin-api/src/test/kotlin/org/jetbrains/dokka/analysis/test/jvm/java/SampleJavaAnalysisTest.kt49
-rw-r--r--subprojects/analysis-kotlin-api/src/test/kotlin/org/jetbrains/dokka/analysis/test/jvm/kotlin/SampleKotlinJvmAnalysisTest.kt43
-rw-r--r--subprojects/analysis-kotlin-api/src/test/kotlin/org/jetbrains/dokka/analysis/test/jvm/mixed/SampleMixedJvmAnalysisTest.kt81
-rw-r--r--subprojects/analysis-kotlin-api/src/test/kotlin/org/jetbrains/dokka/analysis/test/moduledocs/PackageDocumentationAnalysisTest.kt66
-rw-r--r--subprojects/analysis-kotlin-api/src/test/kotlin/org/jetbrains/dokka/analysis/test/sample/SampleAnalysisTest.kt55
5 files changed, 294 insertions, 0 deletions
diff --git a/subprojects/analysis-kotlin-api/src/test/kotlin/org/jetbrains/dokka/analysis/test/jvm/java/SampleJavaAnalysisTest.kt b/subprojects/analysis-kotlin-api/src/test/kotlin/org/jetbrains/dokka/analysis/test/jvm/java/SampleJavaAnalysisTest.kt
new file mode 100644
index 00000000..f6632f60
--- /dev/null
+++ b/subprojects/analysis-kotlin-api/src/test/kotlin/org/jetbrains/dokka/analysis/test/jvm/java/SampleJavaAnalysisTest.kt
@@ -0,0 +1,49 @@
+/*
+ * Copyright 2014-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
+ */
+
+package org.jetbrains.dokka.analysis.test.jvm.java
+
+import org.jetbrains.dokka.analysis.test.api.javaTestProject
+import org.jetbrains.dokka.analysis.test.api.parse
+import kotlin.test.Test
+import kotlin.test.assertEquals
+
+class SampleJavaAnalysisTest {
+
+ /**
+ * Used as a sample for [javaTestProject]
+ */
+ @Test
+ fun sample() {
+ val testProject = javaTestProject {
+ dokkaConfiguration {
+ moduleName = "java-module-name-for-unit-test"
+
+ javaSourceSet {
+ // source-set specific configuration
+ }
+ }
+ javaFile(pathFromSrc = "org/jetbrains/dokka/test/java/Bar.java") {
+ +"""
+ public class Bar {
+ public static void bar() {
+ System.out.println("Bar");
+ }
+ }
+ """
+ }
+ }
+
+ val module = testProject.parse()
+ assertEquals("java-module-name-for-unit-test", module.name)
+ assertEquals(1, module.packages.size)
+
+ val pckg = module.packages[0]
+ assertEquals("org.jetbrains.dokka.test.java", pckg.name)
+ assertEquals(1, pckg.classlikes.size)
+
+ val fooClass = pckg.classlikes[0]
+ assertEquals("Bar", fooClass.name)
+ }
+}
diff --git a/subprojects/analysis-kotlin-api/src/test/kotlin/org/jetbrains/dokka/analysis/test/jvm/kotlin/SampleKotlinJvmAnalysisTest.kt b/subprojects/analysis-kotlin-api/src/test/kotlin/org/jetbrains/dokka/analysis/test/jvm/kotlin/SampleKotlinJvmAnalysisTest.kt
new file mode 100644
index 00000000..6c73af1f
--- /dev/null
+++ b/subprojects/analysis-kotlin-api/src/test/kotlin/org/jetbrains/dokka/analysis/test/jvm/kotlin/SampleKotlinJvmAnalysisTest.kt
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2014-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
+ */
+
+package org.jetbrains.dokka.analysis.test.jvm.kotlin
+
+import org.jetbrains.dokka.analysis.test.api.kotlinJvmTestProject
+import org.jetbrains.dokka.analysis.test.api.parse
+import kotlin.test.Test
+import kotlin.test.assertEquals
+
+class SampleKotlinJvmAnalysisTest {
+
+ /**
+ * Used as a sample for [kotlinJvmTestProject]
+ */
+ @Test
+ fun sample() {
+ val testProject = kotlinJvmTestProject {
+ dokkaConfiguration {
+ moduleName = "kotlin-jvm-module-name-for-unit-test"
+
+ kotlinSourceSet {
+ // source-set specific configuration
+ }
+ }
+ ktFile(pathFromSrc = "org/jetbrains/dokka/test/kotlin/MyFile.kt") {
+ +"public class Foo {}"
+ }
+ }
+
+ val module = testProject.parse()
+ assertEquals("kotlin-jvm-module-name-for-unit-test", module.name)
+ assertEquals(1, module.packages.size)
+
+ val pckg = module.packages[0]
+ assertEquals("org.jetbrains.dokka.test.kotlin", pckg.name)
+ assertEquals(1, pckg.classlikes.size)
+
+ val fooClass = pckg.classlikes[0]
+ assertEquals("Foo", fooClass.name)
+ }
+}
diff --git a/subprojects/analysis-kotlin-api/src/test/kotlin/org/jetbrains/dokka/analysis/test/jvm/mixed/SampleMixedJvmAnalysisTest.kt b/subprojects/analysis-kotlin-api/src/test/kotlin/org/jetbrains/dokka/analysis/test/jvm/mixed/SampleMixedJvmAnalysisTest.kt
new file mode 100644
index 00000000..fec2ceb8
--- /dev/null
+++ b/subprojects/analysis-kotlin-api/src/test/kotlin/org/jetbrains/dokka/analysis/test/jvm/mixed/SampleMixedJvmAnalysisTest.kt
@@ -0,0 +1,81 @@
+/*
+ * Copyright 2014-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
+ */
+
+package org.jetbrains.dokka.analysis.test.jvm.mixed
+
+import org.jetbrains.dokka.analysis.test.api.mixedJvmTestProject
+import org.jetbrains.dokka.analysis.test.api.parse
+import kotlin.test.Test
+import kotlin.test.assertEquals
+
+class SampleMixedJvmAnalysisTest {
+
+ /**
+ * Used as a sample for [mixedJvmTestProject]
+ */
+ @Test
+ fun sample() {
+ val testProject = mixedJvmTestProject {
+ dokkaConfiguration {
+ moduleName = "mixed-project-module-name-for-unit-test"
+
+ jvmSourceSet {
+ // source-set specific configuration
+ }
+ }
+
+ kotlinSourceDirectory {
+ ktFile(pathFromSrc = "test/MyFile.kt") {
+ +"fun foo(): String = \"Foo\""
+ }
+ javaFile(pathFromSrc = "test/MyJavaFileInKotlin.java") {
+ +"""
+ public class MyJavaFileInKotlin {
+ public static void bar() {
+ System.out.println("Bar");
+ }
+ }
+ """
+ }
+ }
+
+ javaSourceDirectory {
+ ktFile(pathFromSrc = "test/MyFile.kt") {
+ +"fun bar(): String = \"Bar\""
+ }
+ javaFile(pathFromSrc = "test/MyJavaFileInJava.java") {
+ +"""
+ public class MyJavaFileInJava {
+ public static void bar() {
+ System.out.println("Bar");
+ }
+ }
+ """
+ }
+ }
+ }
+
+ val module = testProject.parse()
+ assertEquals("mixed-project-module-name-for-unit-test", module.name)
+ assertEquals(1, module.packages.size)
+
+ val pckg = module.packages[0]
+ assertEquals("test", pckg.name)
+
+ assertEquals(2, pckg.classlikes.size)
+ assertEquals(2, pckg.functions.size)
+
+ val firstClasslike = pckg.classlikes[0]
+ assertEquals("MyJavaFileInKotlin", firstClasslike.name)
+
+ val secondClasslike = pckg.classlikes[1]
+ assertEquals("MyJavaFileInJava", secondClasslike.name)
+
+ val firstFunction = pckg.functions[0]
+ assertEquals("bar", firstFunction.name)
+
+ val secondFunction = pckg.functions[1]
+ assertEquals("foo", secondFunction.name)
+ }
+}
diff --git a/subprojects/analysis-kotlin-api/src/test/kotlin/org/jetbrains/dokka/analysis/test/moduledocs/PackageDocumentationAnalysisTest.kt b/subprojects/analysis-kotlin-api/src/test/kotlin/org/jetbrains/dokka/analysis/test/moduledocs/PackageDocumentationAnalysisTest.kt
new file mode 100644
index 00000000..55507023
--- /dev/null
+++ b/subprojects/analysis-kotlin-api/src/test/kotlin/org/jetbrains/dokka/analysis/test/moduledocs/PackageDocumentationAnalysisTest.kt
@@ -0,0 +1,66 @@
+/*
+ * Copyright 2014-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
+ */
+
+package org.jetbrains.dokka.analysis.test.moduledocs
+
+import org.jetbrains.dokka.analysis.test.api.kotlinJvmTestProject
+import org.jetbrains.dokka.analysis.test.api.useServices
+import org.jetbrains.dokka.model.doc.CodeInline
+import org.jetbrains.dokka.model.doc.Description
+import org.jetbrains.dokka.model.doc.P
+import org.jetbrains.dokka.model.doc.Text
+import kotlin.test.Test
+import kotlin.test.assertEquals
+
+class PackageDocumentationAnalysisTest {
+
+ @Test
+ fun `should parse include description for a nested package in kotlin-jvm`() {
+ val testProject = kotlinJvmTestProject {
+ dokkaConfiguration {
+ kotlinSourceSet {
+ includes = setOf("/documentation/cool-package-description.md")
+ }
+ }
+
+ ktFile(pathFromSrc = "org/jetbrains/dokka/pckg/docs/test/TestFile.kt") {
+ +"class TestFile {}"
+ }
+
+ mdFile(pathFromProjectRoot = "/documentation/cool-package-description.md") {
+ +"""
+ # Package org.jetbrains.dokka.pckg.docs.test
+
+ This is my test description for the package `org.jetbrains.dokka.pckg.docs.test`,
+ which contains only one file named TestFile.kt. It has one empty class.
+ """
+ }
+ }
+
+ testProject.useServices { context ->
+ val pckg = context.module.packages.single { it.name == "org.jetbrains.dokka.pckg.docs.test" }
+
+ val allPackageDocs = moduleAndPackageDocumentationReader.read(pckg)
+ assertEquals(1, allPackageDocs.size)
+
+ val sourceSetPackageDocs = allPackageDocs.entries.single().value
+ assertEquals(1, sourceSetPackageDocs.children.size)
+
+ val descriptionTag = sourceSetPackageDocs.children.single() as Description
+ assertEquals(1, descriptionTag.children.size)
+
+ val paragraphTag = descriptionTag.children.single() as P
+ assertEquals(3, paragraphTag.children.size)
+
+ val expectedParagraphChildren = listOf(
+ Text("This is my test description for the package "),
+ CodeInline(children = listOf(Text(
+ "org.jetbrains.dokka.pckg.docs.test"
+ ))),
+ Text(", which contains only one file named TestFile.kt. It has one empty class.")
+ )
+ assertEquals(expectedParagraphChildren, paragraphTag.children)
+ }
+ }
+}
diff --git a/subprojects/analysis-kotlin-api/src/test/kotlin/org/jetbrains/dokka/analysis/test/sample/SampleAnalysisTest.kt b/subprojects/analysis-kotlin-api/src/test/kotlin/org/jetbrains/dokka/analysis/test/sample/SampleAnalysisTest.kt
new file mode 100644
index 00000000..618e28a8
--- /dev/null
+++ b/subprojects/analysis-kotlin-api/src/test/kotlin/org/jetbrains/dokka/analysis/test/sample/SampleAnalysisTest.kt
@@ -0,0 +1,55 @@
+/*
+ * Copyright 2014-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
+ */
+
+package org.jetbrains.dokka.analysis.test.sample
+
+import org.jetbrains.dokka.analysis.test.api.kotlinJvmTestProject
+import org.jetbrains.dokka.analysis.test.api.useServices
+import kotlin.test.Test
+import kotlin.test.assertEquals
+import kotlin.test.assertNotNull
+
+class SampleAnalysisTest {
+
+ @Test
+ fun `should return sources of a kotlin sample`() {
+ val testProject = kotlinJvmTestProject {
+ dokkaConfiguration {
+ kotlinSourceSet {
+ additionalSourceRoots = setOf("/samples")
+ }
+ }
+ sampleFile("/samples/stringListOf-sample.kt", fqPackageName = "org.jetbrains.dokka.sample.generator") {
+ +"""
+ import org.jetbrains.dokka.DokkaConfiguration
+ import org.jetbrains.dokka.DokkaGenerator
+ import org.jetbrains.dokka.utilities.DokkaLogger
+
+ fun runGenerator(configuration: DokkaConfiguration, logger: DokkaLogger) {
+ DokkaGenerator(configuration, logger).generate()
+ }
+ """
+ }
+ }
+
+ testProject.useServices { context ->
+ val sampleSourceSet = context.configuration.sourceSets.single()
+
+ val sampleProvider = sampleProviderFactory.build()
+ val sample = sampleProvider.getSample(sampleSourceSet, "org.jetbrains.dokka.sample.generator.runGenerator")
+ assertNotNull(sample)
+
+ val expectedImports = listOf(
+ "import org.jetbrains.dokka.DokkaConfiguration",
+ "import org.jetbrains.dokka.DokkaGenerator",
+ "import org.jetbrains.dokka.utilities.DokkaLogger"
+ ).joinToString(separator = "\n")
+
+ val expectedBody = "DokkaGenerator(configuration, logger).generate()"
+
+ assertEquals(expectedImports, sample.imports)
+ assertEquals(expectedBody, sample.body)
+ }
+ }
+}