initial import
[vuplus_webkit] / Source / JavaScriptCore / 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