| /** |
| * File Name: dowhile-004 |
| * ECMA Section: |
| * Description: do...while statements |
| * |
| * Test a labeled do...while. Break out of the loop with no label |
| * should break out of the loop, but not out of the label. |
| * |
| * Author: christine@netscape.com |
| * Date: 11 August 1998 |
| */ |
| var SECTION = "dowhile-004"; |
| var VERSION = "ECMA_2"; |
| var TITLE = "do...while with a labeled continue statement"; |
| |
| startTest(); |
| writeHeaderToLog( SECTION + " "+ TITLE); |
| |
| var tc = 0; |
| var testcases = new Array(); |
| |
| DoWhile( 0, 1 ); |
| DoWhile( 1, 1 ); |
| DoWhile( -1, 1 ); |
| DoWhile( 5, 5 ); |
| |
| test(); |
| |
| function DoWhile( limit, expect ) { |
| i = 0; |
| result1 = "pass"; |
| result2 = "failed: broke out of labeled statement unexpectedly"; |
| |
| foo: { |
| do { |
| i++; |
| if ( ! (i < limit) ) { |
| break; |
| result1 = "fail: evaluated statement after a labeled break"; |
| } |
| } while ( true ); |
| |
| result2 = "pass"; |
| } |
| |
| testcases[tc++] = new TestCase( |
| SECTION, |
| "do while ( " + i +" < " + limit +" )", |
| expect, |
| i ); |
| |
| testcases[tc++] = new TestCase( |
| SECTION, |
| "breaking out of a do... while loop", |
| "pass", |
| result1 ); |
| |
| |
| testcases[tc++] = new TestCase( |
| SECTION, |
| "breaking out of a labeled do...while loop", |
| "pass", |
| result2 ); |
| } |