@@ -3,7 +3,38 @@ package org.javacs.kt
3
3
import org.hamcrest.Matchers.*
4
4
import org.junit.Assert.assertThat
5
5
import org.junit.Test
6
+ import org.javacs.kt.semantictokens.encodeTokens
7
+ import org.javacs.kt.semantictokens.SemanticToken
8
+ import org.javacs.kt.semantictokens.SemanticTokenType
9
+ import org.javacs.kt.semantictokens.SemanticTokenModifier
6
10
7
11
class SemanticTokensTest : SingleFileTestFixture (" semantictokens" , " SemanticTokens.kt" ) {
8
- // TODO
12
+ @Test fun `tokenize entire file` () {
13
+ val response = languageServer.textDocumentService.semanticTokensFull(semanticTokensParams(file)).get()!!
14
+ val actual = response.data
15
+ val expected = encodeTokens(sequenceOf(
16
+ // SemanticToken(range(1, 5, 1, 13), SemanticTokenType.PROPERTY, setOf(SemanticTokenModifier.DECLARATION)), // variable
17
+ // SemanticToken(range(2, 5, 2, 13), SemanticTokenType.PROPERTY, setOf(SemanticTokenModifier.DECLARATION, SemanticTokenModifier.READONLY)), // constant
18
+ // SemanticToken(range(2, 15, 2, 21), SemanticTokenType.CLASS), // String
19
+ // SemanticToken(range(2, 24, 2, 40), SemanticTokenType.STRING), // "test $variable"
20
+ // SemanticToken(range(2, 30, 2, 39), SemanticTokenType.INTERPOLATION_ENTRY), // $variable
21
+ // SemanticToken(range(2, 31, 2, 39), SemanticTokenType.VARIABLE), // variable
22
+
23
+ // SemanticToken(range(4, 12, 4, 16), SemanticTokenType.CLASS, setOf(SemanticTokenModifier.DECLARATION)), // Type
24
+ // SemanticToken(range(4, 21, 4, 29), SemanticTokenType.PROPERTY, setOf(SemanticTokenModifier.DECLARATION, SemanticTokenModifier.READONLY)), // property
25
+ // SemanticToken(range(4, 31, 4, 34), SemanticTokenType.CLASS), // Int
26
+
27
+ // SemanticToken(range(6, 5, 6, 6), SemanticTokenType.FUNCTION, setOf(SemanticTokenModifier.DECLARATION)), // f
28
+ SemanticToken (range(6 , 7 , 6 , 8 ), SemanticTokenType .PARAMETER , setOf (SemanticTokenModifier .DECLARATION , SemanticTokenModifier .READONLY )), // x
29
+ SemanticToken (range(6 , 10 , 6 , 13 ), SemanticTokenType .CLASS ), // Int?
30
+ SemanticToken (range(6 , 24 , 6 , 27 ), SemanticTokenType .CLASS ), // Int
31
+ SemanticToken (range(6 , 30 , 6 , 31 ), SemanticTokenType .FUNCTION ), // f
32
+ SemanticToken (range(6 , 32 , 6 , 33 ), SemanticTokenType .VARIABLE , setOf (SemanticTokenModifier .READONLY )), // x
33
+ ))
34
+
35
+ println (actual)
36
+ println (expected)
37
+
38
+ assertThat(actual, contains(* expected.toTypedArray()))
39
+ }
9
40
}
0 commit comments