@@ -457,4 +457,59 @@ test('parse()', function (t) {
457
457
} , new TypeError ( 'Decoder has to be a function.' ) ) ;
458
458
st . end ( ) ;
459
459
} ) ;
460
+
461
+ t . test ( 'parses string/object combination' , function ( st ) {
462
+ st . deepEqual (
463
+ qs . parse ( 'a=val1&a.b=val2' , { allowDots : true } ) ,
464
+ { a : { 0 : 'val1' , b : 'val2' } } ,
465
+ 'string + object'
466
+ ) ;
467
+ st . deepEqual (
468
+ qs . parse ( 'a.b=val2&a=val1' , { allowDots : true } ) ,
469
+ { a : { 0 : 'val1' , b : 'val2' } } ,
470
+ 'object + string'
471
+ ) ;
472
+
473
+ st . deepEqual (
474
+ qs . parse ( 'a.b=val2&a=val1&a.c=val3' , { allowDots : true } ) ,
475
+ { a : { 0 : 'val1' , b : 'val2' , c : 'val3' } } ,
476
+ 'object + string + object'
477
+ ) ;
478
+
479
+ st . deepEqual (
480
+ qs . parse ( 'a.b=val2&a=val1&a=val3' , { allowDots : true } ) ,
481
+ { a : { 0 : 'val1' , 1 : 'val3' , b : 'val2' } } ,
482
+ 'object + string + string'
483
+ ) ;
484
+ st . deepEqual (
485
+ qs . parse ( 'a=val1&a.b=val2&a=val3' , { allowDots : true } ) ,
486
+ { a : { 0 : 'val1' , 1 : 'val3' , b : 'val2' } } ,
487
+ 'string + object + string'
488
+ ) ;
489
+
490
+ st . deepEqual (
491
+ qs . parse ( 'a=val1&a=val2&a=val3&a.b=val4' , { allowDots : true } ) ,
492
+ { a : { 0 : 'val1' , 1 : 'val2' , 2 : 'val3' , b : 'val4' } } ,
493
+ 'string + string + string + object'
494
+ ) ;
495
+
496
+ st . deepEqual (
497
+ qs . parse ( 'a=val1&a.b=val2&a.b=val3' , { allowDots : true } ) ,
498
+ { a : { 0 : 'val1' , b : [ 'val2' , 'val3' ] } } ,
499
+ 'string + object + object'
500
+ ) ;
501
+
502
+ st . deepEqual (
503
+ qs . parse ( 'a=val1&a.b=val2&a.b.c=val3' , { allowDots : true } ) ,
504
+ { a : { 0 : 'val1' , b : { 0 : 'val2' , c : 'val3' } } } ,
505
+ 'string + object + nested object'
506
+ ) ;
507
+ st . deepEqual (
508
+ qs . parse ( 'a.b.c=val3&a.b=val2&a=val1' , { allowDots : true } ) ,
509
+ { a : { 0 : 'val1' , b : { 0 : 'val2' , c : 'val3' } } } ,
510
+ 'nested object + object + string'
511
+ ) ;
512
+
513
+ st . end ( ) ;
514
+ } ) ;
460
515
} ) ;
0 commit comments