michael@0: michael@0: // Test setting return value; michael@0: michael@0: function bail() { bailout(); } michael@0: function bail2() { bailout(); return 2; } michael@0: michael@0: // Test 1: Test setting/getting return value in ionmonkey michael@0: function test() { michael@0: return evalcx("1;"); michael@0: } michael@0: assertEq(test(), 1) michael@0: michael@0: // Test 3: Test ion -> baseline michael@0: function test2() { michael@0: return evaluate("1; bail2();"); michael@0: } michael@0: assertEq(test2(), 2) michael@0: michael@0: // Test 3: Test ion -> baseline michael@0: function test3() { michael@0: return evaluate("1; bail2(); 3"); michael@0: } michael@0: assertEq(test3(), 3) michael@0: michael@0: // Test4: Test baseline -> ion entering (very fragile, since iterations need to be precise, before it gets tested) michael@0: function test4() { michael@0: return evaluate("1; for(var i=0; i<1097; i++) { 3; };"); michael@0: } michael@0: assertEq(test4(), 3)