@@ -18,6 +18,10 @@ export function main() {
1818 var context = td ( ) ;
1919 var formatters ;
2020
21+ function createParser ( ) {
22+ return new Parser ( new Lexer ( ) , new ClosureMap ( ) ) ;
23+ }
24+
2125 function _eval ( text ) {
2226 return new Parser ( new Lexer ( ) , new ClosureMap ( ) ) . parse ( text )
2327 . eval ( context , formatters ) ;
@@ -36,7 +40,7 @@ export function main() {
3640 var parser ;
3741
3842 beforeEach ( ( ) => {
39- parser = new Parser ( new Lexer ( ) , new ClosureMap ( ) ) ;
43+ parser = createParser ( ) ;
4044 } ) ;
4145
4246 it ( "should parse field access" , ( ) => {
@@ -119,6 +123,22 @@ export function main() {
119123 expectEval ( "4 + 4 + ' str'" ) . toEqual ( "8 str" ) ;
120124 expectEval ( "'str ' + 4 + 4" ) . toEqual ( "str 44" ) ;
121125 } ) ;
126+
127+ it ( 'should behave gracefully with a null scope' , ( ) => {
128+ var exp = createParser ( ) . parse ( "null" ) ;
129+ expect ( exp . eval ( null , null ) ) . toEqual ( null ) ;
130+ } ) ;
131+
132+ it ( 'should eval binary operators with null as null' , ( ) => {
133+ expectEval ( "null < 0" ) . toBeNull ( ) ;
134+ expectEval ( "null * 3" ) . toBeNull ( ) ;
135+ expectEval ( "null + 6" ) . toBeNull ( ) ;
136+ expectEval ( "5 + null" ) . toBeNull ( ) ;
137+ expectEval ( "null - 4" ) . toBeNull ( ) ;
138+ expectEval ( "3 - null" ) . toBeNull ( ) ;
139+ expectEval ( "null + null" ) . toBeNull ( ) ;
140+ expectEval ( "null - null" ) . toBeNull ( ) ;
141+ } ) ;
122142 } ) ;
123143
124144 describe ( "error handling" , ( ) => {
0 commit comments