diff options
Diffstat (limited to 'Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/try-010.js')
-rw-r--r-- | Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/try-010.js | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/try-010.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/try-010.js new file mode 100644 index 0000000..eeb7f88 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/try-010.js @@ -0,0 +1,70 @@ +/** + * File Name: try-010.js + * ECMA Section: + * Description: The try statement + * + * This has a try block nested in the try block. Verify that the + * exception is caught by the right try block, and all finally blocks + * are executed. + * + * Author: christine@netscape.com + * Date: 11 August 1998 + */ + var SECTION = "try-010"; + var VERSION = "ECMA_2"; + var TITLE = "The try statement: try in a tryblock"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var EXCEPTION_STRING = "Exception thrown: "; + var NO_EXCEPTION_STRING = "No exception thrown: "; + + + NestedTry( new TryObject( "No Exceptions Thrown", NoException, NoException, 43 ) ); + NestedTry( new TryObject( "Throw Exception in Outer Try", ThrowException, NoException, 48 )); + NestedTry( new TryObject( "Throw Exception in Inner Try", NoException, ThrowException, 45 )); + NestedTry( new TryObject( "Throw Exception in Both Trys", ThrowException, ThrowException, 48 )); + + test(); + + function TryObject( description, tryOne, tryTwo, result ) { + this.description = description; + this.tryOne = tryOne; + this.tryTwo = tryTwo; + this.result = result; + } + function ThrowException() { + throw EXCEPTION_STRING + this.value; + } + function NoException() { + return NO_EXCEPTION_STRING + this.value; + } + function NestedTry( object ) { + result = 0; + try { + object.tryOne(); + result += 1; + try { + object.tryTwo(); + result += 2; + } catch ( e ) { + result +=4; + } finally { + result += 8; + } + } catch ( e ) { + result += 16; + } finally { + result += 32; + } + + testcases[tc++] = new TestCase( + SECTION, + object.description, + object.result, + result ); + } |