initial import
[vuplus_webkit] / Source / JavaScriptCore / tests / mozilla / ecma_2 / Statements / try-009.js
1 /**
2  *  File Name:          try-009.js
3  *  ECMA Section:
4  *  Description:        The try statement
5  *
6  *  This test has a try block within a while block.  Verify that an exception
7  *  breaks out of the while.  I don't really know why this is an interesting
8  *  test case but Mike Shaver had two of these so what the hey.
9  *
10  *  Author:             christine@netscape.com
11  *  Date:               11 August 1998
12  */
13     var SECTION = "try-009";
14     var VERSION = "ECMA_2";
15     var TITLE   = "The try statement: try in a while block";
16
17     startTest();
18     writeHeaderToLog( SECTION + " "+ TITLE);
19
20     var tc = 0;
21     var testcases = new Array();
22
23     var EXCEPTION_STRING = "Exception thrown: ";
24     var NO_EXCEPTION_STRING = "No exception thrown: ";
25
26
27     TryInWhile( new TryObject( "hello", ThrowException, true ) );
28     TryInWhile( new TryObject( "aloha", NoException, false ));
29
30     test();
31
32     function TryObject( value, throwFunction, result ) {
33         this.value = value;
34         this.thrower = throwFunction;
35         this.result = result;
36     }
37     function ThrowException() {
38         throw EXCEPTION_STRING + this.value;
39     }
40     function NoException() {
41         return NO_EXCEPTION_STRING + this.value;
42     }
43     function TryInWhile( object ) {
44         result = null;
45         while ( true ) {
46             try {
47                 object.thrower();
48                 result = NO_EXCEPTION_STRING + object.value;
49                 break;
50             } catch ( e ) {
51                 result = e;
52                 break;
53             }
54         }
55
56         testcases[tc++] = new TestCase(
57             SECTION,
58             "( "+ object  +".thrower() )",
59             (object.result
60             ? EXCEPTION_STRING + object.value :
61             NO_EXCEPTION_STRING + object.value),
62             result );
63     }