| /** |
| * File Name: dowhile-002 |
| * ECMA Section: |
| * Description: do...while statements |
| * |
| * Verify that code after a labeled break is not executed. Verify that |
| * a labeled break breaks you out of the whole labeled block, and not |
| * just the current iteration statement. |
| * |
| * Author: christine@netscape.com |
| * Date: 11 August 1998 |
| */ |
| var SECTION = "dowhile-002"; |
| var VERSION = "ECMA_2"; |
| var TITLE = "do...while with a labeled continue statement"; |
| |
| startTest(); |
| writeHeaderToLog( SECTION + " "+ TITLE); |
| |
| var tc = 0; |
| var testcases = new Array(); |
| |
| LabeledContinue( 0, 1 ); |
| LabeledContinue( 1, 1 ); |
| LabeledContinue( -1, 1 ); |
| LabeledContinue( 5, 5 ); |
| |
| test(); |
| |
| // The labeled statment contains statements after the labeled break. |
| // Verify that the statements after the break are not executed. |
| |
| function LabeledContinue( limit, expect ) { |
| i = 0; |
| result1 = "pass"; |
| result2 = "pass"; |
| |
| woohoo: { |
| do { |
| i++; |
| if ( ! (i < limit) ) { |
| break woohoo; |
| result1 = "fail: evaluated statement after a labeled break"; |
| } |
| } while ( true ); |
| |
| result2 = "failed: broke out of loop, but not out of labeled block"; |
| } |
| |
| 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 ); |
| } |