@@ -340,11 +340,12 @@ describe('Test lib.js:', function() {
340340 } ) ;
341341
342342 it ( 'should access properties of objects in an array with index -1' , function ( ) {
343- var obj = { arr : [ { a : 1 } , { a : 2 } , { b : 3 } ] } ;
343+ var obj = { arr : [ { a : 1 } , { a : null } , { b : 3 } ] } ;
344344 var prop = np ( obj , 'arr[-1].a' ) ;
345345
346- expect ( prop . get ( ) ) . toEqual ( [ 1 , 2 , undefined ] ) ;
347- expect ( obj ) . toEqual ( { arr : [ { a : 1 } , { a : 2 } , { b : 3 } ] } ) ;
346+ expect ( prop . get ( ) ) . toEqual ( [ 1 , undefined , undefined ] ) ;
347+ expect ( prop . get ( true ) ) . toEqual ( [ 1 , null , undefined ] ) ;
348+ expect ( obj ) . toEqual ( { arr : [ { a : 1 } , { a : null } , { b : 3 } ] } ) ;
348349
349350 prop . set ( 5 ) ;
350351 expect ( prop . get ( ) ) . toBe ( 5 ) ;
@@ -2443,6 +2444,14 @@ describe('Test lib.js:', function() {
24432444 it ( 'should work with the number *0* (nested case)' , function ( ) {
24442445 expect ( Lib . templateString ( '%{x.y}' , { x : { y : 0 } } ) ) . toEqual ( '0' ) ;
24452446 } ) ;
2447+
2448+ it ( 'preserves null and NaN' , function ( ) {
2449+ expect ( Lib . templateString (
2450+ '%{a} %{b} %{c.d} %{c.e} %{f[0]} %{f[1]}' ,
2451+ { a : null , b : NaN , c : { d : null , e : NaN } , f : [ null , NaN ] }
2452+ ) )
2453+ . toEqual ( 'null NaN null NaN null NaN' ) ;
2454+ } ) ;
24462455 } ) ;
24472456
24482457 describe ( 'hovertemplateString' , function ( ) {
@@ -2471,6 +2480,16 @@ describe('Test lib.js:', function() {
24712480 expect ( Lib . hovertemplateString ( '%{x.y}' , { } , locale , { x : { y : 0 } } ) ) . toEqual ( '0' ) ;
24722481 } ) ;
24732482
2483+ it ( 'preserves null and NaN' , function ( ) {
2484+ expect ( Lib . hovertemplateString (
2485+ '%{a} %{b} %{c.d} %{c.e} %{f[0]} %{f[1]}' ,
2486+ { } ,
2487+ locale ,
2488+ { a : null , b : NaN , c : { d : null , e : NaN } , f : [ null , NaN ] }
2489+ ) )
2490+ . toEqual ( 'null NaN null NaN null NaN' ) ;
2491+ } ) ;
2492+
24742493 it ( 'subtitutes multiple matches' , function ( ) {
24752494 expect ( Lib . hovertemplateString ( 'foo %{group} %{trace}' , { } , locale , { group : 'asdf' , trace : 'jkl;' } ) ) . toEqual ( 'foo asdf jkl;' ) ;
24762495 } ) ;
@@ -2537,6 +2556,16 @@ describe('Test lib.js:', function() {
25372556 expect ( Lib . texttemplateString ( 'y: %{y}' , { yLabel : '0.1' } , locale , { y : 0.123 } ) ) . toEqual ( 'y: 0.1' ) ;
25382557 } ) ;
25392558
2559+ it ( 'preserves null and NaN' , function ( ) {
2560+ expect ( Lib . texttemplateString (
2561+ '%{a} %{b} %{c.d} %{c.e} %{f[0]} %{f[1]}' ,
2562+ { } ,
2563+ locale ,
2564+ { a : null , b : NaN , c : { d : null , e : NaN } , f : [ null , NaN ] }
2565+ ) )
2566+ . toEqual ( 'null NaN null NaN null NaN' ) ;
2567+ } ) ;
2568+
25402569 it ( 'warns user up to 10 times if a variable cannot be found' , function ( ) {
25412570 spyOn ( Lib , 'warn' ) . and . callThrough ( ) ;
25422571 Lib . texttemplateString ( '%{idontexist}' , { } ) ;
0 commit comments