OLD | NEW |
---|---|
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 |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
51 assertAsync(false, "all") | 51 assertAsync(false, "all") |
52 else | 52 else |
53 assertAsyncDone(iteration + 1) | 53 assertAsyncDone(iteration + 1) |
54 } | 54 } |
55 ) | 55 ) |
56 dummy.dummy = dummy | 56 dummy.dummy = dummy |
57 } | 57 } |
58 | 58 |
59 | 59 |
60 (function() { | 60 (function() { |
61 assertThrows(function() { new Promise(5) }, TypeError) | 61 assertThrows(function() { Promise(function() {}) }, TypeError) |
62 })(); | 62 })(); |
63 | 63 |
64 (function() { | 64 (function() { |
65 assertThrows(function() { new Promise(function() { throw 5 }) }, 5) | 65 assertTrue(new Promise(function() {}) instanceof Promise) |
66 })(); | 66 })(); |
67 | 67 |
68 (function() { | 68 (function() { |
69 Promise.resolved(5); | 69 assertDoesNotThrow(function() { new Promise(5) }) |
70 Promise.resolved(5).chain(undefined, assertUnreachable).chain( | 70 assertDoesNotThrow(function() { new Promise(function() { throw 5 }) }) |
71 })(); | |
72 | |
73 (function() { | |
74 (new Promise(5)).chain( | |
75 assertUnreachable, | |
76 function(r) { assertAsync(r instanceof TypeError, "new-noresolver") } | |
77 ) | |
78 assertAsyncRan() | |
79 })(); | |
80 | |
81 (function() { | |
82 (new Promise(function() { throw 5 })).chain( | |
83 assertUnreachable, | |
84 function(r) { assertAsync(r === 5, "new-throw") } | |
85 ) | |
86 assertAsyncRan() | |
87 })(); | |
88 | |
89 (function() { | |
90 Promise.resolve(5); | |
91 Promise.resolve(5).chain(undefined, assertUnreachable).chain( | |
71 function(x) { assertAsync(x === 5, "resolved/chain-nohandler") }, | 92 function(x) { assertAsync(x === 5, "resolved/chain-nohandler") }, |
72 assertUnreachable | 93 assertUnreachable |
73 ) | 94 ) |
74 assertAsyncRan() | 95 assertAsyncRan() |
75 })(); | 96 })(); |
76 | 97 |
77 (function() { | 98 (function() { |
78 Promise.rejected(5).chain(assertUnreachable, undefined).chain( | 99 Promise.reject(5).chain(assertUnreachable, undefined).chain( |
79 assertUnreachable, | 100 assertUnreachable, |
80 function(r) { assertAsync(r === 5, "rejected/chain-nohandler") } | 101 function(r) { assertAsync(r === 5, "rejected/chain-nohandler") } |
81 ) | 102 ) |
82 assertAsyncRan() | 103 assertAsyncRan() |
83 })(); | 104 })(); |
84 | 105 |
85 (function() { | 106 (function() { |
86 Promise.resolved(5).then(undefined, assertUnreachable).chain( | 107 Promise.resolve(5).then(undefined, assertUnreachable).chain( |
87 function(x) { assertAsync(x === 5, "resolved/then-nohandler") }, | 108 function(x) { assertAsync(x === 5, "resolved/then-nohandler") }, |
88 assertUnreachable | 109 assertUnreachable |
89 ) | 110 ) |
90 assertAsyncRan() | 111 assertAsyncRan() |
91 })(); | 112 })(); |
92 | 113 |
93 (function() { | 114 (function() { |
94 Promise.rejected(5).then(assertUnreachable, undefined).chain( | 115 Promise.reject(5).then(assertUnreachable, undefined).chain( |
95 assertUnreachable, | 116 assertUnreachable, |
96 function(r) { assertAsync(r === 5, "rejected/then-nohandler") } | 117 function(r) { assertAsync(r === 5, "rejected/then-nohandler") } |
97 ) | 118 ) |
98 assertAsyncRan() | 119 assertAsyncRan() |
99 })(); | 120 })(); |
100 | 121 |
101 (function() { | 122 (function() { |
102 var p1 = Promise.resolved(5) | 123 var p1 = Promise.resolve(5) |
103 var p2 = Promise.resolved(p1) | 124 var p2 = Promise.resolve(p1) |
104 var p3 = Promise.resolved(p2) | 125 var p3 = Promise.resolve(p2) |
105 p3.chain( | 126 p3.chain( |
106 function(x) { assertAsync(x === p2, "resolved/chain") }, | 127 function(x) { assertAsync(x === p2, "resolved/chain") }, |
107 assertUnreachable | 128 assertUnreachable |
108 ) | 129 ) |
109 assertAsyncRan() | 130 assertAsyncRan() |
110 })(); | 131 })(); |
111 | 132 |
112 (function() { | 133 (function() { |
113 var p1 = Promise.resolved(5) | 134 var p1 = Promise.resolve(5) |
114 var p2 = Promise.resolved(p1) | 135 var p2 = Promise.resolve(p1) |
115 var p3 = Promise.resolved(p2) | 136 var p3 = Promise.resolve(p2) |
116 p3.then( | 137 p3.then( |
117 function(x) { assertAsync(x === 5, "resolved/then") }, | 138 function(x) { assertAsync(x === 5, "resolved/then") }, |
118 assertUnreachable | 139 assertUnreachable |
119 ) | 140 ) |
120 assertAsyncRan() | 141 assertAsyncRan() |
121 })(); | 142 })(); |
122 | 143 |
123 (function() { | 144 (function() { |
124 var p1 = Promise.rejected(5) | 145 var p1 = Promise.reject(5) |
125 var p2 = Promise.resolved(p1) | 146 var p2 = Promise.resolve(p1) |
126 var p3 = Promise.resolved(p2) | 147 var p3 = Promise.resolve(p2) |
127 p3.chain( | 148 p3.chain( |
128 function(x) { assertAsync(x === p2, "rejected/chain") }, | 149 function(x) { assertAsync(x === p2, "rejected/chain") }, |
129 assertUnreachable | 150 assertUnreachable |
130 ) | 151 ) |
131 assertAsyncRan() | 152 assertAsyncRan() |
132 })(); | 153 })(); |
133 | 154 |
134 (function() { | 155 (function() { |
135 var p1 = Promise.rejected(5) | 156 var p1 = Promise.reject(5) |
136 var p2 = Promise.resolved(p1) | 157 var p2 = Promise.resolve(p1) |
137 var p3 = Promise.resolved(p2) | 158 var p3 = Promise.resolve(p2) |
138 p3.then( | 159 p3.then( |
139 assertUnreachable, | 160 assertUnreachable, |
140 function(x) { assertAsync(x === 5, "rejected/then") } | 161 function(x) { assertAsync(x === 5, "rejected/then") } |
141 ) | 162 ) |
142 assertAsyncRan() | 163 assertAsyncRan() |
143 })(); | 164 })(); |
144 | 165 |
145 (function() { | 166 (function() { |
146 var p1 = Promise.resolved(5) | 167 var p1 = Promise.resolve(5) |
147 var p2 = Promise.resolved(p1) | 168 var p2 = Promise.resolve(p1) |
148 var p3 = Promise.resolved(p2) | 169 var p3 = Promise.resolve(p2) |
149 p3.chain(function(x) { return x }, assertUnreachable).chain( | 170 p3.chain(function(x) { return x }, assertUnreachable).chain( |
150 function(x) { assertAsync(x === p1, "resolved/chain/chain") }, | 171 function(x) { assertAsync(x === p1, "resolved/chain/chain") }, |
151 assertUnreachable | 172 assertUnreachable |
152 ) | 173 ) |
153 assertAsyncRan() | 174 assertAsyncRan() |
154 })(); | 175 })(); |
155 | 176 |
156 (function() { | 177 (function() { |
157 var p1 = Promise.resolved(5) | 178 var p1 = Promise.resolve(5) |
158 var p2 = Promise.resolved(p1) | 179 var p2 = Promise.resolve(p1) |
159 var p3 = Promise.resolved(p2) | 180 var p3 = Promise.resolve(p2) |
160 p3.chain(function(x) { return x }, assertUnreachable).then( | 181 p3.chain(function(x) { return x }, assertUnreachable).then( |
161 function(x) { assertAsync(x === 5, "resolved/chain/then") }, | 182 function(x) { assertAsync(x === 5, "resolved/chain/then") }, |
162 assertUnreachable | 183 assertUnreachable |
163 ) | 184 ) |
164 assertAsyncRan() | 185 assertAsyncRan() |
165 })(); | 186 })(); |
166 | 187 |
167 (function() { | 188 (function() { |
168 var p1 = Promise.resolved(5) | 189 var p1 = Promise.resolve(5) |
169 var p2 = Promise.resolved(p1) | 190 var p2 = Promise.resolve(p1) |
170 var p3 = Promise.resolved(p2) | 191 var p3 = Promise.resolve(p2) |
171 p3.chain(function(x) { return 6 }, assertUnreachable).chain( | 192 p3.chain(function(x) { return 6 }, assertUnreachable).chain( |
172 function(x) { assertAsync(x === 6, "resolved/chain/chain2") }, | 193 function(x) { assertAsync(x === 6, "resolved/chain/chain2") }, |
173 assertUnreachable | 194 assertUnreachable |
174 ) | 195 ) |
175 assertAsyncRan() | 196 assertAsyncRan() |
176 })(); | 197 })(); |
177 | 198 |
178 (function() { | 199 (function() { |
179 var p1 = Promise.resolved(5) | 200 var p1 = Promise.resolve(5) |
180 var p2 = Promise.resolved(p1) | 201 var p2 = Promise.resolve(p1) |
181 var p3 = Promise.resolved(p2) | 202 var p3 = Promise.resolve(p2) |
182 p3.chain(function(x) { return 6 }, assertUnreachable).then( | 203 p3.chain(function(x) { return 6 }, assertUnreachable).then( |
183 function(x) { assertAsync(x === 6, "resolved/chain/then2") }, | 204 function(x) { assertAsync(x === 6, "resolved/chain/then2") }, |
184 assertUnreachable | 205 assertUnreachable |
185 ) | 206 ) |
186 assertAsyncRan() | 207 assertAsyncRan() |
187 })(); | 208 })(); |
188 | 209 |
189 (function() { | 210 (function() { |
190 var p1 = Promise.resolved(5) | 211 var p1 = Promise.resolve(5) |
191 var p2 = Promise.resolved(p1) | 212 var p2 = Promise.resolve(p1) |
192 var p3 = Promise.resolved(p2) | 213 var p3 = Promise.resolve(p2) |
193 p3.then(function(x) { return x + 1 }, assertUnreachable).chain( | 214 p3.then(function(x) { return x + 1 }, assertUnreachable).chain( |
194 function(x) { assertAsync(x === 6, "resolved/then/chain") }, | 215 function(x) { assertAsync(x === 6, "resolved/then/chain") }, |
195 assertUnreachable | 216 assertUnreachable |
196 ) | 217 ) |
197 assertAsyncRan() | 218 assertAsyncRan() |
198 })(); | 219 })(); |
199 | 220 |
200 (function() { | 221 (function() { |
201 var p1 = Promise.resolved(5) | 222 var p1 = Promise.resolve(5) |
202 var p2 = Promise.resolved(p1) | 223 var p2 = Promise.resolve(p1) |
203 var p3 = Promise.resolved(p2) | 224 var p3 = Promise.resolve(p2) |
204 p3.then(function(x) { return x + 1 }, assertUnreachable).then( | 225 p3.then(function(x) { return x + 1 }, assertUnreachable).then( |
205 function(x) { assertAsync(x === 6, "resolved/then/then") }, | 226 function(x) { assertAsync(x === 6, "resolved/then/then") }, |
206 assertUnreachable | 227 assertUnreachable |
207 ) | 228 ) |
208 assertAsyncRan() | 229 assertAsyncRan() |
209 })(); | 230 })(); |
210 | 231 |
211 (function() { | 232 (function() { |
212 var p1 = Promise.resolved(5) | 233 var p1 = Promise.resolve(5) |
213 var p2 = Promise.resolved(p1) | 234 var p2 = Promise.resolve(p1) |
214 var p3 = Promise.resolved(p2) | 235 var p3 = Promise.resolve(p2) |
215 p3.then(function(x){ return Promise.resolved(x+1) }, assertUnreachable).chain( | 236 p3.then(function(x){ return Promise.resolve(x+1) }, assertUnreachable).chain( |
216 function(x) { assertAsync(x === 6, "resolved/then/chain2") }, | 237 function(x) { assertAsync(x === 6, "resolved/then/chain2") }, |
217 assertUnreachable | 238 assertUnreachable |
218 ) | 239 ) |
219 assertAsyncRan() | 240 assertAsyncRan() |
220 })(); | 241 })(); |
221 | 242 |
222 (function() { | 243 (function() { |
223 var p1 = Promise.resolved(5) | 244 var p1 = Promise.resolve(5) |
224 var p2 = Promise.resolved(p1) | 245 var p2 = Promise.resolve(p1) |
225 var p3 = Promise.resolved(p2) | 246 var p3 = Promise.resolve(p2) |
226 p3.then(function(x) { return Promise.resolved(x+1) }, assertUnreachable).then( | 247 p3.then(function(x) { return Promise.resolve(x+1) }, assertUnreachable).then( |
227 function(x) { assertAsync(x === 6, "resolved/then/then2") }, | 248 function(x) { assertAsync(x === 6, "resolved/then/then2") }, |
228 assertUnreachable | 249 assertUnreachable |
229 ) | 250 ) |
230 assertAsyncRan() | 251 assertAsyncRan() |
231 })(); | 252 })(); |
232 | 253 |
233 (function() { | 254 (function() { |
234 var p1 = Promise.resolved(5) | 255 var p1 = Promise.resolve(5) |
235 var p2 = Promise.resolved(p1) | 256 var p2 = Promise.resolve(p1) |
236 var p3 = Promise.resolved(p2) | 257 var p3 = Promise.resolve(p2) |
237 p3.chain(function(x) { throw 6 }, assertUnreachable).chain( | 258 p3.chain(function(x) { throw 6 }, assertUnreachable).chain( |
238 assertUnreachable, | 259 assertUnreachable, |
239 function(x) { assertAsync(x === 6, "resolved/chain-throw/chain") } | 260 function(x) { assertAsync(x === 6, "resolved/chain-throw/chain") } |
240 ) | 261 ) |
241 assertAsyncRan() | 262 assertAsyncRan() |
242 })(); | 263 })(); |
243 | 264 |
244 (function() { | 265 (function() { |
245 var p1 = Promise.resolved(5) | 266 var p1 = Promise.resolve(5) |
246 var p2 = Promise.resolved(p1) | 267 var p2 = Promise.resolve(p1) |
247 var p3 = Promise.resolved(p2) | 268 var p3 = Promise.resolve(p2) |
248 p3.chain(function(x) { throw 6 }, assertUnreachable).then( | 269 p3.chain(function(x) { throw 6 }, assertUnreachable).then( |
249 assertUnreachable, | 270 assertUnreachable, |
250 function(x) { assertAsync(x === 6, "resolved/chain-throw/then") } | 271 function(x) { assertAsync(x === 6, "resolved/chain-throw/then") } |
251 ) | 272 ) |
252 assertAsyncRan() | 273 assertAsyncRan() |
253 })(); | 274 })(); |
254 | 275 |
255 (function() { | 276 (function() { |
256 var p1 = Promise.resolved(5) | 277 var p1 = Promise.resolve(5) |
257 var p2 = Promise.resolved(p1) | 278 var p2 = Promise.resolve(p1) |
258 var p3 = Promise.resolved(p2) | 279 var p3 = Promise.resolve(p2) |
259 p3.then(function(x) { throw 6 }, assertUnreachable).chain( | 280 p3.then(function(x) { throw 6 }, assertUnreachable).chain( |
260 assertUnreachable, | 281 assertUnreachable, |
261 function(x) { assertAsync(x === 6, "resolved/then-throw/chain") } | 282 function(x) { assertAsync(x === 6, "resolved/then-throw/chain") } |
262 ) | 283 ) |
263 assertAsyncRan() | 284 assertAsyncRan() |
264 })(); | 285 })(); |
265 | 286 |
266 (function() { | 287 (function() { |
267 var p1 = Promise.resolved(5) | 288 var p1 = Promise.resolve(5) |
268 var p2 = Promise.resolved(p1) | 289 var p2 = Promise.resolve(p1) |
269 var p3 = Promise.resolved(p2) | 290 var p3 = Promise.resolve(p2) |
270 p3.then(function(x) { throw 6 }, assertUnreachable).then( | 291 p3.then(function(x) { throw 6 }, assertUnreachable).then( |
271 assertUnreachable, | 292 assertUnreachable, |
272 function(x) { assertAsync(x === 6, "resolved/then-throw/then") } | 293 function(x) { assertAsync(x === 6, "resolved/then-throw/then") } |
273 ) | 294 ) |
274 assertAsyncRan() | 295 assertAsyncRan() |
275 })(); | 296 })(); |
276 | 297 |
277 (function() { | 298 (function() { |
278 var p1 = Promise.resolved(5) | 299 var p1 = Promise.resolve(5) |
279 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }} | 300 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }} |
280 var p3 = Promise.resolved(p2) | 301 var p3 = Promise.resolve(p2) |
281 p3.chain( | 302 p3.chain( |
282 function(x) { assertAsync(x === p2, "resolved/thenable/chain") }, | 303 function(x) { assertAsync(x === p2, "resolved/thenable/chain") }, |
283 assertUnreachable | 304 assertUnreachable |
284 ) | 305 ) |
285 assertAsyncRan() | 306 assertAsyncRan() |
286 })(); | 307 })(); |
287 | 308 |
288 (function() { | 309 (function() { |
289 var p1 = Promise.resolved(5) | 310 var p1 = Promise.resolve(5) |
290 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }} | 311 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }} |
291 var p3 = Promise.resolved(p2) | 312 var p3 = Promise.resolve(p2) |
292 p3.then( | 313 p3.then( |
293 function(x) { assertAsync(x === 5, "resolved/thenable/then") }, | 314 function(x) { assertAsync(x === 5, "resolved/thenable/then") }, |
294 assertUnreachable | 315 assertUnreachable |
295 ) | 316 ) |
296 assertAsyncRan() | 317 assertAsyncRan() |
297 })(); | 318 })(); |
298 | 319 |
299 (function() { | 320 (function() { |
300 var p1 = Promise.rejected(5) | 321 var p1 = Promise.reject(5) |
301 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }} | 322 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }} |
302 var p3 = Promise.resolved(p2) | 323 var p3 = Promise.resolve(p2) |
303 p3.chain( | 324 p3.chain( |
304 function(x) { assertAsync(x === p2, "rejected/thenable/chain") }, | 325 function(x) { assertAsync(x === p2, "rejected/thenable/chain") }, |
305 assertUnreachable | 326 assertUnreachable |
306 ) | 327 ) |
307 assertAsyncRan() | 328 assertAsyncRan() |
308 })(); | 329 })(); |
309 | 330 |
310 (function() { | 331 (function() { |
311 var p1 = Promise.rejected(5) | 332 var p1 = Promise.reject(5) |
312 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }} | 333 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }} |
313 var p3 = Promise.resolved(p2) | 334 var p3 = Promise.resolve(p2) |
314 p3.then( | 335 p3.then( |
315 assertUnreachable, | 336 assertUnreachable, |
316 function(x) { assertAsync(x === 5, "rejected/thenable/then") } | 337 function(x) { assertAsync(x === 5, "rejected/thenable/then") } |
317 ) | 338 ) |
318 assertAsyncRan() | 339 assertAsyncRan() |
319 })(); | 340 })(); |
320 | 341 |
321 (function() { | 342 (function() { |
322 var deferred = Promise.deferred() | 343 var deferred = Promise.defer() |
Dmitry Lomov (no reviews)
2013/12/04 09:24:43
Non necessary to fix in this CL, but I think it wo
| |
323 var p1 = deferred.promise | 344 var p1 = deferred.promise |
324 var p2 = Promise.resolved(p1) | 345 var p2 = Promise.resolve(p1) |
325 var p3 = Promise.resolved(p2) | 346 var p3 = Promise.resolve(p2) |
326 p3.chain( | 347 p3.chain( |
327 function(x) { assertAsync(x === p2, "chain/resolve") }, | 348 function(x) { assertAsync(x === p2, "chain/resolve") }, |
328 assertUnreachable | 349 assertUnreachable |
329 ) | 350 ) |
330 deferred.resolve(5) | 351 deferred.resolve(5) |
331 assertAsyncRan() | 352 assertAsyncRan() |
332 })(); | 353 })(); |
333 | 354 |
334 (function() { | 355 (function() { |
335 var deferred = Promise.deferred() | 356 var deferred = Promise.defer() |
336 var p1 = deferred.promise | 357 var p1 = deferred.promise |
337 var p2 = Promise.resolved(p1) | 358 var p2 = Promise.resolve(p1) |
338 var p3 = Promise.resolved(p2) | 359 var p3 = Promise.resolve(p2) |
339 p3.then( | 360 p3.then( |
340 function(x) { assertAsync(x === 5, "then/resolve") }, | 361 function(x) { assertAsync(x === 5, "then/resolve") }, |
341 assertUnreachable | 362 assertUnreachable |
342 ) | 363 ) |
343 deferred.resolve(5) | 364 deferred.resolve(5) |
344 assertAsyncRan() | 365 assertAsyncRan() |
345 })(); | 366 })(); |
346 | 367 |
347 (function() { | 368 (function() { |
348 var deferred = Promise.deferred() | 369 var deferred = Promise.defer() |
349 var p1 = deferred.promise | 370 var p1 = deferred.promise |
350 var p2 = Promise.resolved(p1) | 371 var p2 = Promise.resolve(p1) |
351 var p3 = Promise.resolved(p2) | 372 var p3 = Promise.resolve(p2) |
352 p3.chain( | 373 p3.chain( |
353 function(x) { assertAsync(x === p2, "chain/reject") }, | 374 function(x) { assertAsync(x === p2, "chain/reject") }, |
354 assertUnreachable | 375 assertUnreachable |
355 ) | 376 ) |
356 deferred.reject(5) | 377 deferred.reject(5) |
357 assertAsyncRan() | 378 assertAsyncRan() |
358 })(); | 379 })(); |
359 | 380 |
360 (function() { | 381 (function() { |
361 var deferred = Promise.deferred() | 382 var deferred = Promise.defer() |
362 var p1 = deferred.promise | 383 var p1 = deferred.promise |
363 var p2 = Promise.resolved(p1) | 384 var p2 = Promise.resolve(p1) |
364 var p3 = Promise.resolved(p2) | 385 var p3 = Promise.resolve(p2) |
365 p3.then( | 386 p3.then( |
366 assertUnreachable, | 387 assertUnreachable, |
367 function(x) { assertAsync(x === 5, "then/reject") } | 388 function(x) { assertAsync(x === 5, "then/reject") } |
368 ) | 389 ) |
369 deferred.reject(5) | 390 deferred.reject(5) |
370 assertAsyncRan() | 391 assertAsyncRan() |
371 })(); | 392 })(); |
372 | 393 |
373 (function() { | 394 (function() { |
374 var deferred = Promise.deferred() | 395 var deferred = Promise.defer() |
375 var p1 = deferred.promise | 396 var p1 = deferred.promise |
376 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }} | 397 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }} |
377 var p3 = Promise.resolved(p2) | 398 var p3 = Promise.resolve(p2) |
378 p3.chain( | 399 p3.chain( |
379 function(x) { assertAsync(x === p2, "chain/resolve/thenable") }, | 400 function(x) { assertAsync(x === p2, "chain/resolve/thenable") }, |
380 assertUnreachable | 401 assertUnreachable |
381 ) | 402 ) |
382 deferred.resolve(5) | 403 deferred.resolve(5) |
383 assertAsyncRan() | 404 assertAsyncRan() |
384 })(); | 405 })(); |
385 | 406 |
386 (function() { | 407 (function() { |
387 var deferred = Promise.deferred() | 408 var deferred = Promise.defer() |
388 var p1 = deferred.promise | 409 var p1 = deferred.promise |
389 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }} | 410 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }} |
390 var p3 = Promise.resolved(p2) | 411 var p3 = Promise.resolve(p2) |
391 p3.then( | 412 p3.then( |
392 function(x) { assertAsync(x === 5, "then/resolve/thenable") }, | 413 function(x) { assertAsync(x === 5, "then/resolve/thenable") }, |
393 assertUnreachable | 414 assertUnreachable |
394 ) | 415 ) |
395 deferred.resolve(5) | 416 deferred.resolve(5) |
396 assertAsyncRan() | 417 assertAsyncRan() |
397 })(); | 418 })(); |
398 | 419 |
399 (function() { | 420 (function() { |
400 var deferred = Promise.deferred() | 421 var deferred = Promise.defer() |
401 var p1 = deferred.promise | 422 var p1 = deferred.promise |
402 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }} | 423 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }} |
403 var p3 = Promise.resolved(p2) | 424 var p3 = Promise.resolve(p2) |
404 p3.chain( | 425 p3.chain( |
405 function(x) { assertAsync(x === p2, "chain/reject/thenable") }, | 426 function(x) { assertAsync(x === p2, "chain/reject/thenable") }, |
406 assertUnreachable | 427 assertUnreachable |
407 ) | 428 ) |
408 deferred.reject(5) | 429 deferred.reject(5) |
409 assertAsyncRan() | 430 assertAsyncRan() |
410 })(); | 431 })(); |
411 | 432 |
412 (function() { | 433 (function() { |
413 var deferred = Promise.deferred() | 434 var deferred = Promise.defer() |
414 var p1 = deferred.promise | 435 var p1 = deferred.promise |
415 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }} | 436 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }} |
416 var p3 = Promise.resolved(p2) | 437 var p3 = Promise.resolve(p2) |
417 p3.then( | 438 p3.then( |
418 assertUnreachable, | 439 assertUnreachable, |
419 function(x) { assertAsync(x === 5, "then/reject/thenable") } | 440 function(x) { assertAsync(x === 5, "then/reject/thenable") } |
420 ) | 441 ) |
421 deferred.reject(5) | 442 deferred.reject(5) |
422 assertAsyncRan() | 443 assertAsyncRan() |
423 })(); | 444 })(); |
424 | 445 |
425 (function() { | 446 (function() { |
426 var p1 = Promise.resolved(5) | 447 var p1 = Promise.resolve(5) |
427 var p2 = Promise.resolved(p1) | 448 var p2 = Promise.resolve(p1) |
428 var deferred = Promise.deferred() | 449 var deferred = Promise.defer() |
429 var p3 = deferred.promise | 450 var p3 = deferred.promise |
430 p3.chain( | 451 p3.chain( |
431 function(x) { assertAsync(x === p2, "chain/resolve2") }, | 452 function(x) { assertAsync(x === p2, "chain/resolve2") }, |
432 assertUnreachable | 453 assertUnreachable |
433 ) | 454 ) |
434 deferred.resolve(p2) | 455 deferred.resolve(p2) |
435 assertAsyncRan() | 456 assertAsyncRan() |
436 })(); | 457 })(); |
437 | 458 |
438 (function() { | 459 (function() { |
439 var p1 = Promise.resolved(5) | 460 var p1 = Promise.resolve(5) |
440 var p2 = Promise.resolved(p1) | 461 var p2 = Promise.resolve(p1) |
441 var deferred = Promise.deferred() | 462 var deferred = Promise.defer() |
442 var p3 = deferred.promise | 463 var p3 = deferred.promise |
443 p3.then( | 464 p3.then( |
444 function(x) { assertAsync(x === 5, "then/resolve2") }, | 465 function(x) { assertAsync(x === 5, "then/resolve2") }, |
445 assertUnreachable | 466 assertUnreachable |
446 ) | 467 ) |
447 deferred.resolve(p2) | 468 deferred.resolve(p2) |
448 assertAsyncRan() | 469 assertAsyncRan() |
449 })(); | 470 })(); |
450 | 471 |
451 (function() { | 472 (function() { |
452 var p1 = Promise.resolved(5) | 473 var p1 = Promise.resolve(5) |
453 var p2 = Promise.resolved(p1) | 474 var p2 = Promise.resolve(p1) |
454 var deferred = Promise.deferred() | 475 var deferred = Promise.defer() |
455 var p3 = deferred.promise | 476 var p3 = deferred.promise |
456 p3.chain( | 477 p3.chain( |
457 assertUnreachable, | 478 assertUnreachable, |
458 function(x) { assertAsync(x === 5, "chain/reject2") } | 479 function(x) { assertAsync(x === 5, "chain/reject2") } |
459 ) | 480 ) |
460 deferred.reject(5) | 481 deferred.reject(5) |
461 assertAsyncRan() | 482 assertAsyncRan() |
462 })(); | 483 })(); |
463 | 484 |
464 (function() { | 485 (function() { |
465 var p1 = Promise.resolved(5) | 486 var p1 = Promise.resolve(5) |
466 var p2 = Promise.resolved(p1) | 487 var p2 = Promise.resolve(p1) |
467 var deferred = Promise.deferred() | 488 var deferred = Promise.defer() |
468 var p3 = deferred.promise | 489 var p3 = deferred.promise |
469 p3.then( | 490 p3.then( |
470 assertUnreachable, | 491 assertUnreachable, |
471 function(x) { assertAsync(x === 5, "then/reject2") } | 492 function(x) { assertAsync(x === 5, "then/reject2") } |
472 ) | 493 ) |
473 deferred.reject(5) | 494 deferred.reject(5) |
474 assertAsyncRan() | 495 assertAsyncRan() |
475 })(); | 496 })(); |
476 | 497 |
477 (function() { | 498 (function() { |
478 var p1 = Promise.resolved(5) | 499 var p1 = Promise.resolve(5) |
479 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }} | 500 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }} |
480 var deferred = Promise.deferred() | 501 var deferred = Promise.defer() |
481 var p3 = deferred.promise | 502 var p3 = deferred.promise |
482 p3.chain( | 503 p3.chain( |
483 function(x) { assertAsync(x === p2, "chain/resolve/thenable2") }, | 504 function(x) { assertAsync(x === p2, "chain/resolve/thenable2") }, |
484 assertUnreachable | 505 assertUnreachable |
485 ) | 506 ) |
486 deferred.resolve(p2) | 507 deferred.resolve(p2) |
487 assertAsyncRan() | 508 assertAsyncRan() |
488 })(); | 509 })(); |
489 | 510 |
490 (function() { | 511 (function() { |
491 var p1 = Promise.resolved(5) | 512 var p1 = Promise.resolve(5) |
492 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }} | 513 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }} |
493 var deferred = Promise.deferred() | 514 var deferred = Promise.defer() |
494 var p3 = deferred.promise | 515 var p3 = deferred.promise |
495 p3.then( | 516 p3.then( |
496 function(x) { assertAsync(x === 5, "then/resolve/thenable2") }, | 517 function(x) { assertAsync(x === 5, "then/resolve/thenable2") }, |
497 assertUnreachable | 518 assertUnreachable |
498 ) | 519 ) |
499 deferred.resolve(p2) | 520 deferred.resolve(p2) |
500 assertAsyncRan() | 521 assertAsyncRan() |
501 })(); | 522 })(); |
502 | 523 |
503 (function() { | 524 (function() { |
504 var p1 = Promise.resolved(0) | 525 var p1 = Promise.resolve(0) |
505 var p2 = p1.chain(function(x) { return p2 }, assertUnreachable) | 526 var p2 = p1.chain(function(x) { return p2 }, assertUnreachable) |
506 p2.chain( | 527 p2.chain( |
507 assertUnreachable, | 528 assertUnreachable, |
508 function(r) { assertAsync(r instanceof TypeError, "cyclic/chain") } | 529 function(r) { assertAsync(r instanceof TypeError, "cyclic/chain") } |
509 ) | 530 ) |
510 assertAsyncRan() | 531 assertAsyncRan() |
511 })(); | 532 })(); |
512 | 533 |
513 (function() { | 534 (function() { |
514 var p1 = Promise.resolved(0) | 535 var p1 = Promise.resolve(0) |
515 var p2 = p1.then(function(x) { return p2 }, assertUnreachable) | 536 var p2 = p1.then(function(x) { return p2 }, assertUnreachable) |
516 p2.chain( | 537 p2.chain( |
517 assertUnreachable, | 538 assertUnreachable, |
518 function(r) { assertAsync(r instanceof TypeError, "cyclic/then") } | 539 function(r) { assertAsync(r instanceof TypeError, "cyclic/then") } |
519 ) | 540 ) |
520 assertAsyncRan() | 541 assertAsyncRan() |
521 })(); | 542 })(); |
522 | 543 |
523 (function() { | 544 (function() { |
524 var deferred = Promise.deferred() | 545 var deferred = Promise.defer() |
525 var p = deferred.promise | 546 var p = deferred.promise |
526 deferred.resolve(p) | 547 deferred.resolve(p) |
527 p.chain( | 548 p.chain( |
528 function(x) { assertAsync(x === p, "cyclic/deferred/chain") }, | 549 function(x) { assertAsync(x === p, "cyclic/deferred/chain") }, |
529 assertUnreachable | 550 assertUnreachable |
530 ) | 551 ) |
531 assertAsyncRan() | 552 assertAsyncRan() |
532 })(); | 553 })(); |
533 | 554 |
534 (function() { | 555 (function() { |
535 var deferred = Promise.deferred() | 556 var deferred = Promise.defer() |
536 var p = deferred.promise | 557 var p = deferred.promise |
537 deferred.resolve(p) | 558 deferred.resolve(p) |
538 p.then( | 559 p.then( |
539 assertUnreachable, | 560 assertUnreachable, |
540 function(r) { assertAsync(r instanceof TypeError, "cyclic/deferred/then") } | 561 function(r) { assertAsync(r instanceof TypeError, "cyclic/deferred/then") } |
541 ) | 562 ) |
542 assertAsyncRan() | 563 assertAsyncRan() |
543 })(); | 564 })(); |
544 | 565 |
545 (function() { | 566 (function() { |
567 Promise.all({get length() { throw 666 }}).chain( | |
568 assertUnreachable, | |
569 function(r) { assertAsync(r === 666, "all/no-array") } | |
570 ) | |
571 assertAsyncRan() | |
572 })(); | |
573 | |
574 (function() { | |
546 Promise.all([]).chain( | 575 Promise.all([]).chain( |
547 function(x) { assertAsync(x.length === 0, "all/resolve/empty") }, | 576 function(x) { assertAsync(x.length === 0, "all/resolve/empty") }, |
548 assertUnreachable | 577 assertUnreachable |
549 ) | 578 ) |
550 assertAsyncRan() | 579 assertAsyncRan() |
551 })(); | 580 })(); |
552 | 581 |
553 (function() { | 582 (function() { |
554 var deferred1 = Promise.deferred() | 583 var deferred1 = Promise.defer() |
555 var p1 = deferred1.promise | 584 var p1 = deferred1.promise |
556 var deferred2 = Promise.deferred() | 585 var deferred2 = Promise.defer() |
557 var p2 = deferred2.promise | 586 var p2 = deferred2.promise |
558 var deferred3 = Promise.deferred() | 587 var deferred3 = Promise.defer() |
559 var p3 = deferred3.promise | 588 var p3 = deferred3.promise |
560 Promise.all([p1, p2, p3]).chain( | 589 Promise.all([p1, p2, p3]).chain( |
561 function(x) { | 590 function(x) { |
562 assertAsync(x.length === 3, "all/resolve") | 591 assertAsync(x.length === 3, "all/resolve") |
563 assertAsync(x[0] === 1, "all/resolve/0") | 592 assertAsync(x[0] === 1, "all/resolve/0") |
564 assertAsync(x[1] === 2, "all/resolve/1") | 593 assertAsync(x[1] === 2, "all/resolve/1") |
565 assertAsync(x[2] === 3, "all/resolve/2") | 594 assertAsync(x[2] === 3, "all/resolve/2") |
566 }, | 595 }, |
567 assertUnreachable | 596 assertUnreachable |
568 ) | 597 ) |
569 deferred1.resolve(1) | 598 deferred1.resolve(1) |
570 deferred3.resolve(3) | 599 deferred3.resolve(3) |
571 deferred2.resolve(2) | 600 deferred2.resolve(2) |
572 assertAsyncRan() | 601 assertAsyncRan() |
573 assertAsyncRan() | 602 assertAsyncRan() |
574 assertAsyncRan() | 603 assertAsyncRan() |
575 assertAsyncRan() | 604 assertAsyncRan() |
576 })(); | 605 })(); |
577 | 606 |
578 (function() { | 607 (function() { |
579 var deferred = Promise.deferred() | 608 var deferred = Promise.defer() |
580 var p1 = deferred.promise | 609 var p1 = deferred.promise |
581 var p2 = Promise.resolved(2) | 610 var p2 = Promise.resolve(2) |
582 var p3 = Promise.deferred().promise | 611 var p3 = Promise.defer().promise |
583 Promise.all([p1, p2, p3]).chain( | 612 Promise.all([p1, p2, p3]).chain( |
584 assertUnreachable, | 613 assertUnreachable, |
585 assertUnreachable | 614 assertUnreachable |
586 ) | 615 ) |
587 deferred.resolve(1) | 616 deferred.resolve(1) |
588 })(); | 617 })(); |
589 | 618 |
590 (function() { | 619 (function() { |
591 var deferred1 = Promise.deferred() | 620 var deferred1 = Promise.defer() |
592 var p1 = deferred1.promise | 621 var p1 = deferred1.promise |
593 var deferred2 = Promise.deferred() | 622 var deferred2 = Promise.defer() |
594 var p2 = deferred2.promise | 623 var p2 = deferred2.promise |
595 var deferred3 = Promise.deferred() | 624 var deferred3 = Promise.defer() |
596 var p3 = deferred3.promise | 625 var p3 = deferred3.promise |
597 Promise.all([p1, p2, p3]).chain( | 626 Promise.all([p1, p2, p3]).chain( |
598 assertUnreachable, | 627 assertUnreachable, |
599 function(x) { assertAsync(x === 2, "all/reject") } | 628 function(x) { assertAsync(x === 2, "all/reject") } |
600 ) | 629 ) |
601 deferred1.resolve(1) | 630 deferred1.resolve(1) |
602 deferred3.resolve(3) | 631 deferred3.resolve(3) |
603 deferred2.reject(2) | 632 deferred2.reject(2) |
604 assertAsyncRan() | 633 assertAsyncRan() |
605 })(); | 634 })(); |
606 | 635 |
607 (function() { | 636 (function() { |
608 Promise.one([]).chain( | 637 Promise.one([]).chain( |
609 assertUnreachable, | 638 assertUnreachable, |
610 assertUnreachable | 639 assertUnreachable |
611 ) | 640 ) |
612 })(); | 641 })(); |
613 | 642 |
614 (function() { | 643 (function() { |
615 var p1 = Promise.resolved(1) | 644 var p1 = Promise.resolve(1) |
616 var p2 = Promise.resolved(2) | 645 var p2 = Promise.resolve(2) |
617 var p3 = Promise.resolved(3) | 646 var p3 = Promise.resolve(3) |
618 Promise.one([p1, p2, p3]).chain( | 647 Promise.one([p1, p2, p3]).chain( |
619 function(x) { assertAsync(x === 1, "resolved/all") }, | 648 function(x) { assertAsync(x === 1, "resolved/all") }, |
620 assertUnreachable | 649 assertUnreachable |
621 ) | 650 ) |
622 assertAsyncRan() | 651 assertAsyncRan() |
623 })(); | 652 })(); |
624 | 653 |
625 (function() { | 654 (function() { |
626 var p1 = Promise.resolved(1) | 655 var p1 = Promise.resolve(1) |
627 var p2 = Promise.resolved(2) | 656 var p2 = Promise.resolve(2) |
628 var p3 = Promise.resolved(3) | 657 var p3 = Promise.resolve(3) |
629 Promise.one([0, p1, p2, p3]).chain( | 658 Promise.one([0, p1, p2, p3]).chain( |
630 function(x) { assertAsync(x === 0, "resolved-const/all") }, | 659 function(x) { assertAsync(x === 0, "resolved-const/all") }, |
631 assertUnreachable | 660 assertUnreachable |
632 ) | 661 ) |
633 assertAsyncRan() | 662 assertAsyncRan() |
634 })(); | 663 })(); |
635 | 664 |
636 (function() { | 665 (function() { |
637 var deferred1 = Promise.deferred() | 666 Promise.one({get length() { throw 666 }}).chain( |
667 assertUnreachable, | |
668 function(r) { assertAsync(r === 666, "one/no-array") } | |
669 ) | |
670 assertAsyncRan() | |
671 })(); | |
672 | |
673 (function() { | |
674 var deferred1 = Promise.defer() | |
638 var p1 = deferred1.promise | 675 var p1 = deferred1.promise |
639 var deferred2 = Promise.deferred() | 676 var deferred2 = Promise.defer() |
640 var p2 = deferred2.promise | 677 var p2 = deferred2.promise |
641 var deferred3 = Promise.deferred() | 678 var deferred3 = Promise.defer() |
642 var p3 = deferred3.promise | 679 var p3 = deferred3.promise |
643 Promise.one([p1, p2, p3]).chain( | 680 Promise.one([p1, p2, p3]).chain( |
644 function(x) { assertAsync(x === 3, "one/resolve") }, | 681 function(x) { assertAsync(x === 3, "one/resolve") }, |
645 assertUnreachable | 682 assertUnreachable |
646 ) | 683 ) |
647 deferred3.resolve(3) | 684 deferred3.resolve(3) |
648 deferred1.resolve(1) | 685 deferred1.resolve(1) |
649 assertAsyncRan() | 686 assertAsyncRan() |
650 })(); | 687 })(); |
651 | 688 |
652 (function() { | 689 (function() { |
653 var deferred = Promise.deferred() | 690 var deferred = Promise.defer() |
654 var p1 = deferred.promise | 691 var p1 = deferred.promise |
655 var p2 = Promise.resolved(2) | 692 var p2 = Promise.resolve(2) |
656 var p3 = Promise.deferred().promise | 693 var p3 = Promise.defer().promise |
657 Promise.one([p1, p2, p3]).chain( | 694 Promise.one([p1, p2, p3]).chain( |
658 function(x) { assertAsync(x === 2, "resolved/one") }, | 695 function(x) { assertAsync(x === 2, "resolved/one") }, |
659 assertUnreachable | 696 assertUnreachable |
660 ) | 697 ) |
661 deferred.resolve(1) | 698 deferred.resolve(1) |
662 assertAsyncRan() | 699 assertAsyncRan() |
663 })(); | 700 })(); |
664 | 701 |
665 (function() { | 702 (function() { |
666 var deferred1 = Promise.deferred() | 703 var deferred1 = Promise.defer() |
667 var p1 = deferred1.promise | 704 var p1 = deferred1.promise |
668 var deferred2 = Promise.deferred() | 705 var deferred2 = Promise.defer() |
669 var p2 = deferred2.promise | 706 var p2 = deferred2.promise |
670 var deferred3 = Promise.deferred() | 707 var deferred3 = Promise.defer() |
671 var p3 = deferred3.promise | 708 var p3 = deferred3.promise |
672 Promise.one([p1, p2, p3]).chain( | 709 Promise.one([p1, p2, p3]).chain( |
673 function(x) { assertAsync(x === 3, "one/resolve/reject") }, | 710 function(x) { assertAsync(x === 3, "one/resolve/reject") }, |
674 assertUnreachable | 711 assertUnreachable |
675 ) | 712 ) |
676 deferred3.resolve(3) | 713 deferred3.resolve(3) |
677 deferred1.reject(1) | 714 deferred1.reject(1) |
678 assertAsyncRan() | 715 assertAsyncRan() |
679 })(); | 716 })(); |
680 | 717 |
681 (function() { | 718 (function() { |
682 var deferred1 = Promise.deferred() | 719 var deferred1 = Promise.defer() |
683 var p1 = deferred1.promise | 720 var p1 = deferred1.promise |
684 var deferred2 = Promise.deferred() | 721 var deferred2 = Promise.defer() |
685 var p2 = deferred2.promise | 722 var p2 = deferred2.promise |
686 var deferred3 = Promise.deferred() | 723 var deferred3 = Promise.defer() |
687 var p3 = deferred3.promise | 724 var p3 = deferred3.promise |
688 Promise.one([p1, p2, p3]).chain( | 725 Promise.one([p1, p2, p3]).chain( |
689 assertUnreachable, | 726 assertUnreachable, |
690 function(x) { assertAsync(x === 3, "one/reject/resolve") } | 727 function(x) { assertAsync(x === 3, "one/reject/resolve") } |
691 ) | 728 ) |
692 deferred3.reject(3) | 729 deferred3.reject(3) |
693 deferred1.resolve(1) | 730 deferred1.resolve(1) |
694 assertAsyncRan() | 731 assertAsyncRan() |
695 })(); | 732 })(); |
696 | 733 |
697 (function() { | 734 (function() { |
698 var log | 735 var log |
699 function MyPromise(resolver) { | 736 function MyPromise(resolver) { |
700 log += "n" | 737 log += "n" |
701 Promise.call(this, | 738 var promise = new Promise(function(resolve, reject) { |
702 function(resolve, reject) { | 739 resolver( |
703 resolver( | 740 function(x) { log += "x" + x; resolve(x) }, |
704 function(x) { log += "x" + x; resolve(x) }, | 741 function(r) { log += "r" + r; reject(r) } |
705 function(r) { log += "r" + r; reject(r) } | 742 ) |
706 ) | 743 }) |
707 } | 744 promise.__proto__ = MyPromise.prototype |
708 ) | 745 return promise |
709 } | 746 } |
710 | 747 |
711 MyPromise.__proto__ = Promise | 748 MyPromise.__proto__ = Promise |
712 MyPromise.deferred = function() { | 749 MyPromise.defer = function() { |
713 log += "d" | 750 log += "d" |
714 return this.__proto__.deferred.call(this) | 751 return this.__proto__.defer.call(this) |
715 } | 752 } |
716 | 753 |
717 MyPromise.prototype.__proto__ = Promise.prototype | 754 MyPromise.prototype.__proto__ = Promise.prototype |
718 MyPromise.prototype.chain = function(resolve, reject) { | 755 MyPromise.prototype.chain = function(resolve, reject) { |
719 log += "w" | 756 log += "c" |
720 return this.__proto__.__proto__.chain.call(this, resolve, reject) | 757 return this.__proto__.__proto__.chain.call(this, resolve, reject) |
721 } | 758 } |
722 | 759 |
723 log = "" | 760 log = "" |
724 var p1 = new MyPromise(function(resolve, reject) { resolve(1) }) | 761 var p1 = new MyPromise(function(resolve, reject) { resolve(1) }) |
725 var p2 = new MyPromise(function(resolve, reject) { reject(2) }) | 762 var p2 = new MyPromise(function(resolve, reject) { reject(2) }) |
726 var d3 = MyPromise.deferred() | 763 var d3 = MyPromise.defer() |
727 assertTrue(d3.promise instanceof MyPromise, "subclass/instance3") | 764 assertTrue(d3.promise instanceof Promise, "subclass/instance") |
765 assertTrue(d3.promise instanceof MyPromise, "subclass/instance-my3") | |
728 assertTrue(log === "nx1nr2dn", "subclass/create") | 766 assertTrue(log === "nx1nr2dn", "subclass/create") |
729 | 767 |
730 log = "" | 768 log = "" |
731 var p4 = MyPromise.resolved(4) | 769 var p4 = MyPromise.resolve(4) |
732 var p5 = MyPromise.rejected(5) | 770 var p5 = MyPromise.reject(5) |
733 assertTrue(p4 instanceof MyPromise, "subclass/instance4") | 771 assertTrue(p4 instanceof Promise, "subclass/instance4") |
734 assertTrue(p5 instanceof MyPromise, "subclass/instance5") | 772 assertTrue(p4 instanceof MyPromise, "subclass/instance-my4") |
773 assertTrue(p5 instanceof Promise, "subclass/instance5") | |
774 assertTrue(p5 instanceof MyPromise, "subclass/instance-my5") | |
735 d3.resolve(3) | 775 d3.resolve(3) |
736 assertTrue(log === "nx4nr5x3", "subclass/resolve") | 776 assertTrue(log === "nx4nr5x3", "subclass/resolve") |
737 | 777 |
738 log = "" | 778 log = "" |
739 var d6 = MyPromise.deferred() | 779 var d6 = MyPromise.defer() |
740 d6.promise.chain(function(x) { return new Promise(x) }).chain(function() {}) | 780 d6.promise.chain(function(x) { |
781 return new Promise(function(resolve) { resolve(x) }) | |
782 }).chain(function() {}) | |
741 d6.resolve(6) | 783 d6.resolve(6) |
742 assertTrue(log === "dnwnwnx6", "subclass/chain") | 784 assertTrue(log === "dncncnx6", "subclass/chain") |
743 | 785 |
744 log = "" | 786 log = "" |
745 Promise.all([11, Promise.resolved(12), 13, MyPromise.resolved(14), 15, 16]) | 787 Promise.all([11, Promise.resolve(12), 13, MyPromise.resolve(14), 15, 16]) |
746 assertTrue(log === "nx14wn", "subclass/all/arg") | 788 assertTrue(log === "nx14cn", "subclass/all/arg") |
747 | 789 |
748 log = "" | 790 log = "" |
749 MyPromise.all([21, Promise.resolved(22), 23, MyPromise.resolved(24), 25, 26]) | 791 MyPromise.all([21, Promise.resolve(22), 23, MyPromise.resolve(24), 25, 26]) |
750 assertTrue(log === "nx24dnnx21wnnx23wnwnnx25wnnx26wn", "subclass/all/self") | 792 assertTrue(log === "nx24nnx21cnnx23cncnnx25cnnx26cn", "subclass/all/self") |
751 })(); | 793 })(); |
752 | 794 |
753 | 795 |
754 assertAsyncDone() | 796 assertAsyncDone() |
OLD | NEW |