Skip to content

Commit

Permalink
Merge pull request #2404 from w3c/sync_7dbb7222188b2f0edd038d8ea1b07a…
Browse files Browse the repository at this point in the history
…755a31dc63

Merge pull request #2404 from sync_7dbb7222188b2f0edd038d8ea1b07a755a31dc63
  • Loading branch information
jgraham committed Dec 2, 2015
2 parents 63c9644 + 7dbb722 commit fe19ae9
Showing 1 changed file with 48 additions and 6 deletions.
54 changes: 48 additions & 6 deletions js/builtins/Promise-subclassing.html
Expand Up @@ -127,8 +127,10 @@
var p = LoggingPromise.race(new LoggingIterable([1, 2]));
var log = takeLog();
assert_array_equals(log, ["Race 1", "Constructor 1",
"Next 1", "Resolve 1",
"Next 2", "Resolve 2",
"Next 1", "Resolve 1", "Constructor 2",
"Then 1",
"Next 2", "Resolve 2", "Constructor 3",
"Then 2",
"Next 3"]);
assert_true(p instanceof LoggingPromise);
return p.then(function(arg) {
Expand All @@ -141,8 +143,10 @@
var p = SpeciesLessPromise.race(new LoggingIterable([1, 2]));
var log = takeLog();
assert_array_equals(log, ["Race 1", "Constructor 1",
"Next 1", "Resolve 1",
"Next 2", "Resolve 2",
"Next 1", "Resolve 1", "Constructor 2",
"Then 1",
"Next 2", "Resolve 2", "Constructor 3",
"Then 2",
"Next 3"]);
assert_true(p instanceof SpeciesLessPromise);
return p.then(function(arg) {
Expand All @@ -155,13 +159,51 @@
var p = LoggingPromise.all(new LoggingIterable([1, 2]));
var log = takeLog();
assert_array_equals(log, ["All 1", "Constructor 1",
"Next 1", "Resolve 1",
"Next 2", "Resolve 2",
"Next 1", "Resolve 1", "Constructor 2",
"Then 1",
"Next 2", "Resolve 2", "Constructor 3",
"Then 2",
"Next 3"]);
assert_true(p instanceof LoggingPromise);
return p.then(function(arg) {
assert_array_equals(arg, [1, 2]);
});
}, "Promise.all behavior");

promise_test(function testPromiseResolve() {
clearLog();
var p = LoggingPromise.resolve(5);
var log = takeLog();
assert_array_equals(log, ["Resolve 1", "Constructor 1"]);
var q = LoggingPromise.resolve(p);
assert_equals(p, q,
"Promise.resolve with same constructor should preserve identity");
log = takeLog();
assert_array_equals(log, ["Resolve 1"]);

var r = Promise.resolve(p);
assert_not_equals(p, r,
"Promise.resolve with different constructor should " +
"create a new Promise instance (1)")
var s = Promise.resolve(6);
var u = LoggingPromise.resolve(s);
log = takeLog();
assert_array_equals(log, ["Resolve 1", "Constructor 1"]);
assert_not_equals(s, u,
"Promise.resolve with different constructor should " +
"create a new Promise instance (2)")

Object.defineProperty(s, "constructor", { value: LoggingPromise });
var v = LoggingPromise.resolve(s);
log = takeLog();
assert_array_equals(log, ["Resolve 1"]);
assert_equals(v, s, "Faking the .constructor should work");
assert_false(v instanceof LoggingPromise);

var results = Promise.all([p, q, r, s, u, v]);
return results.then(function(arg) {
assert_array_equals(arg, [5, 5, 5, 6, 6, 6]);
});
}, "Promise.resolve behavior");

</script>

0 comments on commit fe19ae9

Please sign in to comment.