Home | History | Annotate | Download | only in Statements
      1 /**
      2  *  File Name:          try-001.js
      3  *  ECMA Section:
      4  *  Description:        The try statement
      5  *
      6  *  This test contains try, catch, and finally blocks.  An exception is
      7  *  sometimes thrown by a function called from within the try block.
      8  *
      9  *  This test doesn't actually make any LiveConnect calls.
     10  *
     11  *
     12  *  Author:             christine (at) netscape.com
     13  *  Date:               11 August 1998
     14  */
     15     var SECTION = "";
     16     var VERSION = "ECMA_2";
     17     var TITLE   = "The try statement";
     18 
     19     startTest();
     20     writeHeaderToLog( SECTION + " "+ TITLE);
     21 
     22     var tc = 0;
     23     var testcases = new Array();
     24 
     25     var INVALID_JAVA_INTEGER_VALUE = "Invalid value for java.lang.Integer constructor";
     26 
     27     TryNewJavaInteger( "3.14159", INVALID_JAVA_INTEGER_VALUE );
     28     TryNewJavaInteger( NaN, INVALID_JAVA_INTEGER_VALUE );
     29     TryNewJavaInteger( 0,  0 );
     30     TryNewJavaInteger( -1, -1 );
     31     TryNewJavaInteger( 1,  1 );
     32     TryNewJavaInteger( Infinity, Infinity );
     33 
     34     test();
     35 
     36     /**
     37      *  Check to see if the input is valid for java.lang.Integer. If it is
     38      *  not valid, throw INVALID_JAVA_INTEGER_VALUE.  If input is valid,
     39      *  return Number( v )
     40      *
     41      */
     42 
     43     function newJavaInteger( v ) {
     44         value = Number( v );
     45         if ( Math.floor(value) != value || isNaN(value) ) {
     46             throw ( INVALID_JAVA_INTEGER_VALUE );
     47         } else {
     48             return value;
     49         }
     50     }
     51 
     52     /**
     53      *  Call newJavaInteger( value ) from within a try block.  Catch any
     54      *  exception, and store it in result.  Verify that we got the right
     55      *  return value from newJavaInteger in cases in which we do not expect
     56      *  exceptions, and that we got the exception in cases where an exception
     57      *  was expected.
     58      */
     59     function TryNewJavaInteger( value, expect ) {
     60         var finalTest = false;
     61 
     62         try {
     63             result = newJavaInteger( value );
     64         } catch ( e ) {
     65             result = String( e );
     66         } finally {
     67             finalTest = true;
     68         }
     69             testcases[tc++] = new TestCase(
     70                 SECTION,
     71                 "newJavaValue( " + value +" )",
     72                 expect,
     73                 result);
     74 
     75             testcases[tc++] = new TestCase(
     76                 SECTION,
     77                 "newJavaValue( " + value +" ) hit finally block",
     78                 true,
     79                 finalTest);
     80 
     81     }
     82 
     83