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-007 michael@0: * ECMA Section: michael@0: * Description: do...while statements michael@0: * michael@0: * A general do...while test. michael@0: * michael@0: * Author: christine@netscape.com michael@0: * Date: 26 August 1998 michael@0: */ michael@0: var SECTION = "dowhile-007"; michael@0: var VERSION = "ECMA_2"; michael@0: var TITLE = "do...while"; michael@0: michael@0: startTest(); michael@0: writeHeaderToLog( SECTION + " "+ TITLE); michael@0: michael@0: DoWhile( new DoWhileObject( false, false, false, false )); michael@0: DoWhile( new DoWhileObject( true, false, false, false )); michael@0: DoWhile( new DoWhileObject( true, true, false, false )); michael@0: DoWhile( new DoWhileObject( true, true, true, false )); michael@0: DoWhile( new DoWhileObject( true, true, true, true )); michael@0: DoWhile( new DoWhileObject( false, false, false, true )); michael@0: DoWhile( new DoWhileObject( false, false, true, true )); michael@0: DoWhile( new DoWhileObject( false, true, true, true )); michael@0: DoWhile( new DoWhileObject( false, false, true, false )); michael@0: michael@0: test(); michael@0: michael@0: function DoWhileObject( out1, out2, out3, in1 ) { michael@0: this.breakOutOne = out1; michael@0: this.breakOutTwo = out2; michael@0: this.breakOutThree = out3; michael@0: this.breakIn = in1; michael@0: } michael@0: function DoWhile( object ) { michael@0: result1 = false; michael@0: result2 = false; michael@0: result3 = false; michael@0: result4 = false; michael@0: michael@0: outie: michael@0: do { michael@0: if ( object.breakOutOne ) { michael@0: break outie; michael@0: } michael@0: result1 = true; michael@0: michael@0: innie: michael@0: do { michael@0: if ( object.breakOutTwo ) { michael@0: break outie; michael@0: } michael@0: result2 = true; michael@0: michael@0: if ( object.breakIn ) { michael@0: break innie; michael@0: } michael@0: result3 = true; michael@0: michael@0: } while ( false ); michael@0: if ( object.breakOutThree ) { michael@0: break outie; michael@0: } michael@0: result4 = true; michael@0: } while ( false ); michael@0: michael@0: new TestCase( michael@0: SECTION, michael@0: "break one: ", michael@0: (object.breakOutOne) ? false : true, michael@0: result1 ); michael@0: michael@0: new TestCase( michael@0: SECTION, michael@0: "break two: ", michael@0: (object.breakOutOne||object.breakOutTwo) ? false : true, michael@0: result2 ); michael@0: michael@0: new TestCase( michael@0: SECTION, michael@0: "break three: ", michael@0: (object.breakOutOne||object.breakOutTwo||object.breakIn) ? false : true, michael@0: result3 ); michael@0: michael@0: new TestCase( michael@0: SECTION, michael@0: "break four: ", michael@0: (object.breakOutOne||object.breakOutTwo||object.breakOutThree) ? false: true, michael@0: result4 ); michael@0: }