mirror of
https://github.com/servo/servo.git
synced 2025-06-23 16:44:33 +01:00
132 lines
4 KiB
HTML
132 lines
4 KiB
HTML
<!DOCTYPE HTML>
|
|
<html>
|
|
<head>
|
|
<title>Promise Tests</title>
|
|
</head>
|
|
<body>
|
|
<h1>Promise Tests</h1>
|
|
<p>This test demonstrates the use of <tt>promise_test</tt>. 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");
|
|
|
|
promise_test(
|
|
function() {
|
|
return Promise.resolve("x")
|
|
.then(
|
|
function(value) {
|
|
assert_equals(value,
|
|
"x",
|
|
"Fulfilled promise should pass result to " +
|
|
"fulfill reaction.");
|
|
});
|
|
},
|
|
"Promise fulfillment with result");
|
|
|
|
promise_test(
|
|
function(t) {
|
|
return Promise.reject(new Error("fail"))
|
|
.then(t.unreached_func("Promise should reject"),
|
|
function(reason) {
|
|
assert_true(
|
|
reason instanceof Error,
|
|
"Rejected promise should pass reason to fulfill reaction.");
|
|
assert_equals(
|
|
reason.message,
|
|
"fail",
|
|
"Rejected promise should pass reason to reject reaction.");
|
|
});
|
|
},
|
|
"Promise rejection with result");
|
|
|
|
promise_test(
|
|
function() {
|
|
var resolutions = [];
|
|
return Promise.resolve("a")
|
|
.then(
|
|
function(value) {
|
|
resolutions.push(value);
|
|
return "b";
|
|
})
|
|
.then(
|
|
function(value) {
|
|
resolutions.push(value);
|
|
return "c";
|
|
})
|
|
.then(
|
|
function(value) {
|
|
resolutions.push(value);
|
|
assert_array_equals(resolutions, ["a", "b", "c"]);
|
|
});
|
|
},
|
|
"Chain of promise resolutions");
|
|
|
|
promise_test(
|
|
function(t) {
|
|
var resolutions = [];
|
|
return Promise.resolve("x")
|
|
.then(
|
|
function(value) {
|
|
assert_true(false, "Expected failure.");
|
|
})
|
|
.then(t.unreached_func("UNEXPECTED FAILURE: Promise should not have resolved."));
|
|
},
|
|
"Assertion failure in a fulfill reaction (should FAIL with an expected failure)");
|
|
|
|
promise_test(
|
|
function(t) {
|
|
return new Promise(
|
|
function(resolve, reject) {
|
|
reject(123);
|
|
})
|
|
.then(t.unreached_func("UNEXPECTED FAILURE: Fulfill reaction reached after rejection."),
|
|
t.unreached_func("Expected failure."));
|
|
},
|
|
"unreached_func as reactor (should FAIL with an expected failure)");
|
|
|
|
promise_test(
|
|
function() {
|
|
return true;
|
|
},
|
|
"promise_test with function that doesn't return a Promise");
|
|
|
|
promise_test(function(){},
|
|
"promise_test with function that doesn't return anything");
|
|
|
|
promise_test(
|
|
function() {
|
|
return Promise.reject("Expected rejection");
|
|
},
|
|
"promise_test with unhandled rejection (should FAIL)");
|
|
|
|
promise_test(
|
|
function() {
|
|
return Promise.resolve(10)
|
|
.then(
|
|
function(value) {
|
|
throw Error("Expected exception.");
|
|
});
|
|
},
|
|
"promise_test with unhandled exception in fulfill reaction (should FAIL)");
|
|
|
|
promise_test(
|
|
function(t) {
|
|
return Promise.reject(10)
|
|
.then(
|
|
t.unreached_func("UNEXPECTED FAILURE: Fulfill reaction reached after rejection."),
|
|
function(value) {
|
|
throw Error("Expected exception.");
|
|
});
|
|
},
|
|
"promise_test with unhandled exception in reject reaction (should FAIL)");
|
|
</script>
|