@@ -335,16 +335,18 @@ describe('serialize( obj )', function () {
335
335
var regexKey = / .* / ;
336
336
var m = new Map ( [
337
337
[ 'a' , 123 ] ,
338
- [ regexKey , 456 ]
338
+ [ regexKey , 456 ] ,
339
+ [ Infinity , 789 ]
339
340
] ) ;
340
- expect ( serialize ( m ) ) . to . be . a ( 'string' ) . equal ( 'new Map([["a",123],[new RegExp(".*", ""),456]])' ) ;
341
- expect ( serialize ( { t : [ m ] } ) ) . to . be . a ( 'string' ) . equal ( '{"t":[new Map([["a",123],[new RegExp(".*", ""),456]])]}' ) ;
341
+ expect ( serialize ( m ) ) . to . be . a ( 'string' ) . equal ( 'new Map([["a",123],[new RegExp(".*", ""),456],[Infinity,789] ])' ) ;
342
+ expect ( serialize ( { t : [ m ] } ) ) . to . be . a ( 'string' ) . equal ( '{"t":[new Map([["a",123],[new RegExp(".*", ""),456],[Infinity,789] ])]}' ) ;
342
343
} ) ;
343
344
344
345
it ( 'should deserialize a map' , function ( ) {
345
346
var m = eval ( serialize ( new Map ( [
346
347
[ 'a' , 123 ] ,
347
- [ null , 456 ]
348
+ [ null , 456 ] ,
349
+ [ Infinity , 789 ]
348
350
] ) ) ) ;
349
351
expect ( m ) . to . be . a ( 'Map' ) ;
350
352
expect ( m . get ( null ) ) . to . equal ( 456 ) ;
@@ -357,23 +359,47 @@ describe('serialize( obj )', function () {
357
359
var m = new Set ( [
358
360
'a' ,
359
361
123 ,
360
- regex
362
+ regex ,
363
+ Infinity
361
364
] ) ;
362
- expect ( serialize ( m ) ) . to . be . a ( 'string' ) . equal ( 'new Set(["a",123,new RegExp(".*", "")])' ) ;
363
- expect ( serialize ( { t : [ m ] } ) ) . to . be . a ( 'string' ) . equal ( '{"t":[new Set(["a",123,new RegExp(".*", "")])]}' ) ;
365
+ expect ( serialize ( m ) ) . to . be . a ( 'string' ) . equal ( 'new Set(["a",123,new RegExp(".*", ""),Infinity ])' ) ;
366
+ expect ( serialize ( { t : [ m ] } ) ) . to . be . a ( 'string' ) . equal ( '{"t":[new Set(["a",123,new RegExp(".*", ""),Infinity ])]}' ) ;
364
367
} ) ;
365
368
366
369
it ( 'should deserialize a set' , function ( ) {
367
370
var m = eval ( serialize ( new Set ( [
368
371
'a' ,
369
372
123 ,
370
- null
373
+ null ,
374
+ Infinity
371
375
] ) ) ) ;
372
376
expect ( m ) . to . be . a ( 'Set' ) ;
373
377
expect ( m . has ( null ) ) . to . equal ( true ) ;
374
378
} ) ;
375
379
} ) ;
376
380
381
+ describe ( 'Infinity' , function ( ) {
382
+ it ( 'should serialize Infinity' , function ( ) {
383
+ expect ( serialize ( Infinity ) ) . to . equal ( 'Infinity' ) ;
384
+ expect ( serialize ( { t : [ Infinity ] } ) ) . to . be . a ( 'string' ) . equal ( '{"t":[Infinity]}' ) ;
385
+ } ) ;
386
+
387
+ it ( 'should deserialize Infinity' , function ( ) {
388
+ var d = eval ( serialize ( Infinity ) ) ;
389
+ expect ( d ) . to . equal ( Infinity ) ;
390
+ } ) ;
391
+
392
+ it ( 'should serialize -Infinity' , function ( ) {
393
+ expect ( serialize ( - Infinity ) ) . to . equal ( '-Infinity' ) ;
394
+ expect ( serialize ( { t : [ - Infinity ] } ) ) . to . be . a ( 'string' ) . equal ( '{"t":[-Infinity]}' ) ;
395
+ } ) ;
396
+
397
+ it ( 'should deserialize -Infinity' , function ( ) {
398
+ var d = eval ( serialize ( - Infinity ) ) ;
399
+ expect ( d ) . to . equal ( - Infinity ) ;
400
+ } ) ;
401
+ } ) ;
402
+
377
403
describe ( 'XSS' , function ( ) {
378
404
it ( 'should encode unsafe HTML chars to Unicode' , function ( ) {
379
405
expect ( serialize ( '</script>' ) ) . to . equal ( '"\\u003C\\u002Fscript\\u003E"' ) ;
0 commit comments