@@ -177,4 +177,44 @@ describe("decode", () => {
177
177
178
178
assertEquals ( info . scopes , [ ] ) ;
179
179
} ) ;
180
+
181
+ it ( "throws in strict mode when encountering an GENERATED_RANGE_END without START" , ( ) => {
182
+ const encoder = new ItemEncoder ( ) ;
183
+ encoder . addUnsignedVLQs ( Tag . GENERATED_RANGE_END ) ;
184
+ encoder . addSignedVLQs ( 42 ) . finishItem ( ) ;
185
+ const map = createMap ( encoder . encode ( ) , [ ] ) ;
186
+
187
+ assertThrows ( ( ) => decode ( map , { mode : DecodeMode . STRICT } ) ) ;
188
+ } ) ;
189
+
190
+ it ( "ignores GENERATED_RANGE_END items without START in loose mode" , ( ) => {
191
+ const encoder = new ItemEncoder ( ) ;
192
+ encoder . addUnsignedVLQs ( Tag . GENERATED_RANGE_END ) ;
193
+ encoder . addSignedVLQs ( 42 ) . finishItem ( ) ;
194
+ const map = createMap ( encoder . encode ( ) , [ ] ) ;
195
+
196
+ const info = decode ( map , { mode : DecodeMode . LOOSE } ) ;
197
+
198
+ assertEquals ( info . ranges , [ ] ) ;
199
+ } ) ;
200
+
201
+ it ( "throws for un-matched GENERATED_RANGE_START at the end in loose mode" , ( ) => {
202
+ const encoder = new ItemEncoder ( ) ;
203
+ encoder . addUnsignedVLQs ( Tag . GENERATED_RANGE_START , 0 ) ;
204
+ encoder . addSignedVLQs ( 42 ) . finishItem ( ) ;
205
+ const map = createMap ( encoder . encode ( ) , [ ] ) ;
206
+
207
+ assertThrows ( ( ) => decode ( map , { mode : DecodeMode . STRICT } ) ) ;
208
+ } ) ;
209
+
210
+ it ( "ignores un-matched GENERATED_RANGE_START at the end in loose mode" , ( ) => {
211
+ const encoder = new ItemEncoder ( ) ;
212
+ encoder . addUnsignedVLQs ( Tag . GENERATED_RANGE_START , 0 ) ;
213
+ encoder . addSignedVLQs ( 42 ) . finishItem ( ) ;
214
+ const map = createMap ( encoder . encode ( ) , [ ] ) ;
215
+
216
+ const info = decode ( map , { mode : DecodeMode . LOOSE } ) ;
217
+
218
+ assertEquals ( info . ranges , [ ] ) ;
219
+ } ) ;
180
220
} ) ;
0 commit comments