~ubuntu-branches/ubuntu/raring/qtwebkit-source/raring-proposed

« back to all changes in this revision

Viewing changes to Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/while-004.js

  • Committer: Package Import Robot
  • Author(s): Jonathan Riddell
  • Date: 2013-02-18 14:24:18 UTC
  • Revision ID: package-import@ubuntu.com-20130218142418-eon0jmjg3nj438uy
Tags: upstream-2.3
ImportĀ upstreamĀ versionĀ 2.3

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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