1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
/*
* Copyright 2014-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
*/
package content
import org.jetbrains.dokka.base.testApi.testRunner.BaseAbstractTest
import org.jetbrains.dokka.model.dfs
import org.jetbrains.dokka.pages.*
import kotlin.test.Test
import kotlin.test.assertTrue
class HighlightingTest : BaseAbstractTest() {
private val configuration = dokkaConfiguration {
sourceSets {
sourceSet {
sourceRoots = listOf("src/")
classpath = listOf(commonStdlibPath!!)
externalDocumentationLinks = listOf(stdlibExternalDocumentationLink)
}
}
}
@Test
fun `open suspend fun`() {
testInline(
"""
|/src/main/kotlin/test/Test.kt
|package example
|
| open suspend fun simpleFun(): String = "Celebrimbor"
""",
configuration
) {
pagesTransformationStage = { module ->
val symbol = (module.dfs { it.name == "simpleFun" } as MemberPageNode).content
.dfs { it is ContentGroup && it.dci.kind == ContentKind.Symbol }
val children = symbol?.children
for (it in listOf(
Pair(0, TokenStyle.Keyword), Pair(1, TokenStyle.Keyword), Pair(2, TokenStyle.Keyword),
Pair(4, TokenStyle.Punctuation), Pair(5, TokenStyle.Punctuation), Pair(6, TokenStyle.Operator)
))
assertTrue(children?.get(it.first)?.style?.contains(it.second) == true)
assertTrue(children?.get(3)?.children?.first()?.style?.contains(TokenStyle.Function) == true)
}
}
}
@Test
fun `plain typealias of plain class with annotation`() {
testInline(
"""
|/src/main/kotlin/common/Test.kt
|package example
|
|@MustBeDocumented
|@Target(AnnotationTarget.TYPEALIAS)
|annotation class SomeAnnotation
|
|@SomeAnnotation
|typealias PlainTypealias = Int
|
""".trimMargin(),
configuration
) {
pagesTransformationStage = { module ->
val symbol = (module.dfs { it.name == "example" } as PackagePageNode).content
.dfs { it is ContentGroup && it.dci.kind == ContentKind.Symbol }
val children = symbol?.children
for (it in listOf(
Pair(1, TokenStyle.Keyword), Pair(3, TokenStyle.Operator)
))
assertTrue(children?.get(it.first)?.style?.contains(it.second) == true)
val annotation = children?.first()?.children?.first()
assertTrue(annotation?.children?.get(0)?.style?.contains(TokenStyle.Annotation) == true)
assertTrue(annotation?.children?.get(1)?.children?.first()?.style?.contains(TokenStyle.Annotation) == true)
}
}
}
}
|