/* -*- tab-width: 2; indent-tabs-mode: nil; js-indent-level: 2 -*- */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ /** * 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); /** * 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 throwException() 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; } new TestCase( SECTION, "TryForIn( " + object+ " )", (object.exception ? EXCEPTION_STRING +": " + object.value : object.value), result ); }