@@ -162,7 +162,7 @@ test('stringify()', function (t) {
162
162
163
163
st . test ( 'array with multiple items with a comma inside' , function ( s2t ) {
164
164
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' ) ;
166
166
167
167
s2t . end ( ) ;
168
168
} ) ;
@@ -178,6 +178,44 @@ test('stringify()', function (t) {
178
178
st . end ( ) ;
179
179
} ) ;
180
180
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
+
181
219
t . test ( 'stringifies a nested array value with dots notation' , function ( st ) {
182
220
st . equal (
183
221
qs . stringify (
0 commit comments