diff options
author | sebastian.sellmair <sebastian.sellmair@jetbrains.com> | 2020-08-21 10:19:07 +0200 |
---|---|---|
committer | Sebastian Sellmair <34319766+sellmair@users.noreply.github.com> | 2020-08-31 15:10:04 +0200 |
commit | 333091e5c5f896769c3371dd74c87a52ffa9562a (patch) | |
tree | c41e918ef66419eca9eb5ee4fcb0c5230e0a82b9 /plugins/base/src/test | |
parent | 43e38725e64b788564203b8d157df795f443f28e (diff) | |
download | dokka-333091e5c5f896769c3371dd74c87a52ffa9562a.tar.gz dokka-333091e5c5f896769c3371dd74c87a52ffa9562a.tar.bz2 dokka-333091e5c5f896769c3371dd74c87a52ffa9562a.zip |
Implement ParseModuleAndPackageDocFragments API
Diffstat (limited to 'plugins/base/src/test')
-rw-r--r-- | plugins/base/src/test/kotlin/parsers/ParseModuleAndPackageDocFragmentsTest.kt | 199 |
1 files changed, 199 insertions, 0 deletions
diff --git a/plugins/base/src/test/kotlin/parsers/ParseModuleAndPackageDocFragmentsTest.kt b/plugins/base/src/test/kotlin/parsers/ParseModuleAndPackageDocFragmentsTest.kt new file mode 100644 index 00000000..49eddaea --- /dev/null +++ b/plugins/base/src/test/kotlin/parsers/ParseModuleAndPackageDocFragmentsTest.kt @@ -0,0 +1,199 @@ +package parsers + +import org.jetbrains.dokka.base.parsers.IllegalModuleAndPackageDocumentation +import org.jetbrains.dokka.base.parsers.ModuleAndPackageDocFragment +import org.jetbrains.dokka.base.parsers.ModuleAndPackageDocFragment.Classifier.Module +import org.jetbrains.dokka.base.parsers.ModuleAndPackageDocFragment.Classifier.Package +import org.jetbrains.dokka.base.parsers.ModuleAndPackageDocumentationSource +import org.jetbrains.dokka.base.parsers.parseModuleAndPackageDocFragments +import org.junit.jupiter.api.Assertions.assertEquals +import org.junit.jupiter.api.Assertions.assertTrue +import org.junit.jupiter.api.Test +import org.junit.jupiter.api.assertThrows +import org.junit.jupiter.api.io.TempDir +import java.nio.file.Path + +class ParseModuleAndPackageDocFragmentsTest { + + @Test + fun `basic example`() { + + val fragments = parseModuleAndPackageDocFragments( + source( + """ + # Module kotlin-demo + Module description + + # Package org.jetbrains.kotlin.demo + Package demo description + ## Level 2 heading + Heading 2 + + # Package org.jetbrains.kotlin.demo2 + Package demo2 description + """.trimIndent() + ) + ) + + assertEquals( + listOf( + ModuleAndPackageDocFragment( + classifier = Module, + name = "kotlin-demo", + documentation = "Module description" + ), + ModuleAndPackageDocFragment( + classifier = Package, + name = "org.jetbrains.kotlin.demo", + documentation = "Package demo description\n## Level 2 heading\nHeading 2" + ), + ModuleAndPackageDocFragment( + classifier = Package, + name = "org.jetbrains.kotlin.demo2", + documentation = "Package demo2 description" + ) + ), + fragments + ) + } + + @Test + fun `no module name specified fails`() { + val exception = assertThrows<IllegalModuleAndPackageDocumentation> { + parseModuleAndPackageDocFragments( + source( + """ + # Module + No module name given + """.trimIndent() + ) + ) + } + + assertTrue( + "Missing Module name" in exception.message.orEmpty(), + "Expected 'Missing Module name' in error message" + ) + } + + @Test + fun `no package name specified fails`() { + val exception = assertThrows<IllegalModuleAndPackageDocumentation> { + parseModuleAndPackageDocFragments( + source( + """ + # Package + No package name given + """.trimIndent() + ) + ) + } + + assertTrue( + "Missing Package name" in exception.message.orEmpty(), + "Expected 'Missing Package name' in error message" + ) + } + + @Test + fun `white space in module name fails`() { + val exception = assertThrows<IllegalModuleAndPackageDocumentation> { + parseModuleAndPackageDocFragments( + source( + """ + # Module My Module + """.trimIndent() + ) + ) + } + + assertTrue( + "Module My Module" in exception.message.orEmpty(), + "Expected problematic statement in error message" + ) + } + + @Test + fun `white space in package name fails`() { + val exception = assertThrows<IllegalModuleAndPackageDocumentation> { + parseModuleAndPackageDocFragments( + source( + """ + # Package my package + """.trimIndent() + ) + ) + } + + assertTrue( + "Package my package" in exception.message.orEmpty(), + "Expected problematic statement in error message" + ) + } + + @Test + fun `multiple whitespaces are supported in first line`() { + val fragments = parseModuleAndPackageDocFragments( + source( + """ + # Module my-module + My Module + # Package com.my.package + My Package + """.trimIndent() + ) + ) + + assertEquals( + listOf( + ModuleAndPackageDocFragment( + classifier = Module, + name = "my-module", + documentation = "My Module" + ), + ModuleAndPackageDocFragment( + classifier = Package, + name = "com.my.package", + documentation = "My Package" + ) + ), + fragments + ) + } + + @Test + fun `parse from file`(@TempDir temporaryFolder: Path) { + val file = temporaryFolder.resolve("other.md").toFile() + file.writeText( + """ + # Module MyModule + D1 + # Package com.sample + D2 + """.trimIndent() + ) + + assertEquals( + listOf( + ModuleAndPackageDocFragment( + classifier = Module, + name = "MyModule", + documentation = "D1" + ), + ModuleAndPackageDocFragment( + classifier = Package, + name = "com.sample", + documentation = "D2" + ) + ), + parseModuleAndPackageDocFragments(file) + ) + } + + + private fun source(documentation: String): ModuleAndPackageDocumentationSource = + object : ModuleAndPackageDocumentationSource() { + override val sourceDescription: String = "inline test" + override val documentation: String = documentation + } +} |