diff options
Diffstat (limited to 'js/src/tests/test262/language/statements/try/S12.14_A5.js')
-rw-r--r-- | js/src/tests/test262/language/statements/try/S12.14_A5.js | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/js/src/tests/test262/language/statements/try/S12.14_A5.js b/js/src/tests/test262/language/statements/try/S12.14_A5.js new file mode 100644 index 0000000000..f03fd6652a --- /dev/null +++ b/js/src/tests/test262/language/statements/try/S12.14_A5.js @@ -0,0 +1,53 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production TryStatement: "try Block Finally" and the production + TryStatement: "try Block Catch Finally" +es5id: 12.14_A5 +description: Checking "catch" catches the Identifier in appropriate way +---*/ + +// CHECK#1 +try { + throw "catchme"; + throw "dontcatchme"; + throw new Test262Error('#1.1: throw "catchme" lead to throwing exception'); +} +catch (e) { + if(e==="dontcatchme"){ + throw new Test262Error('#1.2: Exception !== "dontcatchme"'); + } + if (e!=="catchme") { + throw new Test262Error('#1.3: Exception === "catchme". Actual: Exception ==='+ e ); + } +} + +// CHECK#2 +function SwitchTest1(value){ + var result = 0; + try{ + switch(value) { + case 1: + result += 4; + throw result; + break; + case 4: + result += 64; + throw "ex"; + } + return result; + } + catch(e){ + if ((value===1)&&(e!==4)) throw new Test262Error('#2.1: Exception === 4. Actual: '+e); + if ((value===4)&&(e!=="ex"))throw new Test262Error('#2.2: Exception === "ex". Actual: '+e); + } + finally{ + return result; + } +} +if (SwitchTest1(1)!==4) throw new Test262Error('#2.3: "finally" block must be evaluated'); +if (SwitchTest1(4)!==64)throw new Test262Error('#2.4: "finally" block must be evaluated'); + +reportCompare(0, 0); |