@@ -349,4 +349,32 @@ describe("decode", () => {
349
349
"index into the 'names' array" ,
350
350
) ;
351
351
} ) ;
352
+
353
+ it ( "throws if GENERATED_RANGE_BINDINGS is out-of-bounds in strict mode" , ( ) => {
354
+ const encoder = new ItemEncoder ( ) ;
355
+ encoder . addUnsignedVLQs ( Tag . GENERATED_RANGE_START , 0 , 0 ) . finishItem ( ) ;
356
+ encoder . addUnsignedVLQs ( Tag . GENERATED_RANGE_BINDINGS ) . addSignedVLQs ( 2 )
357
+ . finishItem ( ) ;
358
+ encoder . addUnsignedVLQs ( Tag . GENERATED_RANGE_END , 2 ) . finishItem ( ) ;
359
+ const map = createMap ( encoder . encode ( ) , [ "foo" ] ) ;
360
+
361
+ assertThrows (
362
+ ( ) => decode ( map , { mode : DecodeMode . STRICT } ) ,
363
+ Error ,
364
+ "index into the 'names' array" ,
365
+ ) ;
366
+ } ) ;
367
+
368
+ it ( "ignores if GENERATED_RANGE_BINDINGS is out-of-bounds in lax mode" , ( ) => {
369
+ const encoder = new ItemEncoder ( ) ;
370
+ encoder . addUnsignedVLQs ( Tag . GENERATED_RANGE_START , 0 , 0 ) . finishItem ( ) ;
371
+ encoder . addUnsignedVLQs ( Tag . GENERATED_RANGE_BINDINGS ) . addSignedVLQs ( 2 )
372
+ . finishItem ( ) ;
373
+ encoder . addUnsignedVLQs ( Tag . GENERATED_RANGE_END , 2 ) . finishItem ( ) ;
374
+ const map = createMap ( encoder . encode ( ) , [ "foo" ] ) ;
375
+
376
+ const info = decode ( map , { mode : DecodeMode . LAX } ) ;
377
+
378
+ assertEquals ( info . ranges [ 0 ] ?. values , [ "" ] ) ;
379
+ } ) ;
352
380
} ) ;
0 commit comments