Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(137)

Side by Side Diff: test/mjsunit/es6/promises.js

Issue 200763012: Remove Promise.cast (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/promise.js ('k') | test/webkit/fast/js/Promise-static-cast.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
11 // with the distribution. 11 // with the distribution.
12 // * Neither the name of Google Inc. nor the names of its 12 // * Neither the name of Google Inc. nor the names of its
13 // contributors may be used to endorse or promote products derived 13 // contributors may be used to endorse or promote products derived
14 // from this software without specific prior written permission. 14 // from this software without specific prior written permission.
15 // 15 //
16 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 16 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 17 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 18 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 19 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 20 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 21 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 22 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 23 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 25 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 27
28 // Flags: --harmony-promises --harmony-observation --allow-natives-syntax 28 // Flags: --harmony-promises --allow-natives-syntax
29 29
30 var asyncAssertsExpected = 0; 30 var asyncAssertsExpected = 0;
31 31
32 function assertAsyncRan() { ++asyncAssertsExpected } 32 function assertAsyncRan() { ++asyncAssertsExpected }
33 33
34 function assertAsync(b, s) { 34 function assertAsync(b, s) {
35 if (b) { 35 if (b) {
36 print(s, "succeeded") 36 print(s, "succeeded")
37 } else { 37 } else {
38 %AbortJS(s + " FAILED!") // Simply throwing here will have no effect. 38 %AbortJS(s + " FAILED!") // Simply throwing here will have no effect.
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
75 75
76 (function() { 76 (function() {
77 (new Promise(function() { throw 5 })).chain( 77 (new Promise(function() { throw 5 })).chain(
78 assertUnreachable, 78 assertUnreachable,
79 function(r) { assertAsync(r === 5, "new-throw") } 79 function(r) { assertAsync(r === 5, "new-throw") }
80 ) 80 )
81 assertAsyncRan() 81 assertAsyncRan()
82 })(); 82 })();
83 83
84 (function() { 84 (function() {
85 Promise.resolve(5); 85 Promise.accept(5);
86 Promise.resolve(5).chain(undefined, assertUnreachable).chain( 86 Promise.accept(5).chain(undefined, assertUnreachable).chain(
87 function(x) { assertAsync(x === 5, "resolved/chain-nohandler") }, 87 function(x) { assertAsync(x === 5, "resolved/chain-nohandler") },
88 assertUnreachable 88 assertUnreachable
89 ) 89 )
90 assertAsyncRan() 90 assertAsyncRan()
91 })(); 91 })();
92 92
93 (function() { 93 (function() {
94 Promise.reject(5).chain(assertUnreachable, undefined).chain( 94 Promise.reject(5).chain(assertUnreachable, undefined).chain(
95 assertUnreachable, 95 assertUnreachable,
96 function(r) { assertAsync(r === 5, "rejected/chain-nohandler") } 96 function(r) { assertAsync(r === 5, "rejected/chain-nohandler") }
97 ) 97 )
98 assertAsyncRan() 98 assertAsyncRan()
99 })(); 99 })();
100 100
101 (function() { 101 (function() {
102 Promise.resolve(5).then(undefined, assertUnreachable).chain( 102 Promise.accept(5).then(undefined, assertUnreachable).chain(
103 function(x) { assertAsync(x === 5, "resolved/then-nohandler-undefined") }, 103 function(x) { assertAsync(x === 5, "resolved/then-nohandler-undefined") },
104 assertUnreachable 104 assertUnreachable
105 ) 105 )
106 assertAsyncRan() 106 assertAsyncRan()
107 Promise.resolve(6).then(null, assertUnreachable).chain( 107 Promise.accept(6).then(null, assertUnreachable).chain(
108 function(x) { assertAsync(x === 6, "resolved/then-nohandler-null") }, 108 function(x) { assertAsync(x === 6, "resolved/then-nohandler-null") },
109 assertUnreachable 109 assertUnreachable
110 ) 110 )
111 assertAsyncRan() 111 assertAsyncRan()
112 })(); 112 })();
113 113
114 (function() { 114 (function() {
115 Promise.reject(5).then(assertUnreachable, undefined).chain( 115 Promise.reject(5).then(assertUnreachable, undefined).chain(
116 assertUnreachable, 116 assertUnreachable,
117 function(r) { assertAsync(r === 5, "rejected/then-nohandler-undefined") } 117 function(r) { assertAsync(r === 5, "rejected/then-nohandler-undefined") }
118 ) 118 )
119 assertAsyncRan() 119 assertAsyncRan()
120 Promise.reject(6).then(assertUnreachable, null).chain( 120 Promise.reject(6).then(assertUnreachable, null).chain(
121 assertUnreachable, 121 assertUnreachable,
122 function(r) { assertAsync(r === 6, "rejected/then-nohandler-null") } 122 function(r) { assertAsync(r === 6, "rejected/then-nohandler-null") }
123 ) 123 )
124 assertAsyncRan() 124 assertAsyncRan()
125 })(); 125 })();
126 126
127 (function() { 127 (function() {
128 var p1 = Promise.resolve(5) 128 var p1 = Promise.accept(5)
129 var p2 = Promise.resolve(p1) 129 var p2 = Promise.accept(p1)
130 var p3 = Promise.resolve(p2) 130 var p3 = Promise.accept(p2)
131 p3.chain( 131 p3.chain(
132 function(x) { assertAsync(x === p2, "resolved/chain") }, 132 function(x) { assertAsync(x === p2, "resolved/chain") },
133 assertUnreachable 133 assertUnreachable
134 ) 134 )
135 assertAsyncRan() 135 assertAsyncRan()
136 })(); 136 })();
137 137
138 (function() { 138 (function() {
139 var p1 = Promise.resolve(5) 139 var p1 = Promise.accept(5)
140 var p2 = Promise.resolve(p1) 140 var p2 = Promise.accept(p1)
141 var p3 = Promise.resolve(p2) 141 var p3 = Promise.accept(p2)
142 p3.then( 142 p3.then(
143 function(x) { assertAsync(x === 5, "resolved/then") }, 143 function(x) { assertAsync(x === 5, "resolved/then") },
144 assertUnreachable 144 assertUnreachable
145 ) 145 )
146 assertAsyncRan() 146 assertAsyncRan()
147 })(); 147 })();
148 148
149 (function() { 149 (function() {
150 var p1 = Promise.reject(5) 150 var p1 = Promise.reject(5)
151 var p2 = Promise.resolve(p1) 151 var p2 = Promise.accept(p1)
152 var p3 = Promise.resolve(p2) 152 var p3 = Promise.accept(p2)
153 p3.chain( 153 p3.chain(
154 function(x) { assertAsync(x === p2, "rejected/chain") }, 154 function(x) { assertAsync(x === p2, "rejected/chain") },
155 assertUnreachable 155 assertUnreachable
156 ) 156 )
157 assertAsyncRan() 157 assertAsyncRan()
158 })(); 158 })();
159 159
160 (function() { 160 (function() {
161 var p1 = Promise.reject(5) 161 var p1 = Promise.reject(5)
162 var p2 = Promise.resolve(p1) 162 var p2 = Promise.accept(p1)
163 var p3 = Promise.resolve(p2) 163 var p3 = Promise.accept(p2)
164 p3.then( 164 p3.then(
165 assertUnreachable, 165 assertUnreachable,
166 function(x) { assertAsync(x === 5, "rejected/then") } 166 function(x) { assertAsync(x === 5, "rejected/then") }
167 ) 167 )
168 assertAsyncRan() 168 assertAsyncRan()
169 })(); 169 })();
170 170
171 (function() { 171 (function() {
172 var p1 = Promise.resolve(5) 172 var p1 = Promise.accept(5)
173 var p2 = Promise.resolve(p1) 173 var p2 = Promise.accept(p1)
174 var p3 = Promise.resolve(p2) 174 var p3 = Promise.accept(p2)
175 p3.chain(function(x) { return x }, assertUnreachable).chain( 175 p3.chain(function(x) { return x }, assertUnreachable).chain(
176 function(x) { assertAsync(x === p1, "resolved/chain/chain") }, 176 function(x) { assertAsync(x === p1, "resolved/chain/chain") },
177 assertUnreachable 177 assertUnreachable
178 ) 178 )
179 assertAsyncRan() 179 assertAsyncRan()
180 })(); 180 })();
181 181
182 (function() { 182 (function() {
183 var p1 = Promise.resolve(5) 183 var p1 = Promise.accept(5)
184 var p2 = Promise.resolve(p1) 184 var p2 = Promise.accept(p1)
185 var p3 = Promise.resolve(p2) 185 var p3 = Promise.accept(p2)
186 p3.chain(function(x) { return x }, assertUnreachable).then( 186 p3.chain(function(x) { return x }, assertUnreachable).then(
187 function(x) { assertAsync(x === 5, "resolved/chain/then") }, 187 function(x) { assertAsync(x === 5, "resolved/chain/then") },
188 assertUnreachable 188 assertUnreachable
189 ) 189 )
190 assertAsyncRan() 190 assertAsyncRan()
191 })(); 191 })();
192 192
193 (function() { 193 (function() {
194 var p1 = Promise.resolve(5) 194 var p1 = Promise.accept(5)
195 var p2 = Promise.resolve(p1) 195 var p2 = Promise.accept(p1)
196 var p3 = Promise.resolve(p2) 196 var p3 = Promise.accept(p2)
197 p3.chain(function(x) { return 6 }, assertUnreachable).chain( 197 p3.chain(function(x) { return 6 }, assertUnreachable).chain(
198 function(x) { assertAsync(x === 6, "resolved/chain/chain2") }, 198 function(x) { assertAsync(x === 6, "resolved/chain/chain2") },
199 assertUnreachable 199 assertUnreachable
200 ) 200 )
201 assertAsyncRan() 201 assertAsyncRan()
202 })(); 202 })();
203 203
204 (function() { 204 (function() {
205 var p1 = Promise.resolve(5) 205 var p1 = Promise.accept(5)
206 var p2 = Promise.resolve(p1) 206 var p2 = Promise.accept(p1)
207 var p3 = Promise.resolve(p2) 207 var p3 = Promise.accept(p2)
208 p3.chain(function(x) { return 6 }, assertUnreachable).then( 208 p3.chain(function(x) { return 6 }, assertUnreachable).then(
209 function(x) { assertAsync(x === 6, "resolved/chain/then2") }, 209 function(x) { assertAsync(x === 6, "resolved/chain/then2") },
210 assertUnreachable 210 assertUnreachable
211 ) 211 )
212 assertAsyncRan() 212 assertAsyncRan()
213 })(); 213 })();
214 214
215 (function() { 215 (function() {
216 var p1 = Promise.resolve(5) 216 var p1 = Promise.accept(5)
217 var p2 = Promise.resolve(p1) 217 var p2 = Promise.accept(p1)
218 var p3 = Promise.resolve(p2) 218 var p3 = Promise.accept(p2)
219 p3.then(function(x) { return x + 1 }, assertUnreachable).chain( 219 p3.then(function(x) { return x + 1 }, assertUnreachable).chain(
220 function(x) { assertAsync(x === 6, "resolved/then/chain") }, 220 function(x) { assertAsync(x === 6, "resolved/then/chain") },
221 assertUnreachable 221 assertUnreachable
222 ) 222 )
223 assertAsyncRan() 223 assertAsyncRan()
224 })(); 224 })();
225 225
226 (function() { 226 (function() {
227 var p1 = Promise.resolve(5) 227 var p1 = Promise.accept(5)
228 var p2 = Promise.resolve(p1) 228 var p2 = Promise.accept(p1)
229 var p3 = Promise.resolve(p2) 229 var p3 = Promise.accept(p2)
230 p3.then(function(x) { return x + 1 }, assertUnreachable).then( 230 p3.then(function(x) { return x + 1 }, assertUnreachable).then(
231 function(x) { assertAsync(x === 6, "resolved/then/then") }, 231 function(x) { assertAsync(x === 6, "resolved/then/then") },
232 assertUnreachable 232 assertUnreachable
233 ) 233 )
234 assertAsyncRan() 234 assertAsyncRan()
235 })(); 235 })();
236 236
237 (function() { 237 (function() {
238 var p1 = Promise.resolve(5) 238 var p1 = Promise.accept(5)
239 var p2 = Promise.resolve(p1) 239 var p2 = Promise.accept(p1)
240 var p3 = Promise.resolve(p2) 240 var p3 = Promise.accept(p2)
241 p3.then(function(x){ return Promise.resolve(x+1) }, assertUnreachable).chain( 241 p3.then(function(x){ return Promise.accept(x+1) }, assertUnreachable).chain(
242 function(x) { assertAsync(x === 6, "resolved/then/chain2") }, 242 function(x) { assertAsync(x === 6, "resolved/then/chain2") },
243 assertUnreachable 243 assertUnreachable
244 ) 244 )
245 assertAsyncRan() 245 assertAsyncRan()
246 })(); 246 })();
247 247
248 (function() { 248 (function() {
249 var p1 = Promise.resolve(5) 249 var p1 = Promise.accept(5)
250 var p2 = Promise.resolve(p1) 250 var p2 = Promise.accept(p1)
251 var p3 = Promise.resolve(p2) 251 var p3 = Promise.accept(p2)
252 p3.then(function(x) { return Promise.resolve(x+1) }, assertUnreachable).then( 252 p3.then(function(x) { return Promise.accept(x+1) }, assertUnreachable).then(
253 function(x) { assertAsync(x === 6, "resolved/then/then2") }, 253 function(x) { assertAsync(x === 6, "resolved/then/then2") },
254 assertUnreachable 254 assertUnreachable
255 ) 255 )
256 assertAsyncRan() 256 assertAsyncRan()
257 })(); 257 })();
258 258
259 (function() { 259 (function() {
260 var p1 = Promise.resolve(5) 260 var p1 = Promise.accept(5)
261 var p2 = Promise.resolve(p1) 261 var p2 = Promise.accept(p1)
262 var p3 = Promise.resolve(p2) 262 var p3 = Promise.accept(p2)
263 p3.chain(function(x) { throw 6 }, assertUnreachable).chain( 263 p3.chain(function(x) { throw 6 }, assertUnreachable).chain(
264 assertUnreachable, 264 assertUnreachable,
265 function(x) { assertAsync(x === 6, "resolved/chain-throw/chain") } 265 function(x) { assertAsync(x === 6, "resolved/chain-throw/chain") }
266 ) 266 )
267 assertAsyncRan() 267 assertAsyncRan()
268 })(); 268 })();
269 269
270 (function() { 270 (function() {
271 var p1 = Promise.resolve(5) 271 var p1 = Promise.accept(5)
272 var p2 = Promise.resolve(p1) 272 var p2 = Promise.accept(p1)
273 var p3 = Promise.resolve(p2) 273 var p3 = Promise.accept(p2)
274 p3.chain(function(x) { throw 6 }, assertUnreachable).then( 274 p3.chain(function(x) { throw 6 }, assertUnreachable).then(
275 assertUnreachable, 275 assertUnreachable,
276 function(x) { assertAsync(x === 6, "resolved/chain-throw/then") } 276 function(x) { assertAsync(x === 6, "resolved/chain-throw/then") }
277 ) 277 )
278 assertAsyncRan() 278 assertAsyncRan()
279 })(); 279 })();
280 280
281 (function() { 281 (function() {
282 var p1 = Promise.resolve(5) 282 var p1 = Promise.accept(5)
283 var p2 = Promise.resolve(p1) 283 var p2 = Promise.accept(p1)
284 var p3 = Promise.resolve(p2) 284 var p3 = Promise.accept(p2)
285 p3.then(function(x) { throw 6 }, assertUnreachable).chain( 285 p3.then(function(x) { throw 6 }, assertUnreachable).chain(
286 assertUnreachable, 286 assertUnreachable,
287 function(x) { assertAsync(x === 6, "resolved/then-throw/chain") } 287 function(x) { assertAsync(x === 6, "resolved/then-throw/chain") }
288 ) 288 )
289 assertAsyncRan() 289 assertAsyncRan()
290 })(); 290 })();
291 291
292 (function() { 292 (function() {
293 var p1 = Promise.resolve(5) 293 var p1 = Promise.accept(5)
294 var p2 = Promise.resolve(p1) 294 var p2 = Promise.accept(p1)
295 var p3 = Promise.resolve(p2) 295 var p3 = Promise.accept(p2)
296 p3.then(function(x) { throw 6 }, assertUnreachable).then( 296 p3.then(function(x) { throw 6 }, assertUnreachable).then(
297 assertUnreachable, 297 assertUnreachable,
298 function(x) { assertAsync(x === 6, "resolved/then-throw/then") } 298 function(x) { assertAsync(x === 6, "resolved/then-throw/then") }
299 ) 299 )
300 assertAsyncRan() 300 assertAsyncRan()
301 })(); 301 })();
302 302
303 (function() { 303 (function() {
304 var p1 = Promise.resolve(5) 304 var p1 = Promise.accept(5)
305 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }} 305 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }}
306 var p3 = Promise.resolve(p2) 306 var p3 = Promise.accept(p2)
307 p3.chain( 307 p3.chain(
308 function(x) { assertAsync(x === p2, "resolved/thenable/chain") }, 308 function(x) { assertAsync(x === p2, "resolved/thenable/chain") },
309 assertUnreachable 309 assertUnreachable
310 ) 310 )
311 assertAsyncRan() 311 assertAsyncRan()
312 })(); 312 })();
313 313
314 (function() { 314 (function() {
315 var p1 = Promise.resolve(5) 315 var p1 = Promise.accept(5)
316 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }} 316 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }}
317 var p3 = Promise.resolve(p2) 317 var p3 = Promise.accept(p2)
318 p3.then( 318 p3.then(
319 function(x) { assertAsync(x === 5, "resolved/thenable/then") }, 319 function(x) { assertAsync(x === 5, "resolved/thenable/then") },
320 assertUnreachable 320 assertUnreachable
321 ) 321 )
322 assertAsyncRan() 322 assertAsyncRan()
323 })(); 323 })();
324 324
325 (function() { 325 (function() {
326 var p1 = Promise.reject(5) 326 var p1 = Promise.reject(5)
327 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }} 327 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }}
328 var p3 = Promise.resolve(p2) 328 var p3 = Promise.accept(p2)
329 p3.chain( 329 p3.chain(
330 function(x) { assertAsync(x === p2, "rejected/thenable/chain") }, 330 function(x) { assertAsync(x === p2, "rejected/thenable/chain") },
331 assertUnreachable 331 assertUnreachable
332 ) 332 )
333 assertAsyncRan() 333 assertAsyncRan()
334 })(); 334 })();
335 335
336 (function() { 336 (function() {
337 var p1 = Promise.reject(5) 337 var p1 = Promise.reject(5)
338 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }} 338 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }}
339 var p3 = Promise.resolve(p2) 339 var p3 = Promise.accept(p2)
340 p3.then( 340 p3.then(
341 assertUnreachable, 341 assertUnreachable,
342 function(x) { assertAsync(x === 5, "rejected/thenable/then") } 342 function(x) { assertAsync(x === 5, "rejected/thenable/then") }
343 ) 343 )
344 assertAsyncRan() 344 assertAsyncRan()
345 })(); 345 })();
346 346
347 (function() { 347 (function() {
348 var deferred = Promise.defer() 348 var deferred = Promise.defer()
349 var p1 = deferred.promise 349 var p1 = deferred.promise
350 var p2 = Promise.resolve(p1) 350 var p2 = Promise.accept(p1)
351 var p3 = Promise.resolve(p2) 351 var p3 = Promise.accept(p2)
352 p3.chain( 352 p3.chain(
353 function(x) { assertAsync(x === p2, "chain/resolve") }, 353 function(x) { assertAsync(x === p2, "chain/resolve") },
354 assertUnreachable 354 assertUnreachable
355 ) 355 )
356 deferred.resolve(5) 356 deferred.resolve(5)
357 assertAsyncRan() 357 assertAsyncRan()
358 })(); 358 })();
359 359
360 (function() { 360 (function() {
361 var deferred = Promise.defer() 361 var deferred = Promise.defer()
362 var p1 = deferred.promise 362 var p1 = deferred.promise
363 var p2 = Promise.resolve(p1) 363 var p2 = Promise.accept(p1)
364 var p3 = Promise.resolve(p2) 364 var p3 = Promise.accept(p2)
365 p3.then( 365 p3.then(
366 function(x) { assertAsync(x === 5, "then/resolve") }, 366 function(x) { assertAsync(x === 5, "then/resolve") },
367 assertUnreachable 367 assertUnreachable
368 ) 368 )
369 deferred.resolve(5) 369 deferred.resolve(5)
370 assertAsyncRan() 370 assertAsyncRan()
371 })(); 371 })();
372 372
373 (function() { 373 (function() {
374 var deferred = Promise.defer() 374 var deferred = Promise.defer()
375 var p1 = deferred.promise 375 var p1 = deferred.promise
376 var p2 = Promise.resolve(p1) 376 var p2 = Promise.accept(p1)
377 var p3 = Promise.resolve(p2) 377 var p3 = Promise.accept(p2)
378 p3.chain( 378 p3.chain(
379 function(x) { assertAsync(x === p2, "chain/reject") }, 379 function(x) { assertAsync(x === p2, "chain/reject") },
380 assertUnreachable 380 assertUnreachable
381 ) 381 )
382 deferred.reject(5) 382 deferred.reject(5)
383 assertAsyncRan() 383 assertAsyncRan()
384 })(); 384 })();
385 385
386 (function() { 386 (function() {
387 var deferred = Promise.defer() 387 var deferred = Promise.defer()
388 var p1 = deferred.promise 388 var p1 = deferred.promise
389 var p2 = Promise.resolve(p1) 389 var p2 = Promise.accept(p1)
390 var p3 = Promise.resolve(p2) 390 var p3 = Promise.accept(p2)
391 p3.then( 391 p3.then(
392 assertUnreachable, 392 assertUnreachable,
393 function(x) { assertAsync(x === 5, "then/reject") } 393 function(x) { assertAsync(x === 5, "then/reject") }
394 ) 394 )
395 deferred.reject(5) 395 deferred.reject(5)
396 assertAsyncRan() 396 assertAsyncRan()
397 })(); 397 })();
398 398
399 (function() { 399 (function() {
400 var deferred = Promise.defer() 400 var deferred = Promise.defer()
401 var p1 = deferred.promise 401 var p1 = deferred.promise
402 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }} 402 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }}
403 var p3 = Promise.resolve(p2) 403 var p3 = Promise.accept(p2)
404 p3.chain( 404 p3.chain(
405 function(x) { assertAsync(x === p2, "chain/resolve/thenable") }, 405 function(x) { assertAsync(x === p2, "chain/resolve/thenable") },
406 assertUnreachable 406 assertUnreachable
407 ) 407 )
408 deferred.resolve(5) 408 deferred.resolve(5)
409 assertAsyncRan() 409 assertAsyncRan()
410 })(); 410 })();
411 411
412 (function() { 412 (function() {
413 var deferred = Promise.defer() 413 var deferred = Promise.defer()
414 var p1 = deferred.promise 414 var p1 = deferred.promise
415 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }} 415 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }}
416 var p3 = Promise.resolve(p2) 416 var p3 = Promise.accept(p2)
417 p3.then( 417 p3.then(
418 function(x) { assertAsync(x === 5, "then/resolve/thenable") }, 418 function(x) { assertAsync(x === 5, "then/resolve/thenable") },
419 assertUnreachable 419 assertUnreachable
420 ) 420 )
421 deferred.resolve(5) 421 deferred.resolve(5)
422 assertAsyncRan() 422 assertAsyncRan()
423 })(); 423 })();
424 424
425 (function() { 425 (function() {
426 var deferred = Promise.defer() 426 var deferred = Promise.defer()
427 var p1 = deferred.promise 427 var p1 = deferred.promise
428 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }} 428 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }}
429 var p3 = Promise.resolve(p2) 429 var p3 = Promise.accept(p2)
430 p3.chain( 430 p3.chain(
431 function(x) { assertAsync(x === p2, "chain/reject/thenable") }, 431 function(x) { assertAsync(x === p2, "chain/reject/thenable") },
432 assertUnreachable 432 assertUnreachable
433 ) 433 )
434 deferred.reject(5) 434 deferred.reject(5)
435 assertAsyncRan() 435 assertAsyncRan()
436 })(); 436 })();
437 437
438 (function() { 438 (function() {
439 var deferred = Promise.defer() 439 var deferred = Promise.defer()
440 var p1 = deferred.promise 440 var p1 = deferred.promise
441 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }} 441 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }}
442 var p3 = Promise.resolve(p2) 442 var p3 = Promise.accept(p2)
443 p3.then( 443 p3.then(
444 assertUnreachable, 444 assertUnreachable,
445 function(x) { assertAsync(x === 5, "then/reject/thenable") } 445 function(x) { assertAsync(x === 5, "then/reject/thenable") }
446 ) 446 )
447 deferred.reject(5) 447 deferred.reject(5)
448 assertAsyncRan() 448 assertAsyncRan()
449 })(); 449 })();
450 450
451 (function() { 451 (function() {
452 var p1 = Promise.resolve(5) 452 var p1 = Promise.accept(5)
453 var p2 = Promise.resolve(p1) 453 var p2 = Promise.accept(p1)
454 var deferred = Promise.defer() 454 var deferred = Promise.defer()
455 var p3 = deferred.promise 455 var p3 = deferred.promise
456 p3.chain( 456 p3.chain(
457 function(x) { assertAsync(x === p2, "chain/resolve2") }, 457 function(x) { assertAsync(x === p2, "chain/resolve2") },
458 assertUnreachable 458 assertUnreachable
459 ) 459 )
460 deferred.resolve(p2) 460 deferred.resolve(p2)
461 assertAsyncRan() 461 assertAsyncRan()
462 })(); 462 })();
463 463
464 (function() { 464 (function() {
465 var p1 = Promise.resolve(5) 465 var p1 = Promise.accept(5)
466 var p2 = Promise.resolve(p1) 466 var p2 = Promise.accept(p1)
467 var deferred = Promise.defer() 467 var deferred = Promise.defer()
468 var p3 = deferred.promise 468 var p3 = deferred.promise
469 p3.then( 469 p3.then(
470 function(x) { assertAsync(x === 5, "then/resolve2") }, 470 function(x) { assertAsync(x === 5, "then/resolve2") },
471 assertUnreachable 471 assertUnreachable
472 ) 472 )
473 deferred.resolve(p2) 473 deferred.resolve(p2)
474 assertAsyncRan() 474 assertAsyncRan()
475 })(); 475 })();
476 476
477 (function() { 477 (function() {
478 var p1 = Promise.resolve(5) 478 var p1 = Promise.accept(5)
479 var p2 = Promise.resolve(p1) 479 var p2 = Promise.accept(p1)
480 var deferred = Promise.defer() 480 var deferred = Promise.defer()
481 var p3 = deferred.promise 481 var p3 = deferred.promise
482 p3.chain( 482 p3.chain(
483 assertUnreachable, 483 assertUnreachable,
484 function(x) { assertAsync(x === 5, "chain/reject2") } 484 function(x) { assertAsync(x === 5, "chain/reject2") }
485 ) 485 )
486 deferred.reject(5) 486 deferred.reject(5)
487 assertAsyncRan() 487 assertAsyncRan()
488 })(); 488 })();
489 489
490 (function() { 490 (function() {
491 var p1 = Promise.resolve(5) 491 var p1 = Promise.accept(5)
492 var p2 = Promise.resolve(p1) 492 var p2 = Promise.accept(p1)
493 var deferred = Promise.defer() 493 var deferred = Promise.defer()
494 var p3 = deferred.promise 494 var p3 = deferred.promise
495 p3.then( 495 p3.then(
496 assertUnreachable, 496 assertUnreachable,
497 function(x) { assertAsync(x === 5, "then/reject2") } 497 function(x) { assertAsync(x === 5, "then/reject2") }
498 ) 498 )
499 deferred.reject(5) 499 deferred.reject(5)
500 assertAsyncRan() 500 assertAsyncRan()
501 })(); 501 })();
502 502
503 (function() { 503 (function() {
504 var p1 = Promise.resolve(5) 504 var p1 = Promise.accept(5)
505 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }} 505 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }}
506 var deferred = Promise.defer() 506 var deferred = Promise.defer()
507 var p3 = deferred.promise 507 var p3 = deferred.promise
508 p3.chain( 508 p3.chain(
509 function(x) { assertAsync(x === p2, "chain/resolve/thenable2") }, 509 function(x) { assertAsync(x === p2, "chain/resolve/thenable2") },
510 assertUnreachable 510 assertUnreachable
511 ) 511 )
512 deferred.resolve(p2) 512 deferred.resolve(p2)
513 assertAsyncRan() 513 assertAsyncRan()
514 })(); 514 })();
515 515
516 (function() { 516 (function() {
517 var p1 = Promise.resolve(5) 517 var p1 = Promise.accept(5)
518 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }} 518 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }}
519 var deferred = Promise.defer() 519 var deferred = Promise.defer()
520 var p3 = deferred.promise 520 var p3 = deferred.promise
521 p3.then( 521 p3.then(
522 function(x) { assertAsync(x === 5, "then/resolve/thenable2") }, 522 function(x) { assertAsync(x === 5, "then/resolve/thenable2") },
523 assertUnreachable 523 assertUnreachable
524 ) 524 )
525 deferred.resolve(p2) 525 deferred.resolve(p2)
526 assertAsyncRan() 526 assertAsyncRan()
527 })(); 527 })();
528 528
529 (function() { 529 (function() {
530 var p1 = Promise.resolve(0) 530 var p1 = Promise.accept(0)
531 var p2 = p1.chain(function(x) { return p2 }, assertUnreachable) 531 var p2 = p1.chain(function(x) { return p2 }, assertUnreachable)
532 p2.chain( 532 p2.chain(
533 assertUnreachable, 533 assertUnreachable,
534 function(r) { assertAsync(r instanceof TypeError, "cyclic/chain") } 534 function(r) { assertAsync(r instanceof TypeError, "cyclic/chain") }
535 ) 535 )
536 assertAsyncRan() 536 assertAsyncRan()
537 })(); 537 })();
538 538
539 (function() { 539 (function() {
540 var p1 = Promise.resolve(0) 540 var p1 = Promise.accept(0)
541 var p2 = p1.then(function(x) { return p2 }, assertUnreachable) 541 var p2 = p1.then(function(x) { return p2 }, assertUnreachable)
542 p2.chain( 542 p2.chain(
543 assertUnreachable, 543 assertUnreachable,
544 function(r) { assertAsync(r instanceof TypeError, "cyclic/then") } 544 function(r) { assertAsync(r instanceof TypeError, "cyclic/then") }
545 ) 545 )
546 assertAsyncRan() 546 assertAsyncRan()
547 })(); 547 })();
548 548
549 (function() { 549 (function() {
550 var deferred = Promise.defer() 550 var deferred = Promise.defer()
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
605 deferred2.resolve(2) 605 deferred2.resolve(2)
606 assertAsyncRan() 606 assertAsyncRan()
607 assertAsyncRan() 607 assertAsyncRan()
608 assertAsyncRan() 608 assertAsyncRan()
609 assertAsyncRan() 609 assertAsyncRan()
610 })(); 610 })();
611 611
612 (function() { 612 (function() {
613 var deferred = Promise.defer() 613 var deferred = Promise.defer()
614 var p1 = deferred.promise 614 var p1 = deferred.promise
615 var p2 = Promise.resolve(2) 615 var p2 = Promise.accept(2)
616 var p3 = Promise.defer().promise 616 var p3 = Promise.defer().promise
617 Promise.all([p1, p2, p3]).chain( 617 Promise.all([p1, p2, p3]).chain(
618 assertUnreachable, 618 assertUnreachable,
619 assertUnreachable 619 assertUnreachable
620 ) 620 )
621 deferred.resolve(1) 621 deferred.resolve(1)
622 })(); 622 })();
623 623
624 (function() { 624 (function() {
625 var deferred1 = Promise.defer() 625 var deferred1 = Promise.defer()
(...skipping 13 matching lines...) Expand all
639 })(); 639 })();
640 640
641 (function() { 641 (function() {
642 Promise.race([]).chain( 642 Promise.race([]).chain(
643 assertUnreachable, 643 assertUnreachable,
644 assertUnreachable 644 assertUnreachable
645 ) 645 )
646 })(); 646 })();
647 647
648 (function() { 648 (function() {
649 var p1 = Promise.resolve(1) 649 var p1 = Promise.accept(1)
650 var p2 = Promise.resolve(2) 650 var p2 = Promise.accept(2)
651 var p3 = Promise.resolve(3) 651 var p3 = Promise.accept(3)
652 Promise.race([p1, p2, p3]).chain( 652 Promise.race([p1, p2, p3]).chain(
653 function(x) { assertAsync(x === 1, "resolved/one") }, 653 function(x) { assertAsync(x === 1, "resolved/one") },
654 assertUnreachable 654 assertUnreachable
655 ) 655 )
656 assertAsyncRan() 656 assertAsyncRan()
657 })(); 657 })();
658 658
659 (function() { 659 (function() {
660 var p1 = Promise.resolve(1) 660 var p1 = Promise.accept(1)
661 var p2 = Promise.resolve(2) 661 var p2 = Promise.accept(2)
662 var p3 = Promise.resolve(3) 662 var p3 = Promise.accept(3)
663 Promise.race([0, p1, p2, p3]).chain( 663 Promise.race([0, p1, p2, p3]).chain(
664 function(x) { assertAsync(x === 0, "resolved-const/one") }, 664 function(x) { assertAsync(x === 0, "resolved-const/one") },
665 assertUnreachable 665 assertUnreachable
666 ) 666 )
667 assertAsyncRan() 667 assertAsyncRan()
668 })(); 668 })();
669 669
670 (function() { 670 (function() {
671 Promise.race({}).chain( 671 Promise.race({}).chain(
672 assertUnreachable, 672 assertUnreachable,
(...skipping 14 matching lines...) Expand all
687 assertUnreachable 687 assertUnreachable
688 ) 688 )
689 deferred3.resolve(3) 689 deferred3.resolve(3)
690 deferred1.resolve(1) 690 deferred1.resolve(1)
691 assertAsyncRan() 691 assertAsyncRan()
692 })(); 692 })();
693 693
694 (function() { 694 (function() {
695 var deferred = Promise.defer() 695 var deferred = Promise.defer()
696 var p1 = deferred.promise 696 var p1 = deferred.promise
697 var p2 = Promise.resolve(2) 697 var p2 = Promise.accept(2)
698 var p3 = Promise.defer().promise 698 var p3 = Promise.defer().promise
699 Promise.race([p1, p2, p3]).chain( 699 Promise.race([p1, p2, p3]).chain(
700 function(x) { assertAsync(x === 2, "resolved/one") }, 700 function(x) { assertAsync(x === 2, "resolved/one") },
701 assertUnreachable 701 assertUnreachable
702 ) 702 )
703 deferred.resolve(1) 703 deferred.resolve(1)
704 assertAsyncRan() 704 assertAsyncRan()
705 })(); 705 })();
706 706
707 (function() { 707 (function() {
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
782 782
783 log = "" 783 log = ""
784 var d6 = MyPromise.defer() 784 var d6 = MyPromise.defer()
785 d6.promise.chain(function(x) { 785 d6.promise.chain(function(x) {
786 return new Promise(function(resolve) { resolve(x) }) 786 return new Promise(function(resolve) { resolve(x) })
787 }).chain(function() {}) 787 }).chain(function() {})
788 d6.resolve(6) 788 d6.resolve(6)
789 assertTrue(log === "dncncnx6", "subclass/chain") 789 assertTrue(log === "dncncnx6", "subclass/chain")
790 790
791 log = "" 791 log = ""
792 Promise.all([11, Promise.resolve(12), 13, MyPromise.resolve(14), 15, 16]) 792 Promise.all([11, Promise.accept(12), 13, MyPromise.accept(14), 15, 16])
793 assertTrue(log === "nx14cn", "subclass/all/arg") 793 assertTrue(log === "nx14cn", "subclass/all/arg")
794 794
795 log = "" 795 log = ""
796 MyPromise.all([21, Promise.resolve(22), 23, MyPromise.resolve(24), 25, 26]) 796 MyPromise.all([21, Promise.accept(22), 23, MyPromise.accept(24), 25, 26])
797 assertTrue(log === "nx24nnx21cnnx23cncnnx25cnnx26cn", "subclass/all/self") 797 assertTrue(log === "nx24nnx21cnnx23cncnnx25cnnx26cn", "subclass/all/self")
798 })(); 798 })();
799 799
800 800
801 assertAsyncDone() 801 assertAsyncDone()
OLDNEW
« no previous file with comments | « src/promise.js ('k') | test/webkit/fast/js/Promise-static-cast.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698