1
- ///<reference path='_project.ts'/>
2
-
3
- interface Classification {
1
+ interface Classification {
4
2
length : number ;
5
- class2 : TypeScript . TokenClass ;
3
+ class : ts . TokenClass ;
6
4
}
7
5
8
6
interface ClassiferResult {
9
7
tuples : Classification [ ] ;
10
- finalLexState : TypeScript . LexState ;
8
+ finalEndOfLineState : ts . EndOfLineState ;
11
9
}
12
10
13
11
var TokenClassNames = { } ;
14
- TokenClassNames [ TypeScript . TokenClass . Punctuation ] = "Punctuation" ;
15
- TokenClassNames [ TypeScript . TokenClass . Keyword ] = "Keyword" ;
16
- TokenClassNames [ TypeScript . TokenClass . Operator ] = "Operator" ;
17
- TokenClassNames [ TypeScript . TokenClass . Comment ] = "Comment" ;
18
- TokenClassNames [ TypeScript . TokenClass . Whitespace ] = "Whitespace" ;
19
- TokenClassNames [ TypeScript . TokenClass . Identifier ] = "Identifier" ;
20
- TokenClassNames [ TypeScript . TokenClass . NumberLiteral ] = "NumberLiteral" ;
21
- TokenClassNames [ TypeScript . TokenClass . StringLiteral ] = "StringLiteral" ;
22
- TokenClassNames [ TypeScript . TokenClass . RegExpLiteral ] = "RegExpLiteral" ;
23
-
24
-
25
- describe ( 'Colorization' , function ( ) {
26
- var mytypescriptLS = new Harness . TypeScriptLS ( ) ;
27
- var myls = mytypescriptLS . getLanguageService ( ) ;
28
-
29
- var myclassifier = new Services . ClassifierShim ( myls . host ) ;
30
-
31
- function getClassifications ( code : string , initialLexState ?: TypeScript . LexState = TypeScript . LexState . Start ) : ClassiferResult {
32
- var classResult = myclassifier . getClassificationsForLine ( code , initialLexState ) . split ( '\n' ) ;
12
+ TokenClassNames [ ts . TokenClass . Punctuation ] = "Punctuation" ;
13
+ TokenClassNames [ ts . TokenClass . Keyword ] = "Keyword" ;
14
+ TokenClassNames [ ts . TokenClass . Operator ] = "Operator" ;
15
+ TokenClassNames [ ts . TokenClass . Comment ] = "Comment" ;
16
+ TokenClassNames [ ts . TokenClass . Whitespace ] = "Whitespace" ;
17
+ TokenClassNames [ ts . TokenClass . Identifier ] = "Identifier" ;
18
+ TokenClassNames [ ts . TokenClass . NumberLiteral ] = "NumberLiteral" ;
19
+ TokenClassNames [ ts . TokenClass . StringLiteral ] = "StringLiteral" ;
20
+ TokenClassNames [ ts . TokenClass . RegExpLiteral ] = "RegExpLiteral" ;
21
+
22
+
23
+ describe ( 'Colorization' , function ( ) {
24
+ var mytypescriptLS = new Harness . LanguageService . TypeScriptLS ( ) ;
25
+ var myclassifier = mytypescriptLS . getClassifier ( ) ;
26
+
27
+ function getClassifications ( code : string , initialEndOfLineState : ts . EndOfLineState = ts . EndOfLineState . Start ) : ClassiferResult {
28
+ var classResult = myclassifier . getClassificationsForLine ( code , initialEndOfLineState ) . split ( '\n' ) ;
33
29
var tuples : Classification [ ] = [ ] ;
34
30
var i = 0 ;
35
31
36
32
for ( ; i < classResult . length - 1 ; i += 2 ) {
37
33
tuples [ i / 2 ] = {
38
34
length : parseInt ( classResult [ i ] ) ,
39
- class2 : parseInt ( classResult [ i + 1 ] )
35
+ class : parseInt ( classResult [ i + 1 ] )
40
36
} ;
41
37
}
42
- var finalLexState = classResult [ classResult . length - 1 ] ;
38
+ var finalEndOfLineState = classResult [ classResult . length - 1 ] ;
43
39
44
40
return {
45
41
tuples : tuples ,
46
- finalLexState : parseInt ( finalLexState )
42
+ finalEndOfLineState : parseInt ( finalEndOfLineState )
47
43
} ;
48
44
}
49
45
50
46
function verifyClassification ( classification : Classification , expectedLength : number , expectedClass : number ) {
51
- assert . notNull ( classification ) ;
52
- assert . is ( classification . length === expectedLength , "Classification length does not match expected. Expected: " + expectedLength + ", Actual: " + classification . length ) ;
53
- assert . is ( classification . class2 === expectedClass , "Classification class does not match expected. Expected: " + TokenClassNames [ expectedClass ] + ", Actual: " + TokenClassNames [ classification . class2 ] ) ;
47
+ assert . isNotNull ( classification ) ;
48
+ assert . equal ( classification . length , expectedLength , "Classification length does not match expected. Expected: " + expectedLength + ", Actual: " + classification . length ) ;
49
+ assert . equal ( classification . class , expectedClass , "Classification class does not match expected. Expected: " + TokenClassNames [ expectedClass ] + ", Actual: " + TokenClassNames [ classification . class ] ) ;
54
50
}
55
-
56
- describe ( "test cases for colorization" , function ( ) {
51
+
52
+ describe ( "test cases for colorization" , function ( ) {
57
53
var results = getClassifications ( 'var x:string = "foo"; //Hello' ) ;
58
54
59
- it ( "checks for a keyword" , function ( ) {
60
- verifyClassification ( results . tuples [ 0 ] , 3 , TypeScript . TokenClass . Keyword ) ;
55
+ it ( "checks for a keyword" , function ( ) {
56
+ verifyClassification ( results . tuples [ 0 ] , 3 , ts . TokenClass . Keyword ) ;
61
57
} ) ;
62
58
63
- it ( "checks for a whitespace" , function ( ) {
64
- verifyClassification ( results . tuples [ 1 ] , 4 , TypeScript . TokenClass . Whitespace ) ;
59
+ it ( "checks for a whitespace" , function ( ) {
60
+ verifyClassification ( results . tuples [ 1 ] , 1 , ts . TokenClass . Whitespace ) ;
65
61
} ) ;
66
62
67
- it ( "checks for a identifier" , function ( ) {
68
- verifyClassification ( results . tuples [ 2 ] , 5 , TypeScript . TokenClass . Identifier ) ;
63
+ it ( "checks for a identifier" , function ( ) {
64
+ verifyClassification ( results . tuples [ 2 ] , 1 , ts . TokenClass . Identifier ) ;
69
65
} ) ;
70
66
71
- it ( "checks for an punctuation" , function ( ) {
72
- verifyClassification ( results . tuples [ 3 ] , 6 , TypeScript . TokenClass . Punctuation ) ;
67
+ it ( "checks for an punctuation" , function ( ) {
68
+ verifyClassification ( results . tuples [ 3 ] , 1 , ts . TokenClass . Punctuation ) ;
73
69
} ) ;
74
-
75
- it ( "checks for a operator" , function ( ) {
76
- verifyClassification ( results . tuples [ 6 ] , 14 , TypeScript . TokenClass . Operator ) ;
70
+
71
+ it ( "checks for a operator" , function ( ) {
72
+ verifyClassification ( results . tuples [ 6 ] , 1 , ts . TokenClass . Operator ) ;
77
73
} ) ;
78
74
79
- it ( "checks for a string literal" , function ( ) {
80
- verifyClassification ( results . tuples [ 8 ] , 20 , TypeScript . TokenClass . StringLiteral ) ;
75
+ it ( "checks for a string literal" , function ( ) {
76
+ verifyClassification ( results . tuples [ 8 ] , 5 , ts . TokenClass . StringLiteral ) ;
81
77
} ) ;
82
78
83
- it ( "checks for a comment" , function ( ) {
84
- verifyClassification ( results . tuples [ 11 ] , 29 , TypeScript . TokenClass . Comment ) ;
79
+ it ( "checks for a comment" , function ( ) {
80
+ verifyClassification ( results . tuples [ 11 ] , 7 , ts . TokenClass . Comment ) ;
85
81
} ) ;
86
82
} ) ;
87
83
88
- describe ( "test comment colorization after a divide operator" , function ( ) {
84
+ describe ( "test comment colorization after a divide operator" , function ( ) {
89
85
var results = getClassifications ( '1 / 1 // comment' ) ;
90
86
91
- it ( "checks for a number literal" , function ( ) {
92
- verifyClassification ( results . tuples [ 0 ] , 1 , TypeScript . TokenClass . NumberLiteral ) ;
87
+ it ( "checks for a number literal" , function ( ) {
88
+ verifyClassification ( results . tuples [ 0 ] , 1 , ts . TokenClass . NumberLiteral ) ;
93
89
} ) ;
94
90
95
- it ( "checks for a whitespace" , function ( ) {
96
- verifyClassification ( results . tuples [ 1 ] , 2 , TypeScript . TokenClass . Whitespace ) ;
91
+ it ( "checks for a whitespace" , function ( ) {
92
+ verifyClassification ( results . tuples [ 1 ] , 1 , ts . TokenClass . Whitespace ) ;
97
93
} ) ;
98
94
99
- it ( "checks for a operator" , function ( ) {
100
- verifyClassification ( results . tuples [ 2 ] , 3 , TypeScript . TokenClass . Operator ) ;
95
+ it ( "checks for a operator" , function ( ) {
96
+ verifyClassification ( results . tuples [ 2 ] , 1 , ts . TokenClass . Operator ) ;
101
97
} ) ;
102
98
103
- it ( "checks for a whitespace" , function ( ) {
104
- verifyClassification ( results . tuples [ 3 ] , 4 , TypeScript . TokenClass . Whitespace ) ;
99
+ it ( "checks for a whitespace" , function ( ) {
100
+ verifyClassification ( results . tuples [ 3 ] , 1 , ts . TokenClass . Whitespace ) ;
105
101
} ) ;
106
102
107
- it ( "checks for a number literal" , function ( ) {
108
- verifyClassification ( results . tuples [ 4 ] , 5 , TypeScript . TokenClass . NumberLiteral ) ;
103
+ it ( "checks for a number literal" , function ( ) {
104
+ verifyClassification ( results . tuples [ 4 ] , 1 , ts . TokenClass . NumberLiteral ) ;
109
105
} ) ;
110
106
111
- it ( "checks for a whitespace" , function ( ) {
112
- verifyClassification ( results . tuples [ 5 ] , 6 , TypeScript . TokenClass . Whitespace ) ;
107
+ it ( "checks for a whitespace" , function ( ) {
108
+ verifyClassification ( results . tuples [ 5 ] , 1 , ts . TokenClass . Whitespace ) ;
113
109
} ) ;
114
110
115
- it ( "checks for a comment" , function ( ) {
116
- verifyClassification ( results . tuples [ 6 ] , 16 , TypeScript . TokenClass . Comment ) ;
111
+ it ( "checks for a comment" , function ( ) {
112
+ verifyClassification ( results . tuples [ 6 ] , 10 , ts . TokenClass . Comment ) ;
117
113
} ) ;
118
114
} ) ;
119
115
120
- describe ( "test literal colorization after a divide operator" , function ( ) {
116
+ describe ( "test literal colorization after a divide operator" , function ( ) {
121
117
var results = getClassifications ( '1 / 2, 1 / 2' ) ;
122
118
123
- it ( "checks for a number literal" , function ( ) {
124
- verifyClassification ( results . tuples [ 0 ] , 1 , TypeScript . TokenClass . NumberLiteral ) ;
119
+ it ( "checks for a number literal" , function ( ) {
120
+ verifyClassification ( results . tuples [ 0 ] , 1 , ts . TokenClass . NumberLiteral ) ;
125
121
} ) ;
126
122
127
- it ( "checks for a whitespace" , function ( ) {
128
- verifyClassification ( results . tuples [ 1 ] , 2 , TypeScript . TokenClass . Whitespace ) ;
123
+ it ( "checks for a whitespace" , function ( ) {
124
+ verifyClassification ( results . tuples [ 1 ] , 1 , ts . TokenClass . Whitespace ) ;
129
125
} ) ;
130
126
131
- it ( "checks for a operator" , function ( ) {
132
- verifyClassification ( results . tuples [ 2 ] , 3 , TypeScript . TokenClass . Operator ) ;
127
+ it ( "checks for a operator" , function ( ) {
128
+ verifyClassification ( results . tuples [ 2 ] , 1 , ts . TokenClass . Operator ) ;
133
129
} ) ;
134
130
135
- it ( "checks for a whitespace" , function ( ) {
136
- verifyClassification ( results . tuples [ 3 ] , 4 , TypeScript . TokenClass . Whitespace ) ;
131
+ it ( "checks for a whitespace" , function ( ) {
132
+ verifyClassification ( results . tuples [ 3 ] , 1 , ts . TokenClass . Whitespace ) ;
137
133
} ) ;
138
134
139
- it ( "checks for a number literal" , function ( ) {
140
- verifyClassification ( results . tuples [ 4 ] , 5 , TypeScript . TokenClass . NumberLiteral ) ;
135
+ it ( "checks for a number literal" , function ( ) {
136
+ verifyClassification ( results . tuples [ 4 ] , 1 , ts . TokenClass . NumberLiteral ) ;
141
137
} ) ;
142
138
143
- it ( "checks for a operator" , function ( ) {
144
- verifyClassification ( results . tuples [ 5 ] , 6 , TypeScript . TokenClass . Operator ) ;
139
+ it ( "checks for a operator" , function ( ) {
140
+ verifyClassification ( results . tuples [ 5 ] , 1 , ts . TokenClass . Operator ) ;
145
141
} ) ;
146
142
147
- it ( "checks for a whitespace" , function ( ) {
148
- verifyClassification ( results . tuples [ 6 ] , 7 , TypeScript . TokenClass . Whitespace ) ;
143
+ it ( "checks for a whitespace" , function ( ) {
144
+ verifyClassification ( results . tuples [ 6 ] , 1 , ts . TokenClass . Whitespace ) ;
149
145
} ) ;
150
146
151
- it ( "checks for a number literal" , function ( ) {
152
- verifyClassification ( results . tuples [ 7 ] , 8 , TypeScript . TokenClass . NumberLiteral ) ;
147
+ it ( "checks for a number literal" , function ( ) {
148
+ verifyClassification ( results . tuples [ 7 ] , 1 , ts . TokenClass . NumberLiteral ) ;
153
149
} ) ;
154
150
155
- it ( "checks for a whitespace" , function ( ) {
156
- verifyClassification ( results . tuples [ 8 ] , 9 , TypeScript . TokenClass . Whitespace ) ;
151
+ it ( "checks for a whitespace" , function ( ) {
152
+ verifyClassification ( results . tuples [ 8 ] , 1 , ts . TokenClass . Whitespace ) ;
157
153
} ) ;
158
154
159
- it ( "checks for a operator" , function ( ) {
160
- verifyClassification ( results . tuples [ 9 ] , 10 , TypeScript . TokenClass . Operator ) ;
155
+ it ( "checks for a operator" , function ( ) {
156
+ verifyClassification ( results . tuples [ 9 ] , 1 , ts . TokenClass . Operator ) ;
161
157
} ) ;
162
158
163
- it ( "checks for a whitespace" , function ( ) {
164
- verifyClassification ( results . tuples [ 10 ] , 11 , TypeScript . TokenClass . Whitespace ) ;
159
+ it ( "checks for a whitespace" , function ( ) {
160
+ verifyClassification ( results . tuples [ 10 ] , 1 , ts . TokenClass . Whitespace ) ;
165
161
} ) ;
166
162
167
- it ( "checks for a number literal" , function ( ) {
168
- verifyClassification ( results . tuples [ 11 ] , 12 , TypeScript . TokenClass . NumberLiteral ) ;
163
+ it ( "checks for a number literal" , function ( ) {
164
+ verifyClassification ( results . tuples [ 11 ] , 1 , ts . TokenClass . NumberLiteral ) ;
169
165
} ) ;
170
166
171
167
} ) ;
172
168
173
- describe ( "test cases for colorizing multi-line string" , function ( ) {
174
- it ( "classifies first line correctelly" , function ( ) {
175
- var results = getClassifications ( "'line1\\\n " , TypeScript . LexState . Start ) ;
169
+ describe ( "test cases for colorizing multi-line string" , function ( ) {
170
+ it ( "classifies first line correctelly" , function ( ) {
171
+ var results = getClassifications ( "'line1\\" , ts . EndOfLineState . Start ) ;
176
172
177
173
assert . equal ( results . tuples . length , 1 ) ;
178
- verifyClassification ( results . tuples [ 0 ] , 8 , TypeScript . TokenClass . StringLiteral ) ;
179
- assert . equal ( results . finalLexState , TypeScript . LexState . InMultilineSingleQuoteString ) ;
174
+ verifyClassification ( results . tuples [ 0 ] , 7 , ts . TokenClass . StringLiteral ) ;
175
+ assert . equal ( results . finalEndOfLineState , ts . EndOfLineState . InSingleQuoteStringLiteral ) ;
180
176
} ) ;
181
177
182
- it ( "classifies second line correctelly" , function ( ) {
183
- var results = getClassifications ( "\\\n " , TypeScript . LexState . InMultilineSingleQuoteString ) ;
178
+ it ( "classifies second line correctelly" , function ( ) {
179
+ var results = getClassifications ( "\\" , ts . EndOfLineState . InDoubleQuoteStringLiteral ) ;
184
180
185
181
assert . equal ( results . tuples . length , 1 ) ;
186
- verifyClassification ( results . tuples [ 0 ] , 2 , TypeScript . TokenClass . StringLiteral ) ;
187
- assert . equal ( results . finalLexState , TypeScript . LexState . InMultilineSingleQuoteString ) ;
182
+ verifyClassification ( results . tuples [ 0 ] , 1 , ts . TokenClass . StringLiteral ) ;
183
+ assert . equal ( results . finalEndOfLineState , ts . EndOfLineState . InDoubleQuoteStringLiteral ) ;
188
184
} ) ;
189
185
190
- it ( "classifies third line correctelly" , function ( ) {
191
- var results = getClassifications ( "'" , TypeScript . LexState . InMultilineSingleQuoteString ) ;
186
+ it ( "classifies third line correctelly" , function ( ) {
187
+ var results = getClassifications ( "'" , ts . EndOfLineState . InSingleQuoteStringLiteral ) ;
192
188
193
189
assert . equal ( results . tuples . length , 1 ) ;
194
- verifyClassification ( results . tuples [ 0 ] , 1 , TypeScript . TokenClass . StringLiteral ) ;
195
- assert . equal ( results . finalLexState , TypeScript . LexState . Start ) ;
190
+ verifyClassification ( results . tuples [ 0 ] , 1 , ts . TokenClass . StringLiteral ) ;
191
+ assert . equal ( results . finalEndOfLineState , ts . EndOfLineState . Start ) ;
196
192
} ) ;
197
193
} ) ;
198
194
} ) ;
0 commit comments