@@ -162,7 +162,7 @@ test('stringify()', function (t) {
162162
163163 st . test ( 'array with multiple items with a comma inside' , function ( s2t ) {
164164 s2t . equal ( qs . stringify ( { a : [ 'c,d' , 'e' ] } , { encodeValuesOnly : true , arrayFormat : 'comma' } ) , 'a=c%2Cd,e' ) ;
165- s2t . equal ( qs . stringify ( { a : [ 'c,d' , 'e' ] } , { arrayFormat : 'comma' } ) , 'a=c%25% 2Cd%2Ce' ) ;
165+ s2t . equal ( qs . stringify ( { a : [ 'c,d' , 'e' ] } , { arrayFormat : 'comma' } ) , 'a=c%2Cd%2Ce' ) ;
166166
167167 s2t . end ( ) ;
168168 } ) ;
@@ -178,6 +178,44 @@ test('stringify()', function (t) {
178178 st . end ( ) ;
179179 } ) ;
180180
181+ t . test ( 'stringifies comma and empty array values' , function ( st ) {
182+ st . equal ( qs . stringify ( { a : [ ',' , '' , 'c,d%' ] } , { encode : false , arrayFormat : 'indices' } ) , 'a[0]=,&a[1]=&a[2]=c,d%' ) ;
183+ st . equal ( qs . stringify ( { a : [ ',' , '' , 'c,d%' ] } , { encode : false , arrayFormat : 'brackets' } ) , 'a[]=,&a[]=&a[]=c,d%' ) ;
184+ st . equal ( qs . stringify ( { a : [ ',' , '' , 'c,d%' ] } , { encode : false , arrayFormat : 'comma' } ) , 'a=,,,c,d%' ) ;
185+ st . equal ( qs . stringify ( { a : [ ',' , '' , 'c,d%' ] } , { encode : false , arrayFormat : 'repeat' } ) , 'a=,&a=&a=c,d%' ) ;
186+
187+ st . equal ( qs . stringify ( { a : [ ',' , '' , 'c,d%' ] } , { encode : true , encodeValuesOnly : true , arrayFormat : 'indices' } ) , 'a[0]=%2C&a[1]=&a[2]=c%2Cd%25' ) ;
188+ st . equal ( qs . stringify ( { a : [ ',' , '' , 'c,d%' ] } , { encode : true , encodeValuesOnly : true , arrayFormat : 'brackets' } ) , 'a[]=%2C&a[]=&a[]=c%2Cd%25' ) ;
189+ st . equal ( qs . stringify ( { a : [ ',' , '' , 'c,d%' ] } , { encode : true , encodeValuesOnly : true , arrayFormat : 'comma' } ) , 'a=%2C,,c%2Cd%25' ) ;
190+ st . equal ( qs . stringify ( { a : [ ',' , '' , 'c,d%' ] } , { encode : true , encodeValuesOnly : true , arrayFormat : 'repeat' } ) , 'a=%2C&a=&a=c%2Cd%25' ) ;
191+
192+ st . equal ( qs . stringify ( { a : [ ',' , '' , 'c,d%' ] } , { encode : true , encodeValuesOnly : false , arrayFormat : 'indices' } ) , 'a%5B0%5D=%2C&a%5B1%5D=&a%5B2%5D=c%2Cd%25' ) ;
193+ st . equal ( qs . stringify ( { a : [ ',' , '' , 'c,d%' ] } , { encode : true , encodeValuesOnly : false , arrayFormat : 'brackets' } ) , 'a%5B%5D=%2C&a%5B%5D=&a%5B%5D=c%2Cd%25' ) ;
194+ st . equal ( qs . stringify ( { a : [ ',' , '' , 'c,d%' ] } , { encode : true , encodeValuesOnly : false , arrayFormat : 'comma' } ) , 'a=%2C%2C%2Cc%2Cd%25' ) ;
195+ st . equal ( qs . stringify ( { a : [ ',' , '' , 'c,d%' ] } , { encode : true , encodeValuesOnly : false , arrayFormat : 'repeat' } ) , 'a=%2C&a=&a=c%2Cd%25' ) ;
196+
197+ st . end ( ) ;
198+ } ) ;
199+
200+ t . test ( 'stringifies comma and empty non-array values' , function ( st ) {
201+ st . equal ( qs . stringify ( { a : ',' , b : '' , c : 'c,d%' } , { encode : false , arrayFormat : 'indices' } ) , 'a=,&b=&c=c,d%' ) ;
202+ st . equal ( qs . stringify ( { a : ',' , b : '' , c : 'c,d%' } , { encode : false , arrayFormat : 'brackets' } ) , 'a=,&b=&c=c,d%' ) ;
203+ st . equal ( qs . stringify ( { a : ',' , b : '' , c : 'c,d%' } , { encode : false , arrayFormat : 'comma' } ) , 'a=,&b=&c=c,d%' ) ;
204+ st . equal ( qs . stringify ( { a : ',' , b : '' , c : 'c,d%' } , { encode : false , arrayFormat : 'repeat' } ) , 'a=,&b=&c=c,d%' ) ;
205+
206+ st . equal ( qs . stringify ( { a : ',' , b : '' , c : 'c,d%' } , { encode : true , encodeValuesOnly : true , arrayFormat : 'indices' } ) , 'a=%2C&b=&c=c%2Cd%25' ) ;
207+ st . equal ( qs . stringify ( { a : ',' , b : '' , c : 'c,d%' } , { encode : true , encodeValuesOnly : true , arrayFormat : 'brackets' } ) , 'a=%2C&b=&c=c%2Cd%25' ) ;
208+ st . equal ( qs . stringify ( { a : ',' , b : '' , c : 'c,d%' } , { encode : true , encodeValuesOnly : true , arrayFormat : 'comma' } ) , 'a=%2C&b=&c=c%2Cd%25' ) ;
209+ st . equal ( qs . stringify ( { a : ',' , b : '' , c : 'c,d%' } , { encode : true , encodeValuesOnly : true , arrayFormat : 'repeat' } ) , 'a=%2C&b=&c=c%2Cd%25' ) ;
210+
211+ st . equal ( qs . stringify ( { a : ',' , b : '' , c : 'c,d%' } , { encode : true , encodeValuesOnly : false , arrayFormat : 'indices' } ) , 'a=%2C&b=&c=c%2Cd%25' ) ;
212+ st . equal ( qs . stringify ( { a : ',' , b : '' , c : 'c,d%' } , { encode : true , encodeValuesOnly : false , arrayFormat : 'brackets' } ) , 'a=%2C&b=&c=c%2Cd%25' ) ;
213+ st . equal ( qs . stringify ( { a : ',' , b : '' , c : 'c,d%' } , { encode : true , encodeValuesOnly : false , arrayFormat : 'comma' } ) , 'a=%2C&b=&c=c%2Cd%25' ) ;
214+ st . equal ( qs . stringify ( { a : ',' , b : '' , c : 'c,d%' } , { encode : true , encodeValuesOnly : false , arrayFormat : 'repeat' } ) , 'a=%2C&b=&c=c%2Cd%25' ) ;
215+
216+ st . end ( ) ;
217+ } ) ;
218+
181219 t . test ( 'stringifies a nested array value with dots notation' , function ( st ) {
182220 st . equal (
183221 qs . stringify (
0 commit comments