@@ -32,6 +32,38 @@ test('parse()', function (t) {
3232 st . end ( ) ;
3333 } ) ;
3434
35+ t . test ( 'arrayFormat: brackets allows only explicit arrays' , function ( st ) {
36+ st . deepEqual ( qs . parse ( 'a[]=b&a[]=c' , { arrayFormat : 'brackets' } ) , { a : [ 'b' , 'c' ] } ) ;
37+ st . deepEqual ( qs . parse ( 'a[0]=b&a[1]=c' , { arrayFormat : 'brackets' } ) , { a : [ 'b' , 'c' ] } ) ;
38+ st . deepEqual ( qs . parse ( 'a=b,c' , { arrayFormat : 'brackets' } ) , { a : 'b,c' } ) ;
39+ st . deepEqual ( qs . parse ( 'a=b&a=c' , { arrayFormat : 'brackets' } ) , { a : [ 'b' , 'c' ] } ) ;
40+ st . end ( ) ;
41+ } ) ;
42+
43+ t . test ( 'arrayFormat: indices allows only indexed arrays' , function ( st ) {
44+ st . deepEqual ( qs . parse ( 'a[]=b&a[]=c' , { arrayFormat : 'indices' } ) , { a : [ 'b' , 'c' ] } ) ;
45+ st . deepEqual ( qs . parse ( 'a[0]=b&a[1]=c' , { arrayFormat : 'indices' } ) , { a : [ 'b' , 'c' ] } ) ;
46+ st . deepEqual ( qs . parse ( 'a=b,c' , { arrayFormat : 'indices' } ) , { a : 'b,c' } ) ;
47+ st . deepEqual ( qs . parse ( 'a=b&a=c' , { arrayFormat : 'indices' } ) , { a : [ 'b' , 'c' ] } ) ;
48+ st . end ( ) ;
49+ } ) ;
50+
51+ t . test ( 'arrayFormat: comma allows only comma-separated arrays' , function ( st ) {
52+ st . deepEqual ( qs . parse ( 'a[]=b&a[]=c' , { arrayFormat : 'comma' } ) , { a : [ 'b' , 'c' ] } ) ;
53+ st . deepEqual ( qs . parse ( 'a[0]=b&a[1]=c' , { arrayFormat : 'comma' } ) , { a : [ 'b' , 'c' ] } ) ;
54+ st . deepEqual ( qs . parse ( 'a=b,c' , { arrayFormat : 'comma' } ) , { a : 'b,c' } ) ;
55+ st . deepEqual ( qs . parse ( 'a=b&a=c' , { arrayFormat : 'comma' } ) , { a : [ 'b' , 'c' ] } ) ;
56+ st . end ( ) ;
57+ } ) ;
58+
59+ t . test ( 'arrayFormat: repeat allows only repeated values' , function ( st ) {
60+ st . deepEqual ( qs . parse ( 'a[]=b&a[]=c' , { arrayFormat : 'repeat' } ) , { a : [ 'b' , 'c' ] } ) ;
61+ st . deepEqual ( qs . parse ( 'a[0]=b&a[1]=c' , { arrayFormat : 'repeat' } ) , { a : [ 'b' , 'c' ] } ) ;
62+ st . deepEqual ( qs . parse ( 'a=b,c' , { arrayFormat : 'repeat' } ) , { a : 'b,c' } ) ;
63+ st . deepEqual ( qs . parse ( 'a=b&a=c' , { arrayFormat : 'repeat' } ) , { a : [ 'b' , 'c' ] } ) ;
64+ st . end ( ) ;
65+ } ) ;
66+
3567 t . test ( 'allows enabling dot notation' , function ( st ) {
3668 st . deepEqual ( qs . parse ( 'a.b=c' ) , { 'a.b' : 'c' } ) ;
3769 st . deepEqual ( qs . parse ( 'a.b=c' , { allowDots : true } ) , { a : { b : 'c' } } ) ;
0 commit comments