@@ -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