diff options
Diffstat (limited to 'Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/try-007.js')
-rw-r--r-- | Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/try-007.js | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/try-007.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/try-007.js new file mode 100644 index 0000000..14a960a --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/try-007.js @@ -0,0 +1,89 @@ +/** + * File Name: try-007.js + * ECMA Section: + * Description: The try statement + * + * This test has a for-in statement within a try block. + * + * + * Author: christine@netscape.com + * Date: 11 August 1998 + */ + var SECTION = "try-007"; + var VERSION = "ECMA_2"; + var TITLE = "The try statement: for-in"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + /** + * This is the "check" function for test objects that will + * throw an exception. + */ + function throwException() { + throw EXCEPTION_STRING +": " + this.valueOf(); + } + var EXCEPTION_STRING = "Exception thrown:"; + + /** + * This is the "check" function for test objects that do not + * throw an exception + */ + function noException() { + return this.valueOf(); + } + + /** + * Add test cases here + */ + TryForIn( new TryObject( "hello", throwException, true )); + TryForIn( new TryObject( "hola", noException, false )); + + /** + * Run the test. + */ + + test(); + +/** + * This is the object that will be the "this" in a with block. + * The check function is either throwExeption() or noException(). + * See above. + * + */ +function TryObject( value, fun, exception ) { + this.value = value; + this.exception = exception; + + this.check = fun; + this.valueOf = function () { return this.value; } +} + +/** + * This function has a for-in statement within a try block. Test cases + * are added after the try-catch-finally statement. Within the for-in + * block, call a function that can throw an exception. Verify that any + * exceptions are properly caught. + */ + + function TryForIn( object ) { + try { + for ( p in object ) { + if ( typeof object[p] == "function" ) { + result = object[p](); + } + } + } catch ( e ) { + result = e; + } + + testcases[tc++] = new TestCase( + SECTION, + "TryForIn( " + object+ " )", + (object.exception ? EXCEPTION_STRING +": " + object.value : object.value), + result ); + + } |