| /* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */ |
| /* This Source Code Form is subject to the terms of the Mozilla Public |
| * License, v. 2.0. If a copy of the MPL was not distributed with this |
| * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
| |
| |
| /** |
| * File Name: while-004 |
| * ECMA Section: |
| * Description: while statement |
| * |
| * Author: christine@netscape.com |
| * Date: 11 August 1998 |
| */ |
| var SECTION = "while-004"; |
| var VERSION = "ECMA_2"; |
| var TITLE = "while statement"; |
| var BUGNUMBER="316725"; |
| |
| startTest(); |
| writeHeaderToLog( SECTION + " "+ TITLE); |
| |
| DoWhile_1(); |
| DoWhile_2(); |
| DoWhile_3(); |
| DoWhile_4(); |
| DoWhile_5(); |
| |
| test(); |
| |
| /** |
| * Break out of a while by calling return. |
| * |
| * Tests: 12.6.2 step 6. |
| */ |
| function dowhile() { |
| result = "pass"; |
| |
| while (true) { |
| return result; |
| result = "fail: hit code after return statement"; |
| break; |
| } |
| } |
| |
| function DoWhile_1() { |
| description = "return statement in a while block"; |
| |
| result = dowhile(); |
| |
| new TestCase( |
| SECTION, |
| "DoWhile_1" + description, |
| "pass", |
| result ); |
| } |
| |
| /** |
| * While with a labeled continue statement. Verify that statements |
| * after the continue statement are not evaluated. |
| * |
| * Tests: 12.6.2 step 8. |
| * |
| */ |
| function DoWhile_2() { |
| var description = "while with a labeled continue statement"; |
| var result1 = "pass"; |
| var result2 = "fail: did not execute code after loop, but inside label"; |
| var i = 0; |
| var j = 0; |
| |
| theloop: |
| while( i++ < 10 ) { |
| j++; |
| continue theloop; |
| result1 = "failed: hit code after continue statement"; |
| } |
| result2 = "pass"; |
| |
| new TestCase( |
| SECTION, |
| "DoWhile_2: " +description + " - code inside the loop, before the continue should be executed ("+j+")", |
| true, |
| j == 10 ); |
| |
| new TestCase( |
| SECTION, |
| "DoWhile_2: " +description +" - code after labeled continue should not be executed", |
| "pass", |
| result1 ); |
| |
| new TestCase( |
| SECTION, |
| "DoWhile_2: " +description +" - code after loop but inside label should be executed", |
| "pass", |
| result2 ); |
| } |
| |
| /** |
| * While with a labeled break. |
| * |
| */ |
| function DoWhile_3() { |
| var description = "while with a labeled break statement"; |
| var result1 = "pass"; |
| var result2 = "pass"; |
| var result3 = "fail: did not get to code after label"; |
| |
| woohoo: { |
| while( true ) { |
| break woohoo; |
| result1 = "fail: got to code after a break"; |
| } |
| result2 = "fail: got to code outside of loop but inside label"; |
| } |
| |
| result3 = "pass"; |
| |
| new TestCase( |
| SECTION, |
| "DoWhile_3: " +description +" - verify break out of loop", |
| "pass", |
| result1 ); |
| |
| |
| new TestCase( |
| SECTION, |
| "DoWhile_3: " +description +" - verify break out of label", |
| "pass", |
| result2 ); |
| |
| new TestCase( |
| SECTION, |
| "DoWhile_3: " +description + " - verify correct exit from label", |
| "pass", |
| result3 ); |
| } |
| |
| |
| /** |
| * Labled while with an unlabeled break |
| * |
| */ |
| function DoWhile_4() { |
| var description = "labeled while with an unlabeled break"; |
| var result1 = "pass"; |
| var result2 = "pass"; |
| var result3 = "fail: did not evaluate statement after label"; |
| |
| woohooboy: { |
| while( true ) { |
| break woohooboy; |
| result1 = "fail: got to code after the break"; |
| } |
| result2 = "fail: broke out of while, but not out of label"; |
| } |
| result3 = "pass"; |
| |
| new TestCase( |
| SECTION, |
| "DoWhile_4: " +description +" - verify break out of while loop", |
| "pass", |
| result1 ); |
| |
| new TestCase( |
| SECTION, |
| "DoWhile_4: " +description + " - verify break out of label", |
| "pass", |
| result2 ); |
| |
| new TestCase( |
| SECTION, |
| "DoWhile_4: " +description +" - verify that statements after label are evaluated", |
| "pass", |
| result3 ); |
| } |
| |
| /** |
| * in this case, should behave the same way as |
| * |
| * |
| */ |
| function DoWhile_5() { |
| var description = "while with a labeled continue statement"; |
| var result1 = "pass"; |
| var result2 = "fail: did not execute code after loop, but inside label"; |
| var i = 0; |
| var j = 0; |
| |
| theloop: { |
| j++; |
| while( i++ < 10 ) { |
| continue; |
| result1 = "failed: hit code after continue statement"; |
| } |
| result2 = "pass"; |
| } |
| |
| new TestCase( |
| SECTION, |
| "DoWhile_5: " +description + " - continue should not execute statements above the loop", |
| true, |
| ( j == 1 ) ); |
| |
| new TestCase( |
| SECTION, |
| "DoWhile_5: " +description +" - code after labeled continue should not be executed", |
| "pass", |
| result1 ); |
| |
| new TestCase( |
| SECTION, |
| "DoWhile_5: " +description +" - code after loop but inside label should be executed", |
| "pass", |
| result2 ); |
| } |
| |