]> git.saurik.com Git - apple/javascriptcore.git/blame - tests/mozilla/ecma_2/Statements/dowhile-006.js
JavaScriptCore-461.tar.gz
[apple/javascriptcore.git] / tests / mozilla / ecma_2 / Statements / dowhile-006.js
CommitLineData
b37bf2e1
A
1/**
2 * File Name: dowhile-006
3 * ECMA Section:
4 * Description: do...while statements
5 *
6 * A general do...while test.
7 *
8 * Author: christine@netscape.com
9 * Date: 26 August 1998
10 */
11 var SECTION = "dowhile-006";
12 var VERSION = "ECMA_2";
13 var TITLE = "do...while";
14
15 startTest();
16 writeHeaderToLog( SECTION + " "+ TITLE);
17
18 var tc = 0;
19 var testcases = new Array();
20
21 DoWhile( new DoWhileObject( false, false, 10 ) );
22 DoWhile( new DoWhileObject( true, false, 2 ) );
23 DoWhile( new DoWhileObject( false, true, 3 ) );
24 DoWhile( new DoWhileObject( true, true, 4 ) );
25
26 test();
27
28function looping( object ) {
29 object.iterations--;
30
31 if ( object.iterations <= 0 ) {
32 return false;
33 } else {
34 return true;
35 }
36}
37function DoWhileObject( breakOut, breakIn, iterations, loops ) {
38 this.iterations = iterations;
39 this.loops = loops;
40 this.breakOut = breakOut;
41 this.breakIn = breakIn;
42 this.looping = looping;
43}
44function DoWhile( object ) {
45 var result1 = false;
46 var result2 = false;
47
48 outie: {
49 innie: {
50 do {
51 if ( object.breakOut )
52 break outie;
53
54 if ( object.breakIn )
55 break innie;
56
57 } while ( looping(object) );
58
59 // statements should be executed if:
60 // do...while exits normally
61 // do...while exits abruptly with no label
62
63 result1 = true;
64
65 }
66
67 // statements should be executed if:
68 // do...while breaks out with label "innie"
69 // do...while exits normally
70 // do...while does not break out with "outie"
71
72 result2 = true;
73 }
74
75 testcases[tc++] = new TestCase(
76 SECTION,
77 "hit code after loop in inner loop",
78 ( object.breakIn || object.breakOut ) ? false : true ,
79 result1 );
80
81 testcases[tc++] = new TestCase(
82 SECTION,
83 "hit code after loop in outer loop",
84 ( object.breakOut ) ? false : true,
85 result2 );
86}