4
4
*/
5
5
6
6
import { LexerState , TokenKind } from '#src/enums'
7
- import type { Token } from '#src/interfaces'
8
7
import type { Point } from '@flex-development/docast'
8
+ import { cast } from '@flex-development/tutils'
9
9
import fs from 'node:fs'
10
10
import path from 'node:path'
11
11
import { VFile } from 'vfile'
@@ -29,41 +29,41 @@ describe('unit:parser', () => {
29
29
30
30
it ( 'should throw if token is not of kind COMMENT_START' , ( ) => {
31
31
// Arrange
32
- let error : SyntaxError | undefined
32
+ const message : string = 'expected token of kind COMMENT_START'
33
+ let error ! : SyntaxError
33
34
34
35
// Act
35
36
try {
36
37
// @ts -expect-error ts(2445)
37
- subject . parseComment ( { } as Token , 0 )
38
+ subject . parseComment ( cast ( { } ) , 0 )
38
39
} catch ( e : unknown ) {
39
- error = e as typeof error
40
+ error = cast ( e )
40
41
}
41
42
42
43
// Expect
43
- expect ( error ) . to . not . be . undefined
44
- expect ( error ) . toBeInstanceOf ( SyntaxError )
45
- expect ( error ?. message ) . to . equal ( 'expected token of kind COMMENT_START' )
44
+ expect ( error ) . to . be . instanceof ( SyntaxError )
45
+ expect ( error ) . to . have . property ( 'message' , message )
46
46
} )
47
47
48
48
it ( 'should throw if token match is not of kind COMMENT_END' , ( ) => {
49
49
// Arrange
50
50
const kind : TokenKind = TokenKind . COMMENT_START
51
+ const message : string = 'expected token of kind COMMENT_END'
51
52
const point : Point = { column : 1 , line : 1 , offset : 0 }
52
53
const state : LexerState = LexerState . COMMENT
53
- let error : SyntaxError | undefined
54
+ let error ! : SyntaxError
54
55
55
56
// Act
56
57
try {
57
58
// @ts -expect-error ts(2445)
58
59
subject . parseComment ( { kind, point, state, value : '/**' } , 0 )
59
60
} catch ( e : unknown ) {
60
- error = e as typeof error
61
+ error = cast ( e )
61
62
}
62
63
63
64
// Expect
64
- expect ( error ) . to . not . be . undefined
65
- expect ( error ) . toBeInstanceOf ( SyntaxError )
66
- expect ( error ?. message ) . to . equal ( 'expected token of kind COMMENT_END' )
65
+ expect ( error ) . to . be . instanceof ( SyntaxError )
66
+ expect ( error ) . to . have . property ( 'message' , message )
67
67
} )
68
68
} )
69
69
@@ -77,22 +77,22 @@ describe('unit:parser', () => {
77
77
it ( 'should throw if token match is not of kind CONTEXT_END' , ( ) => {
78
78
// Arrange
79
79
const kind : TokenKind = TokenKind . CONTEXT_START
80
+ const message : string = 'expected token of kind CONTEXT_END'
80
81
const point : Point = { column : 1 , line : 36 , offset : 1005 }
81
82
const state : LexerState = LexerState . READY
82
- let error : SyntaxError | undefined
83
+ let error ! : SyntaxError
83
84
84
85
// Act
85
86
try {
86
87
// @ts -expect-error ts(2445)
87
88
subject . parseContext ( { kind, point, state, value : '' } , 0 )
88
89
} catch ( e : unknown ) {
89
- error = e as typeof error
90
+ error = cast ( e )
90
91
}
91
92
92
93
// Expect
93
- expect ( error ) . to . not . be . undefined
94
- expect ( error ) . toBeInstanceOf ( SyntaxError )
95
- expect ( error ?. message ) . to . equal ( 'expected token of kind CONTEXT_END' )
94
+ expect ( error ) . to . be . instanceof ( SyntaxError )
95
+ expect ( error ) . to . have . property ( 'message' , message )
96
96
} )
97
97
} )
98
98
@@ -111,42 +111,42 @@ describe('unit:parser', () => {
111
111
it ( `should throw if token is not of kind ${ kinds [ 0 ] } ` , ( ) => {
112
112
// Arrange
113
113
const kind : keyof typeof TokenKind = kinds [ 0 ] !
114
- let error : SyntaxError | undefined
114
+ const message : string = `expected token of kind ${ kind } `
115
+ let error ! : SyntaxError
115
116
116
117
// Act
117
118
try {
118
119
// @ts -expect-error ts(2445)
119
- subject . parseImplicitDescription ( { } as Token , 0 )
120
+ subject . parseImplicitDescription ( cast ( { } ) , 0 )
120
121
} catch ( e : unknown ) {
121
- error = e as typeof error
122
+ error = cast ( e )
122
123
}
123
124
124
125
// Expect
125
- expect ( error ) . to . not . be . undefined
126
- expect ( error ) . toBeInstanceOf ( SyntaxError )
127
- expect ( error ?. message ) . to . equal ( `expected token of kind ${ kind } ` )
126
+ expect ( error ) . to . be . instanceof ( SyntaxError )
127
+ expect ( error ) . to . have . property ( 'message' , message )
128
128
} )
129
129
130
130
it ( `should throw if token match is not of kind ${ kinds [ 1 ] } ` , ( ) => {
131
131
// Arrange
132
132
const kind_expected : keyof typeof TokenKind = kinds [ 1 ] !
133
133
const kind : TokenKind = TokenKind . IMPLICIT_DESCRIPTION_START
134
+ const message : string = `expected token of kind ${ kind_expected } `
134
135
const point : Point = { column : 4 , line : 9 , offset : 95 }
135
136
const state : LexerState = LexerState . IMPLICIT_DESCRIPTION
136
- let error : SyntaxError | undefined
137
+ let error ! : SyntaxError
137
138
138
139
// Act
139
140
try {
140
141
// @ts -expect-error ts(2445)
141
142
subject . parseImplicitDescription ( { kind, point, state, value : 'T' } , 0 )
142
143
} catch ( e : unknown ) {
143
- error = e as typeof error
144
+ error = cast ( e )
144
145
}
145
146
146
147
// Expect
147
- expect ( error ) . to . not . be . undefined
148
- expect ( error ) . toBeInstanceOf ( SyntaxError )
149
- expect ( error ?. message ) . to . equal ( `expected token of kind ${ kind_expected } ` )
148
+ expect ( error ) . to . be . instanceof ( SyntaxError )
149
+ expect ( error ) . to . have . property ( 'message' , message )
150
150
} )
151
151
} )
152
152
@@ -159,41 +159,41 @@ describe('unit:parser', () => {
159
159
160
160
it ( 'should throw if token is not of kind TAG_BLOCK_START' , ( ) => {
161
161
// Arrange
162
- let error : SyntaxError | undefined
162
+ const message : string = 'expected token of kind TAG_BLOCK_START'
163
+ let error ! : SyntaxError
163
164
164
165
// Act
165
166
try {
166
167
// @ts -expect-error ts(2445)
167
- subject . parseTagBlock ( { } as Token , 0 )
168
+ subject . parseTagBlock ( cast ( { } ) , 0 )
168
169
} catch ( e : unknown ) {
169
- error = e as typeof error
170
+ error = cast ( e )
170
171
}
171
172
172
173
// Expect
173
- expect ( error ) . to . not . be . undefined
174
- expect ( error ) . toBeInstanceOf ( SyntaxError )
175
- expect ( error ?. message ) . to . equal ( 'expected token of kind TAG_BLOCK_START' )
174
+ expect ( error ) . to . be . instanceof ( SyntaxError )
175
+ expect ( error ) . to . have . property ( 'message' , message )
176
176
} )
177
177
178
178
it ( 'should throw if token match is not of kind TAG_BLOCK_END' , ( ) => {
179
179
// Arrange
180
180
const kind : TokenKind = TokenKind . TAG_BLOCK_START
181
+ const message : string = 'expected token of kind TAG_BLOCK_END'
181
182
const point : Point = { column : 4 , line : 2 , offset : 7 }
182
183
const state : LexerState = LexerState . COMMENT
183
- let error : SyntaxError | undefined
184
+ let error ! : SyntaxError
184
185
185
186
// Act
186
187
try {
187
188
// @ts -expect-error ts(2445)
188
189
subject . parseTagBlock ( { kind, point, state, value : '@' } , 0 )
189
190
} catch ( e : unknown ) {
190
- error = e as typeof error
191
+ error = cast ( e )
191
192
}
192
193
193
194
// Expect
194
- expect ( error ) . to . not . be . undefined
195
- expect ( error ) . toBeInstanceOf ( SyntaxError )
196
- expect ( error ?. message ) . to . equal ( 'expected token of kind TAG_BLOCK_END' )
195
+ expect ( error ) . to . be . instanceof ( SyntaxError )
196
+ expect ( error ) . to . have . property ( 'message' , message )
197
197
} )
198
198
} )
199
199
@@ -206,42 +206,42 @@ describe('unit:parser', () => {
206
206
207
207
it ( 'should throw if token is not of kind TAG_INLINE_START' , ( ) => {
208
208
// Arrange
209
- let error : SyntaxError | undefined
209
+ const message : string = 'expected token of kind TAG_INLINE_START'
210
+ let error ! : SyntaxError
210
211
211
212
// Act
212
213
try {
213
214
// @ts -expect-error ts(2445)
214
- subject . parseTagInline ( { } as Token , 0 )
215
+ subject . parseTagInline ( cast ( { } ) , 0 )
215
216
} catch ( e : unknown ) {
216
- error = e as typeof error
217
+ error = cast ( e )
217
218
}
218
219
219
220
// Expect
220
- expect ( error ) . to . not . be . undefined
221
- expect ( error ) . toBeInstanceOf ( SyntaxError )
222
- expect ( error ?. message ) . to . equal ( 'expected token of kind TAG_INLINE_START' )
221
+ expect ( error ) . to . be . instanceof ( SyntaxError )
222
+ expect ( error ) . to . have . property ( 'message' , message )
223
223
} )
224
224
225
225
it ( 'should throw if token match is not of kind TAG_INLINE_END' , ( ) => {
226
226
// Arrange
227
227
const kind : TokenKind = TokenKind . TAG_INLINE_START
228
+ const message : string = 'expected token of kind TAG_INLINE_END'
228
229
const point : Point = { column : 9 , line : 21 , offset : 631 }
229
230
const state : LexerState = LexerState . COMMENT
230
231
const value : string = '{@link psum}'
231
- let error : SyntaxError | undefined
232
+ let error ! : SyntaxError
232
233
233
234
// Act
234
235
try {
235
236
// @ts -expect-error ts(2445)
236
237
subject . parseTagInline ( { kind, point, state, value } , 0 )
237
238
} catch ( e : unknown ) {
238
- error = e as typeof error
239
+ error = cast ( e )
239
240
}
240
241
241
242
// Expect
242
- expect ( error ) . to . not . be . undefined
243
- expect ( error ) . toBeInstanceOf ( SyntaxError )
244
- expect ( error ?. message ) . to . equal ( 'expected token of kind TAG_INLINE_END' )
243
+ expect ( error ) . to . be . instanceof ( SyntaxError )
244
+ expect ( error ) . to . have . property ( 'message' , message )
245
245
} )
246
246
} )
247
247
0 commit comments