michael@0: /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ michael@0: /* This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: michael@0: michael@0: /** michael@0: * File Name: dowhile-002 michael@0: * ECMA Section: michael@0: * Description: do...while statements michael@0: * michael@0: * Verify that code after a labeled break is not executed. Verify that michael@0: * a labeled break breaks you out of the whole labeled block, and not michael@0: * just the current iteration statement. michael@0: * michael@0: * Author: christine@netscape.com michael@0: * Date: 11 August 1998 michael@0: */ michael@0: var SECTION = "dowhile-002"; michael@0: var VERSION = "ECMA_2"; michael@0: var TITLE = "do...while with a labeled continue statement"; michael@0: michael@0: startTest(); michael@0: writeHeaderToLog( SECTION + " "+ TITLE); michael@0: michael@0: LabeledContinue( 0, 1 ); michael@0: LabeledContinue( 1, 1 ); michael@0: LabeledContinue( -1, 1 ); michael@0: LabeledContinue( 5, 5 ); michael@0: michael@0: test(); michael@0: michael@0: // The labeled statement contains statements after the labeled break. michael@0: // Verify that the statements after the break are not executed. michael@0: michael@0: function LabeledContinue( limit, expect ) { michael@0: i = 0; michael@0: result1 = "pass"; michael@0: result2 = "pass"; michael@0: michael@0: woohoo: { michael@0: do { michael@0: i++; michael@0: if ( ! (i < limit) ) { michael@0: break woohoo; michael@0: result1 = "fail: evaluated statement after a labeled break"; michael@0: } michael@0: } while ( true ); michael@0: michael@0: result2 = "failed: broke out of loop, but not out of labeled block"; michael@0: } michael@0: michael@0: new TestCase( michael@0: SECTION, michael@0: "do while ( " + i +" < " + limit +" )", michael@0: expect, michael@0: i ); michael@0: michael@0: new TestCase( michael@0: SECTION, michael@0: "breaking out of a do... while loop", michael@0: "pass", michael@0: result1 ); michael@0: michael@0: michael@0: new TestCase( michael@0: SECTION, michael@0: "breaking out of a labeled do...while loop", michael@0: "pass", michael@0: result2 ); michael@0: }