Module: wine Branch: master Commit: 4b5291a519f8dd5b4e3d9eb73da6f77ea32989f8 URL: http://source.winehq.org/git/wine.git/?a=commit;h=4b5291a519f8dd5b4e3d9eb73d...
Author: Jacek Caban jacek@codeweavers.com Date: Mon May 1 18:31:13 2017 +0200
jscript/tests: Added more exception tests.
Signed-off-by: Jacek Caban jacek@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/jscript/tests/lang.js | 158 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 158 insertions(+)
diff --git a/dlls/jscript/tests/lang.js b/dlls/jscript/tests/lang.js index 01d41d5..aba6dda 100644 --- a/dlls/jscript/tests/lang.js +++ b/dlls/jscript/tests/lang.js @@ -981,6 +981,164 @@ case 3: return i; })();
+(function() { + var ret, x; + + function unreachable() { + ok(false, "unreachable"); + } + + function expect(value, expect_value) { + ok(value === expect_value, "got " + value + " expected " + expect_value); + } + + ret = (function() { + try { + return "try"; + unreachable(); + }catch(e) { + unreachable(); + }finally { + return "finally"; + unreachable(); + } + unreachable(); + })(); + expect(ret, "finally"); + + x = ""; + ret = (function() { + try { + x += "try,"; + return x; + unreachable(); + }catch(e) { + unreachable(); + }finally { + x += "finally,"; + } + unreachable(); + })(); + expect(ret, "try,"); + expect(x, "try,finally,"); + + x = ""; + ret = (function() { + try { + x += "try," + throw 1; + unreachable(); + }catch(e) { + x += "catch,"; + return "catch"; + unreachable(); + }finally { + x += "finally,"; + return "finally"; + unreachable(); + } + unreachable(); + })(); + expect(ret, "finally"); + expect(x, "try,catch,finally,"); + + x = ""; + ret = (function() { + try { + x += "try," + throw 1; + unreachable(); + }catch(e) { + x += "catch,"; + return "catch"; + unreachable(); + }finally { + x += "finally,"; + } + unreachable(); + })(); + expect(ret, "catch"); + expect(x, "try,catch,finally,"); + + x = ""; + ret = (function() { + try { + x += "try," + try { + x += "try2,"; + return "try2"; + }catch(e) { + unreachable(); + }finally { + x += "finally2,"; + } + unreachable(); + }catch(e) { + unreachable(); + }finally { + x += "finally,"; + } + unreachable(); + })(); + expect(ret, "try2"); + expect(x, "try,try2,finally2,finally,"); + + x = ""; + ret = (function() { + while(true) { + try { + x += "try," + try { + x += "try2,"; + break; + }catch(e) { + unreachable(); + }finally { + x += "finally2,"; + } + unreachable(); + }catch(e) { + unreachable(); + }finally { + x += "finally,"; + } + unreachable(); + } + x += "ret"; + return "ret"; + })(); + expect(ret, "ret"); + expect(x, "try,try2,finally2,finally,ret"); + + x = ""; + ret = (function() { + while(true) { + try { + x += "try," + try { + x += "try2,"; + continue; + }catch(e) { + unreachable(); + }finally { + x += "finally2,"; + } + unreachable(); + }catch(e) { + unreachable(); + }finally { + x += "finally,"; + break; + } + unreachable(); + } + x += "ret"; + return "ret"; + })(); + expect(ret, "ret"); + expect(x, "try,try2,finally2,finally,ret"); +})(); + tmp = eval("1"); ok(tmp === 1, "eval("1") !== 1"); eval("{ ok(tmp === 1, 'eval: tmp !== 1'); } tmp = 2;");