@@ -261,11 +261,11 @@ test('parse()', function (t) {
261261 } ) ;
262262
263263 t . test ( 'limits specific array indices to arrayLimit' , function ( st ) {
264- st . deepEqual ( qs . parse ( 'a[20 ]=a' , { arrayLimit : 20 } ) , { a : [ 'a' ] } ) ;
265- st . deepEqual ( qs . parse ( 'a[21 ]=a' , { arrayLimit : 20 } ) , { a : { 21 : 'a' } } ) ;
264+ st . deepEqual ( qs . parse ( 'a[19 ]=a' , { arrayLimit : 20 } ) , { a : [ 'a' ] } ) ;
265+ st . deepEqual ( qs . parse ( 'a[20 ]=a' , { arrayLimit : 20 } ) , { a : { 20 : 'a' } } ) ;
266266
267- st . deepEqual ( qs . parse ( 'a[20 ]=a' ) , { a : [ 'a' ] } ) ;
268- st . deepEqual ( qs . parse ( 'a[21 ]=a' ) , { a : { 21 : 'a' } } ) ;
267+ st . deepEqual ( qs . parse ( 'a[19 ]=a' ) , { a : [ 'a' ] } ) ;
268+ st . deepEqual ( qs . parse ( 'a[20 ]=a' ) , { a : { 20 : 'a' } } ) ;
269269 st . end ( ) ;
270270 } ) ;
271271
@@ -483,7 +483,7 @@ test('parse()', function (t) {
483483
484484 t . test ( 'allows overriding array limit' , function ( st ) {
485485 st . deepEqual ( qs . parse ( 'a[0]=b' , { arrayLimit : - 1 } ) , { a : { 0 : 'b' } } ) ;
486- st . deepEqual ( qs . parse ( 'a[0]=b' , { arrayLimit : 0 } ) , { a : [ 'b' ] } ) ;
486+ st . deepEqual ( qs . parse ( 'a[0]=b' , { arrayLimit : 0 } ) , { a : { 0 : 'b' } } ) ;
487487
488488 st . deepEqual ( qs . parse ( 'a[-1]=b' , { arrayLimit : - 1 } ) , { a : { '-1' : 'b' } } ) ;
489489 st . deepEqual ( qs . parse ( 'a[-1]=b' , { arrayLimit : 0 } ) , { a : { '-1' : 'b' } } ) ;
@@ -1118,22 +1118,22 @@ test('parse()', function (t) {
11181118 } ) ;
11191119
11201120 st . test ( 'throws error when array limit exceeded' , function ( sst ) {
1121- // 5 elements (indices 0-4), max index 4 > limit 3
1121+ // 4 elements exceeds limit of 3
11221122 sst [ 'throws' ] (
11231123 function ( ) {
1124- qs . parse ( 'a[]=1&a[]=2&a[]=3&a[]=4&a[]=5 ' , { arrayLimit : 3 , throwOnLimitExceeded : true } ) ;
1124+ qs . parse ( 'a[]=1&a[]=2&a[]=3&a[]=4' , { arrayLimit : 3 , throwOnLimitExceeded : true } ) ;
11251125 } ,
1126- new RangeError ( 'Array limit exceeded. Only 4 elements allowed in an array.' ) ,
1126+ new RangeError ( 'Array limit exceeded. Only 3 elements allowed in an array.' ) ,
11271127 'throws error when array limit is exceeded'
11281128 ) ;
11291129 sst . end ( ) ;
11301130 } ) ;
11311131
11321132 st . test ( 'does not throw when at limit' , function ( sst ) {
1133- // 4 elements (indices 0-3), max index 3 = limit 3, should not throw
1134- var result = qs . parse ( 'a[]=1&a[]=2&a[]=3&a[]=4 ' , { arrayLimit : 3 , throwOnLimitExceeded : true } ) ;
1133+ // 3 elements = limit of 3, should not throw
1134+ var result = qs . parse ( 'a[]=1&a[]=2&a[]=3' , { arrayLimit : 3 , throwOnLimitExceeded : true } ) ;
11351135 sst . ok ( Array . isArray ( result . a ) , 'result is an array' ) ;
1136- sst . deepEqual ( result . a , [ '1' , '2' , '3' , '4' ] , 'all values present' ) ;
1136+ sst . deepEqual ( result . a , [ '1' , '2' , '3' ] , 'all values present' ) ;
11371137 sst . end ( ) ;
11381138 } ) ;
11391139
@@ -1347,36 +1347,36 @@ test('DOS', function (t) {
13471347} ) ;
13481348
13491349test ( 'arrayLimit boundary conditions' , function ( t ) {
1350- // arrayLimit is about max index, not length. With arrayLimit: 3, indices 0-3 are allowed (4 elements)
1350+ // arrayLimit is the max number of elements allowed in an array
13511351 t . test ( 'exactly at the limit stays as array' , function ( st ) {
1352- // 4 elements (indices 0-3), max index 3 = limit 3
1353- var result = qs . parse ( 'a[]=1&a[]=2&a[]=3&a[]=4 ' , { arrayLimit : 3 } ) ;
1354- st . ok ( Array . isArray ( result . a ) , 'result is an array when max index equals limit' ) ;
1355- st . deepEqual ( result . a , [ '1' , '2' , '3' , '4' ] , 'all values present' ) ;
1352+ // 3 elements = limit of 3
1353+ var result = qs . parse ( 'a[]=1&a[]=2&a[]=3' , { arrayLimit : 3 } ) ;
1354+ st . ok ( Array . isArray ( result . a ) , 'result is an array when count equals limit' ) ;
1355+ st . deepEqual ( result . a , [ '1' , '2' , '3' ] , 'all values present' ) ;
13561356 st . end ( ) ;
13571357 } ) ;
13581358
13591359 t . test ( 'one over the limit converts to object' , function ( st ) {
1360- // 5 elements (indices 0-4), max index 4 > limit 3
1361- var result = qs . parse ( 'a[]=1&a[]=2&a[]=3&a[]=4&a[]=5 ' , { arrayLimit : 3 } ) ;
1360+ // 4 elements exceeds limit of 3
1361+ var result = qs . parse ( 'a[]=1&a[]=2&a[]=3&a[]=4' , { arrayLimit : 3 } ) ;
13621362 st . notOk ( Array . isArray ( result . a ) , 'result is not an array when over limit' ) ;
1363- st . deepEqual ( result . a , { 0 : '1' , 1 : '2' , 2 : '3' , 3 : '4' , 4 : '5' } , 'all values preserved as object' ) ;
1363+ st . deepEqual ( result . a , { 0 : '1' , 1 : '2' , 2 : '3' , 3 : '4' } , 'all values preserved as object' ) ;
13641364 st . end ( ) ;
13651365 } ) ;
13661366
1367- t . test ( 'arrayLimit 1 with two values ' , function ( st ) {
1368- // 2 elements (indices 0-1), max index 1 = limit 1, should be array
1369- var result = qs . parse ( 'a[]=1&a[]=2 ' , { arrayLimit : 1 } ) ;
1370- st . ok ( Array . isArray ( result . a ) , 'result is an array when max index equals limit' ) ;
1371- st . deepEqual ( result . a , [ '1' , '2' ] , 'both values preserved as array' ) ;
1367+ t . test ( 'arrayLimit 1 with one value ' , function ( st ) {
1368+ // 1 element = limit of 1
1369+ var result = qs . parse ( 'a[]=1' , { arrayLimit : 1 } ) ;
1370+ st . ok ( Array . isArray ( result . a ) , 'result is an array when count equals limit' ) ;
1371+ st . deepEqual ( result . a , [ '1' ] , 'value preserved as array' ) ;
13721372 st . end ( ) ;
13731373 } ) ;
13741374
1375- t . test ( 'arrayLimit 1 with three values converts to object' , function ( st ) {
1376- // 3 elements (indices 0-2), max index 2 > limit 1
1377- var result = qs . parse ( 'a[]=1&a[]=2&a[]=3 ' , { arrayLimit : 1 } ) ;
1375+ t . test ( 'arrayLimit 1 with two values converts to object' , function ( st ) {
1376+ // 2 elements exceeds limit of 1
1377+ var result = qs . parse ( 'a[]=1&a[]=2' , { arrayLimit : 1 } ) ;
13781378 st . notOk ( Array . isArray ( result . a ) , 'result is not an array' ) ;
1379- st . deepEqual ( result . a , { 0 : '1' , 1 : '2' , 2 : '3' } , 'all values preserved as object' ) ;
1379+ st . deepEqual ( result . a , { 0 : '1' , 1 : '2' } , 'all values preserved as object' ) ;
13801380 st . end ( ) ;
13811381 } ) ;
13821382
0 commit comments