1/**
2 *  File Name:          dowhile-002
3 *  ECMA Section:
4 *  Description:        do...while statements
5 *
6 *  Verify that code after a labeled break is not executed.  Verify that
7 *  a labeled break breaks you out of the whole labeled block, and not
8 *  just the current iteration statement.
9 *
10 *  Author:             christine@netscape.com
11 *  Date:               11 August 1998
12 */
13    var SECTION = "dowhile-002";
14    var VERSION = "ECMA_2";
15    var TITLE   = "do...while with a labeled continue statement";
16
17    startTest();
18    writeHeaderToLog( SECTION + " "+ TITLE);
19
20    var tc = 0;
21    var testcases = new Array();
22
23    LabeledContinue( 0, 1 );
24    LabeledContinue( 1, 1 );
25    LabeledContinue( -1, 1 );
26    LabeledContinue( 5, 5 );
27
28    test();
29
30// The labeled statment contains statements after the labeled break.
31// Verify that the statements after the break are not executed.
32
33function LabeledContinue( limit, expect ) {
34    i = 0;
35    result1 = "pass";
36    result2 = "pass";
37
38    woohoo: {
39        do {
40            i++;
41            if ( ! (i < limit) ) {
42                break woohoo;
43                result1 = "fail: evaluated statement after a labeled break";
44            }
45        } while ( true );
46
47        result2 = "failed:  broke out of loop, but not out of labeled block";
48    }
49
50    testcases[tc++] = new TestCase(
51        SECTION,
52        "do while ( " + i +" < " + limit +" )",
53        expect,
54        i );
55
56    testcases[tc++] = new TestCase(
57        SECTION,
58        "breaking out of a do... while loop",
59        "pass",
60        result1 );
61
62
63    testcases[tc++] = new TestCase(
64        SECTION,
65        "breaking out of a labeled do...while loop",
66        "pass",
67        result2 );
68}
69