package org.jetbrains.dokka.tests import org.jetbrains.dokka.* import org.jetbrains.kotlin.cli.common.config.KotlinSourceRoot import org.jetbrains.kotlin.cli.jvm.config.JavaSourceRoot import org.junit.Test import java.io.File // TODO: add tests back class HtmlFormatTest: FileGeneratorTestCase() { override val formatService = HtmlFormatService(fileGenerator, KotlinLanguageService(), HtmlTemplateService.default(), listOf()) @Test fun classWithCompanionObject() { verifyHtmlNode("classWithCompanionObject") } @Test fun htmlEscaping() { verifyHtmlNode("htmlEscaping") } @Test fun overloads() { verifyHtmlNodes("overloads") { model -> model.members } } @Test fun overloadsWithDescription() { verifyHtmlNode("overloadsWithDescription") } @Test fun overloadsWithDifferentDescriptions() { verifyHtmlNode("overloadsWithDifferentDescriptions") } @Test fun deprecated() { verifyOutput("testdata/format/deprecated.kt", ".package.html") { model, output -> buildPagesAndReadInto(model.members, output) } verifyOutput("testdata/format/deprecated.kt", ".class.html") { model, output -> buildPagesAndReadInto(model.members.single().members, output) } } @Test fun brokenLink() { verifyHtmlNode("brokenLink") } @Test fun codeSpan() { verifyHtmlNode("codeSpan") } @Test fun parenthesis() { verifyHtmlNode("parenthesis") } @Test fun bracket() { verifyHtmlNode("bracket") } @Test fun see() { verifyHtmlNode("see") } @Test fun tripleBackticks() { verifyHtmlNode("tripleBackticks") } @Test fun typeLink() { verifyHtmlNodes("typeLink") { model -> model.members.single().members.filter { it.name == "Bar" } } } @Test fun parameterAnchor() { verifyHtmlNode("parameterAnchor") } @Test fun javaSupertypeLink() { verifyJavaHtmlNodes("JavaSupertype") { model -> model.members.single().members.single { it.name == "JavaSupertype" }.members.filter { it.name == "Bar" } } } @Test fun codeBlock() { verifyHtmlNode("codeBlock") } @Test fun javaLinkTag() { verifyJavaHtmlNode("javaLinkTag") } @Test fun javaLinkTagWithLabel() { verifyJavaHtmlNode("javaLinkTagWithLabel") } @Test fun javaSeeTag() { verifyJavaHtmlNode("javaSeeTag") } @Test fun javaDeprecated() { verifyJavaHtmlNodes("javaDeprecated") { model -> model.members.single().members.single { it.name == "Foo" }.members.filter { it.name == "foo" } } } @Test fun crossLanguageKotlinExtendsJava() { verifyOutput(arrayOf( KotlinSourceRoot("testdata/format/crossLanguage/kotlinExtendsJava/Bar.kt", false), JavaSourceRoot(File("testdata/format/crossLanguage/kotlinExtendsJava"), null)), ".html") { model, output -> buildPagesAndReadInto( model.members.single().members.filter { it.name == "Bar" }, output ) } } @Test fun orderedList() { verifyHtmlNodes("orderedList") { model -> model.members.single().members.filter { it.name == "Bar" } } } @Test fun linkWithLabel() { verifyHtmlNodes("linkWithLabel") { model -> model.members.single().members.filter { it.name == "Bar" } } } @Test fun entity() { verifyHtmlNodes("entity") { model -> model.members.single().members.filter { it.name == "Bar" } } } @Test fun uninterpretedEmphasisCharacters() { verifyHtmlNode("uninterpretedEmphasisCharacters") } @Test fun markdownInLinks() { verifyHtmlNode("markdownInLinks") } @Test fun returnWithLink() { verifyHtmlNode("returnWithLink") } @Test fun linkWithStarProjection() { verifyHtmlNode("linkWithStarProjection", withKotlinRuntime = true) } @Test fun functionalTypeWithNamedParameters() { verifyHtmlNode("functionalTypeWithNamedParameters") } @Test fun sinceKotlin() { verifyHtmlNode("sinceKotlin") } @Test fun blankLineInsideCodeBlock() { verifyHtmlNode("blankLineInsideCodeBlock") } @Test fun indentedCodeBlock() { verifyHtmlNode("indentedCodeBlock") } private fun verifyHtmlNode(fileName: String, withKotlinRuntime: Boolean = false) { verifyHtmlNodes(fileName, withKotlinRuntime) { model -> model.members.single().members } } private fun verifyHtmlNodes(fileName: String, withKotlinRuntime: Boolean = false, nodeFilter: (DocumentationModule) -> List) { verifyOutput("testdata/format/$fileName.kt", ".html", withKotlinRuntime = withKotlinRuntime) { model, output -> buildPagesAndReadInto(nodeFilter(model), output) } } private fun verifyJavaHtmlNode(fileName: String, withKotlinRuntime: Boolean = false) { verifyJavaHtmlNodes(fileName, withKotlinRuntime) { model -> model.members.single().members } } private fun verifyJavaHtmlNodes(fileName: String, withKotlinRuntime: Boolean = false, nodeFilter: (DocumentationModule) -> List) { verifyJavaOutput("testdata/format/$fileName.java", ".html", withKotlinRuntime = withKotlinRuntime) { model, output -> buildPagesAndReadInto(nodeFilter(model), output) } } }