@@ -335,16 +335,18 @@ describe('serialize( obj )', function () {
335335 var regexKey = / .* / ;
336336 var m = new Map ( [
337337 [ 'a' , 123 ] ,
338- [ regexKey , 456 ]
338+ [ regexKey , 456 ] ,
339+ [ Infinity , 789 ]
339340 ] ) ;
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] ])]}' ) ;
342343 } ) ;
343344
344345 it ( 'should deserialize a map' , function ( ) {
345346 var m = eval ( serialize ( new Map ( [
346347 [ 'a' , 123 ] ,
347- [ null , 456 ]
348+ [ null , 456 ] ,
349+ [ Infinity , 789 ]
348350 ] ) ) ) ;
349351 expect ( m ) . to . be . a ( 'Map' ) ;
350352 expect ( m . get ( null ) ) . to . equal ( 456 ) ;
@@ -357,23 +359,47 @@ describe('serialize( obj )', function () {
357359 var m = new Set ( [
358360 'a' ,
359361 123 ,
360- regex
362+ regex ,
363+ Infinity
361364 ] ) ;
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 ])]}' ) ;
364367 } ) ;
365368
366369 it ( 'should deserialize a set' , function ( ) {
367370 var m = eval ( serialize ( new Set ( [
368371 'a' ,
369372 123 ,
370- null
373+ null ,
374+ Infinity
371375 ] ) ) ) ;
372376 expect ( m ) . to . be . a ( 'Set' ) ;
373377 expect ( m . has ( null ) ) . to . equal ( true ) ;
374378 } ) ;
375379 } ) ;
376380
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+
377403 describe ( 'XSS' , function ( ) {
378404 it ( 'should encode unsafe HTML chars to Unicode' , function ( ) {
379405 expect ( serialize ( '</script>' ) ) . to . equal ( '"\\u003C\\u002Fscript\\u003E"' ) ;
0 commit comments