@@ -6,7 +6,7 @@ var iconv = require('iconv-lite');
6
6
7
7
test ( 'parse()' , function ( t ) {
8
8
t . test ( 'parses a simple string' , function ( st ) {
9
- st . deepEqual ( qs . parse ( '0=foo' ) , { '0' : 'foo' } ) ;
9
+ st . deepEqual ( qs . parse ( '0=foo' ) , { 0 : 'foo' } ) ;
10
10
st . deepEqual ( qs . parse ( 'foo=c++' ) , { foo : 'c ' } ) ;
11
11
st . deepEqual ( qs . parse ( 'a[>=]=23' ) , { a : { '>=' : '23' } } ) ;
12
12
st . deepEqual ( qs . parse ( 'a[<=>]==23' ) , { a : { '<=>' : '=23' } } ) ;
@@ -93,7 +93,7 @@ test('parse()', function (t) {
93
93
94
94
t . test ( 'limits specific array indices to arrayLimit' , function ( st ) {
95
95
st . deepEqual ( qs . parse ( 'a[20]=a' , { arrayLimit : 20 } ) , { a : [ 'a' ] } ) ;
96
- st . deepEqual ( qs . parse ( 'a[21]=a' , { arrayLimit : 20 } ) , { a : { '21' : 'a' } } ) ;
96
+ st . deepEqual ( qs . parse ( 'a[21]=a' , { arrayLimit : 20 } ) , { a : { 21 : 'a' } } ) ;
97
97
st . end ( ) ;
98
98
} ) ;
99
99
@@ -124,17 +124,17 @@ test('parse()', function (t) {
124
124
} ) ;
125
125
126
126
t . test ( 'transforms arrays to objects' , function ( st ) {
127
- st . deepEqual ( qs . parse ( 'foo[0]=bar&foo[bad]=baz' ) , { foo : { '0' : 'bar' , bad : 'baz' } } ) ;
128
- st . deepEqual ( qs . parse ( 'foo[bad]=baz&foo[0]=bar' ) , { foo : { bad : 'baz' , '0' : 'bar' } } ) ;
129
- st . deepEqual ( qs . parse ( 'foo[bad]=baz&foo[]=bar' ) , { foo : { bad : 'baz' , '0' : 'bar' } } ) ;
130
- st . deepEqual ( qs . parse ( 'foo[]=bar&foo[bad]=baz' ) , { foo : { '0' : 'bar' , bad : 'baz' } } ) ;
131
- st . deepEqual ( qs . parse ( 'foo[bad]=baz&foo[]=bar&foo[]=foo' ) , { foo : { bad : 'baz' , '0' : 'bar' , '1' : 'foo' } } ) ;
127
+ st . deepEqual ( qs . parse ( 'foo[0]=bar&foo[bad]=baz' ) , { foo : { 0 : 'bar' , bad : 'baz' } } ) ;
128
+ st . deepEqual ( qs . parse ( 'foo[bad]=baz&foo[0]=bar' ) , { foo : { bad : 'baz' , 0 : 'bar' } } ) ;
129
+ st . deepEqual ( qs . parse ( 'foo[bad]=baz&foo[]=bar' ) , { foo : { bad : 'baz' , 0 : 'bar' } } ) ;
130
+ st . deepEqual ( qs . parse ( 'foo[]=bar&foo[bad]=baz' ) , { foo : { 0 : 'bar' , bad : 'baz' } } ) ;
131
+ st . deepEqual ( qs . parse ( 'foo[bad]=baz&foo[]=bar&foo[]=foo' ) , { foo : { bad : 'baz' , 0 : 'bar' , 1 : 'foo' } } ) ;
132
132
st . deepEqual ( qs . parse ( 'foo[0][a]=a&foo[0][b]=b&foo[1][a]=aa&foo[1][b]=bb' ) , { foo : [ { a : 'a' , b : 'b' } , { a : 'aa' , b : 'bb' } ] } ) ;
133
133
134
- st . deepEqual ( qs . parse ( 'a[]=b&a[t]=u&a[hasOwnProperty]=c' , { allowPrototypes : false } ) , { a : { '0' : 'b' , c : true , t : 'u' } } ) ;
135
- st . deepEqual ( qs . parse ( 'a[]=b&a[t]=u&a[hasOwnProperty]=c' , { allowPrototypes : true } ) , { a : { '0' : 'b' , t : 'u' , hasOwnProperty : 'c' } } ) ;
136
- st . deepEqual ( qs . parse ( 'a[]=b&a[hasOwnProperty]=c&a[x]=y' , { allowPrototypes : false } ) , { a : { '0' : 'b' , '1' : 'c' , x : 'y' } } ) ;
137
- st . deepEqual ( qs . parse ( 'a[]=b&a[hasOwnProperty]=c&a[x]=y' , { allowPrototypes : true } ) , { a : { '0' : 'b' , hasOwnProperty : 'c' , x : 'y' } } ) ;
134
+ st . deepEqual ( qs . parse ( 'a[]=b&a[t]=u&a[hasOwnProperty]=c' , { allowPrototypes : false } ) , { a : { 0 : 'b' , c : true , t : 'u' } } ) ;
135
+ st . deepEqual ( qs . parse ( 'a[]=b&a[t]=u&a[hasOwnProperty]=c' , { allowPrototypes : true } ) , { a : { 0 : 'b' , t : 'u' , hasOwnProperty : 'c' } } ) ;
136
+ st . deepEqual ( qs . parse ( 'a[]=b&a[hasOwnProperty]=c&a[x]=y' , { allowPrototypes : false } ) , { a : { 0 : 'b' , 1 : 'c' , x : 'y' } } ) ;
137
+ st . deepEqual ( qs . parse ( 'a[]=b&a[hasOwnProperty]=c&a[x]=y' , { allowPrototypes : true } ) , { a : { 0 : 'b' , hasOwnProperty : 'c' , x : 'y' } } ) ;
138
138
st . end ( ) ;
139
139
} ) ;
140
140
@@ -144,18 +144,18 @@ test('parse()', function (t) {
144
144
st . deepEqual ( qs . parse ( 'foo[0][0].baz=bar&fool.bad=baz' , { allowDots : true } ) , { foo : [ [ { baz : 'bar' } ] ] , fool : { bad : 'baz' } } ) ;
145
145
st . deepEqual ( qs . parse ( 'foo[0].baz[0]=15&foo[0].bar=2' , { allowDots : true } ) , { foo : [ { baz : [ '15' ] , bar : '2' } ] } ) ;
146
146
st . deepEqual ( qs . parse ( 'foo[0].baz[0]=15&foo[0].baz[1]=16&foo[0].bar=2' , { allowDots : true } ) , { foo : [ { baz : [ '15' , '16' ] , bar : '2' } ] } ) ;
147
- st . deepEqual ( qs . parse ( 'foo.bad=baz&foo[0]=bar' , { allowDots : true } ) , { foo : { bad : 'baz' , '0' : 'bar' } } ) ;
148
- st . deepEqual ( qs . parse ( 'foo.bad=baz&foo[]=bar' , { allowDots : true } ) , { foo : { bad : 'baz' , '0' : 'bar' } } ) ;
149
- st . deepEqual ( qs . parse ( 'foo[]=bar&foo.bad=baz' , { allowDots : true } ) , { foo : { '0' : 'bar' , bad : 'baz' } } ) ;
150
- st . deepEqual ( qs . parse ( 'foo.bad=baz&foo[]=bar&foo[]=foo' , { allowDots : true } ) , { foo : { bad : 'baz' , '0' : 'bar' , '1' : 'foo' } } ) ;
147
+ st . deepEqual ( qs . parse ( 'foo.bad=baz&foo[0]=bar' , { allowDots : true } ) , { foo : { bad : 'baz' , 0 : 'bar' } } ) ;
148
+ st . deepEqual ( qs . parse ( 'foo.bad=baz&foo[]=bar' , { allowDots : true } ) , { foo : { bad : 'baz' , 0 : 'bar' } } ) ;
149
+ st . deepEqual ( qs . parse ( 'foo[]=bar&foo.bad=baz' , { allowDots : true } ) , { foo : { 0 : 'bar' , bad : 'baz' } } ) ;
150
+ st . deepEqual ( qs . parse ( 'foo.bad=baz&foo[]=bar&foo[]=foo' , { allowDots : true } ) , { foo : { bad : 'baz' , 0 : 'bar' , 1 : 'foo' } } ) ;
151
151
st . deepEqual ( qs . parse ( 'foo[0].a=a&foo[0].b=b&foo[1].a=aa&foo[1].b=bb' , { allowDots : true } ) , { foo : [ { a : 'a' , b : 'b' } , { a : 'aa' , b : 'bb' } ] } ) ;
152
152
st . end ( ) ;
153
153
} ) ;
154
154
155
155
t . deepEqual ( qs . parse ( 'a[b]=c&a=d' ) , { a : { b : 'c' , d : true } } , 'can add keys to objects' ) ;
156
156
157
157
t . test ( 'correctly prunes undefined values when converting an array to an object' , function ( st ) {
158
- st . deepEqual ( qs . parse ( 'a[2]=b&a[99999999]=c' ) , { a : { '2' : 'b' , ' 99999999' : 'c' } } ) ;
158
+ st . deepEqual ( qs . parse ( 'a[2]=b&a[99999999]=c' ) , { a : { 2 : 'b' , 99999999 : 'c' } } ) ;
159
159
st . end ( ) ;
160
160
} ) ;
161
161
@@ -167,7 +167,7 @@ test('parse()', function (t) {
167
167
} ) ;
168
168
169
169
t . test ( 'doesn\'t produce empty keys' , function ( st ) {
170
- st . deepEqual ( qs . parse ( '_r=1&' ) , { '_r' : '1' } ) ;
170
+ st . deepEqual ( qs . parse ( '_r=1&' ) , { _r : '1' } ) ;
171
171
st . end ( ) ;
172
172
} ) ;
173
173
@@ -238,8 +238,8 @@ test('parse()', function (t) {
238
238
} ) ;
239
239
240
240
t . test ( 'continues parsing when no parent is found' , function ( st ) {
241
- st . deepEqual ( qs . parse ( '[]=&a=b' ) , { '0' : '' , a : 'b' } ) ;
242
- st . deepEqual ( qs . parse ( '[]&a=b' , { strictNullHandling : true } ) , { '0' : null , a : 'b' } ) ;
241
+ st . deepEqual ( qs . parse ( '[]=&a=b' ) , { 0 : '' , a : 'b' } ) ;
242
+ st . deepEqual ( qs . parse ( '[]&a=b' , { strictNullHandling : true } ) , { 0 : null , a : 'b' } ) ;
243
243
st . deepEqual ( qs . parse ( '[foo]=bar' ) , { foo : 'bar' } ) ;
244
244
st . end ( ) ;
245
245
} ) ;
@@ -250,7 +250,9 @@ test('parse()', function (t) {
250
250
str = str + '&' + str ;
251
251
}
252
252
253
- st . doesNotThrow ( function ( ) { qs . parse ( str ) ; } ) ;
253
+ st . doesNotThrow ( function ( ) {
254
+ qs . parse ( str ) ;
255
+ } ) ;
254
256
255
257
st . end ( ) ;
256
258
} ) ;
@@ -293,14 +295,14 @@ test('parse()', function (t) {
293
295
} ) ;
294
296
295
297
t . test ( 'allows overriding array limit' , function ( st ) {
296
- st . deepEqual ( qs . parse ( 'a[0]=b' , { arrayLimit : - 1 } ) , { a : { '0' : 'b' } } ) ;
298
+ st . deepEqual ( qs . parse ( 'a[0]=b' , { arrayLimit : - 1 } ) , { a : { 0 : 'b' } } ) ;
297
299
st . deepEqual ( qs . parse ( 'a[-1]=b' , { arrayLimit : - 1 } ) , { a : { '-1' : 'b' } } ) ;
298
- st . deepEqual ( qs . parse ( 'a[0]=b&a[1]=c' , { arrayLimit : 0 } ) , { a : { '0' : 'b' , '1' : 'c' } } ) ;
300
+ st . deepEqual ( qs . parse ( 'a[0]=b&a[1]=c' , { arrayLimit : 0 } ) , { a : { 0 : 'b' , 1 : 'c' } } ) ;
299
301
st . end ( ) ;
300
302
} ) ;
301
303
302
304
t . test ( 'allows disabling array parsing' , function ( st ) {
303
- st . deepEqual ( qs . parse ( 'a[0]=b&a[1]=c' , { parseArrays : false } ) , { a : { '0' : 'b' , '1' : 'c' } } ) ;
305
+ st . deepEqual ( qs . parse ( 'a[0]=b&a[1]=c' , { parseArrays : false } ) , { a : { 0 : 'b' , 1 : 'c' } } ) ;
304
306
st . end ( ) ;
305
307
} ) ;
306
308
@@ -344,13 +346,13 @@ test('parse()', function (t) {
344
346
345
347
t . test ( 'parses an object and not child values' , function ( st ) {
346
348
var input = {
347
- 'user[name]' : { 'pop[bob]' : { ' test' : 3 } } ,
349
+ 'user[name]' : { 'pop[bob]' : { test : 3 } } ,
348
350
'user[email]' : null
349
351
} ;
350
352
351
353
var expected = {
352
354
user : {
353
- name : { 'pop[bob]' : { ' test' : 3 } } ,
355
+ name : { 'pop[bob]' : { test : 3 } } ,
354
356
email : null
355
357
}
356
358
} ;
@@ -426,7 +428,7 @@ test('parse()', function (t) {
426
428
st . deepEqual ( qs . parse ( null , { plainObjects : true } ) , Object . create ( null ) ) ;
427
429
var expectedArray = Object . create ( null ) ;
428
430
expectedArray . a = Object . create ( null ) ;
429
- expectedArray . a [ '0' ] = 'b' ;
431
+ expectedArray . a [ 0 ] = 'b' ;
430
432
expectedArray . a . c = 'd' ;
431
433
st . deepEqual ( qs . parse ( 'a[]=b&a[c]=d' , { plainObjects : true } ) , expectedArray ) ;
432
434
st . end ( ) ;
@@ -435,13 +437,12 @@ test('parse()', function (t) {
435
437
t . test ( 'can parse with custom encoding' , function ( st ) {
436
438
st . deepEqual ( qs . parse ( '%8c%a7=%91%e5%8d%e3%95%7b' , {
437
439
decoder : function ( str ) {
438
- var reg = / \ %( [ 0 - 9 A - F ] { 2 } ) / ig;
440
+ var reg = / % ( [ 0 - 9 A - F ] { 2 } ) / ig;
439
441
var result = [ ] ;
440
- var parts ;
441
- var last = 0 ;
442
- while ( parts = reg . exec ( str ) ) {
442
+ var parts = reg . exec ( str ) ;
443
+ while ( parts ) {
443
444
result . push ( parseInt ( parts [ 1 ] , 16 ) ) ;
444
- last = parts . index + parts [ 0 ] . length ;
445
+ parts = reg . exec ( str ) ;
445
446
}
446
447
return iconv . decode ( new Buffer ( result ) , 'shift_jis' ) . toString ( ) ;
447
448
}
@@ -451,9 +452,7 @@ test('parse()', function (t) {
451
452
452
453
t . test ( 'throws error with wrong decoder' , function ( st ) {
453
454
st . throws ( function ( ) {
454
- qs . parse ( { } , {
455
- decoder : 'string'
456
- } ) ;
455
+ qs . parse ( { } , { decoder : 'string' } ) ;
457
456
} , new TypeError ( 'Decoder has to be a function.' ) ) ;
458
457
st . end ( ) ;
459
458
} ) ;
0 commit comments