@@ -43,10 +43,14 @@ export function main() {
4343
4444 function emptyLocals ( ) { return new Locals ( null , MapWrapper . create ( ) ) ; }
4545
46- function expectEval ( text , passedInContext = null , passedInLocals = null ) {
46+ function evalAction ( text , passedInContext = null , passedInLocals = null ) {
4747 var c = isBlank ( passedInContext ) ? td ( ) : passedInContext ;
4848 var l = isBlank ( passedInLocals ) ? emptyLocals ( ) : passedInLocals ;
49- return expect ( parseAction ( text ) . eval ( c , l ) ) ;
49+ return parseAction ( text ) . eval ( c , l ) ;
50+ }
51+
52+ function expectEval ( text , passedInContext = null , passedInLocals = null ) {
53+ return expect ( evalAction ( text , passedInContext , passedInLocals ) ) ;
5054 }
5155
5256 function expectEvalError ( text , passedInContext = null , passedInLocals = null ) {
@@ -280,6 +284,28 @@ export function main() {
280284 } ) ;
281285 } ) ;
282286
287+ describe ( "if" , ( ) => {
288+ it ( 'should parse if statements' , ( ) => {
289+
290+ var fixtures = [
291+ [ 'if (true) a = 0' , 0 , null ] ,
292+ [ 'if (false) a = 0' , null , null ] ,
293+ [ 'if (a == null) b = 0' , null , 0 ] ,
294+ [ 'if (true) { a = 0; b = 0 }' , 0 , 0 ] ,
295+ [ 'if (true) { a = 0; b = 0 } else { a = 1; b = 1; }' , 0 , 0 ] ,
296+ [ 'if (false) { a = 0; b = 0 } else { a = 1; b = 1; }' , 1 , 1 ] ,
297+ [ 'if (false) { } else { a = 1; b = 1; }' , 1 , 1 ] ,
298+ ] ;
299+
300+ fixtures . forEach ( fix => {
301+ var testData = td ( null , null ) ;
302+ evalAction ( fix [ 0 ] , testData ) ;
303+ expect ( testData . a ) . toEqual ( fix [ 1 ] ) ;
304+ expect ( testData . b ) . toEqual ( fix [ 2 ] ) ;
305+ } ) ;
306+ } ) ;
307+ } ) ;
308+
283309 describe ( "assignment" , ( ) => {
284310 it ( "should support field assignments" , ( ) => {
285311 var context = td ( ) ;
0 commit comments