@@ -457,4 +457,59 @@ test('parse()', function (t) {
457457 } , new TypeError ( 'Decoder has to be a function.' ) ) ;
458458 st . end ( ) ;
459459 } ) ;
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+ } ) ;
460515} ) ;
0 commit comments