]> git.saurik.com Git - apple/javascriptcore.git/blob - tests/mozilla/ecma_2/Statements/while-004.js
JavaScriptCore-7601.1.46.3.tar.gz
[apple/javascriptcore.git] / tests / mozilla / ecma_2 / Statements / while-004.js
1 /**
2 * File Name: while-004
3 * ECMA Section:
4 * Description: while statement
5 *
6 * Author: christine@netscape.com
7 * Date: 11 August 1998
8 */
9 var SECTION = "while-004";
10 var VERSION = "ECMA_2";
11 var TITLE = "while statement";
12 var BUGNUMBER="316725";
13
14 startTest();
15 writeHeaderToLog( SECTION + " "+ TITLE);
16
17 var tc = 0;
18 var testcases = new Array();
19
20 DoWhile_1();
21 DoWhile_2();
22 DoWhile_3();
23 DoWhile_4();
24 DoWhile_5();
25
26 test();
27
28 /**
29 * Break out of a while by calling return.
30 *
31 * Tests: 12.6.2 step 6.
32 */
33 function dowhile() {
34 result = "pass";
35
36 while (true) {
37 return result;
38 result = "fail: hit code after return statement";
39 break;
40 }
41 }
42
43 function DoWhile_1() {
44 description = "return statement in a while block";
45
46 result = dowhile();
47
48 testcases[tc++] = new TestCase(
49 SECTION,
50 "DoWhile_1" + description,
51 "pass",
52 result );
53 }
54
55 /**
56 * While with a labeled continue statement. Verify that statements
57 * after the continue statement are not evaluated.
58 *
59 * Tests: 12.6.2 step 8.
60 *
61 */
62 function DoWhile_2() {
63 var description = "while with a labeled continue statement";
64 var result1 = "pass";
65 var result2 = "fail: did not execute code after loop, but inside label";
66 var i = 0;
67 var j = 0;
68
69 theloop:
70 while( i++ < 10 ) {
71 j++;
72 continue theloop;
73 result1 = "failed: hit code after continue statement";
74 }
75 result2 = "pass";
76
77 testcases[tc++] = new TestCase(
78 SECTION,
79 "DoWhile_2: " +description + " - code inside the loop, before the continue should be executed ("+j+")",
80 true,
81 j == 10 );
82
83 testcases[tc++] = new TestCase(
84 SECTION,
85 "DoWhile_2: " +description +" - code after labeled continue should not be executed",
86 "pass",
87 result1 );
88
89 testcases[tc++] = new TestCase(
90 SECTION,
91 "DoWhile_2: " +description +" - code after loop but inside label should be executed",
92 "pass",
93 result2 );
94 }
95
96 /**
97 * While with a labeled break.
98 *
99 */
100 function DoWhile_3() {
101 var description = "while with a labeled break statement";
102 var result1 = "pass";
103 var result2 = "pass";
104 var result3 = "fail: did not get to code after label";
105
106 woohoo: {
107 while( true ) {
108 break woohoo;
109 result1 = "fail: got to code after a break";
110 }
111 result2 = "fail: got to code outside of loop but inside label";
112 }
113
114 result3 = "pass";
115
116 testcases[tc++] = new TestCase(
117 SECTION,
118 "DoWhile_3: " +description +" - verify break out of loop",
119 "pass",
120 result1 );
121
122
123 testcases[tc++] = new TestCase(
124 SECTION,
125 "DoWhile_3: " +description +" - verify break out of label",
126 "pass",
127 result2 );
128
129 testcases[tc++] = new TestCase(
130 SECTION,
131 "DoWhile_3: " +description + " - verify correct exit from label",
132 "pass",
133 result3 );
134 }
135
136
137 /**
138 * Labled while with an unlabeled break
139 *
140 */
141 function DoWhile_4() {
142 var description = "labeled while with an unlabeled break";
143 var result1 = "pass";
144 var result2 = "pass";
145 var result3 = "fail: did not evaluate statement after label";
146
147 woohooboy: {
148 while( true ) {
149 break woohooboy;
150 result1 = "fail: got to code after the break";
151 }
152 result2 = "fail: broke out of while, but not out of label";
153 }
154 result3 = "pass";
155
156 testcases[tc++] = new TestCase(
157 SECTION,
158 "DoWhile_4: " +description +" - verify break out of while loop",
159 "pass",
160 result1 );
161
162 testcases[tc++] = new TestCase(
163 SECTION,
164 "DoWhile_4: " +description + " - verify break out of label",
165 "pass",
166 result2 );
167
168 testcases[tc++] = new TestCase(
169 SECTION,
170 "DoWhile_4: " +description +" - verify that statements after label are evaluated",
171 "pass",
172 result3 );
173 }
174
175 /**
176 * in this case, should behave the same way as
177 *
178 *
179 */
180 function DoWhile_5() {
181 var description = "while with a labeled continue statement";
182 var result1 = "pass";
183 var result2 = "fail: did not execute code after loop, but inside label";
184 var i = 0;
185 var j = 0;
186
187 theloop: {
188 j++;
189 while( i++ < 10 ) {
190 continue;
191 result1 = "failed: hit code after continue statement";
192 }
193 result2 = "pass";
194 }
195
196 testcases[tc++] = new TestCase(
197 SECTION,
198 "DoWhile_5: " +description + " - continue should not execute statements above the loop",
199 true,
200 ( j == 1 ) );
201
202 testcases[tc++] = new TestCase(
203 SECTION,
204 "DoWhile_5: " +description +" - code after labeled continue should not be executed",
205 "pass",
206 result1 );
207
208 testcases[tc++] = new TestCase(
209 SECTION,
210 "DoWhile_5: " +description +" - code after loop but inside label should be executed",
211 "pass",
212 result2 );
213 }
214