forked from web-platform-tests/wpt
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request web-platform-tests#71 from inexorabletash/inexorab…
…letash/promise step_func propagates result, add unreached_func, Promise examples
- Loading branch information
Showing
2 changed files
with
132 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,119 @@ | ||
<!DOCTYPE HTML> | ||
<html> | ||
<head> | ||
<title>Async Tests and Promises</title> | ||
</head> | ||
<body> | ||
<h1>Async Tests and Promises</h1> | ||
<p>This test assumes ECMAScript 6 Promise support. Some failures are expected.</p> | ||
<div id="log"></div> | ||
<script src="testharness.js"></script> | ||
<script src="testharnessreport.js"></script> | ||
<script> | ||
|
||
test(function() { | ||
var p = new Promise(function(resolve, reject) {}); | ||
assert_true('then' in p); | ||
assert_equals(typeof Promise.resolve, 'function'); | ||
assert_equals(typeof Promise.reject, 'function'); | ||
}, "Promises are supported in your browser"); | ||
|
||
(function() { | ||
var t = async_test("Promise resolution"); | ||
t.step(function() { | ||
Promise.resolve('x').then( | ||
t.step_func(function(value) { | ||
assert_equals(value, 'x'); | ||
t.done(); | ||
}), | ||
t.unreached_func('Promise should not reject') | ||
); | ||
}); | ||
}()); | ||
|
||
(function() { | ||
var t = async_test("Promise rejection"); | ||
t.step(function() { | ||
Promise.reject(Error('fail')).then( | ||
t.unreached_func('Promise should reject'), | ||
t.step_func(function(reason) { | ||
assert_true(reason instanceof Error); | ||
assert_equals(reason.message, 'fail'); | ||
t.done(); | ||
}) | ||
); | ||
}); | ||
}()); | ||
|
||
(function() { | ||
var t = async_test("Promises resolution chaining"); | ||
t.step(function() { | ||
var resolutions = []; | ||
Promise.resolve('a').then( | ||
t.step_func(function(value) { | ||
resolutions.push(value); | ||
return 'b'; | ||
}) | ||
).then( | ||
t.step_func(function(value) { | ||
resolutions.push(value); | ||
return 'c'; | ||
}) | ||
).then( | ||
t.step_func(function(value) { | ||
resolutions.push(value); | ||
|
||
assert_array_equals(resolutions, ['a', 'b', 'c']); | ||
t.done(); | ||
}) | ||
).catch( | ||
t.unreached_func('promise should not have rejected') | ||
); | ||
}); | ||
}()); | ||
|
||
(function() { | ||
var t = async_test("Use of step_func with Promises"); | ||
t.step(function() { | ||
var resolutions = []; | ||
Promise.resolve('x').then( | ||
t.step_func_done(), | ||
t.unreached_func('Promise should not have rejected') | ||
); | ||
}); | ||
}()); | ||
|
||
(function() { | ||
var t = async_test("Promises and test assertion failures (should fail)"); | ||
t.step(function() { | ||
var resolutions = []; | ||
Promise.resolve('x').then( | ||
t.step_func(function(value) { | ||
assert_true(false, 'This failure is expected'); | ||
}) | ||
).then( | ||
t.unreached_func('Promise should not have resolved') | ||
).catch( | ||
t.unreached_func('Promise should not have rejected') | ||
); | ||
}); | ||
}()); | ||
|
||
(function() { | ||
var t = async_test("Use of unreached_func with Promises (should fail)"); | ||
t.step(function() { | ||
var resolutions = []; | ||
var r; | ||
var p = new Promise(function(resolve, reject) { | ||
// Reject instead of resolve, to demonstrate failure. | ||
reject(123); | ||
}); | ||
p.then( | ||
function(value) { | ||
assert_equals(value, 123, 'This should not actually happen'); | ||
}, | ||
t.unreached_func('This failure is expected') | ||
); | ||
}); | ||
}()); | ||
</script> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters